simulink代码生成有挺多知识点的,而本人又经验不足知识储备有限,一时不知道该如何下手。想了好久决定先概述,再示例入门,最后深入探讨细节,尽量详细准确。希望不要半途而废。
flag先立下,该系列要写如下内容:
- 入门基本知识(Introduction)
- 自动代码生成(generating embedded code)
- 优化生成的代码(optimizing generated code)
- 集成生成代码和外部代码(integrating generated code with external code)
- 控制函数原型(control function prototype)
- 定制simulink中的数据属性(customizing data characteristics in simulink)
- 使用数据对象定制数据属性(customizing data characteristics using data objects)
- 定制代码生成架构(customizing generated code architecture)
- 模型引用和总线对象(model reference and bus objects)
- 调度生成代码的执行(scheduling generated code execution)
- 提高代码效率和规范性(improving code efficiency and compliance)
- 总结(conclusion)
概述
下图是matlab和simulink的产品框架图,这里就不打广告了
我想说的主要是下面这张图,这几个“coder”的区别:Matalb coder是基础,所有代码生成都需要调用它。simulink coder效率不高,一般用于HIL台架。Embedded coder一般用于量产工程。属于概念性的东西,了解一下即可。
生成代码示例
简单来讲,如下模型想要生成代码,需要如下几个步骤:
1)模型中尽量不要有连续模块,且模型验证完毕(静动态测试等,会在另一个系列描述相关测试方法)
2)然后ctrl+E打开设置选项卡,设置为离散定步长,且该步长最好和硬件实际调度周期一致。且求解器类型中Ode均使用积分,在处理器上非常耗资源,因此自动代码生成一般用离散。
3)在硬件设施中配置目标板类型,这里是为了统一matlab和目标板的数据类型。
4)设置生成目标代,可以看到有很多类型,按需选取。一般嵌入式选ert.tlc,汽车行业如果使用autosar架构则选择autosar.tlc等,Realtime一般用在HIL上。
至此生成代码的简单设置基本完成,然后可以ctrl+B生成代码:
这是simulink生成代码的简单步骤,详细请见后续系列。