大数跨境
0
0

【学术论文】基于北斗短报文的海洋观测实时通信系统的设计与研发

【学术论文】基于北斗短报文的海洋观测实时通信系统的设计与研发 智慧海洋公众交流平台
2024-08-16
3

摘要

作者:姜 斌1.23.徐振华、葛振营、杨树国3陈永华2(1.青岛科技大学机电工程学院,山东 青岛 266061;2.中国科学院海洋研究所,山东 青岛 266071:3.青岛科技大学数理学院,山东 青岛 266061;4.青岛科技大学体育学院,山东 青岛 266061)

摘要:北斗一代和北斗二代短报文每次通信数据长度只有 78 个字节,每次通信后间隔 60 秒或者 300秒才能进行下一次通信,远远满足不了海洋观测实时通信的需求。设计了一套基于北斗短报文的海洋观测实时通信系统,北斗多卡机作为数据发送端,采用哈夫曼压缩算法将观测数据压缩后分成多个数据包,通过多个北斗卡分别发送,岸站接收系统接收到分包的数据后,将接收的数据包解压缩并整合成完整的观测数据。哈夫曼压缩算法将观测数据压缩 50%左右,将1组观测数据压缩后发送了次,通过岸上3个月和海上1个月的测试,观测数据接收成功率达到了 96%以上,验证了基于北斗短报文的海洋观测实时通信系统的可行性和实用性。

关键词:Linux;海洋观测;北斗卫星,数据库,哈夫曼压缩算法



实时海洋观测需要将每次采集的数据实时传回到岸站接收系统,以帮助完成海洋科学研究和海洋预警等工作。目前,海洋观测的实时回传主要依靠通信卫星完成,常见的通信卫星包括铱星、天通和北斗卫星等中。相比于铱星、天通卫星,北斗通信卫星不仅终端设备便宜,而且没有通信费,做到了物美价廉。而且北斗卫星真正做到了端到端的通信,具有很好的保密性!,如图1所示,海洋观测数据通过北斗卫星通信模块将观测数据发送到北斗卫星,北斗卫星将数据转发到岸站接收系统的北斗卫星通信模块,整个过程没有涉及地球站等地面通信设备,保证了数据安全。


目前,海洋观测通信还是以北斗一代和北斗二代短报文为主,但是北斗一代和北斗二代短报文通信单条短报文长度只有 78 个字节,通信频率为 60 s/条或者 300 s/条,显然无法满足实时海洋观测通信需求。采用北斗多卡机作为数据发送模块,最多可以放置16 张北斗卡,每次最多发送 16 个短报文数据,即每次通信数据长度最长为1248个字节。根据海洋观测数据的特点,采用合适的压缩算法,可以提高北斗卫星通信数据量。北斗多卡机的功耗与单卡北斗模块相当,因此北斗多卡机也不存在功耗过大问题。北斗短报文通讯本身可靠性较高,但没有反馈信息,发送端无法知道接收端是否收到数据!-5。海洋观测通过北斗多卡机将分包观测数据发送到岸站后,通过岸站接收系统接收分包数据,将分拆的北斗数据重组恢复成原始的观测数据,再将数据分析、存储和显示,以满足海洋科学研究和海洋预警的要求。
声学多普勒流速剖面仪(Acoustic Dopler Veloci-ty Profiler, ADCP)和温盐深仪(Temperature Conduc-tivity Depth,CTD)是最常使用的海洋调查仪器,本文将搭载 2 套 ADCP 和 4 套 CTD 的海洋观测数据通过北斗多卡机发送回岸站,采用哈夫曼压缩算法对观测数据进行压缩,以降低通讯带宽,为了保证数据接收的成功率,每组观测数据发送3次,观测数据接收成功率达到了 96%以上,验证了基于北斗短报文的大数据量海洋观测实时通信的可行性和实用性。






1、系统总体设计


基于北斗短报文的海洋观测实时通信系统的总体设计如图2所示,系统由海洋观测设备、北斗卫星和岸基3部分组成,海洋观测设备由电子舱、连接缆和传感器节点3部分组成,在电子舱中,电源为主控制器和北斗多卡机提供能源,主控制器通过连接缆从传感器获得观测数据,对观测数据处理分包后通过北斗多卡机将观测分包数据发送到北斗卫星上北斗卫星再将观测分包数据发送到岸基的岸站接收系统上。其中,传感器节点上的 ADCP 通过有线连接与实时海洋观测电子舱连接,传感器节点上的 CTD通过耦合连接与电子舱连接。

1.1 电子舱设计

电子舱中的主控制器采用 Linux 操作系统, 可以并行完成多项任务,任务之间的数据交互通过数据库完成,电子舱中各个进程与传感器节点、岸站接收系统的交互流程如图3所示。ADCP 进程、CTD进程和数据发送进程并行执行。ADCP传感器是定时自动启动,观测完多层的流速和流向后,通过有线连接,向主控制器发送观测数据,因此主控制器上的 ADCP 进程在 ADCP 传感器开始工作时就一直等待 ADCP,接收到 ADCP 的观测数据后,将 ADCP 观测数据存人数据库中,ADCP 进程结束:CTD 传感器需要唤醒后才能开始工作,主控制器上的 CTD 进程开始后,通过耦合连接唤醒 CTD 传感器开始工作唤醒后的 CTD 传感器开始采集温度、盐度和深度数据,再通过耦合连接发送到主控制器,主控制器上的 CTD进程接收到 CTD传感器的数据后,存人数据库中,CTD 进程结束:数据发送进程开始后,查询数据库中的数据是否有最新数据,当 CTD 传感器数据和 ADCP 传感器新数据更新后,将所有数据整合后压缩,经过数据分包,将观测分包数据通过北斗多卡机上的不同北斗卡发送到北斗卫星后,数据发送进程结束。
北斗一代和北斗二代的短报文通信每次只有78个字节的通信量。设计了1套简单有效的数据通信格式,在为重组观测数据提供可靠保证的前提下尽量多地保留有效通信数据的字节数。如图4所示北斗分包数据格式由观测标记、包信息、有效数据和校验组成。观测标记由2个字节组成,计数范围为0~65 535,以开始布放时间为起始时间,每增加10 min,观测标记加 1,每次所有的观测数据采用同一个观测标记,岸站接收系统接收到数据后,可以根据观测标记筛选出同一次的观测数据,并根据观测标记计算出观测时间;包信息由1个字节组成,由于北斗多卡机最多可以搭载16张北斗卡,4个位即可表示完整,因此设计包信息高4位表示1次观测数据被分成了几个包,包信息低4位表示的是该包是第几个包:校验由1个字节组成,对分包数据进行CRC校验,以保证数据传输的准确性。

1.2 压缩算法设计

哈夫曼压缩算法对出现频率高的字符可以用较短的编码表示,实现压缩效率最大化。由于海洋观测系统的数据经常出现的字符高频的比较多,哈夫曼压缩是比较适合的算法,用于降低海洋观测的数据量。

哈夫曼压缩算法的步骤如下:
(1)构造哈夫曼编码表。遍历海洋观测数据,得到每个字符出现的频次,将出现频次最低的2个字符作为子节点,左节点频次大于右节点频次,构造分支节点,同时将分支节点作为新字符,频次作为子频数之和,进行重新排序,重复以上步骤直到所有字符编码完成,对编码树进行排序,左节点为0右节点为 1,直到编码树底端,根据编码情况构造哈夫曼编码表。
(2)转码压缩。根据构造的哈夫曼编码表将观测数据转换为 0-1编码,每8个编码进行1次分割,作为1个字节数据写人,最后不足8位则需要补0,直到刚好达到8位。将哈夫曼编码表写人。图5是哈夫曼压缩算法的流程图,最后压缩数据是由哈夫曼编码表和编码表组成的压缩数据。解压时,根据哈夫曼编码表将编码表无损恢复成观测数据。



2、岸站接收系统设计及实现


如图6所示,岸站接收系统通过北斗终端接收到分包的数据后,将接收的数据包解压整合成完整的观测数据,补位丢失的数据包、删除几余的数据包和重新排序数据包,并将数据分析、存储和显示。岸站接收系统采用CS架构,服务器端负责功能接收数据、整合数据和数据入库,客户端负责从数据库中获得数据,对数据分析、存储和显示。

2.1 服务器端

北斗终端接收到北斗卫星传来的数据后,将数据发送到服务器上,服务器上的服务器端软件首先将数据接收到数据库A中,数据库A的存储格式如表1所示。服务器上的服务器端软件定时读取数据库A中的数据进行整合,将恢复的观测数据存储到数据库 B中,数据库B的存储格式如表2所示。

北斗分包数据整合的流程图如图7所示。开始后首先查找数据库 A 中“已整合”标记为 False 的数据:查找到后,在数据库B中查找该数据的观测标记是否已经存在,如果存在,根据该数据的包序号将数据库B 中相同观测标记的数据进行更新,如果不存在,根据观测标记,在数据库 B中插人该数据,时间是根据观测标记计算得到。在数据库 A 中将该数据“已整合”标记为 True, 判断数据库 A 中“已整合”标记是否全部为 True, 如果不是, 继续查找数据库 A 中数据, 如果数据库 A 中数据全部已经整合, 北斗分包数据整合结束。


2.2 客户端

实时海洋观测系统的岸站接收系统的客户端从服务器的数据库 B中申请到数据后,按照解析规则将数据解析成有意义的参数。客户端软件根据功能划分成最新数据、数据查询和数据报表3个功能。岸站接收系统客户端软件的最新数据功能如图8 所示,将申请的最新数据解析成温度、盐度、深度和各层的流速、流向数据,最新数据实时更新,以帮助实时了解海洋的观测情况。岸站接收系统客户端软件的数据查询功能如图9所示,选择任一设备的任一参数(图 9中选择的是上海流的流速,即 ADCP朝向海面测量的各层海流流速),再选择任一时间段可以显示该参数在该时间段内的曲线变化情况。岸站接收系统客户端软件的数据报表功能如图10所示选择任一设备(图 10 中选择的是上海流,即 ADCP朝向海面测量的各层海流流速),再选择任一时间段点击导出按钮,即可以导出该时间段内该设备的所有数据,并保存成文件,为进一步的分析提供帮助。

声学多普勒流速剖面仪(ADCP)和温盐深仪(CTD)是最常使用的海洋调查仪器,本文将搭载2 套ADCP 和 4套 CTD 的实时海洋观测系统进行测试。ADCP 观测流速和流向,设置观测层数是 20 层,分为向上测量和向下测量,1套 ADCP 的数据量最多是250个字节,1套CTD 的数据量最多是60个字节,因此,2套 ADCP 和4套 CTD 的总数据量最多是

250x2+60x4=740 Bytes,(1)

每张北斗短报文卡每次发送的有效数据量是74个字节因此,北斗多卡机理论上需要使用 11 张北斗短报文卡才可以满足数据传输需求。由于海洋观测数据中不同的观测仪器采集频率是不同的,在解析数据的时候为了保持解析规则的统一性,通常未观测的数据补0以保证后面数据在正确的解析位置。使用哈夫曼压缩算法,补0后的数据不会增加数据长度,减小了通讯数据长度。如图11所示是使用哈夫曼压缩算法实际测试的23 d左右的压缩率,测试过程中4台观测仪器是1次儿的观测频率,1 台仪器是1次/2h观测频率,1台仪器是12h观测1次,可以明显看到每12 h,压缩率会降低到40%以下,每隔1个小时压缩率会从 54%左右降低到48%左右,这是由于未观测的仪器在数据位补 0.使用哈夫曼压缩算法压缩率增加。因此,实际测试的过程中4~6 张北斗卡就可以满足测试需求。
如表3所示,通过在岸上3个月的测试,在相同数据只发送1次的情况下,测试时长 15 d,数据的接收率为 61.8%,因此,每次北斗接收数据的成功率为
P=61.8%,(2)
由于一般令人满意的数据接收率需要达到 90%以上因此需要解(3)式中的 n值,求得 n最小值为 3,因此理论上,需要重复发送相同数据3次,才可以达到令人满意的接收率。

这里, 测试了相同数据重复发送 2 次和 3 次的情况。相同数据发送 2 次的情况下, 测试时长 20 d, 数据的接收率为 83.3%, 相同数据发送 3 次的情况下, 测试时长 48 d, 数据的接收率为 96.04%。可以看出, 基本每次北斗数据的接收都可以作为 1 个独立的概率事件。因此, 在相同数据发送 3 次时, 可以达到令人满意的接收率。图 12 是海上测试的某一层的流速图, 一共收到 694 条数据, 应该收到 720 条数据, 数据接收率为 96.4%, 与岸上测试结果基本一致。

4、结论

北斗短报文通讯没有反馈信息,通讯频段与 4G通讯频段相近,受到周围环境的影响导致长时间的数据接收率在 60%~70%左右。设计了一套基于北斗二代短报文的海洋观测实时通信系统,北斗多卡机作为数据发送端,观测数据接收成功率达到96%以上,满足绝大多数观测业务的需求。基于北斗短报文的海洋观测实时通信系统通过电子舱中的主控制器将观测数据经过哈夫曼压缩算法压缩后,分包成适合北斗短报文发送的长度,利用北斗多卡机将观测数据发送到北斗卫星,北斗卫星再发送到岸站接收系统的北斗终端上。岸站接收系统采用CS架构,服务器端软件将北斗终端接收的北斗短报文数据解压缩后,重新整合成观测数据客户端软件从服务器的数据库申请数据,提供数据解析、存储和显示功能,为进一步海洋科学分析和海洋预警提供帮助。经过实际测试,哈夫曼压缩算法对海洋观测数据的压缩率在50%左右,可以有效解决由于采样频率不一致导致的补0数据占通讯带宽的问题。由于北斗卫星属于高轨卫星,有一定的掉包率根据理论分析和实际测试,数据重复发送3次基本可以满足海洋数据的接收需求,数据接收成功率达到96%以上。本文提供了1套具有实用性的基于北斗短报文的海洋观测的实时通信方案。

声明:本公众号相关内容均来自主流媒体及公众号,非商业用途,并不意味着赞同其观点或证实其内容的真实性。版权归原作者所有,如有发现侵犯您的权益,请后台联系编辑,我们会尽快删除相关侵权内容。

【声明】内容源于网络
0
0
智慧海洋公众交流平台
我们旨在给对智慧海洋感兴趣的朋友提供一个相互交流学习的平台!这里汇聚了来自海洋领域的顶级专家、计算机通信高手、各大著名研究机构学者以及奋斗在海洋产业化一线的管理、研发、销售人才……欢迎大家随时随意交流,共同促进智慧海洋事业的快速发展!
内容 928
粉丝 0
智慧海洋公众交流平台 我们旨在给对智慧海洋感兴趣的朋友提供一个相互交流学习的平台!这里汇聚了来自海洋领域的顶级专家、计算机通信高手、各大著名研究机构学者以及奋斗在海洋产业化一线的管理、研发、销售人才……欢迎大家随时随意交流,共同促进智慧海洋事业的快速发展!
总阅读944
粉丝0
内容928