单端口接收多浮标的岸站接收系统设计及实现

2020-11-04 07:22陈永华姜静波
海洋技术学报 2020年4期
关键词:服务器端浮标端口

姜 斌,陈永华,姜静波

(中国科学院海洋研究所,山东 青岛 266071)

浮标系统是一个无人的自动海洋观测点,投放在一个固定的海域,可以在海洋任何气象条件下,对气象水文参数进行长期、自动、连续、全天候的记录,目前已经发展为海洋监测技术的主要手段[1-2]。浮标岸站接收系统是整个浮标系统最后一个重要环节,气象、水文及浮标状态等资料都要通过岸站接收系统处理,由岸站负责浮标发送数据的接收、处理、显示、存储及转发,可及时了解浮标的状态信息,并使气象、水文资料得到有效地利用。

目前的浮标岸站接收系统是将数据收集、处理、存储、应用、分析、显示功能以层层级联的方式实现,若其中一个步骤出现问题,数据不会有效存储和显示,这会导致一个接收端口只能接收一种数据格式的浮标[3-6]。在布放浮标日益增多的情况下,计算机开放的端口也随之增多,这为运行岸站接收系统的服务器安全埋下了隐患。即使同一个浮标经过维护后,因为传感器等的变化,也会改变数据格式,这就导致在浮标维护后,必须修改完对应的浮标岸站接收程序后,才能布放浮标;在完成浮标布放后,如果更改浮标岸站接收系统中的数据换算方法,会导致数据库中数据前后不一致,数据处理方式不灵活。

LabVIEW 是NI 公司开发的一种基于G 语言的图形化编程语言,具有函数库丰富、图形化编程开发快捷、专业性强的特点[7-10]。本文提出了一种基于CS 架构的单端口接收多浮标的岸站接收系统,采用LabVIEW 开发,开发周期短,单端口可以接收多种数据格式的浮标数据,浮标的数据格式改变不会影响服务器端的数据接收工作,数据处理方式灵活高效。

1 浮标岸站接收系统总体设计

1.1 需求分析

浮标岸站接收系统具体需要实现的功能如下:

(1)数据接收:浮标岸站接收系统需要稳定接收来自浮标传输的数据,数据定时传输一次,数据内容包括浮标采集的水文、气象信息以及浮标的状态信息。数据接收要求稳定可靠,要有容错能力,能够满足多浮标向一个端口传输数据的要求;

(2)数据存储:浮标岸站接收系统需要将接收的浮标数据经过简单地处理后存储到数据库[11-12]中和本地服务器中,数据库中存储的格式需要满足方便按照时间和浮标号查询。

(3)数据查询:浮标岸站接收系统可以实时查询浮标的最新数据,并按照格式解析成浮标采集的水文气象信息以及浮标的状态信息实时显示,可以查询指定历史时间段内的某个参数的历史信息并曲线显示,可以在多台计算机上同时查询浮标数据。

(4)数据导出:岸站接收系统可以将指定时间段内的数据解析成浮标采集的水文气象信息以及浮标的状态信息,通过Excel 导出,以方便进行进一步的研究。

1.2 设计思路

根据浮标岸站接收系统的设计需求,采用CS架构,如图1 所示,海上的浮标数据采集系统将采集的数据传输给服务器端接收程序,服务器端接收程序将数据存储在服务器上的数据库中,客户端显示程序通过请求数据库中的数据来获取浮标的采集数据,在客户端显示程序中将请求到的数据按照格式解析成水文气象信息以及浮标的状态信息显示出来。

图1 浮标岸站接收系统设计思路

2 浮标岸站接收系统的实现

2.1 浮标岸站接收系统服务器端的实现

2.1.1 通讯格式设计 为了实现浮标岸站接收系统服务器端软件的稳定接收以及客户端软件的方便查询,需要设计浮标传输数据的通讯格式,通讯格式如图2 所示。

图2 浮标传输的数据格式

浮标岸站接收系统服务器端通常会收到干扰数据,为了准确获得浮标发送的数据,需要将数据头加上识别码,这样,浮标岸站接收系统服务器端可以准确获得浮标发送的数据段;数据长度用于指示该次数据总的数据长度;浮标号用于识别是哪个浮标发送的数据;时间是浮标发送数据时的浮标中的时间;浮标状态包括浮标所在经纬度、电池电压、锚灯状态、进水报警、门禁报警等信息;气象数据包括风速、风向、温湿压等信息;水文数据包括水下不同深度的温度、盐度等信息;校验码用于验证获得的数据是完整和准确的。

2.1.2 数据库格式设计 数据库中的格式既需要满足对不同长度数据存储的要求,又要满足方便浮标岸站接收系统客户端根据时间标号查询的要求。数据库存储格式如表1 所示。

表1 浮标数据库存储格式

发送时间为浮标岸站接收系统服务器端程序解析数据得到的数据的发送时间;接收时间为浮标岸站接收系统服务器端程序获得数据时的服务器的系统时间;长度为存储的数据的长度;标号为浮标岸站接收系统服务器端程序解析数据得到的浮标标号;数据为浮标岸站接收系统服务器端程序得到的浮标发送的原始数据。其中,浮标岸站接收系统服务器端程序需要解析的只有时间和标号两个简单信息,其余信息可以直接获得,这样增加了浮标岸站接收系统服务器端程序的稳定性,而且保留了足够多的信息。

2.1.3 服务器端的实现 浮标岸站接收系统服务器端流程图如图3 所示。浮标岸站接收系统服务器端软件安装于具有公网固定IP 地址的计算机上,浮标岸站接收系统服务器端程序可以对服务器上的某个端口进行监听,判断是否收到数据,如果未收到数据,继续监听端口,如果收到数据,对数据进行处理,查找识别码,判断是否是浮标数据。如果是浮标数据,将数据存入数据库中,如果不是浮标数据,继续监听端口。

图3 浮标岸站接收系统服务器端流程图

浮标岸站接收系统服务器端程序界面如图4所示,对服务器端单端口进行监控,监控多个浮标传输的数据,收到的数据存储到本地文件和数据库中,整个界面简洁清楚。

图4 浮标岸站接收系统服务器端程序界面

2.2 浮标岸站接收系统客户端的实现

2.2.1 客户端的模块设计 浮标岸站接收系统客户端需要满足的功能包括实时数据查询、历史数据查询及绘制曲线图以及数据导出等功能。因此,将程序按照功能划分成3 个软件模块,分别为最新数据、数据查询和数据报表,最新数据页可实时查询最新数据,并将最新数据解析成浮标状态、气象、水质等信息,可以选择不同的标号进行实时查询;数据查询页可以根据不同的参数,选定开始时间和结束时间,来查询该参数在该时间端内的变化情况并绘制成曲线;数据报表页可以选择开始时间和结束时间,导出该时间段内所有数据到Excel 中,导出到Excel 中的数据已经解析完成。浮标岸站接收系统客户端程序软件模块如图5 所示。

图5 浮标岸站接收系统客户端程序软件模块

2.2.2 最新数据模块 最新数据模块界面如图6所示。在最新数据模块中可以实时查询最新的不同标号的数据,并将数据解析成状态信息、报警信息、气象信息和水文信息,其中状态信息包括系统电压、锚灯状态、经纬度信息;报警信息包括舱门开启、移位报警和进水报警;气象信息包括平均风速、风向,最大风速、风向及发生时间,极大风速、风向及发生时间,瞬时最大风速、风向及发生时间,平均温度、湿度、气压,最大温度、湿度、气压及发生时间,最小温度、湿度、气压及发生时间;水文信息包括水文、电导率、水压、盐度、深度等信息以及不同深度下的水温。

图6 最新数据页界面

2.2.3 数据查询模块 在查询参数中选择需要查询的参数,包括电池电压、平均风速、最大风速、极大风速、瞬时最大风速、平均气温、最高气温、最低气温、平均湿度、最高湿度、最低湿度、平均气压、最高气压、最低气压、水温、电导率、水压、盐度、深度和各深度水温。其中,不同深度水温通过层数选择深度,选择需要查询的起始时间和结束时间,曲线图中会出现该参数在该时间段内的数据曲线,如图7 所示,查询的西太平洋上5 号标在2019 年1 月28 日—2019 年7 月28 日半年间的平均气压变化情况,可以看出平均气压有一个整体的变化趋势,为数据维护提供参考。

图7 数据查询页界面

2.2.4 数据报表模块 数据报表模块界面如图8所示。选择需要导出的开始时间和结束时间,在数据数量处会显示导出的数据条数,点击导出按钮后,会跳出 Excel,如图 9 所示,Excel 中会导出所有数据的原始值和解析后的数值,当导出完成后,在数据报表模块界面中,导出完成指示灯会变亮,这时,可以保存或者修改导出的Excel。

图8 数据报表页界面

图9 数据报表导出Excel

3 浮标岸站接收系统的测试结果

自2018 年8 月开始,单端口接收多浮标岸站接收系统替代之前的单端口接收单浮标岸站接收系统,应用于深海热带西太平洋观测示范分系统项目和近海垂直剖面监测系统项目中。浮标岸站接收系统通过1 个端口接收4 个深海浮标的数据和1个近海浮标的数据,其中深海浮标通过铱星通讯,近海浮标通过CDMA 通讯,目前岸站接收系统已经稳定运行13 个多月,通过铱星通讯累计接收数据5万多条,数据接收率是100%,通过CDMA 接收近海1 个浮标的数据,累计数据1 万多条,数据接收率是100%。在运行期间,近海垂直剖面监测系统共维护浮标5 次,每次维护都会增加、减少或者更改传感器,数据格式都有变化,浮标岸站接收系统在维护期间,数据接收都是100%,每次维护完毕直接可以布放,不影响浮标岸站接收系统的数据接收工作。

单端口接收多浮标的岸站接收系统与之前的单端口接收单浮标岸站接收系统对比如表2 所示。

表2 岸站接收系统对比

单端口接收单浮标岸站接收系统将接收到的浮标数据解析后存储到数据库中,每个端口接收一个浮标数据,因此5 个浮标需要在服务器上运行5个岸站软件,只能在服务器运行的岸站软件上查看浮标数据。单端口接收单浮标岸站接收系统对浮标数据进行严格解析后才存储到数据库中,因此如果通讯有问题或者维护更新设备导致接收到的浮标数据有部分出错,这条浮标数据就不会存储到数据库中,这也是单端口接收单浮标岸站接收系统的接收率无法达到100%的原因。

本文介绍的单端口接收多浮标的岸站接收系统分为服务器端软件和客户端软件。服务器端软件将接收的浮标数据做简单解析后存储到数据库中,客户端软件根据客户需要,按条件从数据库中查询数据并进行严格的解析,这样降低了服务器的负担,并且支持多客户同时查询数据库,服务器端软件接收到浮标数据后都会存储到数据库中,因此数据接收率是100%,并且维护时更新设备不影响数据接收。

4 结论

出于安全角度的考虑,目前中国科学院海洋所的服务器端口都需要进行严格审批才能对外开放,采用单端口接收多浮标的岸站接收系统可以减少开放的端口数量,增强服务器的安全性。浮标数据的解析都分布在客户端,由此降低了服务器的硬件性能要求。本文设计并实现了单端口接收多浮标的岸站接收系统,采用CS 架构,利用LabVIEW 开发完成,可以通过一个计算机端口接收多种数据格式的浮标数据,并且浮标维护不影响服务器端的数据接收。目前,单端口接收多浮标的岸站接收系统已经应用在远海浮标和近海浮标上,一个端口可以接收5 个近海和远海的浮标数据,数据接收率是100%,近海的浮标维护不影响数据接收。本系统可以应用于别的岸站接收系统,大大减少了岸站接收系统计算机的开发端口数量,增加了岸站接收系统计算机的安全性,降低了服务器的硬件要求。

猜你喜欢
服务器端浮标端口
浅谈浮标灵敏度的判断
浅谈浮标的吃铅比数值
一种有源二端口网络参数计算方法
一种浮标位置修正算法*
一种端口故障的解决方案
Linux环境下基于Socket的数据传输软件设计
多按键情况下,单片机端口不足的解决方法
提问:冬钓轻口鱼如何选择浮标?
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计