主要内容

信号的控制数据类型

控制Simulink中信号的数据类型金宝app®在模型中,可以为相应的块输出指定数据类型。

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

  • 从MATLAB中得到所需类型的负载信号数据®通过根级别将工作区添加到模型中输入块还是块从工作空间块。

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

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

金宝app在默认情况下,Simulink块决定其输出的数据类型。许多块允许您覆盖默认类型,并使用通常被命名的块参数显式指定输出数据类型输出数据类型.例如,输出数据类型参数出现在信号的属性“常量块”对话框的窗格。

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

有关。。。 看见

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

输入有效的数据类型值

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

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

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

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

输入有效的数据类型值

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

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

有关特定块支持的数据类型的更多信息,请参阅Simulink文档中该块的文档。金宝app金宝app

数据类型继承规则

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

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

金宝app在数据类型传播期间,Simulink自动确定块的输出数据类型(参见数据类型传播)。在这种情况下,块使用下游块或信号对象的数据类型。

继承:与输入相同

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

继承:与第一个输入相同

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

继承:与第二个输入相同

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

继承:通过内部规则继承

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

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

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

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

内置数据类型

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

数据类型表达式

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

  • 菲克特命令

    将数据类型参数的值指定为调用菲克特函数。此函数允许您创建金宝appSimulink.NumericType对象,该对象描述定点或浮点数据类型。

  • 数据类型对象名

    将数据类型参数的值指定为表示数据类型的数据对象的名称。从类实例化的Simulink数据对象,例如金宝app金宝appSimulink.NumericType金宝appSimulink.AliasType,简化了对输出数据类型进行模型范围更改的任务,并允许您为数据类型使用自定义别名。看见数据对象有关Simulink数据对象的详细信息。金宝app

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

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

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

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

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

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

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

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

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

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

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

创建一个金宝appSimulink.NumericType对象,如果不希望通过创建别名重命名共享数据类型。请设置伊莎莉亚财产(默认)。

这个例子展示了如何使用金宝appSimulink.NumericType对象在同一模型中的两个查找表块之间共享输出数据类型。

  1. 打开示例模型SLU燃料系统

    SLU燃料系统

    模型创建金宝appSimulink.NumericType对象。其中一个物体被命名为s16En15

  2. 在命令提示下,检查的属性s16En15

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

    此对象表示内置的Simulink数据类型金宝app仅有一个的

  3. 在模型中,导航到燃油率控制/气流计算子系统。

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

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

  6. 单击该设备的输出信号缓变率块。此块的输出数据类型也被设置为s16En15

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

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

    s16En15.DataTypeMode=“双人”;

  9. 更新框图。

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

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

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

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

  • 用Simulink模型替换现有的C代码。金宝app

  • 在Simulink中集成C代码进行仿真(例如,通过使用遗留代码工具)。金宝app

  • 准备生成代码(金宝appSimulink编码器™),您可以与现有代码集成。

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

要创建这些类和对象,可以使用函数金宝appSimulink.ImportTexternalTypes

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

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

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

  • 在Simuli金宝appnk编辑器中,在调试选项卡上,选择信息覆盖然后导航到“端口”部分。选择要显示的端口数据类型。数据类型显示在每个信号旁边的方框图上。有关详细信息,请参阅端口数据类型

  • 检查右边的数据类型模型数据编辑器中的列(位于建模选项卡,单击模型数据编辑器)。有关详细信息,请参阅模型数据编辑器

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

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

  • 调试量化和溢出导致的数值问题。

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

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

数据类型仍然存在尽管改变了设置

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

另见

||

相关话题