主要内容

控制块参数数据类型

块参数,例如获得参数的获得块具有数据类型的方式与信号具有数据类型的方式相同(参见控制信号数据类型).MATLAB®变量,金宝app仿真软件。参数对象和用于设置块参数值的其他参数对象也具有数据类型。控制块参数数据类型为:

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

  • 生成高效的代码。

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

  • 避免使用目标硬件不支持的数据类型。金宝app

使用数据类型继承减少维护工作

默认情况下,块参数是使用数据类型的数值MATLAB变量金宝app仿真软件。参数对象通过继承和上下文敏感的数据类型获取数据类型。例如,如果a的输入和输出信号获得块使用该数据类型,获得参数通常使用相同的数据类型。如果你使用金宝app仿真软件。参数对象来设置块参数的值,默认情况下,对象使用与参数相同的数据类型。您可以利用这种继承来避免显式地为参数指定数据类型。

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

  • a的输入和输出信号获得块使用固定点数据类型,只进行二进制点缩放。

  • 参数属性选项卡,参数的数据类型被设置为继承:通过内部规则继承(默认)。

  • 参数属性选项卡时,可以使用参数最小值参数的最大

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

当您选择内部规则(继承:通过内部规则继承)以启用Simulink金宝app®要选择数据类型,请在模拟或生成代码之前,配置目标硬件的特征。内部规则可以使用这些设置选择生成高效代码的数据类型。

上下文敏感的数据类型

当您使用MATLAB变量或金宝app仿真软件。参数对象来设置块参数的值,可以配置变量或参数对象来使用上下文相关的数据输入。在模拟或生成代码时,变量或参数对象使用与块参数相同的数据类型。使用这种技术,您可以将变量或参数对象的数据类型与块参数的数据类型匹配。若要控制块参数和变量或对象的数据类型,只需指定块参数的数据类型。

要使用上下文敏感的数据类型,将MATLAB变量的值设置为价值。对于一个金宝app仿真软件。参数对象,设置价值属性,使用值并设置数据类型财产汽车(默认)。

结构字段的上下文相关数据类型

中描述的在结构中组织相关块参数定义,可以将多个块参数值组织为一个结构。

参数结构的字段不支持上下文敏感的数据类型。金宝app但是,要使字段的数据类型与模型中另一个数据项的数据类型相匹配,可以使用总线对象和数据类型对象。

  1. 使用一个金宝app仿真软件。公共汽车对象作为结构的数据类型。

  2. 使用一个金宝app仿真软件。AliasType金宝app仿真软件。NumericType对象作为总线对象中元素的数据类型,并作为目标数据项的数据类型。

显式指定参数数据类型的技术

支持离散时间模拟和代码生金宝app成的许多块(例如内置的Discrete库中的那些块)使您能够显式地指定参数数据类型。例如,在一个一天的查找表块对话框中数据类型选项卡,您可以使用表数据参数。在一个获得块对话框中,使用参数属性选项卡设置参数的数据类型控件的数据类型获得参数。

有些块(例如Continuous库中的块)不允许指定参数数据类型。这些块参数使用内部规则来选择数据类型。若要间接控制此类参数的数据类型,请将该数据类型应用于金宝app仿真软件。参数对象。

当你使用金宝app仿真软件。参数对象或其他参数对象来设置块参数的值,可以使用数据类型属性来指定数据类型。

如果使用模型参数,则可以指定数据类型:

  • 用于存储在模型工作区中的模型参数。

  • 使用一些块(如离散库中的那些块),用于使用模型实参的块形参。

  • 中指定的参数值模型块。

这些数据类型的默认设置通常使用继承和上下文相关的数据类型数据类型财产的金宝app仿真软件。参数对象是汽车,它导致形参对象从块形参或使用该对象的形参中获取数据类型。

要显式指定数据类型,可以在块对话框和属性对话框中使用数据类型助手。有关数据类型助手的信息,请参阅使用数据类型助手指定数据类型

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

使用模型数据编辑器(位于建模选项卡上,单击模型数据编辑器),可以同时为多个块参数指定相同的数据类型。在参数选项卡,设置改变看法下拉列表到设计,并使用数据类型列。

有关模型数据编辑器的更多信息,请参见使用模型数据编辑器配置数据属性

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

当将定点数据类型应用到模型时,可以使用数据类型助手和定点工具计算可调块参数的最佳精度缩放。一块参数,金宝app仿真软件。参数对象,或其他参数对象可调如果它作为存储在内存中的变量出现在生成的代码中。

所选的缩放必须适应您希望分配给参数的值的范围。要使工具能够计算适当的缩放,请在块或参数对象中指定范围信息。然后,使用以下技术之一来计算比例:

  • 使用定点工具自动缩放整个模型或子系统。该工具可以为数据项(包括块参数)提出并应用定点数据类型,金宝app仿真软件。参数对象、信号和状态。

  • 配置单个块参数或参数对象来计算它们自己的伸缩。

    稍后更改参数的值范围时,此技术使您或模型能够重新计算缩放,而无需自动缩放整个模型。但是,如果更改参数的值范围也会更改关联信号的值范围,则必须手动计算并应用信号的新缩放,或使用定点工具自动缩放模型或子系统。

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

主题 更多的信息
定点数据类型和缩放 Simulink中的定点数字金宝app(定点设计师)
如何为块参数和参数对象指定值范围信息 指定块参数的最小值和最大值
如何使用数据类型助手 使用数据类型助手指定数据类型
生成代码中的可调性和块参数表示 生成的代码如何存储内部信号、状态和参数数据(金宝app仿真软件编码器)在生成的代码中创建可调谐校准参数(金宝app仿真软件编码器)

使用定点工具自动缩放整个模型

您可以使用定点工具来自动缩放模型中的数据项,包括可调参数和其值依赖于这些参数的信号。如果你使用这个技巧:

  • 要将参数配置为可调参数,请使用参数对象(例如,金宝app仿真软件。参数),而不是“模型参数配置”对话框。定点工具可以自动缩放参数对象,但不能自动缩放通过“模型参数配置”对话框选择的数值变量。

    如果您的模型已经使用了“模型参数配置”对话框,请使用TunableVars2参数对象函数来创建参数对象。

  • 当你使用金宝app仿真软件。参数对象来设置块参数值,在对象中而不是在块中指定值范围信息。定点工具使用每个对象中的范围信息来建议该对象的数据类型。

  • 要使该工具能够自动缩放存储为结构字段的参数值,请使用金宝app仿真软件。公共汽车对象作为整个结构的数据类型。属性指定每个字段的范围信息最小值马克斯总线对象中相应元素的属性。然后,工具可以通过使用数据类型财产。

    要将总线对象用作参数结构的数据类型,请参见通过创建参数对象控制字段数据类型和特征

  • 在应用定点工具建议的数据类型之前,清除不希望工具更改其数据类型的参数和参数对象的建议。例如,明确这些实体的建议:

    • 参数对象,您可以通过应用存储类(例如ImportedExtern

    • 金宝app仿真软件。参数模型工作区中的模型参数。

      或者,在自动缩放模型之前,考虑用数值MATLAB变量替换这些参数对象,以防止定点工具自动缩放它们。

      允许工具自动缩放模型参数可能会增加模型参数值(在中指定)之间意外数据类型不匹配的风险模型父模型中的块)、模型工作区中的模型参数以及模型中的客户机块参数。

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

有关使用定点工具自动缩放的详细信息金宝app仿真软件。参数对象,看到使用定点工具自动缩放数据对象(定点设计师)

计算个人参数的最佳精度缩放

您可以配置块参数或金宝app仿真软件。参数对象来计算自己的最佳精度缩放。首先,为目标参数或参数对象指定值范围信息。然后,使用数据类型助手或该函数fixdt将数据类型应用于参数或对象。当您不想使用定点工具来自动缩放模型时,可以使用这些技术。

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

在块对话框中,使用该函数fixdt指定具有未指定缩放的定点数据类型。例如,对查询表数据使用最佳精度缩放,并以16位字存储数据:

  1. 数据类型选项卡的一天的查找表块,在最低限度最大列,为表数据的元素指定值范围。

  2. 数据类型列,将表数据类型设置为fixdt (16)

  3. 如果使用可调金宝app仿真软件。参数对象设置表数据参数的值时,设置数据类型对象的属性汽车.在生成的代码中,参数对象使用与块参数相同的缩放。

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

计算参数对象的缩放。如果你使用金宝app仿真软件。参数对象来设置多个块参数的值,并且如果块参数使用不同的数据类型(包括不同的定点缩放),则不能设置数据类型对象的属性汽车(默认)。相反,您可以通过在对象中指定范围和数据类型信息来计算参数对象的最佳精度定点缩放。还可以使用此技术将范围和数据类型信息存储在参数对象中,而不是块对话框中。在使用此技术时,如果稍后更改范围信息,则必须使用数据类型助手重新计算最佳精度缩放。

假设您创建了一个参数对象来表示该值15.25,并且该值的设计范围介于0.0032.00. 要计算最佳精度缩放,请使用数据类型助手。

  1. 在命令提示下,在基本工作空间中创建一个值为的参数对象15.25

    myParam = 金宝appSimulink.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代码。金宝app

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

  • 准备生成代码(金宝app仿真软件编码器™),您可以与现有代码集成。

使用以下技术匹配您的自定义数据类型:

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

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

数学表达式的数据类型

如果使用数学表达式指定块参数,块将使用MATLAB和Simulink数据类型规则的组合确定最终参数数据类型。金宝app

假设您定义了两个参数对象int8Param双参数,并使用这些对象指定恒定值参数在一个常数块。

int8Param = 金宝appSimulink.Parameter (3);int8Param。数据类型=“int8”; doubleParam=Si金宝appmulink.参数(9.36);doubleParam.DataType=“双人”

常数块的数据类型恒定值参数使用以下步骤:

  1. 每个参数对象将指定的数值转换为指定的数据类型。

    参数对象 数据类型 数值 后果
    int8Param int8 3. int8 (3)
    双参数 9.36 双(9.36)

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

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

如果使用表达式设置参数对象的值(例如金宝app仿真软件。参数),表达式中使用的参数对象遵循不同的数据类型规则。的汽车的设置数据类型属性的含义略有不同。看见使用数学表达式设置变量值

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

有关在生成的代码中控制参数数据类型的更多信息,请参见生成代码中的参数数据类型(金宝app仿真软件编码器)

相关的话题