CN119415076A 一种驱动fmu模型数据通讯的动态链接库及驱动方法 (中汽数据(天津)有限公司)_第1页
CN119415076A 一种驱动fmu模型数据通讯的动态链接库及驱动方法 (中汽数据(天津)有限公司)_第2页
CN119415076A 一种驱动fmu模型数据通讯的动态链接库及驱动方法 (中汽数据(天津)有限公司)_第3页
CN119415076A 一种驱动fmu模型数据通讯的动态链接库及驱动方法 (中汽数据(天津)有限公司)_第4页
CN119415076A 一种驱动fmu模型数据通讯的动态链接库及驱动方法 (中汽数据(天津)有限公司)_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一种驱动FMU模型数据通讯的动态链接库及本发明提供了一种驱动FMU模型数据通讯的FMU模型数据结构创建与FMU模型数据通讯的数据结构,实现动态链接库与FMU模型的仿真数据接库的驱动和桥接,仿真软件可与至少一个FMU模型实时在线数据通讯,完成多模型的联合仿2动态链接库基于定义的FMU模型数据结构创建与FMU模型仿真软件通过建立C语言与其自身语言数据类型的映射关系,实现动态链接库的仿真2.根据权利要求1所述的一种驱动FMU模型3.根据权利要求2所述的一种驱动FMU模所述FMU模型实例结构体基于FMU模型信息包括:模型全部方程和变量信息的4.根据权利要求2所述的一种驱动FMU模型数据通讯的仿真模式枚举类是包括FMU模型仿真时的不同阶段:实例化模式fmi2InstantiationMode、初始化模式fmi2InitializationMode、事件模式fmi2EventMode和连续时间模式所述仿真运行时状态枚举类包括:函数成功执行状态fmi2OK、函数执行警告状态5.一种驱动方法,基于权利要求2所述的一种驱自定义函数指针,自定义函数指针利用typedef关键字定义指向FMI2.0标准函数的函对外可访问的结构体对象,用于存储动态链接库的句柄HINSTANCE变量和所述函数指对外部模块可见和可调用的导出函数,导出函数采用declspec(dllexport)修饰符6.根据权利要求5所述的一种驱动方法,其特征在动态链接库获取FMU模型实例结构体中的模型名称,并使用LoadLibrary()函数加载3句柄HINSTANCE变量通过调用GetProcAddress()函数以传递对应的FMI标准中定义的依次赋值给所述结构体对象中函数指针变量,所述导出函数调用对应功能的FMU模型函数7.根据权利要求5所述的一种驱动方法,其特征在于:当仿真软件是基于或支持返回复杂数据,对于Modelica语言平台,非基础类型的数据结构使用Extern返回简单数据,若通过输出参数返回,对于Modelica语言平台使用ouModelica语言平台为每个要从FMU模型调用的功能编写一个外部函数声明,包括函数对应输入输出参数类型,Modelica语言平台定义与所述导出函数名称相同的调用函外部函数的末尾通过annotation关键字指定动态链接库的名称和位置9.一种电子设备,包括处理器以及与处理器通信处理器执行时实现权利要求5_8任一项所述的一4现有技术如专利CN114860388A借助应用软件本身的编译环境实现modelica语义的模型参是一个完整的数据结构,但是该专利并没有实现modelica语言对FMU模型数据结构构建和仿真数据通讯功能。目前现有技术无法实现Modelica对FMU模型数据结构的全面利用和仿以有效地实现基于或支持Modelica语[0005]进一步的,仿真软件通过动态链接库与至少一个FMU模型实时在线数据通讯用于仿真软件通过建立C语言与其自身语言数据类型的映射关系,实现动态链接库的[0007]进一步的,所述FMU模型仿真回调函数结构体包括:FMU模型运行日志回调函数、5[0008]进一步的,所述仿真模式枚举类是包括FMU模型仿真时的不同阶段:实例化模式和连续时间模式fmi2Continuo自定义函数指针,自定义函数指针利用ty对外可访问的结构体对象,用于存储动态链接库的句柄HINSTANCE变量和所述函对外部模块可见和可调用的导出函数,导出函数采用declspec(dllexport)修句柄HINSTANCE变量通过调用GetProcAddress()函数以传递对应的FMI标准中定地址依次赋值给所述结构体对象中函数指针变量,所述导出函数调用对应功能的FMU模型[0011]进一步的,当仿真软件是基于或支持modelica语言的仿真平台时,C语言与Modelica语言平台为每个要从FMU模型调用的功能编写一个外部函数声明,包括6[0015]相对于现有技术,本发明所述的一种驱动FMU模型数据通讯的动态链接库及驱动在一些不兼容FMU模型模型开发环境下如modelica语言平台,用户只需要在annotation注解中添加对该动态链接库和对应头文件的引用,并对应C语言与Modelica变量类型定义的映射表,就能实现modelica对fmu模型的仿真通讯功能。从而实现了不同软优选C语言编译生成,动态链接库基于定义的FMU模型数据结构创建与FMU模型数据通讯的台通过外部对象加载实现对动态链接库和对应数据结构和通讯接口函数声明的头文件引7库的仿真数据通讯,最终利用动态链接库的桥接实现modelica语言平台与外部FMU模型的[0023]进一步的,本实施例中的驱动方法是基于上述动态链接库实现仿真软件与FMU模实例化模式fmi2InstantiationMode、初始化模式fmi2InitializationMode、事件模式fmi2EventMode和连续时间模式fmi2ContinuousTimS2、仿真运行时状态枚举类,用于给modelica语言平台指示FMU模型函数调用结型异步执行状态fmi2Pending共6中链接库中函数与FMU模型中的函数通讯,如下:定义typedeffmi2Component(*8fmi2InstantiateFunc)(fmi2String,fmi2Type,fmi2String,fmi2String,constfmi2CallbackFunctions*,fmi2Boolean,fmi2Boolean)函数指针,这个函数指针会指向单步仿真函数指针typedeffmi2Status(*fmi2DoStepFunc)(fmi2Component,fmi2Real,数加载FMU模型,获得FMU模型链接库的句柄并储存在A2中结构体对象的句柄HINSTANCE变[0026]以FMU模型单步仿真函数为例,在下面的C代码中res是A2中定义的结构体对象,res_>HINSTANCE是动态链接库句柄,res_>adcFmiDoStep是A2结构体对象中的单步仿真函数指针变量,使用LoadLibrary()加载FMU模型获得动态链接库句柄存储在res_>HINSTANCE中,调用GetProcAddress()函数将FMI2.0标准fmi2DoStep函数首地址存在在当前仿真时刻,stepSize为FMU模型的单步仿真步长,导出函数fmi2_FMU模中调用了res_>adcFmiDoStep[0027]structFMU模型_exp_structres=calloc(1,sizeof(structFMU模型_exp_{res_>HINSTANCE=Loadres_>adcFmiDoStep=(fmi2DoStepFunc)GetProcAddress(res_>hInst,"9} declspec(dllexport)doublefmi2_FMU模型_do_step(void*component,{structFMU模型_exp_struct*{status=res_>adcFmiDoStep(res_>FMU模型Inst,currentTime,stepSize,}Modelica语言平台为每个要从FMU模型调用的功能编写一个外部函数声明,包括外部函数的末尾通过modelica语言中的annotation关键字指定动态链接库的名称和位置,modeli

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论