为模型生成的代码配置数据接口。
在生成的代码中控制信号和参数的名称、数据类型和数据存储类。
理解在模型中表示和使用数据和信号的方法。
熟悉将数据结构表示为数据对象。
能够阅读C代码。
rtwdemo\u节流控制\u数据接口
模型文件
大多数编程语言都要求你声明在使用它之前先收集数据。声明规定了以下信息:
数据属性 | 描述 |
---|---|
范围 | 程序中可以访问数据的区域 |
期间 | 数据驻留在内存中的一段时间 |
数据类型 | 为数据分配的内存量 |
初始化 | 初始值、指向内存的指针或NULL。如果不提供初始值,大多数编译器会指定零值或空指针。 |
代码生成支持以下数据类型。金宝app
金宝app支持的数据类型
名称 | 描述 |
---|---|
双 |
双精度浮点 |
单一的 |
单精度浮点 |
int8 |
签署了8位整数 |
uint8 |
Unsigned 8位整数 |
int16 |
签署了16位整数 |
uint16 |
16位无符号整数 |
int32 |
签署了32位整数 |
uint32 |
32位无符号整数 |
定点数据类型 | 8-, 16-, 32位字长 |
A.存储类是数据项的范围和持续时间。有关存储类的更多信息,请参阅将存储类应用于单个信号、状态和参数数据元素.
在Si金宝appmulink中®模型和Stateflow®图表中,数据的声明方法有:数据对象和直接的规范.这个例子使用了数据对象方法。这两种方法都允许完全控制数据类型和存储类。您可以在一个模型中混合使用这两种方法。
在MATLAB®和Sim金宝appulink环境中,您可以以各种方式使用数据对象。这个例子主要关注以下类型的数据对象:
信号
参数
公共汽车
要使用数据对象方法为模型配置数据接口,需要在MATLAB基本工作空间中定义数据对象。然后,将它们与您的Simulink模型或嵌入式状态流程图关联起金宝app来。当您构建模型时,构建过程将在生成的代码中使用相关的基本工作区数据对象。
您可以设置数据对象属性的值,包括:
数据类型
存储类
值(参数)
初始值(信号)
标识符(在生成的代码中定义一个不同的名称)
维度(通常为参数继承)
复杂性(参数继承)
单位(物理测量单位)
最小值
最大值
描述(用于记录数据对象-不影响模拟或代码生成)
您可以通过在MATLAB命令窗口中输入命令或使用模型资源管理器来创建和检查基本工作区数据对象。要探索基本工作区信号数据对象,请使用以下步骤:
打开rtwdemo\u节流控制\u数据接口
并保存一个副本为throttlecntrl_数据接口
在MATLAB路径上的可写位置。
打开模型浏览器。
挑选为基本工作空间.
选择pos_cmd_one
信号对象查看。
您还可以查看信号对象的定义。在MATLAB命令窗口中,输入pos_cmd_one
:
pos_cmd_one=具有以下属性的信号:CoderInfo:[1x1 Simulink.CoderInf金宝appo]说明:“来自第一个PI控制器的油门位置命令”数据类型:“双”最小值:-1最大值:1个单位:“”维度:-1维度模型:“自动”复杂性:“自动”采样时间:-1初始值:“0”
要查看其他信号对象,在模型资源管理器中,单击对象名称或在MATLAB命令窗口中,输入对象名称。该表总结了该模型中一些数据对象的对象特征。
对象的特征 | pos_cmd_one |
pos_rqst |
P_InerMap |
喉结 * |
ThrottleCommands * |
---|---|---|---|---|---|
描述 | 顶级输出 | 顶层输入 | 校准参数 | 顶级输出结构 | 总线定义 |
数据类型 | 双 | 双 | 汽车 | 汽车 | 结构 |
存储类 | 出口全球 | 引进外来的指针 | 常数 | 出口全球 | 没有一个 |
*ThrottleCommands
定义总线对象;喉结
是总线的实例化。如果总线是非虚总线,则信号在C代码中生成一个结构。
您可以使用总线定义(ThrottleCommands
)实例化结构的多个实例。在模型图中,总线对象显示为带有中心虚线的宽线,如图所示。
您可以为指定的信号、状态和参数创建数据对象。要将数据对象与构造关联起来,该构造必须具有名称。
要查找可以为其创建数据对象的构件,请使用数据对象向导。此工具将查找构件,然后为您创建对象。该模型包括两个与数据对象无关的信号:fbk_1
和pos_cmd_two
.
要查找信号并为其创建数据对象,请执行以下操作:
在Simuli金宝appnk编辑器中建模选项卡,在下面设计,点击数据对象向导。将打开“数据对象向导”对话框。
要查找候选构件,请单击找到.构造fbk_1
和pos_cmd_two
显示在对话框中。
要选择这两个构件,请单击全选.
在桌子下面等级,确保每个建议的数据对象都使用该类金宝app仿真软件。信号
.要更改对象的类,请单击改变类.
要创建数据对象,请单击创建.构造fbk_1
和pos_cmd_two
从对话框中删除。
关闭数据对象向导。
在内容在模型管理器的窗格中,查找新创建的对象fbk_1
和pos_cmd_two
.
使信号出现在生成的代码中。
在Simuli金宝appnk编辑器中,右键单击pos_cmd_one
信号线并选择性质.打开“信号属性”对话框。
确保您选择了信号名称必须解析为Simulink信号对象金宝app参数
为模型中的信号启用信号对象解析。在MATLAB命令窗口中,输入:
disableimplicitsignalresolution (“throttlecntrl_数据接口”)
保存并关闭throttlecntrl_数据接口
.
在油门控制器模型中,数据类型设置为双
.因为Simuli金宝appnk软件使用双
用于模拟的数据类型,当您运行生成的代码时,不要期望模型行为发生变化。您可以通过运行测试工具来验证这种效果。
在运行测试线束之前,请更新它以包括throttlecntrl_数据接口
模型
以下过程需要Stateflow许可证。
打开throttlecntrl_数据接口
.
打开您的测试工具的副本,节流中心测试线束
.
右键单击Unit_Under_Test
模型阻止并选择块参数(ModelReference).
设置模型名称到throttlecntrl_数据接口
.点击好吧.
更新测试工具模型图。
模拟测试装置。
结果显示,黄金模型和模拟模型之间的差异仍然为零。
保存并关闭节流中心测试线束
.
数据对象存在于基础工作区中与模型分离的文件中。要手动保存数据,请在MATLAB命令窗口中输入保存
.
将数据从模型中分离出来有以下好处:
一个模型,多个数据集:
使用不同的参数值来更改控制算法的行为(例如,对于具有不同校准值的可重用组件)
使用不同的数据类型更改目标硬件(例如,针对浮点和定点目标硬件)
多个模型,一个数据集:
在系统中的模型之间共享数据
在项目之间共享数据(例如,变速箱、发动机和车轮控制器可以使用相同的can消息数据集)
您可以使用数据对象或直接规范在Simulink模金宝app型和状态流程图中声明数据。
从模型管理器或MATLAB命令窗口中的命令行,管理(创建、查看、配置等)基础工作空间数据。
数据对象向导提供了为信号、总线和参数等构造创建数据对象的快速方法。
将数据对象显式配置为按名称显示在生成的代码中。
将数据与模型分离有几个好处。