刘 波,李 静,朱金慧
(中国人民解放军63796部队,西昌,615000)
航天发射试验任务中,运载火箭飞行中速度、位置等实时状态在测控系统实时显示,但是其内部各系统的运行状态不可知,直接影响对火箭飞行状态的评判。航天发射试验任务快速评估系统(简称:快速评估系统),就是从火箭起飞开始,实时收集并实时判定飞行数据及航天器入轨情况,完成对飞行关键事件、各系统工作情况、运载火箭飞行情况及飞行任务结果的分析及故障定位,依据评定准则,得出飞行任务的快速分析评定结论[1]。
快速评估系统实现了飞行数据实时判读、智能评估、自动报表,提高领域专家分析评定的效率和质量,是一款准实时软件,其实时数据驱动的自动判读、智能评估、实时显示是其重点关键技术,对于其它实时软件的设计与实现具有重要参考价值。
快速评估依据实时飞行数据对火箭飞行情况进行评估,其核心是划分层次结构及构建判断矩阵。对运载火箭飞行结果的评估分解为对分系统的评估,对分系统的评估进一步分解为对设备/子系统和关键参数(具有决定性指标)的评估,从而形成自上而下的按层次逐层支配的关系。
分系统、设备/子系统、火箭(关键)参数统称为评估对象,具有层次性结构,利用组合模式建立系统评估模型[2],如图1所示。
图1 评估对象模型示意Fig.1 A Schematic for Evaluation Object Model
快速评估系统硬件组成包括接口微机、数据库服务器、数台评估终端、网络打印等,通过任务IP网与中心机通信。系统采用典型3层Client/Server结构设计[3],数据层提供来自于网络的实时飞行数据和来自于数据库的参数判读规则、系统评估规则及其它各类基本信息;功能层提供各类评估业务模型,包括参数及其判读模型、子系统及其评估模型、飞行时序事件模型、飞行结果评估模型;表示层提供人机交互接口,包括任务管理、评估规则管理、数据管理和实时评估等界面,如图2所示。
图2 快速评估系统逻辑结构Fig.2 Logic Architecture of the Fast Evaluation System
对各评估对象的分析评估归根结底是对火箭参数的分析判读,数据是进行评估的基础。系统从中心机接收数据处理为分类数据,再分发到每个参数成为其当前值(有些参数还需要系统进一步计算处理才能得到),参数对当前值判读得到其判读结果,然后子系统、系统等评估要素根据评估模型进行评估得到评估结果。软件界面UI实时显示参数当前值、数据曲线和判读结果以及分系统、关键动作等评估对象的评估结果。系统数据流视图如图3所示。
图3 数据流视图Fig.3 Data Flow Diagram
运载火箭参数较多(一般2000个以上,某些型号多达5000余个),采样频率较高(至少10 Hz),如果每接收到一包网络实时数据后都要完成解算、处理、判读、评估、显示等工作,整个处理周期耗时较长,必然影响下一包数据的接收,因此需要采取异步调用或多线程技术对数据处理流程进行动态解耦。
根据系统工作特点,实时数据评估可分为网络接收解算数据、实时数据评估、更新显示界面3个步骤,分别工作在 3个不同的工作线程,实现动态解耦,具体实现方法如下:
a)数据管理器增加一个链表用于缓存内部接口送来的数据,称为待处理数据链表;
b)内部接口接收解算中心机数据后,将数据提交给数据管理器,数据管理器将数据缓存到待处理数据链表中立即返回,此时内部接口准备好接收下一包中心机数据;
c)创建一个辅助线程用于驱动整个实时评估业务过程,该线程循环检查待处理数据链表,若有数据,从链表中取出、处理、分发,进而驱动参数判读和(子)系统评估,但基本不直接更新界面(个别情况例外);
d)主线程设置定时器周期更新界面,其处理序列如图4所示。
图4 多线程下的实时评估序列Fig.4 Multi-thread Real-time Evaluation Sequence Diagram
e)综上,待处理数据链表为两个线程所共享,根据多线程工作原则,需要对链表加锁同步操作以避免冲突[4],如图5所示。
图5 待处理数据链表多线程同步处理Fig.5 Multi-threaded Synchronization Processing of Pending Data Linked List
火箭飞行时序是火箭飞行过程中发出的时间程序指令集合,是根据火箭飞行状态实时计算后发出的浮动基准时间指令,和起飞信号一起,组成飞行时序的基准指令。时串是以箭机发出的时序信号为基础,按以时序时间为基准的预定时间发出步序和时串控制信号,以引爆和控制相应火工品和电磁阀门等受控对象,控制火箭各个飞行段的动作。当特定指令发生,火箭参数的动态特性将会发生变化,一个或多个评估对象将被评估。例如 tk1为箭载计算机发出的一级关机信号,当其发生时,火箭一级相关参数将停止自动判读,二级相关参数将启动判读,同时对火箭各分系统一级飞行段工作情况进行评估。
火箭时序时串指令的特性在 C#中使用事件(event)类型进行描述,而且使用事件类型之后,可应用观察者模式对参数判据改变、启动评估等功能进行设计,降低对象间的耦合性,将静态的组合关系变为运行时的动态组合关系。
系统实现了两种实时事件,一种是特定类别事件,依赖于多个参数或某一类别参数,中心机提供的数据包括遥测、外测、安控、通信等多种类别信息,不同类别的信息按表进行组织,特定类别信息的出现,本身代表现实事件,如卫星入轨参数出现表明星箭已经分离并且初轨已经确定,另一种是时序时串发生事件,这类事件依赖于单个具体参数。时序时串发生事件的生成算法如图6所示。数据管理器向参数分发数据时,调用参数的新数据到来响应函数,根据参数的不同类别,新数据到来响应函数有不同行为,时序时串参数首先检查新值与其当前值是否一致,如果不一致,则通过时序时串表来检查该值是否是一个有效的时序时串,如果是,则设置为当前值,并激发时序时串发生事件,否则不予处理。
图6 时序时串发生事件生成算法Fig.6 Timing Sequence Generation Algorithm
火箭参数在飞行过程中通常具有动态特性,不同时段其范围要求不同,可以用参数的分时段判据描述,一般表示为 JC={P,Tb,Te,Max,Min},各项要素说明如表1所示。
表1 判据要素说明表Tab.1 Criterion Elements Specification
按200个关键参数、每个参数平均10条分时段判据计,则规则库多达2000条记录。若每个参数每个数据判读均查询规则库,数据采样频率计10 Hz,则每秒需平均遍历记录1万条。这种额外的消耗对实时系统非常不利。因此提高判据调度和参数判读的效率是提高系统实时性的关键。
系统采用基于时间同步的参数判据调度算法,在恰当时机为每个参数指定判据,从而使参数判读过程中无需查询规则库,提高效率,算法序列如图7所示。
图7 参数判据调度算法序列图Fig.7 Parameter Criterions Scheduling Algorithm Sequence Diagram
算法主要包括4步:
a)初始化判据集合。
程序初始化阶段,数据管理器从参数判读规则库中载入判据,并初始化 3个集合,链表List<JC>toLoadList用于按Tb升序排列已有确定的开始时刻的判据,链表List<JC>toUnloadList用于按Te升序排列已有确定的结束时刻的判据,字典Dictionay<RocketParam,List<JC>>tsDict用于存放与特定时序时串相关的判据链表。
b)更新判据集合。
当时序时串事件发生时,数据管理器根据该时序时串参数更新tsDict中相应的Tb值和/或Te值,并更新到toLoadList和toUnloadList中。
c)基于时间同步的判据调度。
在实时评估线程中,数据管理器处理每一包数据时,先获取飞行时间fTime,遍历toUnloadList,卸载Te值小于fTime的所有判据,并从toUnloadList中删除;toLoadList类似处理。
d)数据分发和判读。
依次调用参数的新数据到来响应函数,向每个参数分发新的数据,每个参数调用数据判读函数依据判据进行判读。为进一步提高判读效率,使用NullObject模式用于判据不存在的情况[5]。
评估结果最终要以数值、文字、表格、曲线方式显示,因为显示界面(UI)工作于主线程,而数据处理、判读、评估工作于后台线程。在C#中后台线程直接或间接访问界面控件会引起跨线程操作异常。为解决这一问题,利用Control.Invoke方法将调用封送到主线程中,从而“感觉上”实现了跨线程更新[6],跨线程更新UI的步骤为:
a)将直接或间接更新 UI的操作重构为界面更新函数;
b)在原来更新UI操作的位置查询控件或窗体的InvokeRequired属性,若为true,则以界面更新函数的委托为参数调用Control.Invoke,否则直接调用界面更新函数。
系统在显示当前评估时段、起飞时间等界面上采用此操作。跨线程更新UI的优点是在事件响应函数中更新UI,逻辑清晰易于维护。
快速评估系统通常需要显示数十个参数的曲线,如果每个参数收到一次数据都更新自身曲线,将需要每秒更新数百次,而更新显示是占用CPU较高的“昂贵”操作,此种情况下,系统必将不堪重负,故采取定时刷新技术。参数曲线、参数数据列表等更新频率为1~2次/秒,飞行时间、北京时间等变化较快的信息更新频率为3~5次/秒,这样既减轻系统CPU占用率,又减少实时评估线程和主线程之间的耦合,同时也能满足判读、观察的需要。
快速评估系统分为主、副两个界面,主界面涵盖软件功能区和系统评估区,用于显示参数实时判读情况、系统评估结果,载入预先定制界面,监测临时特定参数;副界面根据用户需求,自由组合各类参数以表格、曲线等方式进行细节显示,较好地满足了参数数量繁多性、显示形式多样性、显示效果清晰化和用户操作快捷化等需求。同时,运载火箭本身是一个复杂的巨系统,对其飞行结果评估本身也有一个不断深化的过程,快速评估系统支持对评估要素、评估规则、显示形式、布局方式等全方位定制,较好地满足了评估不断“升级”的需求。软件投入使用以来,既在数十次成功发射中辅助岗位人员对运载火箭飞行结果进行快速、全面、准确的评估,也在如CZ-5 Y2发射任务定位飞行失利的原因过程中发挥了重大作用,同时软件的设计方法对于其他实时评估系统的设计具有借鉴意义。
快速评估系统通过综合使用多线程、实时事件、封装调用、定时更新等技术实现了基于实时数据驱动的自动判读和智能评估,通过应用不同的配置,能够完成CZ-3A、CZ-5、CZ-7等多个型号火箭的航天发射任务飞行结果快速分析,即使在长达7个多小时的特殊飞行任务中,系统能够在缓存大量实时数据的同时,具备良好的实时性和有效性。