Main Content

为模型生成 C 代码

要从 Simulink® 模型、Stateflow® 图和 MATLAB® 函数生成 C 或 C++ 代码,请使用 Simulink Coder™ 产品。将生成的代码用于仿真加速、快速原型和硬件在环 (HIL) 仿真等应用中。

如果您刚开始使用 Simulink Coder,或您的应用程序代码几乎不需要自定义,则您可以使用图形工具和默认模型配置设置来快速生成代码。

使用快速向导工具,您不仅可以轻松准备要进行代码生成的模型,还可以轻松生成和检查代码。然后,使用 Simulink 编辑器提供的一系列代码工具,您可以配置数据接口、启动代码生成,并验证生成的代码。

本教程使用示例模型 SecondOrderSystem

打开模型。

open_system("SecondOrderSystem");

此模型实现一个二阶物理系统,称为理想的质量-弹簧-阻尼系统。使用 Gain 模块表示系统方程的各个组成部分:MassStiffnessDamping。该方程组的方程为 mX" + cX' + kX = f(t)。

  • m = 系统质量 (1.0E-6 kg)

  • c = 阻尼比 (4.0e-4 Ns/m)

  • k = 弹簧刚度 (1.0 N/m)

  • f(t) = x 方向上外力的函数 (N)

Signal Generator 模块注入一个振幅为 4、频率为 20 Hz 的方波波形。该模块使用仿真时间作为波形时间变量值的来源。由于使用代码生成所需的定步长求解器配置模型,因此 Simulink 在整个仿真中使用相同的步长。一致的步长提供理想波形的均匀采样表示。

该示例模型说明如何使用 MATLAB Function 模块将现有 MATLAB 函数代码集成到 Simulink 模型中,您可以从该模型生成可嵌入的 C 代码。示例模型中的 MATLAB Function 模块集成了一个 MATLAB 函数,该函数用于计算分量变量之和。

Integrator 模块计算 MATLAB Function 模块输出相对于时间的积分。该求解器会使用当前输入值和前一个时间步的状态值计算 Integrator 模块在当前时间步的输出。为支持此计算模型,Integrator 模块会保存在当前时间步的输出,以供求解器计算其在下一个时间步的输出。该模块还为求解器提供了初始条件,用于计算该模块在仿真开始时的初始状态。此示例模型的默认初始条件和设置为 0。

Dashboard 模块 KnobDashboard Scope 提供用于调节阻尼和监视波形的可视化工具。Knob 模块连接到 Damping Gain 模块。Dashboard Scope 模块连接到信号 Force: f(t):1X

使用此模型学习如何:

  1. 使用 Simulink Coder 快速向导工具生成代码。

  2. 验证生成的可执行程序结果是否与仿真结果匹配。

  3. 在程序执行期间调整参数。

  4. 部署原型代码和工件。

要开始本教程,请参阅使用 Simulink Coder 快速向导工具生成 C 代码