模型处理方法、仿真平台及电子设备和存储介质与流程

未命名 08-02 阅读:80 评论:0


1.本技术涉及仿真技术领域,更具体地说,涉及一种模型处理方法、仿真平台及电子设备和存储介质。


背景技术:

2.在系统开发过程中,会存在不同的部门承接系统的不同功能模块的情况,为了不同的部门开发的功能模块能够进行联合仿真,需要不同部门开发功能模块时使用统一的仿真平台,或者,不同部门开发功能模块时可以使用不同的仿真平台,但是需要将基于一个仿真平台开发的模型导出成另一个仿真平台能够支持的文件,将该文件导入到另一个仿真平台,从而实现不同功能模块的联合仿真。比如,为了将基于仿真平台gckontrol建立的模型导入到仿真平台simulink中,需要把基于gckontrol搭建的模型导出成符合fmi(functional mock-up interface)标准的fmu文件,再把这个fmu(functional mock-up unit)文件导入到simulink中进行仿真。然而,由于版本不同,低版本的simulink可能不支持fmu文件,这就无法实现gckontrol中的模型与simulink中模型的联合仿真。


技术实现要素:

3.本技术提供一种模型处理方法、仿真平台及电子设备和存储介质,包括如下技术方案:一种模型处理方法,应用于第一仿真平台,所述方法包括:获得针对第一仿真模型的封装指令;在获得所述第一仿真模型的参数后,读取第一函数模板;所述第一函数模板是通过在第二仿真平台提供的第二函数模板中填加多个目标函数和多个标记信息得到;任一目标函数是所述第一仿真平台中的模型运行所需的基础函数,任一标记信息表征其所在位置处用于填加所述任一标记信息表征的与所述第一仿真模型对应的目标信息;将所述第一函数模板中的各个标记信息替换为所述标记信息表征的与所述第一仿真模型对应的目标信息,并将所述第一函数模板中的特定位置的内容修改为与所述第一仿真模型相对应,得到与所述第一仿真模型对应的适用于所述第二仿真平台的函数主文件;至少将所述函数主文件、所述第一仿真模型的代码文件、所述第一仿真模型运算所需的算法库存储到目标文件夹,得到适用于所述第二仿真平台的系统函数文件;所述目标文件夹中还包括与所述第一仿真模型对应的增加参数命令集合和编译命令集合;所述增加参数命令集合在所述第二仿真平台运行时用于加载所述第一仿真模型的参数,所述编译命令集合在所述第二仿真平台运行时用于将所述代码文件和所述算法库中的算法文件编译为所述第二仿真平台能够识别的可执行文件。
4.上述方法,可选的,与所述第一仿真模型对应的目标信息至少包括:所述第一仿真模型的代码文件的标识;
所述第一仿真模型的输入个数、输出个数、参数个数;所述第一仿真模型的初始化函数定义;执行所述第一仿真模型的每个步骤的执行步函数所调用的接口函数;所述第一仿真模型的输入端口的维度信息和输出端口的维度信息;适用于所述第二仿真平台的参数传递函数,用于将所述第二仿真平台的输入端口接收的参数传递给所述函数主文件,将所述函数主文件输出的参数传递给所述第二仿真平台的输出端口。
5.上述方法,可选的,与所述第一仿真模型对应的目标信息还包括:所述第一仿真平台的版权信息。
6.上述方法,可选的,所述增加参数命令集合和编译命令集合由所述第一仿真平台的操作者添加到所述目标文件夹中。
7.上述方法,可选的,还包括:按照预置的增加参数命令集合模板,将所述第一仿真模型的参数添加到所述增加参数命令集合模板中,得到所述增加参数命令集合;按照预置的编译命令集合模板,将所述第一仿真模型的代码文件和所述算法库中的算法文件添加到所述编译命令集合模板中,得到所述编译命令集合;将所述增加参数命令集合和编译命令集合添加到所述目标文件夹中。
8.上述方法,可选的,所述第一仿真模型的代码文件为c语言代码文件。
9.上述方法,可选的,所述第二仿真平台为simulink仿真平台。
10.一种仿真平台,所述仿真平台为第一仿真平台,所述第一仿真平台包括:获得模块,用于获得针对第一仿真模型的封装指令;读取模块,用于在获得所述第一仿真模型的参数后,读取第一函数模板;所述第一函数模板是通过在第二仿真平台提供的第二函数模板中填加多个目标函数和多个标记信息得到;任一目标函数是所述第一仿真平台中的模型运行所需的基础函数,任一标记信息表征其所在位置处用于填加所述任一标记信息表征的与所述第一仿真模型对应的目标信息;替换模块,用于将所述第一函数模板中的各个标记信息替换为所述标记信息表征的与所述第一仿真模型对应的目标信息,并将所述第一函数模板中的特定位置的内容修改为与所述第一仿真模型相对应,得到与所述第一仿真模型对应的适用于所述第二仿真平台的函数主文件;存储模块,用于至少将所述函数主文件、所述第一仿真模型的代码文件、所述第一仿真模型运算所需的算法库存储到目标文件夹,得到适用于所述第二仿真平台的系统函数文件;所述目标文件夹中还包括与所述第一仿真模型对应的增加参数命令集合和编译命令集合;所述增加参数命令集合在所述第二仿真平台运行时用于加载所述第一仿真模型的参数,所述编译命令集合在所述第二仿真平台运行时用于将所述代码文件和所述算法库中的算法文件编译为所述第二仿真平台能够识别的可执行文件。
11.一种电子设备,包括:存储器,用于存储程序;
处理器,用于调用并执行所述存储器中的所述程序,通过执行所述程序实现如上任一项所述的模型处理方法的各个步骤。
12.一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上任一项所述的模型处理方法的各个步骤。
13.通过以上方案可知,本技术提供的一种模型处理方法、仿真平台及电子设备和存储介质,响应于针对第一仿真模型的封装指令,在获得第一仿真模型的参数后,读取第一函数模板;第一函数模板是通过在第二仿真平台提供的第二函数模板中填加多个目标函数和多个标记信息得到;任一目标函数是第一仿真平台中的模型运行所需的通用函数,任一标记信息所在位置处用于填加任一标记信息表征的与第一仿真模型对应的目标信息;将第一函数模板中的各个标记信息替换为标记信息表征的与第一仿真模型对应的目标信息,得到与第一仿真模型对应的适用于第二仿真平台的函数主文件;至少将函数主文件、第一仿真模型的代码文件、第一仿真模型运算所需的算法库存储到目标文件夹,得到适用于第二仿真平台的系统函数文件;目标文件夹中还包括与第一仿真模型对应的增加参数命令集合和编译命令集合;增加参数命令集合在第二仿真平台运行时用于增加第一仿真模型的参数,编译命令集合在第二仿真平台运行时用于将代码文件和算法库中的算法文件编译为第二仿真平台能够识别的可执行文件。基于本技术实现了将第一仿真平台的仿真模型封装为第二仿真平台能够运行的系统函数文件的目的,从而提高了第一仿真平台的通用性,避免因第二仿真平台不支持特定标准的文件而导致的第一仿真平台和第二仿真平台无法联合仿真的问题。
附图说明
14.为了更清楚地说明本技术实施例的技术方案,下面将对实施例所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
15.图1为本技术实施例提供的模型处理方法的一种实现流程图;图2为本技术实施例提供的gckontrol仿真平台的交互界面的示例图;图3为本技术实施例提供的用户在图2所示界面上针对第一交互接口执行预设操作后,第一仿真平台显示的参数配置界面的一种示例图;图4为本技术实施例提供的用户在图3所示界面上单击“s-function配置”这个第二交互接口后显示的界面示意图;图5a-5f为本技术实施例提供的第一函数模板的一种示例图;图6-11为本技术实施例提供的各种标记信息对应的目标信息的示例;图12为本技术实施例提供的基于图2所示第一仿真模型生成的系统函数文件的示例图;图13为本技术实施例提供的增加参数命令集合的一种示例图;图14为本技术实施例提供的编译命令集合的一种示例图;图15为本技术实施例提供的在matlab的命令行窗口中运行addparam.m文件和compile.m文件的示例;图16为本技术实施例提供的在simulink仿真平台中导入系统函数文件sfcn_gcka
后的应用示例;图17为本技术实施例提供的第一仿真平台的一种结构示意图;图18为本技术实施例提供的电子设备的一种结构示意图。
16.说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的部分,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例,能够以除了在这里图示的以外的顺序实施。
具体实施方式
17.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
18.本技术实施例提供的模型处理方法用于仿真平台中,为便于叙述,将该仿真平台记为第一仿真平台,作为示例,第一仿真平台可以是gckontrol仿真平台,当然,也可以是其它仿真平台,只要能实现本技术的模型处理方法即可。
19.本技术实施例提供的模型处理方法的一种实现流程图如图1所示,可以包括:步骤s101:获得针对第一仿真模型的封装指令。
20.第一仿真模型是在第一仿真平台中的搭建的模型,该第一仿真模型可以是用户实时搭建的,也可以是从第一仿真平台的模型库中选择的预先搭建好的模型。
21.第一仿真平台可以在交互界面中提供第一交互接口,用户在搭建或选择第一仿真模型后,第一仿真平台在交互界面显示第一仿真模型,用户可以针对第一交互接口执行预设操作(比如,单击),从而触发第一仿真平台生成并获得针对第一仿真模型的封装指令,该封装指令指示第一仿真平台将第一仿真模型封装为第二仿真平台能够支持的系统函数文件。
22.如图2所示,为本技术实施例提供的gckontrol仿真平台的交互界面的示例图。该示例图中,矩形框(矩形框是本技术为了方便叙述而添加的标记)中的仿真模型为用户搭建的模型,“生成s函数”这一控件即为第一交互接口,用户通过单击“生成s函数”这个控件,即可触发gckontrol仿真平台生成针对图2所显示的仿真模型的封装指令,该封装指令指示将图2所显示的仿真模型封装为simulink仿真平台支持的s-function,即系统函数文件。本技术中的第二仿真平台可以是simulink仿真平台,也可以是其它仿真平台。
23.步骤s102:在获得第一仿真模型的参数后,读取第一函数模板。
24.第一函数模板是通过在第二仿真平台提供的第二函数模板中填加多个目标函数和多个标记信息得到;任一目标函数是第一仿真平台中的模型运行所需的基础函数,任一标记信息表征其所在位置处用于填加该任一标记信息表征的与第一仿真模型对应的目标信息。
25.进一步的,为了第一仿真平台更准确的使用第一函数模板,不同位置处的标记信息可以表征不同的含义,比如,在目标位置处的标记信息表征需要完善其关联的函数,目标位置处的标记信息关联的函数可以是该标记信息下方紧邻该标记信息的函数。而在非目标
位置处的标记信息表征其所在位置处用于填加该标记信息表征的与第一仿真模型对应的目标信息。
26.第一仿真模型的参数是指第一仿真模型运行所需要的参数,属于全局参数。
27.响应于上述封装指令,第一仿真平台可以直接读取第一仿真模型的参数。或者,第一仿真平台可以显示参数配置界面,由用户在参数配置界面选择或填写第一仿真模型的参数并提交,使得第一仿真平台获得第一仿真模型的参数。在一可选的实施中,第一仿真平台可以响应于上述封装指令,获取第一仿真模型的所有参数并显示在参数配置界面,由用户选择并提交参数。
28.如图3所示,为本技术实施例提供的,用户在图2所示界面上针对第一交互接口“生成s函数”执行预设操作后,第一仿真平台显示的参数配置界面的一种示例图,该示例中,“global参数”表征第一仿真模型的参数,由于第一仿真模型只有一个参数parameter_01,因此,中间的框中只显示了parameter_01这一个参数,用户在勾选parameter_01这个参数前边的勾选框,并点击指向右的箭头后,parameter_01这个参数就会映射到右边的框中,在右边的框中,第一仿真平台将parameter_01这个参数映射为s-function的参数root_parameter_01。
29.此外,在参数配置界面,还可以配置基于第一仿真模型封装得到的适用于第二仿真平台的系统函数文件的属性信息,包括但不限于:名称、作者、导出路径、描述等。可选的,第一仿真平台可以响应于针对参数配置界面上的第二交互接口(如图3所示的“s-function配置”)的预设操作(比如,单击),显示属性配置界面。
30.如图4所示,为本技术实施例提供的,用户在图3所示界面上单击“s-function配置”这个第二交互接口后显示的界面示意图,在该界面,用户可以编辑函数名称、作者、导出位置、对基于第一仿真模型封装得到的适用于第二仿真平台的系统函数文件的描述信息等。
31.以第二仿真平台为simulink仿真平台为例,simulink仿真平台提供了一个level-2 s-function 的c语言模板,即sfuntmpl_basic.c。可以将这个c语言模板sfuntmpl_basic.c作为本技术的第二函数模板;通过在这个c语言模板中加多个目标函数和多个标记信息得到第一函数模板。
32.本技术研究发现,不同的功能模型在运行时会调用相同的基础函数,但是不同的功能模型的基础函数的具体内容可能会存在差异,另外,不同的功能模型除了会调用相同的基础函数,也会存在各自需要调用的个性化函数。基于此,研发相关人员可以分析出不同的功能模型运行所需的基础函数添加到第二函数模板中的相应位置,分析在不同功能模型下会发生变化的内容(包括个性化函数,以及基础函数中会发生变化的内容),做好标记,得到适用于simulink仿真平台的模板,即上述第一函数模板。
33.如图5a-5f所示,为本技术实施例提供的第一函数模板的一种局部示例图,该示例图中的标记信息为“todo:xxxxxx”格式的标记,比如,/todo: aaacompany copyright/等,可以简称为todo标记。其中的第17行、23-41行、46-59行、61-79行、81-96行、98-101行、117行、120行、129-150行153行、157-172行、174-176行、189行、191行为基础函数。
34.步骤s103:基于第一函数模板得到适用于第二仿真平台的函数主文件,具体包括:将第一函数模板中的各个标记信息替换为标记信息表征的与第一仿真模型对应的目标信
息,并将所述第一函数模板中的特定位置的内容修改为与所述第一仿真模型相对应,得到与第一仿真模型对应的适用于第二仿真平台的函数主文件。
35.假设图2显示的仿真模型gcka.c为第一仿真模型,下面以图5a-5f中所示的todo标记为例,说明将第一函数模板中的各个标记信息替换为标记信息表征的与第一仿真模型对应的目标信息的方式。其中,标记信息/todo:aaacompany copyright/:指示生成版权信息、模型介绍、版本信息和时间,替换该标记信息的目标信息如图6所示,也就是说,用图6所示的目标信息替代“/todo:aaacompany copyright/”。
36.标记信息/todo:include/:指示添加s-function所依赖的文件,即专属于第一仿真模型的文件,示例中是“gcodelink_gcka.c”,这个文件是第一仿真平台基于仿真模型gcka.c自动生成的,其中包含了仿真模型gcka.c的运算逻辑。替换该标记信息的目标信息如图7所示,也就是说,用图7所示的目标信息替代“/todo:include/”。
37.标记信息/todo:#define gck_input_num andgck_output_num/:指示s-function具有的输入个数和输出个数。图2所示示例中,有3个输入,3个输出。替换该标记信息的目标信息如图8前两行所示,也就是说,用图8前两行所示的目标信息替代“/todo:#define gck_input_num and gck_output_num/”。
38.标记信息/todo:#define gck_param_num/:指示s-function具有的参数个数。替换该标记信息的目标信息如图8第三行所示,也就是说,用图8第三行所示的目标信息替代“/todo:#define gck_param_num/”。
39.标记信息/todo:define gck_init function/:指示添加仿真模型gcka.c的初始化函数gck_init()定义,它调用的init_gcka()来自上面include的gcodelink_gcka.c。替换该标记信息的目标信息如图9所示,也就是说,用图9所示的目标信息替代“/todo:define gck_init function/”。
40.标记信息/todo:define gck_dostep function/:指示完善gck_dostep函数定义,gck_dostep函数用于调用dostep_gcka接口函数,此接口函数来自上面include的gcodelink_gcka.c,是第一仿真平台中的模型进行每一步仿真必须调用的接口没调用一次,就会做一步仿真计算。需要完善的地方用如下标记信息指示:/todo: dostep_1(kontrol_step_size);/,替换该标记信息的目标信息如下所示:dostep_gcka(kontrol_step_size);也就是说,,也就是说,用“dostep_gcka(kontrol_step_size);”这个目标信息替代“/todo: dostep_1(kontrol_step_size);/”,而“/todo:define gck_dostep function/”这个标记信息会被删除。
41.标记信息/todo:define int g_inputvarsize[gck_input_num][2]/:指示从第一仿真模型中拿出输入端口的维度信息,定义成数组,在图2所示示例中,第一仿真模型的输入是标量,所以写成{1,1},替换该标记信息的目标信息如图10所示的前5行,也就是说,用图10前5行所示的目标信息替代“/todo:define int g_inputvarsize[gck_input_num][2]/”。如果第一仿真模型的输入是矩阵,比如,第一仿真模型的输入是n
×
m大小的矩阵,则第一仿真的输入端口的维度信息写成{n,m}。
[0042]
标记信息/todo:define int g_outputvarsize[gck_output_num][2]/:指示从第一仿真模型中拿出输出端口的维度信息,定义成数组,在图2所示示例中,第一仿真模型的输出是标量,所以写成{1,1},替换该标记信息的目标信息如图10所示的后4行,也就是说,用图10后4行所示的目标信息替代“/todo:define int g_outputvarsize[gck_output_num][2]/”。如果第一仿真模型的输出是矩阵,比如,第一仿真模型的输出是i
×
j大小的矩阵,则第一仿真的输出端口的维度信息写成{i,j}。
[0043]
标记信息/todo:define mdloutputs function/:指示定义s-function的参数传递函数,比如simulink中的mdloutputs函数,该函数的作用是在simulink仿真平台中运行步骤s104中得到的适用于第二仿真平台的系统函数文件(记为gcka-s-function)时,要把simulink中的input端口的值给到适用于第二仿真平台的系统函数文件的输入端口,执行gck_dostep()运算之后,再把结果给到simulink的output端口。替换该标记信息的目标信息如图11所示,也就是说,用图11所示的目标信息替代“/todo:define mdloutputs function/”。
[0044]
另外,还可以将第一函数模板中一些特定位置处的内容对应第一仿真模型进行修改,比如,位于第8行的sfcn_tmpl,需要与图4中定义的s函数名sfcn_gcka一致,比如,位于第118行的gck_param_num、位于第128行的gck_input_num、位于第141行的括号中的i和&di、位于第152行的括号中的i、位于第155行的gck_output_num、位于第173行的括号中的i等需要与第一仿真模型对应。具体可以根据预设的对应规则将第一函数模板中一些特定位置处的内容修改为与第一仿真模型相对应。
[0045]
步骤s104:至少将函数主文件、第一仿真模型的代码文件、第一仿真模型运算所需的算法库存储到目标文件夹,得到适用于第二仿真平台的系统函数文件。
[0046]
目标文件夹中还包括与第一仿真模型对应的增加参数命令集合和编译命令集合;增加参数命令集合在第二仿真平台运行时用于加载第一仿真模型的参数,编译命令集合在第二仿真平台运行时用于将代码文件和算法库中的算法文件编译为第二仿真平台能够识别的可执行文件。
[0047]
其中的增加参数命令集合和编译命令结合可以是人为添加到目标文件夹中的,也可以是由第一仿真平台添加到目标文件夹中的。
[0048]
如图12所示,为本技术实施例提供的基于图2所示第一仿真模型生成的系统函数文件的示例图,该示例中,系统函数文件命名为sfcn_gcka。其中,名称为libs的文件夹为第一仿真模型运算所需的算法库,名称为addparam.m的文件为增加参数命令集合,名称为compile.m的文件为编译命令集合;名称为gcodelink_gcka.c、gcodelink_gcka.h、gcodelink_gcka_interface.h、gcodelink_gcka_stugbs.c的文件是第一仿真模型的代码文件,名称为sfcn_gcka.c的文件是与第一仿真模型对应的适用于第二仿真平台的函数主文件。
[0049]
本技术实施例提供的模型处理方法,实现了将第一仿真平台的仿真模型封装为第二仿真平台能够运行的系统函数文件的目的,从而提高了第一仿真平台的通用性,避免因第二仿真平台不支持特定标准的文件而导致的第一仿真平台和第二仿真平台无法联合仿真的问题。
[0050]
在一可选的实施例中,上述与第一仿真模型对应的目标信息至少可以包括:
第一仿真模型的代码文件的标识,例如上述的gcodelink_gcka.c;第一仿真模型的代码文件可以是c语言代码文件。当然第一仿真模型的代码文件也可以是其它语言的代码文件,此时,需要第二仿真平台提供与第一仿真模型的代码文件使用相同语言的第二函数模板。
[0051]
第一仿真模型的输入个数、输出个数、参数个数;第一仿真模型的初始化函数定义,例如上述的初始化函数gck_init()定义;执行第一仿真模型的每个步骤的执行步函数(dostep函数)所调用的接口函数,比如上述的dostep_gcka接口函数;第一仿真模型的输入端口的维度信息和输出端口的维度信息;适用于第二仿真平台的参数传递函数,比如,上述的mdloutputs函数,用于将第二仿真平台的输入端口接收的参数传递给函数主文件,将函数主文件输出的参数传递给第二仿真平台的输出端口。
[0052]
在一可选的实施例中,与第一仿真模型对应的目标信息还可以包括:第一仿真平台的版权信息。
[0053]
在一可选的实施例中,上述增加参数命令集合和编译命令集合由第一仿真平台的操作者添加到目标文件夹中。
[0054]
在一可选的实施例中,在增加参数命令集合和编译命令集合由第一仿真平台生成并添加到目标文件夹中的情况下,本技术的模型处理方法还可以包括:第一仿真平台按照预置的增加参数命令集合模板,将第一仿真模型的参数(比如图3所示的root_parameter_01)添加到增加参数命令集合模板中,得到增加参数命令集合。如图13所示,为本技术实施例提供的增加参数命令集合的一种示例图。
[0055]
第一仿真平台按照预置的编译命令集合模板,将第一仿真模型的代码文件名和算法库中的算法文件名添加到编译命令集合模板中,得到编译命令集合。如图14所示,为本技术实施例提供的编译命令集合的一种示例图。
[0056]
上述至少将函数主文件、第一仿真模型的代码文件、第一仿真模型运算所需的算法库存储到目标文件夹,包括:将函数主文件、第一仿真模型的代码文件、第一仿真模型运算所需的算法库、增加参数命令集合和编译命令集合存储到目标文件夹。
[0057]
生成增加参数命令集合和编译命令集合的目的是,在第二仿真平台中执行上述系统函数文件时,直接运行这两个集合,就可以完成系统函数的编译和依赖参数添加,简化操作步骤。
[0058]
下面说明将上述适用于第二仿真平台的系统函数文件导入第二仿真平台后,第二仿真平台调度系统函数的流程:第二仿真平台中导入上述系统函数文件后,第二仿真平台通过命令行窗口接收输入的针对编译命令集合的执行指令,响应于该执行指令,执行编译命令集合,以完成系统函数的编译,得到可执行文件。
[0059]
第二仿真平台通过命令行窗口接收输入的针对增加参数命令集合的执行指令,响应于该执行指令,执行增加参数命令集合,以添加系统函数的依赖参数。
[0060]
编译命令集合和增加参数命令集合的执行顺序不做限定,可以先执行编译命令集
合,再执行增加参数命令集合,或者,先执行增加参数命令集合,再执行编译命令集合。
[0061]
第二仿真平台获得针对上述系统函数文件的运行指令,响应于该运行指令,运行上述可执行文件,得到第一仿真模型对应的仿真结果。
[0062]
具体的,第二仿真平台在调用内置初始化函数结束后,判断当前仿真时间是否在期望仿真的时长内,如果判断结果为否,则结束,如果判断结果为是,则调用参数传递函数,以便将第二仿真平台的输入端口接收的参数,以及第一仿真模型的参数传递给可执行文件,将可执行文件输出的参数传递给第二仿真平台的输出端口。
[0063]
下面以第二仿真平台为simulink仿真平台为例,说明将上述适用于第二仿真平台的系统函数文件导入simulink仿真平台后,simulink仿真平台调度系统函数的流程:用户将上述从gckontrol仿真平台导出的系统函数文件sfcn_gcka导入simulink仿真平台;用户通过命令行窗口提交用于执行编译命令集合的执行指令,simulink仿真平台响应于该执行指令,执行编译命令集合,以完成系统函数的编译,得到可执行文件。
[0064]
用户通过命令行窗口提交用于执行增加参数命令集合的执行指令,simulink仿真平台响应于该执行指令,执行增加参数命令集合,以完成系统函数的依赖参数的添加。
[0065]
如图15所示,为本技术实施例提供的在matlab的命令行窗口中运行addparam.m文件和compile.m文件的示例。
[0066]
用户触发simulink仿真平台生成针对系统函数文件sfcn_gcka的运行指令;simulink仿真平台响应于上述运行指令,调用内置函数mdllnitializesizes,以初始化上述系统函数文件sfcn_gcka,包括::设置参数个数并校验;设置输入个数;配置输入端口的维度信息;配置输出端口的维度信息;配置输入和输出的关系,图2所示示例中,输入和输出的关系为直通;配置输出个数;调用gck_init()。
[0067]
simulink仿真平台判断当前仿真时间是否在期望仿真的时长内,如果判断结果为否,则结束,如果判断结果为是,则调用mdloutputs函数,以对可执行文件进行仿真运算,mdloutputs函数会获取simulink仿真平台的输入端口的值,获取simulink仿真平台的参数值,将获得的输入端口的值和参数值赋值给gcka模型的输入和参数,调用gcka模型的gck_dostep()接口进行运算,把运算结果赋值给simulink仿真平台的输出端口。
[0068]
如图16所示,为本技术实施例提供的在simulink仿真平台中导入系统函数文件sfcn_gcka后的应用示例。
[0069]
与方法实施例相对应,本技术实施例还提供一种仿真平台,为便于叙述,将该仿真平台记为第一仿真平台,本技术实施例提供的第一仿真平台的一种结构示意图如图17所示,可以包括:获得模块1701,读取模块1702,替换模块1703和存储模块1704;其中,获得模块1701用于获得针对第一仿真模型的封装指令;
读取模块1702用于在获得所述第一仿真模型的参数后,读取第一函数模板;所述第一函数模板是通过在第二仿真平台提供的第二函数模板中填加多个目标函数和多个标记信息得到;任一目标函数是所述第一仿真平台中的模型运行所需的基础函数,任一标记信息表征其所在位置处用于填加所述任一标记信息表征的与所述第一仿真模型对应的目标信息;替换模块1703用于将所述第一函数模板中的各个标记信息替换为所述标记信息表征的与所述第一仿真模型对应的目标信息,并将所述第一函数模板中的特定位置的内容修改为与所述第一仿真模型相对应,得到与所述第一仿真模型对应的适用于所述第二仿真平台的函数主文件;存储模块1704用于至少将所述函数主文件、所述第一仿真模型的代码文件、所述第一仿真模型运算所需的算法库存储到目标文件夹,得到适用于所述第二仿真平台的系统函数文件;所述目标文件夹中还包括与所述第一仿真模型对应的增加参数命令集合和编译命令集合;所述增加参数命令集合在所述第二仿真平台运行时用于加载所述第一仿真模型的参数,所述编译命令集合在所述第二仿真平台运行时用于将所述代码文件和所述算法库中的算法文件编译为所述第二仿真平台能够识别的可执行文件。
[0070]
本技术实施例提供的仿真平台,实现了将第一仿真平台的仿真模型封装为第二仿真平台能够运行的系统函数文件的目的,从而提高了第一仿真平台的通用性,避免因第二仿真平台不支持特定标准的文件而导致的第一仿真平台和第二仿真平台无法联合仿真的问题。
[0071]
在一可选的实施例中,与所述第一仿真模型对应的目标信息至少包括:所述第一仿真模型的代码文件的标识;所述第一仿真模型的输入个数、输出个数、参数个数;所述第一仿真模型的初始化函数定义;执行所述第一仿真模型的每个步骤的执行步函数所调用的接口函数;所述第一仿真模型的输入端口的维度信息和输出端口的维度信息;适用于所述第二仿真平台的参数传递函数,用于将所述第二仿真平台的输入端口接收的参数传递给所述函数主文件,将所述函数主文件输出的参数传递给所述第二仿真平台的输出端口。
[0072]
在一可选的实施例中,与所述第一仿真模型对应的目标信息还包括:所述第一仿真平台的版权信息。
[0073]
在一可选的实施例中,所述增加参数命令集合和编译命令集合由所述第一仿真平台的操作者添加到所述目标文件夹中。
[0074]
在一可选的实施例中,所述存储模块1704还用于:按照预置的增加参数命令集合模板,将所述第一仿真模型的参数添加到所述增加参数命令集合模板中,得到所述增加参数命令集合;按照预置的编译命令集合模板,将所述第一仿真模型的代码文件和所述算法库中的算法文件添加到所述编译命令集合模板中,得到所述编译命令集合;将所述增加参数命令集合和编译命令集合添加到所述目标文件夹中。
[0075]
在一可选的实施例中,所述第一仿真模型的代码文件为c语言代码文件。
[0076]
在一可选的实施例中,所述第二仿真平台为simulink仿真平台。
[0077]
与方法实施例相对应,本技术还提供一种电子设备,该电子设备的一种结构示意图如图18所示,可以包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4。
[0078]
在本技术实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信。
[0079]
处理器1可能是一个中央处理器cpu,或者是特定集成电路asic(application specific integrated circuit),或者是被配置成实施本技术实施例的一个或多个集成电路等。
[0080]
存储器3可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory)等,例如至少一个磁盘存储器。
[0081]
其中,存储器3存储有程序,处理器1可调用存储器3存储的程序,所述程序用于:获得针对第一仿真模型的封装指令;在获得所述第一仿真模型的参数后,读取第一函数模板;所述第一函数模板是通过在第二仿真平台提供的第二函数模板中填加多个目标函数和多个标记信息得到;任一目标函数是所述第一仿真平台中的模型运行所需的基础函数,任一标记信息表征其所在位置处用于填加所述任一标记信息表征的与所述第一仿真模型对应的目标信息;将所述第一函数模板中的各个标记信息替换为所述标记信息表征的与所述第一仿真模型对应的目标信息,并将所述第一函数模板中的特定位置的内容修改为与所述第一仿真模型相对应,得到与所述第一仿真模型对应的适用于所述第二仿真平台的函数主文件;至少将所述函数主文件、所述第一仿真模型的代码文件、所述第一仿真模型运算所需的算法库存储到目标文件夹,得到适用于所述第二仿真平台的系统函数文件;所述目标文件夹中还包括与所述第一仿真模型对应的增加参数命令集合和编译命令集合;所述增加参数命令集合在所述第二仿真平台运行时用于加载所述第一仿真模型的参数,所述编译命令集合在所述第二仿真平台运行时用于将所述代码文件和所述算法库中的算法文件编译为所述第二仿真平台能够识别的可执行文件。
[0082]
可选的,所述程序的细化功能和扩展功能可参照上文描述。
[0083]
本技术实施例还提供一种存储介质,该存储介质可存储有适于处理器执行的程序,所述程序用于:获得针对第一仿真模型的封装指令;在获得所述第一仿真模型的参数后,读取第一函数模板;所述第一函数模板是通过在第二仿真平台提供的第二函数模板中填加多个目标函数和多个标记信息得到;任一目标函数是所述第一仿真平台中的模型运行所需的基础函数,任一标记信息表征其所在位置处用于填加所述任一标记信息表征的与所述第一仿真模型对应的目标信息;将所述第一函数模板中的各个标记信息替换为所述标记信息表征的与所述第一仿真模型对应的目标信息,并将所述第一函数模板中的特定位置的内容修改为与所述第一仿真模型相对应,得到与所述第一仿真模型对应的适用于所述第二仿真平台的函数主文
件;至少将所述函数主文件、所述第一仿真模型的代码文件、所述第一仿真模型运算所需的算法库存储到目标文件夹,得到适用于所述第二仿真平台的系统函数文件;所述目标文件夹中还包括与所述第一仿真模型对应的增加参数命令集合和编译命令集合;所述增加参数命令集合在所述第二仿真平台运行时用于加载所述第一仿真模型的参数,所述编译命令集合在所述第二仿真平台运行时用于将所述代码文件和所述算法库中的算法文件编译为所述第二仿真平台能够识别的可执行文件。
[0084]
可选的,所述程序的细化功能和扩展功能可参照上文描述。
[0085]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0086]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0087]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0088]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0089]
应当理解,本技术实施例中,从权、各个实施例、特征可以互相组合结合,都能实现解决前述技术问题。
[0090]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0091]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

技术特征:
1.一种模型处理方法,其特征在于,应用于第一仿真平台,所述方法包括:获得针对第一仿真模型的封装指令;在获得所述第一仿真模型的参数后,读取第一函数模板;所述第一函数模板是通过在第二仿真平台提供的第二函数模板中填加多个目标函数和多个标记信息得到;任一目标函数是所述第一仿真平台中的模型运行所需的基础函数,任一标记信息表征其所在位置处用于填加所述任一标记信息表征的与所述第一仿真模型对应的目标信息;将所述第一函数模板中的各个标记信息替换为所述标记信息表征的与所述第一仿真模型对应的目标信息,并将所述第一函数模板中的特定位置的内容修改为与所述第一仿真模型相对应,得到与所述第一仿真模型对应的适用于所述第二仿真平台的函数主文件;至少将所述函数主文件、所述第一仿真模型的代码文件、所述第一仿真模型运算所需的算法库存储到目标文件夹,得到适用于所述第二仿真平台的系统函数文件;所述目标文件夹中还包括与所述第一仿真模型对应的增加参数命令集合和编译命令集合;所述增加参数命令集合在所述第二仿真平台运行时用于加载所述第一仿真模型的参数,所述编译命令集合在所述第二仿真平台运行时用于将所述代码文件和所述算法库中的算法文件编译为所述第二仿真平台能够识别的可执行文件。2.根据权利要求1所述的方法,其特征在于,与所述第一仿真模型对应的目标信息至少包括:所述第一仿真模型的代码文件的标识;所述第一仿真模型的输入个数、输出个数、参数个数;所述第一仿真模型的初始化函数定义;执行所述第一仿真模型的每个步骤的执行步函数所调用的接口函数;所述第一仿真模型的输入端口的维度信息和输出端口的维度信息;适用于所述第二仿真平台的参数传递函数,用于将所述第二仿真平台的输入端口接收的参数传递给所述函数主文件,将所述函数主文件输出的参数传递给所述第二仿真平台的输出端口。3.根据权利要求2所述的方法,其特征在于,与所述第一仿真模型对应的目标信息还包括:所述第一仿真平台的版权信息。4.根据权利要求1所述的方法,其特征在于,所述增加参数命令集合和编译命令集合由所述第一仿真平台的操作者添加到所述目标文件夹中。5.根据权利要求1所述的方法,其特征在于,还包括:按照预置的增加参数命令集合模板,将所述第一仿真模型的参数添加到所述增加参数命令集合模板中,得到所述增加参数命令集合;按照预置的编译命令集合模板,将所述第一仿真模型的代码文件和所述算法库中的算法文件添加到所述编译命令集合模板中,得到所述编译命令集合;将所述增加参数命令集合和编译命令集合添加到所述目标文件夹中。6.根据权利要求1所述的方法,其特征在于,所述第一仿真模型的代码文件为c语言代码文件。7.根据权利要求1所述的方法,其特征在于,所述第二仿真平台为simulink仿真平台。
8.一种仿真平台,所述仿真平台为第一仿真平台,其特征在于,所述第一仿真平台包括:获得模块,用于获得针对第一仿真模型的封装指令;读取模块,用于在获得所述第一仿真模型的参数后,读取第一函数模板;所述第一函数模板是通过在第二仿真平台提供的第二函数模板中填加多个目标函数和多个标记信息得到;任一目标函数是所述第一仿真平台中的模型运行所需的基础函数,任一标记信息表征其所在位置处用于填加所述任一标记信息表征的与所述第一仿真模型对应的目标信息;替换模块,用于将所述第一函数模板中的各个标记信息替换为所述标记信息表征的与所述第一仿真模型对应的目标信息,并将所述第一函数模板中的特定位置的内容修改为与所述第一仿真模型相对应,得到与所述第一仿真模型对应的适用于所述第二仿真平台的函数主文件;存储模块,用于至少将所述函数主文件、所述第一仿真模型的代码文件、所述第一仿真模型运算所需的算法库存储到目标文件夹,得到适用于所述第二仿真平台的系统函数文件;所述目标文件夹中还包括与所述第一仿真模型对应的增加参数命令集合和编译命令集合;所述增加参数命令集合在所述第二仿真平台运行时用于加载所述第一仿真模型的参数,所述编译命令集合在所述第二仿真平台运行时用于将所述代码文件和所述算法库中的算法文件编译为所述第二仿真平台能够识别的可执行文件。9.一种电子设备,其特征在于,包括:存储器,用于存储程序;处理器,用于调用并执行所述存储器中的所述程序,通过执行所述程序实现如权利要求1-7中任一项所述的模型处理方法的各个步骤。10.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-7中任一项所述的模型处理方法的各个步骤。

技术总结
本申请实施例公开了一种模型处理方法、仿真平台及电子设备和存储介质,响应于针对第一仿真模型的封装指令,在获得第一仿真模型的参数后,读取第一函数模板;第一函数模板是通过在第二仿真平台提供的第二函数模板中填加多个目标函数和多个标记信息得到;基于第一函数模板得到适用于第二仿真平台的函数主文件;至少将函数主文件、第一仿真模型的代码文件、第一仿真模型运算所需的算法库存储到目标文件夹,得到适用于第二仿真平台的系统函数文件;目标文件夹中还包括与第一仿真模型对应的增加参数命令集合和编译命令集合。基于本申请实现了第一仿真平台的通用性。现了第一仿真平台的通用性。现了第一仿真平台的通用性。


技术研发人员:贝晓狮 余慧
受保护的技术使用者:北京世冠金洋科技发展有限公司
技术研发日:2023.06.28
技术公布日:2023/8/1
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐