-
实用标准
从
Matlab
Simulink
生成易读可重用代码
by:
吴少风
MATLAB
提供从
MATLAB
代码或
simulink
模型生成
C/
C++
代码的功能。
从
MATLAB
2011b
版开始,
MATLAB
p>
将代码生成
Coder
作为单独模块发布。
MATLAB
每年更新两次,
经过不断
完善,新版本的
Coder
功能更强大。用
MATLAB
生成
C/C++
代码
具有
MATLAB
Coder
、
Simulink
Coder
、
Embedded
Coder
三个功能模块,
MATLAB
Coder
从
MATLAB
代码生成代码,
Simulink
C
oder
从
Simulink
模型生成
代码,
Embedded
Coder
结合
MATLAB
Coder
和
Simulink Coder
< br>,
生成嵌入式代码。
利用代码生成功能,
可以快速从模
型生成可靠的代码,应用越来越广泛。
要生成易于阅读、重用性好的代码,
必须进行详细设置。
文中内容以易读、
可重用为目
标,建立嵌入式
代码生成的演示模型,了解
Simulink
代码生成相关工具
,介绍详细设置步
骤,最终生成容易阅读、
可重用代码,供单处
理器单任务实时嵌入式系统应用。文中的方法
为严格控制生成代码的个人总结。
以文档呈现,
方便自己今后查看,
也希望能为其
他人提供
一些方便。
1.
简单示例
本部分搭建一个简单的
p>
PI
控制器模型,示范模型建立、设置、生成代码的详细步骤。
p>
1)
新建嵌入
式代码生成模型,
MATLAB->simulink
,
New
/
Embedded
Coder
/
Code
Generation System
。不选择一般
simul
ink
模板,可减少模型配置参数的设置。
文案大全
实用标准
2)
搭建如
错误
!
未找到引用源。
所示简易模型,
保存文档,设置文件名。
图
1.
一个简单示例模型
3)
点击工具栏图标
,设置模型配置参数
,应用并保存。对嵌入式应用,固定步
长,离散,可调参数,
E
RT
目标,
C
语言,设置基本固定,未
设置的地方保持默认。
?
solver options: type -- Fixed step.
solver -- Discrete.
?
optimization->signals and parameters:
?
Default parameter behavior -- tunable.
?
Pass reusable subsystem outputs as
--
输出较多选用
structure reference.
?
hardware
implementation:
按实际设
hardware
board, device, device details.
?
code
generation:
?
System
target
file
--
,
Language
--
C,
generate
code
only.
code
generation objectives.
?
comments:
include comments,
默认全选,可按需要选择。
?
symbols:
命名规则设置,按各自代码规范设置。
?
interface:
设置整个模型生成代码的接口。
文案大全
实用标准
?
code interface
package
,可选择可重用,
Pass root
level I/O as
,模型输
入输出参数一般较多,一般
选择结构体,
structure reference
,模型
数据、
输入、
输出通过各自独立结构体传入参数;
part of model data structure
,
一个结构体传入参数。也可选择不可重用。
?
configure
model
functions
,点
击进入,设置模型具体的
C
原型。
ge
t
default configuration
,可修改模
型默认
initialize/step
函数名,及参数,
p>
各输入输出单独作为函数参数,这与结构体传参是矛盾的,不能同时设置。
< br>
?
code style:
设置代码风格。
?
Parentheses
括号,
--
Nominal(readability)
,按可读性优化。
?
Casting mode
强制转换方式,
Nominal.
?
Code
indentation
代码缩进,
size -- 4.
?
Code placement:
代码放置,可设置变量定义
或声明在单独文件还是和源代码
放一起,头文件包含是
<
head.h
>
还是
。
?
Data type
replacement:
数据类型替换。
4)
设置模型中每一个基本模块的属性。
包括名称、值、数据类型、采样时间等。子模块或者引用模型等这类自定义模块,除了
内
部基本模块的属性外,还要设置各自的模块属性。模块中参数等值,必须按照设计配置;
如果想使用可调参数,
则将参数设置为变量,
再设置变量值。<
/p>
生成代码模型中的模块名设置,
最好遵循目标语言的命名规则,<
/p>
因为生成代码中的一些名称可以从模块名继承。
嵌入式应用
大多无浮点单元,定点数据的设置在模块属性的代码生成栏。
文案大全
实用标准
将图
1
中各模块可按如下方式设置:
?
inport
,点击模块下方名称,设置模块名,将其设置为
In
;双击
模块进入模块属
性设置,
main
栏设
置编号,
编号会体现在子系统或引用模型上;
signal a
ttributes
设置数据类型为定点数,
16b
字长
10b
小数部分
fi
xdt(1,16,10)
。
其它模块设置方
< br>法类似。
?
view->model
data
,
弹出
model data
窗口。
simulink
提供的
model data
窗口,
用于显示当前层
级下的所有输入输出、信号、
状态、
参数,
并将对应属性罗列成表
格,而且表格可编辑部分属性。
?
Kp
增益
模块,
双击模块,
输出数据类型设置为同输入,
参数数据类型设置为从
Gain
继承,
Gain
设置为
Kp
。
?
在
model data
窗口,
参数栏,
Kp
模块,
值变为
Kp
,
其后出现
create...
链接字样。
点击弹出
create
new
data
< br>窗口,值选择
ter
,位置选择
Base
Workspace
,创建,弹出
< br>ter:
Kp
属性窗口,设置值为
10
,数
据类型为定点数
fixd
t(1,16,10)
,存储类型选择
ExportedGlo
bal
,确定。
?
Ki
增益
模块,使用设置
Kp
的方法将
simu
link
参数属性值设为
1
。
?
File->Model
properties
,弹出模型属性窗口,选择数据栏,将数据定义到数据
字典,
选择或新建一个数据字典文件,
应用。
建立在基本工作
区的数据迁移到数据
字典保存。
后面该模型新建参数等数据,<
/p>
基本工作区的位置将被数据字典代替。
保
存在基本工作区的数据,关闭
MATLAB
不会自动保存,因此
一些模型也采用脚本
配置。
位置也可选择模型工作区,
但保存到模型工作区的参数,
有效的存储类型会
受到限制。
文案大全
实用标准
?
unit delay
单位延时,初始条件设为
0
,状态名称按实际意义设置。
?
Outport
,数据类型可选自动。
信号名称,
可到
model data
窗口统一设置,
该窗口中选中信号,
模
型区会用颜色标记
对应标记。没有设置名称的信号,按照内部规则生成代码。
模型相关设置,
simulink
还提供
model explorer
图形界面统一
管理。点击图标
打开。
5)
设置完成后,启用
Advisor
检查模型设置。选择检查项目,运行检查,修改不符
合的项目。
analysis ->
model advisor
,针对模型,可选项目包括
MIS
RA
、
ISO26262
等。选中
p>
by task
,右侧点击
run
selected checks
。
analysis -> data type design -> fixed
point tool
,进入设置后,左侧选择项目,右
侧运行
检查。
code -> C/C++ code ->
code generation advisor
,针对生成代码,可选项目有空
p>
间效率、执行效率、可追踪性、安全预警、
MISRA C:
2012 guidelines
等。
检查项目可能会弹出一些警告,
是之前手动设置的,
这时选择
忽略。
比如内联参数有效
率,但想要用可调参数,就只能忽略检
查时的警告。
6)
点击图标
,编译模型生成代码。完成后可查看报告。
可
文案大全
实用标准
算法代码如下:
数据定义如下:
文案大全
实用标准
2.
Simulink
生成代码相关工具
在“
1
简单示例”一节,介绍了代码生
成的详细过程。其中一些常用的工具及菜单,现
罗列于表
1
中。
表
1.
常用工具及菜单
图标
名称
Library
工具栏图标
Browser
ModelConfig
模型配置参数,模型仿真、生成代码所依赖的
uration
Parameters
菜
单
Mode Data
-Mode Data
可以在此处集中编辑。
View----
列表显示当前层级模型的信号、
参数、
状态等,
工具栏图标
全局规则。
基本模块库,搭建模型的基本元素所在库。
最方便的位置
功能
文案大全
实用标准
树状结构的模型管理器,包括数据、配置、子
Model
工具栏图标
Explorer
单独包含数据数据、配置等元素。
Model
工具栏图标
Advisor
Code
Generation
Advisor
Model
根据选
定项,针对代码生成设置,进行检查,
Advisor----
图
标
提供建议。用户根据建议修改自己的模型。
下拉
菜
单
Fixed-Point
Tool
Design
-
可以根据建议修改自己的模型。
Analysis
建议。用户根据建议修改自己的模型。
根据选定项,针对模型设计,进行检查,提供
模块等。从树状结构可以看出,每一个模
型都
---- - data Type
针对定点数设计,进行检验,提供建议。用户
Fixed-
Point Tool
根据配置,编译模型生成代码。图标下拉栏还
Build Model
工具栏图标
有:编译备选子系统,嵌入式代码快速向导。
快速向导按步骤生
成新配置,
并依次生成代码。
Run
工具栏图标
模型仿真运行。一般首先会用仿真验证模型。
文案大全