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