海洋科学  2021, Vol. 45 Issue (7): 95-102   PDF    
http://dx.doi.org/10.11759/hykx20201106001

文章信息

姜斌, 厉运周, 陈永华. 2021.
JIANG Bin, LI Yun-zhou, CHEN Yong-hua. 2021.
基于Linux的气象水文浮标采集系统设计及实现
Design and implementation of a meteorological and hydrological buoy acquisition system based on Linux
海洋科学, 45(7): 95-102
Marina Sciences, 45(7): 95-102.
http://dx.doi.org/10.11759/hykx20201106001

文章历史

收稿日期:2020-11-06
修回日期:2021-02-10
基于Linux的气象水文浮标采集系统设计及实现
姜斌1, 厉运周2, 陈永华1     
1. 中国科学院海洋研究所, 山东 青岛 266071;
2. 山东省科学院 海洋仪器仪表研究所, 山东 青岛 266061
摘要:为了获取海洋连续稳定的气象和水文数据,作者设计了基于Linux的气象水文浮标采集系统,多线程同时测量海面的气象参数(温度、湿度、气压和风速、风向)和海下的水文参数(不同深度的水温和盐度),监控浮标的电压、漏水和开舱状态,测量和监控原始数据自动备份到系统的数据库,通过CDMA/GPRS或卫星与岸站接收系统通信,实现采集数据实时回传、自动备份和数据补发功能。目前已经在近海和远海各布放2套,气象数据和水文数据采集与接收正常。实验结果表明,该方案解决了近海和远海的海洋气象数据和水文数据的同时采集与传输,具有高度的可扩展性,获取的海洋气象和水文数据连续稳定可靠。
关键词Linux    气象水文浮标    多线程    数据库    铱星通信    
Design and implementation of a meteorological and hydrological buoy acquisition system based on Linux
JIANG Bin1, LI Yun-zhou2, CHEN Yong-hua1     
1. Institute of Oceanology, Chinese Academy of Sciences, Qingdao 266071, China;
2. Institute of Oceanographic Instrumentation, Shandong Academy of Sciences, Qingdao 266061, China
Abstract: To obtain the continuous and stable meteorological and hydrological data of the ocean, a meteorological and hydrological buoy acquisition system based on Linux is designed. The meteorological parameters (temperature, humidity, air pressure, wind speed, and wind direction) of the sea surface and the underwater hydrological parameters (water temperature and salinity at different depths) are measured simultaneously through multithreading. The voltage, water leakage, and cabin opening state of the buoy are monitored, and the original data are measured and monitored. An automatic backup of the system database is performed, and communication is ensured with the shore station receiving system through CDMA/GPRS or satellite to realize the functions of real-time data collection, automatic backup, and data reissue. At present, two sets of meteorological and hydrological data have been distributed in offshore and open sea, respectively; the collection and reception of meteorological and hydrological data are normal. Experimental results show that the scheme solves the problem of simultaneous collection and transmission of meteorological and hydrological data in the offshore and open seas. The scheme also has high scalability. Furthermore, the obtained meteorological and hydrological data are continuous, stable, and reliable.
Key words: Linux    meteorological and hydrological buoy    multithreading    database    iridium communication    

随着海洋科学技术的不断发展, 气象水文浮标成了海洋探索中不可缺少的一部分[1]。原有的海洋监测需要人工辅助, 监测范围和时长受限较多。气象水文浮标使用了传感器、控制、电源管理、通信等多方面技术, 是一个包含广泛的综合性应用[2-4]。通过自动化技术, 使气象水文浮标的探测变得简单, 通过无线通信系统与后台通信服务器相连, 实现数据的自动采集、标识和传输, 无需人工值守就能全天候、更广范围地了解到海洋气象和水文要素。气象水文浮标的应用, 推动了海洋科学技术的发展。基于单片机的浮标采集系统, 扩展的端口有限, 部分单片机未使用操作系统, 无法并发采集气象水文数据[5]。为了同时获取更多种类的气象、水文连续稳定的观测数据, 作者设计并实现了基于Linux的气象水文浮标采集系统。

1 总体设计方案

基于Linux的气象水文浮标采集系统搭载1个温湿压风传感器模块、1个GPS定位模块、1套耦合温盐传感器模块和1套无线通信模块, 其中, 温湿压风传感器模块用来采集气象数据, 温度、湿度、气压、风速和风向参数, GPS定位模块用来采集浮标定位, 耦合温盐传感器用来采集水文数据, 不同深度的水温和盐度, 无线通信模块用来与岸站接收系统通信, 将采集处理后的数据回传。

基于Linux的气象水文浮标采集系统需要实时监测电池电压、浮标是否进水以及浮标舱门是否被打开这些状态信息, 并将这些信息回传, 以方便实时了解浮标目前的状态。

基于Linux的气象水文浮标采集系统采用嵌入式Linux操作系统, Qt作为软件开发平台, 传感器的数据采集是多线程进行, 传感器之间工作互不影响。基于Linux的气象水文浮标采集系统分工作状态和休眠状态, 根据预先设定, 实时时钟唤醒系统进入工作状态, 进行各传感器的数据采集工作和数据整理、回传, 工作结束后, 程序通知系统进入休眠状态。

2 系统硬件设计

基于Linux的气象水文浮标采集系统的硬件结构可以划分为核心控制模块、接口扩展模块及传感器模块, 工作功率不超过3W, 休眠时功率几乎为0。如图 1所示。

图 1 基于Linux的气象水文浮标采集系统硬件结构图 Fig. 1 Hardware structure diagram of the meteorological and hydrological buoy acquisition system based on Linux

核心控制模块的接口包括1个USB接口、1个I2C接口和20个GPIO口; 接口扩展模块将核心控制模块的1个USB接口扩展成4个数字串口, 分别用来连接温湿压风传感器、耦合温盐传感器、GPS定位模块和无线通信模块, 将1个I2C接口扩展成4路模拟信号输入, 用来监测电池电压、进水报警和开舱报警; GPIO口控制继电器, 为温湿压风传感器、耦合温盐传感器、GPS定位模块和无线通信模块通电或者断电。

2.1 核心控制模块

核心控制模块采用基于ARM11的主频1 GHz、内存521 MB的Broadcom BCM2835作为主芯片, 设计引出20个的GPIO口、1个USB口和1个I2C口。GPIO口用来控制传感器的上电和断电, USB口可用来扩展数字信号, I2C用来扩展模拟信号。USB口的传输速率为12 Mbps, 扩展成串口后, 串口最高传输速率为115 200 bps, 所以USB口最少可以扩展成109个串口。

2.2 接口扩展模块

接口扩展模块主要是将核心控制模块的USB口扩展成多个数字串口和将I2C口扩展成多个模拟接口。首先将USB口通过USB Hub扩展成多个USB口, 扩展出的USB口平分传输速率, USB Hub芯片选用FE1.1S, 可以将1个USB口扩展成4个USB口, USB转串口芯片选用FT232R, 如果还需要扩展更多的数字接口, 可以设计更多的USB Hub和串口转换芯片, 可以扩展109个数字串口。I2C接口的模数转换芯片选用PCF8591T, 8位的转换精度可以满足报警两种状态的需要, 4路模拟量输入完全可以满足电池电压、开舱报警和进水报警。

2.3 传感器模块

传感器模块包括温湿压风传感器、耦合温盐传感器、GPS定位模块和无线通信模块, 都是通过数字串口连接。温湿压风传感器采用的是Young公司的超声波温湿压风传感器。

耦合温盐传感器采用Sea Bird公司的耦合温盐传感器。感应耦合数据传输系统利用塑包引导钢缆和周围海水形成闭环。将收发耦合磁环分置主浮体下端和剖面测量平台上, 将塑包钢缆从耦合磁环中心传入, 完成感应耦合通讯与数据传输[6]。这种传输方式的优点是结构简单、成本低; 不存在接头和导线, 可靠性高; 不受接头的限制, 传感器的部署位置可以更加灵活。

无线通信模块在近海浮标使用DTU(Data Transfer Unit, 无线通信网络GPRS/CDMA进行传送的无线终端设备)模块, 远海浮标使用铱星模块。DTU模块通信费用低, 只能在陆地或者近海的地方使用[7]; 铱星模块通信费用高, 可以在远海的地方使用。

3 系统软件设计

气象水文浮标系统的软件设计主要包括采集端的程序和岸站接收中心软件的设计。采集端程序功能包括温湿压风传感器模块的数据采集及处理、耦合温盐传感器模块的数据采集及处理、GPS模块的地理坐标参数采集和将所有数据整合处理发送回岸站接收系统; 岸站接收中心软件功能主要是接收、解析、显示和存储采集端的数据。

3.1 采集端程序设计

采集端软件采用Qt作为软件开发平台, 与数据库结合自动备份, 多线程运行满足各传感器同时采集数据, 设计流程图如图 2所示。

图 2 采集系统软件流程图 Fig. 2 Software flow chart of the acquisition system

采集端由实时时钟唤醒进入工作状态, 首先进行Linux系统的初始化, 通过GPIO口控制继电器, 为温湿压风传感器模块、GPS定位模块、水下的耦合温盐传感器模块和无线通信模块分别上电, 同时通过温湿压风传感器模块采集温度、湿度、气压和风速、风向等气象数据并将采集数据插入对应数据库, 通过耦合温盐传感器采集不同深度的水温、盐度等水文数据并将采集数据插入对应数据库, 通过GPS定位模块采集定位数据并将采集数据插入对应数据库, 按照要求采集完数据后, 通过GPIO口控制继电器, 分别关闭对应的温湿压风传感器模块、GPS定位模块和水下的耦合温盐传感器模块, 将采集的报警数据插入对应数据库。当需要采集的数据全部入库后, 按照要求整合处理采集的所有的数据并压缩, 制作成本次采集需要回传的数据, 同时将数据库中需要补发的数据移动到内存中, 加上本次需要回传的数据, 一共N条数据需要发送, 对每一条数据尝试发送, 发送成功的数据从内存中删除, 没有发送成功的数据再存入补发数据库中, 当所有需要补发的数据全部尝试发送一次之后, 关闭无线通信模块, 本次的采集端的工作结束, 进入休眠状态。

3.2 无线通信模块的选择及通信流程

气象水文浮标根据离岸的远近分为近海浮标和远海浮标, 考虑到通信质量、通信成本等因素, 近海浮标大多选用GPRS或者CDMA两种通信方式, 远海浮标通常选用卫星通讯作为通信方式。为了兼顾近海浮标和远海浮标, 基于Linux的气象水文浮标采集系统的通信端口通过一个标志位可以切换DTU (Data Transfer Unit, 无线通信网络GPRS/CDMA进行传送的无线终端设备)和铱星模块。

近海浮标采用GPRS或者CDMA作为通信方式, 通信流程如图 3所示。发送数据时, 每条数据发送后等待最多3 s, 接收到岸站接收系统回复后即为本条数据发送成功, 如果没有收到回复, 将该条数据插入数据库, 并继续发送下一条数据。

图 3 近海浮标通信流程图 Fig. 3 Communication flow chart of the offshore buoy

远海浮标采用铱星通讯作为通信方式, 通信流程如图 4所示。首先发送AT指令, 如果铱星模块返回OK, 再发送AT+CSQ指令来获得当前通讯的信号质量, 如果发送这两条指令没有返回OK, 重新发送该指令, 如果没有信号, 则发送失败后结束发送, 这两条命令在铱星模块初始化时发送, 以后发送每条数据不必再次发送这两条命令; 当有信号时, 发送AT+SBDD2指令来清空发送缓存, 当返回OK后, 发送AT+SBDWB= buff.size指令来指定发送数据的大小, 其中buff.size是需要发送的数据大小, 如果返回READY, 发送需要发送的数据, 将发送数据写入铱星模块的发送缓冲区, 以上指令发送后如果返回不正确或者没有返回, 都需要重新发送AT+SBDD2指令, 将发送数据写入铱星模块的发送缓冲区后, 铱星模块如果返回0, 发送AT+SBDIX指令, 如果返回的status < 3, 则表示发送成功, 如果没有返回或者status < 3错误, 则发送失败。

图 4 远海浮标通信流程图 Fig. 4 Communication flow chart of the open sea buoy
3.3 岸站接收系统的设计及实现

岸站接收系统选用LabVIEW作为软件开发平台, 采用CS架构, LabVIEW提供了方便的界面设计工具, CS架构将数据接收存储和数据解析分离开, 数据的接收存储在服务器端完成, 数据解析在客户端完成, 保证数据接收的稳定性及数据解析的灵活性。

岸站接收系统的服务器端程序流程图如图 5所示。服务器端程序监听端口, 当有浮标采集器连接端口后, 等待接收数据, 当接收到数据后, 将数据存储到数据库中, 检测连接是否断开, 如果没有断开继续等待接收数据, 如果连接断开, 继续监听端口, 在有一个连接接入端口后, 不影响其他浮标的采集器接入端口, 是一个并行的过程, 服务器端程序简单高效, 以保证每条数据都能存储下来。

图 5 岸站接收系统服务器端程序流程图 Fig. 5 Flow chart of the server shore station receiving system

岸站接收系统的客户端程序功能模块组成图如图 6所示。登录界面输入正确的用户名和密码后进入主界面, 主界面由3个页组成, 最新数据、数据查询和数据报表。在最新数据中会实时更新数据库中最新的数据并按照解析格式解析成气象参数、水文参数和报警信息, 也可以在最新数据中根据时间查找某个时间之前的最新数据; 数据查询是选择需要查询的参数后, 选择起始时间和结束时间, 可以得到该参数在这个时间段内的变化曲线; 数据报表是选择起始时间和结束时间, 会将该时间段内的数据解析完成后导出到Excel中, 以便进行进一步的科学研究。岸站接收系统的客户端程序的界面如图 7所示。

图 6 岸站接收系统客户端程序功能框图 Fig. 6 Functional block diagram of the client shore station receiving system

图 7 岸站接收系统客户端程序界面 Fig. 7 Interface of the client shore station receiving system
4 实验测试

基于Linux的气象水文浮标如图 8表 1所示, 近海在威海和烟台各布放一套, 远海在西太平洋赤道附近布放2套。威海近海浮标已经布放半年, 维护过1次, 烟台近海浮标和远海浮标布放3个多月, 目前从岸站接收系统中查询数据回传正常, 数据采集和浮标状态正常。近海浮标采用CDMA通信, 远海浮标采用铱星通信。

图 8 基于Linux的气象水文浮标 Fig. 8 Meteorological and hydrological buoy based on Linux

表 1 接收数据准点率 Tab. 1 On-time rate of received data
浮标号 所在地 通信方式 接收数据准点率(%)
近海1号 烟台 CDMA 83.7
近海2号 威海 CDMA 98.5
远海1号 西太平洋赤道附近 铱星 97.3
远海2号 西太平洋赤道附近 铱星 96.8
4.1 定时数据采集测试

烟台近海1号浮标由于距离陆地较远, 通信信号不是很好, 因此接收数据准点率较差, 原因包括发送数据慢和补发数据, 其他浮标通信信号比较好, 都是因为补发数据造成的接收数据不准时。由于每次采集开始时间都是确定的, 数据准时回传, 说明数据采集的时间是一定的。相比目前主要采用的串行数据采集, 效率更高, 可扩展的传感器更多。

4.2 数据自动备份测试

浮标每次回传的数据都是一段时间采集后的特征值, 比如是每个时间段的平均值、最大值和最小值, 如果回传传感器上每一个采集数据, 数据量太大, 通信费用比较高, 因此采集端需要将每个传感器采集的数据自动备份, 当浮标回收时, 可以通过备份的数据还原所有的采集过程, 为进一步科学研究提供数据支持。

目前, 只有威海近海2号浮标维护过, 从浮标的数据库中取出的数据经过重新计算, 与岸站接收系统接收到的数据是一致的, 证明了回传数据的正确性。

4.3 数据补发测试

由于海上的信号不稳定, 不能保证岸站接收系统能接收所有数据, 因此, 为了保证数据的连续性, 需要将每次没有发送成功的数据, 在下次信号好的时候, 可以一起补发到岸站接收系统。各个浮标的数据补发率如表 2所示, 烟台近海1号浮标由于距离陆地较远, 通信信号不是很好, 因此补发率较高。

表 2 接收数据补发率 Tab. 2 Reissue rate of received data
浮标号 所在地 通信方式 数据补发率(%)
近海1号 烟台 CDMA 15.2
近海2号 威海 CDMA 1.5
远海1号 西太平洋赤道附近 铱星 2.7
远海2号 西太平洋赤道附近 铱星 3.2
5 总结

文章详细阐述了基于Linux的气象水文浮标数据采集系统的设计及实现, 多线程同时采集气象数据、水文数据和浮标状态信息, 相比无操作系统下串行采集传感器数据, 采集效率更高, 工作功率比较低; 可扩展性强, 可以扩展到109个传感器同时采集数据, 内置数据库, 可以将各个传感器每次的采集数据自动备份, 保证了回收数据正确性和为进一步的科学研究提供数据支持; 实现了数据补发功能, 由于海上信号不稳定, 数据补发可以将由于信号不好时的数据在信号好的时候再次发送, 保证了岸站接收系统接收采集数据的连续性。近海和远海各2套浮标已经运行数月, 岸站接收系统接收的浮标数据都是正常连续的, 威海近海2号浮标的自容数据与回传数据一致, 说明基于Linux的气象水文浮标数据采集系统能同时获取气象、水文的连续稳定的观测数据, 并且回传数据是准确可靠的。设计还有许多不足之处, 未来的工作是改善和改进, 主要有以下几点:

(1) 扩展更多的数字接口, 来满足浮标搭载更多的传感器;

(2) 实现远程控制的功能, 通过岸站接收系统控制气象水文浮标数据采集系统的采集方式;

(3) 除了目前已经应用的太阳能供电, 探索更多的供电方式, 以满足更多传感器供电需求;

(4) 利用Linux的优势, 将人工智能应用到气象水文浮标数据采集系统中, 系统可以根据已经采集的数据分析后面的采集方式。

参考文献
[1]
朱光文. 海洋监测技术的国内外现状及发展趋势[J]. 气象水文海洋仪器, 1997, 14(2): 1-14.
ZHU Guangwen. Current situation and development trend of marine monitoring technology at home and abroad[J]. Meteorological, Hydrological and Marine Instruments, 1997, 14(2): 1-14.
[2]
WANG J, WANG Z, WANG Y, et al. Current situation and trend of marine data buoy and monitoring network technology of China[J]. Acta Oceanologica Sinica, 2016, 35(2): 1-10. DOI:10.1007/s13131-016-0815-z
[3]
赵聪蛟, 周燕. 国内气象水文浮标监测系统研究概况[J]. 海洋开发与管理, 2013, 30(11): 13-18.
ZHAO Congjiao, ZHOU Yan. A survey of research on marine buoy monitoring system in China[J]. Ocean Development and Management, 2013, 30(11): 13-18.
[4]
孔佑迪, 门雅彬, 齐占辉, 等. 基于铱星通信的海洋环境在线监测系统[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.
[5]
王柏林, 王皖东, 刘云平. 基于STM32的海洋气象浮标采集系统设计及实现[J]. 气象水文海洋仪器, 2019, 6(2): 85-89.
WANG Bailin, WANG Wandong, LIU Yunping. Design and implementation of marine weather buoy acquisition system based on STM32[J]. Meteorological, Hydrological and Marine Instruments, 2019, 6(2): 85-89.
[6]
刘庆奎. 深海海洋要素垂直剖面实时测量系统设计[D]. 青岛: 青岛科技大学, 2017.
LIU Qingkui. Design of a real-time vertical profile measurement system for deep ocean elements[D]. Qingdao: Qingdao University of Science & Technology, 2017.
[7]
王春晓, 王旭, 刘长华, 等. 一种用于海洋综合观测浮标的多种通信方式集成系统[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.