海洋科学  2023, Vol. 47 Issue (8): 68-74   PDF    
http://dx.doi.org/10.11759/hykx20230508001

文章信息

姜斌, 徐振华, 葛振营, 杨树国, 陈永华. 2023.
JIANG Bin, XU Zhen-hua, GE Zhen-ying, YANG Shu-guo, CHEN Yong-hua. 2023.
基于北斗短报文的海洋观测实时通信系统的设计与研发
Design and development of real-time communication system for ocean observation data based on Beidou short messages
海洋科学, 47(8): 68-74
Marine Sciences, 47(8): 68-74.
http://dx.doi.org/10.11759/hykx20230508001

文章历史

收稿日期:2023-05-08
修回日期:2023-06-27
基于北斗短报文的海洋观测实时通信系统的设计与研发
姜斌1,2,3, 徐振华2, 葛振营4, 杨树国3, 陈永华2     
1. 青岛科技大学机电工程学院, 山东 青岛 266061;
2. 中国科学院海洋研究所, 山东 青岛 266071;
3. 青岛科技大学数理学院, 山东 青岛 266061;
4. 青岛科技大学体育学院, 山东 青岛 266061
摘要:北斗一代和北斗二代短报文每次通信数据长度只有78个字节, 每次通信后间隔60秒或者300秒才能进行下一次通信, 远远满足不了海洋观测实时通信的需求。设计了一套基于北斗短报文的海洋观测实时通信系统, 北斗多卡机作为数据发送端, 采用哈夫曼压缩算法将观测数据压缩后分成多个数据包, 通过多个北斗卡分别发送, 岸站接收系统接收到分包的数据后, 将接收的数据包解压缩并整合成完整的观测数据。哈夫曼压缩算法将观测数据压缩50%左右, 将1组观测数据压缩后发送3次, 通过岸上3个月和海上1个月的测试, 观测数据接收成功率达到了96%以上, 验证了基于北斗短报文的海洋观测实时通信系统的可行性和实用性。
关键词Linux    海洋观测    北斗卫星    数据库    哈夫曼压缩算法    
Design and development of real-time communication system for ocean observation data based on Beidou short messages
JIANG Bin1,2,3, XU Zhen-hua2, GE Zhen-ying4, YANG Shu-guo3, CHEN Yong-hua2     
1. College of Electromechanical and Engineering, Qingdao University of Science and Technology, Qingdao 266061, China;
2. Institute of Oceanology, Chinese Academy of Sciences, Qingdao 266071, China;
3. College of Mathematics and Physics, Qingdao University of Science and Technology, Qingdao 266061, China;
4. College of Physical Education, Qingdao University of Science and Technology, Qingdao 266061, China
Abstract: First- and second-generation Beidou short messages have a data length of only 78 bytes per communication, and the interval between successive communications is 300 s, which is insufficient for the real-time communication of ocean observations. A real-time communication system for ocean observation data based on Beidou short message is designed. The obtained data is sent through Beidou multicard machine by employing the Huffman compression algorithm to compress the observation data into multiple data packets. These subcontracted data are then transmitted through multiple Beidou cards, which are received by the shore station receiving system. Further, the received data package is decompressed and integrated into complete observation data. The Huffman compression algorithm is used to compress the observation data by about 50%. Moreover, each set of observation data is compressed and sent three times. After testing for three months on shore and one month at sea, the success rate of observation data reception was more than 96%. This verifies the feasibility and practicality of the real-time communication system for ocean observation based on Beidou short messages.
Key words: Linux    ocean survey    Beidou satellite    database    Huffman compression algorithm    

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

图 1 北斗卫星通信的端到端通信 Fig. 1 End-to-end communication of Beidou satellites

目前, 海洋观测通信还是以北斗一代和北斗二代短报文为主, 但是北斗一代和北斗二代短报文通信单条短报文长度只有78个字节, 通信频率为60 s/条或者300 s/条, 显然无法满足实时海洋观测通信需求。采用北斗多卡机作为数据发送模块, 最多可以放置16张北斗卡, 每次最多发送16个短报文数据, 即每次通信数据长度最长为1 248个字节。根据海洋观测数据的特点, 采用合适的压缩算法, 可以提高北斗卫星通信数据量。北斗多卡机的功耗与单卡北斗模块相当, 因此北斗多卡机也不存在功耗过大问题[3]。北斗短报文通讯本身可靠性较高, 但没有反馈信息, 发送端无法知道接收端是否收到数据[4-5]。海洋观测通过北斗多卡机将分包观测数据发送到岸站后, 通过岸站接收系统接收分包数据, 将分拆的北斗数据重组恢复成原始的观测数据, 再将数据分析、存储和显示, 以满足海洋科学研究和海洋预警的要求。

声学多普勒流速剖面仪(Acoustic Dopler Veloci­ty Profiler, ADCP)和温盐深仪(Temperature Condu­c­tivity Depth, CTD)是最常使用的海洋调查仪器, 本文将搭载2套ADCP和4套CTD的海洋观测数据通过北斗多卡机发送回岸站, 采用哈夫曼压缩算法对观测数据进行压缩, 以降低通讯带宽, 为了保证数据接收的成功率, 每组观测数据发送3次, 观测数据接收成功率达到了96%以上, 验证了基于北斗短报文的大数据量海洋观测实时通信的可行性和实用性。

1 系统总体设计

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

图 2 系统总体设计 Fig. 2 Overall system design
1.1 电子舱设计

电子舱中的主控制器采用Linux操作系统, 可以并行完成多项任务, 任务之间的数据交互通过数据库完成, 电子舱中各个进程与传感器节点、岸站接收系统的交互流程如图 3所示。ADCP进程、CTD进程和数据发送进程并行执行。ADCP传感器是定时自动启动, 观测完多层的流速和流向后, 通过有线连接, 向主控制器发送观测数据, 因此主控制器上的ADCP进程在ADCP传感器开始工作时就一直等待ADCP, 接收到ADCP的观测数据后, 将ADCP观测数据存入数据库中, ADCP进程结束; CTD传感器需要唤醒后才能开始工作, 主控制器上的CTD进程开始后, 通过耦合连接唤醒CTD传感器开始工作, 唤醒后的CTD传感器开始采集温度、盐度和深度数据, 再通过耦合连接发送到主控制器, 主控制器上的CTD进程接收到CTD传感器的数据后, 存入数据库中, CTD进程结束; 数据发送进程开始后, 查询数据库中的数据是否有最新数据, 当CTD传感器数据和ADCP传感器新数据更新后, 将所有数据整合后压缩, 经过数据分包, 将观测分包数据通过北斗多卡机上的不同北斗卡发送到北斗卫星后, 数据发送进程结束。

图 3 实时海洋观测多任务流程图 Fig. 3 Multitask flowchart for real-time ocean observation

北斗一代和北斗二代的短报文通信每次只有78个字节的通信量[6-7]。设计了1套简单有效的数据通信格式, 在为重组观测数据提供可靠保证的前提下, 尽量多地保留有效通信数据的字节数。如图 4所示, 北斗分包数据格式由观测标记、包信息、有效数据和校验组成。观测标记由2个字节组成, 计数范围为0~65 535, 以开始布放时间为起始时间, 每增加10 min, 观测标记加1, 每次所有的观测数据采用同一个观测标记, 岸站接收系统接收到数据后, 可以根据观测标记筛选出同一次的观测数据, 并根据观测标记计算出观测时间; 包信息由1个字节组成, 由于北斗多卡机最多可以搭载16张北斗卡, 4个位即可表示完整, 因此设计包信息高4位表示1次观测数据被分成了几个包, 包信息低4位表示的是该包是第几个包; 校验由1个字节组成, 对分包数据进行CRC校验, 以保证数据传输的准确性。

图 4 实时海洋观测北斗分包数据格式 Fig. 4 Beidou subcontracting data format for real-time ocean observations
1.2 压缩算法设计

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

哈夫曼压缩算法的步骤如下:

(1) 构造哈夫曼编码表。遍历海洋观测数据, 得到每个字符出现的频次, 将出现频次最低的2个字符作为子节点, 左节点频次大于右节点频次, 构造分支节点, 同时将分支节点作为新字符, 频次作为子频数之和, 进行重新排序, 重复以上步骤直到所有字符编码完成, 对编码树进行排序, 左节点为0, 右节点为1, 直到编码树底端, 根据编码情况构造哈夫曼编码表。

(2) 转码压缩。根据构造的哈夫曼编码表将观测数据转换为0-1编码, 每8个编码进行1次分割, 作为1个字节数据写入, 最后不足8位则需要补0, 直到刚好达到8位。将哈夫曼编码表写入。

图 5是哈夫曼压缩算法的流程图, 最后压缩数据是由哈夫曼编码表和编码表组成的压缩数据。解压时, 根据哈夫曼编码表将编码表无损恢复成观测数据。

图 5 哈夫曼压缩算法流程图 Fig. 5 Flowchart of the Huffman compression algorithm
2 岸站接收系统设计及实现

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

图 6 实时海洋观测的岸站接收系统 Fig. 6 Shore station receiving system for real-time ocean observation
2.1 服务器端

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

表 1 数据库A存储格式 Tab. 1 Database A storage format
列名 数据类型 允许Null值
观测标记 int
包总数 int
包序号 int
数据 nvarchar(MAX)
已整合 bool

表 2 数据库B存储格式 Tab. 2 Database B storage format
列名 数据类型 允许Null值
观测标记 int
时间 datetime
数据 nvarchar(MAX)

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

图 7 北斗分包数据整合流程图 Fig. 7 Flowchart for the integration of Beidou subcontracting data
2.2 客户端

实时海洋观测系统的岸站接收系统的客户端从服务器的数据库B中申请到数据后, 按照解析规则, 将数据解析成有意义的参数。客户端软件根据功能划分成最新数据、数据查询和数据报表 3个功能。

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

图 8 岸站接收系统客户端的最新数据功能 Fig. 8 Latest data functions of the shore station receiving system client

图 9 岸站接收系统客户端的数据查询功能 Fig. 9 Data query function of the shore station receiving system client

图 10 岸站接收系统客户端的数据报表功能 Fig. 10 Data report function of the shore station receiving system client
3 系统测试

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

$ 250 \times 2+60 \times 4=740 \;{\rm{Bytes}}, $ (1)

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

图 11 哈夫曼压缩算法的压缩率 Fig. 11 Compression rate of the Huffman compression algorithm

表 3所示, 通过在岸上3个月的测试, 在相同数据只发送1次的情况下, 测试时长15 d, 数据的接收率为61.8%, 因此, 每次北斗接收数据的成功率为

$ P=61.8\%, $ (2)
表 3 北斗短报文接收率对比 Tab. 3 Comparison of Beidou short message reception rates
重复发送次数(次) 测试时间(d) 应接收数量(条) 实际接收数量(条) 接收率(%)
1 15 2 160 1 335 61.8
2 20 2 880 2 399 83.3
3 48 6 922 6 648 96.04

由于一般令人满意的数据接收率需要达到90%以上, 因此需要解(3)式中的n值, 求得n最小值为3, 因此, 理论上, 需要重复发送相同数据3次, 才可以达到令人满意的接收率。

$ (1-P)^n \ge 90\%, $ (3)

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

图 12 测试的流速图 Fig. 12 Flow rate chart for testing
4 结论

北斗短报文通讯没有反馈信息, 通讯频段与4G通讯频段相近, 受到周围环境的影响导致长时间的数据接收率在60%~70%左右。设计了一套基于北斗二代短报文的海洋观测实时通信系统, 北斗多卡机作为数据发送端, 观测数据接收成功率达到96%以上, 满足绝大多数观测业务的需求。

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

参考文献
[1]
孔佑迪, 门雅彬, 齐占辉, 等. 基于铱星通信的海洋环境在线监测系统[J]. 电子技术应用, 2015, 41(8): 27-29, 33.
KONG Youdi, MEN Yabin, QI Zhanhui, et al. The on-line monitoring system of marine environment based on iridium satellite communication[J]. Application of Electronic Technique, 2015, 41(8): 27-29, 33.
[2]
王春晓, 王旭, 刘长华, 等. 一种用于海洋综合观测浮标的多种通信方式集成系统[J]. 海洋科学, 2020, 44(1): 142-147.
WANG Chunxiao, WANG Xu, LIU Changhua, et al. A multi-communication system used for an integrated marine observation buoy[J]. Marine Sciences, 2020, 44(1): 142-147.
[3]
汪嘉宁, 张祥光, 王凡. 基于单北斗模块多卡数据传输方式的低功耗模组[P]. 中国专利: ZL201910421437.5, 2019-05-21.
WANG Jianing, ZHANG Xiangguang, WANG Fan. Low power module based on single Beidou module and multi card data transmission method[P]. CN Patent: ZL201910421437.5, 2019-05-21.
[4]
贾烁, 李宪鹏, 张永辉. 基于北斗卫星的海洋水文实时监测系统[J]. 仪表技术与传感器, 2018, 6: 109-117.
JIA Shuo, LI Xianpeng, ZHANG Yonghui. Real-time marine hydrological monitoring system based on beidou satellite[J]. Instrument Technique and Sensor, 2018, 6: 109-117.
[5]
张茜, 张少永, 高超, 等. 基于北斗通信的海洋多要素观测系统设计[J]. 海洋技术学报, 2019, 38(3): 28-33.
ZHANG Qian, ZHANG Shaoyong, GAO Chao, et al. Design of a marine multi-elment observation system based on beidou communication[J]. Journal of Ocean Technology, 2019, 38(3): 28-33.
[6]
贾思洋, 刘长华, 王春晓, 等. 适用于中国近海观测研究浮标的北斗/GPS双模信标系统的研制与应用[J]. 海洋科学, 2022, 46(8): 137-145.
JIA Siyang, LIU Changhua, WANG Chunxiao, et al. Research and application of the Beidou/GPS dual-mode beacon system for offshore marine observation and research buoys in China[J]. Marine Sciences, 2022, 46(8): 137-145.
[7]
ZHANG Zhiteng, LI Bofeng, GAO Yang, et al. Asynchronous and time-differenced RTK for ocean applications using the BeiDou short message service[J]. Journal of Geodesy, 2023, 97(7): 1-14.
[8]
魏鹏, 李醒飞, 杨少波等. 嵌入式数据采集压缩系统的设计[J]. 仪表技术与传感器, 2020, 7(8): 122-126.
WEI Peng, LI Xingfei, YANG Shaobo, et al. Design of embedded data acquisition and compression system[J]. Instrument Technique and Sensor, 2020, 7(8): 122-126.