Simulink代码生成快速入门(一)

时间:2024-03-26 14:15:26

Mathwork推出的Embedded Coder Generation工具箱,已经成为汽车领域MBD开发标配。它可以根据模型文件,直接生成可以在嵌入式设备中运行的C/C++代码。该系列文章将介绍由模型生成代码的基本操作。文章中使用的Matlab版本为R2019b。

1.模型配置 Model Configuration

建立模型之后,首先需要对模型进行一些全局配置。

1.1 Solver 求解器

Simulink代码生成快速入门(一)

Type:Fixed-step - 程序在嵌入式设备中以固定周期运行,所以设定为定步长。

Solver:discrete(no countinuous state) - 同理,嵌入式设备中只存在离散状态。

Fixed-step size(fundamental sample time) - 该栏为模型的基础采样周期,即模型整体运行的周期,单位为s。

1.2 Code Generation 代码生成

主页面

Simulink代码生成快速入门(一)

System target file: ert.tlc(Embedded Coder) - 系统TLC文件。TLC文件直接控制代码生成过程,模型中的每个模块都有其对应的tlc文件(block target file),而系统tlc文件则相当于所有tlc文件的总调度,决定了模型生成代码的目标设备。一些软件供应商提供的工具链会有其定制的System target file,使生成的代码可以适配其硬件设备。在Simulink原生环境中,选择ert.tlc即可生成可以在嵌入式环境中运行的代码。

Generate Code Only - 在完成代码生成后,Simulink会将生成的代码与编译环境中的代码共同进行编译链接。但在实际应用中,集成和编译工作往往都在IDE中完成,并不需要其在Simulink环境中编译。勾选该选项,Simulink生成代码后即停止,不会进行编译操作。

Interface

Simulink代码生成快速入门(一)

non-finite numbers / complex number - 汽车控制领域几乎很少应用到无穷数与复数。取消勾选这两项可以减少不必要的代码生成。

ASAP2 interface - 勾选该选项,即在生成代码同时生成A2L文件。可应用于后续调试过程中的监测和标定。

1.3 Hardware Implementation 硬件实现

Simulink代码生成快速入门(一)

Device vendor/Device type - 选择运行代码芯片的厂商与架构。不同架构可能会影响生成代码的数据类型实际长度和编码方式。

以上,就是代码生成相关的常用基本配置。有关采样周期等参数的详细说明可能会在后续文章介绍。

2.模型搭建

Simulink代码生成快速入门(一)

模型搭建这里不再赘述,只使用了最简单的逻辑作为例子。

需要注意的是,并非所有模块都支持ert代码生成。在搭建时应避免使用ert.tlc不支持的模块。

模型的输入输出可以使用In/Out端口表示。

3.编译模型及代码生成 Build Model/Code Generation

Simulink代码生成快速入门(一)

模型搭建完成后,点击代码生成按钮或Ctrl+B即可。

代码会生成在Matlab当前工作路径下,生成进度会在Simulink下方Diagnostic中显示。

代码会保存在[模型名称]_[tlc名称]_rtw文件夹中。

Simulink代码生成快速入门(一)

至此,模型代码生成工作全部完成。