Simulink自动代码生成也被称作基于模型开发(BMD),相比于传统的手写代码方式能够尽量减少人为错误。模型本身可以用于仿真,单元测试等,更便于提前发现逻辑错误。同时只要约定好模型接口,就可以多人协作,每个人单独开发一个功能模块缩短了开发周期,最终将每个人生成的代码集成到一起就可以构成一个完整的工程。因此,基于模型开发的方式受到很多大公司的欢迎,尤其是车企更是将其作为首要的开发方式。

一. 新建一个简单的模型

  笔者使用的是MALAB2020a,以前用的MATLAB2016b及MATLAB018b也基本差不多,只是最新版本多了一些功能。打开MATLAB/Simulink,新建一个简单的计算模型,实现以下功能:
Y 1 = ( X 1 + X 2 ) ∗ X 3 Y1 = (X1+X2) * X3 Y1=(X1+X2)X3
  所搭建的模型如下:
在这里插入图片描述

二. 更改模型配置参数

  首先打开Model configuration parameters,对模型配置参数进行设置。
在这里插入图片描述
  (1)对求解器进行设置,对于生成代码而言第三步不是必须的,求解器的类型也可以根据实际情况而定,但定步长(Fixed-step)是必须的。
在这里插入图片描述
  (2)对硬件进行设置,我现在所使用的是TI公司的C2000系列芯片(以前做模型开发时用的是车规级芯片TC275),硬件芯片根据自己的实际情况进行选择。

在这里插入图片描述
  (3)进行代码生成配置,系统目标文件选择嵌入式代码,语言为C语言。
在这里插入图片描述
  (4)在代码生成选项卡下选择报告,可以自动生成代码报告,这一步不是必须的,不影响代码生成,但有助于我们查看代码,因此还是做如下设置比较好。
在这里插入图片描述
  至此,代码生成最基本的配置已经完成,接下来就可以进行代码生成了。

三. 自动生成代码

  (1)MATLAB2020a与以前的版本有所不同,代码生成功能在APPS选项卡下,打开APPS,选择Embedded Coder就会出现C CODE选项卡。
在这里插入图片描述
  (2)进入C CODE选项,选择Build,也可以使用快捷键Ctrl+D进行编译,检查模型是否有错误。
在这里插入图片描述
  (3)编译后发现错误,原因是模型不在工作目录下。
在这里插入图片描述
  (4)将Simulink模型保存到CodeGeneration文件夹下,并命名为Calculation(命名随意,不要含有违规字符即可),然后将MATLAB工作目录换成CodeGeneration所在路径,如图所示。
在这里插入图片描述
  (5)在此Build将不会再出现错误,然后进行代码生成,选择步骤(2)图片中的第二步,也可以使用快捷键Ctrl+B进行代码生成,代码生成后如下图。
在这里插入图片描述
  (6)选择Calculation.c可以看到实现了我们所需要的函数功能,变量的声明在.h文件中,读者可自行查看。
在这里插入图片描述
  (7)生成的代码全部在Calculation_ert_rtw文件夹下,此文件夹是系统自动生成的,前缀是根据搭建的模型来定的,后面是系统默认添加的。
在这里插入图片描述

四. 总结

  以上就是生成代码的基本步骤,注意这里仅仅讲解了基本配置,更复杂的配置及代码优化将在后续的系列文章中进行详细的讲解。不进行其它配置,这样的代码无法用于实际项目中,如何使得代码按照自己想要的样子生成,这才是自动代码生成的关键。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐