[发明专利]面向对象及面向过程语言的Modelica仿真组件生成方法在审
申请号: | 202210365983.3 | 申请日: | 2021-04-13 |
公开(公告)号: | CN114706592A | 公开(公告)日: | 2022-07-05 |
发明(设计)人: | 田卫新;徐超 | 申请(专利权)人: | 三峡大学 |
主分类号: | G06F8/51 | 分类号: | G06F8/51 |
代理公司: | 宜昌市三峡专利事务所 42103 | 代理人: | 成钢 |
地址: | 443002 *** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 面向 对象 面向过程语言 modelica 仿真 组件 生成 方法 | ||
本发明涉及面向对象及面向过程语言的Modelica仿真组件生成方法,包括:从指定的文件夹中逐一获取待转换的动态库及外部函数;分析得到每个外部函数的返回值类型、函数名称、函数参数列表;生成项目文件和源代码文件;为每一个外部函数在代码文件中生成符合Modelica使用规范的外部函数;将生成的项目编译成动态库文件;建立外部语言函数对应的mo文件,将外部函数引入到Modelica函数中,生成Modelica组件。本发明提供了将面向对象语言以及面向过程语言编写的动态库批量生成Modelica组件的自动转化方法,便于计算机执行,代替人工,大大提高了转换效率。
技术领域
本发明属于计算机仿真领域,具体涉及一种面向对象及面向过程语言的Modelica仿真组件生成方法。
背景技术
Modelica是一种开源的多领域统一建模语言,该语言具有面向对象特点和非因果关系建模能力,具有较好的交互性和较强的模型表达力,在多领域仿真领域有广泛的应用。
采用Modelica进行系统仿真时,可以使用Modelica语言建模,也可以使用由C语言或Fortran语言编写的外部语言函数建模。外部语言函数建模时,常用的方法是按照Modelica语言规范编写一个与原外部语言函数有相同接口的Modelica函数,按照参数映射规则进行参数类型映射,Modelica函数的实现部分通过external关键字通过动态库方式调用外部语言函数实现。目前这种人工进行的方法存在二方面的问题:一是由于这种做法需要具备专业知识的程序员编写代码,操作难度较大,效率较低;二是由于Modelica语言自身可以采用Mingw或vs编译器对C语言源代码进行编译,当选择的编译器和制作外部函数动态库使用的编译器不同时,此时常规方法是必须获得外部函数的源码,然后使用与Modelica相同的编译器重新生成外部函数动态库,否则将会建模失败。
发明内容
本发明的目的是针对上述问题,提供面向对象及面向过程语言的Modelica仿真组件生成方法,自动将面向对象语言或面向过程语言编写的外部函数利用二次封装方法转换、生成Modelica组件,代替人工,并解决非Mingw编译器编译的外部函数动态库在选择Mingw编译器的Modelica环境下不能使用问题,避免必须获取源代码;转换过程批量进行,大大提高转换效率。
本发明结合动态库转换和mo文件描述方式实现将以动态库方式提供的外部函数制作成Modelica组件,通过生成新的动态库对原始动态库函数进行封装,实现编译器兼容和接口转换。
本发明的技术方案是面向对象及面向过程语言的Modelica仿真组件生成方法,包括以下步骤:
步骤1:从指定的文件夹中逐一获取待转换的动态库及外部函数;
步骤2:分析得到每个外部函数的返回值类型、函数名称、函数参数列表;
步骤3:生成项目文件和源代码文件;
步骤4:为每一个外部函数在代码文件中生成符合Modelica使用规范的外部函数;
步骤4.1:在源代码文件中增加对原始动态库头文件的include包含;
步骤4.2:对由步骤2输出的每一个原始动态库导出函数原型,在源代码中生成一个新的函数原型,新函数返回值为整数;新函数名称由原始动态库对应的导出函数的名称转换得到;新函数的参数列表由原函数的参数列表的基础上增加原函数的返回值参数形成;
步骤4.3:生成由大括号对构成的函数体;
步骤4.4:在函数体内,根据原始动态库采用的不同编写语言类型生成不同的执行语句;
步骤5:将步骤3生成的项目编译成动态库文件;
步骤6:建立外部语言函数对应的mo文件,将外部函数引入到Modelica函数中,生成Modelica组件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于三峡大学,未经三峡大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210365983.3/2.html,转载请声明来源钻瓜专利网。