CN102004635B - 一种支持重用的仿真模型系统及其开发方法 - Google Patents
一种支持重用的仿真模型系统及其开发方法 Download PDFInfo
- Publication number
- CN102004635B CN102004635B CN201010259120.5A CN201010259120A CN102004635B CN 102004635 B CN102004635 B CN 102004635B CN 201010259120 A CN201010259120 A CN 201010259120A CN 102004635 B CN102004635 B CN 102004635B
- Authority
- CN
- China
- Prior art keywords
- model
- simulation
- code
- logical
- file
- 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.)
- Expired - Fee Related
Links
Landscapes
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种支持重用的仿真模型系统及其开发方法,其仿真模型系统包括:模型逻辑描述信息1.1和模型执行代码1.2,模型逻辑描述信息1.1和模型执行代码1.2从文本和代码两个方面刻画仿真模型;所述模型执行代码1.2为实现了模型逻辑信息描述内容的、支持运行时刻动态加载的、可执行代码级的软件模块,所述模型逻辑描述信息1.1中包含模型执行代码1.2各子模块的函数和接口名称,使得模型使用者能够根据函数动态加载模型执行代码1.2并调用相关函数,使用模型。其优点是:使得仿真模型的使用由源代码级使用转变为执行代码级使用,使仿真模型系统可以动态加载、即插即用,使得仿真软件中的仿真模型方便升级、替换。
Description
技术领域
本发明涉及建模与仿真技术领域,具体的说是支持重用的仿真模型系统及其开发方法。
背景技术
随着仿真任务范围的不断扩展以及仿真应用需求的不断复杂化,仿真模型的开发成为一项耗资巨大的工程。目前,仿真开发的主要方式还是仿真模型以代码段的方式存在于模拟器中,如图5所示,通过在仿真应用软件的源代码里面掺杂所需仿真模型的源代码,编译链接形成仿真应用软件。这种模型与模型载体之间紧耦合的开发集成方式导致了:模型可重用性差、模型不能独立升级、模型修改与参数调整不够灵活、仿真应用软件不能灵活配置和部署等问题,许多模型和仿真的应用范围与功能有相似之处,由于相容性问题不能解决而很难再利用,使得针对不同的仿真应用软件,模型资源无法得到充分利用,重复开发多,工作量大。
发明内容
本发明的目的是研制一种支持重用的仿真模型系统及其开发方法,使得开发出的仿真模型能够支持执行代码级重用的,且能够即插即用在仿真应用软件中。
本发明提供的支持重用的仿真模型系统,包括:模型逻辑信息1.1和模型执行代码1.2。模型逻辑描述信息1.1和模型执行代码1.2从文本和代码两个方面刻画仿真模型;所述模型执行代码1.2为实现了模型逻辑信息描述内容的、支持运行时刻动态加载的、可执行代码级的软件模块,所述模型逻辑描述信息1.1中包含模型执行代码1.2各子模块的函数和接口名称,使得模型使用者能够根据函数动态加载模型执行代码1.2并调用相关函数,使用模型。
本发明提供的支持重用的仿真模型系统,其模型执行代码1.2是能够支持运行时刻动态加载,并且支持利用函数名称动态调用函数的软件包,模型逻辑描述信息1.1中包含模型执行代码1.2各子模块的函数和接口名称,使得模型使用者能够根据模型逻辑描述信息1.1调用模型执行代码1.2内部各子模块的接口和函数,使用模型。
本发明提供的支持重用的仿真模型系统,具有仿真时间自主管理特点,在仿真运行过程中支持仿真时间自主推进,并能维护本模型时间与仿真系统全局时间的协调一致。
所述模型逻辑描述信息1.1,包括:模型名称、模型功能描述、模型接口函数描述、模型属性描述、模型输入端口信息描述、模型输出端口信息描述、模型事件响应信息描述、模型事件发布信息描述、模型仿真时间推进信息描述、模型资源信息描述。
所述模型执行代码1.2,是实现了模型逻辑信息的、可执行代码级的软件模块,包括:对象构造子模块1.2.1、属性初始化子模块1.2.2、对象调度子模块1.2.3、端口信息处理子模块1.2.4、事件信息处理子模块1.2.5、模型计算处理子模块1.2.6、仿真时间推进处理子模块1.2.7和仿真对象销毁处理子模块1.2.8。
所述对象构造子模块1.2.1负责根据模型使用者的需求利用仿真模型生成仿真对象,并把仿真对象交给对象调度模块。
所述属性初始化子模块1.2.2负责根据模型使用者的需求把仿真对象进行参数初始化,使仿真对象的状态转为准调度状态。
所述对象调度子模块1.2.3负责对仿真对象的运行逻辑进行维护,控制仿真对象的端口处理、事件处理计算处理。
所述端口信息处理子模块1.2.4负责仿真对象输入输出数据的接口连接关系配置,维护仿真对象数据的收发通道。
所述事件信息处理子模块1.2.5负责仿真对象的事件发送和响应处理,维护仿真对象事件的收发通道,能够事件信息包含HLA仿真协议的事件信息、DIS仿真协议的事件信息以及TCP、UDP数据报协议的事件信息等。
所述模型计算处理子模块1.2.6负责仿真对象功能与性能的仿真计算。
所述仿真时间推进处理子模块1.2.7负责仿真对象的时间推进管理,包括:物理时钟访问模块、外部时钟访问模块、推进策略配置模块和仿真时间自主管理模块。
所述仿真对象销毁处理子模块1.2.8负责仿真对象的注销和删除。
本发明供的仿真模型系统开发方法,其步骤如下:
1、构建仿真模型开发系统
所述仿真模型开发系统,包括:逻辑信息设计工具2.1、模型代码开发工具2.2、模型代码框架模板2.3、模型打包工具2.4;
构建仿真模型开发系统的步骤,具体如下:
1)新建一个文件夹,作为仿真模型开发系统的输出路径;
2)新建一个文件夹,作为仿真模型开发系统的临时路径;
3)把逻辑信息设计工具2.1的模型逻辑信息1.1保存路径配置为步骤2)所述的仿真模型开发系统的临时路径;
4)把模型代码开发工具2.2的模型执行代码1.2保存路径配置为步骤2)所述的仿真模型开发系统的临时路径。
5)把模型打包工具2.4的文件输入路径配置为步骤2)所述的仿真模型开发系统的临时路径;
6)把模型打包工具2.4的文件输出路径配置为步骤1)所述的仿真模型开发系统的输出路径。
2、根据真实对象仿真需求设计模型逻辑描述信息
1)利用逻辑信息设计工具2.1新建模型逻辑描述信息文件,并以模型名称命名该文件;
2)在逻辑描述信息文件ModelName.xml中Basic_Info标签处定义模型名称和开发者信息;
3)在逻辑描述信息文件ModelName.xml中Function_info标签处定义模型功能信息(可以包含多个功能项),包含功能项的名称和功能描述;
4)在逻辑描述信息文件ModelName.xml中<Property_info>标签处定义模型属性信息(可以包含多个属性),包含属性名称、属性类型和属性初值;
5)在逻辑描述信息文件ModelName.xml中<Interface_Info>标签处定义模型属性信息(可以包含多个接口),包含接口名称、接口参数;
6)在逻辑描述信息文件ModelName.xml中<InPort_Info>标签处定义模型输入端口(可以包含多个接口),包含端口名称、端口数据等;
7)在逻辑描述信息文件ModelName.xml中<OutPort_Info>标签处定义模型输出端口(可以包含多个接口),包含端口名称、端口数据等;
8)在逻辑描述信息文件ModelName.xml中<RespondEvent_info>标签处定义模型事件响应信息(可以包含多个事件),包含事件名称、事件参数等;
9)在逻辑描述信息文件ModelName.xml中<PromulgateEvent_info>标签处定义模型事件发布信息(可以包含多个事件),包含事件名称、事件参数等;
10)在逻辑描述信息文件ModelName.xml中TimeAdvanse_info标签处定义模型时间推进信息(可以包含多个事件),包含步长、推进方式等;
3、根据模型逻辑描述信息开发模型执行代码
1)根据模型逻辑描述信息,编辑模型源代码
利用软件开发工具,开发模型源代码;创建模型类,并在模型类中增加模型属性、功能函数、模型输入/输出接口函数、事件发送接收函数;
2)模型源代码嵌入模型代码框架模板
在模型代码框架模板构造仿真对象CreateSimObject函数中,增加上一步骤所开发模型类的构造;
3)编译模型,生成模型执行代码
利用软件开发工具,编译生成模型执行代码dll文件;
4、把模型逻辑描述信息与模型执行代码打包生成模型组件
利用winrar把模型逻辑描述信息文件和模型执行代码压缩打包为压缩文件,该压缩文件就是最终开发出的仿真模型。
步骤1所述的逻辑信息设计工具2.1,根据真实对象的仿真需求,进行模型逻辑信息设计,输出能够指导模型执行代码1.2开发、能够满足模型封装要求的模型逻辑描述信息1.1。
步骤1所述的模型代码开发工具2.2,为能够支持开发人员根据模型逻辑描述信息1.1进行软件代码编辑、编译、链接,能够生成软件模块库(软件包)和可执行程序的开发环境或开发工具。
步骤1所述的模型代码框架模板2.3,为实现了模型运行时刻通用逻辑的、支持模型源代码嵌入的代码模板,为模型开发人员提供通过对模型代码框架模板嵌入特定模型源代码并编译链接可以获得模型执行代码1.2的一套基础框架性、模板性代码。模型代码框架模板2.3,包括:对象构造部分2.3.1、属性初始化部分2.3.2、对象调度部分2.3.3、端口信息处理部分2.3.4、事件收发处理部分2.3.5、模型计算处理部分2.3.6、仿真时间推进处理部分2.3.7以及仿真对象销毁处理部分2.3.8。
步骤1所述的模型打包工具2.4是指能够把模型逻辑描述信息1.1与模型执行代码1.2组合成仿真模型系统1的工具等。
本发明提供的支持重用的仿真模型系统及其开发方法的优点是:
(1)本发明使得仿真模型存在形式由源代码段转变为已封装的模型文件,便于使用、管理、升级与维护。
(2)本发明提供的仿真模型系统使得仿真模型的使用由源代码级使用转变为执行代码级使用,直接在软件运行时刻加载使用,无需源代码嵌入、编译、链接等开发环节。
(3)本发明提供的仿真模型系统可以动态加载、即插即用,使得仿真软件中的仿真模型方便升级、替换。
(4)本发明提供的仿真模型开发系统具有模型代码框架模板,使用该开发系统开发仿真模型系统简单易行,工作量小。
附图说明
图1为本发明的仿真模型系统示意图;
图2为模型逻辑信息模块示意图;
图3仿真模型执行代码结构示意图;
图4为仿真模型开发系统示意图;
图5为仿真应用软件与仿真模型的现有集成关系图。
具体实施方式
下面参照附图1-5说明本发明的实施方式。
1.仿真模型系统
如图1所示,本发明提供的可重用仿真模型系统1包含:模型逻辑信息1.1和模型执行代码1.2。模型逻辑描述信息1.1和模型执行代码1.2从文本和代码两个方面刻画仿真模型。
所述模型执行代码1.2为实现了模型逻辑信息1.1的、支持运行时刻动态加载的、支持利用函数名称动态调用函数、可执行代码级的软件模块,使得模型使用者能够根据函数动态加载模型执行代码1.2并调用相关函数,使用模型。所述模型执行代码1.2可以采用.jar包和.net Assembly等格式的软件模块进行实现。
所述模型逻辑信息1.1中含有针对模型执行代码1.2的逻辑信息描述,为模型使用者使用模型执行代码1.2提供了足够的信息,如功能信息、函数信息、参数信息、接口信息等,使得模型使用者能够根据所提供信息动态加载模型执行代码1.2并调用相关函数,使用模型。
如图2所示,所述模型逻辑信息1.1的具体内容包含:模型基本信息、功能描述信息、属性信息、接口函数信息、输入端口信息、输出端口信息、事件响应信息、事件发布信息、仿真时间推进信息、依赖资源信息。模型逻辑信息1.1逻辑信息可采用文本方式进行描述,例如由XML语言描述,如下所示。
<Simulaiton_Model_Component_Discriotion>
<Basic_Info>
<Name>汽车</Name>
<Author>张三</Author>
</Basic_Info>
<Function_info>
<Funcion_Name>Goforward</Function_Name>
<FunctionDescription>前进</FunctionDescription>
</Function_fnfo>
<Property_info>
<PropName>Length</ProbName>
<PropType>double</PropType>
<PropValue>4.0</PropValue>
</Property_info>
<InPort_info>
<InPortName>Accelerograph</InPortName>
<DataInfo>double</DataInfo>
<Period>0.5</Period>
</InPort_info>
<OutPort_info>
<OutPortName>Speed</OutPortName>
<DataInfo>double</DataInfo>
<Period>30</Period>
</OutPort_info>
<RespondEvent_info>
<EventName>BrakeEvent</EventName>
<ParaInfo>BrakeValue</ParaInfo>
</RespondEvent_info>
<PromulgateEvent_info>
<EventName>Flameout</EventName>
<EventInfo>time</EventInfo>
</PromulgateEvent_info>
<TimeAdvanse_info>
<TimeStep>0.05</TimeStep>
<AdvanceType>主动</AdvanceType>
</TimeAdvanse_info>
</Simulaiton_Model_Component_Discriotion>
模型执行代码1.2从软件模块角度实现了模型逻辑信息,模型执行代码1.2中的函数、接口、事件等信息与模型逻辑信息1.1中提供的信息保持严格一致,使得模型使用者能够根据模型逻辑信息1.1动态加载模型执行代码1.2并调用相关函数,使用模型。
所述模型执行代码1.2是实现了模型逻辑信息1.1的、支持运行时刻动态加载的、支持利用函数名称动态调用函数、可执行代码级的软件模块。如图3所示,所述模型执行代码1.2包括:对象构造子模块1.2.1、属性初始化子模块1.2.2、对象调度子模块1.2.3、端口信息处理子模块1.2.4、事件信息处理子模块1.2.5、模型计算处理子模块1.2.6、仿真时间推进处理子模块1.2.7和仿真对象销毁处理子模块1.2.8。
所述对象构造子模块1.2.1负责根据模型使用者的需求利用仿真模型生成仿真对象,并把仿真对象交给对象调度模块。
所述属性初始化子模块1.2.2负责根据模型使用者的需求把仿真对象进行参数初始化,使仿真对象的状态转为准调度状态。
所述对象调度子模块1.2.3负责对仿真对象的运行逻辑进行维护,控制仿真对象的端口处理、事件处理计算处理。
所述端口信息处理子模块1.2.4负责仿真对象输入输出数据的接口连接关系配置,维护仿真对象数据的收发通道。
所述事件信息处理子模块1.2.5负责仿真对象的事件发送和响应处理,维护仿真对象事件的收发通道,能够事件信息包含HLA仿真协议的事件信息、DIS仿真协议的事件信息以及TCP、UDP数据报协议的事件信息等。
所述模型计算处理子模块1.2.6负责仿真对象功能与性能的仿真计算。
所述仿真时间推进处理子模块1.2.7负责仿真对象的时间推进管理,使得仿真模型系统具有仿真时间自主管理特点,在仿真运行过程中支持仿真时间自主推进,并能维护本模型时间与仿真系统全局时间的协调一致。
所述仿真对象销毁处理子模块1.2.8负责仿真对象的注销和删除。
在仿真运行时刻,模型执行代码1.2的内部具体流程:首先对象构造子模块1.2.1根据模型代码按需构造仿真对象,再是属性初始化子模块1.2.2初始化仿真对象的属性,对象调度子模块1.2.3开始调度仿真对象,调度过程中首先端口信息处理模块1.2.4从输入端口读取数据向输出端口输送数据,其次是事件信息处理子模块1.2.5检测并响应的外部事件,并发布自身产生的事件,接着是模型计算处理子模块1.2.6处理仿真对象单个步长内的功能仿真计算,模型计算处理后仿真对象等待仿真时间推进处理子模块1.2.7再次通知对象调度子模块,通知到来后对象调度子模块将再次调度仿真对象,重复上述调度过程,直到仿真对象仿真结束,最后仿真对象销毁处理子模块1.2.8销毁仿真对象。
2.仿真模型系统开发方法
本发明供的仿真模型系统开发方法,具体步骤如下:
(1)构建仿真模型开发系统的步骤。
(2)根据真实对象仿真需求设计模型逻辑描述信息的步骤。
(3)根据模型逻辑描述信息开发模型执行代码的步骤。
(4)把模型逻辑描述信息与模型执行代码打包生成模型组件的步骤。
本发明供的仿真模型系统开发方法的步骤(1)构建仿真模型开发系统中,如图4所示,本发明提供的仿真模型开发系统包含:逻辑信息设计工具2.1、模型代码开发工具2.2、模型代码框架模板2.3、模型打包工具2.4。
其中,逻辑信息设计工具2.1根据真实对象的仿真需求,进行模型逻辑信息设计,输出能够指导模型执行代码1.2开发、能够满足模型封装要求的模型逻辑信息1.1。逻辑信息设计工具2.1可采用XML文件编辑工具,例如Altova Spy等工具软件。
模型代码开发工具2.2是指能够支持开发人员根据模型逻辑信息1.1进行软件代码编辑、编译、链接,能够生成软件模块库(软件包)或可执行程序的开发工具,例如Visual Studio 2008。在本发明中,模型代码开发工具2.2支持开发人员在模型代码框架模板2.3中开发仿真模型源代码并编译生成模型执行代码1.2。
模型打包工具2.4是指能够把模型逻辑信息1.1与模型执行代码1.2组合成仿真模型组件1的工具,例如WinRar,WinZip等。
在仿真模型开发系统中,模型代码框架模板2.3是实现了模型运行时刻通用逻辑的、支持模型源代码嵌入的代码模板,为模型开发人员提供通过对模型代码框架模板嵌入特定模型源代码并编译链接可以获得模型执行代码1.2的一套基础框架性、模板性代码。
模型代码框架模板2.3包含对象构造部分2.3.1、属性初始化部分2.3.2、对象调度部分2.3.3、端口信息处理部分2.3.4、事件收发处理部分2.3.5、模型计算处理部分2.3.6、仿真时间推进处理部分2.3.7、仿真对象销毁处理部分2.3.8。
对象构造子部分2.3.1负责根据模型使用者的需求利用仿真模型生成仿真对象,并把仿真对象交给对象调度模块。
属性初始化子部分2.3.2负责根据模型使用者的需求把仿真对象进行参数初始化,使仿真对象的状态转为准调度状态。
对象调度子部分2.3.3负责对仿真对象的运行逻辑进行维护,控制仿真对象的端口处理、事件处理计算处理。
端口信息处理子部分2.3.4负责仿真对象输入输出数据的接口连接关系配置,维护仿真对象数据的收发通道。
事件信息处理子部分2.4.5负责仿真对象的事件广播和响应处理通道与处理逻辑,维护仿真对象事件的收发通道。
模型计算处理子部分2.3.6负责仿真对象功能与性能的仿真计算。
仿真时间推进处理子部分2.3.7负责仿真对象的时间推进管理,包括:物理时钟访问部分、外部时钟访问部分、推进策略配置模块和仿真时间自主管理部分。在运行时刻,首先推进策略配置部分读取策略配置信息,物理时钟访问部分读取本地机器时间,外部时钟访问部分接受外部仿真时间,仿真时间自主管理模块根据配置策略,在物理时间驱动下,推进本仿真对象时间按步长前进,并协调本仿真对象时间和外部仿真时间,周期性通知仿真对象调度模块进行模型计算。
仿真对象销毁处理子模块2.3.8负责仿真对象的注销和删除。
在仿真运行时刻,模型代码框架模板2.3的具体运行流程:首先对象构造子模块2.3.1根据模型代码按需构造仿真对象,再是属性初始化子模块2.3.2初始化仿真对象的属性,对象仿真调度子模块2.3.3开始调度仿真对象,调度过程中首先信息处理子模块2.3.4从输入端口读取数据向输出端口输送数据,其次是事件收发处理子模块2.3.5检测并响应的外部事件,并发布自身产生的事件,接着是模型仿真计算处理子模块2.3.6处理仿真对象单个步长内的功能仿真计算,模型计算处理后仿真对象等待仿真时间推进处理子模块2.3.7再次通知对象仿真调度子模块2.3.3,通知到来后对象仿真调度子模块2.3.3将再次调度仿真对象,重复上述调度过程,直到仿真对象仿真结束,最后仿真对象销毁处理子模块2.3.8销毁仿真对象。
本发明供的仿真模型系统开发方法的步骤(1)构建仿真模型开发系统的步骤,具体如下:
1)新建一个文件夹,作为仿真模型开发系统的输出路径;
2)新建一个文件夹,作为仿真模型开发系统的临时路径;
3)把逻辑信息设计工具2.1的模型逻辑信息1.1保存路径配置为步骤2)所述的仿真模型开发系统的临时路径;
4)把模型代码开发工具2.2的模型执行代码1.2保存路径配置为步骤2)所述的仿真模型开发系统的临时路径。
5)把模型打包工具2.4的文件输入路径配置为步骤2)所述的仿真模型开发系统的临时路径;
6)把模型打包工具2.4的文件输出路径配置为步骤1)所述的仿真模型开发系统的输出路径。
本发明供的仿真模型系统开发方法的步骤(2)根据真实对象仿真需求设计模型逻辑描述信息的步骤,具体如下:
1)利用逻辑信息设计工具2.1新建模型逻辑描述信息文件,并以模型名称命名该文件,例如ModelName.xml;
2)在逻辑描述信息文件ModelName.xml中Basic_Info标签处定义模型名称和开发者信息,例如:
<Basic_Info>
<Name>汽车</Name>
<Author>张三</Author>
</Basic_Info>
3)在逻辑描述信息文件ModelName.xml中Function_info标签处定义模型功能信息(可以包含多个功能项),包含功能项的名称和功能描述,例如:
<Function_info>
<Function_Name>Goforward</Function_Name>
<FunctionDescription>前进</FunctionDescription>
</Function_info>
4)在逻辑描述信息文件ModelName.xml中<Property_info>标签处定义模型属性信息(可以包含多个属性),包含属性名称、属性类型和属性初值,例如:
<Property_info>
<PropName>Length</PropName>
<PropType>double</PropType>
<PropValue>4.0</PropValue>
</Property_info>
5)在逻辑描述信息文件ModelName.xml中<Interface_Info>标签处定义模型属性信息(可以包含多个接口),包含接口名称、接口参数,例如:
<Interface_info>
<Interface Name>SimStep</Interface Name>
<InterfacePara>StepTime</Interface Type>
<InterfacePara_Type>double</Interface Type>
<InterfacePara Value>0.1</Interface Value>
</Interface_info>
6)在逻辑描述信息文件ModelName.xml中<InPort_Info>标签处定义模型输入端口(可以包含多个接口),包含端口名称、端口数据等,例如:
<InPort_info>
<InPortName>Accelerograph</InPortName>
<DataInfo>double</DataInfo>
<Period>0.5</Period>
</InPort_info>
7)在逻辑描述信息文件ModelName.xml中<OutPort_Info>标签处定义模型输出端口(可以包含多个接口),包含端口名称、端口数据等,例如:
<OutPort_info>
<OutPortName>Speed</OutPortName>
<DataInfo>double</DataInfo>
<Period>30</Period>
</OutPort_info>
8)在逻辑描述信息文件ModelName.xml中<RespondEvent_info>标签处定义模型事件响应信息(可以包含多个事件),包含事件名称、事件参数等,例如:
<RespondEvent_info>
<EventName>BrakeEvent</EventName>
<ParaInfo>BrakeValue</ParaInfo>
</RespondEvent_info>
9)在逻辑描述信息文件ModelName.xml中<PromulgateEvent_info>标签处定义模型事件发布信息(可以包含多个事件),包含事件名称、事件参数等,例如:
<PromulgateEvent_info>
<EventName>Flameout</EventName>
<EventInfo>time</EventInfo>
</PromulgateEvent_info>
10)在逻辑描述信息文件ModelName.xml中TimeAdvanse_info标签处定义模型时间推进信息(可以包含多个事件),包含步长、推进方式等,例如:
<TimeAdvanse_info>
<TimeStep>0.05</TimeStep>
<AdvanceType>主动</AdvanceType>
</TimeAdvanse_info>
本发明供的仿真模型系统开发方法的步骤(3)根据模型逻辑描述信息开发模型执行代码的步骤,具体如下:
1)根据模型逻辑描述信息,编辑模型源代码;
利用软件开发工具,如Micrsoft VisualStudio2008,开发模型源代码。创建模型类,并在模型类中增加模型属性、功能函数、模型输入/输出接口函数、事件发送接收函数例如:。
public class CPlane:SimObj
{
virtual public void EventProcess(String CmdEvent)
{/* 具体事件处理*/ }
virtual public void RunStep(double simstep)
{/* 具体模型计算处理*/ }
virtual public void TakeOff(double simstep)
{/* 具体起飞及其控制算法*/}
virtual public void Landing(double simstep)
{/*具体降落及其控制算法*/}
}
2)模型源代码嵌入模型代码框架模板;
在模型代码框架模板构造仿真对象CreateSimObject函数中,增加上一步骤所开发模型类的构造,具体示例如下:
public class ModleFramework
{
public SimObj CreateSimObject()
{
SimObj aObj=new Plane();
//时间策略配置
aObj.Timestrategy=″主动推进″;
aObj.timestep=0.01s;
return aObj;
}
/*框架部分其它代码*/
}
3)编译模型,生成模型执行代码;
利用软件开发工具,编译生成模型执行代码dll文件,例如Plane.dll。
本发明供的仿真模型系统开发方法的步骤(4)把模型逻辑描述信息与模型执行代码打包生成模型组件的步骤,具体如下:
利用winrar把模型逻辑描述信息文件和模型执行代码压缩打包为压缩文件,例如Plane.rar。该压缩文件就是最终开发出的仿真模型。
Claims (3)
1.一种支持重用的仿真模型系统的开发方法,其特征在于:其步骤如下:
(1)构建仿真模型开发系统
所述仿真模型开发系统,包括:逻辑信息设计工具(2.1)、模型代码开发工具(2.2)、模型代码框架模板(2.3)、模型打包工具(2.4);
构建仿真模型开发系统的步骤,具体如下:
①新建一个文件夹,作为仿真模型开发系统的输出路径;
②新建一个文件夹,作为仿真模型开发系统的临时路径;
③把逻辑信息设计工具(2.1)的模型逻辑信息(1.1)保存路径配置为步骤②所述的仿真模型开发系统的临时路径;
④把模型代码开发工具(2.2)的模型执行代码(1.2)保存路径配置为步骤②所述的仿真模型开发系统的临时路径;
⑤把模型打包工具(2.4)的文件输入路径配置为步骤②所述的仿真模型开发系统的临时路径;
⑥把模型打包工具(2.4)的文件输出路径配置为步骤①所述的仿真模型开发系统的输出路径;
(2)根据真实对象仿真需求设计模型逻辑描述信息
①利用逻辑信息设计工具(2.1)新建模型逻辑描述信息文件,并以模型名称命名该文件;
②在逻辑描述信息文件ModelName.xml中<Basic_Info>标签处定义模型名称和开发者信息;
③在逻辑描述信息文件ModelName.xml中<Function_info>标签处定义模型功能信息,包含多个功能项,包含功能项的名称和功能描述;
④在逻辑描述信息文件ModelName.xml中<Property_info>标签处定义模型属性信息,包含属性名称、属性类型和属性初值;
⑤在逻辑描述信息文件ModelName.xml中<Interface_Info>标签处定义模型接口信息,包含接口名称、接口参数;
⑥在逻辑描述信息文件ModelName.xml中<InPort_Info>标签处定义模型输入端口,包含端口名称、端口数据;
⑦在逻辑描述信息文件ModelName.xml中<OutPort_Info>标签处定义模型输出端口,包含端口名称、端口数据;
⑧在逻辑描述信息文件ModelName.xml中<RespondEvent_info>标签处定义模型事件响应信息,包含多个事件名称、多个事件参数;
⑨在逻辑描述信息文件ModelName.xml中<PromulgateEvent_info>标签处定义模型事件发布信息,包含多个事件名称、多个事件参数;
⑩在逻辑描述信息文件ModelName.xml中<TimeAdvanse_info>标签处定义模型时间推进信息,包含多个事件,包含步长、推进方式;
(3)根据模型逻辑描述信息开发模型执行代码
①根据模型逻辑描述信息,编辑模型源代码
利用软件开发工具,开发模型源代码;创建模型类,并在模型类中增加模型属性、功能函数、模型输入/输出接口函数、事件发送接收函数;
②模型源代码嵌入模型通用框架代码模板
在框架代码构造仿真对象CreateSimObject函数中,增加上一步骤所创建模型类的构造;
③编译模型,生成模型执行代码
利用软件开发工具,编译生成模型执行代码dll文件;
(4)把模型逻辑描述信息与模型执行代码打包生成模型组件
利用winrar把模型逻辑描述信息文件和模型执行代码压缩打包为压缩文件,该压缩文件就是最终开发出的仿真模型。
2.根据权利要求1所述的支持重用的仿真模型系统的开发方法,其特征在于:所述逻辑信息设计工具(2.1)为能够根据真实对象的仿真需求进行模型逻辑信息设计,输出能够指导模型执行代码开发、能够满足模型封装要求的模型逻辑描述信息的工具;所述模型代码开发工具(2.2)为能够支持开发人员根据模型逻辑描述信息(1.1)进行软件代码编辑、编译、链接,能够生成软件模块库和可执行程序的开发环境或开发工具;所述模型代码框架模板(2.3)为实现了模型运行时刻通用逻辑的、支持模型源代码嵌入的代码模板,为模型开发人员提供通过对模型代码框架模板(2.3)嵌入特定模型源代码并编译链接可以获得模型执行代码的一套基础框架性、模板性代码。
3.根据权利要求1所述的支持重用的仿真模型系统的开发方法,其特征在于:所述模型代码框架模板(2.3),包括:对象构造部分(2.3.1)、属性初始化部分(2.3.2)、对象调度部分(2.3.3)、端口信息处理部分(2.3.4)、事件收发处理部分(2.3.5)、模型计算处理部分(2.3.6)、仿真时间推进处理部分(2.3.7)和仿真对象销毁处理部分(2.3.8)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010259120.5A CN102004635B (zh) | 2010-08-19 | 2010-08-19 | 一种支持重用的仿真模型系统及其开发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010259120.5A CN102004635B (zh) | 2010-08-19 | 2010-08-19 | 一种支持重用的仿真模型系统及其开发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102004635A CN102004635A (zh) | 2011-04-06 |
CN102004635B true CN102004635B (zh) | 2014-10-01 |
Family
ID=43812019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010259120.5A Expired - Fee Related CN102004635B (zh) | 2010-08-19 | 2010-08-19 | 一种支持重用的仿真模型系统及其开发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102004635B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106951310A (zh) * | 2016-01-06 | 2017-07-14 | 北京仿真中心 | 一种面向lvc的仿真框架的自动生成方法 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609248B (zh) * | 2011-12-28 | 2014-11-05 | 方伟 | 一种基于mda的综合航空电子系统建模仿真平台 |
CN103455643A (zh) * | 2012-05-29 | 2013-12-18 | 北京神州普惠科技股份有限公司 | 一种通用仿真组件的描述及建模方法 |
CN102779039A (zh) * | 2012-06-15 | 2012-11-14 | 北京理工大学 | 面向体系结构研究的基于bom的分布式仿真系统的开发方法 |
CN103777998B (zh) * | 2014-01-20 | 2017-04-05 | 北京仿真中心 | 一种组合模型组件的高效调用方法 |
CN104573045A (zh) * | 2015-01-20 | 2015-04-29 | 北京仿真中心 | 一种基于模板的仿真试验数据处理方法 |
CN106681703A (zh) * | 2015-11-10 | 2017-05-17 | 北京仿真中心 | 一种可重用的界面组件构建系统及方法 |
CN105843991B (zh) * | 2016-03-16 | 2018-10-19 | 江汉大学 | 模型级hla仿真成员组合系统及方法 |
CN106777450B (zh) * | 2016-11-04 | 2020-10-20 | 中软信息系统工程有限公司 | 一种支持组合模型的模型描述及生成方法 |
CN111124471A (zh) * | 2019-12-20 | 2020-05-08 | 中国电子科技集团公司第二十八研究所 | 基于数据类型模板的仿真模型注册方法及计算机存储介质 |
CN111522731B (zh) * | 2020-03-13 | 2023-06-23 | 中国电子科技集团公司第二十九研究所 | 一种仿真模型在线重载的模型集成方法及装置 |
CN112148266B (zh) * | 2020-09-30 | 2022-04-01 | 清华大学 | 地球系统耦合模式的自动生成方法及应用 |
CN112559643A (zh) * | 2020-12-21 | 2021-03-26 | 北京仿真中心 | 一种仿真实体模型描述方法 |
CN113608823B (zh) * | 2021-06-25 | 2024-05-17 | 天津津航计算技术研究所 | 一种用于文件描述的可重用终端模拟器 |
CN117311207A (zh) * | 2022-06-24 | 2023-12-29 | 比亚迪股份有限公司 | 嵌入式软件模型架构、电池管理系统控制器和车辆 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101004680A (zh) * | 2006-11-23 | 2007-07-25 | 福建顶点软件股份有限公司 | 一种以直接业务对象模型定义为核心的灵活快捷的软件开发方法及支持系统 |
CN101169716A (zh) * | 2007-11-30 | 2008-04-30 | 清华大学 | 一种基于产品结构树的仿真流程信息建模及维护方法 |
CN101533262A (zh) * | 2009-04-22 | 2009-09-16 | 北京航空航天大学 | 一种基于服务的机械与控制系统联合仿真实现的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8050907B2 (en) * | 2004-07-30 | 2011-11-01 | Microsoft Corporation | Generating software components from business rules expressed in a natural language |
-
2010
- 2010-08-19 CN CN201010259120.5A patent/CN102004635B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101004680A (zh) * | 2006-11-23 | 2007-07-25 | 福建顶点软件股份有限公司 | 一种以直接业务对象模型定义为核心的灵活快捷的软件开发方法及支持系统 |
CN101169716A (zh) * | 2007-11-30 | 2008-04-30 | 清华大学 | 一种基于产品结构树的仿真流程信息建模及维护方法 |
CN101533262A (zh) * | 2009-04-22 | 2009-09-16 | 北京航空航天大学 | 一种基于服务的机械与控制系统联合仿真实现的方法 |
Non-Patent Citations (6)
Title |
---|
吴祚宝等.面向对象的FMS仿真软件重用研究.《系统仿真学报》.1996,第8卷(第3期),第27-35页. |
基于元模型的可重用仿真模型表示方法研究;王维平等;《计算机仿真》;20070831;第24卷(第08期);第93-97页 * |
基于基本对象模型的仿真模型组装器的研究;彭春光等;《系统仿真学报》;20080630;第20卷(第12期);第3175-3178页 * |
彭春光等.基于基本对象模型的仿真模型组装器的研究.《系统仿真学报》.2008,第20卷(第12期),第3175-3178页. |
王维平等.基于元模型的可重用仿真模型表示方法研究.《计算机仿真》.2007,第24卷(第08期),第93-97页. |
面向对象的FMS仿真软件重用研究;吴祚宝等;《系统仿真学报》;19960930;第8卷(第3期);第27-35页 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106951310A (zh) * | 2016-01-06 | 2017-07-14 | 北京仿真中心 | 一种面向lvc的仿真框架的自动生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102004635A (zh) | 2011-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102004635B (zh) | 一种支持重用的仿真模型系统及其开发方法 | |
CN106789339B (zh) | 一种基于轻量级虚拟化架构的分布式云仿真方法与系统 | |
Ippolito et al. | Software architecture for a reconfigurable flight simulator | |
CN104408222B (zh) | 实时分布式仿真平台可重构方法 | |
JP2001109628A (ja) | ソフトウェアシステムとその開発方法 | |
Bartusevics et al. | Models for implementation of software configuration management | |
CN114792058B (zh) | 一种新能源电磁暂态封装模型统一接口方法及系统 | |
Pohl et al. | vMAGIC—automatic code generation for VHDL | |
Adak et al. | Model‐based code generation for HLA federates | |
Li et al. | CPSiCGF: A code generation framework for CPS integration modeling | |
Wirthlin et al. | OpenFPGA CoreLib core library interoperability effort | |
Guo et al. | COMDES development toolset | |
Pasetti et al. | Two novel concepts for systematic product line development | |
CN108984163A (zh) | 一种基于imcl模型的异构式多平台代码生成方法 | |
Foucher et al. | Online codesign on reconfigurable platform for parallel computing | |
Dong et al. | Model Based Development of Spacecraft OBDH Software | |
Wu et al. | Rapid prototyping for digital signal processing systems using parameterized synchronous dataflow graphs | |
Qin et al. | A Model-Driven Development Framework for Satellite On-Board Software | |
Nemeth et al. | Research and development in application of the simulation model portability standard | |
Görür et al. | Semi-automatic parallelization of simulations with model transformation techniques | |
Kamppi et al. | Kactus2: Extended IP-XACT metadata based embedded system design environment | |
Ahmadifarsani et al. | Towards Rapid Exploration of Heterogeneous TinyML Systems using Virtual Platforms and TVM's UMA | |
Erkkinen et al. | On-target rapid prototyping: A practical approach for bootstrapping production ecu software development | |
Pieper et al. | Formal and Practical Techniques for the Complex System Design Process Using Virtual Prototypes: Better Early Than Never | |
Blunk et al. | A highly efficient simulation core in C++ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141001 Termination date: 20190819 |
|
CF01 | Termination of patent right due to non-payment of annual fee |