APP下载

一种空管自动化系统主备同步监控的设计与实现

2020-03-15吴世雄

现代计算机 2020年4期
关键词:扇区空管报文

吴世雄

(中国民用航空中南地区空中交通管理局,广州 510000)

0 引言

MH/T4029.3是民航定义的空管自动化系统主备交换标准,当前各地空管自动化系统已在主备空管自动化的同步中应用该标准。按照规范要求,空管主备自动化系统通常由两个不同厂家型号的系统构成,不同厂家对标准的理解和系统定义不完全一致,这导致了空管主备自动化系统之间的同步容易出现数据处理问题,而厂家给予的支持也较为有限,排查故障较为复杂。本文从实际出发,基于C#设计一种空管自动化系统主备同步监控系统,该系统通过引接主备同步数据,对数据的处理流程进行分析得出具体主备数据交互的实际信息,为空管主备自动化系统的同步的数据处理过程分析提供一种参考。

1 MH/T4029.3标准[1]

MH/T4029.3标准规定了包括飞行计划数据、飞行基础数据以及不同管制单位间实现屏幕移交所包含的字段、数据项与发送时机。其主要在于在实现空管自动化系统业务链中的不同系统间的数据交互,可以补充自动化系统AIDC不能实现的不同管制单位间的屏幕移交。另外,基础飞行数据和主备空管自动化数据的系统间信息交互,可以减轻因多套系统间数据不统一给管制人员、维护人员带来的困扰和维护的工作量。标准规定了三大类的基础报文分别是“基础飞行数据交换报文”、“主备空管自动化系统数据交换报文”和“管制单位间飞行数据交换报文”。

其中,“基础飞行数据交换报文”中3种数据的报文类型(使用报文结构中的专用字段表示)均以字母‘I’开始,例如:IFPL、IDEL等;而“主备空管自动化系统数据交换报文”中6种数据的报文类型均以字母‘B’开始,例如:BSSR、BSEC等;“管制单位间飞行数据交换报文”中4种数据的报文类型则均以字母‘C’开始,例如:CFPL、CLAM等。前两者是当前空管自动化系统主备同步的主要应用报文,也是本设计研究的基础。

在4029.3标准中定义了数据交换格式,数据交换的具体内容,以下对BSEC报文进行分析。

BSEC扇区同步通过标准的同步报文进行数据交换,扇区同步信息在接收系统收到后,接收的系统会对自己的原有扇区方案进行修改,并更新自己的扇区表,将相应的扇区分配方案发送至终端席位。最终实现具体席位扇区的同步。同理,系统目标标牌和计划的同步也是由主用系统发送相应的报文,备用系统收到报文后,修改对应计划的对应项,同时修改系统目标标牌。最终完成系统的管制界面的自动同步。因此设计必须针对上述的报文信息进行数据项的分拣诠释。

2 系统的设计与实现

系统主要分为接收模块和数据解析模块。前者主要涉及报文接收的通信编程,后者则主要采用C#的正则表达式实现对关键字符的识别得出具体发送信息的空管自动化系统给予的信息及数据项,并通过软件界面提醒和日志写入存储。

2.1 接收模块

4029.3标准提供了空管自动化系统之间交互的建议传输方式,为了使系统有更好的扩展性和实用性,标准建议进行主备同步的空管自动化系统系统同时支持网络和串口两种传输接口,方便用户根据实际情况自由选择。当使用网络传输接口时应该同时支持TCP和UDP协议,可以同时支持长距离和短距离传输,满足不同系统的数据传输需求。当使用串口方式时,为了满足带宽要求和数据的时效性建议使用同步串口(推荐HDLC)的方式。当然,由于飞行计划的数据量较大,大多数空管自动化系统采用网络接口方式。因此在接收模块方面,系统可以采用C#的TCP接收处理。C#的TCP通信实质是Socket通信,软件在实现过程中需要新建一个Socket对象,于此同时设定相应的设定目标IP(主备自动化系统的IP),并设定目标端口实现TCP通信的监听。最终,调用connect函数进行连接。接收数据处理上可以直接调用Receive函数就可以完成数据的接收。Receive函数是一个实时等待函数,如果没有数据到来,会一直阻塞,导致程序控件假死,因此需要设计一个单独的线程进行接收。软件实现上首先增加以下命名空间:

部分关键代码如下:

为了同时接入主备空管自动化系统,软件部署的PC需要同时配置两个网卡,一个用于连接主用自动化系统,一个用于连接备用自动化系统。考虑信息安全等级保护要求,系统在接入过程中增加了防火墙配置,篇幅关系,相关防火墙策略配置此处不赘述。具体硬件实现接入如图1。

图1 系统硬件接入图

2.2 数据解析模块

为了数据项的解析,系统可以将MH/T4029.3的相应报文类的对应数据项内容和意义以数据库表字典的形式存储起来,此处数据库采用SQL Server进行设计。C#程序增加以下命名空间:

同时创建连接数据库对象如下:

表的数据项内容样例如表1。

表1 数据项样例

系统可以采用正则表达式对上述richTextBox1内部的内容进行解析[2]-[3]。接收的报文通过以下正则表达式函数实现对具体字符串内部信息的截取。

其中,string str参数变量是传入的待处理字符串,系统可以直接将实时的richTextBox1内部字符串变量传入,string s参数变量则为开始识别的字符串,string e参数变量则为结束字符串。例如系统首先按照标准解析当前报文的类型,string s=”ZCZC-TITLE”,string e=”/n”,如若是该字段是“ZCZC-TITLE BSEC”,系统则返回“BSEC”并根据预先存储的MH/T4029.3字典,系统解析出该报文为扇区分配报文。类似地(如Get-Value(richTextBox1.txt,”-FILTIM”,”/n”)得出报文时间、GetValue(richTextBox1.txt,”-BEGIN”,”/n”)得出下一步将是扇区划分列表等),可以解析出系统内部的所有数据项并根据字典将对应的内容打印到软件界面通过richTextBox2控件显示。

另外,为了记录相应的处理过程以及后续事件排查,系统提供了日志调查功能,将解析过程和历史原始数据记录在后台文本文件中。C#实现代码如下:

其中string path参数变量为系统存放日志的路径,在实际操作中以时间戳为文件名命名存入,string contentSrt则为报文内容变量,每次处理完毕系统将分别传入richTextBox1和richTextBox2文本内容,每个报文都有原始数据和解析结果的存储。后续日志调查则直接打开文件对话框,用户只需要选择具体日志文件即可查看相应的信息,软件界面实现如图2。

图2 软件实现界面

3 结语

本文从实际出发,基于MH/T4029.3设计了一套空管自动化系统主备同步数据处理监控系统。系统通过C#设计实现,主要包括接收数据处理和数据分析处理,实现了TCP编程下的网络数据接收、字典建立和正则表达式匹配的数据解析以及后台日志记录。系统可以广泛应用于当前主流空管自动化系统的主备数据同步,也为相关研究抛砖引玉。

猜你喜欢

扇区空管报文
基于J1939 协议多包报文的时序研究及应用
以太网QoS技术研究及实践
MBR磁盘转换为GPT磁盘的研究与实现
分阶段调整增加扇区通行能力策略
智慧空管技术的进展
基于Python的汽车CAN总线报文格式转换系统的设计与实现
基于报文类型的限速值动态调整
乙醇蒸气放空管设置室内引发爆炸
浅述“4K对齐”及其发展前景
U盘故障排除经验谈