王 濤
(山東中車日立軌道通信信號(hào)有限公司,山東青島 266000)
軌道交通作為運(yùn)輸效率高、綠色環(huán)保的交通出行方式,對(duì)于緩解城市擁堵,方便出行以及拉動(dòng)地區(qū)經(jīng)濟(jì)增長(zhǎng)都有重要作用。近年來,國(guó)家也高度重視軌道交通領(lǐng)域的發(fā)展,先后發(fā)布一系列軌道交通發(fā)展規(guī)劃,均強(qiáng)調(diào)重點(diǎn)發(fā)展軌道交通裝備等先進(jìn)制造業(yè)。
信號(hào)系統(tǒng)的作用類似于行車指揮的大腦,制定全線運(yùn)營(yíng)計(jì)劃,監(jiān)控全線列車運(yùn)行,確保列車運(yùn)行安全。由于信號(hào)系統(tǒng)高可靠性、可用性等要求,因此在設(shè)計(jì)時(shí),會(huì)采用冗余、熱備等設(shè)計(jì)方法。如在CTC調(diào)度集中系統(tǒng),或地鐵CBTC系統(tǒng)的ATS子系統(tǒng)中的服務(wù)器設(shè)備通常采用熱備配置;信號(hào)系統(tǒng)的網(wǎng)絡(luò)通常采用冗余方式。
地鐵CBTC信號(hào)系統(tǒng)中,中心ATS子系統(tǒng)的典型結(jié)構(gòu)如圖1所示。ATS系統(tǒng)核心的服務(wù)器采用熱備結(jié)構(gòu),主機(jī)進(jìn)行輸入、運(yùn)算和輸出,從機(jī)同時(shí)工作,但不進(jìn)行輸出。網(wǎng)絡(luò)采用紅藍(lán)雙網(wǎng)的結(jié)構(gòu),雙網(wǎng)同時(shí)進(jìn)行工作和數(shù)據(jù)傳輸,由節(jié)點(diǎn)設(shè)備的通信層軟件來決定雙網(wǎng)數(shù)據(jù)的取舍。

圖1 中心ATS典型結(jié)構(gòu)Fig.1 Typical structure of central ATS
配置冗余交換機(jī),同時(shí)節(jié)點(diǎn)設(shè)備(工作站、服務(wù)器等)采用多網(wǎng)卡方式組成完全冗余的網(wǎng)絡(luò)。在該方式中,其中一個(gè)網(wǎng)絡(luò)的異常不會(huì)影響系統(tǒng)通信,仍可保證連續(xù)的數(shù)據(jù)通訊。
為滿足冗余要求,兩個(gè)網(wǎng)絡(luò)配置C類IP地址,并分配不同的IP地址段,如表1所示。

表1 IP地址分配Tab.1 IP address allocation
為滿足兩個(gè)網(wǎng)絡(luò)同時(shí)進(jìn)行數(shù)據(jù)收發(fā)需求,在網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)備(服務(wù)器、工作站、控制設(shè)備等)中通過軟件的方式進(jìn)行控制。同時(shí),考慮到軟件模塊化、通用性、可移植性等要求,通常采用在系統(tǒng)層和應(yīng)用層之間設(shè)置通信層(也被稱為中間層)的方式,由通信層完成雙網(wǎng)絡(luò)的控制邏輯。同時(shí),也可在通信層完成其他功能擴(kuò)充,如實(shí)現(xiàn)鐵路安全通信RSSP協(xié)議等。如圖2所示。

圖2 通信層結(jié)構(gòu)Fig.2 Communication layer structure
由于通信層的存在,冗余網(wǎng)絡(luò)對(duì)于應(yīng)用層透明。應(yīng)用程序無需關(guān)心具體的雙網(wǎng)控制,只需與通信層發(fā)生數(shù)據(jù)交互。具體來說是由通信層向雙網(wǎng)絡(luò)發(fā)送相同數(shù)據(jù),同時(shí)從兩個(gè)網(wǎng)絡(luò)接收數(shù)據(jù)。應(yīng)用層和通信層的接口在軟件設(shè)計(jì)時(shí),可以考慮采用API或進(jìn)程間通信等方式。
1)通信正常
應(yīng)用程序發(fā)送數(shù)據(jù)至通信層,由通信層向A、B雙網(wǎng)發(fā)送相同數(shù)據(jù),而接收節(jié)點(diǎn)可從兩個(gè)網(wǎng)絡(luò)收到數(shù)據(jù),但只有先到達(dá)的數(shù)據(jù)會(huì)被采用,后到的數(shù)據(jù)將會(huì)被通信層丟棄。
如圖3所示,節(jié)點(diǎn)1發(fā)送的數(shù)據(jù)通過A、B雙網(wǎng)到達(dá)節(jié)點(diǎn)2后,節(jié)點(diǎn)2的通信層優(yōu)先使用先到數(shù)據(jù),后到數(shù)據(jù)被丟棄。

圖3 正常時(shí)通信流程Fig.3 Normal communication flow
2)單網(wǎng)故障
在此場(chǎng)景下,由于在雙網(wǎng)中同時(shí)有數(shù)據(jù)傳輸,因此當(dāng)單個(gè)網(wǎng)絡(luò)有故障時(shí),會(huì)自動(dòng)從正常網(wǎng)絡(luò)獲取到信息,無需進(jìn)行切換,也不會(huì)造成時(shí)延。如圖4所示。

圖4 單網(wǎng)故障時(shí)通信流程Fig.4 Communication flow in case of single network failure
同時(shí),通信層對(duì)兩個(gè)網(wǎng)絡(luò)的狀態(tài)進(jìn)行監(jiān)視,如確定其中一個(gè)網(wǎng)絡(luò)發(fā)生故障,則自動(dòng)舍棄該網(wǎng)絡(luò),連續(xù)從另一網(wǎng)絡(luò)收發(fā)數(shù)據(jù)。
發(fā)送時(shí),通信層將相同的數(shù)據(jù)向兩個(gè)網(wǎng)絡(luò)發(fā)送,進(jìn)行雙網(wǎng)傳輸。
接收時(shí),通信層對(duì)兩個(gè)網(wǎng)絡(luò)的報(bào)文都進(jìn)行接收,成功后向應(yīng)用層返回報(bào)文。接收的流程如圖5所示。

圖5 通信層接收流程Fig.5 Communication layer receiving flow
可在軟件中通過綁定INADDR_ANY 地址,即0.0.0.0的IP地址的方式,對(duì)節(jié)點(diǎn)設(shè)備來自A、B雙網(wǎng)的數(shù)據(jù)同時(shí)進(jìn)行接收。
通過CRC等方式對(duì)報(bào)文正確性進(jìn)行校驗(yàn),此校驗(yàn)也可不在通信層實(shí)現(xiàn),由應(yīng)用層進(jìn)行校驗(yàn)。
通常序號(hào)范圍可以從0x0001-0xFFFF,在每次報(bào)文發(fā)送時(shí)進(jìn)行循環(huán)累加。正常情況下,接收到的序號(hào)應(yīng)為累加狀態(tài)。當(dāng)序號(hào)相同時(shí),說明接收的是雙網(wǎng)絡(luò)的冗余報(bào)文;當(dāng)接收的序號(hào)變小時(shí),報(bào)文傳輸可能存在問題,需根據(jù)不同情況來具體分析和應(yīng)對(duì)。
雙機(jī)熱備是在兩臺(tái)處理設(shè)備上運(yùn)行各自獨(dú)立的應(yīng)用,當(dāng)其中一臺(tái)設(shè)備故障時(shí),由另一臺(tái)設(shè)備進(jìn)行接管,提升整體的可用性。
如圖1中的ATS結(jié)構(gòu),對(duì)于數(shù)據(jù)庫服務(wù)器,通常采用配置商用熱備軟件的方式,來進(jìn)行管理和確保數(shù)據(jù)的完整性;但對(duì)于其他如應(yīng)用服務(wù)器、接口服務(wù)器等,為了更加靈活和方便的控制,通常由信號(hào)系統(tǒng)自行設(shè)計(jì)的熱備軟件來進(jìn)行控制。
雙機(jī)熱備系統(tǒng)中,其中一方為主系,另一方為從系。主系接收數(shù)據(jù),進(jìn)行運(yùn)算后對(duì)外輸出;從系接收數(shù)據(jù),獨(dú)立進(jìn)行運(yùn)算,但不對(duì)外輸出。當(dāng)主系出現(xiàn)故障時(shí),系統(tǒng)將自動(dòng)進(jìn)行主從系切換,主從系的狀態(tài)遷移如圖6所示。

圖6 主從狀態(tài)遷移Fig.6 Main/standby state transition
圖6中,為了標(biāo)記,熱備的兩臺(tái)設(shè)備分別被命名為1系和2系。正常運(yùn)行時(shí),兩系為一主一從,當(dāng)故障發(fā)生時(shí),進(jìn)行切替。
雙機(jī)間通過心跳線和互發(fā)心跳報(bào)文的方式監(jiān)測(cè)對(duì)方狀態(tài)。本文直接將雙機(jī)設(shè)備接入至冗余的雙網(wǎng)中,作為心跳線。主從切替如圖7所示。
圖7中,1系為雙機(jī)中的主系,2系為從系,雙方周期性互發(fā)心跳報(bào)文。當(dāng)2系3個(gè)周期內(nèi)未收到1系心跳時(shí),判斷1系故障,并根據(jù)圖6中的遷移狀態(tài)升級(jí)為主系,接替1系的控制。

圖7 主從切替Fig.7 Main/standby system switching
除以上被動(dòng)的心跳監(jiān)視進(jìn)行切替的方式,同時(shí)對(duì)本機(jī)狀態(tài)進(jìn)行自監(jiān)視,當(dāng)發(fā)現(xiàn)自身異常時(shí),及時(shí)通知對(duì)方進(jìn)行狀態(tài)切替。
當(dāng)1系與A、B雙網(wǎng)的連接斷開,會(huì)形成信息孤島,如圖8所示。此時(shí)由于1、2系都接收不到對(duì)方心跳,都會(huì)升級(jí)成為主系,因此當(dāng)故障恢復(fù)時(shí)會(huì)造成雙主狀態(tài),此種情況應(yīng)避免。通過對(duì)本機(jī)的以太網(wǎng)狀態(tài)進(jìn)行監(jiān)視,當(dāng)發(fā)現(xiàn)A、B雙網(wǎng)都為斷開時(shí),程序自動(dòng)停止,需通過人工介入的手動(dòng)方式才可恢復(fù),避免故障恢復(fù)后變?yōu)殡p主狀態(tài)。

圖8 1系形成信息孤島Fig.8 The system 1 forms an information island
主從雙方的心跳報(bào)文中包含本機(jī)的狀態(tài)信息(即本機(jī)是主系或從系)。啟動(dòng)時(shí),通過心跳報(bào)文的接收情況和狀態(tài)信息來對(duì)自身狀態(tài)進(jìn)行設(shè)定。
如圖9所示,本機(jī)啟動(dòng)時(shí),狀態(tài)初始為從系,并根據(jù)接收心跳報(bào)文的情況確定是否進(jìn)行狀態(tài)遷移:如對(duì)方離線,則直接切換為主系運(yùn)行;如對(duì)方在線,且以主系運(yùn)行,則本機(jī)作為從系運(yùn)行,無需切換;如對(duì)方在線,且以從系運(yùn)行,此時(shí)通過執(zhí)行預(yù)先的默認(rèn)配置來強(qiáng)制確定主從。如可默認(rèn)雙機(jī)中的1系為主系,2系為從系。

圖9 啟動(dòng)流程Fig.9 Start-up flow chart
雙網(wǎng)控制和雙機(jī)熱備的冗余技術(shù)在信號(hào)系統(tǒng)中有著廣泛應(yīng)用。本文所提出的通過軟件實(shí)現(xiàn)雙網(wǎng)和熱備的控制方法,已在國(guó)內(nèi)城市軌道交通線路中上線應(yīng)用,通過實(shí)際應(yīng)用證明,可滿足系統(tǒng)的業(yè)務(wù)需求,并提升系統(tǒng)可用性和可靠性。