1、solver设置:必须选择固定点解算器
2、optimization – parameters设置:
勾选,参数将以常数的方式直接生成到代码逻辑中,不再以一个参数变量的形式生成。
勾选生成的代码会为了节省储存用量,而不为中间信号生成中间变量(如命名的信号线)
3、code generation设置:
系统目标文件ert.tlc文件是Embedded Coder 提供的能够生成专用于嵌入式系统C代码的系统目标文件。
系统目标文件grt.tlc,由simulink code生成代码
勾选只生成代码,不对生成的代码进行编译链接
勾选生成的代码打包,并需命名压缩包
4、code generation - report设置:
勾选和创建模型生成报告并自动打开。
勾选将会在代码生成报告中包含静态代码的参数指标。
勾选 报告中含有模型到代码、代码到模型的双向追踪。
5、code generation - comments设置:
勾选在生成的代码中添加注释。
勾选注释中有代码到模型的超链接。
模型到代码方法:右击模块选择C/C++code—navigate to C code
6、code generation – code style:
括号生成频率、if-else与switch-case语句的选用、是否保留函数声明中的extern关键字、缩进方式、缩进字节等。
7、code generation – code placement:生成文件的组织方式
compact简洁只包含model.c和model.h
8、code generation – data type replacement:
自定义类型名不仅是一个别名字符串,还必须在Base Workspace中定义其作为Simulink.AliasType类型对象才可以。
9、code generation – interface:
默认不勾选生成的代码层次较少,执行效率略高。
勾选输出与状态更新生成到同一个函数model_step(),不勾选则分开生成model_update()和model_output()函数。
勾选可以为模型生成model_terminate()终止函数。
勾选生成代码时模型中的信号变量及状态变量将会结合在一个结构体变量中,不勾选信号变量与状态变量分别存储。
code generation – interface – configure model functions:
整体模型入口函数接口自定义:
这时输入输出数据的存储类型要设置为auto。
列表中后三项表示:
10、Verification设置:
是否使能代码中函数执行时间记录、代码覆盖度记录,以及是否创建SIL和PIL的模块等。在等效性测试细说。
11、Memory section设置:
12、子系统函数接口自定义
Main页面:勾选将子系统设置为原子子系统(此时子系统模块边框加粗显示)
Code generation页面:function package有以下四种选项,
可通过此页面设置子系统生成的函数名字、文件名字等。
13、信号线自定义
外部信号线设置为simulink.signal:
structname相同时,多个信号线生成到同一结构体变量中。
勾选实现数据对象(m语言)与信号线的绑定,绑定了数据对象的信号线上有一个蓝色右向三叉标记。
//此处input即为自定义命名,且in1与in2生成在同一结构体中
当storage class选择BitField时可以将一个完整的字节划分为不同的二进制位区,实现单个位域结构体的生成,节省存储空间。此时需要将模型的输入输出类型改为布尔型。
外部信号线设置为mpt.signal:
子系统信号线:勾选显示单个信号的传播信号标签。
14、数据对象的创建和设定Ctrl+H打开Model Explorer管理页面
15、命令窗口输入>> targetinstaller打开附加功能资源管理器,下载外设驱动库
下载之后,如何添加:
16、代码使用对象的数据管理,使生成的代码更简洁:
对于信号线的数据管理:给信号线命名x。
在workspace中添加与信号线同名x的simulink signal。
勾选信号和信号对象之间关联起来。
对参数的数据管理:需勾选,并添加mpt parameter 命名为k
数据的保存:保存工作空间的数据到.m文件,也可以通过操作.m文件改变这些变量的属性。
在工作空间输入>> Simulink.saveVars('my_m_data.m')
17、代码生成的优化设置,通过向导选择合适的代码生成配置
先设置,再点击
18、平台化代码设置:基于Variant Subsystem模块
内部有两个不同的子系统,可选择不同的工作方式
右击Variant Subsystem选择block parameters
并勾选,然后在interface设置如下
生成的代码中含有if-elseif的选择分支编程。
19、等效性测试:
法一:设置data-input使用外部输入,分别normal和SIL模式下运行,记录输出,输出差别不大,生成代码和模型是一致的,否则可能引入了一些错误。
法二:选择verification – create block为SIL,不勾选
设置好之后Ctrl+B,会生成一个子系统,把它copy到模型中并把输入输出连接,然后运行模型,如果这时两个输出差别不大则认为模型和生成代码是一致的。(输入越多越好,包含多种情况)
By chaikeya 2020/4/22