钱文高 马红岩 耿 宏
1(中国民航大学电子信息与自动化学院 天津 300300) 2(中国民航大学基础实验中心 天津 300300)
大型民用飞机虚拟维修仿真为机务维修人员提供虚拟维修训练环境,使受训人员得到全方位的训练[1-3],快速提高其维修技能,有效降低飞机维修人员的实训成本。
目前,对虚拟维修的研究主要集中在维修复杂行为关系的描述,其实质是将维修部件作为维修主体,描述其状态迁移的过程。文献[4]使用维修任务网MTN建立维修任务网络图,通过MTN驱动仿真环境,实现某型号飞机组件的虚拟维修。但该方法实现的是维修起点至终点间一种可行的维修序列仿真,而飞机维修任务的起点至终点间往往不止一种可行的维修序列,若要实现维修任务所有可行的维修序列仿真,则需要生成维修起点至终点间所有可行的维修序列,然后对这些序列一一建模,建模工作量十分庞大。针对该问题,文献[5]使用优先约束矩阵规范飞机虚拟维修序列间的约束关系,通过优先约束时间有色Petri网模型实现动态虚拟维修过程,避免了对所有维修序列建模带来的工作量庞大的问题。由于附属在同一维修对象上的维修序列可能不止一个,且序列间优先约束关系具有非显性特征,造成约束关系描述冗余且不准确,另外各个单元缺乏统一规范的表达,均导致建模工作量增加。文献[6]提出了一种将UML和Petri网结合的建模分析方法,其兼顾了两者的建模优势,将之应用到了一个FMS的建模和分析,其中使用UML描述系统的静态特征部分对本文规范飞机维修实体虚拟维修行为的统一性表达提供了参考。
基于此,本文结合UML状态机和Petri网描述飞机虚拟维修过程,在UML状态机规范表达维修实体行为模型的基础上,将其转化为Petri网子网模型,该子网模型使用动作集描述虚拟维修动作输出,以提高虚拟维修仿真度。依据维修部件间的联结关系构建拆卸和安装双向邻接矩阵,精简、准确地表达约束关系。利用邻接矩阵约束各子网间的维修行为关系,支持双向维修操作,进而建立可动态重组子网的虚拟维修过程模型,以进一步降低建模的工作量。
状态机图描述从一种状态迁移到另一种状态的控制流程,常用来描述系统的动态行为[7],在多数情况下用来描述对象接收到外部事件触发后产生响应的过程。UML状态图[8-9]可表示为一个8元组Ni=(S,T,E,G,A,R,S0,Sa),其中:S为对象i的非空状态集,T为该对象的迁移集合,E为触发迁移发生的事件集,G为判断触发事件能否发生的监护条件集合,A为迁移激活后执行动作集合,R为迁移最小触发时间间隔的时间集,S0为源状态,Sa为目标状态。
状态机可以描述维修对象的动态行为[10-11]。维修对象主要指飞机可操作的维修实体单元,是虚拟维修的重要组成部分,主要包括维修部件和维修资源两大类,可以用UML状态机的图形化语言规范维修实体的状态、迁移等维修行为。
1.2.1维修部件状态迁移元模型
维修起点时维修部件i处于装配就位状态,经拆卸操作后处于已拆卸状态,可将部件i的源状态记为Sinstalled,目标状态记为Sremoved,其拆卸操作状态迁移元模型如图1所示。
图1 维修部件拆卸状态迁移元模型
当触发事件Ei发生时,若拆卸用的工具设备及相关的维修资源均就位且满足最小触发时间间隔,则监护条件Gi为1,执行动作Ai,完成变迁,到达目标状态Sremoved;否则,监护条件为0,不响应触发事件Ei,此时执行动作为∅,即不执行动作,保持原状态不变。
图2 维修部件安装状态迁移元模型
1.2.2维修资源状态迁移元模型
维修资源分为可变维修资源和不可变维修资源,用于约束或支持维修部件的状态迁移,是虚拟维修模型中维修状态改变不可或缺的推进因素。
可变维修资源通常指随着维修进程的推进,其规模可被相应的状态迁移消耗,与不可变维修资源相比,不存在使用、释放的循环过程,其状态迁移元模型如图3所示。
而不可变维修资源在虚拟维修中通常处于使用、释放的循环过程,相应的状态迁移只暂时占用不可变维修资源,当迁移完成则释放不可变维修资源,其初始状态和目标状态为同一个状态,其状态迁移元模型如图4所示。
图4 不可变维修资源状态迁移元模型
不可变维修资源初始状态为Sidle,当使用该资源的触发事件Ej发生时,因其初态为Sidle,监护条件Gj为1,执行动作Aj,其状态变为Sbusy,即占用状态。当释放不可变资源的触发事件Er发生时,监护条件Gr判断是否满足释放条件,若满足则执行释放动作Ar,动作完成后不可变资源重新回到状态Sidle。
UML状态机以其图形化语言可用来描述某个维修部件的维修状态、迁移,但一个完整的虚拟维修过程通常涉及多个维修部件,且UML状态机具有非显性标识语义特征[12],导致其无法直接被用于描述飞机系统多个维修部件间的复杂行为关系。
而Petri网是一种用于描述具有异步、并发特征的离散事件系统的数学建模工具[13-14],可用其形式化手段描述普通状态机模型。因此,在UML状态机规范化表达维修实体行为元模型的基础上,将其转化为Petri网子网模型,并规范各子网间的顺序、并发、冲突等关系表达,进而建立可动态重组子网的Petri网虚拟维修过程模型。
将UML状态机描述的维修实体元模型转化为Petri网子网模型,是建立含有可动态重组子网的Petri网虚拟维修过程模型的必要环节[15]。维修实体ei对应的子网模型记为PNi。
PNi=(Pi,Ti,Fi,Wi,Mi0,Ei,Gi,Ai,Ri)
(1)
(1) (Pi,Ti,Fi)是子网模型的基网,虚拟维修中,Pi={Pi0,Pi1,Pi2,…,Pin,Pia}为实体ei的状态集,其中:Pi0和Pia分别为实体ei的源状态和目标状态,且子网只有在源态或目标态下才可以作为前置条件激活其他子网;Pi1,Pi2,…,Pin表示ei的中间状态;ei应至少包含Pi0和Pia两个状态。Ti表示实体ei状态间的迁移集合,满足条件Pi∩Ti=Pi∩Fi=Ti∩Fi=φ。Fi为子网PNi的有限弧集合,映射关系为Fi→Pi×Ti∪Ti×Pi。
(2)Wi是定义在Fi上的权函数,虚拟维修中表示变迁对维修资源的消耗量。
(3)Mi0是子网PNi的初始标识。
(4)Ei为触发变迁Ti发生的事件集,主要为人工外部触发事件和内部消息触发事件。
(5)Gi为判断子网变迁Ti是否发生的监护条件集,虚拟维修中,主要根据维修方向判断维修资源的状态和最小触发延时时间两方面内容。
(6)Ai为变迁激活后,执行的动作集。维修实体的动作主要有平动、转动及两者合成的螺旋运动,首先将维修实体动作执行的初始位置坐标用四元数来描述,记为L0:
L0=[0,x0,y0,z0]
(2)
将该点绕单位向量n=[nx,ny,nz]做θ角的旋转用四元数表示为R。
(3)
将旋转后的目标位置坐标记为Lt1。
Lt1=RL0R-1
(4)
当维修实体进行平动运动时,将其平动后的目标位置记为Lt2。
Lt2=L0+[0,Δx,Δy,Δz]
(5)
式中:Δx、Δy、Δz分别表示沿三个轴的平移分量,则维修实体运动的目标位置可记为Lt:
Lt=Lt1+Lt2
(6)
式中:Lt1用于描述实体的旋转运动;Lt2用于描述实体的平动运动。两者可合成相应的螺旋运动。
Ai使变迁Ti激活后,执行完相应的维修动作后才可进行状态转化,避免了跳跃性虚拟维修动作带来的仿真度下降的问题。
(7)Ri为非负时间集,代表变迁Ti间的最小相对触发时间间隔。因为某些虚拟维修变迁的物理动作完成后,还需要一些时间延迟,才可以执行后续操作。定义∀rij∈Ri,rij=0代表实体ei相应的变迁tij为即时生效变迁,rij>0则代表tij为延时生效变迁。
维修部件作为被操作对象,是虚拟维修的主体,而维修资源是伴随维修部件状态的改变而发生相应的使用、消耗变迁[16],是支持和约束维修进程的关键因素。因此,如何完备描述各维修部件间的约束关系是解决飞机虚拟维修中复杂行为关系的前提。
2.2.1约束关系概述
一个完整的维修任务所涉及的非空有限维修部件集记为V。
V={vi|vi∈V,i=1,2,…,n}
(7)
式中:vi为V的元素,即维修部件。将vi定义为图的有限节点,使用有向弧表示各部件间的约束关系[17],绘制有向图G=
图5 一对一约束关系
2.2.2多部件约束关系的表达
有向图G=
对于有向图G=
(8)
式中:i,j=1,2,…,n。当存在vi指向vj的有向弧时,aij记为1,代表节点vi的操作优先级高于vj;否则,aij记为0,代表节点vi和vj间不存在优先约束。
显然AG=(aij)n×n为n阶方阵,且元素值为0或1,其中:第i行元素的和为节点vi的出度,第i列元素的和为节点vi的入度。
2.2.3约束关系的更新
随着维修进程的推进,维修部件间的约束关系也随之更新,该过程可由图的操作表示。假设初始状态维修部件均装配就位,设维修部件vi∈V,当vi拆卸完成后,执行图的操作,从有向图G中删除节点vi及其关联的所有边,该过程称为删除节点vi,删除节点vi得到的图记为G-vi。更新后的邻接矩阵记为AG-vi=(aij)(n-1)×(n-1),是将原邻接矩阵中节点vi对应的行和列元素均删除后的矩阵。可见,邻接矩阵的规模和维修进程是相对应的,可以实时表示当前的维修进程。
在详尽阐述子网模型和维修部件间约束关系的基础上,进一步构造可动态重组子网的Petri网模型PN:
PN=(∑PNi,AG)
(9)
式中:∑PNi为维修实体子网模型集合;AG为维修部件间的邻接矩阵,用于表达维修部件间的优先约束关系。
∑PNi=(P,T,F,W,M0,E,G,A,R)
(10)
W是定义在F上的权函数,F定义为:
F={Fi|Fi∈F,i=1,2,…,n}
(11)
Fi为子网PNi的有限弧集合,对于∀fij∈F,W(fij)表示有向弧fij上的权值。
M0为Petri网的初始标识:
M0={Mi0|Mi0∈M0,i=1,2,…,n}
(12)
式中:Mi0为子网PNi的初始标识。对于∀pij∈Pi,M(pij)表示标识向量M中库所pij所对应的分量。
定义1维修部件vi的变迁tij在标识M下触发的条件为:
(1) 对于j=1,2,…,n,满足邻接矩阵AG中∀aji=0。
(2)rtij≥rij即变迁tij的触发时间间隔rtij大于等于最小相对触发时间间隔rij。
(3) ∀P1∈*tij⟹M(P1)≥W(P,tij)。
定义2变迁tij在标识M下使能,变迁发生后:
(2) 删除邻接矩阵AG中vi对应的行和列即AG=AG-vi。
通常一个完整的虚拟维修过程主要包括拆卸和安装两个可逆的操作过程,此处主要以维修中的拆卸过程为例阐述邻接矩阵约束下的可动态重组子网的Petri网虚拟维修过程实现方法,如图6所示。
图6 虚拟维修过程实现流程
假设拆卸维修起点为所有维修部件均处于装配位,终点为维修部件均已拆卸。该维修任务中维修部件的状态通过可更新的邻接矩阵进行记录,实现方法过程如下:
(1) 根据A320飞机维护手册中拆卸任务的内容确定维修部件的范围,记为维修部件集V={v1,v2,…,vn}。依据部件当前状态将部件分为安装缺省部件nullvi和拆卸缺省部件vinull两种,其中:前者是指当前处在待拆卸状态的维修部件,只能执行拆卸操作,后者为拆卸缺省部件。维修部件的缺省状态不是固定不变的,随着维修过程的推进,状态间可以相互转变。
(2) 依据维修操作流程和维修部件间的联结关系绘制有向图G=
(3) 根据有向图生成初始邻接矩阵AG=(aij)n×n。
(5) 判断当前是否有触发事件E发生,即E是否为∅。若为∅,则等待触发事件发生;否则,判断当前维修部件vi是否为安装缺省部件nullvi是否成立,若是则执行拆卸操作后续实现流程,否则执行安装操作后续实现流程。下面在假设触发事件是针对维修部件vi的拆卸操作的前提下,阐述后续的实现过程。
(6) 检索矩阵C中拆卸非缺省部件(即安装缺省部件)nullvj与部件vi约束关系,若相应的列元素cji均为0,说明满足约束条件,可继续判断vi的拆卸监护条件Gi值是否为1。若该变迁需要的维修资源就位且满足最小触发延时间隔,则监护条件为1,执行相应的拆卸动作,完成变迁;否则等待新的触发事件发生。
(8) 判断是否到达拆卸终点,即C==(null)n×n是否成立,若是则说明到达维修终点,否则等待新的触发事件。
可动态重组子网的Petri网虚拟维修过程旨在通过邻接矩阵约束各子网间的优先关系,以响应实训人员的非规范操作。目前,该模型已应用于A320飞机虚拟维修训练器,该训练器主要用于机务维修专业学生和航空公司维修人员实训。为便于建模和计算机仿真,制定如下虚拟维修操作规则:(1) 同一时刻实训人员只能有一个操作对象;(2) 虚拟维修操作不损害操作对象;(3) 功能和结构相同的紧固件作为一个零件处理;(4) 当维修部件操作需要维修资源支撑时,需要实训人员使用相应的维修资源后,才允许操作该维修部件;(5) 拆卸操作完成后,要解除该部件相关的约束关系。
依据以上规则,通过建模和仿真,实现飞机部件的虚拟维修过程。下面以A320飞机ATA 28章燃油系统交输活门作动筒的拆卸为例,阐述该部件虚拟维修的具体实现过程。
1) 根据A320飞机维护手册中TASK 28-23-51-000-001交输活门作动筒的拆卸内容[20]确定维修部件集V={v1,v2,v3,v4,v5},其中:v1、v2分别代表两个电插头,v3代表2个紧固螺钉,v4代表卡箍,v5代表交输活门作动筒组件,维修部件初态均为装配就位。
2) 依据各部件间的联结关系绘制联结图,如图7所示。
图7 维修部件联结图
可以看出,该维修任务有12个可行的单向拆卸序列,考虑到不同的实训者可能采用不同的维修操作序列,若对所有的可行序列建模,即使组件数量不多,建模工作量也是巨大的。
3) 根据联结图生成初始邻接矩阵AG:
AG=(aij)5×5=v1v2v3v4v5
5) 假设当前发生了针对部件v3的维修操作事件,由于部件v3为安装缺省部件,故判断维修方向为拆卸。
6) 判断矩阵C中安装缺省部件vj与部件vi间的约束关系值,显然相应的列元素cj3均为0。
7) 判断监护条件G3值是否为1,即维修资源就位且满足最小变迁相对触发时间间隔。假设G3为1,则执行相应的拆卸维修动作A3。
8) 执行矩阵更新操作,完成后,拆卸邻接矩阵C和安装邻接矩阵B分别更新为:
B=nullv1nullv2v3nullv4nullv5
9) 依此循环,此维修过程允许实训者改变维修方向,执行安装操作,直至C==(null)n×n,则代表已到达拆卸维修的终点。交输活门作动筒组件的部分拆卸维修过程仿真效果如图8所示。
(a) 接近交输活门作动筒 b) 脱开第1个电插头 (c) 第2个电插头脱开中 (d) 第2个电插头脱开完成
(e) 松开两个螺钉 (f) 移走两个螺钉 (g) 松开卡箍 (h) 移走卡箍 (i) 拆下交输活门作动筒图8 交输活门作动筒主要拆卸过程
结合面向实训的飞机虚拟维修实际需求,在统一规范表达子网模型的基础上,使用可动态重组子网的Petri网建立飞机虚拟维修过程模型。该模型使用拆卸和安装双向邻接矩阵约束子网间的优先关系,允许实训者改变维修方向,响应实训者的双向随机操作指令,动态重组子网,贴近实际维修实训的同时,避免了对所有可行序列建模的工作量。另外,使用了动作集描述变迁输出的维修动作,模拟真实维修过程。由仿真效果图可知,虚拟维修动作连贯且贴合维修实际,本文模型解决了维修动作不全或跳跃的问题,提高了飞机虚拟维修的仿真度。