基于事件驱动的异步并行自动流程设计方法

2023-12-17 11:07张俊楠段菲凡欧阳芙
导弹与航天运载技术 2023年5期
关键词:重传主线驱动

张俊楠,段菲凡,贾 睿,欧阳芙,王 威

(1.北京宇航系统工程研究所,北京,100076;2.中国家用电器研究院,北京,100037;3.中国运载火箭技术研究院,北京,100076)

0 引言

运载火箭可靠、快速发射的能力一直备受关注。在确保发射可靠性的基础上尽可能缩短发射准备时间,对提升火箭的快速反应能力具有重要意义。受制造工艺水平限制,国产器件性能参数浮动范围较大。为确保发射程序稳妥可靠、万无一失,传统运载火箭发射程序设计采用延时查询机制,基于设备收到指令并完成规定动作的设计指标,考虑参数浮动及一度故障等因素,设置合适的固定延时并留有安全余量。发射流程由地面测发系统驱动,对火箭进行射前功能的全面检查,主要完成地面准备、箭体射前检查、卫星射前准备、方向对准、指挥节点授权等多项技术准备工作,协同工作多,发射程序耗时长[1]。同时,随着航天发射服务业务拓展,地面测发系统日渐庞大,由多个分系统相互协作完成主线发射任务,同时各系统内部有自己独立的工作流程。由于各系统处于异步并行工作状态,并受硬件资源、通信条件等因素影响,会造成各系统完成工作流程的实际时间存在离散性[2-3]。当主控机延时查询进行工作状态巡检时,不仅造成了时间资源的浪费并且会在通信网络上传递大量无用数据[4-6],致使发射流程有效时间未被充分利用、总线负载占用率大,影响发射流程的可靠性及任务效率。

面向事件驱动的流程设计,由任务执行方在完成工作的第一时间向需要驱动的外系统发送驱动事件,最大限度节省数据引擎周期调用或主控机延时查询的时间间隔损失。仅通过指令帧传递驱动流程运行,相较周期巡检模式在大量节省了通信资源[7-8]的同时对通信接口可靠性提出更高的要求。为保证驱动事件被可靠地接收并执行,需要重点解决驱动帧收发的可靠性问题[9-10]。

针对这一问题,通信领域开始研究基于事件驱动的控制方法,摒弃主控程序周期查询机制,将流程需要外部输入条件才能继续下一步工作的事件作为驱动,触发各系统流程并行工作。其中文献[11]提出非线性切换系统的异步事件驱动控制,解决子系统与控制器之间的异步切换带来的系统的不稳定问题;文献[12]基于事件驱动采用网络套接字技术,提高网络通信的高并发与稳定性;文献[13]提出基于事件驱动函数的分布式协同控制方案,有效降低了控制输入更新频次及信息交互量。上述文献分别从提高子系统切换控制器全局稳定性、增强网络服务器多进程实时处理能力、降低控制输入更新频次的不同角度,证明了事件驱动对于高并发异步工作流程的良好适应性。

本文面向运载火箭发射流程设计,以确保快速可靠发射为目标,提出基于事件驱动的异步并行自动流程设计方法,改变传统基于主控机延时查询机制的流程设计思路,不再设置固定延时等待,以事件驱动发射支持、控制系统、卫星控制、定位定向、指挥通信和安全控制六大系统流程并发异步自动运行,最大限度地缩减各系统间串行等待时间。同时采用基于时间差分的重传校验方法,驱动多线流程可靠并行工作,实现运载火箭可靠快速发射。

1 相关概念

1.1 自动流程设计程序

基于事件驱动的异步并行自动流程设计程序如图1所示,具体步骤如下:

图1 自动流程设计程序Fig.1 Automatic process design program

a)将主线任务进程按照时间顺序进行排列,生成全系统动作时间链;

b)按照动作要求向各系统分解任务要求,分系统执行该任务也存在各自不同的流程顺序,生成分系统动作时间链;

c)将能够由分系统独立执行,不需要外部输入条件的工作流程划分为独立子流程,分系统动作时间链将被划分为多个独立子流程的串联关系;

d)满足每个独立子流程需要的外部输入条件,即驱动子流程顺序执行的触发条件;

e)对触发条件进行合并归类,顺序排列后生成驱动事件队列,每个动作执行完毕的时间为生成驱动事件的时间总和;

f)通过对首个驱动事件的触发,检验自动流程执行的匹配性和耗时指标的可达性。

1.2 系统动作时间链

全系统相互协作的目的是完成主线任务,而主线任务可以切分为若干个动作,这些动作在时间线上是串行排列的。将主线任务进程动作按时间顺序排列,即全系统动作时间链。

对应每一个动作,均可以分解为若干分系统任务,当各任务均完成后,判定该动作执行完毕。

1.3 独立子流程切分

对应每个单项任务,分系统在时间链上也要按照流程执行不同动作,其中一些流程可以在分系统内部闭环,但一些流程点上需要与其他分系统合作,需要一定条件才能完成。

将能够由分系统独立闭环执行的工作流程划为独立子流程,那么分系统动作时间链将被切分为多个独立子流程的串联关系表示。

1.4 驱动事件队列

对于每个分系统任务,串行独立子流程间存在多个需要满足的外部输入条件,以驱动子流程顺序执行。将能够产生满足条件的驱动称为驱动事件,而驱动事件是由其他任务子流程生成的,在时间线程呈现串行排列。

1.5 自动流程触发检验

通过触发首个驱动事件,驱动事件队列将按照逻辑顺序自动运行,触发各分系统以并行异步方式自动完成相互协作,推进流程自动运行直至主线任务执行完毕。多次触发自动流程,统计全流程时间消耗数据,检验自动流程运行匹配性的同时,评估流程耗时指标。

2 方法介绍

2.1 系统动作时间链建模

全系统动作时间链如图2 所示,主线任务由N个动作串行完成,对于动作1,又需要n1个分系统任务均执行完毕作为进行下一动作的条件。

图2 全系统动作时间链Fig.2 Full system action time chain

分系统任务1在n个事件点上需要外部驱动条件,被切分为n+1个独立子流程的分系统动作时间链,分系统动作时间链如图3所示。

图3 分系统动作时间链Fig.3 Subsystem action time chain

2.2 驱动事件队列提取

分系统任务1 的子流程2 开始执行的条件为满足驱动事件1,该事件由分系统任务n1的子流程1生成。分系统任务n1的驱动事件2由分系统任务1的子流程2生成。分系统任务1 切分为n+1个子流程,分系统任务n1切分为m+1个子流程,则分系统任务的协同流转可以表示为n+m+1个驱动事件的时间队列,最后一个分系统长线任务即分系统任务1的子流程n+1,生成驱动事件n+m+1,等同为n1个分系统任务均执行完毕,驱动主线任务的下一个动作继续执行,驱动事件队列如图4所示。

图4 驱动事件队列Fig.4 Drive event queue

2.3 基于时间差分的重传校验方法

2.3.1 发送重传流程

发送方实时监听通信端口,随时响应驱动事件。完成规定任务后发出指令帧,为与重传帧区别,发送帧序号+1,确认标识位置1,等待应答。

为了确保事件驱动指令发送的可靠性,基于时间差分方法设计发送重传机制,若发送方未在发出该帧后Ta时间内收到应答,则重发该帧,帧序号不变,重发次数加1。若重发C次后仍未收到应答帧,提示错误,发送方的指令超时时间为C×Ta。帧发送重传流程如图5所示。

图5 发送方重传机制Fig.5 Transmitter retransmission mechanism

2.3.2 通信帧完整性判别

接收方收到通信帧后,首先进行通信帧完整性判别,对于结构不完整、协议未规定、校验不正确等情况的通信帧进行前端剔除,不对该帧进行处理及应答,等待发送方重新发送。保证进入后续合理性判别的通信帧均为符合协议的完整帧,降低通信干扰,提高通信效率。通信帧完整性判别流程如图6所示。

图6 通信帧完整性判别流程Fig.6 Communication frame integrity determination flowchart

2.3.3 通信帧合理性判别

完整性合格帧将进入合理性判别流程,基于时间差分方法剔除帧序号相同的重传帧,保证系统可靠响应新的驱动帧。合理性判别流程如图7所示。

接收方将帧序号不同的通信帧作为新帧处理,但发射系统组成复杂,在异步工作过程中,经常存在设备重启或备份切换的情况,此时发送方的帧序号将重新累加,可能与前序帧重复,为避免被接收方判定为重复帧误丢弃,基于时间差分方法将Tc时间外的帧序号相同帧识别为新帧。

接收方Ta时间内发送应答帧,表示正确接收,丢弃Tc时间内帧序号相同的通信帧。为了保证重传帧的工作可靠,时间差分Tc>C×Ta。

2.4 主线任务进程耗时计算

全系统动作时间链得到主线任务总耗时T:

式中N为主线任务动作数;Ti为动作完成时间。

动作i分解为ni个分系统任务,其中第j个分系统任务切分为mij个子流程,则完成动作i可以表示为Li个驱动事件的序列:

设第k个驱动事件生成的时间为Qik,每个驱动事件需要组帧发送,网络延时为Yik,帧重发次数Cik,则动作i完成时间为Ti可以表示为

综合上式,最终全系统动作时间链得到主线任务总耗时T可以表示为

3 火箭发射流程仿真验证

以事件驱动异步并行自动流程设计方法,构建发射支持、控制系统、卫星控制、定位定向、指挥通信和安全控制六大系统流程自驱运行模式,开展任务进程耗时的仿真验证并与周期查询机制对比。

3.1 发射系统动作时间链

发射流程从启动发射程序至点火起飞共分为支架调平、诸元装订、定向瞄准、解锁授权、能源转换5个动作。运用本文方法,以支架调平动作为例,需要控制系统、发射支持、定位定向、指挥通信4个分系统协同完成,其中控制系统可以拆分为加电自检、上传飞行程序、静态功能检查3个子流程,发射支持系统、定位定向系统、指挥通信系统分别由7、5、2个子流程构成。发射流程系统动作时间链如图8所示。

图8 火箭发射流程全系统动作时间链Fig.8 Full system action time chain of rocket launch process

3.2 驱动事件队列提取

根据系统动作时间链,按照子流程间的执行条件提取驱动事件,以支架调平动作为例,控制系统、发射支持、定位定向和指挥通信协同完成规定动作。控制系统加电自检后,由发射支持系统配电完毕后驱动上传飞行程序流程,待发射支持系统发射架稳定后执行静态功能检查流程,其余子流程协同动作见图9,构成驱动事件队列,最终以支架调平好驱动下一主线动作开始执行。其中控制系统需要2个驱动事件完成全部子流程,发射支持、定位定向和指挥通信系统分别需要7、4、1个驱动事件。

图9 驱动事件队列Fig.9 Drive event queue

3.3 自动流程触发检验

根据火箭发射系统构建通信仿真环境,为方便对比事件驱动方法与周期查询方法在时间消耗上的差异,设置相同的网络通信质量参数及重传校验参数。设定以太网发送延时Ta=100 ms,误码率1%,重传时间Tc=1 s,重传次数C=3。

图8 主线任务由N=5 个动作串行完成,对于每个动作切分为子流程任务量为矩阵n:

每个分系统任务切分为子流程数矩阵m:

如图9对应构建驱动事件队列,每个驱动事件的单机时间按照设计指标进行赋值,生成时间矩阵Q=[Q1Q2Q3Q4Q5],以第1个主线动作“支架调平”为例,矩阵Q1为

在系统间协作过程中,周期查询机制的机理是通过主控周期查询状态来驱动流程,待子流程工作完毕后回复主控满足执行下一步工作的条件。相较事件驱动的流程机制,相同网络条件下,完成协作动作需要一查一回两次通信,而事件驱动则只需要通信一次,通过对两种机制的发射流程耗时进行1 000 次仿真计算,全系统主线任务动作总耗时T随仿真次数的分布见图10。由图10 可以看出,相同的网络拓扑及通信参数条件下,两种通信机制的流程动作时间和随通信仿真次数的分布基本稳定在一定时间带内。事件驱动机制耗时小于周期查询机制,具体流程耗时差见图11,流程仿真计算结果见表1。

表1 全流程仿真计算结果Tab.1 Full process simulation calculation results

图10 流程动作时间随仿真次数分布Fig.10 Distribution of process action time vs simulation count chart

图11 两种模式的时间差分布Fig.11 Distribution of time difference between two modes

从仿真结果可以看出,事件驱动机制能够有效提升任务时间效率,分析原因如下:

a)通信过程中周期查询机制需要主控查询1次再接收状态反馈1次,原理上其通信次数是事件驱动的2倍,时间消耗随网络通信时延线性增加。

b)当误码发生后,周期查询机制会间隔一个通信周期重新查询,时间消耗随网络通信时延线性增加。

c)若周期查询时间先于子流程完成时间,主程序会等待下一周期查询结果,直至收到子流程完毕的回复,存在查询周期内的时间资源浪费,时间消耗随异步查询的次数线性增加。

4 结束语

与周期查询不同,事件驱动机制由任务执行方在子流程工作完毕后第一时间主动发出驱动,触发各接收方异步并行执行子流程任务,缩短了系统间的等待时间,降低了网络通信频率。本文面向运载火箭发射流程设计,提出基于事件驱动的异步并行自动流程设计方法,以全系统时间链最优为目标,结合基于时间差分的重传校验方法,既节约了网络资源又保证了可靠驱动六大系统异步运行,实现了火箭快速可靠发射。

猜你喜欢
重传主线驱动
基于模糊PI控制的驱动防滑仿真系统分析
屈宏斌:未来五年,双轮驱动,砥砺前行
人物报道的多维思考、主线聚焦与故事呈现
轨旁ATC系统门控柜接收/驱动板改造
更加突出主线 落实四个到位 推动主题教育取得实实在在成效
面向异构网络的多路径数据重传研究∗
数字主线
基于S3C6410的Wi-Fi驱动移植实现
数据链路层的选择重传协议的优化改进
下沉和整合 辽宁医改主线