在自动生成代码时,Simulink模型里的两类数据是我们需要考虑的:信号(signal)和参数(parameter)。信号对应于Simulink模块连线,仿真时一般都会变化;而参数则对应于双击模块时所设置的变量,仿真时一般保持不变。
如何控制这些变量在生成的代码里的实现?
点击末尾的 “阅读原文” 下载本文的案例模型
信号和参数的声明和定义
要得到:
模型参数p1定义为:int32 p1 = 3;extern int32 p1
模型信号mySig定义为:int16 mySig;extern int16 mySig
怎么做:用Data Object。
实例二
1. 建一个简单的Simulink模型
2. 代码生成基本配置
求解器:定步长—离散求解器
系统目标文件:ert.tlc
3. 新建数据对象
打开Model Explorer,点击菜单的Add,在base workspace里定义参数数据对象p1,进行如图设置:
这样在生成代码的时候,参数p1就会定义为int32的数据类型,并且声明为extern。而且它的声明和定义代码会分别写入myHdr.h以及mySrc.c。
类似的,新建一个 Simulink.Signal,命名为 mySig,设置如图。它的定义和声明就会默认的在模型名.c和模型名.h里 :
4. 信号关联
在信号线上右键,将信号与Base Workspace的数据对象关联在一起。
参数k不需要手动关联。
5. 生成代码
Ctrl+B,生成代码。
如前面所设置的,得到参数p1的定义如图,写到自定义的.c.h文件里去了:
信号mySig的声明和定义如图,在模型名.c和模型名.h文件里:
E-Coder里对数据的默认定义:
总结
所以说,可以使用数据对象(Data Object)来定义数据在所生成的代码里的表达方式。
-
信号
+关注
关注
11文章
2780浏览量
76628 -
变量
+关注
关注
0文章
613浏览量
28329
发布评论请先 登录
相关推荐
评论