分布式仿真平台用户端工况管理的设计与实现
2018-03-05朱静静黄海于
朱静静,黄海于
(西南交通大学 信息科学与技术学院,四川 成都 611756)
0 引 言
随着计算机技术的发展,计算机仿真技术逐渐应用于国防、工业、交通、物联网、教育等各个领域[1]。分布式仿真平台也越来越多地应用于各个应用和科研领域。高速列车数字化仿真平台就是一个基于分布式计算架构的分布式系统[2]。现有的高速列车数字化仿真平台是由图形化建模子系统、计算工况、调度器软件、耦合器软件、执行机、监控子系统等构成的一个分布式仿真平台[3]。计算工况是整个仿真系统的关键部分,目前存在的工况管理方式不够灵活,项目和工况的管理上易操作性不强,可视化程度不高,在选取模板及其工况仿真参数配置上具有局限性,只能对指定的模块组成的模型进行工况仿真,功能比较单一,大大降低了系统建模功能的可用性。如果对计算工况的管理方式进行应用功能扩展,不仅能应用于高速列车的仿真领域,在多种仿真领域也可以使用该仿真平台,对整个仿真平台实现更加有效的通用性。
文中以高速列车数字化仿真平台为背景,针对以上问题,主要讨论了用户端计算工况的管理方式,计算工况管理是基于用户端仿真软件的一个功能模块。在用户登录仿真软件后,项目和工况的创建和信息管理及其二者关系采用项目管理器窗口中树形结构层次化展示方式提供可视化程度,根据耦合连接图进行工况仿真参数配置,可以提高软件的可视化和通用性,进行模块的功能扩展。生成工况配置文件,进行工况保存和耦合仿真。同时具有错误警告提示机制,具有良好的用户交互界面。用户可以在该平台进行多种应用的仿真计算。
1 系统结构
分布式仿真平台用户端仿真软件是以高速列车数字化仿真平台为研究背景,设计并实现的一个基于Oracle数据库的通用仿真软件,是整个仿真系统中重要的组成部分。图1为仿真平台框架图。
用户运用仿真软件可以为整个仿真系统提供原始模板,运用模板创建计算工况,与调度器、耦合器、执行机之间进行系统的仿真,并将仿真结果通过监控示波器显示出来,更好地体现实时动态的绘制曲线的特性[4]。
图1 仿真平台框架
仿真软件主要分为图形化建模、计算工况、多用户管理三大功能模块,如图2所示。
图2 仿真软件功能结构
仿真软件是使用仿真平台的用户接口软件,界面的美观、可视化,界面友好和操作方便为用户提供了良好的用户体验。仿真软件由项目管理器窗口、属性窗口、仿真模型窗口、模型耦合参数设置窗口组成,所有的操作都是通过菜单项和工具条完成的。采用多文档(MDI)的MFC框架[5],可以进行多个模型的创建或者工况的仿真,采用派生CDockablePane类实现选项卡式窗口,从而实现窗口的动态切分功能,可以更加方便地实现窗口的浮动、停靠、隐藏[6]。
系统建模主要是为整个仿真平台提供仿真模型[7]。采用视图窗口和对话框结合的方式,模块化的建模方式[8],主要是模型的创建和管理,模块间耦合关系的设置以及模块的属性设置。用户利用模块库中的模块创建模型,建模完成后生成模型文件:模块配置文件、模型配置文件、模型位图文件。
计算工况主要包括项目和工况的层次化管理,仿真结果的图形化显示。主要是根据仿真模型创建工况,加载耦合连接图,设置工况仿真参数,生成工况配置文件,通过网络提交仿真工况信息注册到相应的耦合器,同时将工况文件上传到数据库,调度器、耦合器、执行机分别解析相应的配置文件进行耦合计算,将仿真结果存储到数据库,最后监控仿真结果并显示。文中重点讨论项目和工况的层次化管理部分。
用户管理是为了便于管理多种用户的访问,不同的用户具有不同的操作权限,登录系统后,有相应权限的操作模块[9-10]。多用户包括系统管理员、项目负责人、工况创建人、模型创建人。
2 用户端工况管理的设计和实现
2.1 项目和工况的层次化展示
项目和工况的层次化展示是在项目管理器视图窗口中将项目和工况信息以树形列表的形式展示出来,从项目表cs_projecttable和工况表cs_conditiontable中读出用户权限内的项目和工况信息,保存在数组CArray
项目管理器窗口从上到下依次展示项目号和项目名,工况创建人ID和创建人名,工况号和工况名,以及工况下模板包含的模块信息,这种展示方式便于用户操作。
双击列表中的项目列,即可对选中的项目进行项目的查询和修改、项目下新建工况等。双击工况列,即可对选中的工况进行工况查询和修改、耦合计算、加载仿真模型等,加载仿真模板到仿真模型窗口,并与对话框结合,对工况设置仿真参数等,将创建成功的工况信息上传到数据库并提交工况进行仿真。
2.2 项目的创建
由于每个项目下有多个不同工况,不同的用户创建的工况也有区别,因此采用创建项目,在项目下再新建工况的方式进行工况的管理,这种方式便于工况的查询、仿真等。
项目的创建主要指项目负责人新建一个项目,配置项目的参数,包括项目的编号、项目名称、项目创建时间、项目存储路径、项目描述、项目创建人等信息,项目新建成功后在项目管理器窗口中显示。
用户登录仿真软件后,在菜单栏中有新建项目子菜单,点击菜单弹出新建项目对话框,设置项目参数,保存项目信息到项目表cs_projecttable,如表1所示。如要新建工况,下一页即可显示新建工况窗口,进行工况参数的设置。
表1 项目表(cs_projecttable)
2.3 项目管理
项目管理主要包括新建工况,查询项目,修改项目。新建工况是指用户在指定项目下,创建新的工况进行耦合仿真;查询项目是通过在属性窗口中显示项目的参数信息,并能够更改指定的项目参数,项目编号是唯一标识的,不能更改。
2.4 新建工况
新建工况是用户对权限内的项目下创建仿真工况,创建工况有两种方式:
(1)在新建项目窗口,点击新建工况按钮,进入下一页创建工况的窗口。
(2)在项目管理器窗口,双击项目列表,点击新建工况菜单,进入创建工况的窗口。
窗口采用对话框的方式来设置工况信息,包括所在的项目编号、项目名称、项目描述、工况名称、工况号、工况创建时间、工况创建人、工况目录、工况描述、工况模板号、设置模板信息等。其中模板信息的设置是在创建工况窗口中点击选取模板按钮,弹出模板窗口,模块窗口采用ListControl控件列出可选取的模型,PictureControl控件显示模型关系图。用户左键单击某一模型可查看模型关系图,判断模型是否正确,如果保存的模板信息没有合适的,用户可以自己创建新的模型作为工况的模板,该模型也可以保存到模型表cs_modeltable中作为下次的模板使用,这样可以更加灵活地进行模板的选取。当模板选取后,加载模板关系图到模型窗口中,工况创建窗口中显示工况模板号。保存工况基本信息,配置工况仿真参数,最后生成工况配置文件(.ini、.txt),提交工况信息并将工况信息写入相应的数据表中进行耦合仿真。
2.5 工况仿真参数配置
工况仿真参数的合理配置是工况能够正确仿真的关键。新建工况的过程中,选取模板后,加载耦合连接图到仿真模型窗口中,开始设置工况的仿真参数。这样配置仿真参数的最大优点就是更好地实现了软件的通用性、提高了可视化程度,可以根据模板中实际的模块个数灵活设置参数。
具体的操作如下:
(1)双击模块弹出工况仿真参数对话框,显示拾取的模块的任务号和任务名,配置模块仿真文件、仿真基本参数,比如积分步长、输出步长、操作系统、IP地址等的设置。每个模块的仿真基本参数从数据表cs_condtasksimparatable中读出,以comb-box控件显示出来,用户能直接选取默认的值添加到参数列表CStringArray m_ModuleParaList中,并能修改参数的值和描述,显示已经配置好的参数,点击已有参数列表即可对参数进行重新修改,双击即可删除参数。这样的操作过程,方便用户对每个模块的独立设置,更加清晰明了。
(2)单个模块的参数设置完毕,点击工况全局仿真参数设置子菜单,设置工况的全局仿真参数,包括总积分步长,列车数量,总积分时间。在全局仿真参数窗口中,显示参数的默认值,也可以对各个参数的值和描述进行更改。
(3)保存模块仿真参数和全局仿真参数,生成工况目录文件夹,写入到工况配置文件(.ini、.txt)中,保存在本地,便于用户查看。
2.6 工况保存和耦合仿真
工况保存是指工况创建完成后,把工况基本信息以及仿真参数信息和配置文件保存到数据库中。采用多线程的方式将文件上传到数据库中,提高系统性能,不会出现界面“死机”现象[11]。新建的工况保存在本地,每个工况对应一个目录文件夹,方便多工况的管理。工况目录下包括模块的子文件夹即模块的模型文件信息,工况的配置文件(.ini、.txt)。工况保存的具体实现过程如下:
(1)根据项目号、工况号、工况创建人id判断是否已经保存过该工况的信息,如果保存过,提示是否重复保存,否则直接进行工况信息保存。
(2)根据路径查找到指定工况的目录文件夹,读取工况配置文件(后缀为.ini),将工况的基本信息写入到工况表cs_conditiontable中,以及相应的仿真信息分别写入任务工况表、任务输入参数表、任务输出参数表、模块输入输出表、模块输入文件表等数据表中。工况表如表2所示。
耦合仿真是先判断工况是否已经保存到数据库中,如果没有保存,提示需要先提交相应工况。如果已保存,将工况的项目号、工况号、工况创建人ID通过网络提交给调度器,将各个模块调度到各个计算资源上进行仿真。仿真模型窗口中模型的线条颜色的变化说明工况的仿真状态。
表2 工况表
2.7 工况的管理
工况的管理是对已建好的工况进行工况查询,工况修改和下载耦合连接图,工况授权。
在工况列表下,双击某一工况,在属性窗口中显示工况的基本信息,可以在该窗口中对工况参数进行查询和修改,可以修改模板,最终更新工况的信息。
下载耦合连接图有4个用途:可以直接查询工况的模板信息;用于配置工况的仿真参数;在工况仿真过程中,通过模型线条的颜色变化显示工况的仿真状态;用于对仿真工况的数据结果进行监控,仿真结果以图形化的方式动态展示在窗口中[12-13],更加直观、方便地对数据进行分析和管理[14]。
工况授权是指用户可以将自己创建的工况授权给其他用户使用,自己创建的工况和其他用户授权给自己的工况都能在项目管理器窗口中显示出来并对其进行操作,提高了工况使用的安全性。
3 运行结果分析
为了验证该工况管理方式的有效性,对软件进行了测试仿真。根据仿真模型创建工况并进行提交仿真,主要讨论工况的参数配置和查询方式。通过采用MFC程序框架模式进行界面设计,实现了一个界面友好,便于操作的软件,整个软件的主界面如图3所示。左侧的项目管理器窗口对项目和工况进行层次化展示,仿真模型窗口可以查看工况的模板信息,属性窗口可以显示仿真工况的信息及其模板信息。在高速列车仿真领域和分布式人脸识别领域运用该工况创建方式在平台上进行仿真测试,都可以实现系统的仿真,这种工况管理方式很好地体现了可视化和通用性。
图3 仿真软件主界面
4 结束语
以高速列车数字化仿真平台为研究背景,从用户端仿真软件中对计算工况的管理方式进行讨论,对系统建模和用户权限管理不作详细讨论,讨论项目和工况的创建、模板的选取、参数配置方式以及层次化展示,工况保存和耦合仿真,实现了一种更加直观、便捷的工况仿真方式,能应用于多种领域进行仿真计算,对平台的应用进行了扩展,增强了软件使用的可视化和通用性。
[1] 崔怀林,萧化昆,杨云川,等.通用一体化仿真平台软件的设计与实现[J].系统仿真学报,2004,16(3):436-440.
[2] 张 宇.基于分布式的耦合仿真平台的研究与实现[D].成都:西南交通大学,2012.
[3] 杜志强.高速列车数字化协同计算及仿真平台的研究与改进[D].成都:西南交通大学,2015.
[4] 李 涛,陶春荣.实时连续动态曲线在VC中的实现[J].雷达与对抗,2006(2):66-70.
[5] 孙 鑫.VC++深入详解[M].北京:电子工业出版社,2012.
[6] 肖晨帆,肖 扬. 在VS2012下创建类似Visual Studio界面的方法[J].电脑编程技巧与维护,2014(19):34-40.
[7] 万春阳.仿真平台图形化建模及数据显示系统的研究与实现[D].成都:西南交通大学,2013.
[8] ZHENG Y C,FAN Y S,TAN W.Interactive-event-based workflow simulation in service oriented computing[C]//5th international conference on grid and cooperative computing.[s.l.]:[s.n.],2006.
[9] 史 杰.基于RBAC的双层权限管理系统的设计与实现[D].西安:西安电子科技大学,2011.
[10] 张志强,叶安胜,古沐松.基于Web软件的权限动态管理设计与实现[J].现代电子技术,2010,33(12):47-50.
[11] HORTON I.Windows programming with the Microsoft foundation classes (MFC)[M].[s.l.]:John Wiley&Sons,Inc.,2014:635-658.
[12] FLAMNINI F,GAGLINE A,OTTELO F,et al.Towards wireless sensor networks for railway infrastructure monitoring[C]//Electrical systems for aircaft,railway and ship prospulsion.[s.l.]:[s.n.],2010.
[13] 万春阳,黄海于.分布式仿真系统的数据监控软件的实现[J].计算机技术与发展,2013,23(9):14-17.
[14] LIANG S H L,GROITORU A,TAO C V.A distributed geospatial infrastructure for sensor web[J].Computer & Geosciences,2005,31(2):221-231.