Python模型转换为Modelica模型的方法与流程

文档序号:11917577阅读:1595来源:国知局
Python模型转换为Modelica模型的方法与流程

本发明属于计算机软件领域,涉及一种跨语言环境模型封装技术,具体涉及一种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语言模型的正确仿真。

上述实施例只是为了说明本发明的技术构思及特点,其目的是在于让本领域内的普通技术人员能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡是根据本发明内容的实质所作出的等效的变化或修饰,都应涵盖在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1