黎 明,時(shí)海勇
(中國海洋大學(xué)工程學(xué)院,山東 青島 266100)
基于北斗衛(wèi)星的大型海洋浮標(biāo)通信機(jī)制研究
黎 明,時(shí)海勇
(中國海洋大學(xué)工程學(xué)院,山東 青島 266100)
針對北斗通信效率低、通信并非百分百可靠等問題,提出了一套新的大型海洋浮標(biāo)北斗通信機(jī)制,包含一套通信協(xié)議、一種適用于通信數(shù)據(jù)的“位拼接-LZW”兩重?cái)?shù)據(jù)壓縮機(jī)制以及一套適用于通信系統(tǒng)的“主-從”兩重狀態(tài)機(jī)通信控制機(jī)制。該機(jī)制有效地提高了通信傳輸效率,節(jié)約了通信成本,保證了北斗通信的可靠性,并且已成功應(yīng)用于大型海洋浮標(biāo)中。
大型海洋浮標(biāo);北斗通信;數(shù)據(jù)壓縮;LZW算法;狀態(tài)機(jī)
北斗衛(wèi)星導(dǎo)航定位系統(tǒng)是我國自主研制開發(fā)的區(qū)域性有源三維衛(wèi)星定位與通信系統(tǒng),該系統(tǒng)主要有快速定位、簡短通信和精密授時(shí)三大功能,是繼美國的全球定位系統(tǒng)(GPS)、俄羅斯的GLONASS之后第三個(gè)成熟的衛(wèi)星導(dǎo)航系統(tǒng)[1]。
北斗衛(wèi)星導(dǎo)航定位系統(tǒng)能有效保障用戶關(guān)鍵業(yè)務(wù)數(shù)據(jù)在存儲(chǔ)、處理和傳輸過程中的安全性,對國防及經(jīng)濟(jì)安全起著至關(guān)重要的作用。現(xiàn)代海洋浮標(biāo)的通信方式多種多樣,包括海事衛(wèi)星、GPRS、北斗衛(wèi)星以及VHF等。但是出于安全性與自主性的考慮,北斗通信成為了我國海洋浮標(biāo)數(shù)據(jù)通信的主要通信方式。但是北斗自身特性上存在一些缺陷:
(1)北斗衛(wèi)星單次通信數(shù)據(jù)量小。北斗衛(wèi)星二類民用用戶一次只可以傳輸最多77個(gè)字節(jié)的二進(jìn)制數(shù)據(jù)。
(2)北斗衛(wèi)星通信時(shí)間間隔大。二類民用用戶連續(xù)兩次通信需要至少1 min的時(shí)間間隔。如果通信幀數(shù)過多,一個(gè)完整數(shù)據(jù)包通信的完成將跨越較長的時(shí)間跨度,考慮多浮標(biāo)的情況,很可能出現(xiàn)數(shù)據(jù)不能在本時(shí)次的有限時(shí)間內(nèi)完全傳輸完的情況。
(3)北斗通信按數(shù)據(jù)量收費(fèi)。常年累月大數(shù)據(jù)量通信勢必導(dǎo)致通信成本的飆升。
(4)北斗衛(wèi)星可靠性并非百分之百。北斗衛(wèi)星導(dǎo)航定位系統(tǒng)截至2008年底已累計(jì)提供定位服務(wù)2.5億次、通信服務(wù)1.2億次、授時(shí)服務(wù)2,500萬次,系統(tǒng)可靠性達(dá)99.98%,但是存在0.02%的不可靠概率。
除了北斗衛(wèi)星自身特性上的缺陷,海洋浮標(biāo)行業(yè)也具有其行業(yè)的特殊性——海洋浮標(biāo)通信數(shù)據(jù)量大。大型海洋浮標(biāo)通信數(shù)據(jù)包含風(fēng)速、風(fēng)向、波高、波周期、波向、海流流速、海流流向、氣壓、溫度、濕度、水溫、鹽度、濁度以及葉綠素等10多類200多種數(shù)據(jù)。
針對北斗衛(wèi)星自身通信量小、通信時(shí)間間隔大、收費(fèi)、存在一定不可靠性以及海洋浮標(biāo)通信數(shù)據(jù)量大等問題,研究一種適用于大型海洋浮標(biāo)、高效可靠的數(shù)據(jù)通信機(jī)制,有重要意義。本文提出一種基于“位拼接-LZW”兩重?cái)?shù)據(jù)壓縮和“主-從”兩重狀態(tài)機(jī)控制的北斗通信機(jī)制,很好地解決了海洋浮標(biāo)北斗通信效率和可靠性的問題。該機(jī)制已經(jīng)被成功應(yīng)用于中國海洋大學(xué)與海洋局東海分局合作的大型海洋浮標(biāo)項(xiàng)目中。本文將從以下幾個(gè)方面來闡述該通信機(jī)制:
(1)“位拼接-LZW”兩重?cái)?shù)據(jù)壓縮機(jī)制。位拼接就是將數(shù)據(jù)在位的層面按一定順序首尾相接,再斷截成字節(jié),這樣做可以減少位空間浪費(fèi);LZW壓縮算法對具有一定相似度的數(shù)據(jù)具有顯著的壓縮效果。兩者結(jié)合能有效提升北斗通信效率。
(2)通信協(xié)議。由于經(jīng)兩重?cái)?shù)據(jù)壓縮后,數(shù)據(jù)長度不固定,該通信協(xié)議被設(shè)計(jì)為變幀協(xié)議,即通信總幀數(shù)視壓縮結(jié)果而定。
(3)“主-從”兩重狀態(tài)機(jī)控制機(jī)制。主狀態(tài)機(jī)在多浮標(biāo)的層面處理數(shù)據(jù),識(shí)別出浮標(biāo)號(hào)后,將數(shù)據(jù)幀拋給從狀態(tài)機(jī)。從狀態(tài)機(jī)與單個(gè)浮標(biāo)對應(yīng),在單浮標(biāo)的層面處理數(shù)據(jù)。
數(shù)據(jù)壓縮技術(shù)就是減少用于存儲(chǔ)和傳輸信息的位的數(shù)目[2]。位拼接算法就是在位的層面將數(shù)據(jù)加以拼接,節(jié)省掉數(shù)據(jù)之間的位空間浪費(fèi)。現(xiàn)實(shí)中,海洋環(huán)境各種參數(shù)量值都是在一定的范圍內(nèi)的,如風(fēng)速只可能是0~100 m/s,水溫只可能在-50~50℃,超出該范圍的值就可以認(rèn)為是野值。因此,就可以根據(jù)物理量的實(shí)際范圍,來確定最小的數(shù)據(jù)表達(dá)位數(shù)。
在發(fā)送端,只需將各類物理量對應(yīng)的最小位數(shù)的二進(jìn)制數(shù)在位的層面拼接起來,再斷截成字節(jié);在接收端,我們需要按位拼接算法反解出各個(gè)數(shù)據(jù),再加上偏移量就得到了所需物理量。
位拼接算法節(jié)省位空間,效果十分顯著,位拼接之前,海洋浮標(biāo)200多種數(shù)據(jù)要占355個(gè)字節(jié),經(jīng)位拼接壓縮后,只占255個(gè)字節(jié),有效節(jié)省了100個(gè)字節(jié)的空間,壓縮率約為28.17%。
LZW實(shí)質(zhì)是一種無損壓縮[3-6]。LZW算法是在1984年由TA Welch對LZ編碼中的LZ78算法修改而成的一種實(shí)用的字典壓縮算法,是對LZ78算法的改進(jìn)[7]。字典是在編解碼過程中動(dòng)態(tài)形成的且不必將字典傳給解碼器,這是LZW高效的主要原因。
LZW壓縮算法的基本思想是根據(jù)待壓縮的字符流動(dòng)態(tài)生成一個(gè)字典,將輸入字符串映射成定長的碼字輸出。LZW壓縮算法實(shí)現(xiàn)步驟如下:
(1)初始化字典,使字典包含所有可能的前綴根,并置前綴Prifix為空;
(2)讀取輸入流中的字符,賦給當(dāng)前字符C;
(3)判斷綴符PrifixC(Prifix+C)是否在字典中,若在字典中,更新Prifix=PrifixC,若不在字典中:①將Prifix對應(yīng)的碼字寫入輸出碼流;②將PrifixC添加到字典中并更新Prifix=C;
(4)判斷是否還有數(shù)據(jù)要壓縮,如果有,則轉(zhuǎn)到(2);否則,轉(zhuǎn)到(5);
(5)將Prifix對應(yīng)的字典索引寫入輸出碼流,編碼結(jié)束。
LZW解壓縮與壓縮相對,基本思想是根據(jù)待解壓縮的碼字流動(dòng)態(tài)生成一個(gè)字典,將輸入碼字映射成字符串輸出。LZW解壓縮實(shí)現(xiàn)步驟如下:
(1)初始化字典,使字典包含所有可能的前綴根;
(2)讀取編碼數(shù)據(jù)流中的第一個(gè)碼字,賦給cW;
(3)在詞典中查出cW對應(yīng)的字符串,輸出到字符流;
(4)將當(dāng)前碼字cW賦給先前碼字pW,即令pW=cW;
(5)讀取編碼數(shù)據(jù)流中的下一個(gè)碼字,賦給cW;
(6)判斷當(dāng)前碼字是否在字典中,如果在:①把當(dāng)前碼字對應(yīng)的字符串輸出到字符流;②將先前碼字對應(yīng)的字符串賦給前綴Prifix;③取當(dāng)前碼字cW對應(yīng)字符串的第一個(gè)字符,賦給當(dāng)前字符C;④將字串Prifix+C添加到字典中;如果不在:①將先前碼字pW對應(yīng)的字串賦給前綴Prifix;②取先前碼字pW對應(yīng)字符串的第一個(gè)字符,賦給當(dāng)前字符C;③將字符串Prifix+C輸出到字符流,并將該字串添加到字典中;
(7)判斷編碼數(shù)據(jù)流中是否還有數(shù)據(jù),若果有,則轉(zhuǎn)到(5);如果沒有,解壓縮結(jié)束。
結(jié)合上述LZW算法原理,可知LZW壓縮算法的壓縮率與源數(shù)據(jù)有關(guān),在一定范圍內(nèi)浮動(dòng),源數(shù)據(jù)的相似度越高,即包含的相同字符越多,壓縮率越理想;源數(shù)據(jù)的相似性越低,即包含的相同字符越少,壓縮率越低。給定源數(shù)組長度為w,現(xiàn)給出LZW算法的壓縮率范圍:
待壓縮源數(shù)組字符都一樣的情況,壓縮率最大,為:
待壓縮源數(shù)組字符都不一樣的情況,壓縮率最小,為:
式中:n為碼字字長,m與w存在式(3)所示關(guān)系。
嵌入式環(huán)境下,程序開發(fā)要考慮的一個(gè)重要因素就是存儲(chǔ)空間的大小。盡可能的節(jié)省資源是必須遵循的一個(gè)原則。LZW算法中最消耗內(nèi)存資源的就是字典。本文給出一個(gè)一維代替二維的一維數(shù)組字典模式。該模式用兩個(gè)一維數(shù)組來作為字典容器。一個(gè)存放字串,稱之為字串?dāng)?shù)組;一個(gè)存放字串的首地址及長度,稱之為地址數(shù)組。字典數(shù)組如圖1所示。該模式避免了二維數(shù)組由于字串長度不等帶來的空間冗余。
圖1 字典數(shù)組
為了節(jié)省空間,ASCII碼值為0~255的256個(gè)單字符不占用字典空間,該字典只包含長度大于1的字串。如此一來,字典字串索引碼值Index與輸出碼字Code存在式(4)所示的關(guān)系。
為了最大程度滿足需要,同時(shí)避免空間浪費(fèi),現(xiàn)在給出字典數(shù)組大?。?/p>
(1)假設(shè)需要LZW壓縮源數(shù)組的長度為w。
(2)結(jié)合LZW算法原理可知,源數(shù)組所有字符都不相同的情況,字典所需空間最大,這時(shí)源數(shù)組中所有字符都在字串中出現(xiàn)兩次,故串?dāng)?shù)組的最大長度為2w。
(3)源數(shù)組所有字符都不相同時(shí),字典項(xiàng)數(shù)最多,項(xiàng)數(shù)為w,此時(shí)對應(yīng)址數(shù)組長度最大,長度為2w。
由前文可知,LZW算法的壓縮率與原數(shù)據(jù)有關(guān),在一個(gè)范圍內(nèi)浮動(dòng),那么就只能在統(tǒng)計(jì)的層面討論兩重?cái)?shù)據(jù)壓縮的效果。圖2給出了對1 000包數(shù)大型海洋浮標(biāo)實(shí)際數(shù)據(jù)進(jìn)行兩重?cái)?shù)據(jù)壓縮處理時(shí),LZW壓縮的壓縮率分布情況。數(shù)據(jù)是從浮標(biāo)現(xiàn)場隨機(jī)抽取的,從圖中可以看出經(jīng)過位拼接后,LZW算法的壓縮率很大概率集中在25%以上。這意味著如果位拼接后的幀數(shù)超過4幀的話,經(jīng)LZW壓縮后很大概率上能夠壓掉至少一幀數(shù)據(jù)。這無論是從通信時(shí)延還是成本上考慮,都是極大的改良。
圖2 LZW壓縮率分布圖
通信協(xié)議是設(shè)備間通訊的規(guī)范,通信協(xié)議設(shè)計(jì)主要側(cè)重于協(xié)議可靠性和傳輸效率等方面。由前文可知,“位拼接-LZW”兩重?cái)?shù)據(jù)壓縮的壓縮率與源數(shù)據(jù)有關(guān),在某一范圍內(nèi)浮動(dòng),也就是說最終壓縮得到的數(shù)據(jù)長度不定。針對這種情況,本協(xié)議設(shè)計(jì)成變幀結(jié)構(gòu),如圖3所示。該協(xié)議分為兩層:幀元結(jié)構(gòu)和包元結(jié)構(gòu)。
幀元結(jié)構(gòu)是該通信協(xié)議中的最小通信單元。發(fā)送端,各個(gè)幀對應(yīng)的通信數(shù)據(jù)按位拼接壓縮算法壓縮后,填充到幀元結(jié)構(gòu)的通信數(shù)據(jù)區(qū),組成幀元;接收端,從幀元結(jié)構(gòu)的通信數(shù)據(jù)區(qū)取出數(shù)據(jù)后,按位拼接解壓縮算法解析出各個(gè)幀對應(yīng)的通信數(shù)據(jù)。
幀元結(jié)構(gòu)各個(gè)區(qū)段的意義見表1。其中命令碼標(biāo)示幀類型,具體類型見表2。
包元結(jié)構(gòu)是幀元結(jié)構(gòu)的容器,每個(gè)包元結(jié)果至少包含一個(gè)幀元。發(fā)送端,將本次要發(fā)送的所有幀元結(jié)構(gòu)統(tǒng)一按LZW壓縮算法壓縮后,再將所得數(shù)據(jù)依次取74個(gè)字節(jié)填充到包元結(jié)構(gòu)的通信數(shù)據(jù)區(qū)段,組成包元結(jié)構(gòu),最后一包通信數(shù)據(jù)不滿74字節(jié)的話,有多少數(shù)據(jù)就填充多少;接收端,取出本次接收到的所有包元結(jié)構(gòu)的通信數(shù)據(jù)區(qū)段,按LZW解壓縮算法解析出各個(gè)幀元結(jié)構(gòu)。
包元結(jié)構(gòu)各個(gè)區(qū)段的意義見表3。
圖3 通信協(xié)議格式
表1 幀元區(qū)段意義
表2 命令碼
表3 包元區(qū)段意義
兩重?cái)?shù)據(jù)壓縮只是保證了北斗通信的傳輸效率,北斗通信的另一個(gè)重要方面就是通信的可靠性。通信可靠性就是指信息在傳輸中由于信道不理想性出錯(cuò)概率的大小。影響通信可靠性的因素眾多,主要有通信環(huán)境、通信差錯(cuò)控制技術(shù)等[8]。本文從通信差錯(cuò)控制技術(shù)入手,將有限狀態(tài)機(jī)引入通信控制機(jī)制中來,提出了一種“主-從”兩重狀態(tài)機(jī)控制機(jī)制,如圖4所示?!爸?從”兩重狀態(tài)機(jī)機(jī)制彌補(bǔ)了北斗通信可靠性上的瑕疵,能夠有效應(yīng)對丟包的情況,使得通信控制更加有序、不紊亂,增強(qiáng)了系統(tǒng)的健壯性。其作用及優(yōu)點(diǎn)表現(xiàn)在以下幾個(gè)方面:
(1)“主-從”兩重狀態(tài)機(jī),有效地解決了多浮標(biāo)數(shù)據(jù)通信控制的問題。主狀態(tài)機(jī)統(tǒng)籌調(diào)度,從狀態(tài)機(jī)分管各單浮標(biāo)的數(shù)據(jù)處理工作。
(2)“主-從”兩重狀態(tài)機(jī),具有部分幀重發(fā)的功能。所謂部分幀重發(fā),就是哪一幀或幾幀漏發(fā)或丟失,只要求重發(fā)這一幀或幾幀就可以了,不必將所有幀重發(fā)一遍。這一功能是在從狀態(tài)機(jī)的發(fā)送應(yīng)答幀中實(shí)現(xiàn)的。
(3)“主-從”兩重狀態(tài)機(jī),具有多重糾錯(cuò)、排錯(cuò)的功能。主狀態(tài)機(jī)包含校驗(yàn)和錯(cuò)誤處理功能,能初步排除部分錯(cuò)誤;從狀態(tài)機(jī)中的錯(cuò)誤處理,進(jìn)行進(jìn)一步排錯(cuò)。
主狀態(tài)機(jī)根據(jù)識(shí)別出來的浮標(biāo)號(hào),將數(shù)據(jù)以及識(shí)別出的命令號(hào)拋給與該浮標(biāo)號(hào)對應(yīng)的從狀態(tài)機(jī),從而啟動(dòng)后續(xù)數(shù)據(jù)處理。主狀態(tài)機(jī)好比一道防火墻,所有浮標(biāo)的數(shù)據(jù)都要經(jīng)其篩選把關(guān),再路由給不同的從狀態(tài)機(jī),既起著激活各個(gè)從狀態(tài)機(jī)的作用,同時(shí)為從狀態(tài)機(jī)分擔(dān)了部分錯(cuò)誤處理工作,減輕了從狀態(tài)機(jī)的負(fù)擔(dān)。
從接收狀態(tài)與浮標(biāo)號(hào)一一對應(yīng),有幾個(gè)浮標(biāo)就有幾個(gè)從接受狀態(tài)機(jī)。從狀態(tài)機(jī)負(fù)責(zé)各個(gè)浮標(biāo)數(shù)據(jù)通信的控制,每個(gè)從狀態(tài)機(jī)都獨(dú)占一個(gè)線程,所有從狀態(tài)機(jī)同時(shí)自行運(yùn)轉(zhuǎn),各司其職,同時(shí)都接受主狀態(tài)機(jī)這個(gè)主線程的通道調(diào)度。從狀態(tài)機(jī)就是“多浮標(biāo)”這一功能概念在多線程技術(shù)下的完美詮釋。
從狀態(tài)機(jī)中的發(fā)送應(yīng)答幀環(huán)節(jié)是至關(guān)重要的環(huán)節(jié),綜合分析標(biāo)志位,做出或者部分幀重發(fā)應(yīng)答,或者接收完成應(yīng)答。從狀態(tài)機(jī)中錯(cuò)誤處理環(huán)節(jié)可以處理超時(shí)錯(cuò)誤和接收錯(cuò)誤,避免接收過程陷入死循環(huán)。
本文提出的“位拼接-LZW”兩重?cái)?shù)據(jù)壓縮機(jī)制在壓縮效率上效果顯著,極大地提升了北斗通信的通信效率,有效地控制了通信成本。從圖2看出,如果通信幀數(shù)超過4幀的話,很大概率上能至少壓掉1幀,也就是說每一包就能節(jié)省一幀的通信費(fèi)用以及通信時(shí)間。
圖4 “主-從”兩重狀態(tài)機(jī)機(jī)制
本文提出的“主-從”兩重狀態(tài)機(jī)控制機(jī)制很好地抑制了丟包現(xiàn)象,保證了通信的可靠性。與國家海洋局東海分局合作的大型海洋浮標(biāo)在海上連續(xù)運(yùn)行7個(gè)月,其間經(jīng)歷過多次臺(tái)風(fēng),系統(tǒng)運(yùn)行穩(wěn)定可靠,未出現(xiàn)過通信故障。
[1]姚一飛,王浩,趙東發(fā).北斗衛(wèi)星導(dǎo)航定位系統(tǒng)綜述[J].科技向?qū)?2011,2(8):10-11.
[2]楊鵬飛,張鵬,趙潔,等.LZW數(shù)據(jù)壓縮技術(shù)在野戰(zhàn)炮兵指揮系統(tǒng)中的應(yīng)用[J].彈箭與制導(dǎo)學(xué)報(bào),2011,31(1):237-240.
[3]姜濱.基于LZW算法的改進(jìn)算法[J].北華大學(xué)學(xué)報(bào)(自然科學(xué)版),2010,11(5):474-476.
[4]姜丹.信息論與編碼[M](第2版).合肥:中國科學(xué)技術(shù)大學(xué)出版社,2004.
[5]張鳳林,劉思峰.LZW~*:一個(gè)改進(jìn)的LZW數(shù)據(jù)壓縮算法[J].小型微型計(jì)算機(jī)系統(tǒng),2006,27(10):1897-1899.
[6]Hiroshi Ayama,KazuhiroUeda.Evaluation ofUsers’Adaptation byApplyingLZWCompression AlgorithmtoOperation Logs[M].Berlin:Pringer-Verlag,2004.
[7]陳昌主,陳小松.數(shù)據(jù)壓縮算法研究與設(shè)計(jì)[J].電腦與信息技術(shù),2010,18(6):23-25.
[8]高明亮,謝強(qiáng).無線通信可靠性研究[J].自動(dòng)化與儀器儀表,2010,148(2):17-23.
Research of Communication Mechanism Based on Beidou Satellite for Large Buoy
LI Ming,SHI Hai-yong
(College of Engineering,Ocean University of China,Qingdao Shandong 266100,China)
For the problems such as low communication efficiency and unreliability of communication,a new communication mechanism for large buoy based on Beidou satellite was proposed,including a set of communication protocols,a double data compression mechanism called “bit splicing-LZW” for communication data and a “master-slave” double state machine communication control mechanism for communication system.The mechanism could improve the communication transmission efficiency,save communication cost and ensure the reliability of communication.The mechanism has been successfully applied to the large buoy.
large buoy;Beidou satellite communication;data compression;LZW algorithm;state machine
P715.2,TN927
B
1003-2029(2012)01-0001-05
2011-09-27
黎明(1975-),男,副教授,研究方向?yàn)橹悄苄畔⑻幚砼c智能控制。