耿進(jìn)龍 趙希發(fā) 李 鵬
安全計(jì)算機(jī)平臺(tái)是軌道交通中信號(hào)控制系統(tǒng)的通用安全平臺(tái),廣泛應(yīng)用于鐵路和地鐵的軌旁IO設(shè)備系統(tǒng)和車載IO 設(shè)備系統(tǒng),是軌道交通信號(hào)系統(tǒng)的重要組成部分。隨著我國(guó)鐵路列車運(yùn)行速度越來越快,維護(hù)周期要求越來越短,對(duì)用于傳輸IO控制命令以及檢測(cè)維護(hù)信息的系統(tǒng)總線,在安全性、實(shí)時(shí)性以及可靠性方面提出了更高的要求。
CAN 總線具有突出的可靠性、實(shí)時(shí)性和靈活性,在工業(yè)自動(dòng)化、汽車、船舶等領(lǐng)域得到廣泛應(yīng)用?;贑AN 應(yīng)用層的CANopen 協(xié)議具有實(shí)時(shí)高效、組網(wǎng)靈活等特點(diǎn),通過CANopen 協(xié)議傳輸?shù)臄?shù)據(jù)可以根據(jù)其不同的緊急程度要求,設(shè)置為不同優(yōu)先級(jí)的CANopen 通信對(duì)象。底層CAN 總線采用非破壞性仲裁機(jī)制,既可以保證高優(yōu)先級(jí)的CANopen 通信對(duì)象優(yōu)先傳輸,又可以保證低優(yōu)先級(jí)的CANopen 通信對(duì)象不會(huì)丟失。
基于CANopen協(xié)議的安全計(jì)算機(jī)平臺(tái),采用雙網(wǎng)冗余的CAN 總線連接系統(tǒng)內(nèi)各個(gè)模塊。同時(shí),對(duì)實(shí)時(shí)性要求最高的IO 控制命令采用PDO 進(jìn)行傳輸,數(shù)據(jù)量比較大的監(jiān)測(cè)維護(hù)信息采用SDO 進(jìn)行傳輸,并使用NMT 報(bào)文對(duì)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)進(jìn)行同步控制。通過實(shí)驗(yàn)室測(cè)試試驗(yàn),驗(yàn)證了CANopen 協(xié)議作為安全計(jì)算機(jī)平臺(tái)總線上層通信協(xié)議的可行性。
在軌道交通信號(hào)系統(tǒng)中,典型的故障-安全系統(tǒng)有1oolD、1oo2D、2oo2D、2oo3D、2×2oo2D 等幾種架構(gòu),不同的架構(gòu)具有不同的可靠性和安全性。本文描述的安全計(jì)算機(jī)平臺(tái)采用2×2oo2D 作為安全平臺(tái)的核心架構(gòu),其基本功能結(jié)構(gòu)、接口及邊界如圖1 所示。安全計(jì)算機(jī)平臺(tái)主要由邏輯處理單元和IO 執(zhí)行單元2 部分組成,兩者之間通過冗余的CAN總線進(jìn)行數(shù)據(jù)交互,每個(gè)邏輯處理模塊和IO 執(zhí)行模塊都采用2oo2設(shè)計(jì),滿足EN 50128的SIL4級(jí)要求。
圖1 安全計(jì)算機(jī)平臺(tái)系統(tǒng)架構(gòu)
在安全計(jì)算機(jī)平臺(tái)中,邏輯處理單元主要負(fù)責(zé)接收外部安全設(shè)備的數(shù)據(jù),并進(jìn)行安全處理,生成IO 驅(qū)動(dòng)命令并發(fā)送給IO 執(zhí)行單元;同時(shí),對(duì)IO 執(zhí)行單元采集的數(shù)據(jù)進(jìn)行安全處理,將處理后的數(shù)據(jù)發(fā)送給外部安全設(shè)備。IO 執(zhí)行單元分為IO 采集模塊和IO 驅(qū)動(dòng)模塊,IO 采集模塊主要負(fù)責(zé)采集IO 控制設(shè)備的數(shù)據(jù),并進(jìn)行安全處理,處理后的數(shù)據(jù)通過CAN 總線發(fā)送給邏輯處理單元;IO 驅(qū)動(dòng)模塊主要負(fù)責(zé)通過CAN 總線接收邏輯處理單元的數(shù)據(jù),并進(jìn)行安全處理,利用處理后的數(shù)據(jù)控制IO 設(shè)備。
為了提高安全計(jì)算機(jī)平臺(tái)的通用性,系統(tǒng)中IO 執(zhí)行單元的數(shù)量可配置。應(yīng)用可以根據(jù)現(xiàn)場(chǎng)IO控制設(shè)備的數(shù)量靈活地調(diào)整IO 執(zhí)行單元的數(shù)量,最多支持配置42 個(gè)IO 執(zhí)行單元。
CANopen 協(xié)議是CAN 總線的上層應(yīng)用協(xié)議,每個(gè)CANopen 設(shè)備由3 部分組成,分別是通信接口、對(duì)象字典和應(yīng)用層,其模型如圖2 所示。通信接口連接到CAN 總線,根據(jù)CANopen 協(xié)議的要求在總線上收發(fā)CAN 報(bào)文;對(duì)象字典是通信接口和應(yīng)用層之間的接口,對(duì)象字典中的對(duì)象由上層應(yīng)用進(jìn)行定義;應(yīng)用層與相關(guān)的IO 設(shè)備相連,控制IO設(shè)備的驅(qū)采操作。
圖2 CANopen 設(shè)備模型
對(duì)象字典是CANopen 協(xié)議中最核心的部分,每個(gè)設(shè)備都有一個(gè)獨(dú)立的對(duì)象字典,用于描述設(shè)備自身的各種數(shù)據(jù)對(duì)象和參數(shù),是一個(gè)有序的對(duì)象集合。對(duì)象字典的對(duì)象可以通過使用索引(Index)和子索引(Sub-index)進(jìn)行訪問。
通信接口定義了4 種類型的通信對(duì)象:網(wǎng)絡(luò)管理報(bào)文NMT、過程數(shù)據(jù)對(duì)象SDO、服務(wù)數(shù)據(jù)對(duì)象PDO,以及特殊功能對(duì)象。NMT 采用主從通信模式,主要用于統(tǒng)一管理網(wǎng)絡(luò)節(jié)點(diǎn)的狀態(tài);SDO 采用客戶端/服務(wù)器通信模式,主要用于傳輸實(shí)時(shí)性要求不高的數(shù)據(jù),如對(duì)象字典中節(jié)點(diǎn)配置參數(shù)等;PDO 采用生產(chǎn)者/消費(fèi)者通信模式,主要用于傳輸實(shí)時(shí)數(shù)據(jù),如控制數(shù)據(jù)等;特殊功能對(duì)象包括同步幀報(bào)文、時(shí)間戳報(bào)文以及緊急報(bào)文。同步幀報(bào)文用于實(shí)現(xiàn)整個(gè)網(wǎng)絡(luò)的同步傳輸;時(shí)間戳報(bào)文用于為網(wǎng)絡(luò)中所有設(shè)備提供統(tǒng)一的時(shí)間基準(zhǔn);緊急報(bào)文用于在站節(jié)點(diǎn)內(nèi)部發(fā)生錯(cuò)誤時(shí)通知網(wǎng)絡(luò)中其他設(shè)備。
CANopen 通信過程中使用COB-ID 區(qū)分不同設(shè)備發(fā)出的數(shù)據(jù)內(nèi)容,并且要求通信對(duì)象的接收者與報(bào)文的發(fā)送者必須具有相同的COB-ID。同時(shí),COB-ID 用于表示報(bào)文的優(yōu)先級(jí),COB-ID 值越小,報(bào)文優(yōu)先級(jí)越高。CANopen 中各個(gè)通信對(duì)象的COB-ID 分配見表1。
表1 CANopen 協(xié)議通信對(duì)象的COB-ID 分配
安全計(jì)算機(jī)平臺(tái)最大支持60 個(gè)CAN 通信節(jié)點(diǎn),它們共同構(gòu)成一個(gè)CAN 通信網(wǎng)絡(luò)。其中,邏輯處理單元的主系配置為整個(gè)網(wǎng)絡(luò)的主節(jié)點(diǎn),其他處理單元配置為從節(jié)點(diǎn)。主節(jié)點(diǎn)負(fù)責(zé)協(xié)調(diào)系統(tǒng)中各個(gè)分節(jié)點(diǎn)的動(dòng)作。網(wǎng)絡(luò)中所有的CAN 節(jié)點(diǎn)(邏輯處理單元或IO 執(zhí)行單元)都采用相同的硬件設(shè)計(jì),MCF54418 的CPU 外 連 一 個(gè)SN65HVD230D 的CAN 接口芯片,具有集成度高、不占用布板面積、體積小、功耗低等優(yōu)點(diǎn)。
CAN 控制器采用了NXP 公司生產(chǎn)的MCF54418芯片內(nèi)部集成的FlexCan 總線控制器,該控制器支持CAN2.0B 協(xié)議,支持基本型CAN 模式和增強(qiáng)型CAN 模式,具有滿足高性能CAN 通信協(xié)議所要求的全部必要特性。CAN 總線驅(qū)動(dòng)器SN65HVD230D是CAN 控制器和物理總線之間的接口,可以提供對(duì)總線的差動(dòng)發(fā)送和接收功能,而且CAN 控制器和CAN 總線驅(qū)動(dòng)器SN65HVD230D 之間直接相連,最大限度地減少了時(shí)延,提高了信號(hào)質(zhì)量。
3.2.1 CANopen 節(jié)點(diǎn)對(duì)象字典的創(chuàng)建
安全計(jì)算機(jī)平臺(tái)中每個(gè)CAN 節(jié)點(diǎn)都有一個(gè)獨(dú)立的對(duì)象字典,包含通信協(xié)議對(duì)象和廠家指定協(xié)議對(duì)象。通信協(xié)議對(duì)象(Index 0x1000~0x1AFF)除了定義CANopen 協(xié)議強(qiáng)制要求的設(shè)備類型、錯(cuò)誤寄存器和產(chǎn)品識(shí)別參數(shù)3 個(gè)對(duì)象外,還定義了每個(gè)節(jié)點(diǎn)的軟件版本、硬件版本、時(shí)間戳COB-ID、緊急報(bào)文COB-ID、同步報(bào)文COB-ID 等對(duì)象,如表2 所示。
表2 通信協(xié)議對(duì)象
廠家指定協(xié)議對(duì)象定義了本節(jié)點(diǎn)的設(shè)備啟動(dòng)次數(shù)、設(shè)備運(yùn)行時(shí)間、CPU 最大利用率、CPU 平均利用率、故障碼,以及PDO 的通信參數(shù)和映射參數(shù)等對(duì)象,如表3 所示。
表3 廠家指定協(xié)議對(duì)象
3.2.2 CANopen 網(wǎng)絡(luò)初始化流程
CAN 節(jié)點(diǎn)狀態(tài)分為初始化狀態(tài)、預(yù)操作狀態(tài)、操作狀態(tài)和停止?fàn)顟B(tài)。每個(gè)節(jié)點(diǎn)在上電和內(nèi)部初始化后自動(dòng)進(jìn)入預(yù)操作狀態(tài),并向CAN 總線發(fā)送啟動(dòng)(boot-up)報(bào)文,處于該狀態(tài)中的從節(jié)點(diǎn)可以進(jìn)行SDO 通信,但不允許進(jìn)行PDO 通信。主節(jié)點(diǎn)初始化完成后,通過NMT 報(bào)文通知各個(gè)從節(jié)點(diǎn)進(jìn)入操作狀態(tài)。在操作狀態(tài)下的節(jié)點(diǎn)既可以進(jìn)行SDO 通信,也可進(jìn)行PDO 通信。系統(tǒng)運(yùn)行過程中,若主節(jié)點(diǎn)檢測(cè)到某個(gè)從節(jié)點(diǎn)發(fā)生故障,則通過發(fā)送NMT 報(bào)文通知故障的從節(jié)點(diǎn)進(jìn)入停止?fàn)顟B(tài),停止?fàn)顟B(tài)下的節(jié)點(diǎn)既不允許進(jìn)行SDO 通信,也不允許進(jìn)行PDO 通信。
3.2.3 IO 控制命令傳輸
安全計(jì)算機(jī)平臺(tái)在正常運(yùn)行過程中,邏輯處理單元和IO 執(zhí)行單元之間需要進(jìn)行周期性的IO 控制命令數(shù)據(jù)交互。IO 控制命令具備數(shù)據(jù)量小,實(shí)時(shí)性和安全性要求高等特點(diǎn)。本文采用優(yōu)先級(jí)更高的PDO 對(duì)象進(jìn)行IO 控制命令的傳輸。PDO 通信有3 種觸發(fā)機(jī)制:事件觸發(fā)、遠(yuǎn)程請(qǐng)求幀和同步觸發(fā)。為了保證IO 執(zhí)行單元之間的操作同步,本文采用同步觸發(fā)機(jī)制。主節(jié)點(diǎn)周期性地向CAN 總線廣播同步報(bào)文(SYNC),節(jié)點(diǎn)在收到同步報(bào)文后發(fā)送PDO 報(bào)文。為了保證PDO 消息的時(shí)效性,所有的節(jié)點(diǎn)都必須在同步窗口內(nèi)發(fā)送PDO 報(bào)文,同步窗口外的報(bào)文屬于無效報(bào)文;同時(shí)為了保證數(shù)據(jù)傳輸?shù)耐暾裕踩?jì)算機(jī)平臺(tái)把PDO 報(bào)文的8 個(gè)字節(jié)數(shù)據(jù)區(qū)劃分為2 個(gè)4 字節(jié)的區(qū)段,前一個(gè)區(qū)段用于存放IO 控制命令,后一個(gè)區(qū)段用于存放IO 控制命令的安全校驗(yàn)碼,只有通過安全校驗(yàn)的IO 控制命令才可以被使用。
3.2.4 監(jiān)控維護(hù)數(shù)據(jù)傳輸
安全計(jì)算機(jī)平臺(tái)在正常運(yùn)行過程中,IO 執(zhí)行單元將實(shí)時(shí)地監(jiān)控IO 設(shè)備的工作狀態(tài),并把監(jiān)控信息記錄在本地的對(duì)象字典中,主節(jié)點(diǎn)定期通過SDO 對(duì)象獲取每個(gè)IO 執(zhí)行單元的監(jiān)控信息以及維護(hù)信息(如系統(tǒng)運(yùn)行時(shí)間、軟件版本號(hào)等),并發(fā)送給外部的維護(hù)臺(tái)。
SDO 傳輸分為快速傳輸、段傳輸和塊傳輸3種。為了加快傳輸速度,提高CAN 總線的利用率,在安全計(jì)算機(jī)平臺(tái)中,針對(duì)不同類型的監(jiān)控維護(hù)信息采用不同的傳輸方法。對(duì)于數(shù)據(jù)長(zhǎng)度小于等于4 個(gè)字節(jié)的監(jiān)控維護(hù)信息,采用快速傳輸?shù)姆绞竭M(jìn)行傳輸;對(duì)于大于4 個(gè)字節(jié)而小于0xA8 個(gè)字節(jié)的監(jiān)控維護(hù)信息,采用段傳輸?shù)姆绞竭M(jìn)行傳輸;對(duì)于更大數(shù)據(jù)量的監(jiān)控維護(hù)信息,則采用塊傳輸方式進(jìn)行傳輸。
為了驗(yàn)證CANopen協(xié)議在安全計(jì)算機(jī)平臺(tái)通信中的可用性,實(shí)驗(yàn)室搭建了最大配置的運(yùn)行環(huán)境進(jìn)行測(cè)試,包含2 個(gè)邏輯處理單元和42 個(gè)IO 執(zhí)行單元。其中,主邏輯處理單元作為CANopen 網(wǎng)絡(luò)的主節(jié)點(diǎn),每50ms 發(fā)送一次同步幀,用于同步PDO 傳輸;每1s 發(fā)送一次時(shí)間戳報(bào)文,為所有網(wǎng)絡(luò)節(jié)點(diǎn)提供統(tǒng)一的時(shí)間基準(zhǔn);IO 執(zhí)行單元每150ms 發(fā)送一次心跳報(bào)文,每500ms 發(fā)送一次檢測(cè)維護(hù)消息的SDO報(bào)文,報(bào)文大小為200 字節(jié)。系統(tǒng)持續(xù)運(yùn)行72h,實(shí)驗(yàn)過程中沒有出現(xiàn)延時(shí)、數(shù)據(jù)被破壞、丟包等錯(cuò)誤,CAN 總線的平均利用率為41.8%,最大利用率為64%,性能上完全能夠滿足系統(tǒng)要求的CAN 總線的平均利用率不超過70%的要求。
基于CANopen 協(xié)議的軌道交通安全計(jì)算機(jī)平臺(tái)已在我國(guó)多個(gè)鐵路車站中應(yīng)用,在正式運(yùn)行過程中沒有出現(xiàn)故障,這充分說明CANopen 協(xié)議可以應(yīng)用于軌道交通的信號(hào)系統(tǒng)中。同時(shí),采用CANopen 協(xié)議的安全計(jì)算機(jī)平臺(tái)不僅可以解決系統(tǒng)中各個(gè)模塊之間的通信互聯(lián)問題,提高整個(gè)系統(tǒng)通信的可靠性和實(shí)時(shí)性,還可以提高整個(gè)系統(tǒng)的兼容性,為系統(tǒng)的進(jìn)一步擴(kuò)展提供了更加便捷的方式。