CN106681726A - Python模型转换为Modelica模型的方法 - Google Patents
Python模型转换为Modelica模型的方法 Download PDFInfo
- Publication number
- CN106681726A CN106681726A CN201611254375.6A CN201611254375A CN106681726A CN 106681726 A CN106681726 A CN 106681726A CN 201611254375 A CN201611254375 A CN 201611254375A CN 106681726 A CN106681726 A CN 106681726A
- Authority
- CN
- China
- Prior art keywords
- python
- function
- model
- language
- models
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种Python模型转换为Modelica模型的方法,用户仅需对Python模型进行梳理,并根据xml数据格式填写xml文件后,即可通过C语言生成模块和Modelica语言生成模块的支持,自动封装生成C语言函数模型和Modelica语言模型。本发明不仅可以大大缩短模型封装中编码、测试的时间,提高模型封装效率,而且完全能够满足不同Python模型成功封装。本发明解决了Python模型与Modelica语言的集成问题,弥补了目前市面上没有完全满足此类需求工具上的缺憾,将有助于两种语言优势互补,协助工程师进行更有效的仿真测试;同时也将提高工程系统建模效率,扩展建模方式。
Description
技术领域
本发明属于计算机软件领域,涉及一种跨语言环境模型封装技术,具体涉及一种Python模型转换为Modelica模型的方法。
背景技术
随着科学技术的发展和计算机仿真技术的拓宽,系统仿真需要解决的问题日趋复杂,建模技术已不再局限于单个组织或个人的行为,而是强调仿真系统和模型的联合开发,从而形成能够反映不同学科原理、不同仿真环境和不同仿真过程的仿真系统。在系统仿真开发过程中,经常会遇到不同编程语言开发的模型,如何将他们统一起来联合仿真,是大型工程系统仿真必须解决的重要问题之一。
Python是一种面向对象、解释型计算机程序设计语言,由于其简洁、易读易用以及高效率等特点受到广大用户的喜爱,也有越来越多的用户使用Python的特点建立模型进行计算和仿真。
Modelica是一种开放的,面向对象的,以方程为基础的工程建模语言,可以跨越不同领域,方便地实现复杂物理系统的建。Modelica语言涵盖的领域包括机械、电子、电力、液压、热、控制等。自1997年诞生以来,Modelica发展迅速,工程应用越来越广泛,尤其是在连续离散混合建模、多领域联合建模方面有鲜明的特点和优势。
在工程建模过程中,若系统采用Modelica语言搭建,而某个模型使用Python语言开发,在现有技术下,无法将Python模型嵌入系统中联合仿真使用,为系统仿真造成一定的困难。若需要将Python模型转换为Modelica模型,用户不仅需要自学Python官方API,实现C语言对Python语言的调用,还需要学习Modelica语言对C语言的调用机制;而且由于封装过程并不是直接转换,有C语言在其中作为中间层,在直接对Modelica模型进行仿真时难免出现各种差错,并且难以发现查明引发错误的真正原因在C语言函数还是Modelica模型。
发明内容
为了解决上述现有技术中存在的问题,本发明旨在提供一种Python模型转换为Modelica模型的方法,以实现Python语言模型与Modelica语言的集成。
为实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:
由于Modelica语言不支持直接对Python语言扩展调用,本发明通过C语言作为中间桥梁,C语言可以直接调用Python语言,而Modelica语言则可以调用外部C语言,由此实现Modelica语言对Python语言模型的联合集成仿真。将python模型、C语言函数、Modelica模型连接起来的是一个描述Python模型的xml文件。
一种Python模型转换为Modelica模型的方法,包括如下步骤:
步骤1、在xml编写模块中,利用统一的xml描述文件模板生成xml文件;
所述xml文件的作用是梳理Python模型的输入输出参数、Python模型仿真所需的Python语言函数以及Python模型是否依赖其他库文件;所述xml文件向前描述Python模型组成,向后作为封装C语言函数和Modelica模型的骨架支持;通过统一的xml描述文件模板,可以尽可能适用于多种Python模型,例如调用Dll的Python模型,纯Python语言模型等。
步骤2、在xml编写模块中,根据Python模型的组成内容,为所述xml文件编写模型信息;
所述模型信息包括模型名称、模型描述、文件名称、Dll文件名称和模型类型。
步骤3、在xml编写模块中,按照Python模型运行流程,将Python模型中的Python语言函数按用途进行分类,分类后的Python语言函数包括初始化函数、设值函数、计算函数和取值函数。
步骤4、在xml编写模块中,根据所述Python语言函数的不同分类,为所述xml文件编写函数列表。
每种所述Python语言函数中均包含有函数名称、函数类型、函数描述这三大属性以及输入参数列表和输出参数列表两个列表;其中,所述输入参数列表和所述输出参数列表中的参数包含有参数名称、参数类型、参数值、参数单位、参数种类和参数描述六个属性。
步骤5、根据xml编写模块对所述Python语言函数的描述约定,以C语言生成模块为技术支撑,将编写好的所述xml文件生成标准C语言函数;
所述C语言函数顺序与所述xml文件中所述Python语言函数顺序保持一致;每个所述C语言函数的输入输出参数也来自所述xml文件中的描述;在正确的仿真环境中,此C语言函数可以通过测试正确实现对Python模型的调用仿真,例如调用Python官方API实现对Python模型的调用仿真。
步骤6、根据xml编写模块对所述Python语言函数的描述约定,以Modelica语言生成模块为技术支撑,根据所述xml文件对输入输出参数以及所述Python语言函数的描述约定,利用Modelica语言可调用外部C语言的机制,将生成的所述C语言函数封装为由Modelica语言编写的Modelica模型;
所述Modelica模型是在成功生成所述C语言函数的基础上,利用Modelica语言可以调用外部C的机制,根据所述xml文件中约定的所述Python语言函数内容生成的;Modelica模型支持对参数变量进行分类、注释、标注单位等,这些功能的实现都基于所述xml文件中对应部分的描述内容;自动封装生成的Modelica模型在正确的仿真环境系下能实现对Python语言模型的正确仿真。
与现有技术相比,本发明的有益效果是:
本发明提供了一种创新性的模型封装的方法,用户仅需对Python模型进行梳理,根据本发明定义的xml数据格式填写xml文件,即可通过本发明软件部分的支持,自动封装生成C语言函数模型以及Modelica语言模型。本发明在建立xml文件格式以及C语言函数内容、Modelica模型内容的过程中,经过多次反复测试,证明本发明完全能够满足不同Python模型成功封装,这大大缩短模型封装中编码、测试的时间,提高模型封装效率。
本发明成功地解决了Python模型与Modelica语言的集成问题,弥补了目前市面上没有完全满足此类需求工具上的缺憾,将有助于两种语言优势互补,协助工程师进行更有效的仿真测试;同时也将提高工程系统建模效率,扩展建模方式。本发明还助力推广多领域联合仿真技术的发展。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明。本发明的具体实施方式由以下实施例及其附图详细给出。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明的转换方法流程图;
图2为本发明的xml文件内容格式拓扑图。
具体实施方式
下面将参考附图并结合实施例,来详细说明本发明。
参见图1所示,一种Python模型转换为Modelica模型的方法,包括如下步骤:
步骤1、在xml编写模块中,利用统一的xml描述文件模板生成xml文件;
所述xml文件的作用是梳理Python模型的输入输出参数、Python模型仿真所需的Python语言函数以及Python模型是否依赖其他库文件;所述xml文件向前描述Python模型组成,向后作为封装C语言函数和Modelica模型的骨架支持;通过统一的xml描述文件模板,可以尽可能适用于多种Python模型,例如调用Dll的Python模型,纯Python语言模型等。
步骤2、参见图2所示,在xml编写模块中,根据Python模型的组成内容,为所述xml文件编写模型信息;
所述模型信息包括模型名称、模型描述、文件名称、Dll文件名称和模型类型。
步骤3、参见图2所示,在xml编写模块中,按照Python模型运行流程,将Python模型中的Python语言函数按用途进行分类,分类后的Python语言函数包括初始化函数、设值函数、计算函数和取值函数。
步骤4、参见图2所示,在xml编写模块中,根据所述Python语言函数的不同分类,为所述xml文件编写函数列表。
每种所述Python语言函数中均包含有函数名称、函数类型、函数描述这三大属性以及输入参数列表和输出参数列表两个列表;其中,所述输入参数列表和所述输出参数列表中的参数包含有参数名称、参数类型、参数值、参数单位、参数种类和参数描述六个属性。
步骤5、根据xml编写模块对所述Python语言函数的描述约定,以C语言生成模块为技术支撑,将编写好的所述xml文件生成标准C语言函数;
所述C语言函数顺序与所述xml文件中所述Python语言函数顺序保持一致;每个所述C语言函数的输入输出参数也来自所述xml文件中的描述;在正确的仿真环境中,此C语言函数可以通过测试正确实现对Python模型的调用仿真,例如调用Python官方API实现对Python模型的调用仿真。
步骤6、根据xml编写模块对所述Python语言函数的描述约定,以Modelica语言生成模块为技术支撑,根据所述xml文件对输入输出参数以及所述Python语言函数的描述约定,利用Modelica语言可调用外部C语言的机制,将生成的所述C语言函数封装为由Modelica语言编写的Modelica模型;
所述Modelica模型是在成功生成所述C语言函数的基础上,利用Modelica语言可以调用外部C的机制,根据所述xml文件中约定的所述Python语言函数内容生成的;Modelica模型支持对参数变量进行分类、注释、标注单位等,这些功能的实现都基于所述xml文件中对应部分的描述内容;自动封装生成的Modelica模型在正确的仿真环境系下能实现对Python语言模型的正确仿真。
上述实施例只是为了说明本发明的技术构思及特点,其目的是在于让本领域内的普通技术人员能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡是根据本发明内容的实质所作出的等效的变化或修饰,都应涵盖在本发明的保护范围内。
Claims (1)
1.一种Python模型转换为Modelica模型的方法,其特征在于,包括如下步骤:
步骤1、在xml编写模块中,利用统一的xml描述文件模板生成xml文件;
所述xml文件的作用是梳理Python模型的输入输出参数、Python模型仿真所需的Python语言函数以及Python模型是否依赖其他库文件;所述xml文件向前描述Python模型组成,向后作为封装C语言函数和Modelica模型的骨架支持;
步骤2、在xml编写模块中,根据Python模型的组成内容,为所述xml文件编写模型信息;
所述模型信息包括模型名称、模型描述、文件名称、Dll文件名称和模型类型;
步骤3、在xml编写模块中,按照Python模型运行流程,将Python模型中的Python语言函数按用途进行分类,分类后的Python语言函数包括初始化函数、设值函数、计算函数和取值函数;
步骤4、在xml编写模块中,根据所述Python语言函数的不同分类,为所述xml文件编写函数列表;
每种所述Python语言函数中均包含有函数名称、函数类型、函数描述以及输入参数列表和输出参数列表;其中,所述输入参数列表和所述输出参数列表中的参数包含有参数名称、参数类型、参数值、参数单位、参数种类和参数描述六个属性;
步骤5、根据xml编写模块对所述Python语言函数的描述约定,以C语言生成模块为技术支撑,将编写好的所述xml文件生成标准C语言函数;所述C语言函数的顺序与所述xml文件中所述Python语言函数的顺序保持一致;所述C语言函数通过调用Python官方API可实现对Python模型的调用仿真;
步骤6、根据xml编写模块对所述Python语言函数的描述约定,以Modelica语言生成模块为技术支撑,根据所述xml文件对输入输出参数以及所述Python语言函数的描述约定,利用Modelica语言可调用外部C语言的机制,将生成的所述C语言函数封装为由Modelica语言编写的Modelica模型,所述Modelica模型在正确的仿真环境系下可实现对Python模型的正确仿真。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611254375.6A CN106681726B (zh) | 2016-12-30 | 2016-12-30 | Python模型转换为Modelica模型的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611254375.6A CN106681726B (zh) | 2016-12-30 | 2016-12-30 | Python模型转换为Modelica模型的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106681726A true CN106681726A (zh) | 2017-05-17 |
CN106681726B CN106681726B (zh) | 2019-11-08 |
Family
ID=58873482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611254375.6A Active CN106681726B (zh) | 2016-12-30 | 2016-12-30 | Python模型转换为Modelica模型的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106681726B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107908830A (zh) * | 2017-10-26 | 2018-04-13 | 北京动力机械研究所 | 基于fmi标准的模型转换方法和模型转换系统 |
CN110335644A (zh) * | 2019-06-13 | 2019-10-15 | 武汉工程大学 | 联合MuSiC和Python用于汽油深度脱硫的吸附材料的智能优选方法 |
CN111625228A (zh) * | 2019-02-28 | 2020-09-04 | 上海拓境船舶科技有限公司 | 一种TribonVitesse二次开发方法 |
CN113220309A (zh) * | 2021-04-13 | 2021-08-06 | 三峡大学 | 多语言的Modelica组件批量生成系统和方法 |
CN115826935A (zh) * | 2023-02-14 | 2023-03-21 | 中国航空油料集团有限公司 | 基于统一语言中间件的数字孪生模型集成系统及方法 |
CN117076334A (zh) * | 2023-10-16 | 2023-11-17 | 北京世冠金洋科技发展有限公司 | 一种自动化建模、仿真、测试及数据分析方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105260555A (zh) * | 2015-10-28 | 2016-01-20 | 苏州同元软控信息技术有限公司 | 一种基于Modelica模型的故障注入系统及其方法 |
CN105335213A (zh) * | 2015-10-28 | 2016-02-17 | 苏州同元软控信息技术有限公司 | Word文件嵌入Modelica模型实现仿真报告自动生成方法 |
CN105445581A (zh) * | 2015-11-27 | 2016-03-30 | 苏州同元软控信息技术有限公司 | 一种基于Modelica模型的故障检测系统及其方法 |
-
2016
- 2016-12-30 CN CN201611254375.6A patent/CN106681726B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105260555A (zh) * | 2015-10-28 | 2016-01-20 | 苏州同元软控信息技术有限公司 | 一种基于Modelica模型的故障注入系统及其方法 |
CN105335213A (zh) * | 2015-10-28 | 2016-02-17 | 苏州同元软控信息技术有限公司 | Word文件嵌入Modelica模型实现仿真报告自动生成方法 |
CN105445581A (zh) * | 2015-11-27 | 2016-03-30 | 苏州同元软控信息技术有限公司 | 一种基于Modelica模型的故障检测系统及其方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107908830A (zh) * | 2017-10-26 | 2018-04-13 | 北京动力机械研究所 | 基于fmi标准的模型转换方法和模型转换系统 |
CN111625228A (zh) * | 2019-02-28 | 2020-09-04 | 上海拓境船舶科技有限公司 | 一种TribonVitesse二次开发方法 |
CN110335644A (zh) * | 2019-06-13 | 2019-10-15 | 武汉工程大学 | 联合MuSiC和Python用于汽油深度脱硫的吸附材料的智能优选方法 |
CN110335644B (zh) * | 2019-06-13 | 2022-12-06 | 武汉工程大学 | 联合MuSiC和Python用于汽油深度脱硫的吸附材料的智能优选方法 |
CN113220309A (zh) * | 2021-04-13 | 2021-08-06 | 三峡大学 | 多语言的Modelica组件批量生成系统和方法 |
CN113220309B (zh) * | 2021-04-13 | 2022-05-06 | 三峡大学 | 多语言的Modelica组件批量生成系统和方法 |
CN114706592A (zh) * | 2021-04-13 | 2022-07-05 | 三峡大学 | 面向对象及面向过程语言的Modelica仿真组件生成方法 |
CN114706592B (zh) * | 2021-04-13 | 2024-04-19 | 三峡大学 | 面向对象及面向过程语言的Modelica仿真组件生成方法 |
CN115826935A (zh) * | 2023-02-14 | 2023-03-21 | 中国航空油料集团有限公司 | 基于统一语言中间件的数字孪生模型集成系统及方法 |
CN117076334A (zh) * | 2023-10-16 | 2023-11-17 | 北京世冠金洋科技发展有限公司 | 一种自动化建模、仿真、测试及数据分析方法及装置 |
CN117076334B (zh) * | 2023-10-16 | 2024-01-26 | 北京世冠金洋科技发展有限公司 | 一种自动化建模、仿真、测试及数据分析方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106681726B (zh) | 2019-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106681726A (zh) | Python模型转换为Modelica模型的方法 | |
Kleiner et al. | Model based design with systems engineering based on RFLP using V6 | |
CN105988797A (zh) | 一种多学科设计与分析工具适配系统及方法 | |
US20120197617A1 (en) | Co-Simulation with Peer Negotiated Time Steps | |
CN107885500A (zh) | 一种面向autosar软件架构的运行时环境生成方法 | |
CN114818553A (zh) | 一种芯片集成设计方法 | |
Towill | System dynamics—background, methodology, and applications. Part 1: background and methodology | |
Spichkova et al. | Do we really need to write documentation for a system? CASE tool add-ons: generator+ editor for a precise documentation | |
CN104091006B (zh) | Simulink中自适应的仿真和代码生成的控制方法 | |
CN111399829B (zh) | 一种基于模型驱动的波形建模方法及终端 | |
Yang et al. | Development and optimization of CAD system based on big data technology | |
CN112926109B (zh) | 一种复杂嵌入式系统虚拟运行环境可视化建模方法 | |
CN109165131B (zh) | 一种基于Perl的原型验证平台自动化实现方法 | |
CN104408979A (zh) | 一种资源可配置化虚拟仿真教学系统 | |
CN113919158A (zh) | 一种用于飞行控制面板的仿真方法、装置及存储介质 | |
CN101609614A (zh) | 一种半实物仿真系统的仿真平台及对目标系统进行在线调参的方法 | |
CN106372359B (zh) | 一种设备虚拟样机系统 | |
CN106155989A (zh) | 专利文件生成方法和装置 | |
CN106897120A (zh) | 双层动态分布式仿真平台 | |
CN110321596A (zh) | 一种基于有限元分析的机车车辆结构仿真方法 | |
CN103257861B (zh) | 一种自动生成bios代码的方法及装置 | |
Melvin et al. | Simulation within the axiomatic design framework | |
CN106096069B (zh) | 用于psasp到pscad数据模型转换的通用pscad调压器建模方法 | |
CN113076622B (zh) | Fmu仿真模型规范性分析与校验系统及方法 | |
CN108829968A (zh) | 基于Python扩展函数的电路图审查方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |