掌桥专利:专业的专利平台
掌桥专利
首页

一种Simulink模型仿真加速方法及装置

文献发布时间:2023-06-19 11:35:49


一种Simulink模型仿真加速方法及装置

技术领域

本发明涉及仿真技术领域,更具体地说,涉及一种Simulink模型仿真加速方法及装置。

背景技术

Simulink模型指的是利用Simulink建立的模型。Simulink是一种可视化仿真工具,用于多域仿真以及基于模型的设计。Simulink支持系统设计、仿真、自动代码生成以及嵌入式系统的连续测试和验证。Simulink提供图形编辑器、可自定义的模块库以及求解器,能够进行动态系统建模和仿真。

现有的Simulink模型仿真加速方法一般是采用并行计算工具箱,使用parsim函数将多个仿真分布到多核CPU以加快整体仿真速度。parsim可自动创建并行池、标识文件依赖性并管理构建工作,通过交互方式或批处理方式轻松地在多核CPU上同时运行多个Simulink仿真。

在蒙特卡罗分析、参数扫描、模型测试、实验设计和模型优化中,使用并行计算工具箱可以在同一时刻使用不同输入或参数设置同时运行同一Simulink模型加快仿真速度。但是,当Simulink模型本身规模极大时,模型本身的仿真机制会使得单个模型仿真就需要耗费大量的时间,这种情况下使用并行计算工具箱也难以获得满意的仿真速度。

发明内容

有鉴于此,本发明提出一种Simulink模型仿真加速方法及装置,欲通过将一个Simulink模型拆分为多个任务,进行并行运算来加快仿真速度。

为了实现上述目的,现提出的方案如下:

第一方面,提供一种Simulink模型仿真加速方法,包括:

获取预先生成的可在计算机操作系统中运行的可执行程序文件,所述可执行程序文件包含参数赋值代码、数据记录代码、程序调度代码和Simulink模型的代码;

根据预先设定的Simulink模型的任务与计算机的多核CPU的核心的对应关系,在运行所述可执行程序文件时,所述Simulink模型的各个任务运行在所述计算机的多核CPU的对应核心中;

当运行所述可执行程序文件时,对于每次仿真,程序调用所述参数赋值代码读取本次仿真所需的输入参数并传递给所述Simulink模型的代码,所述Simulink模型的代码运行完成得到运算结果,再调用所述数据记录代码将所述运算结果进行保存;

所述程序调度代码判断仿真次数达到预设的次数阈值后,控制所述可执行程序文件停止执行。

可选的,生成所述可执行程序文件的过程,包括:

将Simulink模型的求解器配置为定步长求解器,且配置所述求解器以支持所述Simulink模型在目标架构下进行任务的并发执行;

指定部署所述Simulink模型的多核CPU的核心数量;

将所述Simulink模型划分为N个任务,N为所述核心数量;

建立所述任务与所述多核CPU的核心的一一对应关系;

采用代码自动生成技术生成Simulink模型的代码文件;

将所述Simulink模型的代码文件、参数赋值代码文件、数据记录代码文件和程序调度代码文件集成编译,并生成可在计算机操作系统中运行的可执行程序文件。

可选的,所述采用代码自动生成技术生成Simulink模型的代码文件,包括:

将Simulink模型解析为一个后缀为.rtw的模型描述文件;

利用目标语言编译器将所述模型描述文件翻译为目标语言代码,所述目标语言代码为所述Simulink模型的代码文件。

可选的,所述求解器的配置过程,具体包括:

利用MATLAB脚本文件对所述求解器进行自动化配置。

可选的,将所述Simulink模型的代码文件、参数赋值代码文件、数据记录代码文件和程序调度代码文件集成编译的过程,具体包括:

利用MATLAB脚本文件对Simulink Coder或Embedded Coder进行自动配置,将所述Simulink模型的代码文件、参数赋值代码文件、数据记录代码文件和程序调度代码文件进行自动化集成编译。

第二方面,提供一种Simulink模型仿真加速装置,包括:

获取单元,用于获取预先生成的可在计算机操作系统中运行的可执行程序文件,所述可执行程序文件包含参数赋值代码、数据记录代码、程序调度代码和Simulink模型的代码;

任务分配单元,用于根据预先设定的Simulink模型的任务与计算机的多核CPU的核心的对应关系,在运行所述可执行程序文件时,所述Simulink模型的各个任务运行在所述计算机的多核CPU的对应核心中;

仿真调度单元,用于当运行所述可执行程序文件时,对于每次仿真,程序调用所述参数赋值代码读取本次仿真所需的输入参数并传递给所述Simulink模型的代码,所述Simulink模型的代码运行完成得到运算结果,再调用所述数据记录代码将所述运算结果进行保存;

仿真停止单元,用于所述程序调度代码判断仿真次数达到预设的次数阈值后,控制所述可执行程序文件停止执行。

可选的,所述Simulink模型仿真加速装置还包括文件生成单元,所述文件生成单元包括:

求解器配置子单元,用于将Simulink模型的求解器配置为定步长求解器,且配置所述求解器以支持所述Simulink模型在目标架构下进行任务的并发执行;

目标架构指定子单元,用于指定部署所述Simulink模型的多核CPU的核心数量;

模型分区子单元,用于将所述Simulink模型划分为N个任务,N为所述核心数量;

映射子单元,用于建立所述任务与所述多核CPU的核心的一一对应关系;

代码生成子单元,用于采用代码自动生成技术生成Simulink模型的代码文件;

集成编译子单元,用于将所述Simulink模型的代码文件、参数赋值代码文件、数据记录代码文件和程序调度代码文件集成编译,并生成可在计算机操作系统中运行的可执行程序文件。

可选的,所述代码生成子单元,具体用于:

将Simulink模型解析为一个后缀为.rtw的模型描述文件;

利用目标语言编译器将所述模型描述文件翻译为目标语言代码,所述目标语言代码为所述Simulink模型的代码文件。

可选的,所述求解器配置子单元,具体用于:

利用MATLAB脚本文件将Simulink模型的求解器自动配置为定步长求解器,且自动配置所述求解器以支持所述Simulink模型在目标架构下进行任务的并发执行。

可选的,所述集成编译子单元,具体用于:

利用MATLAB脚本文件对Simulink Coder或Embedded Coder进行自动配置,将所述Simulink模型的代码文件、参数赋值代码文件、数据记录代码文件和程序调度代码文件进行自动化集成编译,并生成可在计算机操作系统中运行的可执行程序文件

与现有技术相比,本发明的技术方案具有以下优点:

上述技术方案提供的一种Simulink模型仿真加速方法及装置,方法包括预先生成可在计算机操作系统中运行的可执行程序文件,该可执行程序文件包含参数赋值代码、数据记录代码、程序调度代码和Simulink模型的代码;根据预先设定的Simulink模型的任务与计算机的多核CPU的核心的对应关系,在运行可执行程序文件时,Simulink模型的各个任务运行在计算机的多核CPU的对应核心中。通过将一个规模较大的Simulink模型拆分为多个任务,并生成可在计算机操作系统中运行的可执行程序文件,在多核CPU中进行并行运算,相比于采用并行工具箱在Simulink环境下进行Simulink模型仿真加速的方式,可显著加快Simulink模型多次仿真速度。例如,在实际的项目中,对于进行蒙特卡罗分析的Simulink模型,在Simulink环境下单次仿真耗时大约需要130s,如果该模型需要输入1000组不同的参数进行仿真,采用4核处理器,通过并行计算工具箱计算的耗时为:1000/4*130=32500(s)≈9.03(h)。采用本发明的方法,在计算机操作系统下单次计算耗时不到2s,完成1000次运算需要的时间为1000*2=2000(s)≈0.56h,即显著加快Simulink模型多次仿真速度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例提供的一种生成可执行程序文件的示意图;

图2为本发明实施例提供的一种Simulink模型仿真加速的流程图;

图3为本发明实施例提供的一种Simulink模型仿真加速装置的逻辑结构示意图。

具体实施方式

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

本发明介绍了将Simulink模型划分为多个任务后进行自动代码生成,同时通过MATLAB脚本文件自动化生成参数赋值代码文件、数据记录代码文件和程序调度代码文件,并自动集成编译生成可在计算机操作系统中运行的可执行程序文件,进而实现Simulink模型在计算机操作系统环境中的仿真,以加快模型多次仿真速度。

参见图1,为生成可执行程序文件的过程。即先在Simulink中对Simulink模型进行多核编程,且为Simulink模型进行并发执行配置,配置完成之后采用代码自动生成技术生成Simulink模型的代码文件,生成的代码文件在IDE(Integrated DevelopmentEnvironment,集成开发环境)软件中与其它代码进行集成编译生成可在计算机操作系统中运行的可执行程序文件。生成可执行程序文件的过程具体可包括以下内容:

(1)将Simulink模型的求解器配置为定步长求解器,且配置所述求解器以支持所述Simulink模型在目标架构下进行任务的并发执行。为了实现Simulink模型的代码文件的自动生成,需要将Simulink模型的求解器配置为定步长(Fixed-step)求解器,同时配置求解器的“Allow tasks to execute concurrently on target”选项以支持Simulink模型在目标架构下进行任务的并发执行。在一些具体实施例中,可以通过自定义的MATLAB脚本文件(即MATLAB程序)实现求解器的自动化配置;即在MATLAB脚本文件中写好对应的配置命令,在为Simulink模型进行并发执行配置时自动执行该MATLAB脚本文件实现自动化配置。

(2)指定部署Simulink模型的多核CPU的核心数量。现有采用并行计算工具箱加速Simulink模型仿真的技术方案是在Simulink环境下进行的,在本发明中,将Simulink模型生成代码文件,再将代码文件部署在计算机操作系统下运行。部署Simulink模型的多核CPU,即为部署代码文件的计算机的多核CPU。指定部署Simulink模型的多核CPU的核心数量,即定义包含可用于Simulink模型运行的核心数量的配置文件。

(3)将Simulink模型划分为N个任务,N为核心数量;并建立任务与多核CPU的核心的一一对应关系。对Simulink模型进行分区,分区是对Simulink模型的内容和层次结构按照需要进行排列,然后将排列好的各区域(即图1中的各函数)划分为各项任务,最后通过Simulink的并行执行面板将各个任务映射到多核CPU中的相应核心进行处理。例如,图1中,将任务1映射到核心1,将任务2映射到核心2,将任务3映射到核心3,将任务4映射到核心4。配置文件还包括分配到相应核心上的任务的代码生成属性;代码生成属性指的是指定任务调度规则,指定任务调度规则可以是基于设置的优先级也可以是轮询方式。在Simulink的并行面执行面板进行配置时,可以对代码生成属性进行选择或修改等设置,若不进行设置,则默认轮询方式。

(4)采用代码自动生成技术生成Simulink模型的代码文件。具体的,将Simulink模型解析为一个后缀为.rtw的模型描述文件;利用目标语言编译器将模型描述文件翻译为目标语言代码,目标语言代码为Simulink模型的代码文件。模型描述文件描述Simulink模型的全部配置和模块属性信息。目标语言为C语言时,目标语言代码为后缀为.c的源文件和.h的头文件。

(5)将Simulink模型的代码文件、参数赋值代码文件、数据记录代码文件和程序调度代码文件集成编译,并生成可在计算机操作系统中运行的可执行程序文件。计算机操作系统为Windows系统时,可执行程序文件为后缀为.exe的文件。

自动根据Simulink模型仿真的输入参数生成参数赋值代码文件,用于计算机操作系统下仿真的赋值;自动根据Simulink模型仿真记录的输出信号生成数据记录代码文件,用于计算机操作系统下仿真的数据记录;自动根据Simulink模型的仿真次数生成程序调度代码文件,用于计算机操作系统下仿真的程序调度。参数赋值代码文件、数据记录代码文件和程序调度代码文件的生成完全自动化完成,用于确保计算机操作系统下仿真结果与Simulink环境下仿真结果的一致性。仿真次数是指Simulink模型需要被运行的次数,程序调度文件控制生成的可执行程序文件运行完指定的次数后停止执行。

可通过调用编译器的make功能,把Simulink模型的代码文件、参数赋值代码文件、数据记录代码文件和程序调度代码文件等一起编译,然后链接,最终生成可执行文件。在一些具体实施例中,采用MATLAB脚本文件自动化配置Simulink Coder或EmbeddedCoder,采用ert.tlc模板联编文件方法,将Simulink模型的代码文件、参数赋值代码文件、数据记录代码文件和程序调度代码文件在Visual Studio中自动集成编译;最后,生成与Simulink模型一致的可用于计算机操作系统中运行的可执行程序文件。

针对在蒙特卡罗分析、参数扫描、模型测试、实验设计和模型优化中需要使用不同输入或参数设置来运行同一Simulink模型,包括上述参数赋值代码文件、数据记录代码文件和程序调度代码文件等三个外部代码文件即可实现本发明的内容。对于其它运用场景,外部代码文件还可以包括参数配置代码文件、函数接口配置代码文件和/或程序执行异常返回代码文件等,以实现相应的功能。

在计算机的多核CPU下将部署的可执行程序文件进行运行仿真,实现Simulink模型的仿真加速。本发明中拟在计算机操作系统下进行Simulink模型的仿真,只需在计算机操作系统下运行上述可执行程序文件即可。参见图2,为本实施例提供的一种Simulink模型仿真加速方法,即执行可执行程序文件时的执行具体过程,该方法包括以下步骤:

S21:获取预先生成的可在计算机操作系统中运行的可执行程序文件。

可执行程序文件由参数赋值代码文件、数据记录代码文件、程序调度代码文件和Simulink模型的代码文件集成编译而成。可执行程序文件包含参数赋值代码、数据记录代码、程序调度代码和Simulink模型的代码。

S22:根据预先设定的Simulink模型的任务与计算机的多核CPU的核心的对应关系,在运行可执行程序文件时,Simulink模型的各个任务运行在计算机的多核CPU的对应核心中。

S23:当运行可执行程序文件时,对于每次仿真,程序调用参数赋值代码读取本次仿真所需的输入参数并传递给运行的Simulink模型的代码,Simulink模型的代码运行完成得到运算结果,再调用数据记录代码将运算结果进行保存。

S24:程序调度代码判断仿真次数达到预设的次数阈值后,控制可执行程序文件停止执行。

本实施例提供的上述Simulink模型仿真加速方法,实现Simulink模型在计算机操作系统下的仿真加速,相比使用并行计算工具箱在Simulink环境下进行Simulink模型仿真加速,在对于规模较大Simulink模型使用不同输入或参数设置进行蒙特卡罗分析、参数扫描、模型测试、实验设计和模型优化时可显著加快仿真速度。

对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。

下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。

参见图3,为本实施例提供的一种Simulink模型仿真加速装置,该装置包括:获取单元31、任务分配单元32、仿真调度单元33和仿真停止单元34。

获取单元31,用于获取预先生成的可在计算机操作系统中运行的可执行程序文件;可执行程序文件包含参数赋值代码、数据记录代码、程序调度代码和Simulink模型的代码。

任务分配单元32,用于根据预先设定的Simulink模型的任务与计算机的多核CPU的核心的对应关系,在运行可执行程序文件时,Simulink模型的各个任务运行在计算机的多核CPU的对应核心中。

仿真调度单元33,用于当运行可执行程序文件时,对于每次仿真,程序调用参数赋值代码读取本次仿真所需的输入参数并传递给Simulink模型的代码,Simulink模型的代码运行完成得到运算结果,再调用数据记录代码将所述运算结果进行保存。

仿真停止单元34,用于程序调度代码判断仿真次数达到预设的次数阈值后,控制所述可执行程序文件停止执行。

在一些具体实施例中,Simulink模型仿真加速装置还包括文件生成单元。文件生成单元包括求解器配置子单元、目标架构指定子单元、模型分区子单元、映射子单元、代码生成子单元和集成编译子单元。

求解器配置子单元,用于将Simulink模型的求解器配置为定步长求解器,且配置求解器以支持Simulink模型在目标架构下进行任务的并发执行。

目标架构指定子单元,用于指定部署Simulink模型的多核CPU的核心数量。

模型分区子单元,用于将Simulink模型划分为N个任务,N为多核CPU的核心数量。

映射子单元,用于建立Simulink模型的任务与多核CPU的核心的一一对应关系。

代码生成子单元,用于采用代码自动生成技术生成Simulink模型的代码文件。

集成编译子单元,用于将Simulink模型的代码文件、参数赋值代码文件、数据记录代码文件和程序调度代码文件集成编译,并生成可在计算机操作系统中运行的可执行程序文件。

在一些具体实施例中,代码生成子单元,具体用于:将Simulink模型解析为一个后缀为.rtw的模型描述文件;利用目标语言编译器将该模型描述文件翻译为目标语言代码,目标语言代码为Simulink模型的代码文件。

在一些具体实施例中,求解器配置子单元,具体用于:利用MATLAB脚本文件将Simulink模型的求解器自动配置为定步长求解器,且自动配置求解器以支持Simulink模型在目标架构下进行任务的并发执行。

在一些具体实施例中,集成编译子单元,具体用于:利用MATLAB脚本文件对Simulink Coder或Embedded Coder进行自动配置,将Simulink模型的代码文件、参数赋值代码文件、数据记录代码文件和程序调度代码文件进行自动化集成编译,并生成可在计算机操作系统中运行的可执行程序文件。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

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

本说明书中各个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可,且本说明书中各实施例中记载的特征可以相互替换或者组合。

对本发明所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 一种Simulink模型仿真加速方法及装置
  • 一种机器人模拟器生成方法、机器人模型仿真方法及装置
技术分类

06120112985766