从Matlab-Simulink生成易读可重用代码

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

从Matlab-Simulink生成易读可重用代码

从Matlab Simulink生成易读可重用代码

by: 吴少风

MATLAB提供从MATLAB代码或simulink模型生成C/C++代码的功能。从MATLAB 2011b版开始,MATLAB将代码生成Coder作为单独模块发布。MATLAB每年更新两次,经过不断完善,新版本的Coder功能更强大。用MATLAB生成C/C++代码具有MATLAB Coder、Simulink Coder、Embedded Coder三个功能模块,MATLAB Coder从MATLAB 代码生成代码,Simulink Coder从Simulink模型生成代码,Embedded Coder结合MATLAB Coder和Simulink Coder,生成嵌入式代码。利用代码生成功能,可以快速从模型生成可靠的代码,应用越来越广泛。

要生成易于阅读、重用性好的代码,必须进行详细设置。文中内容以易读、可重用为目标,建立嵌入式代码生成的演示模型,了解Simulink 代码生成相关工具,介绍详细设置步骤,最终生成容易阅读、可重用代码,供单处理器单任务实时嵌入式系统应用。文中的方法为严格控制生成

代码的个人总结。以文档呈现,方便自己今后查看,也希望能为其他人提供一些方便。

1.简单示例

本部分搭建一个简单的PI控制器模型,示范模型建立、设置、生成代码的详细步骤。

1)新建嵌入式代码生成模型,

MATLAB->simulink,New / Embedded Coder / Code Generation System。不选择一

般simulink模板,可减少模型配置参数的

设置。

2)搭建如错误!未找到引用源。所示简

易模型,保存文档,设置文件名。

图 1. 一个简单示例模型

3)点击工具栏图标,设置模型配置

参数,应用并保存。对嵌入式应用,固定步

4)

5)interface: 设置整个模型生成代码的接口。

✧code interface package,可选择可重

用,Pass root level I/O as,模型输入输出参数一般较多,一般选择结构体,structure reference,模型数据、输入、输出通过各自独立结构体传入参数;

part of model data structure,一个结构体传入参数。也可选择不可重用。

✧configure model functions,点击进

入,设置模型具体的C原型。get default configuration,可修改模型默认initialize/step函数名,及参数,各输入输出单独作为函数参数,这与结构体传参是矛盾的,不能同时设置。

➢code style: 设置代码风格。

✧Parentheses括号,--

Nominal(readability),按可读性优化。

✧Casting mode 强制转换方式,

Nominal.

✧Code indentation 代码缩进,size --

4.

➢Code placement: 代码放置,可设置变

量定义或声明在单独文件还是和源代码放

一起,头文件包含是< head.h >还是"

head.h "。

➢Data type replacement: 数据类型替

换。

6)设置模型中每一个基本模块的属

性。

包括名称、值、数据类型、采样时间等。子模块或者引用模型等这类自定义模块,除了内部基本模块的属性外,还要设置各自的模块属性。模块中参数等值,必须按照设计配置;如果想使用可调参数,则将参数设置为变量,再设置变量值。生成代码模型中的模块名设置,最好遵循目标语言的命名规则,因为生成代码中的一些名称可以从模块名继承。嵌入式应用大多无浮点单元,定点数据的设置在模块属性的代码生成栏。

将图1中各模块可按如下方式设置:

●inport,点击模块下方名称,设置模块名,将其设置为In;双击模块进入模块属性设置,main栏设置编号,编号会体现在子系统或引用模型上;signal attributes设置数据类型为定点数,16b字长10b小数部分fixdt(1,16,10)。其它模块设置方法类似。

●view->model data,弹出model data窗口。simulink提供的model data窗口,用于显示当前层级下的所有输入输出、信号、状态、参数,并将对应属性罗列成表格,而且表格可编辑部分属性。

●Kp增益模块,双击模块,输出数据类型设置为同输入,参数数据类型设置为从Gain继承,Gain设置为Kp。

●在model data窗口,参数栏,Kp模块,值变为Kp,其后出现create...链接字样。点击弹出create new data窗口,值选择Simulink.Parameter,位置选择Base Workspace,创建,弹出Simulink.Parameter: Kp属性窗口,设置值为10,数据类型为定点数fixdt(1,16,10),存储类型选择

ExportedGlobal,确定。

●Ki增益模块,使用设置Kp的方法将

simulink参数属性值设为1。

●File->Model properties,弹出模型属性

窗口,选择数据栏,将数据定义到数据字典,选择或新建一个数据字典文件,应用。建立

在基本工作区的数据迁移到数据字典保存。

后面该模型新建参数等数据,基本工作区的

位置将被数据字典代替。保存在基本工作区

的数据,关闭MATLAB不会自动保存,因

此一些模型也采用脚本配置。位置也可选择

模型工作区,但保存到模型工作区的参数,

有效的存储类型会受到限制。

●unit delay单位延时,初始条件设为0,

状态名称按实际意义设置。

●Outport,数据类型可选自动。

信号名称,可到model data窗口统一设置,该窗口中选中信号,模型区会用颜色标记对应标记。没有设置名称的信号,按照内部规则生成代

相关文档
最新文档