气象自动云能天系统设计与开发
2018-08-08唐建中张红英
唐建中,张红英
(1.民航宁夏空管分局气象台宁夏银川750009;2.宁夏大气探测保障中心宁夏银川750002)
民航自动气象观测系统是民航气象探测最重要的手段之一,承担着民航气象大部分的气象要素的探测,为航空气象业务提供有力的气象资料支持。但民航自动气象观测系统在云、主导能见度和天气现象观测方面与人工实际观测存在一定的差距,其云的探测只有跑道两端两个点CL31探测的云底高度,大气透射仪LT31主要探测跑道南、北和中间三点的光学视程,依据3个点探测的光学视程而计算出来的主导能见度不能完全反映本机场的主导能见度,而FD12P所探测到的天气现象远不如人工观测准确[1]。同时民航气象部门所使用的民航气象观测测报系统基本都是非自动观测系统所带的英文编发报系统,造成现有的气象报文不能在民航自动气象观测系统终端上显示。基于以上原因,为民航自动气象观测系统增加人工观测数据部分和实况报文显示,可以达到完善民航自动气象观测系统的目的,更好地服务民航空中交通管制业务和气象业务的实际工作。
1 系统总体设计
1.1 系统总体功能设计和要求
作为民航自动气象观测系统在人工观测气象数据的重要补充部分,气象自动云能天系统核心的设计目的是将人工观测的云、主导能见度、天气现象及最近时段气象报文数据从气象观测部门传递至民航空中交通管制部门、气象业务部门及其它业务部门。利用民航气象观测测报系统提供气象数据服务功能,自动智能采集其系统上有人工观测的云、主导能见度、天气现象及最近时段气象报文数据,达到工作全自动化。气象自动云能天系统由3部分组成,即通信子系统、服务子系统和客户端子系统[2],如图1所示。
图1 气象自动云能天系统架构图
1.2 通信子系统功能设计
通信子系统由7个功能模块组成,主要功能是通过网络连接民航气象观测测报系统,自动获取云、主导能见度、天气象现象和最近时段气象报文等气象数据。通过串行异步通信口将气象数据发送至服务子系统,实现气象数据传递的同时也保障民航自动气象观测系统的网络安全与独立。监控与民航气象观测测报系统的网络连接状态。在应用界面上显示相应的气象信息。对接收的气象数据进行完整性检查、拆分和重新打包。进行相应的运行日志管理。同时增加程序只运行一次、系统托盘和托盘栏菜单等多项辅助功能,提高程序的自我管理功能和容错能力,保证系统运行的稳定性。
1.3 服务子系统功能设计
服务子系统由8个功能模块组成,其主要功能是通过串行异步通信口自动接收通信子系统发送的气象数据信息。显示从通信子系统收到的气象数据信息。接受界面上人工输入的气象信息。监听客户端的连接请求。将气象数据信息通过网络传递给民航空中交通管制部门、预报部门及其它部门使用。监控客户端的连接情况。对接收的气象数据进行完整性检查、拆分和重新打包。进行相应的运行日志管理。
1.4 客户端子系统功能设计
客户端子系统由6个功能模块组成,其主要功能是主动向服务子系统发出连接请求,实时接收服务子系统发送的气象数据信息。将相应的气象数据信息在终端上进行显示,供民航空中交通管制部门、预报部门及其它部门使用。监控与服务子系统的连接状态,确保气象数据信息的实时有效性。对接收的气象数据进行完整性检查、拆分。进行相应的运行日志管理。
1.5 系统硬件结构
硬件方面可划为3部分,包含服务子系统、客户端子系统和通信子系统,3部分相辅相成共同完成气象自动云能天系统的数据采集、显示和监控等各项功能。通信子系统与服务子系统、客户端子系统在网络上实现物理隔离,保障各自的网络独立性,满足行业规范的要求。如图2所示。
图2 气象自动云能天系统硬件结构图
2 系统实现
2.1 系统开发平台
本系统采用Windows 7系统作为操作系统平台,具有用户熟悉的图形界面。本系统软件开发环境是以Visual C++6.0作为开发平台[3-11]。
2.2 通信子系统实现
2.2.1 通信子系统实现的关键技术
实现本子系统的功能,有两个关键点,一是通过网络连接民航气象观测测报系统,获取相应的气象数据,二是通过串行异步通信技术将气象数据发送至服务子系统。
1)获取民航气象观测测报系统气象数据
获取气象数据的核心就是连接民航气象观测测报系统,向其发送请求气象数据命令,接收相应的气象数据。程序中通过CAsyncSocket类对象实现与民航气象观测测报系统的网络连接[12],连接成功后民航气象观测测报系统会给客户端发送OK标志,收到此标志后,通信子系统可发送请求数据命令,气象观测测报软件接到请求命令,立即发送云、能见度、天气现象和最近时段实况报文气象数据。
2)气象数据发送至服务子系统
通信子系统收到气象数据信息后,在通信子系统与服务子系统两个网络互不相连的子系统间通过串行异步接口传递气象数据,在硬件方面只需要一条RS-232通信电缆,满足了两个业务网络互相隔离的要求。程序中通过MSComm控件进行串行异步通信[13-14],实现气象数据跨网络传输。
2.2.2 通信子系统工作流程
通信子系统主要完成以下几项功能:连接气象观测测报系统、请求气象数据、接收气象数据、气象数据管理、气象数据显示、气象数据发送、断开与气象观测测报系统连接和其它辅助功能等,如图3所示。
实现上述业务功能,通信子系统工作流程设计包含以下几步:
1)初始化;
2)连接民航气象观测测报系统。通过TCP/IP协议[15],连接民航气象观测测报系统,连接成功状态显示为绿色,失败为红色,主动断开为黄色;
3)请求气象数据。通过向民航气象观测测报系统发送相应的命令,请求气象数据;
4)接收气象数据。监听并接收民航气象观测测报系统发送的气象数据;
5)气象数据管理。对收到的气象数据进行完整性检查,完整性检查不合格的气象数据请求重发,还包含数据分拣和重新打包等工作;
6)显示气象数据。将分拣的气象数据在通信子系统的应用界面中显示;
7)发送气象数据。通过串行异步通信口,将气象数据发送至服务子系统;
8)断开与民航气象观测测报系统的连接。释放资源,置状态标记为黄色;
9)日志信息管理。对程序运行过程中产生的异常情况进行分类记录和管理。
图3 通信子系统工作流程图
2.3 服务子系统实现
2.3.1 服务子系统实现的关键技术
实现本子系统的功能,有3个关键点,一是多线程技术,实现一个服务端同时与多个客户端的通信。二是监听串行异步通信口的通信事件,接收从通信子系统发送来的气象数据。三是监听客户端子系统发来的连接请求,与之建立网络连接,向其发送气象数据和状态信息。
1)多线程技术
多线程技术即在同一个程序中可以同时让操作系统执行多个任务,这种策略能够提高CPU的利用率,提高程序的执行效率[16]。服务子系统需同时与多个客户端子系统通信,只有采用多线程技术才能满足气象业务的需求。程序中通过定义线程函数,利用AfxBeginThread函数创建线程,实现与客户端子系统的通信。
2)接收通信子系统发送的气象数据
服务子系统对串行异步通信口的通信事件进行监听,数据到达后触发数据接收事件,开启气象数据接收模式,对接收的气象数据做完整性检查,完整性检查合格后重新打包向客户端子系统发送,并将气象数据显示在服务子系统的界面上。程序中采用MSComm控件进行串行异步通信,实现气象数据跨网络传输。
3)建立与客户端的连接并向其发送气象数据
服务子系统与客户端之间设计是基于C/S结构模式[17],采用Socket类实现与客户端的连接[18-20],使用TCP/IP通信协议,确保服务端到客户端的气象数据传输安全可靠,如图4所示。设置了手动应急按钮,通信子系统故障时能手动发送所有气象数据。程序中通过Socket类对象与客户端连接,连接成功后向客户端发送OK状态信息。收到客户端发出的数据请求命令,立即向该客户端发送相应的气象数据。接收客户端发送的状态信息,显示客户端的在线情况。
图4 流套接字编程时序图
2.3.2 服务子系统工作流程
服务子系统主要完成以下几项功能:接收客户端的连接请求、接收通信子系统的气象数据、气象数据管理、气象数据显示、气象数据分发、与客户端间的状态管理和其它辅助功能等,如图5所示。
实现上述业务功能,服务子系统工作流程设计包含以下几步:
1)初始化;
2)接收气象数据。监听串行异步通信口通信事件,并接收通信子系统通过串行异步通信口发来的气象数据;
图5 服务子系统工作流程图
3)气象数据管理。对收到的气象数据进行完整性检查,完整性检查不合格的气象数据请求重发,还包含数据分拣和重新打包等工作;
4)显示气象数据。将收到的气象数据信息在界面上进行显示;
5)接收客户端子系统的连接请求。监听客户端通过TCP/IP协议发来的连接请求,建立客户端的连接,向客户端发送状态信息,开启新的连接监听;
6)向客户端发送数据。气象数据经过重新打包,通过网络向客户端发送气象数据。定时向客户端发送状态信息;
7)手动发送气象数据。在通信子系统故障的情况下,通过获取界面上人工输入的气象数据,手动将气象数据发送至客户端;
8)断开与客户端子系统的连接。系统正常退出或与客户端子系统之间连接异常时,主动释放资源,同时开启新的连接监听;
9)日志信息管理。对程序运行过程中产生的异常情况进行分类记录和管理。
2.4 客户端子系统实现
2.4.1 客户端子系统实现的关键技术
实现本子系统的功能,有两个关键点,一是气象数据信息。二是实现与维萨拉自动气象观测系统终端界面完全一致,让用户在视觉上感觉是同一个界面显示。
1)连接服务端并接收气象数据
客户端采用Socket类对象与服务端进行连接,实时接收服务端发送的OK状态信息和气象数据,定时向服务端发送状态信息。首次连接服务子系统会主动向服务子系统发送请求数据命令。
2)实现与维萨拉自动气象观测系统终端界面完全一致
利用SetWindowPos函数将窗口置为最上层显示,时刻保证客户端子系统总在最上一层显示,调整客户端子系统在民航自动气象观测系统终端界面上的位置,通过重载OnCtlColor函数更改背景颜色,达到两界面合一的效果。
2.4.2 客户端子系统工作流程
客户端子系统主要完成以下几项功能:接收服务子系统的气象数据、气象数据管理、气象数据显示、与服务端间的状态管理和其它辅助功能等,如图6所示。
图6 客户端子系统工作流程图
要实现以上功能,客户端子系统工作流程有以下几步:
1)初始化;
2)连接服务子系统。通过TCP/IP协议,连接服务子系统,连接成功显示连接状态为绿色,反之为红色;
3)请求气象数据。通过向服务子系统发送相应的命令,请求所需的气象数据;
4)接收气象数据。实时接收服务子系统发送的气象数据;
5)气象数据管理。对收到的气象数据进行完整性检查,完整性检查不合格的气象数据请求重发;
6)显示气象数据。将收到的气象数据信息进行分拣后在界面上进行显示;
7)断开与服务子系统的连接。系统正常退出或与服务子系统之间连接异常时,主动释放资源,同时发启新的连接请求;
8)日志信息管理。对程序运行过程中产生的异常情况进行分类记录和管理。
3 系统应用效果
3.1 界面效果
该系统的运行环境为Windows 7,系绿色软件,不需要安装。各子系统的实际运行效果图如图7、图8和图9所示。
图7 通信子系统
图8 服务子系统
图9 客户端子系统
3.2 系统的稳定性
通信子系统、服务子系统和客户端子系统经过近一年的测试和完善后,在接下的两年里保持连续不间断的运行,3个子系统在运行、数据传输、显示等方面都稳定可靠,未出现过任何故障。
3.3 系统的安全性
系统通过网络从民航气象观测测报系统中取得气象数据,将取得的气象数据通过串行异步通信口传输至自动气象观测系统的服务子系统,由服务子系统向各客户端分发,最后在客户端实现气象数据的显示。系统在两个网络间采用异步串行通信,保证两个不同业务网络在硬件上的隔离,满足自动气象观测系统的网络独立安全的要求。
3.4 系统的扩展性
通信子系统与气象观测测报系统间的网络连接、通信子系统与服务子系统间的串行异步通信连接服务子系统与客户端子系统间的网络连接都是通过参数文件来设置,增强气象自动云能天系统的兼容性,利于其在民航系统内的应用推广。服务子系统与客户端子系统间设计了100个客户同时通信,预留了扩展的空间。
3.5 用户体验
通过与现阶段传递同样气象信息的其它手段对比,气象自动云能天系统在实际工作中给用户的体验是操作简单,视觉感强,交互性好。对设备维护人员来说,通过系统自身的状态信息能快速确立故障点,维护方便简单。系统还具有用户数扩展性好、数据准确性高、响应速度快、人工劳动强度低、实时性强等优点,如表1所示。
表1 用户体验结果对比表
4 结束语
气象自动云能天系统解决了民航气象观测员与空中交通管制人员及其他气象人员在信息通报方面的难题,也实现了人工观测的云、主导能见度、天气象现象和最近时段气象报文数据的自动获取,极大地满足了民航空中交通管制人员和气象人员的工作需求,降低了他们的工作强度,提高了工作效率,取得了良好的经济效益。目前,该系统在全国多个机场使用,系统运行稳定可靠,达到了设计的目标。