一种采用IOSEM接口方式的紧耦合仿真通用模型实现方法技术

技术编号:7682555 阅读:256 留言:0更新日期:2012-08-16 05:53
本发明专利技术提出了一种采用IOSEM接口方式的紧耦合仿真通用模型实现方法,首先建立动态库编译环境,然后定义仿真模型的接口函数,并根据仿真模型的功能,在仿真模型的接口函数中构建以下事件中的单个事件或多个事件:仿真模型信息事件、仿真初始化事件、状态迁移事件、模型输出事件、仿真结束事件和自定义事件;接口函数中的事件响应采用switch-case结构,最后编译生成仿真模型。采用本发明专利技术提出的方法,可以使每一个子模型成为标准化的模型配件,通过对所有子模型进行合理装配得到复杂系统的模型。这样可以实现每个模型的接口标准化、透明化,便于实现模块化建模,还提高了模型的可移植性和重用性,大大降低复杂系统的建模仿真难度。

【技术实现步骤摘要】

本专利技术涉及计算机仿真方法
,具体为一种采用IOSEM接口方式的紧耦合仿真通用模型实现方法
技术介绍
紧耦合仿真是指仿真应用中,仿真模型间的数据交互关系复杂,数据交互频率高,交互量大,具有紧密的对应关系。在建模仿真过程中,仿真模型接受仿真软件的调度,要完成建模、仿真以及其它一些应用需求的多种功能,客观上要求模型接口具有一定的灵活性 和通用性。而目前紧耦合模型间的接口一般都是根据需求自定义接口,还没有一个统一的接口技术,这就使得现有仿真过程中的接口复杂,不同功能模块的模型可移植性差,可重用性差。
技术实现思路
要解决的技术问题为解决现有技术中存在的问题,提供一种标准化的仿真模型接口,本专利技术提出了一种采用IOSEM接口方式的紧耦合仿真通用模型实现方法。技术方案本专利技术中IOSEM指的是输入参数(Input)、输出参数(Output)、状态参数(State)、事件响应接口(Event)和消息(Message)。本专利技术的技术方案为所述一种采用IOSEM接口方式的紧耦合仿真通用模型实现方法,其特征在于包括以下步骤步骤I :在C语言或C++语言环境中,建立动态库编译环境;步骤2 :定义仿真模型的接口函数,函数参数由外部系统向仿真模型发出的事件消息、外部系统向仿真模型传递的消息参数、当前仿真时间、当前仿真步长、仿真状态变量、输入变量、输出变量和仿真状态变量的导数变量组成;步骤3 :根据仿真模型的功能,在仿真模型的接口函数中构建以下事件中的单个事件或多个事件仿真模型信息事件、仿真初始化事件、状态迁移事件、模型输出事件、仿真结束事件和自定义事件;接口函数中的事件响应采用switch-case结构;步骤4 :编译仿真模型,生成IOSEM接口方式的仿真模型。有益效果一个复杂系统的模型,必然包含了若干子系统模型,即一个复杂大系统模型事实上是由若干子模型功能组成的。采用本专利技术提出的紧耦合仿真通用模型实现方法,可以使得每一个子模型成为一个标准化的模型配件,进而通过对所有子模型进行合理装配得到复杂系统的模型。这样不仅可以实现每个模型的接口标准化、透明化,便于实现模块化建模,还提高了模型的可移植性和重用性,大大降低复杂系统的建模仿真难度。附图说明图I :仿真模型的信息描述具体实施例方式下面结合具体实施例描述本专利技术实施例本实施例以一个自由落体数学模型为例(向上为正),其中D为下降过程中的阻力加速度,则其仿真模型微分方程为 \v = —g — D. δ[H = V要构建采用IOSEM接口方式的仿真模型,主要采用以下步骤步骤I :在C语言或C++语言环境中,建立动态库编译环境;步骤2 :定义仿真模型的接口函数,函数参数由外部系统向仿真模型发出的事件消息、外部系统向仿真模型传递的消息参数、当前仿真时间、当前仿真步长、仿真状态变量、输入变量、输出变量和仿真状态变量的导数变量组成;参照附图1,仿真模型的接口分为以下几个部分输入参数(Input):仿真模型需要的输入数据,可以是多维,包括数据维数和数据说明。输出参数(Output):仿真模型的输出数据,可以是多维,包括数据维数和数据说明。状态参数(State):对于紧耦合仿真模型,状态参数表示了系统或模型当前运行的状态参数,包括当前时间,运行步长,微分方程组的状态和微分值。事件响应接口(Event):仿真软件平台采用消息驱动机制驱动模型运行,仿真模型根据平台发送的消息进行相应的计算,事件响应接口是响应系统消息的计算部分。由于平台向模型发送的消息种类比较多,为每个消息定制响应的接口函数将导致编程过程复杂,因此,事件响应接口采用统一的接口,在该接口内,用户可以处理各种系统或自定义消肩、O消息(Message):仿真模型向仿真软件或其它仿真模型发送的信息,进行仿真模型间的协调运行和数据交互。仿真模型接口的形式为extern" C" int_exportInterface(int msg,int param,double time,double氺step,double氺x,double氺u,double氺y,double氺f)各参数的意义为msg :系统向仿真模型发出的事件消息;param :系统向仿真模型传递的消息参数,根据不同的消息,传递参数类型不同;time :当前仿真时间;step:当前仿真步长;X :仿真状态变量;U :输入变量,外部的输入参数; y :输出变量,计算结果通过该参数输出;f :状态变量的导数变量指针,用来计算状态变量的导数;由该接口可以看出在模型中,通过响应各种仿真消息,实现仿真平台对仿真模型的驱动;Param参数为模型数据的保存、维护等提供了支持;仿真时间和仿真步长是由平台维护的,仿真模型可以直接使用;通过X、U、y、f这四个参数为仿真模型的计算提供了支持;通过参数u可以得到仿真模型的输入,通过X可以得到当前的积分状态值,通过设定f以设定积分的导数值,通过设定I给出模型的输出值。那么在本实施例中,完成仿真模型功能的接口元素为输入变量D (阻力加速度);输出变量V,H(速度、高度);仿真状态变量V,H (速度、高度);步骤3 :根据仿真模型的功能,在仿真模型的接口函数中构建以下事件中的单个事件或多个事件仿真模型信息事件、仿真初始化事件、状态迁移事件、模型输出事件、仿真结束事件和自定义事件;接口函数中的事件响应采用switch-case结构;在仿真模型接口函数中,通过响应msg事件消息,完成相应的事件行为仿真模型信息事件通过该事件填充模型的信息,如模型名、输入输出信息等;仿真初始化事件在仿真前进行的初始化过程,如赋状态初值、打开文件读取数据等;状态迁移事件状态的变化,求解状态变量的微分;模型输出事件输出本模型的数据;仿真结束事件结束仿真时的清理过程。本实施例中采用了 4个事件响应仿真模型信息事件响应、仿真初始化事件响应、状态迁移事件响应、状态输出事件响应。本实施例中,仿真模型实现的伪代码为extern ”C" int exportDrop(int msg, int param,double time,double* step, double* x,double* u,double* y,double* f) { doubleg=9.81;//重力加速度switch(msg) { case SM—INFO: //仿真模型信息事件响应 model.title= “自由落体动力学模型”; model.inpu t= “D”; model.output= “V,H”; break; case SM—INITIALIZE: //仿真初始化事件响应x=0; //状态V赋初值x=1000;//状态H赋初值 break; case SM—CONTINUE: //状态迁移事件响应fI0]=-g-u; //状态的变化率fll]=x;break; case SM—OUTPUT: //状态输出事件响应y=x;y=x;break; } return 0; }步骤4 :编译仿真模型,生成IOSEM接口方式的仿真模型。权利要求1.一种采用IOSEM接口方式的紧耦合仿真通用模型实现方法,其特征在于包括以下步骤 步骤I :在C语目或C++语目环境中,建立动态库编译环境; 步本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:闫晓东
申请(专利权)人:西北工业大学
类型:发明
国别省市:

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

1