一个simulink模型能够生成代码首先要满足的条件:

1:确保模型仿真的正确性
 2:将需要的输入和输出改成input和output模块
 3:离散化模型,设置求解器为离散,固定步长

满足上面条件后,接下来怎么生成嵌入式C代码呢?

一 : 嵌入式C代码生成

1:将系统目标文件(system target file)设置成 ert. tlc( Embedded Coder ) 如下图:

simulink转化为python代码_simulink 代码生成

2:硬件实现规定(Hardware Implenmatation) 假如生成的代码用到的硬件平台是stm32,则可以如下设置:

simulink转化为python代码_Simulink_02


完成上面的两步操作后,就可以用快捷键ctrl+B生成嵌入式C代码了。但是会发现生成的代码可读性很差所以下面来看怎么优化自动生成的C代码。

二 : 嵌入式C代码生成优化

1:首先我们可以看到 Code Generation 下拉菜单的 Optimization选项:

  当模型中使用参数变量,如Gain模块的增益值,在生成代码时,如果希望使用该参数的值直接展现到代码中,就需要设置参数内联选项,如下图所示框中选项:

simulink转化为python代码_simulink转化为python代码_03


2: 移除数据变量初始化为0。如下图设置:

simulink转化为python代码_Simulink_04


3:设置当代码生成后以报告的形式自动打开

simulink转化为python代码_代码生成_05


4:设置注释是否展现到代码中,推荐启动注释选项并勾选 Simulink block Stateflow object comments 选项以生成注释,注释中带有可以从代码跳转到对应模型的超链接,方便追溯模块与代码的对应关系。

simulink转化为python代码_simulink 代码生成_06


5:通过设置各种标示符的不同组合,规定生成代码中各部分变量、常量、函数名、结构体及对象名称的生成规则。不建议修改,如图:

simulink转化为python代码_simulink转化为python代码_07


这些标示符的具体意义如下表所列:

simulink转化为python代码_simulink 代码生成_08


6:用于添加模型中用到的用户自定义的源文件、头文件等。

simulink转化为python代码_simulink转化为python代码_09


7:C代码中移除real-time模型的结构体数据的错误状态,如图:

simulink转化为python代码_simulink 代码生成_10


8:设置生成C文件的组织方式,对应的生成文件个数不同 ,具体如下表所列:

simulink转化为python代码_simulink转化为python代码_11


为了简洁,一般设置如下,

simulink转化为python代码_Simulink_12


9:生成的C代码中数据类型名的重定义如下:

simulink转化为python代码_simulink 代码生成_13


**注意:用户填入的自定义类型名不仅是一个别名字符串,还必须在Base Workspace或者数据字典中定义其作为Simulink .AliasType类型对象才可以。**如下:

simulink转化为python代码_嵌入式_14