-
从
Matlab-
Simulink
生成易读可
重用代码
1)
2)
3)
长,离散,可调参数,
ERT
目标,
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
,
可选择可重
用,
p>
Pass root level I/O as
,模型输入输
p>
出参数一般较多,一般选择结构体,
structure refe
rence
,模型数据、输入、
输出通过各自独立结构体传入参
数;
part of model data structure
,一个结构
体传入参数。也可选择不可重用。
?
configure
model
functions
,点
击进
入,
设置模型具体的
C
原型。
get default
configu
ration
,
可
修
< br>改
模
型
默
认
initialize/step
函数名,及参数,各输入
输出单独作为函数参数,这与结构体传
参是矛盾的,不能同时设
置。
?
code style:
设置代码风格。
?
Parentheses
括
号
,
--
Nominal(readability)
,按可读性优化。
?
Casting
mode
强
制
转
换
方
式
,
Nominal.
?
Code indentation
代码缩进,
size --
4.
?
Code placement:
代码放置,
可设置变
量定义或声明在单独文件还是和源代码放
一起
,头文件包含是
<
head.h
>
还是
head.h
。
?
Data
type
replacement:
数据类型替
换。
4)
设置模型中每一个基本模块的属
性。
包括名称、值、数据类型、采样时间等。子
模块或者引用模型等
这类自定义模块,
除了内部
基本模块的属性外,还要设置各自的
模块属性。
模块中参数等值,
必须按照设计配置;
如果想使
用可调参数,
则将参数设置为变量,
再设置变量
值。
生成代码模型中的模块名设置
,
最好遵循目
标语言的命名规则,
因为
生成代码中的一些名称
可以从模块名继承。嵌入式应用大多无浮点单
元,定点数据的设置在模块属性的代码生成栏。
将
错误!
未找到引用源。
中各模块可按如下
p>
方式设置:
?
inport
,点击模块下方名称,设置模块
名,将其设置为
In
;双击模块进入模块属
性设置,
main
p>
栏设置编号,编号会体现在
子系统或引用模型上;
< br>signal
attributes
设
置数据类型为定点数,
16b
字长
10b
小数部
分
fixdt(1,
16,10)
。其它模块设置方法类似。
?
view->model
data
,
弹出
model data
窗
口。
simulink
提供的
model
data
窗口,用
于显示当前层级下的所有输入输出、信号、
状态、<
/p>
参数,
并将对应属性罗列成表格,
而
p>
且表格可编辑部分属性。
?
Kp
增益
模块,双击模块,输出数据类
型设置为同输入,参数数据类型设置为从
< br>Gain
继承,
Gain
设置为
Kp
。
?
在
model data
窗口,
参数栏,
Kp
模块,
值变为
Kp
,其后出现
create.
..
链接字样。
点击弹出
create
new
data
窗口,值选择
ter
,
位
置
选
择
Base
Wo
rkspace
,
创建,
弹出
ter:
Kp
属性窗口,设置值为
10
,数据类型为定
点
数
fixdt(1,16,10)
,
存<
/p>
储
类
型
选
择
ExportedGlobal
,确定。
?
Ki
增益模块,使用设置
Kp
的方法将
simulink
参数属性值设为
1
。
?
File->Model pro
perties
,
弹出模型属性
窗口,
选择数据栏,
将数据定义到数据字典,
选择或新建一个数据字典文件,
应用。
建立
在基本工作区的数据迁移到数据字典保存。
后面该模型新建参数等数据,
基本工作区的
位置将被数据字典代替。
保存在基本
工作区
的数据,关闭
MATLAB
不会
自动保存,因
此一些模型也采用脚本配置。
位置也可选择
模型工作区,但保存到模型工作区的参数,
有效的存储类型会受到限制
。
?
unit delay
单位延时,
初始
条件设为
0
,
状态名称按实际意义设置
。
?
Outport
,数据类型可选自动。
信号名称,可到
model dat
a
窗口统一设置,
该窗口中选中信号,
模型区会用颜色标记对应标
记。
没有设置名称的信号,
按照内部规则生成代
码。
模
型<
/p>
相
关
设
置
,
simulink
还
提
供
model
explorer
图形界面统一管理。
点击图标
可打开。
5)
<
/p>
设置完成后,
启用
Advisor
检查模型
设置。
选择检查项目,
运行检查,
修改不符
合的项目。
analysis -> model advisor
,针对模型,可选
项目包括
MISRA
、
ISO26262
等。选中
by
task
,
右侧点击
run
selected checks
。
analysis
->
data
type
design
->
fixed
point
tool<
/p>
,进入设置后,左侧选择项目,右侧运行检
查。
< br>
code
->
C/C++
code
->
code
generation
advisor
,针对生成代码,可选项目有空间效率、
执行效率、
可追踪性
、
安全预警、
MISRA C: 2012
guidelines
等。
检查项目可能会弹出一些警告,
是之前手动
设置
的,这时选择忽略。比如内联参数有效率,
但想要用可调参数,就只能忽略检查时的警告
。
6)
点击图标
,
编译模型生成代码。
完
成后可查看报告。
算法代码如下:
数据定义如下:
1.
Simulink
生成代码相关工具
在“
错误!未找到引用源。错误!未找到引
用源。
”一节,介绍了代码生成的详细过程。其
中一些常用
的工具及菜单,现罗列于表
1
中。
表
1.
常用工具及菜单
图
标
名称
最方便的
位置
工
具
栏
图
标
功能
基本
模块库,搭
建模型的基本元
素所在库。
模型仿真、生成
Library
Browser
Model
p>
工
具
栏
图
模型配置参数,
Configuration
标
Parameters
代码所依赖的全
局规则。
菜
单
列表显示当前层
级模
型的信号、
参数、状态等,
可以在此处集中
编辑。
树状结构的模型
管理器,
包括数
据、配置、子模
Mode
Data
View----
-Mode
Data
Model
Explorer
工
具
栏
图
块等。从树状结
标
p>
构可以看出,每
一个模型都单独
包含数据数据、
配置等元素。
根据选定项,针
对模型设计,进
Model
Advisor
工
p>
具
栏
图
行检查,提
供建
标
议。用户根据建
议修改自己的模
型。
Code
Model
根据选定项,针