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