控制模块的参数数据类型

A嵌段参数,如获得一个参数获得块,具有相同的方式,一个信号具有一个数据类型的数据类型(见控制信号数据类型)。MATLAB®变量,万博1manbetxSimulink.Parameter对象和用于设置模块的参数值等参数对象也有数据类型。控制块参数的数据类型:

  • 精确模拟硬件的控制算法的执行。

  • 生成高效的代码。

  • 集成了您的自定义代码生成的代码。

  • 避免使用的数据类型,你的目标硬件不支持。万博1manbetx

减少维护工作量与数据类型的继承

默认情况下,模块参数,使用的数据类型数字MATLAB变量万博1manbetxSimulink.Parameter对象获取通过继承和上下文敏感的数据类型的数据类型。例如,如果a的输入和输出信号获得块中使用的数据类型中,获得参数通常使用相同的数据类型。如果使用万博1manbetxSimulink.Parameter对象来设置该块参数的值,默认情况下,该对象使用相同的数据类型作为参数。你可以把这个继承的优势,避免明确的参数指定数据类型。

一些继承规则选择比相应的信号使用的数据类型等参数的数据类型。例如,假设:

  • 一个的输入和输出信号获得块使用定点数据类型的二进制点仅缩放。

  • 参数属性标签,参数的数据类型设定为继承:通过内部规则继承(默认值)。

  • 参数属性选项卡中,可以使用指定参数最小值和最大值参数最小参数最大

数据类型设置继承:通过内部规则继承可导致块选择不同的数据类型,使用不同的字长或缩放,比信号使用的数据类型。您为参数指定的最小值和最大值影响缩放该块选。

当您选择内部规则(继承:通过内部规则继承)使的Simulink万博1manbetx®选择数据类型,模拟或生成代码之前,配置目标硬件的特性。内部规则可以使用这些设置来选择能产生有效的生成的代码的数据类型。

上下文相关的数据类型

当您使用MATLAB变量或万博1manbetxSimulink.Parameter对象来设置一个块参数的值,则可以配置变量或参数对象使用上下文敏感数据类型。当模拟或生成的代码中,变量或参数对象使用相同的数据类型的块参数。利用这种技术,可以匹配与块参数的数据类型的变量或参数对象的数据类型。以控制块参数和变量或对象的数据类型,仅指定该块参数的数据类型。

为了利用上下文相关的数据类型,一个MATLAB变量的值设定为值。为一个万博1manbetxSimulink.Parameter对象,设置通过使用属性值并设置数据类型属性汽车(默认值)。

上下文敏感的数据打字结构字段

正如描述组织相关块参数定义的结构,你可以组织多块参数值到一个结构。

参数结构的字段不支持上下文敏感的数据类型。万博1manbetx但是,匹配字段与模型中的其他数据项的数据类型的数据类型,你可以使用一个总线对象和数据类型的对象。

  1. 用一个万博1manbetxSimulink.Bus对象作为结构的数据类型。

  2. 用一个万博1manbetxSimulink.AliasType要么万博1manbetxSimulink.NumericType对象作为在总线对象和作为目标数据项的数据类型的元素的数据类型。

技术要明确指定的参数数据类型

支持离散时间仿真和代码生万博1manbetx成许多块(如在内置的离散库)使您可以显式地指定参数的数据类型。例如,在一个正d查找表阻止对话框,在数据类型选项卡,您可以通过使用指定的查找表数据的数据类型数据表参数。在一个获得阻止对话框,使用参数属性选项卡设置参数的数据类型,它控制的数据类型获得参数。

某些块,如在连续库,不要让你指定参数的数据类型。这些嵌段参数使用内部规则来选择的数据类型。以间接地控制这样的参数的数据类型,应用数据类型到万博1manbetxSimulink.Parameter而不是反对。

当您使用万博1manbetxSimulink.Parameter对象或其他参数对象设置一个块参数的值,则可以使用数据类型对象的属性来指定的数据类型。

如果您使用的模型参数,你可以指定一个数据类型:

  • 对于模型参数,你在模型工作区存储。

  • 对于某些块(如那些在离散库),用于使用该模型参数中的块参数。

  • 对于您在指定参数值模型块。

这些数据类型的默认设置通常使用继承和上下文敏感的数据类型。例如,的默认值数据类型一个物业万博1manbetxSimulink.Parameter对象汽车,这会导致参数对象获取从块参数或使用的对象参数的数据类型。

要明确指定数据类型,你可以在块的对话框和属性对话框中使用的数据类型助理。有关数据类型Assistant的信息,请参阅指定使用数据类型助理数据类型

使用模型数据编辑器的批量编辑

使用模型数据编辑器(在造型选项卡,单击模型数据编辑器),可以指定同时为多个块参数相同的数据类型。在参数选项卡,设置更改视图下拉列表设计并且通过使用指定的数据类型数据类型柱。

有关模型数据编辑器的详细信息,请参阅配置数据属性使用模型数据编辑器

计算最佳精度定点缩放可调谐模块参数

当您应用定点数据类型的模型,你可以使用数据类型助理和定点工具来计算最佳精度缩放为可调块参数。A嵌段参数,万博1manbetxSimulink.Parameter物体,或其他参数对象是可调如果它出现在所生成的代码存储在存储器中的变量。

所选择的比例必须适应值,您希望分配给该参数的范围。为了使工具来计算适当的缩放,指定要在块或在一个参数对象中的范围的信息。然后,使用这些技术中的一种来计算比例:

  • 使用定点工具自动缩放整个模型或子系统。该工具可以提出并应用定点数据类型的数据项,包括块参数,万博1manbetxSimulink.Parameter对象,信号,和状态。

  • 配置单个模块的参数或参数对象来计算自己的缩放。

    当以后改变值范围参数,该技术使您或模型来重新计算所述缩放,而无需自动缩放整个模型。但是,如果改变参数的取值范围也改变相关的信号值的范围,你必须手动计算并应用新的缩放的信号,或使用定点工具自动缩放模型或子系统。

有关定点数据类型,块参数,以及其他工具和概念的基本信息,可使用该表中的信息。

话题 更多信息
定点数据类型和缩放 定点数在Simulink万博1manbetx(定点设计师)
如何指定块参数和参数对象值范围的信息 指定块参数最小值和最大值
如何使用数据类型助理 指定使用数据类型助理数据类型
可调谐性和块参数表示在所生成的代码 如何生成的代码存储内部信号,状态和参数数据(万博1manbetx编码器的Simulink)和在生成的代码创建可调校准参数(万博1manbetxSimulink的编码器)

通过定点工具自动缩放整个模型

您可以使用定点工具模型中的自动缩放数据项,包括可调参数,其值取决于这些参数的信号。如果你使用这种技术:

  • 配置参数可调谐,使用参数的对象(例如,万博1manbetxSimulink.Parameter),而不是模型参数配置对话框。定点工具可以自动缩放参数对象,但不能自动缩放数值变量,你可以通过模型参数配置对话框中选择。

    如果模型已经使用了模型参数配置对话框,使用tunablevars2parameterobjects函数来创建参数对象,而不是。

  • 当您使用万博1manbetxSimulink.Parameter对象组块的参数值,在指定的对象,而不是块中的值的范围的信息。定点工具使用中的每个对象的范围的信息提供一种用于该对象的数据类型。

  • 要启用该工具自动伸缩的参数值,你存储为一个结构,使用的领域万博1manbetxSimulink.Bus对象作为整个结构的数据类型。通过使用为每个字段指定的范围的信息马克斯在总线对象相应的元件的性质。然后,该工具可以通过使用应用数据类型到每个元件数据类型属性。

    使用总线对象作为参数结构的数据类型,见控制字段的数据类型和特性通过创建参数对象

  • 在您应用数据类型的定点工具提出,清除参数和参数对象,它们的数据类型,你不希望的工具来改变的建议。例如,清除这些实体的建议:

    • 参数对象,你导入从自己手写代码生成的代码通过应用存储类如ImportedExtern

    • 万博1manbetxSimulink.Parameter在模型工作区中的模型参数。

      另外,自动缩放模型前,考虑与数字MATLAB变量替换这些参数对象,以防止定点工具从自动缩放它们。

      允许该工具的自动缩放模型参数可以增加无意的数据类型不匹配的模型参数值之间的风险(您指定模型在父模型块),在模型工作区的模型参数,并在模型中的客户端块的参数。

    • 参数对象,其数据类型属性设置为汽车(上下文敏感的)。如果你想在参数对象继续使用上下文敏感数据类型中清除建议。

有关使用定点工具自动缩放更多信息万博1manbetxSimulink.Parameter对象,见自动缩放数据对象使用定点工具(定点设计师)。

计算最佳精度为缩放各个参数

您可以配置一个块参数或万博1manbetxSimulink.Parameter对象,计算出自己最好的精密缩放。首先,指定为目标参数或参数对象值范围的信息。然后,使用数据类型助手或功能fixdt施加数据类型到参数或对象。当你不希望使用定点工具自动缩放模型使用这些技术。

启用块参数自动计算最佳精度缩放。可以启用某些块的参数(通常在离散库块)来自动计算最佳精度的定点缩放。使用这种技术来存储在模型中,而不是一个参数对象的范围及数据类型的信息。当你使用这个技术,如果您以后更改范围的信息,块参数自动重新计算最佳精度的缩放。

在块对话框中,使用功能fixdt指定与未指定的缩放定点数据类型。例如,使用的最佳精度为缩放查找表的数据,并存储在一个16位字中的数据:

  1. 数据类型一个选项卡正d查找表块,下最低限度最大列中,指定表数据的各要素的值范围。

  2. 在下面数据类型列中,设置表的数据类型,以fixdt(1,16)

  3. 如果使用可调万博1manbetxSimulink.Parameter对象来设置表数据参数的值,设置数据类型所述对象的属性,以汽车。在生成的代码,所述参数对象使用相同的缩放作为块参数。

当您模拟或生成代码,查找表数据使用符号的16位定点数据类型,其二进制点缩放取决于您所指定的范围内的信息。所计算的缩放允许定点类型来表示位于所述范围内的值。如果以后更改最小或最大值,该块当你模拟或生成代码重新计算比例。

计算缩放参数对象是否。如果使用万博1manbetxSimulink.Parameter对象来设置的多个块的参数的值,并且如果该块参数使用不同的数据类型(包括不同的固定点定标),则不能设置数据类型所述对象的属性,以汽车(默认值)。相反,可以通过在对象指定范围和数据类型信息计算用于参数对象最佳精度的定点缩放。还可以使用这种技术来存储范围和数据类型信息中的参数对象,而不是一个块对话框。当你使用这个技术,如果您以后更改范围的信息,您必须使用数据类型助手重新计算最精确缩放。

假设您创建一个参数对象表示值15.25,且这个值的设计范围为0.0032.00。要计算最佳精度缩放,使用数据类型助理。

  1. 在命令提示,创建在基工作区,其值是一个参数对象15.25

    myParam = 万博1manbetxSimulink.Parameter(15.25);

  2. 在MATLAB工作区浏览器中,双击对象myParam。打开属性对话框。

  3. 指定对象中的范围的信息。例如,一套最低限度0.00最大32.00

  4. 数据类型fixdt(0,16,0)

  5. 扩展数据类型助理和点击计算最佳精度缩放

    从数据类型的变化fixdt(0,16,0)fixdt(0,16,10)

所计算出的标度(10个比特的分数长度)使定点数据类型在该范围内谎言,指定表示参数值。

如果指定的参数对象范围和数据类型的信息,考虑取消从使用对象块的范围和数据类型信息。一些工具,如定点工具,忽略你的块指定和使用只在参数对象的信息的范围的信息。除去从块防止混乱和用户错误的信息。

例如,在参数属性一个选项卡获得阻止对话框,设置参数最小参数最大[]。组参数的数据类型到继承的数据类型,例如继承:继承“增益”以使得该块参数使用相同的数据类型作为参数对象。

检测数值精确性的问题由于量化和溢出

当一个块参数,MATLAB变量或参数对象的数据类型不能代表所指定的值时,数据类型量化值,从而损害数值精度。例如,32位浮点数据类型浮动在C代码)不能精确地表示该参数值1.73。当一个数据项的谎言值范围以外的真实世界的值,该数据类型可以表示,溢出可能会导致信息丢失。

为了检测这些问题,可以使用诊断参数配置下配置参数>诊断>数据有效性>参数。设置这些诊断配置参数中的值警告要么错误

  • 检测垂头丧气

  • 检测精度损失

  • 检测下溢

  • 检测溢出

重复使用自定义的C数据类型作为参数数据

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

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

  • (例如,通过使用传统代码工具)整合在Simulink为模拟C代码。万博1manbetx

  • 准备生成代码(万博1manbetxSimulink的编码器™),您可以与现有的代码集成。

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

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

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

数学表达式的数据类型

如果使用数学表达式指定一个块参数,块确定用的MATLAB和Simulink数据类型规则的组合的最终参数的数据类型。万博1manbetx

假设你定义了两个参数对象int8ParamdoubleParam,并使用对象来指定恒值参数在不变块。

int8Param = 万博1manbetxSimulink.Parameter(3);int8Param.DataType ='INT8';doubleParam = 万博1manbetxSimulink.Parameter(9.36);doubleParam.DataType ='双';

不变块确定的数据类型恒值参数使用下列步骤:

  1. 每个参数对象连铸指定的数值指定的数据类型。

    参数对象 数据类型 数值 结果
    int8Param INT8 3 INT8(3)
    doubleParam 9.36 翻倍(9.36)

  2. 块计算指定的表达式,int8Param * doubleParam使用MATLAB规则。

    涉及一个表达数据类型和不同类型的返回不同类型的结果。因此,表达式的结果INT8(3)*双(9.36)INT8(28)

如果使用表达式来设置的参数对象的值(如万博1manbetxSimulink.Parameter),参数在表达式中使用的对象遵循不同的数据类型的规则。该汽车的设置数据类型酒店有一个稍微不同的含义。看到设置变量值通过使用数学表达式

在生成的代码块的参数数据类型

有关在生成的代码控制参数数据类型的详细信息,请参见在生成的代码的参数数据类型(万博1manbetx编码器的Simulink)。

相关话题