羋小龍 王亞波 楊宗元
(1.海軍裝備部 北京 100076)(2.武漢第二船舶設(shè)計研究所 武漢 430205)
信息技術(shù)和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展對艦船導(dǎo)航系統(tǒng)信息傳輸提供了多種通訊傳輸方式。目前,艦船上已有的導(dǎo)航系統(tǒng)大多采用RS422串口、以太網(wǎng)構(gòu)建系統(tǒng)網(wǎng)絡(luò)[1~5]。串口擴展性差,以太網(wǎng)在傳輸帶寬及節(jié)點數(shù)上雖有較大的提升,但傳輸延時具有不可預(yù)見性。艦船導(dǎo)航系統(tǒng)信息主要是以高頻率、短報文為主,CAN 總線在短報文傳輸中的實時性、可預(yù)測性等特點能夠更好地滿足系統(tǒng)要求,填補原有通訊方式的不足。
為更好地驗證CAN 總線性能與艦船導(dǎo)航系統(tǒng)傳輸要求匹配性,結(jié)合艦船導(dǎo)航系統(tǒng)信息種類、信息傳輸頻率等實際特征,對CAN 總線性能進行了測試與分析。
CAN 總線傳輸測試系統(tǒng)由4 臺基于VxWorks操作系統(tǒng)的PC 主機組成[6~8]。其中,PC 機1 為接收節(jié)點,模擬艦船導(dǎo)航系統(tǒng)綜合處理類設(shè)備;PC機2~4 為發(fā)送節(jié)點,模擬艦船導(dǎo)航系統(tǒng)傳感器類設(shè)備。CAN總線傳輸測試系統(tǒng)框架示意圖如圖1所示。
圖1 CAN總線傳輸測試系統(tǒng)示意圖
1)網(wǎng)絡(luò)穩(wěn)定性測試方法
PC機2~4按照優(yōu)先級設(shè)定以不同頻率發(fā)送數(shù)據(jù),數(shù)據(jù)幀格式包含當(dāng)前幀號,幀號從0 開始,依次遞增;數(shù)據(jù)幀內(nèi)容采用自增模式,便于接收到數(shù)據(jù)后查驗數(shù)據(jù)是否丟包。
2)網(wǎng)絡(luò)吞吐率測試方法
PC 機2~4 按照優(yōu)先級設(shè)定不間斷發(fā)送數(shù)據(jù),設(shè)置發(fā)送數(shù)據(jù)量,在發(fā)送完畢之后記錄所花費的時間,根據(jù)發(fā)送數(shù)據(jù)量和發(fā)送時間即可計算出各發(fā)送節(jié)點數(shù)據(jù)發(fā)送速率;數(shù)據(jù)接收節(jié)點采用每接收到一定量數(shù)據(jù)即記錄累計時間的方法進行記錄,在數(shù)據(jù)接收完畢后剔除第一次記錄的累計時間和最后一次記錄的累計時間,根據(jù)中間有效計時和每段計時范圍內(nèi)的數(shù)據(jù)接收量,即可計算出接收節(jié)點的數(shù)據(jù)接收速率。
3)數(shù)據(jù)延時測試方法
PC機2~4按照優(yōu)先級設(shè)定以不同頻率發(fā)送數(shù)據(jù),通過衛(wèi)星對各PC 機進行校時。利用各PC 機本地時鐘,分別記錄各發(fā)送節(jié)點產(chǎn)生第一幀數(shù)據(jù)的時間和接收節(jié)點接收到最后一幀數(shù)據(jù)的時間,計算PC機2~4→PC機1的數(shù)據(jù)傳輸總延時。
4)網(wǎng)絡(luò)負載能力測試方法
PC機2~4按照優(yōu)先級設(shè)定以不同的頻率發(fā)送數(shù)據(jù),逐次提高各發(fā)送節(jié)點的數(shù)據(jù)量和更新頻率,記錄發(fā)送的總數(shù)據(jù)包數(shù)和丟失的數(shù)據(jù)包數(shù)。
測試軟件主要包括初始化模塊、工作模式設(shè)定模塊、信息發(fā)送處理模塊和信息接收處理模塊,測試軟件總體框架如圖2所示。
圖2 測試軟件總體框架圖
3.1.1 信息發(fā)送處理
信息發(fā)送處理流程如圖3所示。
3.1.2 數(shù)據(jù)幀格式
數(shù)據(jù)幀格式見表2。
為方便測試,對原始數(shù)據(jù)幀進行封裝,增加其它輔助信息便于數(shù)據(jù)校驗[9~10]。數(shù)據(jù)幀封裝格式如圖4所示。
圖3 信息發(fā)送處理流程框圖
表2 數(shù)據(jù)幀格式
圖4 數(shù)據(jù)幀封裝格式
3.1.3 時序
傳感器模式時序如圖5所示。
3.1.4 數(shù)據(jù)發(fā)送
CAN網(wǎng)絡(luò)數(shù)據(jù)發(fā)送流程如圖6所示。
根據(jù)CAN 網(wǎng)絡(luò)協(xié)議規(guī)定,每次發(fā)送的數(shù)據(jù)幀容量最多不超過8 字節(jié),因此,需對數(shù)據(jù)幀進行拆包處理[11],拆包處理過程如圖7所示。
圖5 傳感器模式時序圖
圖6 CAN網(wǎng)絡(luò)數(shù)據(jù)發(fā)送流程圖
圖7 數(shù)據(jù)幀拆包處理示意圖
在進行數(shù)據(jù)幀拆包處理時,當(dāng)發(fā)送的數(shù)據(jù)長度是8字節(jié)的整數(shù)倍時,每幀數(shù)據(jù)長度為8字節(jié);當(dāng)發(fā)送的數(shù)據(jù)長度不是8 字節(jié)的整數(shù)倍時,最后一幀數(shù)據(jù)幀的長度為余數(shù)字節(jié),發(fā)送數(shù)據(jù)幀結(jié)構(gòu)如圖8 所示。為接收方便,在數(shù)據(jù)幀發(fā)送之前首先發(fā)送起始幀,規(guī)定起始幀的幀號為0;起始幀表明發(fā)送數(shù)據(jù)的開始,幀中含有發(fā)送數(shù)據(jù)的長度。在接收端可根據(jù)該數(shù)據(jù)進行組合得到實際發(fā)送的數(shù)送的數(shù)據(jù),其幀結(jié)構(gòu)及含義如圖9 所示。數(shù)據(jù)幀發(fā)送結(jié)束后緊接著發(fā)送一幀結(jié)束幀,表明數(shù)據(jù)接收完畢,結(jié)束幀幀號規(guī)定為0x0f,其幀結(jié)構(gòu)如圖10所示。
圖8 CAN發(fā)送MSG幀封裝結(jié)構(gòu)
圖9 開始幀結(jié)構(gòu)
圖10 結(jié)束幀結(jié)構(gòu)
3.1.5 數(shù)據(jù)存儲
采用二進制格式進行數(shù)據(jù)存儲。
3.2.1 信息接收處理
信息接收處理流程如圖11所示。
3.2.2 時序
為保證信息處理模式下有效接收各傳感器發(fā)送的數(shù)據(jù),需設(shè)定信息處理模式工作時序,信息處理模式時序控制圖如圖12 所示。首先初始化系統(tǒng)運行參數(shù),然后啟動定時器對任務(wù)進行計時以實現(xiàn)任務(wù)的周期執(zhí)行,當(dāng)數(shù)據(jù)接收處理和儲存執(zhí)行完畢,任務(wù)掛起以等待定時器結(jié)束,從而轉(zhuǎn)入下一周期的任務(wù)執(zhí)行。
圖11 信息接收處理流程圖
圖12 信息處理模式時序控制圖
3.2.3 數(shù)據(jù)接收
根據(jù)傳感器模式從對應(yīng)的地址依次讀取各傳感器發(fā)送的數(shù)據(jù)。
圖13 CAN總線接收時序圖
在信息處理模式端,首先啟動主任務(wù)初始化,在主任務(wù)進程中對CAN 總線數(shù)據(jù)讀取任務(wù)進行初始化。據(jù)讀取任務(wù)優(yōu)先級低于主任務(wù)。CAN 總線接收時序圖如圖13所示。
兩個任務(wù)交替周期執(zhí)行并設(shè)置緩沖區(qū)進行任務(wù)間的通信。主任務(wù)每個周期均讀取數(shù)據(jù)緩沖區(qū),如果數(shù)據(jù)有效標志位有效,則說明組包成功,主任務(wù)對讀取到的緩沖區(qū)數(shù)據(jù)進行進一步處理;如果數(shù)據(jù)有效標志位無效,則不做進一步處理。CAN網(wǎng)絡(luò)數(shù)據(jù)組包流程圖如14所示。
圖14 CAN網(wǎng)絡(luò)數(shù)據(jù)組包流程圖
3.2.4 數(shù)據(jù)存儲
采用二進制格式進行數(shù)據(jù)存儲。
CAN總線組網(wǎng)性能測試結(jié)果見表3~6。
表3測試結(jié)果表明,在CAN總線允許帶寬內(nèi)進行數(shù)據(jù)傳輸,未出現(xiàn)任何丟包現(xiàn)象,CAN 總線網(wǎng)絡(luò)運行穩(wěn)定。
表3 4發(fā)1收網(wǎng)絡(luò)穩(wěn)定性組網(wǎng)測試結(jié)果表
表4 測試結(jié)果表明,CAN 總線網(wǎng)絡(luò)最大發(fā)送速率為0.568Mbps;當(dāng)總線網(wǎng)絡(luò)中節(jié)點數(shù)量增加時,由于不同節(jié)點優(yōu)先級不同,CAN 總線網(wǎng)絡(luò)需進行仲裁,發(fā)送速率會降低。CAN總線網(wǎng)絡(luò)接收上限速率為0.689Mbps左右。
表5 測試結(jié)果表明,周期性數(shù)據(jù)幀傳輸模式,CAN 總線網(wǎng)絡(luò)數(shù)據(jù)傳輸延時典型值為0.608ms;偶發(fā)性數(shù)據(jù)幀傳輸模式下,CAN總線網(wǎng)絡(luò)數(shù)據(jù)傳輸延時典型值為0.625ms。
表5 網(wǎng)絡(luò)傳輸延時測試結(jié)果表
表6 測試結(jié)果表明,在接收到一定量數(shù)據(jù)時會出現(xiàn)丟包現(xiàn)象,優(yōu)先級越低數(shù)據(jù)丟包率越大。造成此現(xiàn)象的主要原因是信息接收處理端緩沖區(qū)溢出導(dǎo)致數(shù)據(jù)丟失[12]。
通過搭建CAN 總線數(shù)據(jù)傳輸測試系統(tǒng),結(jié)合艦船導(dǎo)航系統(tǒng)信息實際特征,對CAN 總線網(wǎng)絡(luò)性能進行了測試,測試結(jié)果表明,CAN 總線性能滿足艦船導(dǎo)航系統(tǒng)運動姿態(tài)信息傳輸需求,可作為傳輸平臺在艦船導(dǎo)航系統(tǒng)中應(yīng)用。
表6 4發(fā)1收網(wǎng)絡(luò)負載能力測試表