馬 研
(中國鐵道科學(xué)研究院集團(tuán)有限公司標(biāo)準(zhǔn)計(jì)量研究所,北京 100081)
安全計(jì)算機(jī)平臺(tái)為應(yīng)用提供高可靠的運(yùn)行環(huán)境,是所有鐵路信號(hào)安全設(shè)備的基礎(chǔ),其核心技術(shù)包括安全運(yùn)算技術(shù)、實(shí)時(shí)故障檢測(cè)技術(shù)、安全操作系統(tǒng)技術(shù)、安全通信技術(shù)等,安全完整性等級(jí)達(dá)到SIL4級(jí)[1-4]。
二乘二取二架構(gòu)是目前安全計(jì)算機(jī)平臺(tái)的主流架構(gòu)之一[5-7]。安全平臺(tái)由雙系構(gòu)成,在正常情形下,其中一系為主系,另一系為備系,備系的工作狀態(tài)始終與主系保持一致。當(dāng)主系出現(xiàn)嚴(yán)重故障時(shí),安全平臺(tái)自動(dòng)完成切系操作,備系升級(jí)為主系,繼續(xù)執(zhí)行原主系的動(dòng)作,確保安全平臺(tái)整體功能不受影響。但在特殊場(chǎng)景下,安全平臺(tái)的兩系都將升級(jí)為主系,兩系的工作狀態(tài)有可能不一致,從而面臨安全風(fēng)險(xiǎn)[8]。因此,有必要研究主備切換板,以防護(hù)安全平臺(tái)的雙主風(fēng)險(xiǎn)。
主備切換板借鑒了安全平臺(tái)的設(shè)計(jì)理念,結(jié)構(gòu)如圖1 所示,同樣由雙系構(gòu)成,安全完整性等級(jí)也為SIL4 級(jí)。每一系包含CPU1、CPU2 和CPU3,其中CPU1 和CPU2 承擔(dān)安全功能,主要實(shí)現(xiàn)二取二處理、主備切換板與安全平臺(tái)之間數(shù)據(jù)的處理以及對(duì)繼電器的操作等;CPU3 主要實(shí)現(xiàn)CPU1、CPU2 與安全平臺(tái)之間以太網(wǎng)通信數(shù)據(jù)的轉(zhuǎn)發(fā),不承擔(dān)安全功能。與安全平臺(tái)不同,主備切換板的雙系硬件結(jié)構(gòu)完全一致,地位平等,無主系備系之分,雙系之間也不存在系間通信,而是各自分別與安全平臺(tái)進(jìn)行通信。

圖1 主備切換板結(jié)構(gòu)示意Fig.1 Schematic diagram for the structure of host and backup switching board
為保證在系間通道全部中斷的情況下只能有一個(gè)系為主系,避免出現(xiàn)雙主運(yùn)行,每個(gè)系設(shè)置一個(gè)“主備繼電器”(ZBJ),由各系通過PIO 輸出控制,如圖2 所示。ZBJ 采用符合EN 50205 標(biāo)準(zhǔn)的小型安全繼電器,1ZBJ 和2ZBJ 兩個(gè)繼電器通過前后節(jié)點(diǎn)互相串接實(shí)現(xiàn)互斥,任何情況下最多只能有一個(gè)繼電器吸起。
安全平臺(tái)雙系上電后,如果本系兩個(gè)CPU 的系間通信通道未出現(xiàn)同步中斷的情形,則優(yōu)先通過系間通信的方式獲取對(duì)系的工作狀態(tài),并結(jié)合本系的工作狀態(tài)判定本系應(yīng)為主系、備系或待機(jī)狀態(tài)。此時(shí),安全平臺(tái)僅有一系作為主系,并驅(qū)動(dòng)主備切換板對(duì)應(yīng)的繼電器吸起;另一系為非主系,對(duì)應(yīng)的繼電器則會(huì)落下。如果安全平臺(tái)本系兩個(gè)CPU 的系間通信通道同步中斷,雙系均會(huì)試圖使本系對(duì)應(yīng)的繼電器吸起。但兩個(gè)繼電器只有一個(gè)可以吸起,對(duì)應(yīng)的安全平臺(tái)該系可以升級(jí)為主系,另一系則不能升級(jí)為主系,因此可防護(hù)安全平臺(tái)潛在的雙主風(fēng)險(xiǎn)。

圖2 主備切換板繼電器示意圖Fig.2 Schematic diagram for relay ofhost and backup switching board
主備切換板的主要硬件模塊如下。
1)電源模塊:提供穩(wěn)定的5.0 V、3.3 V 和1.2 V 電源。
2)邏輯比較處理模塊:邏輯比較功能由CPU1和CPU2 實(shí)現(xiàn),其芯片經(jīng)過安全認(rèn)證,達(dá)到SIL3的安全等級(jí);通信數(shù)據(jù)轉(zhuǎn)發(fā)處理由CPU3 實(shí)現(xiàn)。CPU1、CPU2 之間的通信,以及它們和CPU3 間的通信通過UART 直連。
3)繼電器驅(qū)動(dòng)和采集模塊:安全繼電器為TE公司SR6A6K24 型,其驅(qū)動(dòng)模塊由CPU1 和CPU2通過“與”的邏輯關(guān)系控制,即當(dāng)CPU1 和CPU2均發(fā)出吸起指令時(shí),繼電器才能夠吸起。CPU1 和CPU2 通過采集通道可獨(dú)立地獲取本系和對(duì)系繼電器節(jié)點(diǎn)狀態(tài)。
4)對(duì)外通信模塊:主備切換板與安全平臺(tái)通信采用以太網(wǎng)。同時(shí)為了適應(yīng)更廣泛的平臺(tái)設(shè)備,還預(yù)留了CAN、RS-422 和RS-232 等多種對(duì)外通信接口。
5)狀態(tài)指示燈顯示模塊:共設(shè)有6 個(gè)LED 指示燈,分別表示主備切換板本系的供電是否正常、是否存在故障、與安全平臺(tái)通信是否正常以及對(duì)應(yīng)的安全平臺(tái)的本系工作狀態(tài)(主系、備系或離線)。
主備切換板軟件采用單線程方式,不存在任務(wù)間的輪轉(zhuǎn)、搶占等調(diào)度機(jī)制。通過對(duì)硬件定時(shí)中斷的響應(yīng)產(chǎn)生統(tǒng)一的時(shí)鐘,觸發(fā)軟件各項(xiàng)功能。
軟件的主要功能如下。
1)初始化
初始化各項(xiàng)配置數(shù)據(jù),驅(qū)動(dòng)繼電器落下,本系離線指示燈亮起。
2)接收平臺(tái)發(fā)送的驅(qū)動(dòng)數(shù)據(jù)
安全平臺(tái)每系統(tǒng)周期向主備切換板發(fā)送一次驅(qū)動(dòng)數(shù)據(jù),內(nèi)容包括本系的系別(I 系或者II 系)、工作狀態(tài)、系統(tǒng)周期值等。CPU1 和CPU2 接收經(jīng)過CPU3 轉(zhuǎn)發(fā)的驅(qū)動(dòng)數(shù)據(jù),并進(jìn)行雙CPU 二取二比較和安全通信協(xié)議的校驗(yàn),以確保數(shù)據(jù)安全。CPU1和CPU2 隨后對(duì)通過校驗(yàn)的數(shù)據(jù)進(jìn)行解析,以獲取平臺(tái)的控制參數(shù),識(shí)別本系的系別、工作狀態(tài)。
3)采集繼電器狀態(tài)
CPU1 和CPU2 定期采集本系和對(duì)系的繼電器狀態(tài),形成采集數(shù)據(jù)。
4)安全關(guān)鍵數(shù)據(jù)二取二比較
CPU1 和CPU2 定期將采集數(shù)據(jù)、接收的安全平臺(tái)驅(qū)動(dòng)數(shù)據(jù)發(fā)送給對(duì)方,進(jìn)行雙CPU 二取二比較,比較失敗時(shí)執(zhí)行故障安全處理。CPU1 和CPU2 還對(duì)系統(tǒng)運(yùn)行的狀態(tài)數(shù)據(jù)進(jìn)行雙CPU 同步,確保雙CPU 的時(shí)鐘、故障等級(jí)始終保持同步。
5)驅(qū)動(dòng)繼電器
CPU1 和CPU2 根據(jù)從驅(qū)動(dòng)數(shù)據(jù)中獲取的安全平臺(tái)工作狀態(tài),驅(qū)動(dòng)本系繼電器吸起或落下。如果CPU1 和CPU2 在規(guī)定時(shí)間內(nèi)未收到驅(qū)動(dòng)數(shù)據(jù),應(yīng)使本系繼電器落下。
6)發(fā)送采集數(shù)據(jù)
CPU1 和CPU2 將通過雙CPU 二取二比較的繼電器狀態(tài)按照安全通信協(xié)議打包,形成采集數(shù)據(jù)并發(fā)送給CPU3。CPU3 收到后,再轉(zhuǎn)發(fā)至安全平臺(tái)。由于主備切換板雙系CPU3 的以太網(wǎng)口IP 地址相同,主備切換板向安全平臺(tái)發(fā)送的采集數(shù)據(jù)應(yīng)當(dāng)包含系別,以便安全平臺(tái)識(shí)別數(shù)據(jù)來源。
7)自檢、故障處理和維護(hù)數(shù)據(jù)發(fā)送
軟件定期對(duì)系統(tǒng)進(jìn)行自檢,發(fā)現(xiàn)故障時(shí)完成故障安全處理。CPU1 和CPU2 定期將維護(hù)消息形成數(shù)據(jù)包發(fā)送至CPU3,并由CPU3 發(fā)送至安全平臺(tái)。CPU1 和CPU2 還能根據(jù)工作狀態(tài)控制面板LED指示燈。
EN50159 規(guī)定了傳輸系統(tǒng)需要防范的7 種風(fēng)險(xiǎn)。由于主備切換板CPU1 和CPU2 之間的通信,以及主備切換板與安全平臺(tái)之間的通信均在封閉的傳輸系統(tǒng)中進(jìn)行,因此無需考慮數(shù)據(jù)偽裝的風(fēng)險(xiǎn)。在設(shè)計(jì)安全通信協(xié)議時(shí),采用雙向序列號(hào)校驗(yàn)以防御數(shù)據(jù)重復(fù)、刪除、重排序和延遲的風(fēng)險(xiǎn),采用64位CRC 校驗(yàn)碼防御數(shù)據(jù)損壞的風(fēng)險(xiǎn),采用目的地址和源地址標(biāo)識(shí)以防御數(shù)據(jù)插入的風(fēng)險(xiǎn),如圖3 所示。當(dāng)雙向序列號(hào)、目的地址、源地址或者CRC 校驗(yàn)碼校驗(yàn)失敗時(shí),應(yīng)當(dāng)丟棄數(shù)據(jù)。

圖3 安全通信協(xié)議數(shù)據(jù)格式Fig.3 Data format for safety communication protocol
由于二取二比較數(shù)據(jù)的實(shí)時(shí)性要求比安全平臺(tái)驅(qū)動(dòng)數(shù)據(jù)更加嚴(yán)格,因此進(jìn)行雙向序列號(hào)校驗(yàn)時(shí)需采取不同策略。主備切換板與安全平臺(tái)的通信存在建立連接與斷開連接的過程。如果本次接收對(duì)方序列號(hào)與上次接收對(duì)方序列號(hào)差值,以及本方發(fā)送序列號(hào)與本次接收的本方發(fā)送序列號(hào)差值均在規(guī)定區(qū)間內(nèi),記為校驗(yàn)成功一次;否則,記為校驗(yàn)失敗一次。至少連續(xù)3 次校驗(yàn)成功時(shí),認(rèn)為連接已建立,序列號(hào)校驗(yàn)成功。若連續(xù)3 次失敗,則連接斷開,序列號(hào)校驗(yàn)失敗。
主備切換板CPU1 與CPU2 之間的二取二數(shù)據(jù)通信則不存在建立連接與斷開連接的過程。只要本次接收對(duì)方序列號(hào)與上次接收對(duì)方序列號(hào)差值,以及本方發(fā)送序列號(hào)與本次接收的本方發(fā)送序列號(hào)差值均在規(guī)定區(qū)間內(nèi),即認(rèn)為序列號(hào)校驗(yàn)成功;否則序列號(hào)校驗(yàn)失敗。
CPU1 和CPU2 向CPU3 發(fā)送采集數(shù)據(jù)時(shí),首先將采集數(shù)據(jù)按照安全通信協(xié)議組包,然后進(jìn)行奇偶拆包,即CPU1 只保留偶數(shù)字節(jié),CPU2 只保留奇數(shù)字節(jié)。CPU3 接收到CPU1 和CPU2 發(fā)送的采集數(shù)據(jù)后,進(jìn)行拼包處理,形成完整的一包數(shù)據(jù),再發(fā)送至安全平臺(tái)。
介紹一種基于安全繼電器的主備切換板。通過合理的硬件設(shè)計(jì),主備切換板兩個(gè)繼電器不得同時(shí)吸起,可防護(hù)安全平臺(tái)潛在的雙主風(fēng)險(xiǎn)。同時(shí)給出軟件設(shè)計(jì)和安全通信協(xié)議設(shè)計(jì)。