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

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

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

圖2 通信層結構Fig.2 Communication layer structure
由于通信層的存在,冗余網絡對于應用層透明。應用程序無需關心具體的雙網控制,只需與通信層發生數據交互。具體來說是由通信層向雙網絡發送相同數據,同時從兩個網絡接收數據。應用層和通信層的接口在軟件設計時,可以考慮采用API或進程間通信等方式。
1)通信正常
應用程序發送數據至通信層,由通信層向A、B雙網發送相同數據,而接收節點可從兩個網絡收到數據,但只有先到達的數據會被采用,后到的數據將會被通信層丟棄。
如圖3所示,節點1發送的數據通過A、B雙網到達節點2后,節點2的通信層優先使用先到數據,后到數據被丟棄。

圖3 正常時通信流程Fig.3 Normal communication flow
2)單網故障
在此場景下,由于在雙網中同時有數據傳輸,因此當單個網絡有故障時,會自動從正常網絡獲取到信息,無需進行切換,也不會造成時延。如圖4所示。

圖4 單網故障時通信流程Fig.4 Communication flow in case of single network failure
同時,通信層對兩個網絡的狀態進行監視,如確定其中一個網絡發生故障,則自動舍棄該網絡,連續從另一網絡收發數據。
發送時,通信層將相同的數據向兩個網絡發送,進行雙網傳輸。
接收時,通信層對兩個網絡的報文都進行接收,成功后向應用層返回報文。接收的流程如圖5所示。

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

圖6 主從狀態遷移Fig.6 Main/standby state transition
圖6中,為了標記,熱備的兩臺設備分別被命名為1系和2系。正常運行時,兩系為一主一從,當故障發生時,進行切替。
雙機間通過心跳線和互發心跳報文的方式監測對方狀態。本文直接將雙機設備接入至冗余的雙網中,作為心跳線。主從切替如圖7所示。
圖7中,1系為雙機中的主系,2系為從系,雙方周期性互發心跳報文。當2系3個周期內未收到1系心跳時,判斷1系故障,并根據圖6中的遷移狀態升級為主系,接替1系的控制。

圖7 主從切替Fig.7 Main/standby system switching
除以上被動的心跳監視進行切替的方式,同時對本機狀態進行自監視,當發現自身異常時,及時通知對方進行狀態切替。
當1系與A、B雙網的連接斷開,會形成信息孤島,如圖8所示。此時由于1、2系都接收不到對方心跳,都會升級成為主系,因此當故障恢復時會造成雙主狀態,此種情況應避免。通過對本機的以太網狀態進行監視,當發現A、B雙網都為斷開時,程序自動停止,需通過人工介入的手動方式才可恢復,避免故障恢復后變為雙主狀態。

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

圖9 啟動流程Fig.9 Start-up flow chart
雙網控制和雙機熱備的冗余技術在信號系統中有著廣泛應用。本文所提出的通過軟件實現雙網和熱備的控制方法,已在國內城市軌道交通線路中上線應用,通過實際應用證明,可滿足系統的業務需求,并提升系統可用性和可靠性。