面向电力培训的三维交互仿真平台的设计与实现

2013-10-23 01:46龚庆武江传文
电力自动化设备 2013年6期
关键词:逻辑对象状态

乔 卉,龚庆武,江传文

(武汉大学 电气工程学院,湖北 武汉 430072)

0 引言

电力培训仿真系统是电力企业进行员工培训的主要手段,具有结果真实、效果逼真及易于维护和升级等特点。随着计算机硬件成本的不断下降及计算性能的不断增强,虚拟现实技术已逐步应用于电力培训仿真系统的开发与实现,三维虚拟场景和实时交互提高了电力培训仿真系统的现场表现力和真实感[1-2]。

现有的电力培训三维交互仿真系统侧重于利用三维仿真形式增强仿真环境及仿真实体外观和动作过程外在表现的真实性,对用户模拟操作过程的控制逻辑处理简单,系统的交互模拟操作体验性较弱、且不符合用户的操作行为特点是其最大的不足。将教育游戏设计思想和实现模式引入电力三维仿真培训系统[3]的设计和开发过程是其未来发展的方向。这要求电力三维仿真培训系统在三维视景规模、表现逼真性及模拟操作控制复杂性和灵活性等方面大幅度提高性能,因此,面向电力培训的三维交互仿真平台应能满足上述系统开发要求。

但是着重于支持虚拟世界表示、发布和渲染等功能需求的三维仿真开发平台,例如VRML编辑器、virtools和VR-Platform都没有支持完全的编程功能,不适用于描述随机属性和复杂的控制逻辑,而且这些平台在大规模三维场景实时渲染和优化、三维场景和资源管理等方面尚有许多改进之处,因此并不适用于操作模式和交互控制逻辑复杂的电力三维仿真应用开发。而商业三维游戏引擎的展示大规模、高质量的三维场景支持功能虽然很强,但是对复杂操作交互过程和逻辑控制的功能整合不强,人机交互模式不适合电力仿真培训系统所需的模拟操作方式,并且价格非常昂贵,对于电力仿真培训系统的开发和实现而言成本过高。

因此项目组成员结合电力三维交互仿真培训系统的应用需求和功能特点,基于XNA Framework,研究并自主开发了面向电力培训仿真应用的三维交互仿真平台PowerX。

1 XNA Framework[4-6]

XNA Framework是微软发布的.NET环境下基于DirectX的三维游戏开发类库。XNA Framework的基本框架包括Graphic Engine、Game Application Model和Content Pipeline 3个部分,所包含的DLL文件可以全部使用C#编写,并且是完全的托管动态库,大部分方法通过调用DirectX的DLL实现相应的功能。

每个XNA项目都使用一个Game类,它包含了所有重要的游戏组件,如图形设备(Graphic Device)、窗口设置以及内容管理器,同时还可以添加用户输入、声音处理等。Game类中包含的基本方法及代码执行流程如图1所示。其中,Initialize()方法用来设置启动参数、初始化逻辑等;LoadContent()方法用来加载游戏所需要的模型、贴图、音效等资源;Unload-Content()方法用来卸载游戏资源,托管机制下该方法一般不需调用;Update()方法在游戏的每一帧重绘之前被调用,来更新游戏时间、用户输入、声音以及其他后台数据;Draw()方法用来在每一帧重绘时把三维场景绘制到屏幕。

图1 XNA程序执行流程Fig.1 Flowchart of XNA program execution

虽然XNA Framework降低了三维游戏编程开发的难度,但是它也仅仅提供了一些基础功能,不具备直接开发复杂应用功能的能力。例如,XNA只提供最简单的模型导入与显示,不提供三维场景框架构建功能,而这是实现大规模三维场景编辑和管理的重要功能;同时,XNA自身不提供与三维仿真对象的交互功能,但这是电力仿真培训系统支持模拟操作必须具备的功能。

2 平台体系架构设计

电力培训仿真系统要对电力运行环境和电气设备进行三维仿真,尤其要对电气设备的外观结构、操作元件及动作过程进行精细仿真和实时模拟,仿真场景具有规模大、节点多、操作逻辑复杂等特点,对仿真平台的三维渲染实时性、操作交互过程复杂逻辑控制的处理能力要求较高。针对以上特点,为了实现代码复用,降低功能耦合度,实现高度面向对象的要求,三维交互仿真平台PowerX的功能架构分为通用三维仿真引擎和电力仿真框架2层,见图2。

图2 PowerX体系架构Fig.2 PowerX architecture

2.1 通用三维仿真引擎层[7-11]

通用三维仿真引擎是与仿真应用逻辑无关的三维交互仿真运行与开发平台,主要实现三维虚拟场景的构建、管理和显示以及三维交互等功能的抽象,包含图形渲染、场景管理、资源管理、交互控制、动画系统和网络通信等公共模块。

2.2 电力仿真框架层

作为仿真应用开发平台的电力仿真框架层包含设备管理及逻辑控制、任务系统、仿真场景管理和仿真用户管理等功能模块。

实际作业过程中工作人员操作和交互的对象主要是电气设备、仪器仪表和作业工器具,其中电气设备和仪器仪表具有复杂的内在动作逻辑,而作业工器具只具有简单的操作模式和逻辑。电力三维交互仿真应用实现中,将具有复杂动作逻辑的仿真实体抽象为虚拟设备,电气设备和仪器仪表基于抽象的虚拟设备类描述其视觉属性和动作逻辑。视觉属性包括节点名称、节点坐标、旋转及缩放等,以保证设备动作状态三维显示正确;动作逻辑包含设备操作元件的动作条件和动作结果。虚拟设备视觉属性和动作逻辑的分离提高了逻辑代码的复用性。

根据电力系统作业过程的内在特征,电力三维交互仿真系统的模拟操作控制逻辑由虚拟设备操作逻辑模型和任务模型共同描述。

a.任务模型是对仿真作业过程的整体抽象描述,PowerX将其定义为一个或多个虚拟设备操作过程及其变化状态的有序组合,其属性包括关键点状态、开始状态和结束状态,其中关键点状态是根据任务内容选定的虚拟设备动作过程状态。

b.虚拟设备操作逻辑模型描述了针对使虚拟设备达到某个特定的状态而实施执行的动态行为的顺序控制和响应逻辑。作业工器具的操作过程根据作业过程被当作虚拟设备操作和动作过程的一部分,例如,变压器绝缘电阻测试实验仿真中,绝缘电阻测试仪(或摇表)作为虚拟设备模拟其属性和动作逻辑,实验放电过程所用的放电棒并不作为虚拟设备,放电棒及其放电过程只作为绝缘电阻测试仪实验过程中的一个元器件及其动作步骤。

设备管理及逻辑控制模块的功能为:通过列表统一对虚拟设备所定义的属性参数进行定义和匹配,包括视觉属性、电气关联参数、设备动作逻辑;提供设备动作和状态更新所需的公共功能和功能扩展的公共接口,例如,更新电气关联参数,实现三维交互仿真过程和电气仿真计算程序互联,发送设备消息等;同时,根据设定的操作响应模型控制虚拟设备的动作逻辑,实现虚拟设备的模拟操作功能。

任务系统模块对任务模型的关键属性参数和任务实施过程进行管理和控制。受训人员一次只能激活一个任务,当任务被激活后,每个操作都被任务系统检查,若满足当前关键点所需状态,则自动进入下个关键点,直到完成全部关键点,即认为任务完成[3]。

仿真场景管理模块整合仿真场景所包含的模型、设备和任务信息,通过加载场景地图、设备及任务信息的配置文件和设备动作逻辑的动态链接库,构建电力培训所需的三维交互仿真场景;管理和控制多场景数据的有序读取和加载,实现场景跳转和切换等公共功能。

仿真用户管理模块主要对用户个人信息及考核过程信息进行管理,提供用户使用权限识别及信息查询和编辑功能。

3 平台实现关键技术和方法

3.1 大规模场景实时渲染技术

对于电力仿真培训系统,其三维虚拟场景的特点是仿真场景范围较大,仿真对象数量多,而且仿真对象还要能够根据人机交互操作产生空间运动,因此不能把全部对象保存在一个渲染列表中直接绘制出来,这会导致渲染效率低下而且过程难以控制。

对于场景对象,PowerX采用渲染对象和空间节点分离的策略,将三维仿真对象划分为可移动对象和可渲染对象。其中,场景对象的三维模型基本数据作为可渲染对象处理,只具备显示的能力;可移动对象是能够在三维空间中运动的对象,利用节点空间坐标矩阵的递归相乘使可移动对象根据空间节点关系实现层次动画,从而模拟虚拟设备动作元件的空间运动变化。对于空间节点的管理采用经典场景图和数据字典结合的方式,本质上是一个多叉树和一个链表,多叉树能方便地进行空间层次变换,链表的使用能高效查找节点而避免缓慢的递归搜索,加快渲染过程。当场景节点数量达到一定程度时,采用静态场景对象和动态场景对象分离的优化策略[12],只更新动态场景对象的空间信息,而静态场景对象只需要在加载的时候更新空间信息,节约计算资源。

另外,随着三维场景中独立渲染对象数量的增多,显卡数据处理速度会快速下降[13]。因此,为保证大规模场景渲染的实时性,必须控制三维场景中独立渲染对象的数量。PowerX根据仿真对象的分布密度,设置隐藏距离,然后利用场景树进行仿真对象可见性判断和裁剪,减少仿真过程中同时处理的对象数量,保证应用程序运行的实时性和流畅性。针对仿真场景中需要操作的数量众多的小物体,采用智能合并小物体的思想,利用几何体打包技术来处理[13]。

3.2 复杂操作响应逻辑控制方法

电力仿真操作过程应支持操作者的开放式操作行为[14],即虚拟设备操作逻辑要按照操作规程对操作者的随机操作和自由判断给予反馈。相较于仅支持封闭式操作行为的控制逻辑,复杂程度大幅提高。PowerX基于有限状态机控制原理,采用用户动作事件触发的操作响应控制方法,使操作模拟过程由用户的动作来推动。

PowerX中的有限状态机可表示为四元组S=(Q,∑,δ,q0),其中全部状态集 Q 描述仿真操作过程所有状态变量的取值空间;开始状态集q0∈Q描述任务开始和任务操作所涉及的虚拟对象的状态变量值;∑为输入控制变量,PowerX中将用户操作所引发的动作事件作为有限状态机的输入控制变量,操作者通过选择虚拟场景的操作菜单引发动作事件;状态转移函数δ在PowerX中由必要状态集合和消息处理函数2个部分组成。必要状态集描述了允许虚拟对象状态变化的必要条件,即变化前对象状态变量的必要值;作为状态机输入控制变量的动作事件产生动作消息,PowerX根据消息将当前设备状态与必要状态集进行匹配,依据匹配结果执行消息处理函数完成虚拟设备的状态转变,模拟虚拟设备的操作动作过程,或者根据不匹配状态对用户操作行为给予提示和引导,保证仿真动作逻辑的完整性。作为有限状态机状态变化结束的判据,终止状态集在PowerX中由任务系统的关键点描述,当操作过程状态变量值等于系统关键点所描述的数值时,有限状态机停止状态变化过程,系统确认操作者完成任务的模拟操作,否则操作者必须继续操作,直到操作过程状态变量等于必要状态集中的赋值。

这种操作响应控制方法有以下优点:由用户根据自己的意向进行操作,具有更好的灵活性,避免重复死板的操作流程;操作错误能够被警告,无效操作予以提示,易于实现系统的智能培训辅导功能。

3.3 仿真对象电气属性的同步方法

PowerX利用对象-属性-事件机制[15]来维护三维虚拟环境中虚拟对象特征和行为的一致性,对象表示虚拟环境中的仿真实体,属性描述对象的特征和行为。

虚拟电气设备是电力仿真培训系统最重要的仿真对象,除了系统坐标、颜色、贴图、缩放比例等属性,设备电气状态(对应开关量表示)及关联电气参数是虚拟电气设备的主要属性之一。例如,高压开关柜的停送电状态、开关分断或闭合状态以及电压表或电流表显示读数。设备的电气属性通过电气属性列表存储,设备管理器也维护一个全局设备电气参数列表,其中保存有全部虚拟设备电气状态及其电气运行参数。

图3为虚拟设备电气属性同步联动示意图。三维虚拟世界中的仿真操作导致虚拟设备电气状态发生变化时,相应的设备电气属性列表中的值会发生变化,从而引起全局设备电气参数列表相应的值发生改变,设备管理器得到通知,调用配网电气仿真计算程序,使其根据全局设备电气参数列表反映的电网拓扑结构重新对电网参数进行分析计算,并改变全局设备电气参数列表中的值,产生状态更新事件,共享变化属性的设备电气属性列表响应这个事件,更新对应的值,并通知共享该属性的客户端进行状态变化和场景更新。通过设置设备电气属性列表和全局设备电气参数列表,使配网电气仿真计算程序实现功能模块化,和仿真系统在架构上呈现松耦合关系,可以灵活变更和扩充。

图3 虚拟设备电气属性同步联动Fig.3 Synchronous interlock of electrical properties of virtual equipment

3.4 复杂交互模式实现与控制方法

三维交互功能是指用户通过鼠标点击三维场景中的某一特定的物体时,系统能检测到该特定物体被点击并得到预设的信息内容,从而使系统能够获得用户发出的信息实现人机交互。XNA自身不提供与三维仿真对象的交互功能,根据电力仿真操作的需要,PowerX定义并实现了电力仿真操作过程的三维交互方式,即将菜单消息作为用户操作虚拟设备的接口,当用户用鼠标点击操作对象时,鼠标点击处会创建Windows控件并加入操作选项,用户选择操作选项,PowerX能检测到该特定物体被点击并得到预设的菜单消息,从而获得用户发出的信息,启动并执行操作控制逻辑,形成人机协同运动。这种方式可以让用户点击同一物体而有多种动作选择,以满足电力仿真操作行为复杂的特点。

三维场景中虚拟电气设备可操作的元器件大小各异,PowerX必须保证用户能够对它们进行快速精确的选择操作。三维物体选择一般采用射线相交原理判断,基本方法是通过鼠标位置发射一条垂直于屏幕的视空间深度射线和场景对象进行相交计算,遍历每个对象的每个三角形,检测到有交点就取得该对象的位置标识,相交并且最近的物体就是被选择的操作对象。直接执行三角形级别的检测过程会占用较多计算资源,影响交互过程的实时性。因此,实际应用中常用一个近似的球体来包围物体,射线只需要和包围球体进行相交计算,但这会导致无法精确选择距离很近的物体,影响操作对象选择的准确性。PowerX采用包围球体和三角形混合检测的方法:首先判断物体的包围球体和射线是否相交,如果没有相交,那么不再对该物体进行检测计算;如果相交,接着对相交坐标所标识的物体进行三角形级别的检测分析,根据检测相交的结果判断被选择的具体操作对象,这样既保证了计算速度,又确保能够精确地选择到三维操作对象。

3.5 基于矩形集合的快速碰撞检测技术

PowerX主要解决了碰撞检测的实时性和精确性之间的矛盾以及碰撞的合理响应。根据电力仿真操作仿真的特点,采用修改后的包围盒[16]来进行碰撞检测,即由一系列的小区域组成一个场景内视点的允许移动区域(以不穿透设备或物体为要求),这样满足了实际需求,而且计算量小,可以实时计算是否发生碰撞检测。

为了增强虚拟场景的真实感,检测到碰撞后,物体还应按照物理规律做出合理的碰撞响应,包括改变运动、形状及其他行为属性。如图4所示,假设移动对象是没有弹性的刚体,以速度v和墙壁发生碰撞,则垂直于碰撞面的速度分量v1将直接被取消,但平行于碰撞面的速度分量v2被保留,即使得移动对象沿着碰撞面滑动,实现快速、平滑、自然的碰撞效果。

图4 碰撞检测及处理Fig.4 Collision detection and processing

4 应用开发实例

基于PowerX支持的底层功能,项目组还自主开发了降低仿真应用实现难度的可视化开发工具,主要包含设备逻辑编辑器、场景编辑器、地图编辑器。

a.设备逻辑编辑器根据操作响应控制模型将设备动作逻辑的编程实现过程转化为可视化编辑过程。设备逻辑编辑器根据输入信息能够自动生成代码文件,实现设备仿真操作动作响应控制功能。采用可视化编辑结合代码自动生成的模式既有利于设备逻辑控制代码的规范编写,又增强了PowerX的编程功能,便于灵活适应仿真应用开发需求的变化。

b.场景编辑器提供三维场景框架构建功能,即创建三维场景的树状层次关系,提供对三维场景中各种节点的添加、删除和控制,用以快速构建和编辑三维场景。

c.地图编辑器允许开发人员通过鼠标的拖放完成三维场景的布置,并能实时观看编辑结果。

基于PowerX及其开发工具,笔者及其项目组针对配电和变电领域操作技能仿真培训需求研发了配电网生产运行仿真培训系统(图5)、配网状态检修仿真培训系统(图6)和电力安全事故模拟系统(图7—9)。其中,配电运行仿真培训系统实现了某城区10 kV配电运行培训的仿真应用功能。该系统构建了一个配电运行设备和城市场景的三维虚拟配电运行环境,受训人员可以在虚拟场景中漫游,根据操作任务,选取操作对象,并按照对操作任务的认知水平自主实施模拟操作步骤,虚拟设备能够跟踪用户的操作动作,随着操作过程发生实时状态变化,使用户获得对电气设备现场工作状态、操作响应及动作过程的直观、形象的认识。

图5 配电运行仿真培训系统的操作界面Fig.5 Interactive interface of simulative training system for power distribution operation

图6 配网状态检修仿真培训系统的操作界面Fig.6 Interactive interface of simulative training system for distribution network maintenance

图7 变电站220 kV线路事故模拟操作界面Fig.7 Interactive interface of simulative training system for line accident of 220 kV substation

图8 误操作事故状况模拟效果(拉弧)Fig.8 Simulation effect of misoperation(arcing)

图9 误操作事故状况模拟效果(爆炸)Fig.9 Simulation effect of misoperation(explosion)

以上系统均采用C#语言开发,可以运行于PC机和Windows NT操作系统环境,所有系统都已投入运行,使用效果良好。

5 结论

PowerX是针对电力培训三维仿真的特点和仿真需求开发的三维交互仿真开发平台,它较好地整合了大规模场景实时渲染、复杂人机交互及复杂操作过程逻辑控制等功能,能够很好地支持电力培训三维交互仿真系统的开发和运行。配电运行仿真培训系统等案例的成功开发证明PowerX对加快系统开发进度、优化系统体系结构、提高电力培训仿真系统的稳定性和扩展性具有重要的作用。

猜你喜欢
逻辑对象状态
刑事印证证明准确达成的逻辑反思
逻辑
涉税刑事诉讼中的举证责任——以纳税人举证责任为考察对象
创新的逻辑
状态联想
生命的另一种状态
攻略对象的心思好难猜
女人买买买的神逻辑
基于熵的快速扫描法的FNEA初始对象的生成方法
坚持是成功前的状态