协同仿真平台中仿真组件的封装技术研究
2014-06-06赵良臻王波兴
赵良臻,王波兴
(华中科技大学国家CAD支撑软件工程技术研究中心,武汉430074)
协同仿真平台中仿真组件的封装技术研究
赵良臻,王波兴
(华中科技大学国家CAD支撑软件工程技术研究中心,武汉430074)
在多学科多领域协同仿真平台中,仿真组件对应的仿真软件种类繁多且异构性较大。针对不同类型仿真组件之间数据庞杂和数据交换困难的问题,提出可对仿真组件进行一致访问与控制的封装技术。介绍仿真组件的构成及封装对象,研究仿真组件的封装机制、数据变量封装以及封装变量的映射与传递等关键封装技术,阐述封装组件的检测方法。通过仿真组件封装工具与自研协同仿真平台的集成,验证仿真组件封装技术的可行性,并结合具体的仿真组件封装实例,说明仿真组件的封装技术能有效提高模型和数据的重用性,降低对复杂仿真流程的管理难度。
协同仿真;仿真组件;变量封装;解析模板;UI控件;可重用组件库
1 概述
目前,仿真技术在各类应用需求的牵引及有关学科技术的推动下,形成了综合性的专业技术体系,协同仿真也由于 DIS、高层体系结构(High-level Architecture,HLA)等技术的发展得到了广泛的应用[1]。然而,由于仿真应用,特别是复杂系统的协同仿真应用,面向对象是整个系统,其组成以及子系统间的关系和行为都很复杂,牵涉到各个学科领域的知识,因此开发这类仿真应用费时费力,健壮性和重用性都不理想[2]。
以各类CAx(如CAD,CAM,CAE等)技术为代表的产品设计分析技术,目前已在机械、电子、软件、控制等领域中取得了许多研究成果与成功应用[3],但是单靠某一种或某一类仿真/分析工具来解决涉及多领域的复杂产品设计问题还不现实。因此,近年来研究者开始重视多领域协同CAx/DFx技术的研究开发,并有相应的工具软件开发成功,如ADAMS,Statemate以及Plug&Sim等[4]。但这些产品在支持多领域工具集成与协同上大多采用点对点的软件接口方式,在开放性、灵活性与通用性上均存在不足与局限,且缺乏对协同仿真相关过程、数据、模型的有效与一致的管理[5]。
基于组件的协同建模与仿真技术的快速发展为解决上述问题提供了途径,设计人员通过对复杂仿真任务进行适当粒度的分解,将软件实体模型抽象出各种合理的仿真组件,可以大幅简化复杂仿真流程的管理和控制[6-7]。然而,针对仿真组件封装技术的相关研究还较为匮乏,本文即以此作为出发点进行研究。
2 仿真组件
2.1 仿真组件的构成
仿真组件概念的提出是为了对仿真任务进行适当粒度的分解,以便于仿真流程的管理和控制,同时仿真组件是从成熟的仿真知识和专家经验提炼出来抽象而成的,在协同仿真平台中,用户可以通过拖拽仿真组件,便捷地组合成一个完整的仿真流程任务,通过流程引擎对仿真流程任务进行控制,极大地降低了仿真分析者的操作难度和复杂度。
在本文中,仿真组件是实体软件模型组件化的抽象。通过对软件模型的封装集成,提取模型中有效的数据变量作为仿真流程中组件间的流通数据。仿真组件是构成仿真流程的基本元素,是具体仿真任务的执行实现者,其组件的内容虽然各有不同,但其具有相同的组织格式和统一的管理模式。如图1所示,仿真组件主要由三部分构成:组件描述文件,组件数据文件和代码执行体。组件描述文件定义了仿真组件的属性信息及封装数据;组件数据文件描述了提供组件数据变量的模型文件信息;代码执行体是指提供组件封装操作的软件程序。
图1 仿真组件构成
2.2 仿真组件封装对象
仿真组件的封装对象不同于仿真组件的构成要素,仿真组件的构成要素主要从整体层面阐述仿真组件,而仿真组件的封装对象则是相对具体的封装操作对象。总体而言,仿真组件的封装对象主要由三部分组成:组件初始化信息封装,文件封装和数据变量封装。(1)组件初始化信息封装:包括组件类型(例如Ansys、Adams、Excel等类型)、组件作者、组件描述内容、组件运行环境等初始化信息。(2)文件封装:包括软件模型输入文件、模板文件、输出文件和执行文件(执行文件包含软件批处理命令)。(3)数据变量封装:包括从模型输入文件中提取的输入变量以及从模型输出文件中提取的输出变量。一个完整的数据变量包含以下属性:变量名,变量类型(输入、输出和组),变量值类型,默认值,描述信息,上限值,下限值,数据格式,变量范围等数据信息。
3 仿真组件封装关键技术
3.1 组件封装机制
复杂产品设计中将运用多种计算、建模、仿真类型软件,不同软件类型处理模型文件和模型数据的方式既有共同点又存在差异[8-9]。因此,本文针对软件模型文件及数据变量的不同特点提出2种仿真组件封装模式:输入/处理/输出(IPO)模式组件封装,插件集成模式组件封装。
(1)IPO模式组件封装。目前基于CAE软件封装的实现形式主要有输入/输出文件流、应用程序接口、程序语言脚本[10]。实际工程应用软件的输入、输出许多都是以文本文件的形式进行组织管理,文本文件也是各类CAE软件比较通用的文件数据格式,对此类通用数据文件可以采取解析文本数据项的方法对文本文件进行读写操作,用户所关心的只是如何由界面输入实际数据项,而数据如何与文本文件进行交互,则是实现封装的重点和难点。针对CAE软件模型由输入/处理/输出文件构成的组件形式,本文提出了IPO模式的组件封装。IPO模式组件封装原理如图2所示,IPO模式组件封装实质上对各输入、输出参数和模型文件建立了一种映射关系,首先加载输入、输出文件并从中提取需要的输入、输出封装变量,用户输入参数时,按照指定的映射法则将输入变量写入输入文件;输入文件经应用程序执行之后生成输出文件;输出变量按照映射法则在输出文件中寻找相应数据项并更新输出变量值,变量的映射与传递通过封装器自动完成,无需人为干预。
图2 IPO模式组件封装原理
(2)集成插件模式组件封装。Pro/E、CATIA等CAD软件以及Matlab、Excel等数学计算软件的模型文件往往集输入、输出文件于一身,组件模型输入、输出变量的提取以及驱动模型更新输入、输出变量值都需要调用自身软件的API接口,由此出现了基于COM的模型集成接口。本文针对上述软件的组件封装特点设计集成插件模式组件封装。
集成插件模式组件封装原理如图3所示。具体步骤如下:(1)启动插件程序;(2)加载指定封装模型;(3)提取模型包含的数据变量;(4)从数据变量中筛选封装的输入、输出变量;(5)保存组件封装文件;(6)关闭插件程序。
图3 集成插件模式组件封装原理
3.2 组件数据封装
数据封装是仿真组件封装的核心,软件模型文件是仿真分析数据的载体,解析模型文件获取数据变量是进行变量封装的前提。不同的工程分析、优化软件的数据格式各不相同,本文针对不同软件模型设计了2种变量解析方式:基于XML解析模板的变量封装和基于UI控件的手动变量封装。
3.2.1 基于XML解析模板的变量封装
一些常用CAE软件,其特定模型文件有固定的文件格式(例如:Ansys软件中的*.lgw、*.dat文件;Adams软件中的*.adm文件;Fluent软件中的* .jou文件;Natran软件中的*.bdf、*.dat文件等),通过分析上述模型文件中关键词、数据格式、分隔符等信息,设计对应的XML预定义解析模板。Adams软件adm模型文件对应的预定义解析模板文件示例如下:
XML解析模板中包含FileInformation(解析文件属性信息)、Pattern(变量类型,例如adm文件中包含 PART、MARKER、BUSHING等变量类型)、Variable(解析变量)等节点数据。加载模型文件后,选择与之对应的XML解析模板文件,通过遍历搜索模型文件,查看是否存在与 XML解析模板中Pattern-Kyeword和Variable-Keyword相匹配的文本信息,如存在,则可根据匹配数据创建解析变量。
依据XML解析模板进行变量封装主要包括变量名的创建、变量值的提取和变量类型的解析3个方面:
(1)变量名的创建:变量名由Pattern的Category属性、变量名ID及Variable的Keyword属性共同组成,有利于用户理解解析变量的含义。
(2)变量值的提取:根据XML解析模板中搜索到的Pattern-Keyword、Variable-Keyword的位置信息和Pattern节点下的Separator属性信息,定位变量值在模型文件中位置并提取。
(3)变量类型的解析:变量值在文本文件中都是以字符串类型呈现,需要根据 XML解析模板中Variable的Type类型,将字符串类型转化为Type指定类型(包括Int、Double、Bool和String等类型)。
最后,将所有解析变量以列表形式显示给用户,用户可以根据仿真需要选择合适的解析变量进行封装。
3.2.2 基于UI控件的手动变量封装
对于可读性好的模型文件(例如文本文件和Excel等文件),自动解析变量有时并不能完全满足用户变量封装的需求。在组件封装界面UI接口中,通过文本控件的定制,直接与模型文件交互封装是一种更为快捷的封装方式。
本文在组件封装界面中设计文件显示区,加载定制的文本控件、可视化交互解析软件模型文件。选择解析模型文件的分隔符类型(自动、逗号、括号、等号等类型),程序内部将根据分隔符类型,将模型文件各行内容分割成多个Token,鼠标在文件显示区移动过程中经过的Token将依次以特殊颜色显示。鼠标停留处对应的Token将高亮显示,通过鼠标双击此Token或右键菜单选择“添加变量”动作,实现单个变量的封装,同时支持鼠标按下左键进行拉选动作,实现数组变量的封装。
基于UI控件的手动变量封装的关键在于准确记录封装变量在模型文件中的位置,以保证后期组件运行过程中封装变量和模型文件之间数据变量映射与传递的准确性。手动封装变量的定位方式有2种:绝对定位和相对定位。绝对定位表示封装变量的位置相对于模型文件顶部或底部是固定的;相对定位则是更灵活的定位方式,封装变量的位置是相对于用户书签的。文本控件支持用户书签的添加,书签也有其自身的定位方式,包括相对于文件行和搜索文本的匹配次数。添加封装变量时,可以选择已添加的书签作为自身的相对书签,通过搜索相对书签位置,实现封装变量的快速定位。封装变量的范围由文件名、相对书签、相对书签的行、列号及分隔符的类型四部分组成(例如plane.lgw|ET|r3c4[, =:|`]),其中,列是指行中单词的个数。封装变量范围的定义为封装变量与模型文件间的映射奠定了基础。
3.3 封装变量映射与传递
封装变量是体现流程中数据流动的关键,也是流程能够以数据驱动方式执行的前提。数据变量有方向之分,可以是输入也可以是输出,而且某个组件的输入可能为另一个组件的输出。组件封装完成后,封装数据统一保存为XML格式的组件描述文件,仿真组件启动运行后,通过解析XML组件描述文件获取封装变量在仿真组件内部的映射数据。封装变量的映射与传递主要体现在2个方面:输入变量的写入和输出变量的读取。
(1)输入变量的写入:解析XML组件描述文件,根据输入变量名获取输入变量所属的模型文件和变量范围信息,将最新设置的输入变量值写入对应文件的对应位置。
(2)输出变量的读取:解析XML组件描述文件,根据输出变量名获取输出变量所属的模型文件和变量范围信息,在所属模型文件的对应位置提取最新的输出变量值。
针对文件与封装变量的映射机理,本文设计统一格式的文件读写接口。仿真组件启动运行时,通过调用文件读写接口实现输入变量的写入和输出变量的读取。
3.4 封装组件的检测
单个仿真组件的封装是否正确,将直接影响到整个流程仿真任务仿真结果的准确性。因此,针对已完成封装的仿真组件,如何检测仿真组件封装的正确性是封装人员必须解决的问题。在借鉴以往组件测试方法[11-12]基础上,本文通过单个仿真组件的测试运行,完成对仿真组件封装数据的统一检测。仿真组件的测试运行主要分为3个阶段:
(1)运行前处理:组件在运行前需要进行前置处理。首先,检测组件初始化信息是否填写完整;其次,查找所需模型文件,检查组件封装对象是否完整;最后,为输入变量设置新的变量值并将其写入对应模型文件,检测输入变量的变量范围在输入文件中是否存在并且正确写入新设置的变量值。
(2)运行:启动封装的执行文件,检测执行文件中的批处理命令能否正常启动相应软件程序。
(3)运行后处理:检测组件运行后是否生成新的输出模型文件;根据XML组件描述文件中保存的输出变量信息,解析输出模型文件,检测输出变量范围是否在输出模型文件中存在并且正确读取输出变量值。
针对仿真组件测试运行各阶段可能出现的封装错误,本文设计对应的报错机制,以提示框等形式显示封装错误信息,辅助用户快速定位出错位置。
4 仿真组件的应用集成
仿真组件的应用集成实质是仿真组件封装工具与协同仿真平台的集成。通过仿真组件封装工具提供的通用可视化封装界面,可实现多种应用软件的仿真组件封装,进而实现仿真组件与协同仿真平台之间的无缝集成。
仿真组件在协同仿真平台中的调用方式有2种:现场封装和下载现有组件。现场封装即从组件拖放区拖动组件图标至流程视图区,启动组件封装界面,进行仿真组件的现场封装;下载现有组件的方式是针对已上传至可重用组件库系统的仿真组件,无需重新封装,直接从可重用组件库下载即可使用。可重用模型组件库系统支持以集中方式储存可重用模型和仿真组件,供外部系统共享、引用以及下载,并以层次化树状结构管理系统中的模型组件,支持在全局范围内快速搜索组件。通过协同仿真平台与可重用模型组件库系统的连接,实现模型数据和仿真组件的可重用。仿真组件与自研协同仿真平台的集成界面如图4所示,界面右下角的“组件列表区”即为已集成的仿真组件软件类型。
图4 仿真组件与自研协同仿真平台的集成界面
仿真组件与协同仿真平台的集成测试主要包括以下3个方面:(1)对仿真组件中有效数据进行封装提取,比较模型树中显示变量与组件封装变量是否一致。(2)通过变量映射编辑器将各封装组件中相关联的输入、输出变量进行有效连接,查看组件运行过程中变量间数据传递是否正确。(3)选定参数变量进行实验设计,记录仿真组件运行的实验设计结果并绘制实验设计结果分析界面。
图4流程视图区所示仿真模型是由Adams组件、Ansys组件、Nastran组件以及Fluent组件联合组成的框架结构受力分析的仿真模型实例。针对此仿真模型部分封装参数的实验设计运行分析结果如图5所示,选择的设计变量为框架结构中某根管件的外径var和内径var_1,响应变量为框架结构的支撑力var_2,其中,单因素分析曲线即设计变量var_1与响应变量var_2之间的变化曲线;双因素分析曲线即设计变量var和var_1与响应变量var_2之间的三维变化曲线,通过输入、输出文件中实际变量值与曲线值对比可知,两者数值一致。
上述实例说明仿真组件的封装技术,为协同仿真平台的流程建模、数据交互提供了极大的便利,有效提高了模型和数据的重用性,降低了管理难度。
图5 仿真组件变量的实验设计分析
5 结束语
本文从仿真组件在协同仿真系统中的应用场景出发,初步探讨了仿真组件的封装技术及实现方法,为设计人员根据自己的需要将各种自研和商用软件进行快速组件化封装集成提供了思路。下一步的研究工作将重点结合工程实际应用及先进协同仿真技术,使仿真组件个性化封装和通用封装相结合,进一步扩展仿真组件的应用领域。
[1] 丁刚毅,赵 勇,肖 阳.HLA仿真建模应用研究[J].计算机仿真,2002,19(6):81-83.
[2] 燕雪峰,邸彦强,战守义,等.协同仿真平台中的仿真组件技术及其实现[J].计算机集成制造系统,2004, 10(4):453-460.
[3] 苏守宝,范王康,郁书好,等.CAx集成研究与应用模式[J].现代制造工程,2009,(4):137-142.
[4] 倪益华,杨将新,顾新建,等.基于知识的CAx集成的系统框架研究[J].计算机集成制造系统,2003,9(3): 175-178.
[5] 柴旭东,李伯虎,熊光楞,等.复杂产品协同仿真平台的研究与实现[J].计算机集成制造系统,2002,8(7):580-584.
[6] 孙知信,王汝传.基于组件的分布式虚拟仿真平台的研究与实现[J].系统仿真学报,2001,13(S2):416-418,422.
[7] 张 涛,杨小辉,何 丽.组件式机械仿真流程建模平台的设计与实现[J].计算机工程与设计,2009,30 (21):4960-4963.
[8] Szykman S.Design and Implementation of the Webenabled NIST Design Repository[J].ACM Transactions on Internet Technology,2006,6(1):85-116.
[9] 王成恩.复杂产品数字化设计关键技术研究与应用[D].沈阳:东北大学,2007.
[10] 张立强.支持AVIDM多学科集成优化环境中的若干关键技术研究[D].北京:北京信息控制研究所,2008.
[11] 王维平,朱一凡,华雪倩,等.仿真模型有效性确认与验证[M].长沙:国防科学技术大学出版社,1998.
[12] 孙世霞,邱晓刚,黄柯棣.联邦成员一致性测试软件研究[J].计算机仿真,2003,20(1):86-89.
编辑 金胡考
Research on Wrapping Technology of Simulation Component in Collaborative Simulation Platform
ZHAO Liang-zhen,WANG Bo-xing
(National CAD Support Software Engineering Research Center, Huazhong University of Science and Technology,Wuhan 430074,China)
In the multidisciplinary collaborative simulation platform,simulation software has a large variety and heterogeneity.In order to solve the difficulty of data exchange between different types of simulation components,this paper presents the wrapping technology of consistent access to the simulation components.It describes the composition and packaging object of the simulation component,and researches the key wrapping technologies,including simulation component wrapping mechanism,data variable wrapping,mapping and transmitting wrapped variable.Finally,with the integration of component wrapping tools and collaborative simulation platform,it verifies the feasibility of simulation component wrapping technology.Combining with specific examples of wrapping simulation component,it shows that wrapping technology can improve management and reuse of model and data,and reduce the management difficulty of complex simulation process.
collaborative simulation;simulation component;variable wrapping;parsing template;UI control;reusable component library
1000-3428(2014)09-0066-05
A
TP391.9
10.3969/j.issn.1000-3428.2014.09.014
国家科技重大专项基金资助项目“开放式高档数控系统、伺服装置和电机成套产品开发与综合验证”(2012ZX04001012)。
赵良臻(1987-),男,硕士研究生,主研方向:协同仿真,仿真组件封装技术;王波兴,副教授。
2013-09-17
2013-10-30E-mail:hust_zlz@163.com