冉跃龙,闫英敏
(军械工程学院电气工程系,石家庄 050051)
基于WPF的三维电路级虚拟维修训练系统平台
冉跃龙,闫英敏*
(军械工程学院电气工程系,石家庄 050051)
摘要:针对当前装备虚拟维修训练系统开发大多只针对机械部件的拆装的问题,对基于WPF(Windows Presentation Foundation)的装备三维电路级虚拟维修训练平台进行了研究,阐述了系统平台包含的三维显示层、逻辑交互层、数据保持层和电路仿真层4层结构,探讨了系统平台设计中的3项关键技术。介绍了系统平台的总体结构设计,设计开发了基于WPF的三维电路级虚拟维修训练原型系统。该系统平台实现了电路级虚拟维修,完善了装备虚拟维修训练系统的功能。
关键词:虚拟维修;电路仿真;分层结构;模型-视图模型-视图;WPF;三维
虚拟维修(Virtual Maintenance)是通过采用计算机仿真和虚拟现实技术在计算机上真实展现装备的维修过程。虚拟维修训练系统是一种有效的训练手段,它的开发能够有效解决维修训练中场地、数量和型号的限制以及训练效率低等问题。但是,装备的电气化程度越来越高,目前成熟的虚拟维修训练系统大多只是针对装备零部件的拆装训练,很少涉及到装备中电路的维修训练[1-2]。因此,本文以某型装备的电路级虚拟维修训练系统为对象,以WPF为编程环境,采用分层结构,利用MVVM框架模式,设计实现了装备电路级虚拟维修训练系统平台。
装备电路级虚拟维修训练平台的任务为通过人机交互设备实现利用虚拟仪表工具对装备电路模型进行仿真分析并排除故障的训练。平台的核心内容包括电路及仪表的三维建模,电路模型描述,电路故障建模和电路仿真运算。
本文采用分层结构来实现平台的上述功能。电路级虚拟维修训练平台的体系结构如图1所示,分为4个层次结构,分别是三维显示层、逻辑交互层、数据保持层和电路仿真层,每层的结构及具体功能如下:
(1)三维显示层:该层主要包括电路三维模型与虚拟仪表。它为参训人员呈现电路的三维模型,利用3DS Max建模软件,根据装备电路结构及外观构建装备电路板的三维模型,同时定义节点与装备电路模型的关联关系。三维虚拟电路板经WPF的3D绘图功能实现显示,并利用交互设备及WPF的3D命中测试帮助类实现三维虚拟电路的测量与交互。整个平台的可视部分均由三维显示层实现显示输出。
(2)逻辑交互层:当用户使用鼠标或者其他交互设备在虚拟维修平台中进行交互操作时,该层主要负责响应用户的操作。在对虚拟电路板及元器件进行浏览查看时,该层将交互设备所选取的对象与数据保持层中的模型进行联系对应;在对虚拟电路进行测量时,该层将虚拟仪表所测得的节点数据与数据保持层中的节点数据进行联系对应。
(3)数据保持层:该层包含装备电路模型、装备电路故障模型,为电路仿真层提供仿真数据。装备电路模型是由SPICE电路描述语言构成的装备电路描述,是面向仿真的装备电路抽象。装备电路模型以装备电路为基本单元,描述电路的元器件电气特性、器件连接关系、电路结构、激励源、虚拟测量设备、节点性能参数分析等。装备故障模型描述装备故障器件的失效状态。虚拟故障设定就是根据装备故障模型,修改装备电路模型中对应器件的电路描述,以及模拟装备电路的实际故障情况。装备各电路的电路描述、故障描述、信号关系描述、电路工作过程描述构成装备电路模型,以网表文件(.CIR文件)格式存储在数据保持层中。
(4)电路仿真层:该层主要负责对电路板上的电路进行实时的电路仿真。它的主要组成部分为NGSPICE电路仿真内核动态链接库,通过动态链接库的接口进行数据交换。该层处理的对象是数据保持层所提供的电路描述语言,装备电路描述、故障描述等信息作为NGSPICE仿真程序的输入数据,经电路仿真后生成描述各节点电压电流的仿真结果数据。
图1 系统平台体系结构图
2.1基于WPF的三维显示技术
目前,三维模型的显示,大多是利用DirectX和OpenGL来编程实现的。然而,使用这2种工具进行开发时,编程模型比较复杂,而且需要一定的数学知识来实现三维模型的控制,如平移、旋转和缩放。若需要完成交互式的三维场景构建,还需要编写复杂的三维交互算法[3-4]。此外,这2种工具对显卡的要求也比较苛刻。
WPF引入了一个新的扩展的三维模型,改变了上述所有这些问题。使用WPF,可以通过简单的标记构建复杂的三维场景。同时,帮助类提供了命中测试、基于鼠标的旋转以及其他基本构件。并且几乎所有的计算机都可以显示3D内容,这一点要归功于当缺少显卡支持时WPF退而使用软件渲染的能力[5]。
WPF在三维显示和交互方面的优势使得它成为电路级虚拟维修训练平台的理想开发工具。下面以运放LM747为例介绍基于WPF的三维显示流程,如图2所示。
图2 三维电路模型显示流程图
首先,采用3DS Max对LM747进行三维模型的构建。在进行三维建模时,需要注意以下两点:(1)模型器件的主体和管脚必须是不同的几何体,不能采用一个几何体通过一定的修改来建立模型,这是由于在WPF进行三维交互时,只有不同的GeomrtryModel3D对象才能拥有不同的鼠标处理事件,即交互事件,而不同的几何体可以转换为不同的GeometryModel3D对象。(2)模型制作完成后,需要将整个模型的不同几何体使用“成组”命令,这样才能使三维模型转换为WPF中的Model3DGroup对象,便于对器件模型整体进行选取。
然后,利用3DS Max中的导出工具导出为3DS文件。3DS文件是一种通用的保存三维模型的数据格式,是基于块结构存储的,因此便于使用程序编程进行读取。同时,文件的大小也比MAX文件小很多,对于大型三维模型,可以在很大程度上节省磁盘空间,并加快读取三维模型的速度。
最后,将3DS文件形式的三维模型导入WPF工程中,即可在WPF环境中进行三维交互。对于3DS文件的读取,目前已经有了很多成熟的方法进行读取分析[6]。AB4D公司的Ab3d.Reader3ds.dll是一个用于在WPF中读取3DS文件的动态链接库,可以在WPF应用程序中方便地对3DS读取显示,并提取模型对象的层次信息。图2中显示了模型的层次信息,可以看出,“LM747”是一个Model3DGroup对象,代表LM747这一器件模型整体,“LM747P1”至“LM747P14”均为GeomrtryModel3D对象,分别代表LM747的14个管脚。获取了这些层次信息后,就可以利用WPF提供的三维命中测试类来进行3D场景的交互[7]。
2.2基于MVVM的程序设计模式
MVVM(Model-View-View Model)模式由视图(View)、视图模型(ViewModel)、模型(Model)三部分组成[5]。图3所示为MVVM的结构及其各部分之间的交互关系。可以看出,MVVM的三部分结构实现了UI逻辑(UI Logic)、呈现逻辑(Presentation Logic)以及数据和业务逻辑(Business Logic and Data)的分离。
图3 MVVM模式结构及交互关系
View封装了界面和界面逻辑:它的责任便是定义用户在屏幕上能看到的一切结构以及外观。通过数据绑定(Data Binding),View可以将用户操作和数据的改变传递到ViewModel,然后由ViewModel决定如何从Model获取或改变数据。通过命令(Command),在View和ViewModel之间可以实现操作的调用。View背后的代码是用来实现XAML很难表达的可视化行为。
ViewModel封装了呈现逻辑和实现程序状态维持:它负责协调视图与任何需要的模型类的交互。ViewModel通过改变提醒事件(INotifyProperty Changed与INotifyCollectionChanged)通知View状态的改变。该部分主要涉及到应用程序的工作流程、任务、用户操作、应用程序逻辑行为和应用程序运行控制。ViewModel不是控件的后台控制代码,它不涉及任何具体界面外观并独立于具体的界面实现[8]。
Model封装了业务逻辑及数据:业务逻辑实现了像检索和数据管理相关程序中的逻辑,用来确保数据的一致性和有效性。
MVVM的核心思想是将界面设计与控制代码设计相分离,便于程序分工设计,增强测试的方便性,容易管理维护以及进行扩展。
虚拟维修训练系统平台涉及的功能较多,在功能设计时需要逐个进行测试,测试成功后进行组合;而且系统平台需要满足易修改和易扩展的要求,界面设计与程序行为设计的分离有助于减轻维护和改善平台时的工作量。因此采用MVVM框架对系统平台进行设计非常合适。图4所示为平台中所使用的MVVM框架(图中仅显示了平台程序相关类的主要属性、方法和事件)。其中,View部分位于三维显示层,ViewModel部分位于逻辑交互层,Model部分位于数据保持层。
图4 系统平台中的MVVM框架
从图中可以看出,CircuitModel(Model)完全独立于CircuitViewModel(ViewModel)和CircuitView(View),它通过实现INotifyPropertyChanged接口,把电路模型数据(包括三维模型数据、电路网表文件数据和电路节点特性数据)的改变传送到CircuitView,使得CircuitModel具备良好的独立性,便于维护扩展。
CircuitViewModel通过命令调用CircuitModel中公开的方法完成数据操纵,它不包含CircuitView的引用,因此CircuitModel独立于CircuitView,具备适应不同UI界面的特点。
CircuitView通过属性绑定和事件绑定的方式,获取数据和执行程序,在CircuitView中建立CircuitViewModel事例并赋值给DataContext属性,给CircuitView提供数据源,CircuitView具备单独设计,以达到界面设计与控制代码设计的分离的目的。
由以上的分析可以看出,平台采用MVVM框架模式设计,具备良好的可维护性和可扩展性。
2.3基于NGSPICE的电路仿真内核
SPICE(Simulation Program with Integrated Circuit Emphasis)是目前应用广泛的电路仿真引擎,Pspice、Hspice、Multisim等的核心算法均来自于SPICE算法。NGSPICE为SPICE仿真器家族中的一员,它是SPICE3F5的升级改进版,提高了程序的稳定性,且整合了XSPICE,可进行数模混合仿真[9]。同时,NGSPICE还具有以下特点:(1)由于它是开放的源码,能够嵌入编写的程序中独立运行,不依赖其他任何电路仿真软件;(2)运行时占用的计算机资源较少,能够满足虚拟电路模型及电路故障模型的实时仿真计算;(3)仿真输出结果以文档的形式输出,可以很方便地进行读取显示。
综上,NGSPICE是三维电路级虚拟维修训练平台的理想电路仿真内核。
文献[10]基于SPICE仿真引擎,提出了利用VC语言编写接口程序实现电路仿真的方法。本文采用上述文献中的思想进行了进一步的研究,在NGSPICE源代码的基础上进行了改写,编译生成了可供外部程序调用的动态链接库,实现了在WPF平台中调用NGSPICE对电路模型进行仿真的方法。动态连接库的接口函数为callNGSPICE(char* commandString),入口参数为SPICE命令字符串,出口参数为电路节点特性。
图7 系统平台使用使用流程
图5所示为平台电路仿真层的系统结构框图。
图5 系统平台电路仿真层结构图
当需要进行电路模型或者电路故障模型的仿真时,SPICE命令字符串将发送给系统平台电路仿真层,从数据保持层提取与待仿真电路模型相对应的网表文件(.CIR格式文件),通过调用NGSPICE动态链接库进行电路仿真分析,进而解算出电路节点的特性,即节点的瞬时电压和电流值。仿真后得到的数据将传送给数据保持层,供其他模块的使用,如万用表和示波器。
装备三维电路级虚拟维修训练系统平台是一个组合式的分层结构系统,主要包含4层结构。同时,通过利用相应的关键技术,各层有机地组合了起来,各层的具体功能也以高效便捷的方式得到了实现。最后,本文以某型高炮装备的电路板为例,采用3DS Max 2012进行电路三维建模,实现了基于WPF的三维电路级虚拟维修训练原型系统。系统平台运行界面如图6所示。平台具有以下特点:(1)平台可运行于绝大部分普通主流PC,对PC的硬件要求不高。同时,平台具有良好的可维护性和可扩展性;(2)训练过程中,信息可以以动画、图像、影像、文字和三维模型等多媒体手段进行展示,使用者可以通过鼠标和键盘或手写笔、触摸屏、数据手套等外接交互设备进行交互;(3)平台中的可视化电路器件模型的参数和电气连接特性与后台描述电路模型的网表文件(.CIR格式文件)相对应,可以对电路模型进行实时电路仿真。
图6 系统平台界面
平台的使用流程如下:首先,组织训练的人员可以浏览三维电路板,通过使用鼠标右键点击相应的器件三维模型来进行故障的设置(图7(a)),例如短路、断路和参数漂移,以此来进行维修任务的设定。然后,受训者即可参与该型装备的电路级虚拟维修训练。进行维修训练时,受训者通过对电路进行实时的仿真,并使用万用表和示波器测量某些关键的节点(图7(b)),从而推断出电路故障所在并更换器件(图7(c)),完成装备电路维修训练任务。
三维电路级虚拟维修训练系统平台的研究和开发,实现了装备的电路级虚拟维修。通过内嵌的电路仿真内核,系统实现了后台对电路模型的实时仿真,完成了真正意义上的电路级虚拟维修,弥补了传统虚拟维修训练系统只针对机械部件拆装训练的不足。同时,系统采用WPF平台进行开发,具有良好的三维呈现功能和交互性;采用MVVM框架模式设计,实现系统软件设计的模块化,降低了各模块之间的耦合度,系统具备良好的可维护性和可扩展性。该系统平台在减少电路维修训练损失,节约经费,缩短维修培训周期,提高相关人员维修水平方面具有重要意义。
参考文献:
[1]王文举,李光耀.虚拟维修仿真技术的研究与进展[J].系统仿真学报,2011,23(9):1751-1757.
[2]焦玉民,张琦,屈宏伟.虚拟维修技术研究与展望[J].中国工程机械学报,2011,9(3):359-366.
[3]刘效森,吴迺陵,陈硕西.基于OpenGL下的固体物理模型交互式仿真[J].电子器件,2007,30(5):1926-1929.
[4]郭艳霞,侯彤璞,杜园园.基于DirectX的三维场景实体的拾取[J].辽宁石油化工大学学报,2009,29(3):77-80.
[5]Matthew MacDonald.Pro WPF in C# 2010:Windows Presentation Foundation in.NET 4[M].Apress,Inc.,2010:770-774.
[6]刘芳,刘贤梅.3DS文件读取、绘制与控制方法的研究与应用[J].计算机工程与设计,2009,30(19):4575-4578.
[7]Josh Smith.WPF Apps with the Model-View-ViewModel Design Pattern[EB/OL].http://msdn.microsoft.com/en-us/magazine/dd419663.aspx.
[8]程国雄,胡世清.基于Silverlight的RIA系统架构与设计模式研究[J].计算机工程与设计,2010,31(8):1706-1709.
[9]Paolo Nenzi,Holger Vogt.Ngspice Users Manual Version 24 Plus[EB/OL].http://sourceforge.net/projects/ngspice.
[10]郝永生,韩路杰,王广龙,等.基于SPICE的电路仿真系统接口程序设计[J].计算机工程,2010,36(12):253-255.
冉跃龙(1988-),男,土家族,贵州凤冈人,现为中国人民解放军军械工程学院在读硕士研究生,主要研究方向为电路故障仿真和电路虚拟维修,ranyuelong@163.com;
闫英敏(1970-),女,汉族,河北南宫人,现工作于中国人民解放军军械工程学院电气工程教研室,副教授,博士学位。主要研究方向为装备综合电气系统检测与故障诊断技术,yanyinming00@163.com。
3DCircuit-LevelVirtualMaintenanceTrainingSystemPlatform
RANYuelong,YANYingmin*
(Department of Electrical Engineering,Ordnance Engineering College,Shijiazhuang 050051,China)
Abstract:For the fact that the current equipment virtual maintenance training systems are almost all cornered with the disassembly of mechanical components,the research on 3D circuit-level equipment virtual maintenance training platform based on WPF(Windows Presentation Foundation)is developed.The platform contains a structure of 4 layers,namely 3D display layer,logic interaction layer,data persistence layer and circuit simulation layer.Three key technologies in the design of the platform are studied.The structure of the platform is introduced and the model of the 3D circuit-level virtual maintenance training system is designed and developed.Circuit-level virtual maintenance has been achieved,which improves the function of virtual maintenance training system.
Key words:virtual maintenance;circuit simulation;hierarchical structure;MVVM;WPF;3D
doi:EEACC:721010.3969/j.issn.1005-9490.2014.04.029
中图分类号:TP391.9
文献标识码:A
文章编号:1005-9490(2014)04-0718-05
收稿日期:2013-07-18修改日期:2013-08-15