

摘 要:隨著工業以太網應用的日趨成熟和不斷推廣,地鐵門系統的通信網絡也逐漸從RS485、HDLC、MVB及CANopen等轉換為以太網,以太網通信以其帶寬大、速度快,將成為未來地鐵通信網絡的發展趨勢。本文探討了圍繞以太網通信的地鐵門系統軟件通信模塊設計。
關鍵詞:地鐵門系統;以太網通信;維護
一、 地鐵門系統通信網絡簡介
目前,地鐵門系統比較常見的MVB+CAN的主從通信方式逐步轉變為以太網+CAN的主從通信方式和純以太網通信方式。之前的軟件無操作系統,現在要運行在linux系統上。門系統軟件維護由之前主要用串口逐步轉變為串口+以太網口或純以太網口。以太網通信是大勢所趨,有必要對通信模塊的設計進行探討。目前的以太網協議以TRDP協議為主,分為過程數據PD(Process Data)和消息數據MD(Message Data),與CANopen協議以及MVB協議中的過程數據和消息數據類似。過程數據主要傳輸實時性要求較高的數據,周期性傳輸,數據長度固定;消息數據長度不固定,根據需要傳輸。門系統與車輛的TRDP協議中,使用過程數據,在自身維護時,使用消息數據。
二、 以太網通信模塊設計
(一)以太網通信模塊總體設計
通信模塊軟件采用多線程設計:(1)線程1為主線程負責TRDP報文收發;(2)線程2負責定時更新TRDP報文以及對接收到的報文進行解析響應;(3)線程3負責響應維護接口。難點主要有兩個方面:(1)以往采用MVB或CANopen通信時無操作系統,現在要移植TRDP協議棧并在linux系統上運行;(2)以往門系統軟件維護通過串口完成,現在要通過以太網口完成,要進行多線程的任務設計。
TRDP協議棧要進行正常通信,必須先完成一系列配置工作,包括配置TRDP協議分配內存空間,PD發送數據的周期、端口號以及目標IP地址等。要完成這一系列的配置,有兩種方法,第一,通過修改源代碼實現,第二,通過XML配置文件實現。后者對于項目移植較為方便,便于提高開發效率及開發質量,所以選擇XML配置文件實現TRDP協議棧的配置。
(二)面向車輛網絡的通信設計
將與車輛網絡之間的TRDP通信協議,存儲為XML配置文件,其信息包括通信com-id、通信數據集id、通信端口周期、通信默認超時時間、目標地址或組播地址以及數據集等。
軟件通過讀取存儲器中的XML配置文件,解析出通信參數,并根據預設在軟件中的外部編碼地址與IP地址的映射關系,計算出本設備的IP地址。軟件啟動后,會調用配置模塊,對TRDP協議棧進行配置,配置完成后即可進行PD和MD通信。配置過程如下圖1(a)所示。
(1)tlc_init()函數,對TRDP協議棧進行初始化,包含對線程、套接字、內存等子模塊的初始化工作。
(2)initMarshalling()函數,對TRDP輔助組件Marshall初始化工作。讀取XML文件的應用數據部分,并完成字節對齊工作。
(3)tlc_openSession()函數,為網絡接口創建TRDP會話,創建成功后會返回會話句柄。
(4)tlp_subscribe()函數,訂閱PD報文,為接收PD報文做準備,通過訂閱指定的ComId和IP地址。
(5)tlp_publish()函數,發布PD報文,為發布PD報文做準備,完成配置后,協議棧往指定的IP地址發布攜帶特定ComId的PD報文。
(6)tlm_addListener()函數,訂閱MD報文,用于監聽TRDP協議棧接收MD報文。
(7)vos_semaCreate()函數,創建信號量,用于線程間交換信息。
(8)vos_mutexCreate()函數,創建互斥量,保護共享資源的數據完整性。
(9)配置模塊完成所有配置工作后,配置完成標志finishTauInit置位。
進入主循環流程后,通過調用tlc_getInterval()函數獲取過程數據端口之間的最大延時,將返回值以timeval結構體類型變量tv返回,并與通信協議允許的最大延時做比較,避免數據異常產生的數據超范。調用select()函數并在tv時間內阻塞線程,直到阻塞時間到或監控到相應的文件描述符滿足條件。調用tlc_process()函數,該函數會通過調用trdp_pdSendQueued()函數和trdp_pdHandleTimeOuts()函數對過程數據的發送和接收超時的隊列進行響應處理。待發送的TRDP數據通過其他線程調用tlp_put()函數更新到相應的發送隊列中,并在tlc_process()函數中發送出去。如下圖1(b)所示。
(三)面向門系統維護軟件的通信設計
門系統維護軟件發起的請求包括門狀態顯示、參數配置、故障下載、故障清除及軟件下載等。這部分功能用私有接口協議。由于門系統維護軟件發起的請求是非周期性的請求,請求類型也不確定,這主要取決于使用者何時操作了維護軟件以及操作了維護軟件上哪一個按鈕,因此維護軟件接口采用TRDP的消息數據協議。
當以太網應用軟件接收到維護軟件的消息數據后,激活MD回調函數,回調函數會判斷消息類型,并根據消息類型進行相應的處理,同時調用VOS模塊中的信號量函數vos_semaGive(),激活被掛起的維護接口響應線程。當維護接口響應線程接收到回調函數的信號量重新恢復運行;調用vos_mutexLock()函數對共享資源上互斥鎖,處理結束后解除對共享資源的互斥鎖,釋放共享資源。軟件流程圖如圖1(b)所示。
三、 實驗驗證
在實驗室將安裝有車輛網絡模擬軟件的筆記本電腦與門系統控制器用以太網線連接起來,將門系統控制器接上外部地址編碼線后,接通110V直流電源,同時啟動車輛網絡模擬軟件。通過安裝在筆記本電腦上的wireshark軟件,抓取以太網數據包如下圖所示。IP地址為10.0.1.18的網絡設備發送的TRDP PD數據的組播地址為239.255.0.1,IP地址為 10.0.1.60 的門系統發送的TRDP PD數據的組播地址為 239.255.1.60。二者之間可以建立有效的TRDP通信。
四、 結語
本文實現了基于以太網通信的軟件通信模塊設計并用實驗進行了驗證。隨著以太網應用的普及推廣,門系統的一些軟件維護工作會逐步地全部轉移到以太網接口上實現,并借助5G網絡或車地網絡,更輕松地開展維護工作。
作者簡介:
姚茂軍,南京康尼電子科技有限公司。