首页> 中国专利> 一种融合科学计算环境和系统建模仿真环境的方法、系统

一种融合科学计算环境和系统建模仿真环境的方法、系统

摘要

本发明公开了一种融合科学计算环境和系统建模仿真环境的方法、系统,该方法包括:建立科学计算环境与系统建模仿真环境之间的数据通信,实现二者的数据共享;科学计算环境采用Julia语言,系统建模仿真环境采用Modelica模型;在实现科学计算环境与系统建模仿真环境之间数据共享的基础上,在Modelica模型中集成Julia函数代码,实现科学计算与系统建模仿真的代码互调。填充了国内在科学计算与系统建模的双向深度融合方面的技术空白。

著录项

  • 公开/公告号CN116011173A

    专利类型发明专利

  • 公开/公告日2023-04-25

    原文格式PDF

  • 申请/专利权人 苏州同元软控信息技术有限公司;

    申请/专利号CN202211505155.1

  • 申请日2022-11-28

  • 分类号G06F30/20(2020.01);G06F9/54(2006.01);G06F111/02(2020.01);

  • 代理机构北京路浩知识产权代理有限公司 11002;

  • 代理人贺爱琳

  • 地址 215000 江苏省苏州市(江苏)自由贸易试验区苏州片区若水路388号E1701、E1702、E1703、E1801、E1803、E1804室

  • 入库时间 2023-06-19 19:23:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-05-12

    实质审查的生效 IPC(主分类):G06F30/20 专利申请号:2022115051551 申请日:20221128

    实质审查的生效

  • 2023-04-25

    公开

    发明专利申请公布

说明书

技术领域

本发明涉及仿真技术领域,尤其涉及一种融合科学计算环境和系统建模仿真环境的方法、系统。

背景技术

在现代科学和工程技术中,无论是中国智能制造还是德国工业4.0,其核心都包含信息物理融合系统(Cyber-physical system,CPS)。CPS系统简单划分是由信息域、物理域,以及两者相互作用的部分共同组成。现代装备通常是典型的信息物理融合系统(CPS系统),一个完整的装备研制,既需要支持物理系统,也需要支持信息系统的设计、计算、建模、仿真、分析,而且要提供物理系统与信息系统之间的融合能力。

目前,比较成熟的CPS系统建模仿真工具基本都是国外的,包括美国MathWorks公司的Matlab(科学计算)与Simulink(物理建模),加拿大Maplesoft公司的Maple(科学计算)与MapleSim(物理建模),美国Wolfram公司的Mathematica(科学计算)与SystemModeler(物理建模)等。相比国外,国内在这一方面起步较晚,虽然在物理域实现机、电、液、热、磁等的多领域统一建模仿真方面已有不少研究成果,但在科学计算与系统建模的双向深度融合方面,还比较空缺。

因此,我们有必要实现科学计算与系统物理建模的双向深度融合,共同构成一个完整的CPS技术底座,满足各行业在设计、建模、仿真、分析、优化方面的业务需求。

发明内容

本发明提供了一种融合科学计算环境和系统建模仿真环境的方法、系统,解决了国内在科学计算与系统建模的双向深度融合方面的技术空白的问题。

一种融合科学计算环境和系统建模仿真环境的方法,包括:

建立科学计算环境与系统建模仿真环境之间的数据通信,实现二者的数据共享;所述科学计算环境采用Julia语言,所述系统建模仿真环境采用Modelica模型;

在实现所述科学计算环境与所述系统建模仿真环境之间数据共享的基础上,在所述Modelica模型中集成所述Julia函数代码,实现所述科学计算与所述系统建模仿真的代码互调。

在本发明的一种实施例中,所述建立科学计算环境与系统建模仿真环境之间的数据通信,具体包括:通过运行科学计算环境创建第一主进程和第一子进程;建立所述第一主进程和所述第一子进程之间的通信;通过运行系统建模仿真环境创建第二主进程和第二子进程;建立所述第二主进程和所述第二子进程之间的通信;建立所述第一子进程和所述第二子进程之间的连接,以实现科学计算环境和所述系统建模仿真环境之间的通信。

在本发明的一种实施例中,所述建立所述第一主进程和所述第一子进程之间的通信,具体包括:在所述第一主进程中开启第一服务端;在所述第一子进程中开启第一客户端;将所述第一服务端与所述第一客户端建立连接。

在本发明的一种实施例中,所述建立所述第二主进程和所述第二子进程之间的通信,具体包括:在所述第二主进程中开启第二服务端;在所述第二子进程中,开启第二客户端;将所述第二服务端与所述第二客户端建立连接。

在本发明的一种实施例中,所述建立所述第一子进程和所述第二子进程之间的连接,具体包括:在所述第一子进程中,开启第三服务端;在所述第二子进程中,开启第三客户端;将所述第三服务端与所述第三客户端建立连接,以实现数据通信。

在本发明的一种实施例中,所述在所述Modelica模型中集成所述Julia函数代码,具体包括:获取基于Julia科学计算语言编写的Julia函数代码,将所述Julia函数代码作为参数传入所述Modelica模型中;在所述Modelica模型中嵌入C/C++接口函数代码,将所述Julia函数代码作为所述C/C++接口函数代码的输入参数;通过所述C/C++接口函数调用Julia动态库,执行所述Julia函数代码。

在本发明的一种实施例中,所述通过所述C/C++接口函数调用Julia动态库,执行所述Julia函数代码,具体包括:通过所述C/C++接口函数调用Julia动态库中的jl_init函数用于初始化Julia环境;基于所述初始化的Julia环境,在运行所述系统建模仿真环境时创建的第二子进程进行单步迭代的过程中,调用所述Julia动态库中的jl_eval_string函数执行Julia函数代码,将执行得到的结果返回到所述第二子进程;在所述第二子进程的结束时,调用所述Julia动态库中的jl_exit函数退出Julia环境,结束仿真。

在本发明的一种实施例中,所述第一主进程为科学计算环境主进程,所述第一子进程为Julia终端服务,所述科学计算环境主进程和所述Julia终端服务之间的数据传输采用Json远程过程调用JsonRPC通信协议;所述第二主进程为系统建模仿真环境主进程,所述第二子进程为Modelica求解器,所述系统建模仿真环境主进程和所述Modelica求解器之间的数据传输采用消息队列ZeroMQ通信协议;所述第一子进程和所述第二子进程之间的数据传输采用JsonRPC通信协议。

一种融合科学计算环境和系统建模仿真环境的系统,包括:

科学计算环境,用于提供交互式编程环境;

系统建模仿真环境,用于提供可视化建模与仿真环境;

工作空间共享模块,用于建立所述科学计算环境与所述系统建模仿真环境之间的数据通信,实现二者的数据共享;所述科学计算环境采用Julia语言,所述系统建模仿真环境采用Modelica模型;

代码互操作模块,用于在实现所述科学计算环境与所述系统建模仿真环境之间数据共享的基础上,在所述Modelica模型中集成所述Julia函数代码,实现所述科学计算与所述系统建模仿真的代码互调。

一种融合科学计算环境和系统建模仿真环境的设备,包括:

至少一个处理器;以及,

与所述至少一个处理器通过总线通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被执行,以实现:

建立科学计算环境与系统建模仿真环境之间的数据通信,实现二者的数据共享;所述科学计算环境采用Julia语言,所述系统建模仿真环境采用Modelica模型;

在实现所述科学计算环境与所述系统建模仿真环境之间数据共享的基础上,在所述Modelica模型中集成所述Julia函数代码,实现所述科学计算与所述系统建模仿真的代码互调。

一种非易失性存储介质,存储有计算机可执行指令,所述计算机可执行指令由处理器执行,以实现下述步骤:

建立科学计算环境与系统建模仿真环境之间的数据通信,实现二者的数据共享;所述科学计算环境采用Julia语言,所述系统建模仿真环境采用Modelica模型;

在实现所述科学计算环境与所述系统建模仿真环境之间数据共享的基础上,在所述Modelica模型中集成所述Julia函数代码,实现所述科学计算与所述系统建模仿真的代码互调。

本发明提供了一种融合科学计算环境和系统建模仿真环境的方法、系统,至少包括以下有益效果:通过工作空间共享和代码互操作,解决了科学计算与系统建模仿真的双向深度融合问题,实现了两者之间的一体化无缝集成,形成优势互补,完整支持信息物理系统的一体化研制以及各类设计与分析活动,填补了国内在这方面的技术空白。通过Modelica模型集成Julia函数代码的方法,使得在同一个进程中运行包含Julia代码的Modelica模型成为可能,能够弥补Modelica在信息域的短板。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例提供的科学计算与系统建模仿真一体化系统的系统总体架构示意图;

图2为本发明实施例提供的一种融合科学计算环境和系统建模仿真环境的方法步骤示意图;

图3为本发明实施例提供的科学计算环境与系统建模仿真环境的双向通信方案示意图;

图4为本发明实施例提供的Modelica调用Julia函数代码的方案流程示意图;

图5为本发明实施例提供的一种融合科学计算环境和系统建模仿真环境的系统示意图;

图6为本发明实施例提供的一种融合科学计算环境和系统建模仿真环境的设备示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例对本发明进行清楚、完整的描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,本领域普通技术人员显式地和隐式地理解的是,本发明所描述的实施例在不冲突的情况下,可以与其它实施例相结合。除非另作定义,本发明所涉及的技术术语或者科学术语应当为本发明所属技术领域内具有一般技能的人士所理解的通常意义。本发明所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本发明所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;本发明所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。

本发明提出了一种融合科学计算环境和系统建模仿真环境的方法、系统。科学计算与系统建模仿真一体化系统的总体架构如图1所示,主要分为两部分:一是科学计算环境,主要是基于高性能数值分析和计算科学语言Julia,提供编程、数学、图形等交互式编程环境,实现高效的科学与工程计算;二是系统建模仿真环境,主要是基于面向对象的多领域统一物理建模语言Modelica,提供物理建模、框图建模、状态机建模等可视化建模与仿真环境,实现基于模型的设计与仿真。通过两者之间的工作空间共享和代码互操作,使得两者无缝集成,交互体验上感觉是在操作一款软件。

工作空间共享是指科学计算环境所产生的数据,能够被系统建模仿真环境所访问和使用;同样,系统建模仿真环境所产生的数据,也能够被科学计算环境所访问和使用,如此两者之间实现数据互通。

代码互操作是指在科学计算环境中,通过Julia代码能够调用并驱动Modelica模型自动化运行;同样,在系统建模仿真环境中,通过Modelica代码能够集成并调用Julia函数代码,如此两者之间实现代码互调。下面进行具体说明。

图2为本发明实施例提供的一种融合科学计算环境和系统建模仿真环境的方法的步骤示意图,可以包括以下步骤:

S210:建立科学计算环境与系统建模仿真环境之间的数据通信,实现二者的数据共享;科学计算环境采用Julia语言,系统建模仿真环境采用Modelica模型。

在本发明的一种实施例中,建立科学计算环境与系统建模仿真环境之间的数据通信,具体包括:通过运行科学计算环境创建第一主进程和第一子进程;建立第一主进程和第一子进程之间的通信;通过运行系统建模仿真环境创建第二主进程和第二子进程;建立第二主进程和第二子进程之间的通信;建立第一子进程和第二子进程之间的连接,以实现科学计算环境和系统建模仿真环境之间的通信。

在本发明的一种实施例中,第一主进程为科学计算环境主进程,第一子进程为Julia终端服务,科学计算环境主进程和Julia终端服务之间的数据传输采用Json远程过程调用JsonRPC通信协议;第二主进程为系统建模仿真环境主进程,第二子进程为Modelica求解器,系统建模仿真环境主进程和Modelica求解器之间的数据传输采用消息队列ZeroMQ通信协议;第一子进程和第二子进程之间的数据传输采用JsonRPC通信协议。

在本发明的一种实施例中,建立第一主进程和第一子进程之间的通信,具体包括:在第一主进程中开启第一服务端;在第一子进程中开启第一客户端;将第一服务端与第一客户端建立连接。

在本发明的一种实施例中,建立第二主进程和第二子进程之间的通信,具体包括:在第二主进程中开启第二服务端;在第二子进程中,开启第二客户端;将第二服务端与第二客户端建立连接。

在本发明的一种实施例中,建立第一子进程和第二子进程之间的连接,具体包括:在第一子进程中,开启第三服务端;在第二子进程中,开启第三客户端;将第三服务端与第三客户端建立连接,以实现数据通信。

具体地,为了实现科学计算环境与系统建模仿真环境的数据共享,提供了一套两者双向数据通信方案,科学计算环境与系统建模仿真环境之间,主要是基于三套通信机制,实现数据共享:

①科学计算环境集成开发环境(Integrated Development Environment,IDE)(第一主进程)与Julia终端服务(第一子进程,即数学计算引擎)之间的数据通信,采用JsonRPC通信协议;

②系统建模仿真环境IDE(第二主进程)与Modelica求解器(第二子进程,即模型计算引擎)之间的数据通信,采用ZeroMQ通信协议;

③科学计算环境与系统建模仿真环境之间的数据通信,采用JsonRPC通信协议。

进一步地,如图3所示为科学计算环境与系统建模仿真环境的双向通信方法示意图,具体方案如下:

①科学计算环境主进程(第一主进程):科学计算环境是一个可独立运行的软件工具,提供代码编辑、工作空间、命令行窗口、变量编辑器、绘图等等功能;

②科学计算环境子进程(第一子进程):科学计算环境启动的一个子进程程序,即Julia终端服务,用于执行Julia代码和与外部进行数据通信;

③第一服务端:在科学计算环境主进程中,开启一个命名管道服务端,用于与Julia终端服务建立数据通信;

④第一客户端:在Julia终端服务中,开启一个命名管道客户端,并与第一服务端建立连接,从而实现底层的Julia终端服务(即数学计算引擎)与上层界面之间的数据通信。

⑤系统建模仿真环境主进程(第二主进程):系统建模仿真环境是一个可独立运行的软件工具,提供可视化建模、变量浏览器、曲线窗口、动画窗口等等功能;

⑥系统建模仿真环境子进程(第二子进程):系统建模仿真环境启动的一个子进程程序,即Modelica求解器,用于对Modelica模型进行仿真求解;

⑦第二服务端:在系统建模仿真环境主进程中,开启一个ZeroMQ服务端,用于与Modelica求解器建立数据通信;

⑧第二客户端:在系统建模仿真环境子进程中,开启一个ZeroMQ客户端,并与第二服务端建立连接,从而实现底层的Modelica求解器与上层界面之间的数据通信;

⑨第三服务端:在科学计算环境子进程中,开启一个命令管道服务端,用于与系统建模仿真环境进行数据通信;

⑩第三客户端:在系统建模仿真子进程中,开启一个命令管道客户端,用于与科学计算环境中的第三服务端建立数据通信。

S220:在实现科学计算环境与系统建模仿真环境之间数据共享的基础上,在Modelica模型中集成Julia函数代码,实现科学计算与系统建模仿真的代码互调。

在本发明的一种实施例中,在Modelica模型中集成Julia函数代码,具体包括:获取基于Julia科学计算语言编写的Julia函数代码,将Julia函数代码作为参数传入Modelica模型中;在Modelica模型中嵌入C/C++接口函数代码,将Julia函数代码作为C/C++接口函数代码的输入参数;通过C/C++接口函数调用Julia动态库,执行Julia函数代码。

在本发明的一种实施例中,通过C/C++接口函数调用Julia动态库,执行Julia函数代码,具体包括:通过C/C++接口函数调用Julia动态库中的jl_init函数用于初始化Julia环境;基于初始化的Julia环境,在运行系统建模仿真环境时创建的第二子进程进行单步迭代的过程中,调用Julia动态库中的jl_eval_string函数执行Julia函数代码,将执行得到的结果返回到第二子进程;在第二子进程的结束时,调用Julia动态库中的jl_exit函数退出Julia环境,结束仿真。

具体地,除了实现科学计算环境与系统建模仿真环境之间的数据共享,还需要实现两者之间的代码互调,在系统建模仿真环境中搭建的系统物理模型(即Modelica模型)中能够集成Julia函数代码,如控制算法、滤波算法等等,形成优势互补,共同支撑CPS系统建模仿真。

进一步地,如图4所示为Modelica模型集成Julia代码的流程示意图,过程如下:

①Julia代码:基于Julia科学计算语言,进行算法设计和编写算法代码;

②Modelica模型:基于Modelica系统建模语言,根据物理拓扑进行模型设计和可视化建模,并将Julia函数代码作为参数传入模型;

③嵌入C/C++代码:充分利用Modelica语言特性,在模型中嵌入C/C++代码,并将Julia函数代码作为C/C++接口函数的输入参数;

④调用Julia SDK:在C/C++接口函数中,可以调用Julia动态库,包括动态链接库文件.dll、静态链接库文件.a、头文件.h等文件,用于执行Julia函数代码;

⑤初始化Julia:在求解器仿真开始时,调用jl_init函数初始化Julia环境,初始化只需执行一次;

⑥执行Julia代码:在Modelica求解器的单步迭代过程中,调用jl_eval_string函数来执行Julia函数代码,并将计算结果返回给Modelica求解器;

⑦结束Julia:在Modelica求解器的仿真结束时,调用jl_exit函数退出Julia环境,至此整个仿真结束。

以上为本发明实施例提供的一种融合科学计算环境和系统建模仿真环境的方法,基于同样的发明思路,本发明实施例还提供了相应的一种融合科学计算环境和系统建模仿真环境的系统,如图5所示。

科学计算环境501,用于提供交互式编程环境;系统建模仿真环境502,用于提供可视化建模与仿真环境;工作空间共享模块503,用于建立科学计算环境与系统建模仿真环境之间的数据通信,实现二者的数据共享;科学计算环境采用Julia语言,系统建模仿真环境采用Modelica模型;代码互操作模块504,用于在实现科学计算环境与系统建模仿真环境之间数据共享的基础上,在Modelica模型中集成Julia函数代码,实现科学计算与系统建模仿真的代码互调。

本发明实施例还提供了相应的一种融合科学计算环境和系统建模仿真环境的设备,如图6所示。

本实施例提供了一种融合科学计算环境和系统建模仿真环境的设备,包括:

至少一个处理器601;以及,与至少一个处理器601通过总线603通信连接的存储器602;其中,存储器602存储有可被至少一个处理器执行的指令,指令被至少一个处理器601执行,以使至少一个处理器601能够执行:

建立科学计算环境与系统建模仿真环境之间的数据通信,实现二者的数据共享;科学计算环境采用Julia语言,系统建模仿真环境采用Modelica模型;在实现科学计算环境与系统建模仿真环境之间数据共享的基础上,在Modelica模型中集成Julia函数代码,实现科学计算与系统建模仿真的代码互调。

基于同样的思路,本发明的一些实施例还提供了上述方法对应的介质。

本发明的一些实施例提供的一种存储介质,存储有计算机可执行指令,计算机可执行指令由处理器执行,以实现下述步骤:

建立科学计算环境与系统建模仿真环境之间的数据通信,实现二者的数据共享;科学计算环境采用Julia语言,系统建模仿真环境采用Modelica模型;在实现科学计算环境与系统建模仿真环境之间数据共享的基础上,在Modelica模型中集成Julia函数代码,实现科学计算与系统建模仿真的代码互调。

本发明中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本发明实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程方法商品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程方法商品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程方法商品或者方法中还存在另外的相同要素。

以上仅为本发明的实施例而已,并不用于限制本发明。虽然,上文中已经用一般性说明及具体实施方案对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号