歐陽(yáng)中輝,樊輝錦,陳青華,胡道暢
(海軍航空大學(xué) 岸防兵學(xué)院, 山東 煙臺(tái) 264001)
隨著裝備信息化建設(shè)的不斷推進(jìn),特種車輛的維修保障和管理信息化要求也不斷提高。車輛狀態(tài)信息作為表征車輛實(shí)時(shí)狀態(tài)的關(guān)鍵數(shù)據(jù),對(duì)車輛的維修保障提供了有效支撐。通過調(diào)研發(fā)現(xiàn),特種車輛常在特殊陸地、山區(qū)和海島執(zhí)行野外作戰(zhàn)(駐訓(xùn)),當(dāng)傳輸距離較遠(yuǎn)時(shí),車載通信電臺(tái)和天線的便攜性和可靠性極大下降,不能滿足車輛狀態(tài)遠(yuǎn)程傳輸?shù)男枨蟆A硪环矫?,雖然目前絕大部分輪式特種車輛配備了北斗衛(wèi)星導(dǎo)航系統(tǒng),該系統(tǒng)具有獨(dú)特的短報(bào)文收發(fā)功能[1],但是,短報(bào)文服務(wù)主要用于簡(jiǎn)單預(yù)置信息的傳遞,以常用的北斗SIM卡為例,單次報(bào)文長(zhǎng)度僅為78.5 Byte,通信頻率為60 s/次,而且無通信回執(zhí)。通過北斗短報(bào)文進(jìn)行車輛狀態(tài)信息傳輸時(shí)必須進(jìn)行分包,極大的降低了傳輸?shù)膶?shí)時(shí)性和可靠性??傊?,現(xiàn)有車載通信方式與車輛狀態(tài)數(shù)據(jù)遠(yuǎn)程傳輸需求之間的矛盾日益凸顯。
車輛狀態(tài)信息壓縮編碼屬于無損壓縮范疇,常用的算法有游程編碼RLE(run-length encoding)算法、字典編碼LZW(Lempel-Ziv-Welch)算法、Huffman編碼算法和算術(shù)編碼算法[2-3]等。通過研究發(fā)現(xiàn),游程編碼RLE壓縮效果的好壞決定于原數(shù)據(jù)串的結(jié)構(gòu),數(shù)據(jù)串中如果存在大量連續(xù)相同字符,將獲得很高的壓縮比[4]。LZW編碼對(duì)于重復(fù)率較高的信號(hào)壓縮效果好[5]。Huffman編碼和算術(shù)編碼屬于基于統(tǒng)計(jì)特性的編碼方法,計(jì)算復(fù)雜度高,主要應(yīng)用于圖像和視頻信號(hào)壓縮[6-8]。車輛狀態(tài)信息極少存在連續(xù)相同的字符,且數(shù)據(jù)動(dòng)態(tài)性較強(qiáng),以上四種算法均無明顯優(yōu)勢(shì)。因此,為了在有限的報(bào)文長(zhǎng)度范圍內(nèi)對(duì)車輛狀態(tài)信息數(shù)據(jù)進(jìn)行壓縮傳輸,本文從特種車輛狀態(tài)信息編碼入手,設(shè)計(jì)了一種適用于北斗短報(bào)文傳輸?shù)膭?dòng)態(tài)索引碼表編碼方法。
車輛狀態(tài)信息進(jìn)行壓縮傳輸時(shí),為了避免直接傳輸信息造成的空間浪費(fèi),需要根據(jù)北斗短報(bào)文傳輸協(xié)議對(duì)信息進(jìn)行編碼。
根據(jù)“北斗用戶機(jī)接口協(xié)議4.0“版[9-10]內(nèi)容,短報(bào)文信息傳輸格式如表 1所示,報(bào)文內(nèi)容最長(zhǎng)217 Byte。針對(duì)不同車載北斗設(shè)備通信能力的不同,考慮到北斗三代報(bào)文長(zhǎng)度升級(jí)以后的兼容性問題,取現(xiàn)有特種車輛中北斗收發(fā)機(jī)報(bào)文長(zhǎng)度最短的78 Byte,即表1中通信申請(qǐng)指令下信息內(nèi)容的長(zhǎng)度在本文中設(shè)定為78 Byte。
短報(bào)文空間劃分如表2所示,即對(duì)表 1中報(bào)文內(nèi)容的細(xì)化。具體字節(jié)空間分配策略如下:
表2 短報(bào)文空間分配表
1) 數(shù)據(jù)包編號(hào)。數(shù)據(jù)包編號(hào)長(zhǎng)度為8 bit,主要用于短報(bào)文丟包時(shí),數(shù)據(jù)中心根據(jù)數(shù)據(jù)包編號(hào)申請(qǐng)數(shù)據(jù)采集終端重傳數(shù)據(jù)。
2) 是否連續(xù)數(shù)據(jù)包。針對(duì)特殊情況,一次數(shù)據(jù)傳輸不能發(fā)送全部數(shù)據(jù)的情況,分配2 bit進(jìn)行標(biāo)識(shí),00表示獨(dú)立幀,11表示連續(xù)幀,接收機(jī)做好接收后續(xù)數(shù)據(jù)的準(zhǔn)備,出現(xiàn)01或者10時(shí)可識(shí)別為丟幀。
3) 特種車輛類型。根據(jù)車輛任務(wù)種類和使用者需求自行編碼,考慮到擴(kuò)展性便于添加和刪除種類,采用6 bit描述特種車輛種類。例如,1型導(dǎo)彈發(fā)射車編為000001,2型步戰(zhàn)車編為100001,以此類推。
4) 設(shè)備終端編號(hào)。車載信息采集終端中的設(shè)備唯一標(biāo)識(shí)碼UUID,表征設(shè)備合法性和唯一性,綁定車輛牌照和編號(hào),分配16 bit。
5) 位置信息。位置信息包括精度、緯度和高度,由北斗導(dǎo)航系統(tǒng)獲得的位置信息編碼格式如表3所示,位置信息精度要求較高,根據(jù)協(xié)議中規(guī)定的報(bào)文格式,選取時(shí)間、經(jīng)度、緯度以及高度(H為高度數(shù)據(jù),ζH為高度異常值對(duì)高度數(shù)據(jù)進(jìn)行誤差修正)作為要素進(jìn)行發(fā)送,此幀格式將北斗授時(shí)的時(shí)間結(jié)合到數(shù)據(jù)包中,增加準(zhǔn)確性。
表3 位置信息協(xié)議格式
6) 開機(jī)時(shí)長(zhǎng)。以分鐘為單位,記錄采集設(shè)備連續(xù)開機(jī)時(shí)長(zhǎng),采集設(shè)備工作時(shí)長(zhǎng)與發(fā)動(dòng)機(jī)工作時(shí)長(zhǎng)相關(guān),便于設(shè)備和車輛在定檢和修理計(jì)劃制定時(shí)參考,分配2個(gè)字節(jié)來表示,每次設(shè)備開機(jī)時(shí)將時(shí)間清零重計(jì)。
7) 車輛關(guān)鍵狀態(tài)信息。 車輛關(guān)鍵狀態(tài)信息主要包括車輛健康狀態(tài)(百分?jǐn)?shù))和武器系統(tǒng)狀態(tài)信息等,最長(zhǎng)為56 Byte,取45 Byte,預(yù)留11 Byte作為用戶自定義。
根據(jù)1.1中前1~6的字節(jié)空間分配結(jié)果,解決問題的關(guān)鍵是如何在后續(xù)56 Byte的空間限制條件下,一次盡可能多的傳遞車輛狀態(tài)信息。車輛關(guān)鍵狀態(tài)信息編碼如表 4,各項(xiàng)數(shù)據(jù)的值用兩個(gè)字節(jié)足夠完全表示,考慮到誤碼的情況,將只有0和1的數(shù)據(jù)項(xiàng)用全0和全1表示。如武器系統(tǒng)狀態(tài)用65535表示良好,0表示故障,溫度值用最高位標(biāo)志正負(fù),車輛整體健康狀態(tài)用百分?jǐn)?shù)表示,根據(jù)車載PHM系統(tǒng)計(jì)算得出。
表4 特種車輛關(guān)鍵狀態(tài)信息編碼
車輛狀態(tài)信息中連續(xù)相同的字符出現(xiàn)概率較低,而較短時(shí)間間隔的前后兩次采集到的數(shù)據(jù)中部分不變化,將被多次重復(fù)傳輸。因此,基于短報(bào)文字節(jié)空間的分析,考慮簡(jiǎn)單易實(shí)現(xiàn)及可靠性的要求,提出了動(dòng)態(tài)索引碼表編碼方案。
該編碼方案只傳輸車輛關(guān)鍵狀態(tài)信息中變化的部分。這要求在車輛發(fā)送狀態(tài)信息時(shí),標(biāo)識(shí)哪些數(shù)據(jù)發(fā)生了變化,在傳輸車輛狀態(tài)信息之前,先傳輸索引碼表,標(biāo)識(shí)哪些數(shù)據(jù)項(xiàng)發(fā)生了變化,再傳輸車輛狀態(tài)信息中時(shí)序上前后兩次發(fā)生變化的數(shù)據(jù)項(xiàng)。接收方數(shù)據(jù)中心通過索引碼表確定變化的數(shù)據(jù),并進(jìn)行分析處理。
假設(shè)有一組數(shù)據(jù)如表5所示,表中所列為較前一次發(fā)生變化的數(shù)據(jù)項(xiàng),索引碼表和車輛關(guān)鍵狀態(tài)信息數(shù)據(jù)映射關(guān)系實(shí)例,如圖1所示。
表5 特種車輛關(guān)鍵狀態(tài)信息實(shí)例數(shù)據(jù)
圖1 索引碼表和實(shí)際數(shù)據(jù)項(xiàng)映射關(guān)系示意圖
索引碼表的字節(jié)空間分配為5個(gè)字節(jié),共40位,最多一次可表征20項(xiàng)車輛狀態(tài)信息,基本滿足需求。從左起,首2位與第一項(xiàng)車輛狀態(tài)數(shù)據(jù)相關(guān)聯(lián),其后2位與第2項(xiàng)車輛狀態(tài)數(shù)據(jù)相關(guān),依次類推。與索引碼表的位對(duì)應(yīng),車輛狀態(tài)數(shù)據(jù)從左起,首2個(gè)字節(jié)表示第1項(xiàng)車輛狀態(tài)數(shù)據(jù)的低位字節(jié)和高位字節(jié),接著2個(gè)字節(jié)表示第2項(xiàng)車輛狀態(tài)數(shù)據(jù),依次類推。
因此,圖2所示的車輛狀態(tài)數(shù)據(jù)的索引碼表的5個(gè)字節(jié),由左到右分別是:0C、40、00、00和03。車輛狀態(tài)數(shù)據(jù)中的10個(gè)有變化的字節(jié)分別是:80,3C,00,23,08,34,00,35,E6和3F。經(jīng)過該方法壓縮后的編碼為
0C,40,00,00,03,80,3C,00,23,08,34,00,35,E6和3F
圖2 索引碼表示意圖
此時(shí)這條數(shù)據(jù)采用該模式后只需要15個(gè)字節(jié),來表示一次傳輸?shù)能囕v狀態(tài)信息數(shù)據(jù)。由于索引碼表固定需要5個(gè)字節(jié),假設(shè)項(xiàng)車輛數(shù)據(jù)都有,最大需要字節(jié)數(shù)為5+2β,最小需要字節(jié)為5+2。當(dāng)β=10時(shí),最大需要字節(jié)數(shù)為5+2β=25個(gè)字節(jié)。以此類推,當(dāng)剛好等于20時(shí),最大需要5+2β=45個(gè)字節(jié),未超出最大字節(jié)空間45 Byte。
在圖2所示實(shí)例的索引碼表中,從最左邊開始,每相鄰的2個(gè)位有4種狀態(tài):00、10、11和01,分別用S0、S1、S2和S3依次表示。若車輛狀態(tài)信息數(shù)據(jù)中包含很多兩次傳輸間不發(fā)生變化的字節(jié),即為0的字節(jié),相應(yīng)地在索引碼表中也出現(xiàn)很多為0的位。
一般地,各車型一次發(fā)生變化的數(shù)據(jù)小于10種,即有(20-10)/20=50%以上概率是S0態(tài)。假設(shè)狀態(tài)出現(xiàn)概率從大到小的次序分別是:S0、S1、S2和S3。這種狀態(tài)出現(xiàn)概率不一樣的情況非常適合采用Huffman編碼。其方法是:S0 編碼為0,S1 編碼為10,S2 編碼為110,S3 編碼為111。
以圖2所示實(shí)例中的索引碼表為例,其狀態(tài)表為:S0、S0、S1、S1、S2、S0(25個(gè))、S2和S0。按照Huffman編碼方法,其使用1×28+2×2+3×2=38 bit,而原索引碼表固定為40 bit,節(jié)省了2個(gè)字節(jié)。
但是字節(jié)空間的節(jié)約是以解碼端計(jì)算時(shí)間增加為代價(jià)的,在字節(jié)空間夠用的情況下,不建議采用Huffman編碼方案,增加時(shí)間開銷[11]。在用戶自定義編碼的方案下,索引碼表過長(zhǎng)時(shí)可采用這種方法。
車輛狀態(tài)信息采集端是基于STM32的編解碼終端,連接北斗接收機(jī)收發(fā)報(bào)文,接收端數(shù)據(jù)中心采用中型工作站連接接收機(jī)進(jìn)行報(bào)文收發(fā),計(jì)算處理能力較強(qiáng),但并發(fā)性要求較高,其數(shù)據(jù)傳輸程序軟件設(shè)計(jì)一般流程如下:
1) 采集終端系統(tǒng)啟動(dòng),初始化數(shù)組,定義一個(gè)U8型數(shù)組Index[5]來記錄索引碼表;一個(gè)U8型數(shù)組Car_Info[40]存儲(chǔ)當(dāng)前車輛關(guān)鍵狀態(tài)信息,Car_Info_Old[40]存儲(chǔ)上一次信息;根據(jù)不同信號(hào)的北斗接收機(jī)定義靜態(tài)SData作為發(fā)送緩沖區(qū),靜態(tài)RData作為接收緩沖區(qū)。
2) 將采集得到的數(shù)據(jù),賦值到Car_Info[40],準(zhǔn)備比較。
3) 檢測(cè)是否開機(jī)第一次發(fā)送,是的話Index[5]置1,Car_Info_Old[40]置0,并跳轉(zhuǎn)到5。
4) 依次比較Car_Info[40]與Car_Info_Old[40]的數(shù)據(jù)內(nèi)容,有變化的將對(duì)應(yīng)關(guān)聯(lián)位的Index[5]置1。
5) 根據(jù)上表1、2和4的數(shù)據(jù)格式,開始打包SData,封裝SData[0]~SData[11]數(shù)據(jù)包頭。
6) 在第一節(jié)的字節(jié)空間分配策略中,從SData[12]開始編寫,其中從12~33共22個(gè)字節(jié)的數(shù)據(jù)表示了電文內(nèi)容前6項(xiàng)指定值,從SData[34]開始索引碼表,共5個(gè)字節(jié),對(duì)應(yīng)圖3進(jìn)行封裝數(shù)據(jù)包。將Index[5]和Car_Info[40]對(duì)應(yīng)需要發(fā)送的數(shù)據(jù)拼接,賦值到SData并發(fā)送。
7) 等待數(shù)據(jù)包接收到的回傳消息,并根據(jù)下次通信指令,循環(huán)到2)步。
圖3 報(bào)文幀格式和數(shù)組對(duì)應(yīng)關(guān)系示意圖
為驗(yàn)證上述壓縮傳輸?shù)姆椒?,使用兩臺(tái)BNTRE-320B北斗車載一體機(jī)進(jìn)行試驗(yàn),測(cè)試環(huán)境如圖4所示。為保證試驗(yàn)的可靠性和有效性,采用的北斗設(shè)備滿足指標(biāo)要求:BD2/BD3上行為L(zhǎng)頻段下行為S頻段,BD3全球短報(bào)文下行為L(zhǎng)頻段,一次報(bào)文長(zhǎng)度BD2為120漢字,BD3在RDSS服務(wù)區(qū)域不大于1 000個(gè)漢字,在僅具有全球短報(bào)文服務(wù)區(qū)域不大于40個(gè)漢字,誤碼率不大于10-5等其他需求[12]。在實(shí)驗(yàn)中,兩臺(tái)北斗一體機(jī)的SIM卡報(bào)文權(quán)限相同,通信服務(wù)頻率為60 s/次。
圖4 測(cè)試環(huán)境搭建
數(shù)據(jù)傳輸中的時(shí)延通常使用往返時(shí)間來(Round-Trip Time,RTT)評(píng)估,RTT由鏈路的傳播時(shí)間、終端處理時(shí)間和緩沖區(qū)排隊(duì)時(shí)間三部分組成[13]。現(xiàn)選取5組特種車輛執(zhí)行任務(wù)過程中產(chǎn)生的真實(shí)連續(xù)狀態(tài)信息進(jìn)行數(shù)據(jù)上傳RTT測(cè)試,數(shù)據(jù)均為未經(jīng)過壓縮的原始數(shù)據(jù)。測(cè)試區(qū)域北斗衛(wèi)星信號(hào)良好,天氣良好。對(duì)原始數(shù)據(jù)和經(jīng)過編碼壓縮后的數(shù)據(jù)分別進(jìn)行5次傳輸取平均值,并對(duì)結(jié)果進(jìn)行分析。
表6中可看出:原始數(shù)據(jù)傳輸過程中由于漢字未編碼和壓縮需要進(jìn)行分包傳輸,傳輸延遲嚴(yán)重,也產(chǎn)生了較為嚴(yán)重的丟包,平均丟包率在33.04%,平均時(shí)延在16.055 s,甚至出現(xiàn)一組數(shù)據(jù)的傳輸失敗。表7是利用通信用戶機(jī)編解碼終端對(duì)原始數(shù)據(jù)編碼并壓縮后進(jìn)行的數(shù)據(jù)傳輸測(cè)試,平均丟包率在8.50%左右,平均時(shí)延在3.812 s,無傳輸失敗數(shù)據(jù)。可知,原始數(shù)據(jù)的分包直接傳輸易導(dǎo)致數(shù)據(jù)不完整,一次傳輸數(shù)據(jù)量少時(shí)丟包數(shù)較少,驗(yàn)證了編碼可以大大提高數(shù)據(jù)的傳輸效率。
表6 原始數(shù)據(jù)傳輸測(cè)試結(jié)果
表7 壓縮數(shù)據(jù)傳輸測(cè)試結(jié)果
表8是原始數(shù)據(jù)傳輸、Huffman編碼后傳輸、LZW算法傳輸、索引碼表方法壓縮后傳輸?shù)臏y(cè)試結(jié)果比較。壓縮率是數(shù)據(jù)壓縮的重要指標(biāo),表示數(shù)據(jù)的無損壓縮程度;傳輸出錯(cuò)率是指經(jīng)過壓縮、傳輸、解壓后無法解析的數(shù)據(jù)占機(jī)載終端傳送數(shù)據(jù)的比例;傳輸丟包率是解壓后未接收到的數(shù)據(jù)總量占機(jī)載終端傳送數(shù)據(jù)的比例[13]。按照車載數(shù)據(jù)采集終端與傳輸標(biāo)準(zhǔn)要求,取3組特種車輛狀態(tài)數(shù)據(jù)作為測(cè)試數(shù)據(jù)源,將原始數(shù)據(jù)傳輸與3種壓縮后傳輸?shù)臄?shù)據(jù)結(jié)果進(jìn)行比較。實(shí)驗(yàn)重復(fù)操作100次,綜合各種環(huán)境條件(包括低溫、高溫、高海拔、異常位置等)取平均值??紤]到應(yīng)用地點(diǎn)多為山區(qū)或海灘,其在接收北斗信號(hào)時(shí)數(shù)據(jù)質(zhì)量可能受到一定的影響,連續(xù)在多地進(jìn)行測(cè)試[14-15]。
表8 數(shù)據(jù)壓縮測(cè)試結(jié)果
由表8可知,動(dòng)態(tài)索引碼表編碼壓縮方式具有計(jì)算量少、壓縮效率較高的優(yōu)勢(shì),適合車輛狀態(tài)信息在北斗短報(bào)文方式中進(jìn)行數(shù)據(jù)傳輸。LZW算法在全局或局部相關(guān)性好的數(shù)據(jù)有較好的壓縮率,但由于車輛狀態(tài)信息數(shù)據(jù)字段之間相關(guān)性較小,使其壓縮效率相對(duì)索引碼表編碼算法并無優(yōu)勢(shì)。
為了進(jìn)一步驗(yàn)證數(shù)據(jù)壓縮方法,說明數(shù)據(jù)傳輸前后數(shù)據(jù)的完整性情況,本文對(duì)比了解壓數(shù)據(jù)與原始數(shù)據(jù)。本文車輛狀態(tài)信息中的車速數(shù)據(jù)為例,比較經(jīng)過編碼壓縮傳輸與原始數(shù)據(jù)的差異,讀取服務(wù)器收到的數(shù)據(jù)文件后進(jìn)行解壓和反量化,實(shí)現(xiàn)數(shù)據(jù)對(duì)比。需要說明的是,所用的測(cè)試數(shù)據(jù)為某特種車輛從早上8∶00—10∶00執(zhí)行任務(wù)期間的車速數(shù)據(jù),采集周期為60 s,所產(chǎn)生的數(shù)據(jù)為117條(理論值應(yīng)為120 條,存在3條錯(cuò)誤、丟失以及沒有采集的數(shù)據(jù)樣本)。
從圖5可以看出:除極少速度數(shù)據(jù)由于編碼、傳輸?shù)仍蛟斐伤俣戎荡嬖谡`差外,大部分速度數(shù)據(jù)均與傳輸前保持一致。車載采集終端所發(fā)送的120條速度數(shù)據(jù)中,共有117條數(shù)據(jù)能夠準(zhǔn)確解析,準(zhǔn)確傳輸并解析的數(shù)據(jù)比例達(dá)97.50%,基本滿足實(shí)際應(yīng)用要求。3條錯(cuò)誤、丟失以及沒有采集的數(shù)據(jù)樣本中,丟失數(shù)據(jù)1條,丟包率占總量的0.008 3%,由于各種原因沒有采集數(shù)據(jù)為2條,占應(yīng)采數(shù)據(jù)總量的0.016 7%。以速度數(shù)據(jù)為例驗(yàn)證壓縮、傳輸算法的可用性試驗(yàn)結(jié)果表明,該算法具有較高的效率以及傳輸完整性。
圖5 原始數(shù)據(jù)與壓縮傳輸并解壓后數(shù)據(jù)對(duì)比
設(shè)計(jì)了數(shù)據(jù)包幀格式,研究了采用索引碼表的方式對(duì)數(shù)據(jù)壓縮率和傳輸成功率的影響,給出了在采集端和數(shù)據(jù)接收端軟壓縮方法的實(shí)現(xiàn)流程,在有限短報(bào)文空間中傳輸具備一定特點(diǎn)的特種車輛關(guān)鍵狀態(tài)信息。實(shí)驗(yàn)結(jié)果表明:在一般實(shí)驗(yàn)環(huán)境下,準(zhǔn)確傳輸并解析的數(shù)據(jù)比達(dá)97.50%,證明壓縮傳輸方法減小了數(shù)據(jù)包長(zhǎng)度,提高了數(shù)據(jù)壓縮率和傳輸效率,該方法可為特種車輛關(guān)鍵狀態(tài)信息“全天候、全地域、全過程”的監(jiān)控管理提供支撐。下一步計(jì)劃采用北斗通信指揮機(jī)作為接收端模塊,配合“并發(fā)”數(shù)據(jù)采集與傳輸設(shè)備實(shí)現(xiàn)同時(shí)對(duì)多個(gè)特種車輛編隊(duì)進(jìn)行狀態(tài)監(jiān)控。