贾海艳,于瑞年
(解放军92941部队,辽宁 葫芦岛 125000)
遥测信息是指挥人员实时监控及进行决策的重要依据,尤其是出现意外、查找问题时更是意义重大。由于不同任务遥测数据流编码、处理和显示要求差异巨大,通常每一套处理软件只适应特定的一种任务,为适应不同任务需求必须频繁修改软件,软件维护工作量大,因此需要对遥测数据处理技术进行研究。从遥测数据处理研究的现状看,遥测事后数据处理对通用性方面研究的比较多。文献[1]中通过建立数据库模型的方法对遥测数据通用化处理进行了讨论,对周期不一致问题是通过事后添加时间的方式进行解决,这种处理方法不适合实时数据处理;文献[2]选取最具代表性的3种遥测帧结构进行总结分析,并在此基础上阐述了遥测事后数据处理关键技术;文献[3]提出了采用Qt开发包实现遥测数据实时处理通用化的设计方案,是通过软件架构设计实现通用化处理;文献[4]利用组件化及系统可配置的设计思想,提出了一种高度灵活、可配置的遥测数据实时处理方法。这两种方法都满足遥测数据处理实时性要求,但都没有对遥测数据帧结构类型进行总结,缺少对特殊情况下复杂帧结构的处理措施,通用性不强。针对目前缺少既满足遥测数据实时性处理同时又兼顾特殊情况下复杂帧结构处理的方法,提出多任务遥测数据实时处理系统。
遥测数据实时处理就是实时接收遥测流并即时进行处理,即将遥测参数实时从原始测量数据中分路提取出来,解算成实际物理量值的过程。遥测数据实时处理需要在系统出现故障时,也要尽可能地保障实时性,因此需要具有容错能力。遥测数据实时处理系统典型架构如图1所示。
图1 系统典型架构图Fig.1 A typical system architecture diagram
处理系统按功能自底向上分为采集层、处理层及交互层。采集层主要是接收原始各路数据流并传输到处理设备,数据处理层主要实现数据的分路与并路及利用公式进行最终解算,交互层用于测量原始数据流及解算结果的展示。
遥测帧是原始遥测数据流存储和传输的基本结构,遥测帧不仅包括子帧、副帧、特殊副帧,而且包括复用帧、1553B总线等特殊形式的帧结构。不同任务对应不同类型遥测帧结构,同一任务遥测帧结构也可能不同,因此系统通用化设计和研制难度较大。通过对典型帧结构的总结与分析,研究遥测数据实时处理关键技术,实现数据处理环节和效率的优化。
虽然遥测数据流帧结构不尽相同,各有特点,但仍存在一定的共性。通过对遥测数据流帧结构进行分析发现,数据解算过程都类似树、枝、叶之间的关系,从整体到局部层层递进,如图2所示。如果将数据帧采用某种方式进行规范化表示,遥测实时处理软件就能适应各种遥测数据流处理,因此设计了一种分层协议树数据架构实现对遥测数据的解析。
图2 遥测数据解算树状图Fig.2 Solution tree of telemetry data
分层协议树数据架构如表1所示,数据结构采用7个字段来进行描述。
表1中Beginpos,Blength及IDBlength字段确定树的位置,IDvalue,Vbytes及Function字段确定枝的位置,Content字段表示叶的位置,叶表示要解算的遥测参数。针对分层数据结构,设计遥测数据解析过程,流程图如图3所示。
表1 分层数据结构Tab.1 Layered data structure
图3 遥测数据解析实现流程图Fig.3 Flow chart of telemetry data analysis
首先从“树”节点对数据包解析,解析出“树”节点的数据内容,以此数据内容为数据包,递归对其子节点即“枝”、“叶”进行解析,直到参数解算完成。
通过配置表完成分层协议树的赋值,配置表设计如表2—表4所示。配置表的完成通过遥测方案规划来实现,遥测方案规划在人机交互界面完成,通过后台程序写入数据库。
表2 树层配置表Tab.2 Root layer configuration table
表3 枝层配置表Tab.3 Branch layer configuration table
表4 叶层配置表Tab.4 leaf layer configuration table
配置表是在系统启动前完成的。对于不同的任务,数据处理人员不必更改程序代码,只需针对相应遥测数据帧结构完成遥测方案规划即可。
不同任务处理遥测数据流的数量是不同的,一个设备可能有一路或多路遥测数据流,设备越多,数据流的数量就越多。通常对数据流的处理方式是按照时间和位置的顺序进行拼接[5-7]。这种方式虽然减少了处理数据的工作量,但没有充分利用所有信息源的遥测数据,使得到的信息不够全面,对处理出的数据进行实时决策时缺乏整体的认识,遇到关键问题缺少判断的依据。因此设计了多路遥测数据并行处理与优选,利用多线程数据处理技术[8-9],将一路遥测数据流设计为一个线程,使多路遥测数据在不同线程中同时处理,实现多路遥测数据并行处理。针对遥测实时处理数据采集量大,实时性要求高的特点,在系统设计时需要应用安全队列技术。安全队列的作用就是对数据起到缓冲作用,防止大流量数据来临时,信息来不及处理出现丢帧。同时,安全队列也是运用多线程技术进行数据处理的基础。安全队列处理方法是以队列为数据存储结构,将数据临时存储在队列中,按照先进先出的原则处理,同时使安全队列成为自动事件触发多线程,并且可以被多线程安全使用的数据结构。对于多路遥测数据系统中通常只选取一路进行输出。传统的选优方法存在高优先级的质量不好的数据被选择输出的问题,这直接导致遥测实时数据处理精度降低。针对此类问题提出增加基于原始帧的融合数据做为一路高优先级信息源参与选优,提高遥测实时数据处理的精度[10-11]。
基于原始子帧的融合数据是对同一目标从多个遥测设备接收的基于二进制源码的原始数据子帧中采用时差修正、丢帧插补、拼接检查等步骤进行处理[12-13],然后形成一个包含完整帧结构流的遥测数据包。这路融合结果去除了由于丢帧导致的乱散数据,精度较高。原始帧融合过程如图4所示。
图4 遥测原始帧数据流生成Fig.4 Generation of telemetry original frame data stream
在任务执行过程中存在以下三个问题:
1) 测试并不能检测出程序的所有问题,在程序运行过程中如有意外发生,导致按照正常的处理过程输出处理结果,造成处理结果质量差或错误,影响任务的决策;
2) 任务日益复杂的情况下有时有多变性的需求;
3) 采取人机结合以人为主地切换方式,确保每次操作准确性。
因此采用在线控制技术设计了遥测实时处理作业人工干预机制,在原来封闭运行的实时数据处理过程中,把人的因素加进去,使用人为干预的手段对进程施加影响,支持任务执行过程中不停止作业情况下,动态调整遥测设备分工,增加或修改遥测参数,可满足复杂任务的遥测状态快速切换和突发情况应急参数处理要求。
人工干预处理包流程图如图4所示。
图5 人工干预处理包Fig.5 Manual intervention processing package
多任务实时遥测数据处理系统采用VC++开发实现,系统运行稳定。
为验证系统性能,完成两个仿真任务,每个任务具有3路遥测数据,在不修改软件代码情况下实现多任务处理,并且实现了并行处理与优选。图6、图7给出各路遥测数据的处理结果。将数据处理结果与真值进行比对,结果表明该系统完全符合技术指标要求。
图6 仿真任务1遥测时间速度变化率结果Fig.6 Time velocity change rate results of simulation the first task telemetry data
图7 仿真任务2时间角度变化率结果Fig.7 Time angle change rate results of simulation the second task telemetry data
图8为以遥测数据高度为例,多路遥测数据并行处理时融合信息源的处理结果与某原始单信息源的比较结果。通过融合后完整帧数与某设备接收完整帧数比对,完整帧数数目增加7.24%。
图9为在线控制技术的实现。某目标处于任务状态,点击此目标就会弹出删除目标对话框,点击此对话框目标就会删除,与目标关联的所有数据都会随之删除。
图9 在线实时控制Fig.9 Online real-time control
本文提出了多任务遥测数据实时处理系统。该系统利用遥测数据流结构逻辑分层软件定义、多路遥测数据并行处理与优选及遥测作业实时在线控制等技术设计,满足遥测数据实时处理通用性、实时性、可靠性需求,能够提供全面准确的遥测数据,支持在任务执行过程中不停止作业的情况下,动态调整遥测设备分工,增加或修改遥测参数,满足复杂任务的遥测状态快速切换和突发情况应急参数处理要求。使用结果表明该系统具有遥测数据处理需求的动态适应能力,具备对不同任务良好的兼容性。