树人论文网一个专业的学术咨询网站!!!
树人论文网

基于Python的气象观测发报及线路监控系统设计

来源: 树人论文网发表时间:2019-10-24
简要:摘 要: 概述了民航气象观测报文准确及时发布的重要性,介绍了长沙黄花机场民航湖南空管分局气象观测现有发报的传输保障方式。现有传输保障方式存在手段单一,节点有较多的安

  摘 要: 概述了民航气象观测报文准确及时发布的重要性,介绍了长沙黄花机场民航湖南空管分局气象观测现有发报的传输保障方式。现有传输保障方式存在手段单一,节点有较多的安全隐患,因此基于Python语言设计了气象观测发报及线路监控系统。该系统实现了串口和网络两种方式发报,能实时检测现有报文线路是否正常,一定程度上优化了保障手段,降低了安全风险,从而提高气象服务质量水平。

  关键词: 气象观测报文; Python语言; 报文线路监控; 安全风险

内蒙古气象

  推荐阅读:《内蒙古气象》是由内蒙古气象局、内蒙古气象学会主办的综合性气象科学技术刊物。

  0 引言

  机场气象台、机场气象站应当按照民用航空气象地面观测和报告的规定发布机场天气报告[1],行业里把机场天气报告简称为气象观测报文,它是飞行气象情报的一种,它的及时、准确发布,对保证航空安全起着非常重要作用[2]。中国民用航空局非常重视机场天气报告的发布,在《民用航空飞行气象情报发布与交换办法》中明确规定,气象观测报文的交换时效是正点或半点的5分钟内;在《气象业务差错标准》中明确,机场天气报告迟发10分钟以上属严重差错事件;在《中国民用航空气象工作规则》中提到民用航空气象服务机构需通过航空固定电信网(AFTN)、民用航空气象信息系统、网络等有效手段交换飞行气象情报。

  在民航系统,用来发布气象观测报文的软件并不统一,有些是自己研发的;有些是用自动气象观测系统附属功能;有些是用民用航空气象信息系统附属功能等,保障手段主要是通过AFTN和气象数据库系统(MQ方式传输)。长沙黄花机场民航湖南空管分局气象观测报文是通过中南空管局研发的软件发布的,见图1。从图1可以看出,主、备发报终端都是通过串口方式,中间传输节点有转换器、FA36、SDH等主要通信设备(传输距离较远),传输保障手段单一,节点较多,存在很大的安全隐患;如果中间节点故障或者转报机故障,会影响观测报文的发布,很容易造成气象严重差错事件。

  本文目的在于,设计一款软件来解决现有气象观测发报传输保障单一、节点较多的安全隐患,同时能实时检测现有报文线路是否正常,优化保障手段,从而提高气象服务质量水平。

  1 系统设计

  1.1 需求分析

  ⑴ 能实时采集自动气象观测系统数据;

  ⑵ 根据采集数据编发报文;

  ⑶ 通过异步(RS232)及网络方式发送报文;

  ⑷ 能实时监测异步(RS232)发报物理线路;

  ⑸ 能存储发送报文内容。

  1.2 系统总体框架

  根据需求分析,对系统框架进行了初步设计,具体如图2所示。

  系统主要分为两部分:一部分为数据采集和发报前端;一部分为报文线路监控及转发,在下面文章中将详细介绍这两部分。

  1.3 开发语言

  本文采用Python语言进行开发。Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python 有很多优点[3-4]:如语言优雅、简单、实用、易读懂;Python 语言内置了主流语言都必备的基础工具和特性,使其在安装后就能立即使用;Python 语言本身还带有一个可视化的集成开发环境、一个可视化类库和许多其他工具;拥有完善的标准库和接口,可以进行混合编程等。

  软件用户界面用wxFormBuilder开发的,该软件是一个开源跨平台的所见即所得的图形用户界面生成器,可以翻译wxWidget GUI设计成C++,Python和PHP或XML格式;先通过该平台设计软件用户界面,再将相应生成的Python语句拷贝出来,作为一个Class嵌入主程序。

  2 数据采集及发报前端部分

  本部分主要实现数据采集和编发报功能,数据采集功能:主要是从自动气象观测系统里获取数据,并将数据解析,显示;编发报功能:根据实时采集数据,定时提醒发报或者手动编报,然后根据选择发报方式,将报文发出,其中信号流程如图3。

  自动气象观测系统它与飞行密切相关,是民航地面保障不可或缺的部分[5-6];可以提供风向、风速、温湿度、气压、能见度等气象要素,管制人员根据这些气象要素指挥飞机的起飞和着陆;该系统输出标准数据格式,其他系统可以通过RS232或者网络的方式从自动气象观测系统里的TS16设备获取,本文设计系统是通过网络方式获取该系统数据的(见图2)。

  用户界面设计如图4所示。关键点:数据接收与解析;串口发送与接收;网络发送。

  模块socketserver.ThreadingTCPServer(),实现数据接收;当每个客服端请求连接到服务器时,socket服务端都会在服务器上创建一个“线程”或“进程”专门负责处理当前客户端的所有请求。

  其设计思路:先创建接收线程,然后读取自动气象观测系统数据。自动气象观测系统输出每帧数据(见图5)以x011(字符r1)开始,以x03\x04(字符┕┙)结尾,中间每一大项以x03\x02(字符┕┓)隔开,再以(|)细分每一项,因此解析格式比较固定;先读包头x011,再读包尾x03\x04,再根据x03\x02分割大项,最后根据分隔符读取需要的数值。

  模块myserial.write()和myserial. read()实现串口读写功能。

  网络发送功能通过Redis服务实现。Redis是一个key-value存储系统,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)等;为了保证效率,数据都缓存在内存;支持主从同步,数据可以从主服务器向任意数量的从服务器上同步;通过指令myredis.lpush()缓存数据。

  不同的终端系统,安装的Redis版本也不一样,在使用时需特别注意。

  界面设置了网口发送和串口发送两个按鈕,可以根据观测员的需要,只设置一个发送按钮,一份报文同时通过串口和网口发送,双重保障确保报文及时到达地区民航气象数据库。

  3 报文线路监控及转发部分

  本部分主要实现报文转发和线路监控功能,用户界面如图6。报文线路监控功能:主要实现对现有发送报文物理线路进行监测。空管系统观测对报文发送时间有很高的要求,地方空管分局(站)需在整点或半点后三分钟之内入地区空管局气象数据库。如果一旦报文线路故障,就需要采取应急手段,这将很容易导致发报超时。湖南空管分局观测报文线路主要是RS232方式,为了能确保线路正常,需在整点或半点前某个时间段提前对线路进行测试。首先其他或本身终端定时或手动发送测试报文,然后通过转报机转发至本部分软件,如果本部分软件能正常收到报文,则证明报文物理线路是正常的,否则线路异常。

  报文转发有两种方式:RS232和FTP发送方式,可以根据观测员需求,只设置一个按钮或者不设置按钮而默认两种方式同时发送。见图2可得知RS232发送是该软件部分与转报机相连,线路发冠字暂定义为YMX,直接从分局B楼发至综合业务楼转报机,中间传输节点减少;FTP发送是将报文采取FTP传输至民航气象数据库系统[7]的监控平台终端,然后进一步传输至该系统通信机,最后通过通信机分别转发至广州和本地气象数据库。

  接收的报文数据是来自于发报前端(安装了Redis服务器),主程序中设置了定时程序,每隔1秒,去检查Redis服务器是否有缓存,如果有数据则通过指令myredis.lpop(),获取新数据。另外线路告警、接收和发送报文等都在信息提示框中显示。

  4 结束语

  气象观测报文及时准确的发布,对保证航空安全起着非常重要作用。本文基于Python语言设计的气象观测发报及线路监控系统,经初步测试,基本功能正常,操作简单,并得出如下结论。

  第一,作为黄花机场民航湖南空管分局气象观测发报方式一个很好地补充,一份报文可以同时通过三种方式发往地区民航气象数据库,保障手段得到很大程度地优化。

  第二,是该系统的串口线路监控功能,对观测员起到了提前预警作用,如果串口线路故障,有充足时间采取其它发报手段,而不会因线路或者发报主机故障,导致发报延时,造成气象差错事件。

  第三,这对民航空管系统保障观测发报有一定的借鉴意义,用两种传输方式发报,同时也能监控线路是否正常。

  该系统还存在一些不足,系统需要观测员长时间测试,对用户界面及功能提出改进建议,使该系统进一步完善。

  参考文献(References):

  [1] 中国民用航空局.中国民用航空气象工作规则[Z],2014.

  [2] 梁欣,黎巍,俞霄靓,张琰,邢杉.基于Shell脚本的气象报文迟发漏发监控程序设计与实现[J].计算机时代,2015.3: 46-49

  [3] 史梦楚.Python 语言的探讨[J]. 互联网+应用,2017:98

  [4] 薛建波,谭凌岚,罗佳.基于Python 混合编程[J]. 网络与信息工程,2018:80-81

  [5] 周祖锡. 气象自动观测系统雷击故障案例分析[J].气象水文海洋仪器,2016.2.

  [6] 郭方. 机场气象自动观测系统监控及值班辅助软件的研究与设计[J].内蒙古科技与经济, 2017.1.

  [7] 王欢,赵晔晖. 民航气象数据库系统典型故障研究[J].民航学报,2018.2:25-29