CN104778323B - 集成多源性能分析数据的复杂装备作业流程仿真方法 - Google Patents

集成多源性能分析数据的复杂装备作业流程仿真方法 Download PDF

Info

Publication number
CN104778323B
CN104778323B CN201510177490.7A CN201510177490A CN104778323B CN 104778323 B CN104778323 B CN 104778323B CN 201510177490 A CN201510177490 A CN 201510177490A CN 104778323 B CN104778323 B CN 104778323B
Authority
CN
China
Prior art keywords
data
simulated actions
emulation
performance analysis
analysis data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510177490.7A
Other languages
English (en)
Other versions
CN104778323A (zh
Inventor
刘振宇
胡亮
谭建荣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN201510177490.7A priority Critical patent/CN104778323B/zh
Publication of CN104778323A publication Critical patent/CN104778323A/zh
Application granted granted Critical
Publication of CN104778323B publication Critical patent/CN104778323B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种集成多源性能分析数据的复杂装备作业流程仿真方法。定制仿真系统功能;编写仿真脚本;解析仿真脚本与多源性能分析数据;创建和注册层次化的仿真动作对象;完成集成多源性能分析数据的作业流程仿真。这种方法的特点是:定义了集成多源性能分析数据的复杂装备作业流程的建模和解析方法,可实现作业流程仿真和性能分析数据可视化同步执行;设计了统一的仿真动作接口支持仿真系统的扩展开发和仿真功能的定制;将渲染引擎与仿真方法分离,从而可以在不同的应用场景选择不同的渲染引擎以获得更好的可视化效果。

Description

集成多源性能分析数据的复杂装备作业流程仿真方法
技术领域
本发明涉及复杂装备数字样机作业流程仿真领域和数据可视化领域,尤其涉及一种集成多源性能分析数据的复杂装备作业流程仿真方法。
背景技术
复杂装备的作业流程复杂,涉及零部件多,受到复杂先序、有限资源以及时间节拍等条件的约束,通过模拟仿真,设计人员可以直观地进行作业流程分析与评价,在设计早期阶段发现缺陷、验证合理性。
产品性能分析是产品开发过程中的重要步骤,能在设计阶段分析产品的性能情况,给设计提供指导。产品性能分析过程往往需要使用涉及多个学科的多种CAE分析软件,从而产生大量的多源性能分析数据。多源性能分析数据主要包括:1、一维时变数据,例如运动学分析得到的速度值随时间变化情况,该类数据一般用曲线进行可视化;2、标量场数据,此类数据记录有限元模型每个单元节点上标量性能值在关键时间点上的变化情况,例如静力学分析得到的应力应变数据,一般用动态云图进行可视化;3、矢量场数据,此类数据记录有限元模型每个单元节点或空间关键位置点上矢量性能值在关键时间点上的变化情况,例如流体力学分析得到的流量数据,一般用流场或模型变形进行可视化。
在作业流程仿真的基础上,集成多源性能数据可视化,使得装备的设计者、制造者能直观地了解装备运行过程中关键工况、关键部件的性能情况。基于数字样机和数据可视化技术,开发集成多源性能数据可视化的数字样机作业流程仿真系统可服务于不同的用户群体:
l 各级领导者:可视化汇报各阶段项目进展,提供真实感决策依据等;
l 装备设计者:验证作业流程设计的合理性、发现缺陷;综合不同性能的分析结果,了解装备整体性能情况等;
l 各界用户:展示、科普和培训复杂装备相关技术。
目前将作业流程建模仿真与多源性能分析数据可视化相结合的工作较少,且存在很大的局限性:诸如Delmia等流程建模软件不涉及性能分析数据的可视化;各类CAE分析软件只能针对单一自身领域的性能分析数据进行可视化,且无法与数字样机工作流程相结合;数据后处理软件(如Ensight)都不支持作业流程的建模。除此之外,各商业软件还存在两个方面的局限性:1、二次开发难度高,无法基于这些商业软件开发独立软件;2、不同商业软件都有固定的三维渲染引擎,建模方法与可视化结果耦合。
发明内容
本发明的目的是提供一种集成多源性能分析数据的复杂装备作业流程仿真方法,用于将复杂装备的数字样机作业流程建模仿真与多源性能分析数据的可视化相结合,给开发者提供接口开发特定仿真任务所需求的多源性能分析数据解析方法、仿真行为。
集成多源性能分析数据的复杂装备作业流程仿真方法包括以下步骤:
1.1)定制仿真系统功能:实现与渲染引擎无关的三维场景控制和数据可视化接口;重用或定制与特定集成多源性能分析数据的复杂装备作业流程仿真任务相关的仿真对象类型,并使用对象创建的索引方法将类型注册在仿真系统中;
1.2)编写仿真脚本:根据复杂装备作业流程编写仿真脚本,并将多源性能分析数据通过链接的形式集成到仿真脚本中;
1.3)仿真脚本与多源性能分析数据解析:将仿真脚本和多源性能分析数据解析成树状仿真数据;
1.4)层次化的仿真动作对象创建与注册:使用对象创建的索引方法根据树状仿真数据进行仿真动作对象的创建,并根据触发器将仿真动作对象注册在仿真系统中;
1.5)集成多源性能分析数据的作业流程仿真:根据触发器执行仿真动作对象,完成作业流程仿真,并在流程仿真过程中实现性能分析数据同步可视化。
所述渲染引擎无关的三维场景控制和数据可视化接口包括:
三维场景实体接口,定义在渲染引擎中添加、查找、操作三维场景实体的方法;
三维数据可视化接口,定义使用渲染引擎中渲染性能分析数据可视化结果的方法;
Widget接口,提供在软件界面上绘制二维图形的方法;
所述仿真对象类型包括:
基本数据解析器类型:用于将字符串解析成基本类型的数据;
文件解析器类型:用于将脚本文件和性能分析数据文件解析成树状仿真数据;
仿真动作类型:在仿真中完成一项具体功能的单元;
触发器类型:用于表征仿真动作执行的时机;
性能分析数据类型:用于存储从性能分析数据文件中读取并解析得到的数据。
所述对象创建的索引方法,使用泛型编程和宏隐藏传统工厂方法模式中的创建工厂角色,其具体步骤包括:
3.1)定义对象创建工厂接口,对象创建工厂接口包括一个创建方法,继承所述接口,使用类模板实现一个模板化创建工厂类型,模板化创建工厂类型的创建方法构造一个模板类型的对象并返回该对象指针;
3.2)使用宏定义仿真对象类型的注册过程:使用仿真对象类型实例化一个模板化创建工厂对象,将创建工厂对象注册到创建工厂映射表中,创建工厂映射表是仿真对象类型的索引字符串与创建工厂对象的映射;
3.3)使用宏定义所述仿真对象的创建过程:根据索引字符串匹配创建工厂对象,调用创建工厂对象的创建方法创建仿真对象。
所述仿真脚本与多源性能分析数据解析包括以下步骤:
4.1)定义树状仿真数据存储集成多源性能分析数据的复杂装备作业流程建模的数据,树状仿真数据的节点包含四种数据:
节点名称,表明该节点数据适用的对象;
属性列表,为属性名称与类型为字符串的属性值之间映射的映射表,用以存储该节点中值为基本类型的属性;
子节点,分为两种:节点名称形如“节点名称.子节点名称”的子节点为节点的复杂属性,复杂属性是指属性值具有结构且无法用基本类型数据及其数组表示的属性,节点名称形如“子节点名称”的子节点单纯作为子节点用于其他对象;
节点值,存储在数据解析过程中生成的无法用字符串表示的值;
4.2)使用Xml文件格式作为集成多源性能分析数据的复杂装备作业流程建模的脚本文件格式,并定义特殊Xml标记用以链接到其他脚本文件和性能分析数据文件;
4.3)执行文件解析器解析过程,将脚本文件和性能分析数据文件解析成树状仿真数据。
所述文件解析器解析过程包含如下步骤:
5.1)针对脚本文件和各种扩展名的性能分析数据文件开发或重用对应的文件解析器,并将文件解析器注册在创建工厂映射表中,索引字符串是文件的扩展名;
5.2)解析主脚本文件,遇到特殊Xml标记时,根据链接文件的扩展名创建对应文件解析器对象进行解析;
5.3)Xml文件解析器将Xml文件解析成与Xml文件结构相同的树状仿真数据;性能分析数据文件解析器解析文件生成性能分析数据对象,新建树状仿真数据的节点,将性能分析数据对象作为节点的节点值;
5.4)文件解析器递归地解析文件,得到若干树状仿真数据,将树状仿真数据的根节点添加至上层树状仿真数据的子节点中,主脚本文件解析得到的树状仿真数据的根节点为所有树状仿真数据的根节点。
仿真动作对象的接口定义包括:
属性表字段,用于定义仿真动作对象需要的属性;
触发器字段,用于定义仿真动作对象执行的时机;
执行状态字段,用于标示仿真动作对象执行的状态,包括未执行、正在执行、已执行次数;
解析方法,根据属性表字段解析树状仿真数据;
执行方法,执行仿真动作对象,修改仿真系统的状态;
撤销方法,撤销仿真动作对象对仿真系统的修改;
所述仿真动作对象包括两种类型:
基本仿真动作对象:实现仿真系统中某一特定状态的转移;
容器仿真动作对象:管理一组仿真动作对象,在执行方法中使用自定义的算法调用被管理的仿真动作对象的执行方法。
所述层次化的仿真动作对象创建与注册包含如下步骤:
7.1)开发或重用仿真动作类型、触发器类型、基本数据解析器类型,并注册在创建工厂映射表中,索引字符串分别是仿真动作名称、触发器名称和基本类型名称;
7.2)遍历树状仿真数据,根据树状仿真数据节点的节点名称创建已注册的仿真动作类型的对象,并将当前节点提供给仿真动作对象的解析方法,进行仿真动作对象的属性设置和层次化解析。
所述仿真动作对象的解析方法包含如下步骤:
8.1)仿真动作对象实例化属性表字段,属性表包括若干行,每行包含五种数据:属性名称、数据类型名称、默认值、基本类型标识、属性描述;
8.2)遍历属性表的每一行,检查“基本类型标识”,如果为真,则查找树状仿真数据节点的属性列表中同名的属性字符串,根据“数据类型名称”创建已注册的基本数据解析器对象,使用基本数据解析器对象解析属性字符串得到属性值,若未查找到同名的属性字符串则解析“默认值”;如果为假,则查找树状仿真数据节点中标记为复杂属性的同名子节点,将该子节点作为属性值;
8.3)将“基本类型标识”为真的属性值赋值给仿真动作对象对应的字段,调用仿真动作对象的自定义解析方法解析“基本类型标识”为假的属性值;
8.4)容器仿真动作对象的自定义解析方法将“基本类型标识”为假的属性值作为树状仿真数据执行层次化的仿真动作对象创建过程,并将创建得到的仿真动作对象注册在自身的容器里;
8.5)仿真动作对象的触发器是一种特殊且“基本类型标识”为假的属性值,根据属性值中树状仿真数据的节点名称创建已注册的触发器对象,并赋值给仿真动作对象的触发器字段;
8.6)将执行完解析方法的仿真动作对象注册到仿真系统中,根据触发器添加到相应的事件分发器中。
所述集成多源性能分析数据的作业流程仿真包含如下步骤:
9.1)仿真系统执行初始化方法,遍历所有事件分发器并执行事件分发器的初始化方法;
9.2)仿真系统进入仿真循环,仿真循环的每一帧调用所有事件分发器更新状态;
9.3)每个事件分发器查找与当前状态匹配的触发器,将与触发器关联的仿真动作对象加入到正在执行列表中;
9.4)调用正在执行列表中的所有仿真动作对象的执行方法,检查执行方法的返回值,如果标记为未结束,则将该仿真动作对象加入到待执行列表中。
9.5)执行完所有正在执行列表中的仿真动作对象后,将待执行列表中的仿真动作对象复制到正在执行列表中等待下一帧执行,并清空待执行列表。
所述性能分析数据同步可视化包含如下步骤:
10.1)仿真动作对象中有一类用于性能分析数据对象的注册,该类仿真动作对象解析树状仿真数据节点,该树状仿真数据节点的节点值为性能分析数据对象,该类仿真动作对象将性能分析数据对象作为字段储存,将该类仿真动作对象的触发器设为在仿真系统初始化时触发;
10.2)仿真系统初始化时执行用于性能分析数据对象注册的仿真动作对象,该类仿真动作对象根据脚本中对性能分析数据对象的描述,将其分类注册在仿真系统中的仿真资源里,建立性能分析数据对象索引;
10.3)仿真动作对象中有一类用于性能分析数据对象的可视化,该类仿真动作对象在解析方法执行中从树状仿真数据中取得性能分析数据对象索引;
10.4)将用于性能分析数据对象可视化的仿真动作对象与对应的复杂装备作业流程仿真动作对象放在同一个容器仿真动作对象中;
10.5)当容器仿真动作对象执行时,在仿真循环的每一帧同时调用复杂装备作业流程仿真动作对象和用于性能分析数据对象可视化的仿真动作对象的执行方法;
10.6)用于性能分析数据对象可视化的仿真动作对象执行的每一帧中,仿真动作对象从性能分析数据对象中提取当前时间点的数据,调用三维数据可视化接口或Widget接口进行数据可视化。
该方法的优势在于:定义了集成多源性能分析数据的复杂装备作业流程的建模和解析方法,可实现作业流程仿真和性能分析数据可视化同步执行;设计了统一的仿真动作接口支持仿真系统的扩展开发和仿真功能的定制;将渲染引擎与仿真方法分离,从而可以在不同的应用场景选择不同的渲染引擎以获得更好的可视化效果。
附图说明
图1是集成多源性能分析数据的复杂装备作业流程仿真方法流程示意图;
图2是仿真动作接口于其示例子类的类图;
图3是仿真数据树形结构的节点声明示意图;
图4是仿真脚本示意图;
图5是文件解析器的类图;
图6是使用脚本文件创建仿真动作对象的示意图;
图7是仿真循环管理的算法流程图;
图8是多源性能分析数据对象注册、可视化的算法流程图。
具体实施方式
下面结合附图和具体实施例对本发明提供的一种集成多源性能分析数据的复杂装备作业流程仿真方法进行详细描述。
集成多源性能分析数据的复杂装备作业流程仿真方法包括以下步骤:
1.1)定制仿真系统功能:实现与渲染引擎无关的三维场景控制和数据可视化接口;重用或定制与特定集成多源性能分析数据的复杂装备作业流程仿真任务相关的仿真对象类型,并使用对象创建的索引方法将类型注册在仿真系统中;
1.2)编写仿真脚本:根据复杂装备作业流程编写仿真脚本,并将多源性能分析数据通过链接的形式集成到仿真脚本中;
1.3)仿真脚本与多源性能分析数据解析:将仿真脚本和多源性能分析数据解析成树状仿真数据;
1.4)层次化的仿真动作对象创建与注册:使用对象创建的索引方法根据树状仿真数据进行仿真动作对象的创建,并根据触发器将仿真动作对象注册在仿真系统中;
1.5)集成多源性能分析数据的作业流程仿真:根据触发器执行仿真动作对象,完成作业流程仿真,并在流程仿真过程中实现性能分析数据同步可视化。
所述渲染引擎无关的三维场景控制和数据可视化接口包括:
三维场景实体接口,定义在渲染引擎中添加、查找、操作三维场景实体的方法;
三维数据可视化接口,定义使用渲染引擎中渲染性能分析数据可视化结果的方法;
Widget接口,提供在软件界面上绘制二维图形的方法;
所述仿真对象类型包括:
基本数据解析器类型:用于将字符串解析成基本类型的数据;
文件解析器类型:用于将脚本文件和性能分析数据文件解析成树状仿真数据;
仿真动作类型:在仿真中完成一项具体功能的单元;
触发器类型:用于表征仿真动作执行的时机;
性能分析数据类型:用于存储从性能分析数据文件中读取并解析得到的数据。
所述对象创建的索引方法,使用泛型编程和宏隐藏传统工厂方法模式中的创建工厂角色,其具体步骤包括:
3.1)定义对象创建工厂接口,对象创建工厂接口包括一个创建方法,继承所述接口,使用类模板实现一个模板化创建工厂类型,模板化创建工厂类型的创建方法构造一个模板类型的对象并返回该对象指针;
3.2)使用宏定义仿真对象类型的注册过程:使用仿真对象类型实例化一个模板化创建工厂对象,将创建工厂对象注册到创建工厂映射表中,创建工厂映射表是仿真对象类型的索引字符串与创建工厂对象的映射;
3.3)使用宏定义所述仿真对象的创建过程:根据索引字符串匹配创建工厂对象,调用创建工厂对象的创建方法创建仿真对象。
所述仿真脚本与多源性能分析数据解析包括以下步骤:
4.1)定义树状仿真数据存储集成多源性能分析数据的复杂装备作业流程建模的数据,树状仿真数据的节点包含四种数据:
节点名称,表明该节点数据适用的对象;
属性列表,为属性名称与类型为字符串的属性值之间映射的映射表,用以存储该节点中值为基本类型的属性;
子节点,分为两种:节点名称形如“节点名称.子节点名称”的子节点为节点的复杂属性,复杂属性是指属性值具有结构且无法用基本类型数据及其数组表示的属性,节点名称形如“子节点名称”的子节点单纯作为子节点用于其他对象;
节点值,存储在数据解析过程中生成的无法用字符串表示的值;
4.2)使用Xml文件格式作为集成多源性能分析数据的复杂装备作业流程建模的脚本文件格式,并定义特殊Xml标记用以链接到其他脚本文件和性能分析数据文件;
4.3)执行文件解析器解析过程,将脚本文件和性能分析数据文件解析成树状仿真数据。
所述文件解析器解析过程包含如下步骤:
5.1)针对脚本文件和各种扩展名的性能分析数据文件开发或重用对应的文件解析器,并将文件解析器注册在创建工厂映射表中,索引字符串是文件的扩展名;
5.2)解析主脚本文件,遇到特殊Xml标记时,根据链接文件的扩展名创建对应文件解析器对象进行解析;
5.3)Xml文件解析器将Xml文件解析成与Xml文件结构相同的树状仿真数据;性能分析数据文件解析器解析文件生成性能分析数据对象,新建树状仿真数据的节点,将性能分析数据对象作为节点的节点值;
5.4)文件解析器递归地解析文件,得到若干树状仿真数据,将树状仿真数据的根节点添加至上层树状仿真数据的子节点中,主脚本文件解析得到的树状仿真数据的根节点为所有树状仿真数据的根节点。
仿真动作对象的接口定义包括:
属性表字段,用于定义仿真动作对象需要的属性;
触发器字段,用于定义仿真动作对象执行的时机;
执行状态字段,用于标示仿真动作对象执行的状态,包括未执行、正在执行、已执行次数;
解析方法,根据属性表字段解析树状仿真数据;
执行方法,执行仿真动作对象,修改仿真系统的状态;
撤销方法,撤销仿真动作对象对仿真系统的修改;
所述仿真动作对象包括两种类型:
基本仿真动作对象:实现仿真系统中某一特定状态的转移;
容器仿真动作对象:管理一组仿真动作对象,在执行方法中使用自定义的算法调用被管理的仿真动作对象的执行方法。
所述层次化的仿真动作对象创建与注册包含如下步骤:
7.1)开发或重用仿真动作类型、触发器类型、基本数据解析器类型,并注册在创建工厂映射表中,索引字符串分别是仿真动作名称、触发器名称和基本类型名称;
7.2)遍历树状仿真数据,根据树状仿真数据节点的节点名称创建已注册的仿真动作类型的对象,并将当前节点提供给仿真动作对象的解析方法,进行仿真动作对象的属性设置和层次化解析。
所述仿真动作对象的解析方法包含如下步骤:
8.1)仿真动作对象实例化属性表字段,属性表包括若干行,每行包含五种数据:属性名称、数据类型名称、默认值、基本类型标识、属性描述;
8.2)遍历属性表的每一行,检查“基本类型标识”,如果为真,则查找树状仿真数据节点的属性列表中同名的属性字符串,根据“数据类型名称”创建已注册的基本数据解析器对象,使用基本数据解析器对象解析属性字符串得到属性值,若未查找到同名的属性字符串则解析“默认值”;如果为假,则查找树状仿真数据节点中标记为复杂属性的同名子节点,将该子节点作为属性值;
8.3)将“基本类型标识”为真的属性值赋值给仿真动作对象对应的字段,调用仿真动作对象的自定义解析方法解析“基本类型标识”为假的属性值;
8.4)容器仿真动作对象的自定义解析方法将“基本类型标识”为假的属性值作为树状仿真数据执行层次化的仿真动作对象创建过程,并将创建得到的仿真动作对象注册在自身的容器里;
8.5)仿真动作对象的触发器是一种特殊且“基本类型标识”为假的属性值,根据属性值中树状仿真数据的节点名称创建已注册的触发器对象,并赋值给仿真动作对象的触发器字段;
8.6)将执行完解析方法的仿真动作对象注册到仿真系统中,根据触发器添加到相应的事件分发器中。
所述集成多源性能分析数据的作业流程仿真包含如下步骤:
9.1)仿真系统执行初始化方法,遍历所有事件分发器并执行事件分发器的初始化方法;
9.2)仿真系统进入仿真循环,仿真循环的每一帧调用所有事件分发器更新状态;
9.3)每个事件分发器查找与当前状态匹配的触发器,将与触发器关联的仿真动作对象加入到正在执行列表中;
9.4)调用正在执行列表中的所有仿真动作对象的执行方法,检查执行方法的返回值,如果标记为未结束,则将该仿真动作对象加入到待执行列表中。
9.5)执行完所有正在执行列表中的仿真动作对象后,将待执行列表中的仿真动作对象复制到正在执行列表中等待下一帧执行,并清空待执行列表。
所述性能分析数据同步可视化包含如下步骤:
10.1)仿真动作对象中有一类用于性能分析数据对象的注册,该类仿真动作对象解析树状仿真数据节点,该树状仿真数据节点的节点值为性能分析数据对象,该类仿真动作对象将性能分析数据对象作为字段储存,将该类仿真动作对象的触发器设为在仿真系统初始化时触发;
10.2)仿真系统初始化时执行用于性能分析数据对象注册的仿真动作对象,该类仿真动作对象根据脚本中对性能分析数据对象的描述,将其分类注册在仿真系统中的仿真资源里,建立性能分析数据对象索引;
10.3)仿真动作对象中有一类用于性能分析数据对象的可视化,该类仿真动作对象在解析方法执行中从树状仿真数据中取得性能分析数据对象索引;
10.4)将用于性能分析数据对象可视化的仿真动作对象与对应的复杂装备作业流程仿真动作对象放在同一个容器仿真动作对象中;
10.5)当容器仿真动作对象执行时,在仿真循环的每一帧同时调用复杂装备作业流程仿真动作对象和用于性能分析数据对象可视化的仿真动作对象的执行方法;
10.6)用于性能分析数据对象可视化的仿真动作对象执行的每一帧中,仿真动作对象从性能分析数据对象中提取当前时间点的数据,调用三维数据可视化接口或Widget接口进行数据可视化。
实施例
仿真方法包含五个步骤,如图1所示:定制仿真系统功能;编写仿真脚本;解析仿真脚本与多源性能分析数据;创建与注册层次化的仿真动作对象;执行集成多源性能分析数据的作业流程仿真。步骤一是由仿真系统开发者针对特定仿真任务开发仿真系统时完成;步骤二、三、四是集成多源性能分析数据的作业流程仿真建模、解析过程;步骤五是集成多源性能分析数据的作业流程仿真执行的过程。
对象创建的索引方法
对象创建的索引方法通过索引字符串创建对象,该方法通过C++泛型编程和宏定义的方式隐藏了传统工厂方法模式中的抽象工厂和具体工厂角色,使开发者只用关心仿真对象类型及其索引字符串本身,无需关心创建工厂对象。
定义创建工厂接口,继承接口,使用类模板实现一个模板化创建工厂类型,接口和模板化创建工厂类型定义如下:
class IInstanceCreator : public IClass
{
public:
virtual void* Generate() const = 0;
};
template<class T>
class InstanceCreator : public IInstanceCreator
{
public:
void* Generate() const { return new T();}
};
实现创建工厂映射表,以存储索引字符串与创建工厂对象的映射:
class ClassMap : public IClass
{
protected:
std::map<string, IInstanceCreator*> m_Map;
public:
static ClassMap* Instance();
void* FetchInstance(string name){
if(m_Map.count(name))
return m_Map[name]->Generate();
}
BoolReturn RegisterCreator(string name, IInstanceCreator* creator){
m_Map[name]=creator;
}
//其他方法
};
对于需要使用索引字符串创建的对象类型,新建一个创建工厂对象,创建工厂对象的类模板使用对象类型,将创建工厂对象注册到创建工厂映射表中,映射工厂是对象类型的索引字符串与创建工厂对象的映射,使用宏将该步骤进行封装,宏定义如下:
#define RegisterClassInMap(Name, Class) ClassMap::Instance()->RegisterCreator(std::string(Name), new InstanceCreator<Class>())
使用上述宏添加所需的新类型,在需要创建该类型对象时,使用索引字符串进行创建,该过程也使用宏进行封装:
#define FetchInstance(Name) ClassMap::Instance()->FetchInstance(std::string(Name))
开发者在使用RegisterClassInMap和FetchInstance宏时只用关心索引字符串Name和对象类型Class。在本仿真方法中这两个宏用于基本数据解析器类型、文件解析器类型、仿真动作类型、触发器类型、多源性能分析数据类型的注册和对象创建,这些类型对象的创建与脚本中仿真数据解析过程相关。
仿真动作接口
仿真动作作为仿真中完成一项功能的单元,使用统一的接口和不同的实现在仿真系统统一的管理下完成不同的功能。图2给出了仿真动作接口与其示例子类的类图。
仿真系统在解析脚本数据完成后,创建仿真动作对象,将仿真数据提供给仿真动作对象的Parse方法,Parse方法使用属性表解析仿真数据进行对象字段的赋值。在仿真系统执行阶段,根据触发器激活仿真动作对象,调用Execute方法,将仿真系统的指针传给仿真动作对象,仿真动作对象根据自身算法修改仿真系统状态。在仿真系统需要的时候,调用仿真动作对象的Undo方法取消对仿真系统的修改。
仿真脚本与多源性能分析数据解析
如图3所示的树节点类型声明,采用树状结构存储仿真数据,该树状仿真数据结构与Xml文件结构类似,但添加了节点值一项。节点值存储在数据解析过程中生成的无法用字符串表示的值,一般用于存储多源性能分析数据对象。
仿真脚本的解析是将仿真脚本及其链接的多源性能分析数据文件解析成树状仿真数据的过程。图4是仿真脚本的示例,图5是文件解析器的类图。这里着重说明多源性能分析数据文件的解析过程。多源性能分析数据文件通过Xml脚本文件中的链接标记集成到仿真脚本中。当Xml文件解析器解析到链接标记时,调用与该性能分析数据文件扩展名对应的文件解析器解析该文件。该性能分析数据文件解析器读取解析数据文件并创建一个性能分析数据对象,将该对象作为一个树节点的节点值,设置该树节点的节点名称、相关属性等,将该节点添加到树状仿真数据中。
图6是脚本文件-仿真对象创建的示意图,由于仿真数据与脚本文件是对应关系,图中省略了仿真数据解析的步骤。脚本文件和仿真对象创建通过对象创建的索引方法相关联,实际上就是把脚本文件中树节点名称作为类型注册时的索引字符串。
集成多源性能分析数据的作业流程仿真
图7是仿真循环管理的算法流程图。仿真循环管理通过正在执行列表和待执行列表记录需要在该帧和下帧执行的仿真动作对象。仿真动作对象的触发器决定了该仿真动作对象应在系统达到何种状态时被添加到正在执行列表。对于标记为未完成的仿真动作对象,系统将其加入到待仿真列表中在下一帧继续执行,实现仿真动作对象的连续执行。性能分析数据的可视化使用仿真动作对象的方式,因此在仿真循环管理角度看与其他仿真动作没有差别。
图8是多源性能分析数据对象注册、可视化的算法流程图。多源性能分析数据对象的可视化需要两个仿真动作对象完成:注册和可视化。之所以将注册和可视化的仿真动作对象分开是为了更好地管理多源性能分析数据对象,有些性能分析数据对象(例如运动学分析中位移数据)不仅可以用来可视化,还可以用来控制渲染引擎三维实体的运动。

Claims (10)

1.一种集成多源性能分析数据的复杂装备作业流程仿真方法,其特征在于包括以下步骤:
1.1)定制仿真系统功能:实现与渲染引擎无关的三维场景控制和数据可视化接口;重用或定制与特定集成多源性能分析数据的复杂装备作业流程仿真任务相关的仿真对象类型,并使用对象创建的索引方法将类型注册在仿真系统中;
1.2)编写仿真脚本:根据复杂装备作业流程编写仿真脚本,并将多源性能分析数据通过链接的形式集成到仿真脚本中;
1.3)仿真脚本与多源性能分析数据解析:将仿真脚本和多源性能分析数据解析成树状仿真数据;
1.4)层次化的仿真动作对象创建与注册:使用对象创建的索引方法根据树状仿真数据进行仿真动作对象的创建,并根据触发器将仿真动作对象注册在仿真系统中;
1.5)集成多源性能分析数据的作业流程仿真:根据触发器执行仿真动作对象,完成作业流程仿真,并在流程仿真过程中实现性能分析数据同步可视化;仿真动作对象的触发器是一种 “基本类型标识”为假的属性值。
2.根据权利要求1所述的仿真方法,其特征在于,所述渲染引擎无关的三维场景控制和数据可视化接口包括:
三维场景实体接口,定义在渲染引擎中添加、查找、操作三维场景实体的方法;
三维数据可视化接口,定义使用渲染引擎中渲染性能分析数据可视化结果的方法;
Widget接口,提供在软件界面上绘制二维图形的方法;
所述仿真对象类型包括:
基本数据解析器类型:用于将字符串解析成基本类型的数据;
文件解析器类型:用于将脚本文件和性能分析数据文件解析成树状仿真数据;
仿真动作类型:在仿真中完成一项具体功能的单元;
触发器类型:用于表征仿真动作执行的时机;
性能分析数据类型:用于存储从性能分析数据文件中读取并解析得到的数据。
3.根据权利要求1所述的仿真方法,其特征在于,所述对象创建的索引方法,使用泛型编程和宏隐藏传统工厂方法模式中的创建工厂角色,其具体步骤包括:
3.1)定义对象创建工厂接口,对象创建工厂接口包括一个创建方法,继承所述接口,使用类模板实现一个模板化创建工厂类型,模板化创建工厂类型的创建方法构造一个模板类型的对象并返回该对象指针;
3.2)使用宏定义仿真对象类型的注册过程:使用仿真对象类型实例化一个模板化创建工厂对象,将创建工厂对象注册到创建工厂映射表中,创建工厂映射表是仿真对象类型的索引字符串与创建工厂对象的映射;
3.3)使用宏定义所述仿真对象的创建过程:根据索引字符串匹配创建工厂对象,调用创建工厂对象的创建方法创建仿真对象。
4.根据权利要求1所述的仿真方法,其特征在于,所述仿真脚本与多源性能分析数据解析包括以下步骤:
4.1)定义树状仿真数据存储集成多源性能分析数据的复杂装备作业流程建模的数据,树状仿真数据的节点包含四种数据:
节点名称,表明该节点数据适用的对象;
属性列表,为属性名称与类型为字符串的属性值之间映射的映射表,用以存储该节点中值为基本类型的属性;
子节点,分为两种:节点名称形如“节点名称.子节点名称”的子节点为节点的复杂属性,复杂属性是指属性值具有结构且无法用基本类型数据及其数组表示的属性,节点名称形如“子节点名称”的子节点单纯作为子节点用于其他对象;
节点值,存储在数据解析过程中生成的无法用字符串表示的值;
4.2)使用Xml文件格式作为集成多源性能分析数据的复杂装备作业流程建模的脚本文件格式,并定义特殊Xml标记用以链接到其他脚本文件和性能分析数据文件;
4.3)执行文件解析器解析过程,将脚本文件和性能分析数据文件解析成树状仿真数据。
5.根据权利要求4所述的仿真方法,其特征在于,所述文件解析器解析过程包含如下步骤:
5.1)针对脚本文件和各种扩展名的性能分析数据文件开发或重用对应的文件解析器,并将文件解析器注册在创建工厂映射表中,索引字符串是文件的扩展名;
5.2)解析主脚本文件,遇到特殊Xml标记时,根据链接文件的扩展名创建对应文件解析器对象进行解析;
5.3)Xml文件解析器将Xml文件解析成与Xml文件结构相同的树状仿真数据;性能分析数据文件解析器解析文件生成性能分析数据对象,新建树状仿真数据的节点,将性能分析数据对象作为节点的节点值;
5.4)文件解析器递归地解析文件,得到若干树状仿真数据,将树状仿真数据的根节点添加至上层树状仿真数据的子节点中,主脚本文件解析得到的树状仿真数据的根节点为所有树状仿真数据的根节点。
6.根据权利要求1所述的仿真方法,其特征在于,仿真动作对象的接口定义包括:
属性表字段,用于定义仿真动作对象需要的属性;
触发器字段,用于定义仿真动作对象执行的时机;
执行状态字段,用于标示仿真动作对象执行的状态,包括未执行、正在执行、已执行次数;
解析方法,根据属性表字段解析树状仿真数据;
执行方法,执行仿真动作对象,修改仿真系统的状态;
撤销方法,撤销仿真动作对象对仿真系统的修改;
所述仿真动作对象包括两种类型:
基本仿真动作对象:实现仿真系统中某一特定状态的转移;
容器仿真动作对象:管理一组仿真动作对象,在执行方法中使用自定义的算法调用被管理的仿真动作对象的执行方法。
7.根据权利要求1所述的仿真方法,其特征在于,所述层次化的仿真动作对象创建与注册包含如下步骤:
7.1)开发或重用仿真动作类型、触发器类型、基本数据解析器类型,并注册在创建工厂映射表中,索引字符串分别是仿真动作名称、触发器名称和基本类型名称;
7.2)遍历树状仿真数据,根据树状仿真数据节点的节点名称创建已注册的仿真动作类型的对象,并将当前节点提供给仿真动作对象的解析方法,进行仿真动作对象的属性设置和层次化解析。
8.根据权利要求7所述的仿真方法,其特征在于,所述仿真动作对象的解析方法包含如下步骤:
8.1)仿真动作对象实例化属性表字段,属性表包括若干行,每行包含五种数据:属性名称、数据类型名称、默认值、基本类型标识、属性描述;
8.2)遍历属性表的每一行,检查“基本类型标识”,如果为真,则查找树状仿真数据节点的属性列表中同名的属性字符串,根据“数据类型名称”创建已注册的基本数据解析器对象,使用基本数据解析器对象解析属性字符串得到属性值,若未查找到同名的属性字符串则解析“默认值”;如果为假,则查找树状仿真数据节点中标记为复杂属性的同名子节点,将该子节点作为属性值;
8.3)将“基本类型标识”为真的属性值赋值给仿真动作对象对应的字段,调用仿真动作对象的自定义解析方法解析“基本类型标识”为假的属性值;
8.4)容器仿真动作对象的自定义解析方法将“基本类型标识”为假的属性值作为树状仿真数据执行层次化的仿真动作对象创建过程,并将创建得到的仿真动作对象注册在自身的容器里;
8.5)根据属性值中树状仿真数据的节点名称创建已注册的触发器对象,并赋值给仿真动作对象的触发器字段;
8.6)将执行完解析方法的仿真动作对象注册到仿真系统中,根据触发器添加到相应的事件分发器中。
9.根据权利要求1所述的仿真方法,其特征在于,所述集成多源性能分析数据的作业流程仿真包含如下步骤:
9.1)仿真系统执行初始化方法,遍历所有事件分发器并执行事件分发器的初始化方法;
9.2)仿真系统进入仿真循环,仿真循环的每一帧调用所有事件分发器更新状态;
9.3)每个事件分发器查找与当前状态匹配的触发器,将与触发器关联的仿真动作对象加入到正在执行列表中;
9.4)调用正在执行列表中的所有仿真动作对象的执行方法,检查执行方法的返回值,如果标记为未结束,则将该仿真动作对象加入到待执行列表中;
9.5)执行完所有正在执行列表中的仿真动作对象后,将待执行列表中的仿真动作对象复制到正在执行列表中等待下一帧执行,并清空待执行列表。
10.根据权利要求1所述的仿真方法,其特征在于,所述性能分析数据同步可视化包含如下步骤:
10.1)仿真动作对象中有一类用于性能分析数据对象的注册,该类仿真动作对象解析树状仿真数据节点,该树状仿真数据节点的节点值为性能分析数据对象,该类仿真动作对象将性能分析数据对象作为字段储存,将该类仿真动作对象的触发器设为在仿真系统初始化时触发;
10.2)仿真系统初始化时执行用于性能分析数据对象注册的仿真动作对象,该类仿真动作对象根据脚本中对性能分析数据对象的描述,将其分类注册在仿真系统中的仿真资源里,建立性能分析数据对象索引;
10.3)仿真动作对象中有一类用于性能分析数据对象的可视化,该类仿真动作对象在解析方法执行中从树状仿真数据中取得性能分析数据对象索引;
10.4)将用于性能分析数据对象可视化的仿真动作对象与对应的复杂装备作业流程仿真动作对象放在同一个容器仿真动作对象中;
10.5)当容器仿真动作对象执行时,在仿真循环的每一帧同时调用复杂装备作业流程仿真动作对象和用于性能分析数据对象可视化的仿真动作对象的执行方法;
10.6)用于性能分析数据对象可视化的仿真动作对象执行的每一帧中,仿真动作对象从性能分析数据对象中提取当前时间点的数据,调用三维数据可视化接口或Widget接口进行数据可视化。
CN201510177490.7A 2015-04-15 2015-04-15 集成多源性能分析数据的复杂装备作业流程仿真方法 Active CN104778323B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510177490.7A CN104778323B (zh) 2015-04-15 2015-04-15 集成多源性能分析数据的复杂装备作业流程仿真方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510177490.7A CN104778323B (zh) 2015-04-15 2015-04-15 集成多源性能分析数据的复杂装备作业流程仿真方法

Publications (2)

Publication Number Publication Date
CN104778323A CN104778323A (zh) 2015-07-15
CN104778323B true CN104778323B (zh) 2018-01-30

Family

ID=53619784

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510177490.7A Active CN104778323B (zh) 2015-04-15 2015-04-15 集成多源性能分析数据的复杂装备作业流程仿真方法

Country Status (1)

Country Link
CN (1) CN104778323B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107491299B (zh) * 2017-07-04 2021-09-10 扬州大学 面向多源软件开发数据融合的开发者画像建模方法
CN110929311B (zh) * 2019-07-25 2023-07-28 上海钢通网络科技有限公司 三维构件建模与其施工图绘制相互联动编辑方法
CN112015802B (zh) * 2020-08-14 2021-05-07 四川云恒数联科技有限公司 一种企业活跃度大数据分析可视化的动态配置交互方法
CN112182705B (zh) * 2020-09-28 2023-06-09 成都希盟泰克科技发展有限公司 基于bim技术的仿真模拟模型数据解析方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102194022A (zh) * 2010-03-19 2011-09-21 中国农业机械化科学研究院 农业装备在虚拟场景中的运动仿真与控制方法及装置
CN103455643A (zh) * 2012-05-29 2013-12-18 北京神州普惠科技股份有限公司 一种通用仿真组件的描述及建模方法
CN104317559A (zh) * 2014-08-26 2015-01-28 国家电网公司 基于gmf的可视化建模平台

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058558B2 (en) * 2001-05-25 2006-06-06 The Boeing Company Simulation system and method
CN100428243C (zh) * 2005-12-14 2008-10-22 国际商业机器公司 用于在模型上实现动作的方法和系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102194022A (zh) * 2010-03-19 2011-09-21 中国农业机械化科学研究院 农业装备在虚拟场景中的运动仿真与控制方法及装置
CN103455643A (zh) * 2012-05-29 2013-12-18 北京神州普惠科技股份有限公司 一种通用仿真组件的描述及建模方法
CN104317559A (zh) * 2014-08-26 2015-01-28 国家电网公司 基于gmf的可视化建模平台

Also Published As

Publication number Publication date
CN104778323A (zh) 2015-07-15

Similar Documents

Publication Publication Date Title
US7178112B1 (en) Management of functions for block diagrams
US7933755B1 (en) Conversion of model components into references
US7599823B2 (en) Automated approach to resolving artificial algebraic loops
US7801715B2 (en) System and method for block diagram simulation context restoration
US8667462B1 (en) Model and subsystem function signatures
US8667407B1 (en) Graphical model preparation for embedded deployment
JP4482563B2 (ja) ダイアグラミング環境言語のための単純化データ信号サポート
Hu et al. Mapping UML Diagrams to a Petri Net Notation for System Simulation.
US8875039B2 (en) Propagation of characteristics in a graphical model environment
CN104778323B (zh) 集成多源性能分析数据的复杂装备作业流程仿真方法
US7412366B1 (en) Rate grouping during code generation for multi-rate models
US7412367B1 (en) Transparent subsystem links
Ermel Simulation and animation of visual languages based on typed algebraic graph transformation
JP4564255B2 (ja) シミュレーション装置
Deshayes et al. ProMoBox in Practice: A Case Study on the GISMO Domain-Specific Modelling Language.
Kruse Enhanced test case generation with the classification tree method
Jambon et al. Dialogue validation from task analysis
Rath et al. Declarative specification of domain specific visual languages
Correia et al. Extending Processing to CAD applications
Morgan et al. Modelling the semantics for model-driven interactive visualizations
George et al. Development of a Port Mapping Tool for Digital Logic Development
Ráth et al. Automated model transformations in domain specific visual languages
KR20010075871A (ko) 소프트웨어 유지보수를 위한 제어흐름 그래프 자동 생성방법
Hämäläinen et al. Gamification of System-on-Chip design
Lahti et al. SADE: a graphical tool for VHDL-based system analysis

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant