基于北斗卫星的大型海洋浮标通信机制研究

2012-01-09 05:22时海勇
海洋技术学报 2012年1期
关键词:压缩算法压缩率状态机

黎 明,时海勇

(中国海洋大学工程学院,山东 青岛 266100)

基于北斗卫星的大型海洋浮标通信机制研究

黎 明,时海勇

(中国海洋大学工程学院,山东 青岛 266100)

针对北斗通信效率低、通信并非百分百可靠等问题,提出了一套新的大型海洋浮标北斗通信机制,包含一套通信协议、一种适用于通信数据的“位拼接-LZW”两重数据压缩机制以及一套适用于通信系统的“主-从”两重状态机通信控制机制。该机制有效地提高了通信传输效率,节约了通信成本,保证了北斗通信的可靠性,并且已成功应用于大型海洋浮标中。

大型海洋浮标;北斗通信;数据压缩;LZW算法;状态机

北斗卫星导航定位系统是我国自主研制开发的区域性有源三维卫星定位与通信系统,该系统主要有快速定位、简短通信和精密授时三大功能,是继美国的全球定位系统(GPS)、俄罗斯的GLONASS之后第三个成熟的卫星导航系统[1]。

北斗卫星导航定位系统能有效保障用户关键业务数据在存储、处理和传输过程中的安全性,对国防及经济安全起着至关重要的作用。现代海洋浮标的通信方式多种多样,包括海事卫星、GPRS、北斗卫星以及VHF等。但是出于安全性与自主性的考虑,北斗通信成为了我国海洋浮标数据通信的主要通信方式。但是北斗自身特性上存在一些缺陷:

(1)北斗卫星单次通信数据量小。北斗卫星二类民用用户一次只可以传输最多77个字节的二进制数据。

(2)北斗卫星通信时间间隔大。二类民用用户连续两次通信需要至少1 min的时间间隔。如果通信帧数过多,一个完整数据包通信的完成将跨越较长的时间跨度,考虑多浮标的情况,很可能出现数据不能在本时次的有限时间内完全传输完的情况。

(3)北斗通信按数据量收费。常年累月大数据量通信势必导致通信成本的飙升。

(4)北斗卫星可靠性并非百分之百。北斗卫星导航定位系统截至2008年底已累计提供定位服务2.5亿次、通信服务1.2亿次、授时服务2,500万次,系统可靠性达99.98%,但是存在0.02%的不可靠概率。

除了北斗卫星自身特性上的缺陷,海洋浮标行业也具有其行业的特殊性——海洋浮标通信数据量大。大型海洋浮标通信数据包含风速、风向、波高、波周期、波向、海流流速、海流流向、气压、温度、湿度、水温、盐度、浊度以及叶绿素等10多类200多种数据。

针对北斗卫星自身通信量小、通信时间间隔大、收费、存在一定不可靠性以及海洋浮标通信数据量大等问题,研究一种适用于大型海洋浮标、高效可靠的数据通信机制,有重要意义。本文提出一种基于“位拼接-LZW”两重数据压缩和“主-从”两重状态机控制的北斗通信机制,很好地解决了海洋浮标北斗通信效率和可靠性的问题。该机制已经被成功应用于中国海洋大学与海洋局东海分局合作的大型海洋浮标项目中。本文将从以下几个方面来阐述该通信机制:

(1)“位拼接-LZW”两重数据压缩机制。位拼接就是将数据在位的层面按一定顺序首尾相接,再断截成字节,这样做可以减少位空间浪费;LZW压缩算法对具有一定相似度的数据具有显著的压缩效果。两者结合能有效提升北斗通信效率。

(2)通信协议。由于经两重数据压缩后,数据长度不固定,该通信协议被设计为变帧协议,即通信总帧数视压缩结果而定。

(3)“主-从”两重状态机控制机制。主状态机在多浮标的层面处理数据,识别出浮标号后,将数据帧抛给从状态机。从状态机与单个浮标对应,在单浮标的层面处理数据。

1 “位拼接-LZW”两重压缩机制

1.1 位拼接算法

数据压缩技术就是减少用于存储和传输信息的位的数目[2]。位拼接算法就是在位的层面将数据加以拼接,节省掉数据之间的位空间浪费。现实中,海洋环境各种参数量值都是在一定的范围内的,如风速只可能是0~100 m/s,水温只可能在-50~50℃,超出该范围的值就可以认为是野值。因此,就可以根据物理量的实际范围,来确定最小的数据表达位数。

在发送端,只需将各类物理量对应的最小位数的二进制数在位的层面拼接起来,再断截成字节;在接收端,我们需要按位拼接算法反解出各个数据,再加上偏移量就得到了所需物理量。

位拼接算法节省位空间,效果十分显著,位拼接之前,海洋浮标200多种数据要占355个字节,经位拼接压缩后,只占255个字节,有效节省了100个字节的空间,压缩率约为28.17%。

1.2 LZW算法

LZW实质是一种无损压缩[3-6]。LZW算法是在1984年由TA Welch对LZ编码中的LZ78算法修改而成的一种实用的字典压缩算法,是对LZ78算法的改进[7]。字典是在编解码过程中动态形成的且不必将字典传给解码器,这是LZW高效的主要原因。

LZW压缩算法的基本思想是根据待压缩的字符流动态生成一个字典,将输入字符串映射成定长的码字输出。LZW压缩算法实现步骤如下:

(1)初始化字典,使字典包含所有可能的前缀根,并置前缀Prifix为空;

(2)读取输入流中的字符,赋给当前字符C;

(3)判断缀符PrifixC(Prifix+C)是否在字典中,若在字典中,更新Prifix=PrifixC,若不在字典中:①将Prifix对应的码字写入输出码流;②将PrifixC添加到字典中并更新Prifix=C;

(4)判断是否还有数据要压缩,如果有,则转到(2);否则,转到(5);

(5)将Prifix对应的字典索引写入输出码流,编码结束。

LZW解压缩与压缩相对,基本思想是根据待解压缩的码字流动态生成一个字典,将输入码字映射成字符串输出。LZW解压缩实现步骤如下:

(1)初始化字典,使字典包含所有可能的前缀根;

(2)读取编码数据流中的第一个码字,赋给cW;

(3)在词典中查出cW对应的字符串,输出到字符流;

(4)将当前码字cW赋给先前码字pW,即令pW=cW;

(5)读取编码数据流中的下一个码字,赋给cW;

(6)判断当前码字是否在字典中,如果在:①把当前码字对应的字符串输出到字符流;②将先前码字对应的字符串赋给前缀Prifix;③取当前码字cW对应字符串的第一个字符,赋给当前字符C;④将字串Prifix+C添加到字典中;如果不在:①将先前码字pW对应的字串赋给前缀Prifix;②取先前码字pW对应字符串的第一个字符,赋给当前字符C;③将字符串Prifix+C输出到字符流,并将该字串添加到字典中;

(7)判断编码数据流中是否还有数据,若果有,则转到(5);如果没有,解压缩结束。

结合上述LZW算法原理,可知LZW压缩算法的压缩率与源数据有关,在一定范围内浮动,源数据的相似度越高,即包含的相同字符越多,压缩率越理想;源数据的相似性越低,即包含的相同字符越少,压缩率越低。给定源数组长度为w,现给出LZW算法的压缩率范围:

待压缩源数组字符都一样的情况,压缩率最大,为:

待压缩源数组字符都不一样的情况,压缩率最小,为:

式中:n为码字字长,m与w存在式(3)所示关系。

1.3 嵌入式环境下LZW算法字典设计

嵌入式环境下,程序开发要考虑的一个重要因素就是存储空间的大小。尽可能的节省资源是必须遵循的一个原则。LZW算法中最消耗内存资源的就是字典。本文给出一个一维代替二维的一维数组字典模式。该模式用两个一维数组来作为字典容器。一个存放字串,称之为字串数组;一个存放字串的首地址及长度,称之为地址数组。字典数组如图1所示。该模式避免了二维数组由于字串长度不等带来的空间冗余。

图1 字典数组

为了节省空间,ASCII码值为0~255的256个单字符不占用字典空间,该字典只包含长度大于1的字串。如此一来,字典字串索引码值Index与输出码字Code存在式(4)所示的关系。

为了最大程度满足需要,同时避免空间浪费,现在给出字典数组大小:

(1)假设需要LZW压缩源数组的长度为w。

(2)结合LZW算法原理可知,源数组所有字符都不相同的情况,字典所需空间最大,这时源数组中所有字符都在字串中出现两次,故串数组的最大长度为2w。

(3)源数组所有字符都不相同时,字典项数最多,项数为w,此时对应址数组长度最大,长度为2w。

1.4 压缩效果

由前文可知,LZW算法的压缩率与原数据有关,在一个范围内浮动,那么就只能在统计的层面讨论两重数据压缩的效果。图2给出了对1 000包数大型海洋浮标实际数据进行两重数据压缩处理时,LZW压缩的压缩率分布情况。数据是从浮标现场随机抽取的,从图中可以看出经过位拼接后,LZW算法的压缩率很大概率集中在25%以上。这意味着如果位拼接后的帧数超过4帧的话,经LZW压缩后很大概率上能够压掉至少一帧数据。这无论是从通信时延还是成本上考虑,都是极大的改良。

图2 LZW压缩率分布图

2 通信协议

通信协议是设备间通讯的规范,通信协议设计主要侧重于协议可靠性和传输效率等方面。由前文可知,“位拼接-LZW”两重数据压缩的压缩率与源数据有关,在某一范围内浮动,也就是说最终压缩得到的数据长度不定。针对这种情况,本协议设计成变帧结构,如图3所示。该协议分为两层:帧元结构和包元结构。

2.1 帧元结构

帧元结构是该通信协议中的最小通信单元。发送端,各个帧对应的通信数据按位拼接压缩算法压缩后,填充到帧元结构的通信数据区,组成帧元;接收端,从帧元结构的通信数据区取出数据后,按位拼接解压缩算法解析出各个帧对应的通信数据。

帧元结构各个区段的意义见表1。其中命令码标示帧类型,具体类型见表2。

2.2 包元结构

包元结构是帧元结构的容器,每个包元结果至少包含一个帧元。发送端,将本次要发送的所有帧元结构统一按LZW压缩算法压缩后,再将所得数据依次取74个字节填充到包元结构的通信数据区段,组成包元结构,最后一包通信数据不满74字节的话,有多少数据就填充多少;接收端,取出本次接收到的所有包元结构的通信数据区段,按LZW解压缩算法解析出各个帧元结构。

包元结构各个区段的意义见表3。

3 “主-从”两重状态机控制机制

图3 通信协议格式

表1 帧元区段意义

表2 命令码

表3 包元区段意义

两重数据压缩只是保证了北斗通信的传输效率,北斗通信的另一个重要方面就是通信的可靠性。通信可靠性就是指信息在传输中由于信道不理想性出错概率的大小。影响通信可靠性的因素众多,主要有通信环境、通信差错控制技术等[8]。本文从通信差错控制技术入手,将有限状态机引入通信控制机制中来,提出了一种“主-从”两重状态机控制机制,如图4所示。“主-从”两重状态机机制弥补了北斗通信可靠性上的瑕疵,能够有效应对丢包的情况,使得通信控制更加有序、不紊乱,增强了系统的健壮性。其作用及优点表现在以下几个方面:

(1)“主-从”两重状态机,有效地解决了多浮标数据通信控制的问题。主状态机统筹调度,从状态机分管各单浮标的数据处理工作。

(2)“主-从”两重状态机,具有部分帧重发的功能。所谓部分帧重发,就是哪一帧或几帧漏发或丢失,只要求重发这一帧或几帧就可以了,不必将所有帧重发一遍。这一功能是在从状态机的发送应答帧中实现的。

(3)“主-从”两重状态机,具有多重纠错、排错的功能。主状态机包含校验和错误处理功能,能初步排除部分错误;从状态机中的错误处理,进行进一步排错。

3.1 主状态机

主状态机根据识别出来的浮标号,将数据以及识别出的命令号抛给与该浮标号对应的从状态机,从而启动后续数据处理。主状态机好比一道防火墙,所有浮标的数据都要经其筛选把关,再路由给不同的从状态机,既起着激活各个从状态机的作用,同时为从状态机分担了部分错误处理工作,减轻了从状态机的负担。

3.2 从状态机

从接收状态与浮标号一一对应,有几个浮标就有几个从接受状态机。从状态机负责各个浮标数据通信的控制,每个从状态机都独占一个线程,所有从状态机同时自行运转,各司其职,同时都接受主状态机这个主线程的通道调度。从状态机就是“多浮标”这一功能概念在多线程技术下的完美诠释。

从状态机中的发送应答帧环节是至关重要的环节,综合分析标志位,做出或者部分帧重发应答,或者接收完成应答。从状态机中错误处理环节可以处理超时错误和接收错误,避免接收过程陷入死循环。

4 结束语

本文提出的“位拼接-LZW”两重数据压缩机制在压缩效率上效果显著,极大地提升了北斗通信的通信效率,有效地控制了通信成本。从图2看出,如果通信帧数超过4帧的话,很大概率上能至少压掉1帧,也就是说每一包就能节省一帧的通信费用以及通信时间。

图4 “主-从”两重状态机机制

本文提出的“主-从”两重状态机控制机制很好地抑制了丢包现象,保证了通信的可靠性。与国家海洋局东海分局合作的大型海洋浮标在海上连续运行7个月,其间经历过多次台风,系统运行稳定可靠,未出现过通信故障。

[1]姚一飞,王浩,赵东发.北斗卫星导航定位系统综述[J].科技向导,2011,2(8):10-11.

[2]杨鹏飞,张鹏,赵洁,等.LZW数据压缩技术在野战炮兵指挥系统中的应用[J].弹箭与制导学报,2011,31(1):237-240.

[3]姜滨.基于LZW算法的改进算法[J].北华大学学报(自然科学版),2010,11(5):474-476.

[4]姜丹.信息论与编码[M](第2版).合肥:中国科学技术大学出版社,2004.

[5]张凤林,刘思峰.LZW~*:一个改进的LZW数据压缩算法[J].小型微型计算机系统,2006,27(10):1897-1899.

[6]Hiroshi Ayama,KazuhiroUeda.Evaluation ofUsers’Adaptation byApplyingLZWCompression AlgorithmtoOperation Logs[M].Berlin:Pringer-Verlag,2004.

[7]陈昌主,陈小松.数据压缩算法研究与设计[J].电脑与信息技术,2010,18(6):23-25.

[8]高明亮,谢强.无线通信可靠性研究[J].自动化与仪器仪表,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-),男,副教授,研究方向为智能信息处理与智能控制。

猜你喜欢
压缩算法压缩率状态机
基于参数识别的轨道电路监测数据压缩算法研究
基于有限状态机的交会对接飞行任务规划方法
水密封连接器尾部接电缆的优化设计
缠绕垫片产品质量控制研究
一种基于嵌入式实时操作系统Vxworks下的数据压缩技术
多载波通信系统中CQI无损压缩法研究
分布式多视点视频编码在应急通信中的应用
PMU数据预处理及压缩算法
双口RAM读写正确性自动测试的有限状态机控制器设计方法
曲线数据压缩方法与实现