一种基于共享内存的多态仿真模型二次封装方法技术

技术编号:35744206 阅读:15 留言:0更新日期:2022-11-26 18:48
本发明专利技术的目的是提供一种基于共享内存的多态仿真模型二次封装方法,可以用于将采用不同编程语言或不同版本编制的封装模型集成到统一的仿真框架中,达到各模型协同运行的目的。的。的。

【技术实现步骤摘要】
一种基于共享内存的多态仿真模型二次封装方法


[0001]本专利技术属于仿真
,具体涉及一种基于共享内存的多态仿真模型二次封装方法。

技术介绍

[0002]在细粒度仿真试验系统建设中,常常需要集成多个单位开发并封装成动态链接库的仿真模型,而且在仿真运行过程中,每个模型均可能生成多个实例。由于模型开发者不同,采用的编程语言不同或者版本不同,部分模型只能运行在Win32平台,部分模型只能运行在X64平台;部分模型只能运行在Debug模式,部分模型只能运行在Release模式;部分模型不支持多实例运行;使得直接在仿真框架内调用动态链接库提供的模型接口存在困难。

技术实现思路

[0003]有鉴于此,本专利技术的目的是提供一种基于共享内存的多态仿真模型二次封装方法,可以用于将采用不同编程语言(或不同版本)编制的封装模型(动态链接库)集成到统一的仿真框架中,达到各模型协同运行的目的。
[0004]一种基于共享内存的多态仿真模型二次封装方法,包括:
[0005]步骤1、建立共享内存通信的信息交互协议:分析模型与仿真系统框架交互信息,区分模型运行指令信息和模型状态反馈信息分别建立信息交互协议。
[0006]步骤2、在仿真框架中,建立相应模型的组件程序:按照仿真框架的建模约束,以共享内存为通信媒介,建立仿真系统与模型程序之间通信的仿真组件,以驱动仿真系统各种运行指令及系统中其它实体与仿真模型程序的数据交互,具体为:
[0007]步骤21、根据模型实例ID生成共享内存名称以及共享内存读写事件名称,即一个模型实例与一个共享内存和一个共享内存读写事件对应;
[0008]步骤22、依据步骤21的共享内存名称和共享内存读写事件名称,创建对应的共享内存及共享内存读写事件;
[0009]步骤23、以模型实例ID为命令行参数,调用模型程序的可执行文件,创建该模型的一个运行实例;
[0010]步骤24、将模型初始化信息写入对应的共享内存,并向模型程序发送共享内存写入事件;
[0011]步骤25、在仿真框架的每一个仿真周期内,执行如下步骤:
[0012]等待共享内存读取事件;
[0013]读取共享内存,获取模型运行实例的运行数据;
[0014]检测模型运行实例的状态:
[0015]当为初始化状态或者推进状态时,将推进该模型运行实例的指令和数据写入对应的共享内存,并发送共享内存写入事件;
[0016]当为故障或者退出状态时,将模型退出指令写入共享内存,并发送共享内存写入
事件,然后销毁该模型实例;
[0017]步骤3、对仿真模型进行二次封装:采用与封装模型相适应的编程语言或相应版本,在与模型动态链接库或者静态链接库相适应的平台中对模型进行二次封装,即采用共享内存的方式与仿真框架中的模型组件进行通信,生成可执行文件,具体包括:
[0018]步骤31、读取命令行参数,根据该参数生成共享内存名称和共享内存读写事件名称;
[0019]步骤32、打开共享内存及共享内存读写事件;
[0020]步骤33、将模型退出标识置为False;
[0021]步骤34、检测模型退出标识:如果为True,则结束;如果为False,等待模型的共享内存写入事件;
[0022]步骤35、读取共享内存,获取模型运行实例的运行数据;
[0023]步骤36、检测模型的模型运行指令,并判断:
[0024]如果为初始化指令:读取共享内存中的模型初始化数据,调用模型初始化函数,然后执行下一步;
[0025]如果为推进指令:读取共享内存中的模型初始化数据,然后调用模型推进函数,执行下一步;
[0026]如果为退出指令:将模型退出标识置为True,执行下一步;
[0027]步骤37、将模型实例运行状态数据写入共享内存,发送共享内存读取事件,然后返回步骤34;
[0028]步骤4、在仿真运行过程中,由仿真框架中的模型组件启动模型二次封装得到的可执行文件,并通过共享内存进行信息交互;
[0029]步骤5、模型的某一实例运行结束后,通过共享内存通知仿真框架组件,仿真框架组件发送退出指令给可执行文件,可执行文件收到该指令后退出运行。
[0030]本专利技术具有如下有益效果:
[0031]本专利技术的目的是提供一种基于共享内存的仿真模型二次封装方法,可以用于将采用不同编程语言(或不同版本)编制的封装模型(动态链接库)集成到统一的仿真框架中,达到各模型协同运行的目的。
附图说明
[0032]图1为仿真组件的工作流程图;
[0033]图2为模型二次封装程序工作流程图。
具体实施方式
[0034]下面结合附图并举实施例,对本专利技术进行详细描述。
[0035]本专利技术的一种基于共享内存的多态仿真模型二次封装方法,步骤包括:
[0036]步骤1、建立共享内存通信的信息交互协议:分析模型与仿真系统框架交互信息,区分模型运行指令信息和模型状态反馈信息分别建立信息交互协议。
[0037]步骤2、在仿真框架中,建立相应模型的组件程序:按照仿真框架的建模约束,以共享内存为通信媒介,建立仿真系统与模型程序之间通信的仿真组件,以驱动仿真系统各种
运行指令及系统中其它实体与仿真模型程序的数据交互。仿真组件的工作流程图如附图1所示,具体为:
[0038]步骤21、根据模型实例ID生成共享内存名称以及共享内存读写事件名称,即一个模型实例与一个共享内存和一个共享内存读写事件对应;
[0039]步骤22、依据步骤21的共享内存名称和共享内存读写事件名称,创建对应的共享内存及共享内存读写事件;
[0040]步骤23、以模型实例ID为命令行参数,调用模型程序的可执行文件,创建该模型的一个运行实例;
[0041]步骤24、将模型初始化信息写入对应的共享内存,并向模型程序发送共享内存写入事件;
[0042]步骤25、在仿真框架的每一个仿真周期内,执行如下步骤:
[0043]等待共享内存读取事件;
[0044]读取共享内存,获取模型运行实例的运行数据;
[0045]检测模型运行实例的状态:
[0046]当为初始化状态或者推进状态时,将推进该模型运行实例的指令和数据写入对应的共享内存,并发送共享内存写入事件;
[0047]当为故障或者退出状态时,将模型退出指令写入共享内存,并发送共享内存写入事件,然后销毁该模型实例。
[0048]步骤3、对仿真模型进行二次封装:采用与封装模型相适应的编程语言(或相应版本),在与模型动态/静态链接库相适应的平台中对模型进行二次封装,即采用共享内存的方式与仿真框架中的模型组件进行通信,生成可执行文件,工作流程图如附图2所示,具体包括:
[0049]步骤31、读取命令行参数,根据该参数生成共享内存名称和共享内存读写事件名称;
[0050]步骤32、打开共享内存及共本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于共享内存的多态仿真模型二次封装方法,其特征在于,包括:步骤1、建立共享内存通信的信息交互协议:分析模型与仿真系统框架交互信息,区分模型运行指令信息和模型状态反馈信息分别建立信息交互协议。步骤2、在仿真框架中,建立相应模型的组件程序:按照仿真框架的建模约束,以共享内存为通信媒介,建立仿真系统与模型程序之间通信的仿真组件,以驱动仿真系统各种运行指令及系统中其它实体与仿真模型程序的数据交互,具体为:步骤21、根据模型实例ID生成共享内存名称以及共享内存读写事件名称,即一个模型实例与一个共享内存和一个共享内存读写事件对应;步骤22、依据步骤21的共享内存名称和共享内存读写事件名称,创建对应的共享内存及共享内存读写事件;步骤23、以模型实例ID为命令行参数,调用模型程序的可执行文件,创建该模型的一个运行实例;步骤24、将模型初始化信息写入对应的共享内存,并向模型程序发送共享内存写入事件;步骤25、在仿真框架的每一个仿真周期内,执行如下步骤:等待共享内存读取事件;读取共享内存,获取模型运行实例的运行数据;检测模型运行实例的状态:当为初始化状态或者推进状态时,将推进该模型运行实例的指令和数据写入对应的共享内存,并发送共享内存写入事件;当为故障或者退出状态时,将模型退出指令写入共享内存,并发送共享内存写入事件,然后销毁该模型实例;步...

【专利技术属性】
技术研发人员:张伟郭小威孙健王玉锋向哲王志佳孙旭涛于畅秦凤凯戴哲岳鹏飞牛建钊
申请(专利权)人:中国人民解放军九二九四一部队
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1