贾 π
(海军士官学校信息技术系 蚌埠 233012)
虚拟维修训练作为一种全新的训练模式,是实装维修训练的有效补充,可以提高装备维修训练的水平,具有很高的军事和经济效益。
本文以舰员级雷达虚拟维修训练系统为研究对象,以实现用户自主增加维修任务为目标,在对维修任务设计方法研究现状分析的基础上,针对舰员级雷达虚拟维修训练的需求,探讨了在进行维修任务设计时,运用基于故障树的设计方法,建立维修任务编辑后台,以实现方便的维修任务编辑。
舰员级雷达虚拟维修训练系统面向舰员,在维修过程中故障只需定位在板卡即可。
目前任务设计多采用基于维修作业分解[1]的维修序列规划技术。其思想是将维修过程分解成一个个离散的基本维修动作,这些基本维修动作共同构成整个维修任务。但此种任务设计方法只能按事先规划好的维修序列执行维修操作,缺乏灵活性,主要用于维修训练演示。
周栋提出了基于状态、活动和条件的维修任务管理思想[2],建立了维修任务管理模型MTN。基于状态描述各种维修资源,基于活动定义维修动作行为,基于条件建立资源与活动间约束关系。进一步阐述MTN驱动虚拟场景进行维修仿真,同时控制管理整个维修仿真过程。该任务管理模型主要用于维修任务分析评价。
刘颖提出了基于故障树和图论的雷达装备维修任务设计方法[3],其任务设计属雷达电路元器件级维修,能满足对元器件维修训练需要。而本系统是面向舰员,属于板卡级维修,其运用电路图测量点进行故障任务设计的方法不适用于本系统。
目前虚拟维修样机建模时为了控制模型的复杂度,多采用面向维修任务的建模,一个样机模型只能生成几个特定的维修任务。而在现实中,由于装备资料的限制,在系统开发中难免对一些故障出现遗漏,或者一些新近出现的故障,都需要录入到系统中,但大多数系统没有一个简便的维修任务编辑后台,任务编辑相对困难。
针对目前维修任务设计方法不能满足本系统设计需求,以及现有虚拟维修训练系统在任务编辑方面存在的不足,提出任务编辑的设计目标:建立维修任务编辑后台。此后台能弥补目前系统功能的不足,可根据用户自主增加故障类型和故障表达的需求,简便地实现对维修任务的编辑,如任务增加、修改和删除等,生成的任务可通过系统程序将故障现象加载到场景中。
所谓故障树,是一个故障现象(一个案例)诊断过程的逻辑结构,它的“根”对应着维修案例中的故障现象,故障树中有多个分支,每个分支对应着导致该故障现象的一个可能原因,最终的故障原因表现为故障树中的一个“叶子”,一个故障树存在多个“叶子”,即一个故障现象对应多个故障原因[4]。故障树模型体现了故障传播的层次和父子节点间关系的因果性,故障树上某一子节点是父节点的故障源。利用故障树的这个特性,可以通过建造故障诊断树由故障特征来确定故障[5]。
任务设计的作用是由用户选择一个任务,使用户在故障树的指导下,按照故障树的提示,根据故障现象和测试结果,从“根”找到“叶子”,即从故障现象找到故障原因,从而完成一次维修训练。
其设计思想是设计一定的数据结构对零部件状态及故障信息进行存储,再以故障树的形式在任务编辑环境中显示出来。用户只要对故障树进行编辑操作(即对维修任务进行编辑),设定零部件状态和故障信息,就可以实现故障的表达。
维修过程中存在大量数据信息,在系统开发中采用数据库存储包括故障树在内的所有装备和维修过程信息,其优点在于实现程序中数据与逻辑的分离,实现在同一个维修训练程序框架,通过改变数据库内容实现不同装备虚拟维修训练系统的开发。此设计是采用程序化的手段,使用户可以根据需要自行创建训练任务,节省了开发人员的重复性劳动,缩短了开发时间。在系统中,用户、维修任务编辑后台、数据库和系统程序之间的关系如图1所示。
图1 维修任务编辑后台关系示意图
任务编辑后台开发流程:
1)设计数据库存储结构
根据维修任务编辑后台设计需求,建立了以下四个数据表:任务信息表、任务零件组成表、故障树表和故障现象显示表。各库表之间的关联关系如图2所示。利用维修任务编辑后台进行任务编辑即是对四个数据表内容的编辑,修改并保存后可通过系统程序将这些数据连同维修规则信息等一并加载到场景中,实现对维修过程的控制。
图2 各库表之间的关联关系
2)建立故障树
根据装备技术说明书上提供的维修步骤,结合零部件状态,建立故障树,存储在数据库中。故障树从根节点到叶子节点有很多条路径,每条路径相当于一个维修任务,这些任务都是由相应的零部件状态组成的,这些状态即为进入维修场景中的初始状态,维修过程中零部件状态由维修规则进行控制,最后的叶子节点为修复后的状态。
3)建立任务编辑后台
任务编辑后台可以使用户在众多叶子节点中选择一个节点作为故障原因,从根节点到某一叶子节点的路径是唯一的,故此路径生成的任务具有唯一性,最后将此路径上零件状态保存在任务文件中,加载任务时将这些状态全部读入场景。
对于生成的任务可通过选择任务列表中的任务名将其删除,同时删除该任务在数据库中的所有相关数据。
对于需要增加的任务,若故障树中无此故障,首先按故障查找的规律增加其故障树节点,并设置零件状态,最后再选择叶子节点生成任务。
根据维修任务编辑后台设计需求,采用AMP的开发模式(Apache+MySQL+PHP)。
MySQL作为数据库管理系统,负责数据的存储、访问以及数据修改;利用PHP开发维修任务编辑后台交互界面,维修任务编辑后台以网页形式存在;使用A pache构建网络服务器,作为网页访问数据库的桥梁。此开发模式具有开发成本低、速度快、功能强大等优点。
3.3.1 故障树的建立
首先在数据库中创建故障树表(表1),用于存储整个故障树信息。故障树表包括故障树节点对应的零件编号、节点的子节点组成、零件状态、当前状态文字性描述、节点层级以及零件类型。零件状态指零件处于装上还是卸下的状态;节点层级标识节点是否为根节点;零件类型可分为“好”、“坏”和“备用”三种状态。
表1 故障树表
3.3.2 故障树的显示
故障树显示的关键在于遍历所有的节点,将其显示出来,通过先序遍历递归算法可实现故障树的遍历。先序遍历递归算法步骤:先访问根节点;然后从左到右先序遍历每棵子树;若子树下面还有子节点,同步骤二从左到右先序遍历每棵子树。
故障树遍历时,首先访问根节点,查询根节点下Child ID值,若ChildID不为空,则其下还有子节点,显示此节点;先序遍历,从左到右遍历子节点,先查询左子节点,判断有无此节点,若没有则结束;若有此节点再查询此节点下ChildID值;若为空则此节点是叶子节点;若不为空则为非叶子节点,显示此节点;先序遍历,从左到右遍历子节点,再查询ID=ChildID的节点;继续循环,直到全部遍历结束,完成故障树的显示。递归遍历流程如图3所示。图4中树形结构为某型雷达显示系统部分故障树。
3.3.3 故障树的编辑
故障树生成后,对于一些在故障统计中遗漏的故障或最新出现的故障,需对故障树进行修改,再生成任务,该修改主要是对故障树节点的编辑工作。
1)增加故障树节点
图3 故障树递归遍历流程
增加故障节点的作用是设置零件状态及其故障现象,分别将设定好的数据存储在故障树表和故障现象显示表中。
在图4中选中要增加节点的上一级节点,在其下增加子节点。首先在“新增节点名称”后添加要增加的零件当前状态文字描述(表 1中 Desc数据),点击“增加子节点”弹出节点编辑窗口,如图5所示。“零件名称”后为下拉列表,从中可以选择所需零件名,若下拉列表中无某零件备件,可事先点击“创建备用项”增加备件。“零件状态”中前下拉列表中是确定零件是在装备上还是处于卸下的状态(表1中Status数据),后下拉列表中为零件类型,有“良好”、“故障”和“备用”三种零件状态可供选择(表1中A ccessoryType数据)。
图4 任务编辑后台操作界面
图5 增加节点窗口
故障现象显示表需要增加表2中内容。故障类型有四种:动画、改变纹理、粒子系统和音效,可根据需要进行选择;故障文件名中添加故障现象模型文件,在任务加载时系统根据故障类型查找不同的文件存放目录,直到找到文件;故障现象显示与隐藏受其它零件状态的约束,分别设置显示和隐藏状态下的约束零件及其状态。最后将设置信息保存在故障树表中,增加节点设置完毕。
表2 故障现象显示表
2)删除故障树节点
删除节点与增加节点编辑相似,都是对数据库中故障树表和故障现象显示表的数据库操作。
3.3.4 任务生成
从根节点到某一叶子节点的路径组成的故障树分支即为一个任务。选择图4任务编辑后台操作界面故障树中任意一叶子节点,再点击“生成新任务”,系统纪录整条路径下所有节点ID,保存在任务信息表中,作为最后训练成绩评估用;路径下所有零件状态保存在任务零件组成表中。
若需要删除任务,则选择需要删除的任务名,点击“删除任务”,系统将任务信息表和任务零件表中的相关信息删除,即可实现任务的删除。
3.3.5 任务加载
1)建立程序与数据库之间的连接
在任务加载之前先建立程序与数据库之间的连接。程序发出建立连接请求,打开MySQL数据库,初始化MySQL对象,将数据库地址、用户名、密码以及数据库名称等赋给该对象;若连接成功则可进行数据查询。
2)对数据表数据的读取
系统根据需要调用不同的查询语句对相关信息进行查询,并将查询结果存储在内存中。查询语句如下代码:
该查询语句是对任务信息表进行查询,找到对应的任务后逐次将此任务中的所有信息取出。最后将维修任务显示在场景中。图6、7分别为舰员级雷达维修训练系统任务加载后的操作界面。
文章在对维修任务设计方法研究现状进行分析的基础上,针对目前维修任务编辑方面的不足,提出了基于故障树的任务编辑后台的设计方法,并利用相关平台实现了对维修任务编辑后台功能的开发。该维修任务编辑后台现已成功应用在某舰员级雷达虚拟维修训练系统上,试验证明其能较好的解决目前虚拟维修训练系统任务编辑方面存在的不足,满足系统设计需求。
[1]Fuhua L,Chuan-Jun Su,Mitchell MT.An agent-based approach to developing intelligent virtual reality-based training systems[C]∥Proceedings11th IEEE International Conference on,1999:253~260
[2]周栋,吕川.虚拟维修仿真建模与控制实现[J].北京航空航天大学学报,2006,7(7):843~846
[3]刘颖,朱元昌,邸彦强.面向维修训练的故障建模、仿真与评估[J].计算机工程,2007,13(7):245~247
[4]刘颖.通用雷达装备虚拟维修训练系统[D].石家庄:军械工程学院,2005,3
[5]吴丹.基于VR的飞机电源系统故障仿真技术研究[D].南京:南京航空航天大学,2004,2