科技论坛 ・45・ 民航AFTN报文解析研究 陶章志 f中国电子科技集团公司第二十八研究所,江苏南京210007) 摘要:在本文中,根据工程开发经验,提出AFFN报文解析的一般思路、基本框架,并以航路编组为例。详细介绍了其解析流程与算法。 关键词:AFTN报文;报文解析;数据 1棚_述 表1机场数据库表结构 AFrN英文全称是Aeronautical Fixed Telecommunication Net- 字段标识 类型 存睹要求 work,翻译为“民航固定格式通信网络”。因此,AFTN报文也就是民航固 ABN am e c h a r(4) 关建字 F u11N ame c h a r(2 0) 定格 百信报文。根据《民用航空飞行动态固定电报格式》际准,AnIN报 C Ou nt r YC o d e c h a r(2) 文共有16类,分别是:FPL 虢计划报)、cHG(修订计划报)、CNL( ̄消领 C1t vN ame c h a r(2 0) L on Elt ud e d o u b1 e 航计划报)、DEP0 ̄)、ARR( ̄地报)、DLA(延误报)、cP 飞行变更报)、 L atit u de d o u bl e ABN am e 3 c h a r(3) Es1Ij 十飞厥报)、CDN(筲制协调报)、AcP值制协调接收 、LAM(L ̄ R em a r k c h a r(1 0 0) 认眼)、RQP( ̄1{l彳 戎0报)、RQ 求铡 卜戈 充信息报)、sP 计划补充信息报)、ALR(告警报)、RCF(无线电通信失效报)。如何解析 表2 FPL解析结果表 编组子项 解析模块 解析结果 AFTN报文,解析报文的效率与成功率是影响 编组3解析模块 报文共别:领航计划报 因素。在;本文中,笔者根据工萜娴经验,提出了“分舞 ,重 舟 路’’的 编组7解析模块 航空器识别标志 LN B1 50 9 编组8解析模块 飞行规则:仪表飞行 解析思路,并重 阐述了航路解析的流程与算法。 飞行种共:定期航空运输飞行 编组9解析模块 机型:A 3 2 0 2整体思路 尾流等级:中型 根据标准,各类AFFN报文均由若干规定的数据编组 固定顺序排 编组1 0解析模块 机载设备测距仪.具备Rv sM 能力 列构成,且不能随意缺省;报文内容是以正括号“r’开始,其后随以各个编 监视设备:s模式,具有气压 高度与航空器识别标志的发 组,以igor"-"表示各编组的开始,其后随以数据项,以反括号‘’”表示该 射信号 报文的结束。以下就是一段符合标准的领航计戈0报: SEQUI 61 5 编组i 3解析模块 起飞机场:sEq U 起飞时间1 6:1 5 (FPL-LNE1509-IS N O 3 9 2F 2 3 0 编组1 5解析模块 巡航速度:3 92节 W 6 DIM IN 巡航高度:2 30 0 0ft高度层 —A320/M-SDW/S W 1 GYV 航路:起飞机场(s EqU)加^w 6 航路,从DI MIN退出,并加入 -SEQU1615 w1航路,到达GY v后着陆 一N0392F230 W6 DIMIN W1 GYV fsE Gu) 编组1 6解析模块 目的地机场:SEGU —SEGU0034 SEMT 预计经过总时间:0 03 4 REG/HCCLE SEL/HQGK) 备降机场:SEM T -编组1 8解析模块 航空器的注册标志:HC C LE 根据以上报文定义约束,按照“分组解析,重点航路”的解析思路,形 呼叫编码 H QGK 成报文解析流程如下: (1)以正括号“f’与反括号‘ 为标识,形成AYFN报文字符串,作为报 文解析模块的输人数据; (2)根据报文前3个字母,识别AYFN的报文类别; (3)以连字符“一”为间隔,将原始报文分割,形成编组字符串; (4)根据报文编组定 逐项调用相应编组解析模块,解析报文编组; (5)当该报文的所有编组解析成功,备四全国所经纬三各 将解析结果入库,同时进入后续 处理; 宇名家在度度字注 (6)当某编组数据有误时,提示用户手动修改。此外,代 代城 代信 AFTN解析依赖 于—定的基础 场信息、导航台信息、码 码市 航路信.码息 息等),根据笔者的软 件开发经验,很多AFrN报文解析不成功,往往是由于基础性信息输入 不完整。因此,对基础陛数据的管理也是AFTN报文解析的重要部分。 3具体实施 3.1基础性数据管理。根据《民用航空飞行动态固定电报格式》,AFTN 报文解析需要以下几类基础数据: 棚场信息; 重戛 信息(包括导航台、航路点、城市名等); 航线信息鸸场航线、进场航线、标准航路_)o 图1 AFTN报文解析流程图 软件提供界面录入与编辑基础 毁据; 时间,备降机场),编组17(降落机场和时间),编组18(其他情报), :。以机场为例,其昕包含信息有:四字代码,全 编组19(¥b充情报),编组20艘寻和救援告警情报),编组21(无线电 名,国家代码,所在城市,经度,纬度,三字代码,备注信息。根据其信息,可 失效情报),编组22(修订)。由于各类AFTN报文均由若干编组按 形成机场数据库结构定 Ⅱ表1所示。 固定顺序排列构成,因此,根据标准格式,分别编写16类数据编组 32编组解析模块。根据标准,数据编组共有16组。分别为:编组3 解析模块,具有重要意义。编组解析模块主要包含两方面功能:检查 (电报类别、编号和参考数据),编组5黼隋况说明),编组7航空器识别标 编组字符串是否符合标准格式,数据项是否正确;编组字符串的数 志和SSR模式及编码),编组8 行规则及种类),编组9航空器数目、 据项解析。除编组15(航路)以外,其他编组解析模块实现难度不大, 机型和尾流等级),编组1眦载设 ,编组13 飞机场和时间),编组 均可根据标准中相关规定编码实 l。由于编组15(航路)中包含信息 l 页汁飞越边界数据)编组15O抗路),编组1 6(目的地机场和预计经过总 较多,编组内元素间关系紧密,解析相对复杂。 作者简介:陶章  ̄.(1979一),男,2002年毕业于吉林大学计算数学专业,现任中国电子科技集团公司第二十八所工程师,从事C3I系统开发工 作。 ・46・ 科技论坛 3.3航路编组解析。航路编组是FPL、CHG等报文中重要的编组,对 标准进场航线基础数据,求取该段各路点位置信息、巡航速度、巡航高度 航路编组解析正确与否,直接影响着民航飞行计划后续的管理。根据标 层等信息,插入航路结果集。(7)当数据子项为“空中交通服务航路代号” 准,编组15O 翰格式定义如下: 时,求取该子项前航路点,该子项后续航路点,并根据“空中交通服务航 路”基础数据,通过查找、比对、计算,求取该段各路点位置信息、巡航速 度、巡航高度层等信息,插^、航路结果集。 4示例 数据项B:申请的巡吭高度层 AFTN报文中,FPI 谢 卜戈IJ报 率最高的—类报文,以下以FPL 数据项c:航路,可为七类数据项:标准离场航线代号,空中交通服务 原始报文 掉流水号等报文头信 口下 航路代号,重要点,重要点、巡航速度或马赫数/申请的巡航高度层、简字 (FPL——LNE1509——IS c F F 垡 爬高,标准进场航线代号。各数据项以空格隔开。航 A320/M-SDW/S 路编组解析的目的是根据报文内容,获得该航班从起飞机场、途经点、至 SEQU1615 降落机场的飞行航线信皂.及相应剖面信息。为提高解析成功率,减少解析 N0392F230 W6 DIMIN W1 GYV 时间,建立了—个航班一航路信.皂库。在该库中存储常用的吭班的详细信 SEGUO034 SEMT 息:航班号、起飞机场、降落机场、航路 详细信息。当收到某航班一航路 REG/HCCLE SEL/HQGK) 解析请求时,首先比对该航班是否存在于“航班一航路信息库”,如果存 第一步:进行报文分割,形成编组子项:“FPL'’,“LNE1509”,“IS”, 在,直接提取相应详细信息,作为航路解析结果;否则,按以下流程进行航 “A320/M'’, “SDW/S'’, “SEQU1615”,“NO392F230 W6 DIMIN W1 路解析:(1痢晰数据项A,计算航路的巡航速度; 解析数据项B,计算所 GYV”,“SEGUO034 SEMT',"REG/HCCLE SEL/HQGK”。第二步:依据标 申请的巡航高度层; 以空格作为分割符,分割数据项c,形成N个数据 准,按照FPI .航计划报)报文格式定义,依次调用相应编对数据子项进 子项; 据子项,逐个调用“航路数据子项解析”模块进行解析;在该 行检查与解析,其解析结果如表2所示。第三步:当解析正确时,将解析结 流程中,“航路数据子项解析”模块,按以下逻辑进行处理:(1)当数据子项 果存^数据库,并将航路信鼠显示于图形界面;当解析不正确时,提示用 为“重戛 ”时,求取“重要|点”的位置信息、巡航速度、巡航高度层等 , 户:错误编组、错误数据子硕。 插A航路结果集。 当数据子项为“重要点、巡航速度或马赫数/申请的 结束语 巡航高度层”时,求取“重要点”的位置信息、巡航速度、巡航高度层等信 本文中所研究的‘'AFTN报文解析”解析算法及框架,已应用于实际 息,插^航路结果集。同时,设置后续航路的巡航速度、巡航高度层。(31当 工程中。值得注意的是,由于AFTN报文是基于字符流格式,报文的输^ 数据子项为“简 ̄DCT,VFR,IFR,T)'’时,设置 掺 抗路点飞行特征。f41当数 存在—定的随意性,比如起飞报∞EP)容易将起飞时间与起飞机场录入顺 据子项为“巡航爬高”时,求取巡航爬高点位置信息,巡航速度、巡航高度 序颠倒。针对该类报文,该算法采取的措施是对不符合标准部分,提示用 层等 息,插^航路结果集。同时,设置后续航路的巡航速度、巡航高度 户,手动修改。该算法实时I生寝好,能准确解析95%以上的AFrN报文。 层。圆当数据子项为‘标准离场航线代号”时,根据起飞机场、标准离场航 参考文献 线基础数据,求取该段各路点位置信息、巡航速度、巡航高度层等信息,插 [1NH 4007-2006.民用航空飞行动态固定电报格式.I 人航路结果集。 当数据子项为“标准进场航线代号”时,根据降落机场、 [2懂襄宁等.空中交通管理基础啤北京:科学技术出版社,2011. —-一——(上接113页) 税蹦解 捌域般务麒 领域池备屎 藩硎{1暾施艇 ’月 ’ … 铉熟 篇 … 嚣 譬 警 Es8 ● } i’ 图3领域驱动设计参考分层架构图 图4重构后的商品详情页类图 Entity。(2)基础仓库Repository可以通过Infrastructure中的DAO封装 度进行控制。 对实体的操作,如create0、update0、delete0、ifndByld0、ifndList0。(3)通过商 参考文献 品业务仓库ProductRepository扩展基础仓库,这样—来客户程序可以用 【1膨晨阳.面向对象与领域建模 B0L 0061z o07_06_1l productld为参数,通过调用Pmductv0鬟etPmducto方法获得商品详细信 [2]Evans E胨 峰,张泽鑫译.领域驱动设计一软件核心复杂性应对之道 清华大学出版社,2006. 息的业务实现,由于业务仓库的的公开方法对夕}返回的眷堤Value Ob— 北京:iect,因此不会直接暴露Entity类型给客户程序。(4)这样—来GetProd— [3]王鹏,刘渊.领域驱动设计在SPP系统中的应用 计算机工程与设计, uctService服务类通过invokeo且艮务方法对外商品详情页面提供服务,它 2008,29(1 ̄:3362-3364. 通调用业务仓库中的业务方法,并将接口规格化。(5)将事务配置在Do— mainService的invok e()=疗法E,这样就做到了事务控制以Use Case为粒