在自动生成代码时,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)来定义数据在所生成的代码里的表达方式。
-
信号
+关注
关注
12文章
2923浏览量
80394 -
变量
+关注
关注
0文章
616浏览量
29566
发布评论请先 登录
分析嵌入式软件代码的漏洞-代码注入
如何搞定嵌入式 C语言中的全局变量问题?
第7章 变量进阶与点阵LED(7.1 7.2)
万里红文本生成算法通过国家网信办备案
语法纠错和testbench的自动生成
使用Simulink自动生成浮点运算HDL代码(Part 1)
NVIDIA recsys-examples在生成式推荐系统中的高效实践
关于如何控制变量在生成代码里的作用分析和介绍
评论