1. 引言
国内各地区中小机场气象台受其发报手段及备份应急装备限制,在发生设备故障或线路中断的情况时,极易造成报文迟发或漏发的情况,气象报文的迟发和漏发会构成不安全事件及工作质量差错中的一般差错或严重差错 [1] 。此时发报机场气象台往往需要委托所属异地机场气象台代为其发布气象报文。近年来,各地机场气象台相继建立了异地机场代发报机制,确保在无法正常发报的情况下发布飞行气象情报,以保证气象情报交换正常。但现有代发报手段相对较为单一,被代发报机场气象台人员在无法自行发报时,需要通过电话或传真方式,将报文传递给代发机场气象台人员,代发机场气象台人员将接收到的报文手动录入到专用发报终端进行发布,这种手段除耗费两方人员精力外,极易因操作时间较长或报文在传递时出现字符错误,造成报文迟发甚至错发的不安全事件。为解决民航气象报文在代发过程中易出现的诸多问题,作者对相关文献进行了研究。其中朱国栋等人在2019年对民航气象报文质量控制算法进行了研究 [2] ,刘东华等人在2012年就已将气象短信作为气象信息发布的重要手段 [3] ,吉辰在2021年对机场天气报告报文进行了解析与研究 [4] 。本系统在上述研究的基础上,基于短信透传技术、气象报文解析和质量控制算法,开发了一套简单、高效的报文代发系统,使被代发机场气象台通过短信方式将本场报文快速、准确地传递至代发报机场气象台的专用发报终端,再由代发报机场气象台人员进行一键代发,避免两方人员因报文内容在传递、录入、校对过程中出现不及时或错误,造成的报文迟发、错发现象。
2. 系统设计
民航气象代发报系统采用C#编程语言进行开发,后台使用MySQL数据库进行数据存储,系统主要包含串口透传接收模块、校验发布模块、配置模块和检索统计模块。系统通过短信透传DTU (Data Transfer Unit)接收以短信形式传输的民航气象报文(包含SA、SP、FC、FT报文)数据,通过对报文短信的格式校验、被代发机场授权校验、报文内容校验后,通过系统界面提醒代发人员,再由代发人员进行审核并进行一键代发。系统功能见图1。
3. 系统功能设计
3.1. 短信报文的接收
Figure 2. SMS message sending interface
图2. 短信报文发送测试界面
系统支持的代发报类型主要包括SA、SP、FC、FT等报文。被代发机场气象台人员使用手机短信方式将需代发的本机场气象报文发送至指定代发报的手机号码(短信透传DTU模块中安装的SIM卡号码),短信透传DTU模块接收到以短信形式传输的气象报文后传输至该系统的串口透传接收模块,系统和模块之间使用串口线路进行数据传输。
短信报文发送及透传接收界面见图2、图3。
Figure 3. Transparent transmission receiving interface
图3. 透传接收界面
3.2. 校验发布
系统的串口透传接收模块收到短信报文后,将报文发至校验发布模块。该模块包含报文格式校验功能、支线机场授权校验功能、报文内容校验功能、代发提醒功能、代发编辑审核发布功能。系统提供代发报的报文校验发布功能,可对授权代发机场进行校验和管理、对报文的格式、内容进行校验,使其符合报文格式要求。部分格式校验代码如下:
reportContent = reportContent.Replace(=@, =).Replace(=@=).Replace(\n\r\n).Replace(\r\r\n, \r\n);
//格式化短信内容,去除GG行和正文行的\r\n
string temp = reportFormat(reportContent);
if(temp != )
reportContent = temp;
JObject reportObj = new JObject();//定义返回完整代发报文的json对象
reportObj.Add(reportSaveId, reportSaveId);
reportObj.Add(reportPhoneNum, reportPhoneNum);
reportObj.Add(reportRecvDatetime, reportRecvDatetime);
reportObj.Add(reportContent, reportContent);
Match match;
if(reportContent.StartsWith(GG) || reportContent.StartsWith(FF))
{
match = Regex.Match(reportContent, @(GG|FF)([\s\S]*)(\d{6} )([A-Z]{8}));
if (match.Success)
{
sendAddr = match.Groups[4].Value;
}
}
else if (reportContent.StartsWith(METAR) || reportContent.StartsWith(SPECI) || reportContent.StartsWith(TAF))
{
match = Regex.Match(reportContent, @(METAR|SPECI|TAF)([\s\S]*)(Z[A-Z]{3}));
if (match.Success)
{
sendAddr = match.Groups[3].Value;
}
}
else if (reportContent.StartsWith(ZCZC))
{
match = Regex.Match(reportContent, @(ZCZC)([\s\S]*)(GG|FF)([\s\S]*)(\d{6} )([A-Z]{8}));
if(match.Success)
{
sendAddr = match.Groups[6].Value;
}
else
{
match = Regex.Match(reportContent, @(ZCZC)([\s\S]*)(SACI|FCCI|FTCI|SPCI)(\d{2} )(Z[A-Z]{3}));
if(match.Success)
{
sendAddr = match.Groups[5].Value;
}
}
}
if(sendAddr == )
{
saveReportLog(【 + dt + 】 + \r\n + 短信不符合报文规范已丢弃:\r\nId: + t[0] + \r\nPhoneNum: + t[1]+ \r\nsmsRecvDatetime: + t[2] + \r\nsmsContent: + t[3] + \r\n\r\n\r\n);
continue;
}
系统将按照航空气象工作规则和预报规范提供代发报文(包括机场实况和机场预报)逻辑校验功能,对错误或不符合规范的字段给出提示,以减少人为因素造成的错误。
模块对报文短信依次进行格式校验、被代发机场授权校验、报文内容校验后,通过系统界面提醒代发人员进行处理,代发人员进行人工审核,并可对报文内容进行修改,在与被代发机场人员进行电话确认后,进而可一键代发该报文。当同时接收到多个机场的报文及多种类型的报文时,代发人员可通过系统对待发报文逐个进行审核和发布。校验发布界面见图4。
Figure 4. Verification publishing interface
图4. 校验发布界面
3.3. 配置模块
配置模块可对代发报参数进行配置和管理。该模块包含授权管理、代发机场报头管理、提醒设置、线路设置、短信透传设置等功能。
3.4. 检索统计模块
检索统计模块包含代发历史记录的检索、统计和报表导出功能。通过模块可对代发报的历史数据进行分析和整理。检索统计模块提供的报表导出功能,允许用户将分析结果导出Excel格式。界面见图5。
Figure 5. Retrieval statistics interface
图5. 检索统计界面
4. 结语
国内各地区中小机场气象台现有的异地机场代发报机制受电话或传真方式等代发报手段的限制,极易因操作时间较长或报文在传递时出现字符错误,造成报文迟发甚至错发的不安全事件。个别地区中心气象台建立的基于互联网的代发报系统,在当前网络安全形势日益严峻、信息安全越发受重视的情况下,需投入较大的资金投入建立互联网与业务网络系统间的网络安全防护设备,以符合等级保护相关要求,该类系统在代发机场资金有限的情况下,难以落地普及。本文设计的基于短信透传技术的民航气象代发报系统的硬件规模小,可投入极小的资金,在实现代发报工作的半自动化的同时,可极大地减轻代发报压力,在中小机场较多的地区尤为明显,投入产出效益明显。另一方面,由于该系统使用的短信透传DTU硬件模块通过RS232串口与工作站进行连接,仅能透传短信文本信息,不具备网络功能,具有物理隔离特性,所以该模块具备较强的安全性,符合网络安全要求。因此,该系统不仅具备较高的经济效益,还具有较好的应用及推广前景。