控制信号的数据类型
在Simulink中控制信号的数据类型金宝app®模型,为相应的块输出指定数据类型。
您还可以通过以下任何一种方式将特定数据类型的新信号引入到模型中:
金宝app默认情况下,Simulink块决定其输出的数据类型。许多块允许您覆盖默认类型,并使用通常命名的块参数显式指定输出数据类型输出数据类型.例如,输出数据类型参数显示在信号的属性窗格的常量块对话框。
有关更多信息,请参阅以下主题:
关于…… | 看到…… |
---|---|
可以指定的有效数据类型值 |
|
帮助您指定有效数据类型值的助手 |
|
同时为多个块指定有效的数据类型值 |
输入有效的数据类型值
通常,您可以将输出数据类型指定为以下任何一种:
有效的数据类型值因块而异。您可以使用与块数据类型参数关联的下拉菜单来查看特定块支持的数据类型。金宝app例如,数据类型数据存储内存块对话框上的下拉菜单列出了它支持的数据类型,如下所示。金宝app
有关特定块支持的数据类型的更多信息,请参阅Simulink文档中的块文档。金宝app金宝app
数据类型继承规则
块可以从各种来源继承数据类型,包括它们连接到的信号和特定的块参数。可以将数据类型参数的值指定为规则,以确定输出信号如何继承其数据类型。若要查看块支持的继承规则,请使用块对话框上的数据类型下拉菜单。金宝app下表列出了可以选择的典型规则。
继承规则 | 描述 |
---|---|
继承:通过反向传播继承 |
金宝app在数据类型传播期间,Simulink自动确定块的输出数据类型(参见数据类型传播).在这种情况下,块使用下游块或信号对象的数据类型。 |
Inherit:与input相同 |
该块使用其唯一输入信号的数据类型作为其输出信号。 |
继承:与第一次输入相同 |
该块使用其第一个输入信号的数据类型作为其输出信号。 |
继承:与第二次输入相同 |
该块使用其第二个输入信号的数据类型作为其输出信号。 |
继承:通过内部规则继承 |
该块使用内部规则来确定其输出数据类型。内部规则选择一种数据类型来优化数值精度、性能和生成的代码大小,同时考虑嵌入式目标硬件的属性。软件并不总是能够同时优化效率和数值精度。 |
当将继承的数据类型应用于信号时,Simulink仅在更新方框图之后才确定信号的特定数据类型。金宝app
内置数据类型
您可以将数据类型参数的值指定为内置数据类型的名称,例如:单
或布尔
.若要查看块支持的内置数据类型,请使用块对话框上的数据类型下拉菜单。金宝app看到Simulink支持的金宝app数据类型金宝app获取受支持的所有内置数据类型的列表。金宝app
数据类型表达式
可以将数据类型参数的值指定为计算为数值型数据类型对象的表达式。只需在块对话框的数据类型字段中输入表达式。一般情况下,输入以下表达式之一:
fixdt
命令方法的命令指定数据类型参数的值
fixdt
函数。此函数允许您创建金宝app仿真软件。NumericType
对象,该对象描述定点或浮点数据类型。数据类型对象名称
将数据类型参数的值指定为表示数据类型的数据对象的名称。金宝app从类实例化的Simulink数据对象,例如
金宝app仿真软件。NumericType
而且金宝app仿真软件。AliasType
,简化了对输出数据类型进行模型范围更改的任务,并允许您为数据类型使用自定义别名。看到数据对象有关Simulink数据对象的更多信息。金宝app
使用模型数据编辑器进行批量编辑
使用模型数据编辑器,您可以同时将相同的数据类型分配给多个信号。您可以使用这种技术通过配置多个模型的数据类型和其他属性来设计模型的接口轮廓尺寸而且外港块一次(见配置数据接口).您还可以在块算法中精细地控制任意信号的数据类型。
例如,slexAircraftExample
模型中的飞机纵向飞行控制示例包含多个获得块。假设您想在模型的根级别指定三个Gain块的输出数据类型为单
.您可以通过以下方式完成该任务:
在模型数据编辑器中(在建模选项卡上,单击模型数据编辑器),查阅信号选项卡。
旁边是内容过滤框,切换使用选择筛选按钮。
在模型的顶层,选择代表这三个输出的信号线获得块(标记
Zw
,兆瓦
,Mq
).模型数据编辑器显示了与三个信号对应的三行。在Model Data Editor中,选择所有三个信号(行)。例如,您可以按Ctrl +一个或持有转变控件中的顶部和底部行源列。
对于三个信号中的任何一个,单击数据类型列。在下拉列表中选择
单
.模型数据编辑器将此选择应用于所选的所有行。
要将模型转换为严格的单精度设计,请参见验证一个浮点嵌入式模型.
在不同的算法、数据路径、模型和总线元素之间共享数据类型
在某些情况下,不能依赖于数据类型继承(请参阅数据类型继承规则),以建立不同数据项的数据类型(例如并行数据路径中的信号线或数据路径中的总线元素)之间的等价性金宝app仿真软件。公共汽车
对象)。相反,您可以创建一个金宝app仿真软件。NumericType
或金宝app仿真软件。AliasType
对象在工作区或数据字典中。
创建一个金宝app仿真软件。NumericType
如果不希望通过创建别名重命名共享数据类型,则可以使用。设置IsAlias
财产假
(默认)。
这个例子展示了如何使用金宝app仿真软件。NumericType
对象在同一模型中的两个查找表块之间共享输出数据类型。
打开示例模型
sldemo_fuelsys
.sldemo_fuelsys
模型创建
金宝app仿真软件。NumericType
基本工作区中的对象。其中一个对象被命名s16En15
.在命令提示符下,检查的属性
s16En15
.s16En15
s16En15 = NumericType with properties: DataTypeMode: 'Single' IsAlias: 0 DataScope: 'Auto' HeaderFile: " Description: "
该对象表示内置的Simulink数据类型金宝app
单
.模型中,导航到
fuel_rate_control / airflow_calc
子系统。在建模选项卡上,单击模型数据编辑器.在模型数据编辑器中,检查信号选项卡。
在模型中,单击的输出信号泵恒块。模型数据编辑器数据类型列表示信号数据类型设置为
s16En15
.的输出信号斜坡率Ki块。此块的输出数据类型也设置为
s16En15
.更新方框图,并在必要时扩展数据类型列。列的右侧显示两个查找表块使用该数据类型
单
.在命令提示符下,配置
s16En15
表示数据类型双
.s16En15。DataTypeMode =“双”;
更新框图。
两个查找表块的输出信号现在使用数据类型
双
.由于数据类型继承,其他信号,如e0
而且e1
,获取相同的数据类型。
或者,要在同一模型中的算法或数据路径之间建立数据类型等价性,可以使用块数据类型传播而且继承的数据类型转换.使用这些块时,不需要创建和永久存储数据类型对象。但是,您不能使用这些块在不同模型中的信号之间共享数据类型,除非这些模型处于相同的模型引用层次结构中。
为信号数据重用自定义C数据类型
在模型中,您可以创建符合自定义C数据类型的信号,例如现有C代码定义的结构。使用这些信号:
用Simulink模型替换现有的C代码。金宝app
在Simulink中集成用于仿真的C代码(例如,通过使用遗留代码工具)金宝app。
准备生成代码(金宝app仿真软件编码器™),可以与现有代码集成。
使用这些技术来匹配您的自定义数据类型:
对于结构类型,创建
金宝app仿真软件。公共汽车
对象。使用该对象作为总线信号的数据类型。看到总线数据类型.对于枚举,创建一个枚举类并将其用作信号的数据类型。看到在Simulink模型中使用枚举数据金宝app.
匹配
类型定义
表示基元、数值数据类型的别名的语句,请使用金宝app仿真软件。AliasType
对象作为信号的数据类型。看到金宝app仿真软件。AliasType
.
要创建这些类和对象,可以使用该函数金宝appSimulink.importExternalCTypes
.
如果一个MATLAB函数block或statflow®图表在模型中使用导入的枚举或结构类型,则配置模型配置参数以包括(# include
)外部头文件中的类型定义。看到控件导入的总线和枚举类型定义(MATLAB函数块),在状态流程图中访问自定义代码变量和函数(Stateflow)而且在状态流程图中集成自定义结构(Stateflow)(图表)。
确定使用继承设置的信号的数据类型
当信号使用继承的数据类型设置时,例如继承:通过内部规则继承
(大多数块的默认设置),以确定信号用于模拟的有意义的数据类型,更新方框图,然后使用以下一种或两种技术:
使用这些技术检查数据类型可以帮助您:
在高层次上为模型设计数据类型策略。
调试由于量化和溢出造成的数值问题。
使模型在共享时更容易理解。
有关更多信息,请参见端口数据类型.
保留数据类型双
尽管改变了设置
如果模型中的许多数据项(信号、参数和状态)继续使用该数据类型双
配置块参数后,如输出数据类型,确认模型未配置为覆盖数据类型。看到控制数据类型覆盖.
另请参阅
金宝app仿真软件。AliasType
|金宝app仿真软件。NumericType
|金宝app仿真软件。公共汽车