文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.181196
中文引用格式: 周浩尚,高照玲. VxWorks下TRDP協議棧移植[J].電子技術應用,2018,44(10):56-59.
英文引用格式: Zhou Haoshang,Gao Zhaoling. TRDP protocol stack transplantation on VxWorks[J]. Application of Electronic Technique,2018,44(10):56-59.
0 引言
本文簡要介紹TRDP協議棧移植目標系統及其所處位置、工作硬件環境,分析并解決移植之后遇到的問題,指出目前系統后門問題。
1 TRDP協議棧所在軟硬件環境
VxWorks操作系統是美國風河(Wind River)公司在1983年開發的一款強實時嵌入式操作系統,因具有良好的可靠性、高性能的內核、卓越的實時性以及友好的用戶開發環境等使其在嵌入式實時操作系統中獨領風騷。目前VxWorks廣泛應用于高精尖技術及對實時性要求極高的領域中。
以太網技術已經被廣泛應用在列車通信網絡和車載終端設備,主要是滿足大數據量傳輸的系統,如車載廣播系統、視頻系統、下載固件程序等,可以減少系統更新時間,提高工作效率。但由于以太網本身的鏈路層、協議棧的復雜性,其可靠性、網絡失效影響及Robust等都還在驗證中。國外一些大的軌道設備供貨商都已經研制出了相關以太網產品,如龐巴迪研制的完全基于以太網控制的列車已經交付到德國與荷蘭開始正式運行;EKE也已經形成了基于EKE-Trainnet IP/Ethernet的完整解決方案;MOXA、UniControls等公司已經研發出符合IEC新標準的ETBN交換機,正在進行調試及一致性測試;株洲機車研究所也已經推出基于ECN與ETB的相關實驗室產品,2014年其新一代列車網絡控制系統(DTECS-2)產品代表中國在業界首次亮相,并成功通過國際專家組測試考核。
國際標準化組織(IEC)推出了基于以太網的列車通信網絡標準,包括列車骨干以太網(Ethernet Train Backbone,ETB,由IEC61375-2-5定義)和編組以太網(Ethernet Consist Network,ECN,由IEC61375-3-4定義)。ETB界定了不同列車編組之間的互連接和互操作規范,而ECN界定了在每個編組內各個終端設備構成的以太網的通信規范。在2015年7月出臺了機車車輛使用的工業以太網標準IEC61375-2-3,Edition1.0,其為ECN與ETB的4~7層都將使用專為鐵路用途開發的自主協議列車實時數據協議(Train Real-time Data Protocol,TRDP),并通過行業團體TCNOpen以開源的形式公開,可在對應網站https://sourceforge.net/projects/tcnopen/下載其源碼,截止到目前,其最新版本為1717。
TRDP協議棧在以太網中所處位置[1]如圖1所示。

TRDP協議棧在應用系統中位置如圖2所示。

列車中央控制單元(Central Control Unit,CCU)是列車網絡控制系統的一個核心部件,負責整個車輛的網絡管理和車輛運行控制功能。其硬件部分采用低功耗嵌入式PC/104結構的工業計算機104-1645CLDN-(24B)板卡,集成了AMD LX800CPU、256 MB DDR、一個PC/104擴展接口、一個10/100 Mb/s自適應網口、一個IDE接口、兩個串口、USB2.0接口等[2]。
其軟件部分主要包括底層系統軟件和應用層軟件,前者是后者的操作系統平臺,在本設計中采用基于x86硬件平臺VxWorks操作系統,進行軟件IO映射管理、內存管理、任務調度,通過運行相關任務的方式完成和上位機的通信、MVB數據的收發、PLC控制任務、在線監視、運行數據記錄、故障記錄、列車級速度控制、牽引制動控制等。
由于TRDP源代碼開發環境為Wind River Workbench 3.0,對應VxWorks版本為6.6,代碼測試硬件為PPC603,因此,不只是開發環境版本高于項目所使用的開發環境,測試硬件架構也不同,所以當需要改變運行環境后就必須考慮TRDP協議棧移植及其帶來的新問題。
2 TRDP組播TTL問題
把TRDP協議棧移植到VxWorks 6.5下,編譯無誤通過。下載到頭車CCU中運行,發現尾車CCU收不到對應數據。經研究代碼和反復測試及使用以太網工具Wireshark抓包分析發現組播數據報文中TTL(Time To Live)值為1,所以影響數據包通過ETBN(Ethernet Train Backbone Node)到尾車CCU中。
選中setsockopt后按F1查看官方幫助文檔[3],其中關于TTL如圖3所示。

按照說明重新設置TTL=64:

setsockopt返回錯誤代碼0x16,即非法參數。此時數據包雖然可以發出,但其TTL值仍為默認值,即TTL=1,不符合期望以太網包跨2個以上交換機通信的要求。說明由于VxWorks內核問題,設置TTL時不能安裝默認設置方式進行設置。
繼續測試發現setsockopt對單播設置時可以通過sizeof(int)傳入第4個參數,而組播時只能用sizeof(char)或直接寫入1來傳入第4個參數。此時,抓包顯示TTL=64,為期望值,而setsockopt返回值亦正確。
總之,當需要跨多個交換機進行組播數據,需要設置其TTL時,VxWorks 6.5系統底層函數實現有bug,和單播設置TTL時不一樣,值得開發者注意。
3 以太網組播數據停止發送問題
為了保證系統長時間運行穩定可靠,要其連續數百小時不間斷工作,從而滿足列車長遠距離運輸的需要。但是在測試過程中出現了CCU運行一段時間(長短不固定)后以太網組播數據停止發送的問題,此時可正常接收數據。
經研究代碼和在代碼中增加調試輸出語句,發現TRDP協議棧在時間比較上采用宏定義方式,例如:

該種方式運行的結果是某個時刻后比較結果與實際計算結果相反,導致發送條件不能滿足,而且比較失敗后會一直都保持這種錯誤的比較結果,即使被比較的參數已經發生變化還是返回錯誤的比較結果,從而導致某時刻之后數據停止發送的問題。因此可以斷定該版本的VxWorks系統已經將這個比較宏定義函數修改成錯誤的比較方式。
注釋掉這些宏定義比較函數,并新設計時間比較函數:



在讀取本地時間時采取獲取系統啟動后tick個數來作為基準并進行時間暫存,即:

即使出現當前tick小于暫存tick時重置tick=0,從而可以保證在出問題時在兩個tick之后會自動恢復,同時重新初始化TRDP協議棧。
經過修改并進行多臺設備長時間運行測試,該方式完全可以滿足實際系統需要。到目前為止,運行該系統的CCU設備裝車幾十臺(輛),沒有再發生一起不發送過程數據的問題。
4 FTP賬戶問題
在交叉編譯環境下,設置目標機為FTP服務器,使用電腦FTP工具登錄,并傳輸文件到目標機進行軟件開發測試時會非常方便。VxWorks也提供該項功能,設置也比較簡單:在工程中雙擊Kernel Configuration即可打開組建配置界面,在Network Components--Network Applications--FTP Components中即可找到FTP組件,添加FTP Server后,對其進行相應設置,保存重新編譯后即可使用了,見圖4。

若想限制FTP登錄人員,可以設置賬號密碼,設置方式為在Network Components下,Network Authentication Components組件下,IPCOM authentication configurations下有Auth configuration #1~#6,最多可以設置6個賬號密碼,見圖5。每當需要登錄FTP時,可選擇任意一個賬號登錄。當不設置任何賬號密碼時默認為匿名登錄,只可查看及下載數據,不可進行上傳、修改、刪除等操作。

但是在實際中,只要添加FTP組件后就會有一個管理員賬戶,其用戶名和密碼并不復雜,況且該賬號密碼并不會在組件配置界面顯示。只要知道目標機IP(此并非難事),使用該賬號密碼均可通過FTP登錄目標機,并可進行任何操作,危險系數較大。經過多次測試,該賬號密碼廣泛存在于VxWorks 6.5版本中。
5 結論
本文首先闡述了TRDP協議棧所處的軟硬件系統環境,解決了其從VxWorks高版本、Power PC平臺移植到VxWorks低版本、X86平臺下遇到的問題;其次針對以太網組播數據有時發送失敗原因進行了分析與解決;最后指出并測試出VxWorks 6.5系統下的FTP組件確實存在后門問題。該協議棧已經在動力集中動車組中應用,經過歷時兩年的考驗,在北京東郊鐵科院環鐵試驗場的環線測試及重慶北-趕水東線路試驗,到蘭州局20萬公里運用考核,該方案穩定可靠。以上均是基于作者在課題研究中遇到的問題并在解決問題后的經驗總結,并提供一些解決問題的思路,希望對讀者有所幫助。
參考文獻
[1] IEC61375-2-3 Electronic railway equipment-Train communication network(TCN)-Part 2-3:TCN communication profile(IEC 61375-2-3 Edition 1.0)[S].2015.
[2] 任寶兵.城軌車輛中央控制單元設計[D].大連:大連理工大學,2014.
[3] VxWorks OS Libraries API Reference 5.5(Edition 2)[S].2003.
作者信息:
周浩尚1,2,高照玲3
(1.中車大連電力牽引研發中心有限公司,遼寧 大連116052;
2.動車組和機車牽引與控制國家重點實驗室,遼寧 大連116052;3.大連東軟信息學院 電子工程系,遼寧 大連116023)
