空战训练机载前端信息采集系统设计
2020-12-09朱金冬孙继平
朱金冬,孙继平
(1.航空工业沈阳飞机设计研究所,辽宁 沈阳 110035;2.天津津航计算技术研究所,天津 300308)
1 背景和组成
空战训练系统是世界各国空军在进行空战对抗训练时普遍采用的训练装备之一,它以飞机外挂或内置设备形式投入使用,不影响原机系统的操作,能够在空战对抗训练过程中对空战态势、训练安全等进行有效的监视,更主要的是能够实现机载武器的模拟攻击仿真计算,在不投放真实武器的情况下训练飞行员熟悉飞机平台和武器系统,理解复杂战场环境,掌握空战技术和战术[1]。
空战训练系统主要分为机载空战综合训练分系统(简称机载系统)和地面评估显示分系统(简称地面系统)两大部分。机载系统安装于参与空战训练的各架飞机,地面系统位于地面站,它们之间通过链路端机以无线组网通信技术完成所有数据传输[2-3]。
空战训练系统组成和信息通讯如图1 所示。
图1 空战训练系统组成和信息通讯图
在空战对抗训练过程中,具体传输数据有机载系统实时下传至地面系统的飞机时空定位数据、武器投放数据、仿真武器弹道数据、武器攻击解算结果,用于实现战场态势监控,并防止安全事故发生。同时当机载系统模拟武器解算结果为“命中”时,实时告知目标机,以便目标机知悉已被“命中”。地面系统可根据实际情况实时向各机载系统发送导调指令,用于控制管理各架参与空战训练的飞机。
2 采集系统重要性
上述各种数据信息的源头,基本都在机载系统中采集和生成。虽然空战训练系统传输数据信息种类按已有协议已经固定,但实际各型飞机的飞行、武器等总线架构和通讯协议完全不同。如果各机型通用的弹道仿真和裁决模块直接与各型飞机交联,将造成采集与仿真裁决分工不清晰,维护工作困难等技术问题。因此在机载系统中需要一种前端信息采集系统,它负责将通信架构和协议不同的所有异形飞机信息转换为格式相同的通用信息,并将其传送给后续模块,是空战训练系统实现统型化工作的重要基础。前端信息采集系统在机载系统中与其他模块信息交联关系如图2 所示。
图2 机载系统中前端信息采集系统交联关系图
机载系统的前端信息采集系统直接面向载机火控、武控、航行航姿、电抗和飞行员直接操作的驾驶杆、油门杆等系统,硬件与载机各系统的信息输出线路交联,采集训练过程中机载系统所需要的原始数据,将原始数据解析后,提取其中有意义的信息,并在软件上按各项协议规定的格式,传送给机载系统其他需要该信息的模块[4]。
3 采集系统一般设计要求
对于前端信息采集系统,在满足硬件线路正确可靠连接,硬件接口电路读写正确,同时提供足够容量接收缓存的前提下,软件要实现的工作可概括为在第一时间完成数据搬运与转换,且不丢数、不错数,为空战训练系统其他模块实现实时评估和事后评估提供可靠基础保障。数据经过硬件缓存与软件处理和搬运流程如图3 所示,采集系统通过RS422总线给记录器传送数据实现事后评估;通过LBE 总线双口缓存给弹道仿真裁决模块传送数据实现实时评估。
图3 数据经过硬件缓存与软件处理和搬运流程图
第一时间完成数据搬运,意味着软件主循环周期应尽可能小,最大限度发挥CPU 的能力,尽量避免CPU 空跑。因为各路数据硬件接收接口缓存里随时会有新的数据到达,软件应保证在硬件缓存未填满之前,将缓存所有新收到数据取走并尽快完成下一步转换处理,最终将数据搬运至硬件输出接口缓冲里,硬件可自动在软件运行同时并行完成数据发送操作。
数据转换的要求是,软件应该按ICD 文件定义对接收到的数据进行解析,并能够应对异常的输入数据,保持软件运行逻辑不受异常数据干扰。当解析后的数据超过正常值范围时,软件应当给予必要的限值处理,保证不错数。软件运行时,要时刻保证硬件输入缓存从未被填满,数据时刻保持按时被软件取走并处理,且输出缓存也从未被填满溢出,才能实现数据不丢失。
为保证软件可靠完成任务,在设计过程中需要统筹规划,按下面思路设计:①明确所有硬件接口电路提供的接口种类和数量,明确软件操作硬件的接口方式、逻辑、地址范围等软件编程过程中必须使用的技术输入,以满足软件可编程的方式给出。②软件输入功能要依照硬件分类划分清晰,每个输入模块(如429 和422)处理数据要逻辑完整,自成一体,能妥善应对正常数据和异常数据输入。当处理完正常输入数据后,将详细信息提取出来,供软件后续模块使用。数据种类和数量基本与硬件保持一致。③软件内部维持一套输入模块产生的实时备份数据,根据实际需要保存转换前和转换后两种格式数据,供输出模块使用,供测试和排故维护工作使用,为其提供可靠的依据。④输出模块以硬件实际接口为基础,将输入模块产生的实时备份数据按输出协议进行打包输出。打包模块的各个子模块要考虑复用性,协议包内的每个字段生成功能相互独立、过程清晰,便于软件维护和转交。⑤软件在初始化过程中,要将各硬件电路已经接收到的数据清除,以免产生对后续正常执行的影响。⑥在软件的主体架构,即每周期的循环过程中,要考虑将数据输入模块放置在前,且调用周期尽量缩短,保证第一时间完成输入数据的处理。数据输出模块调用周期可适当加长,即凑一段时间数据后再一起打包发走,避免频繁打包增加不必要的协议头尾数据。
4 采集系统技术关键点
结合交联关系图,以某型机的机载系统为例,将前端信息采集系统设计过程中的技术关键点进行逐一介绍。
4.1 ARINC429 总线解析技术难点
根据空战训练系统信息需求,需要从载机各系统实时采集载机当前时刻的飞行姿态,传感器跟踪目标状态、武器发射等信息。由于上述几种信息在载机内部设备之间实际通讯过程中采用ARINC429 总线(以下简称“429 总线”),通讯拓扑属于点对点结构,因此需要在硬件层面将每一路429总线以类似三通方式汇集到采集系统的429 总线硬件接口电路,且不影响原机设备通讯。
软件方面主要思路是结合已有的总线接口ICD 文件进行信息解析。对于一次性指令信息,一般是1 个Bit 位,按ICD 定义进行有效和无效解析,如雷达是否截获等;对于有符号和无符号数值信息,一般是若干个Bit 位,按补码将其转换为10 进制数值,再按ICD 定义的最小比例尺相乘,可解析出实际真实物理值,如目标方位角、俯仰角等。
在软件解析429 总线数据过程中,存在如下两大技术难点:①429 总线数据理论上存在线上格式和编程格式两种格式[5]。每一个32 位429 字的低8 位为LABEL 码,其余为数据部分。码和数正常排列不反转为线上格式,都反转为编程格式。但两种格式可能衍生出码转数不转和数转码不转,一共存在四种格式。前期设计需要精确论证确定实际载机设备和总线ICD 文件采用哪种格式。不同格式LABEL 码的认读方式不同,如果不能确定,将会影响软件后续对所有信息解析的正确性。②对于火控系统的429 总线,其LABEL 码以固定规律循环发送,每一次循环包含16 个429 字并代表一个数据组,机载设备以此方式来表达载机火控系统当前状态。软件需要具备相应解析逻辑,先识别数据组的组号,再结合ICD 内容和实际需要信息对该数据组的某1Bit 位或某若干个Bit 位进行解析。
4.2 ARINC429 总线解析解决方案
针对第一个技术难点,通过图4、图5 进行说明。
通过对比可以发现图4 上半部分是线上格式,它与总线ICD 实际内容每一个429 字的每一位有明确的一一对应关系,如第32 位都是校验位,第31 和30 两位存在对应关系。由此可初步认为总线ICD 采用的是线上格式,非编程格式,因为编程格式的校验位在第9 位,与总线ICD 实际内容对应不上。
线上格式的LABEL 码认读方式为从第1 位向第8 位读。每个429 字LABEL 码的拆分如表1 所示。
图4 429 总线数据线上格式(上)和编程格式(下)对应关系图
图5 ICD 中可直接通过LABEL 码解析的数据内容
表1 每个429 字LABEL 码的拆分
后期经过实际载机下发数据验证,与总线ICD 内容完全符合。因此第一个技术难点通过确定429 总线数据格式为线上格式得以解决。由此除火控系统外其余各条429 总线内容可按ICD 定义的LABEL 码进行解析。为机载系统实现精确的时空定位和武器建模仿真以及地面系统的显示与回放工作做好充分的准备。
针对第二个技术难点,结合图6 进行说明。
火控系统429 总线上的数据以循环数据组的形式传输,每个数据组包含16 个32 位字,字号1~16 的LABEL 码依次为 200~207、210~216、277。从图 6 得知,其中 LABEL200字第29~24 位包含该数据组的组号X,跟随其后的15 个32位字属于该数据组X的内容,实际X为1~60,即所有可能存在的数据组的组号范围为1~60。
因此,所有数据组包含的信息能否正常被软件识别,关键在于能否顺利接收一个完整的数据组,并识别该数据组的第一个32 位字的数据组号。如果识别出有效的数据组号,则可以把该数据组其他32 位字的各数据位按ICD 内容对号入座并解析。
图6 ICD 中某循环数据组的头字内容
软件采用如下流程可识别不同数据组:①没收到头字时,寻找头字LABEL200。②收到头字后,正常接收,并寻找尾字LABEL277。③在没有收到尾字前,如果收到下一个头字,将前一个头字后面的数据全部保存到全局变量里,供以后使用。④在没有收到尾字前,如果接收到32 位字累计达到16 个字或以上,将整个16 个字废弃。这代表曾收到错误的不是16 个有效LABEL 码的错误32 位字。⑤在累计接收到小于等于16 个32 位字,且收到尾字时,将已收到的全部32 位字根据头字内容保存在某数组里,供后续使用。一共有60 个数组,对应保存1~60 数据组的内容。数据组号由LABEL200 字的28~23 位2 进制数对应的数值来确定。⑥软件其他部分根据实际需要,按数据组A、字号B、数据起始位C、数据终止位D 的形式提取具体数据内容。⑦数据更新频率以实际从429 总线接收到的数据更新频率为准,有新的数据组正常接收到时,将覆盖原有的旧数据组内容。
软件按上述流程解析,经过实践证明,可以正常识别每一个数据组,数据组内容与实际载机操作保持一致。
4.3 SLIP 协议收发技术
机载系统不同设备之间的RS422 接口电路软件层面采用的是SLIP(Serial Line Internet Protocol,串行线路因特网协议)协议进行通信[6]。SLIP 是一个简单的面向字符的协议。在每个用户信息帧的首尾各加一个特殊的标志字节END,封装成为SLIP 帧,如图7 所示。标识字节END 的编码为(0xC0)。
图7 SLIP 封装示意图
在发送的数据帧时,SLIP 协议将进行转义工作:帧中0xC0 字节换成0xDB、0xDC;帧中0xDB 字节换成0xDB、0xDD。在接收数据帧时,SLIP 协议对帧中的数据做相反的转义工作,即将0xDB、0xDC 换成0xC0,将0xDB、0xDD换成0xDB。
结合图7 可知,对于发送数据,软件在将数据写到硬件RS422 接口缓存前,需要对原始被发送数据进行格式转换,再将标识字节0xC0 填加到数据的首尾;对于接收数据,软件需要先寻找0xC0 字节并定位用户信息帧的开头,然后再寻找(可能需要等待硬件接收数据)下一个0xC0 字节,以确定一个完整用户信息帧。接下来再进行格式转换,可还原成原始数据。
软件发送操作过程如图8 所示。软件接收操作过程如图9 所示。
5 实验及结果
现以某次飞行记录文件为例介绍前端采集系统在实际实验过程中的性能表现和结果分析。
数据流向如图10 所示。
图8 软件发送SLIP 协议数据流图
图9 软件接收SLIP 协议数据流图
图10 记录器记录三个文件的数据流图
在前端采集系统中,软件将火控系统1、2 的每个429字直接转换为对应4 个字节从RS422 总线发送至记录器。软件将武控系统和航行航姿一共6 路429 总线的数据合并为一路RS422 数据发送至记录器,在此期间软件需要完成原始429 数据的挑选、转换与合成SLIP 协议数据包操作。数据挑选是将事后评估需要的429 数据挑选出来发送记录器,以便节省发送422 线路的通讯资源。所有的429 总线波特率为50 000 bit/s,RS422 总线波特率为 921 600 bit/s。
记录文件名称为:cok1.bin、cok2.bin、dt2.bin,在飞行两个多小时时间内它们各项参数如表2 所示。
表2 记录文件与串口资源占用率
根据表2 可知:cok1 和cok2 两路火控系统数据发送的两路422 线路通讯百分比为3.4%,代表这两路422 线路上数据发送基本处于空闲状态;而由于第3 路422 总线的源头是6 路429 总线数据,数据量合成在一起可达50K×6=300 Kbit/s,再加上SLIP 协议包装数据,实际数据量将更大,占用通讯资源百分比可达32%以上。
为了节省通讯资源,软件采用必要措施进行优化:将不必要原始429 数据剔除;以合适的固定时间间隔T发送合成后的SLIP 协议数据包,不采用收到即转发的方式。因为生成一个SLIP 协议数据包需要至少在有效数据之外增加10 个字节,具体有数据长度,检验和之类的附加字节。如果每个429 字对应的4 个字节都生成一个SLIP 包,最终通信量将至少扩大至原始的(10+4)/4≈3 倍以上,很有可能超过422线路的最大通讯容量92 160 Byte/s。
采用上述措施,软件最终生成的数据量占通讯资源百分比为23.5%。代表实际422 线路有3/4 的时间处于空闲状态,硬件发送缓存有3/4 的时间没有数据,可靠完成数据发送。
6 总结
本文讲述了空战训练系统中机载系统的前端采集系统的作用意义、实现要求、实现技术关键点和解决技术方案,并通过已经完成的实验数据验证了技术方案的可行性。对以往的工作进行详细技术总结,对此后的工作具有借鉴和指导意义。
虽然前端采集系统在整个空战训练系统中不属于顶层核心系统,但它在底层担负着所有信息通讯的关键任务,并将各型飞机不同通讯架构的信息转换为统一的消息口径向其他统型化模块提供服务。其数据量庞大,数据种类和协议繁杂,对软件整体规划和细节功能实现处都提出严格要求。采集系统可靠完成数据搬运工作是整个空战训练系统正常运转基石。