李鯤鵬,閻士奇
(中車青島四方車輛研究所有限公司,山東青島 266109)
列車控制及監(jiān)控系統(tǒng)(Train Control and Monitoring System,TCMS)連接著列車上的車載設(shè)備,作為列車的“大腦”,承擔(dān)著列車運(yùn)行狀態(tài)監(jiān)測、診斷、信息共享等工作[1]。顯示屏人機(jī)接口單元(Human-Machine Interface,HMI)作為列車網(wǎng)絡(luò)的關(guān)鍵組成設(shè)備,能夠直觀的顯示列車的運(yùn)行狀態(tài)信息以及發(fā)送操作人員的控制指令[2]。
隨著列車上控制、監(jiān)測設(shè)備的不斷增加,列車對(duì)大數(shù)據(jù)容量、高速度傳輸?shù)男枨笤絹碓酱螅瑢?duì)顯示屏的實(shí)時(shí)性、大數(shù)據(jù)性需求也越來越高[3]。本文結(jié)合實(shí)際項(xiàng)目,提出一種基于Modbus/TCP協(xié)議的列車網(wǎng)絡(luò)顯示屏以太網(wǎng)通信技術(shù)實(shí)現(xiàn)方案。對(duì)其實(shí)現(xiàn)方法、冗余性、可靠性進(jìn)行深入研究,并展望其應(yīng)用前景。
Modbus是美國Modicon公司(即現(xiàn)在的Schneider Electric公司)于1979年開發(fā)的一種通信協(xié)議,其目的是采用一根雙絞線實(shí)現(xiàn)多個(gè)設(shè)備之間的通信[4]。Modbus協(xié)議采用問答式的通信方式,具有簡單、通用性強(qiáng)、使用方便的優(yōu)點(diǎn),容易開發(fā)和實(shí)現(xiàn)[5]。Modbus/TCP可以被理解為以太網(wǎng)上的Modbus,Modbus/TCP采用TCP/IP標(biāo)準(zhǔn),把Modbus信息包打包壓縮。這樣Modbus/TCP設(shè)備就可以通過以太網(wǎng)和光纖網(wǎng)絡(luò)進(jìn)行連接和通信。Modbus/TCP還允許使用更多的地址、可以采用多主站架構(gòu)、傳送速率可以達(dá)到GB/s的水平。
Modbus/TCP通信采用客戶端/服務(wù)器模式進(jìn)行實(shí)時(shí)數(shù)據(jù)交換。在本設(shè)計(jì)中,將顯示屏作為服務(wù)端與客戶端進(jìn)行通信,如圖1所示。

圖1 顯示屏通信方式Fig.1 HMI communication mode
顯示屏通過請求/回應(yīng)的方式與客戶端進(jìn)行數(shù)據(jù)交換,可以接收客戶端發(fā)送的列車狀態(tài)信息予以顯示,還可以將操作人員的控制指令發(fā)送給客戶端,由客戶端進(jìn)一步處理。
由于Modbus/TCP通信的簡單性,顯示屏在硬件選型上無需特殊的通信板卡支持,只需要具有標(biāo)準(zhǔn)以太網(wǎng)通信功能的可編程設(shè)備即可[6]。本文選用的是一款帶有雙路網(wǎng)口的嵌入式Linux系統(tǒng)顯示屏。其主要硬件參數(shù)如表1所示。

表1 硬件參數(shù)Tab.1 Hardware parameter
Modbus/TCP數(shù)據(jù)幀包含報(bào)文頭、功能代碼和數(shù)據(jù)3部分,如圖2所示。

圖2 Modbus/TCP數(shù)據(jù)幀格式Fig.2 Modbus/TCP data frame format
根據(jù)Modbus/TCP的通信特性,需結(jié)合項(xiàng)目中顯示屏需要顯示的狀態(tài)信息和實(shí)現(xiàn)的控制功能,制定顯示屏和客戶端數(shù)據(jù)交互協(xié)議,包括功能碼、數(shù)據(jù)地址、數(shù)據(jù)類型、數(shù)據(jù)內(nèi)容等關(guān)鍵信息。
實(shí)際項(xiàng)目中部分顯示屏交互的協(xié)議如下。
1)顯示屏接收的部分?jǐn)?shù)據(jù)協(xié)議如表2所示。

表2 顯示屏接收數(shù)據(jù)通信協(xié)議(部分)Tab.2 HMI data receiving communication protocol (part)
2)顯示屏發(fā)送的部分?jǐn)?shù)據(jù)協(xié)議如表3所示。

表3 顯示屏發(fā)送數(shù)據(jù)通信協(xié)議(部分)Tab.3 HMI data sending communication protocol (part)
結(jié)合項(xiàng)目需求,本文在設(shè)計(jì)顯示屏軟件架構(gòu)時(shí)使用了多線程結(jié)構(gòu),如圖3所示,主要分為Modbus/TCP通信線程、界面線程。通信線程負(fù)責(zé)處理Modbus/TCP通信相關(guān)的功能;界面線程負(fù)責(zé)界面顯示、指令獲取等功能。兩個(gè)線程之間通過數(shù)據(jù)序列進(jìn)行信息交互。

圖3 顯示屏軟件架構(gòu)Fig.3 HMI software architecture
1)Modbus/TCP通信線程
負(fù)責(zé)以太網(wǎng)驅(qū)動(dòng)、數(shù)據(jù)封包、CRC校驗(yàn)等網(wǎng)絡(luò)通信工作,目的是接收客戶端發(fā)送的數(shù)據(jù),根據(jù)制定的協(xié)議進(jìn)行數(shù)據(jù)解析;對(duì)顯示屏界面的指令進(jìn)行處理,發(fā)送給客戶端,實(shí)現(xiàn)和客戶端的數(shù)據(jù)交互。
2)界面線程
負(fù)責(zé)界面的顯示及指令發(fā)送功能,從數(shù)據(jù)序列中讀取數(shù)據(jù)進(jìn)行顯示,如速度信息、設(shè)備在線狀態(tài)等;獲取指令并發(fā)送到數(shù)據(jù)序列中,如模擬報(bào)站開始信號(hào)、緊急廣播信號(hào)等。
3)數(shù)據(jù)序列
負(fù)責(zé)數(shù)據(jù)的存儲(chǔ),作為Modbus/TCP通信線程和界面線程的橋梁,對(duì)數(shù)據(jù)的內(nèi)容進(jìn)行判斷,當(dāng)讀取序列的數(shù)據(jù)有更新時(shí),發(fā)送信號(hào)通知界面線程進(jìn)行處理;當(dāng)發(fā)送序列的數(shù)據(jù)有更新時(shí),發(fā)送信號(hào)通知Modbus/TCP通信線程進(jìn)行處理。數(shù)據(jù)序列的操作需要有互斥鎖(Mutex)標(biāo)記,即同一時(shí)刻只能有一個(gè)線程訪問數(shù)據(jù)序列,保證數(shù)據(jù)安全性。
由于硬件采用的是嵌入式Linux系統(tǒng)顯示屏,本文的顯示屏編程基于Linux+QT方式開發(fā),使用C++語言編程。
具體實(shí)現(xiàn)如圖4所示。

圖4 Modbus/TCP通信線程軟件實(shí)現(xiàn)Fig.4 Software implementation of Modbus/TC communication thread
1)設(shè)置客戶端IP地址,并設(shè)置監(jiān)聽端口為502;
2)監(jiān)聽502端口,當(dāng)有客戶端連接時(shí)建立套接字;
3)套接字建立連接后,使用Modbus_receive和Modbus_reply來循環(huán)處理客戶端的請求并回應(yīng)。
4)在循環(huán)處理請求和回應(yīng)時(shí),當(dāng)客戶端請求寫數(shù)據(jù)時(shí),將寫入顯示屏的數(shù)據(jù)進(jìn)行解析,存入接收數(shù)據(jù)序列中,由界面線程處理使用;當(dāng)客戶端請求讀數(shù)據(jù)時(shí),將發(fā)送數(shù)據(jù)序列的內(nèi)容回應(yīng)給客戶端,實(shí)現(xiàn)顯示屏指令的發(fā)送功能。
以太網(wǎng)通信只需要將線纜連接兩個(gè)設(shè)備網(wǎng)口即可正常通信,對(duì)于列車設(shè)備來說布線簡單,但是冗余性會(huì)大大降低。如圖5所示,如果以太網(wǎng)接口松動(dòng)或者線纜斷開,通信會(huì)受到影響,在列車運(yùn)行時(shí)造成了極大的不可靠性。

圖5 單線纜通信Fig.5 Single cable communication
本設(shè)計(jì)為了保證列車運(yùn)行的穩(wěn)定性及可靠性,提出了一種顯示屏雙網(wǎng)口冗余的方案,目的是提高顯示屏通信的冗余性,對(duì)于客戶端和顯示屏直接通信的應(yīng)用場合,其實(shí)現(xiàn)方案如圖6所示。

圖6 顯示屏冗余通信架構(gòu)Fig.6 HMI redundant communications
1)通過LAN1和LAN2兩路獨(dú)立的以太網(wǎng)口連接,兩路LAN同時(shí)進(jìn)行Modbus數(shù)據(jù)交互。
2)對(duì)于顯示屏內(nèi)部的接收/發(fā)送數(shù)據(jù),分成數(shù)據(jù)區(qū)1、2兩個(gè)區(qū)域。程序?qū)崟r(shí)判斷兩個(gè)數(shù)據(jù)區(qū)域的有效性,當(dāng)兩個(gè)數(shù)據(jù)區(qū)數(shù)據(jù)同時(shí)有效時(shí),優(yōu)先使用數(shù)據(jù)區(qū)1,任何一路數(shù)據(jù)通信故障時(shí),自動(dòng)切換到另一路有效的數(shù)據(jù)區(qū)。并在顯示屏界面進(jìn)行提示。
通過顯示屏雙網(wǎng)口冗余的方案,可以在一個(gè)網(wǎng)口的連接出現(xiàn)問題時(shí)由冗余的網(wǎng)口進(jìn)行通信,很大程度上提高單個(gè)客戶端和單個(gè)顯示屏通信的可靠性。結(jié)合項(xiàng)目中在兩個(gè)司機(jī)室各裝有一個(gè)客戶端和顯示屏的實(shí)際需求,對(duì)圖6的冗余方案升級(jí),最終裝車的實(shí)際方案如圖7所示。

圖7 司機(jī)室冗余通信架構(gòu)Fig.7 Cab redundant communications
1)司機(jī)室1和司機(jī)室2的設(shè)備通過以太網(wǎng)交換機(jī)進(jìn)行連接,實(shí)現(xiàn)了客戶端1、2的LAN1、LAN2網(wǎng)口分別和顯示屏1、2的LAN1、LAN2口連接。圖7中進(jìn)行了簡化示意。
2)黑色線代表客戶端1的數(shù)據(jù)流,藍(lán)色線代表客戶端2的數(shù)據(jù)流。
3)顯示屏內(nèi)部開辟4個(gè)數(shù)據(jù)取存放客戶端數(shù)據(jù),數(shù)據(jù)區(qū)1存儲(chǔ)客戶端1LAN1的數(shù)據(jù);數(shù)據(jù)區(qū)2存儲(chǔ)客戶端1LAN2的數(shù)據(jù);數(shù)據(jù)區(qū)3存儲(chǔ)客戶端2LAN1的數(shù)據(jù);數(shù)據(jù)區(qū)4存儲(chǔ)客戶端2LAN2的數(shù)據(jù)。
4)通信正常時(shí)優(yōu)先使用數(shù)據(jù)區(qū)1(客戶端1LAN1)的數(shù)據(jù),當(dāng)數(shù)據(jù)區(qū)1故障時(shí),切換到數(shù)據(jù)區(qū)2(客戶端1LAN2)的數(shù)據(jù)。當(dāng)數(shù)據(jù)區(qū)1、2同時(shí)故障(即客戶端1故障)時(shí),此時(shí)客戶端2接管總線工作,顯示屏切換到數(shù)據(jù)區(qū)3(客戶端2LAN1)的數(shù)據(jù)。當(dāng)數(shù)據(jù)區(qū)1、2、3同時(shí)故障時(shí),切換到數(shù)據(jù)區(qū)4(客戶端2LAN2)的數(shù)據(jù)。
通過驗(yàn)證,本文提出的顯示屏設(shè)計(jì)方案能夠很好的實(shí)現(xiàn)項(xiàng)目中列車的顯示屏功能需求,通過WireShark以太網(wǎng)抓包工具測試實(shí)際運(yùn)行時(shí)Modbus通信的穩(wěn)定性,如圖8所示。通過試驗(yàn),通信穩(wěn)定,無數(shù)據(jù)丟失現(xiàn)象。并且本文提出的雙網(wǎng)口冗余方案通過了列車冗余試驗(yàn)驗(yàn)證,在模擬某個(gè)LAN口通信丟失時(shí),顯示屏能夠快速的根據(jù)冗余策略進(jìn)行切換,保證了列車運(yùn)行時(shí)的可靠性。

圖8 冗余通信數(shù)據(jù)記錄Fig.8 Redundant communication records
隨著工業(yè)以太網(wǎng)在列車網(wǎng)絡(luò)系統(tǒng)的快速發(fā)展,國際電工委員會(huì)先后制定了《軌道交通電子設(shè)備 列車通信網(wǎng)絡(luò)(TCN)第 2-5 部分:以太網(wǎng)列車骨干網(wǎng)》(IEC 61375-2-5:2014)、《軌道交通電子設(shè)備 列車通信網(wǎng)絡(luò)(TCN) 第 2-3 部分:TCN 通信規(guī)約》(IEC 61375-2-3:2015),分別定義了基于工業(yè)以太網(wǎng)的列車級(jí)和車輛級(jí)網(wǎng)絡(luò)標(biāo)準(zhǔn)[7]。以太網(wǎng)列車網(wǎng)絡(luò)在國內(nèi)應(yīng)用處于起步階段,目前產(chǎn)品多是以太網(wǎng)與傳統(tǒng)列車網(wǎng)絡(luò)通信并存,以太網(wǎng)絡(luò)主要負(fù)責(zé)維護(hù)功能[8]。由于網(wǎng)絡(luò)顯示屏負(fù)責(zé)與用戶進(jìn)行直接交互,其數(shù)據(jù)顯示、指令控制具有非常重要的作用。本文旨在提出一種基于以太網(wǎng)的列車網(wǎng)絡(luò)顯示屏通信實(shí)現(xiàn)方式,未來可以應(yīng)用于列車維護(hù)網(wǎng)絡(luò)、與乘客信息系統(tǒng)多網(wǎng)融合等方面。
本顯示屏設(shè)計(jì)方案在實(shí)際應(yīng)用時(shí),充分考慮列車以太網(wǎng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、交換機(jī)、客戶端等方面的因素影響,從整體系統(tǒng)的角度充分考慮整車網(wǎng)絡(luò)系統(tǒng)的冗余性及可靠性。