在基于模型开发的过程当中,除了模型本身之外,模型的参数也是开发成果的一个重要部分,笔者总结了几种基于纯Matlab/Simulink环境下的参数管理方法,与大家分享一下(TargetLink的数据管理方法不在本文讨论范围之内)。

以某电机FOC控制的仿真模型为例:

整个模型由测试用例、FOC控制算法和PlantModel三部分组成,而具体到模型的参数,又有以下几种:

仿真环境参数:比如各子模块的不同仿真周期;

测试用例:测试用例中电机转速值和电机力矩指令值;

PlantModel参数:被测电机的参数(电阻电感等),供电电压,环境温度等等;

ECU硬件参数:ECU数据采集及功率输出的相关电路参数;

ECU控制参数:FOC控制算法的参数,如PI值等等;

为了统一集中的对这些参数进行管理,可用到如下的方法:

将所有文件定义在一个m文件中,再开始仿真前自动运行或手动运行该m文件。

将工作空间中的相关参数保存为一个Mat文件,在开始仿真前自动或手动Load该mat文件。

Simulink callback function

如上图,将相关参数的定义写在仿真开始之前的四个CallBack函数中,区别是写在后面两个的话,由于每次仿真callback函数都会重新执行一遍,因此在Matlab工作空间对参数的修改就会无效。因此,可以将不同的参数特性(是否允许在工作空间被更改?)放在不同的callback函数内。

Simulink Data Dictionary

SimulinkDataDictionary是在Matlab 2014a以后才引入的功能。链接方法(第一次可通过该操作从工作空间创建一个DD):

使用DD的好处是:

模型与DD的链接建立好以后,可自动运行,可以在ModelExplorer中对DD进行编辑,设定最大最小值,显示哪些值被修改过,查找该参数被那些simlink模块所使用,比较两个不同的DD的差异等等。

关于版本管理:

假设模型和参数的版本号经历了如上图的变迁,使用方法(1)(2)(4),因为模型文件和参数文件是两个独立的文件,只要在标定配置文件中标明该版本所对应的模型版本号,就能按图索骥。而采用方法(三),以模型V0.2为例,其最新的状态对应的是参数V0.2,而如果要追溯到该版本模型对应参数版本V0.1的状态,则需要费一些周章。

作者JACK:我在IND4汽车人App可以帮助大家解答汽车电子相关的技术问题,欢迎通过IND4汽车人App向我付费咨询。