在自动生成代码时,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文章
2903浏览量
79685 -
变量
+关注
关注
0文章
615浏览量
29373
发布评论请先 登录
语法纠错和testbench的自动生成
NVIDIA recsys-examples在生成式推荐系统中的高效实践
STM32IDE如何设定代码到ITCM中运行?
STM32 touch 4.24.2生成代码,但是keil编译不通过怎么解决?
STM32 touch 4.24.2生成代码,但是keil编译不通过是怎么回事?
STM32 touch 4.24.2生成代码,但是keil编译不通过怎么解决?
STM32 touch 4.24.2生成代码,但是keil编译不通过怎么解决?
cunbemx生成RTthread代码疑似漏复制文件怎么解决?
DLP3010EVM在生成新的firmware时不能取消勾选 “Skip changing user defined looks”怎么解决?
STM32CubeMX生成的代码,是怎样的HAL架构?
DFT在生物信号分析中的应用
SRIO介绍及xilinx的vivado 2017.4中生成srio例程代码解释

关于如何控制变量在生成代码里的作用分析和介绍
评论