主要内容

信号的控制数据类型

在Simulink中控制信号的数据类型万博1manbetx®模型时,您可以为相应的块输出指定数据类型。

您还可以通过以下任何一种方式将特定数据类型的新信号引入模型:

  • 从MATLAB中得到所需类型的负载信号数据®工作区通过根级进入您的模型轮廓尺寸块或从工作空间块。

  • 创建一个常数块,并将其参数设置为所需的类型。

  • 使用一个数据类型转换块将信号转换为所需的数据类型。

万博1manbetx在默认情况下,Simulink块决定其输出的数据类型。许多块允许您覆盖默认类型,并使用通常被命名的块参数显式指定输出数据类型输出数据类型.例如,输出数据类型参数出现在信号的属性块对话框中的。

有关更多信息,请参阅以下主题:

信息… 看到……

您可以指定的有效数据类型值

输入有效数据类型值

帮助您指定有效数据类型值的助手

使用数据类型助手指定数据类型

同时为多个块指定有效的数据类型值

使用模型数据编辑器进行批量编辑

输入有效数据类型值

通常,您可以指定输出数据类型为以下任何一种:

有效数据类型值因块而异。可以使用与块数据类型参数关联的下拉菜单查看特定块支持的数据类型。万博1manbetx例如,数据类型“数据存储内存块”对话框上的下拉菜单列出了它支持的数据类型,如下所示。万博1manbetx

有关特定块支持的数据类型的更多信息,请参阅Simulink文档中的块文档。万博1manbetx万博1manbetx

数据类型继承规则

块可以从各种来源继承数据类型,包括它们所连接的信号和特定的块参数。您可以指定数据类型参数的值作为确定输出信号如何继承其数据类型的规则。要查看块支持的继承规则,请使用块对话框上的数据类型下拉菜单。万博1manbetx下表列出了可以选择的典型规则。

继承规则 描述
继承:通过反向传播继承

万博1manbetx在数据类型传播期间,Simulink自动确定块的输出数据类型(参见数据类型传播).在这种情况下,块使用下行块或信号对象的数据类型。

继承:与输入相同

块使用其唯一输入信号的数据类型作为输出信号。

继承:与第一次输入相同

块使用它的第一个输入信号的数据类型作为输出信号。

继承:与第二次输入相同

块使用它的第二个输入信号的数据类型作为它的输出信号。

继承:通过内部规则继承

块使用一个内部规则来确定它的输出数据类型。内部规则选择数据类型,以优化数字精度、性能和生成的代码大小,同时考虑嵌入式目标硬件的属性。软件并不总是能够同时优化效率和数值精度。

当您将继承的数据类型应用到信号时,Simulink只有在您更新了框图之后才能确定信号的具体数据类型万博1manbetx。

  • 若要在框图上显示此特定数据类型,请参见端口数据类型

  • 要在一个可搜索的、可排序的表中检查多个信号的特定数据类型,请使用模型数据编辑器(在建模选项卡上,单击模型数据编辑器).右边的数据类型列显示每个信号的特定数据类型。有关更多信息,请参见模型数据编辑器

内置的数据类型

可以将数据类型参数的值指定为内置数据类型的名称,例如,布尔.要查看块支持的内置数据类型,请使用块对话框上的数据类型下拉菜单。万博1manbetx看到Simulink支持的万博1manbetx数据类型万博1manbetx获取所支持的所有内置数据类型的列表。万博1manbetx

数据类型的表达式

可以将数据类型参数的值指定为计算结果为数字数据类型对象的表达式。只需在块对话框的数据类型字段中输入表达式。一般情况下,输入下列表达式之一:

使用模型数据编辑器进行批量编辑

使用模型数据编辑器,可以同时将相同的数据类型分配给多个信号。通过配置数据类型和多个的其他属性,可以使用这种技术来设计模型的接口轮廓尺寸外港一次阻塞(见配置数据接口).您还可以精细地控制块算法中任意信号的数据类型。

例如,slexAircraftExample模型飞机纵向飞行控制例子中包含很多获得块。假设您想在模型的根级指定三个Gain块的输出数据类型为.您可以通过如下方式完成此任务:

  1. 在模型数据编辑器中建模选项卡上,单击模型数据编辑器),检查信号选项卡。

  2. 旁边的内容过滤框,切换过滤器使用选择按钮。

  3. 在模型的顶层,选择代表这三个输出的信号线获得块(标记Zw兆瓦,Mq).模型数据编辑器显示了与三个信号对应的三行。

  4. 在模型数据编辑器中,选择所有三个信号(行)。例如,您可以按Ctrl +一个或持有转变的顶部和底部行列。

  5. 对于这三个信号中的任何一个,单击数据类型列。在下拉列表中选择.模型数据编辑器将此选择应用于所有选中的行。

要将模型转换为严格的单一精度设计,请参见验证浮点嵌入式模型

在分离的算法、数据路径、模型和总线元素之间共享数据类型

在某些情况下,不能依赖数据类型继承(参见数据类型继承规则)来建立不同数据项的数据类型之间的等价性(如并行数据路径中的信号线或总线元素)万博1manbetx仿真软件。公共汽车对象)。相反,您可以创建万博1manbetx仿真软件。NumericType万博1manbetx仿真软件。AliasType对象在工作区或数据字典中。

创建一个万博1manbetx仿真软件。NumericType对象,如果不想通过创建别名重命名共享数据类型。设置IsAlias财产(默认)。

这个例子展示了如何使用万博1manbetx仿真软件。NumericType对象共享同一模型中的两个查找表块之间的输出数据类型。

  1. 打开示例模型sldemo_fuelsys

    sldemo_fuelsys

    模型的创建万博1manbetx仿真软件。NumericType对象。其中一个物体被命名为s16En15

  2. 在命令提示符处,检查s16En15

    s16En15
    s16En15 = NumericType with properties: DataTypeMode: 'Single' IsAlias: 0 DataScope: 'Auto' HeaderFile: " Description: "

    这个对象表示内置的Simulink数据类型万博1manbetx

  3. 在模型中,导航到fuel_rate_control / airflow_calc子系统。

  4. 建模选项卡上,单击模型数据编辑器.在模型数据编辑器中,检查信号选项卡。

  5. 在模型中,点击输出信号泵恒块。模型数据编辑器数据类型列显示信号数据类型被设置为s16En15

  6. 点击的输出信号斜坡率Ki块。此块的输出数据类型也被设置为s16En15

  7. 更新框图,如有必要,扩大宽度数据类型列。列的右侧显示两个查找表块使用该数据类型

  8. 在命令提示符处,配置s16En15表示数据类型

    s16En15。DataTypeMode =“双”

  9. 更新框图。

    两个查找表块的输出信号现在使用该数据类型.由于数据类型继承,其他信号,如e0e1,获取相同的数据类型。

或者,要在相同模型中的算法或数据路径之间建立数据类型等效,可以使用以下代码块数据类型传播继承的数据类型转换.使用这些块时,不需要创建和永久存储数据类型对象。但是,除非模型处于相同的模型引用层次结构中,否则不能使用块在不同模型中的信号之间共享数据类型。

为信号数据重用自定义C数据类型

在模型中,您可以创建符合自定义C数据类型的信号,例如现有C代码定义的结构。使用这些信号:

  • 用Simulink模型替换现有的C代码。万博1manbetx

  • 在Simulink中集成C代码进行仿真(例如,通过使用遗留代码工具)。万博1manbetx

  • 准备生成代码(万博1manbetx仿真软件编码器™),您可以与现有代码集成。

使用这些技术来匹配您的自定义数据类型:

要创建这些类和对象,可以使用该函数万博1manbetxSimulink.importExternalCTypes

如果一个MATLAB函数块或Stateflow®图表使用导入的枚举或结构类型,将模型配置参数配置为包括(# include)从外部头文件的类型定义。看到控制导入总线和枚举类型定义(MATLAB函数块),访问状态流图中的自定义代码变量和函数(Stateflow)在状态流图中集成自定义结构(Stateflow)(图表)。

确定使用继承设置的信号的数据类型

当信号使用继承的数据类型设置时,例如继承:通过内部规则继承(大多数块的默认设置),为了确定信号用于模拟的有意义的数据类型,更新框图,然后使用其中一种或两种技术:

  • 在Simuli万博1manbetxnk编辑器中调试选项卡上,选择信息覆盖然后导航到港口部分。选择要显示的端口数据类型。数据类型出现在框图中每个信号旁边。有关更多信息,请参见端口数据类型

  • 检查右边的数据类型在模型数据编辑器中建模选项卡上,单击模型数据编辑器).有关更多信息,请参见模型数据编辑器

使用这些技术检查数据类型可以帮助您:

  • 在高层为模型设计数据类型策略。

  • 调试由于量化和溢出造成的数值问题。

  • 使模型在共享时更容易理解。

有关更多信息,请参见端口数据类型

数据类型仍尽管改变设置

如果模型中的许多数据项(信号、参数和状态)继续使用该数据类型配置块参数后,如输出数据类型,确认模型没有配置为覆盖数据类型。看到控制数据类型覆盖

另请参阅

||

相关的话题