控制块参数数据类型
块参数,例如获得a的参数获得块具有数据类型,就像信号具有数据类型一样(参见控制信号的数据类型).MATLAB®变量,金宝app仿真软件。参数
对象和用于设置块参数值的其他参数对象也具有数据类型。控制块参数数据类型为:
在硬件上精确模拟控制算法的执行。
生成高效的代码。
将生成的代码与自定义代码集成。
避免使用目标硬件不支持的数据类型。金宝app
使用数据类型继承减少维护工作
默认情况下,块参数,数值MATLAB变量使用的数据类型双
,金宝app仿真软件。参数
对象通过继承的和上下文敏感的数据类型获取数据类型。例如,如果a的输入输出信号获得块使用的数据类型单
,获得参数通常使用相同的数据类型。如果你使用金宝app仿真软件。参数
对象设置块参数的值,默认情况下,该对象使用与该参数相同的数据类型。您可以利用这种继承来避免显式地为参数指定数据类型。
有些继承规则选择参数数据类型,而不是相应信号使用的数据类型。例如,假设:
a的输入和输出信号获得块使用定点数据类型,只使用二进制点缩放。
在参数属性选项卡,参数数据类型设置为
继承:通过内部规则继承
(默认)。在参数属性选项卡中,使用指定参数的最小值和最大值参数最小而且参数的最大.
数据类型设置继承:通过内部规则继承
可以导致块选择与信号使用的数据类型不同的数据类型,具有不同的字长或缩放。为参数指定的最小值和最大值会影响块选择的缩放。
当您选择内部规则时(继承:通过内部规则继承
)以启用Simulink金宝app®若要选择数据类型,在模拟或生成代码之前,请配置目标硬件的特征。内部规则可以使用这些设置来选择生成高效代码的数据类型。
上下文敏感的数据类型
当你使用MATLAB变量或金宝app仿真软件。参数
对象设置块参数的值时,可以配置要使用的变量或参数对象上下文相关的数据输入。在模拟或生成代码时,变量或参数对象使用与块参数相同的数据类型。使用这种技术,您可以将变量或参数对象的数据类型与块参数的数据类型相匹配。要控制块参数和变量或对象的数据类型,只需指定块参数的数据类型。
若要使用上下文敏感的数据类型,请将MATLAB变量的值设置为a双
价值。对于一个金宝app仿真软件。参数
对象,设置价值
属性,以使用双
值,并设置数据类型
财产汽车
(默认)。
结构字段的上下文敏感数据类型
如在在结构中组织相关块参数定义,可以将多个块参数值组织到一个结构中。
参数结构的字段不支持上下文敏感的数据类型。金宝app但是,要将字段的数据类型与模型中另一个数据项的数据类型相匹配,可以使用总线对象和数据类型对象。
使用一个
金宝app仿真软件。公共汽车
对象作为结构的数据类型。使用一个
金宝app仿真软件。AliasType
或金宝app仿真软件。NumericType
对象作为总线对象中元素的数据类型,并作为目标数据项的数据类型。
显式指定参数数据类型的技术
支持离散时间模拟和代码生金宝app成的许多块(例如内置Discrete库中的那些块)使您能够显式地指定参数数据类型。例如,在一个n-D查找表块对话框,在数据类型选项卡时,可以使用表数据参数。在一个获得块对话框中,使用参数属性选项卡设置参数数据类型控件的数据类型获得参数。
某些块(例如Continuous库中的块)不允许指定参数数据类型。这些块参数使用内部规则来选择数据类型。要间接控制该参数的数据类型,请将该数据类型应用于金宝app仿真软件。参数
对象。
当你使用金宝app仿真软件。参数
对象或其他参数对象来设置块参数的值时,可以使用数据类型
对象的属性指定数据类型。
如果你使用模型参数,你可以指定一个数据类型:
对于存储在模型工作区中的模型参数。
对于某些块(例如Discrete库中的那些块),用于使用模型参数的块参数。
属性中指定的实参值模型块。
这些数据类型的默认设置通常使用继承和上下文敏感的数据类型。的默认值数据类型
的属性金宝app仿真软件。参数
对象是汽车
,这将导致参数对象从块参数或使用该对象的参数获取数据类型。
若要显式指定数据类型,可以在块对话框和属性对话框中使用数据类型助手。有关数据类型助手的信息,请参见使用数据类型助手指定数据类型.
使用模型数据编辑器进行批量编辑
使用模型数据编辑器(在建模选项卡上,单击模型数据编辑器),你可以同时为多个块参数指定相同的数据类型。在参数选项卡,设置改变观点下拉列表设计
方法指定数据类型数据类型列。
有关更多信息,请参见模型数据编辑器.
计算可调块参数的最佳精度定点缩放
将定点数据类型应用于模型时,可以使用数据类型助手和定点工具来计算可调块参数的最佳精度缩放。块参数,金宝app仿真软件。参数
对象,或其他参数对象可调如果它作为存储在内存中的变量出现在生成的代码中。
所选择的缩放必须适应您希望分配给参数的值的范围。要使工具能够计算适当的缩放,请在块或参数对象中指定范围信息。然后,使用以下技术之一来计算缩放:
使用定点工具来自动缩放整个模型或子系统。该工具可以为数据项提出并应用定点数据类型,包括块参数、
金宝app仿真软件。参数
对象、信号和状态。配置单个块参数或参数对象以计算它们自己的伸缩。
当您稍后更改参数的值范围时,这种技术使您或模型能够重新计算缩放,而不必自动缩放整个模型。但是,如果更改参数的值范围也会更改相关信号的值范围,则必须手动计算并应用信号的新缩放,或者使用定点工具自动缩放模型或子系统。
有关定点数据类型、块参数以及其他工具和概念的基本信息,请使用表中的信息。
主题 | 更多的信息 |
---|---|
定点数据类型和缩放 | Simulink中的定点数金宝app(定点设计师) |
如何为块参数和参数对象指定值范围信息 | 指定块参数的最小值和最大值 |
如何使用数据类型助手 | 使用数据类型助手指定数据类型 |
生成代码中的可调性和块参数表示 | 生成的代码如何存储内部信号,状态和参数数据(金宝app仿真软件编码器)而且在生成的代码中创建可调校准参数(金宝app仿真软件编码器) |
使用定点工具自动缩放整个模型
您可以使用定点工具自动缩放模型中的数据项,包括可调参数和其值依赖于这些参数的信号。如果你使用这个技巧:
要将参数配置为可调的,请使用参数对象(例如,
金宝app仿真软件。参数
),而不是“模型参数配置”对话框。定点工具可以自动缩放参数对象,但不能自动缩放通过“模型参数配置”对话框选择的数值变量。如果您的模型已经使用了“模型参数配置”对话框,请使用
tunablevars2parameterobjects
函数来创建参数对象。当你使用
金宝app仿真软件。参数
对象来设置块参数值,则在对象中而不是块中指定值范围信息。定点工具使用每个对象中的范围信息来提出该对象的数据类型。若要使工具能够自动缩放存储为结构字段的参数值,请使用
金宝app仿真软件。公共汽车
对象作为整个结构的数据类型。属性为每个字段指定范围信息最小值
而且马克斯
总线对象中相应元素的属性。方法将数据类型应用于每个元素数据类型
财产。若要使用总线对象作为参数结构的数据类型,请参见通过创建参数对象控制字段数据类型和特征.
在应用定点工具建议的数据类型之前,请清除不希望该工具更改其数据类型的参数和参数对象的建议。例如,明确这些实体的建议:
参数对象,通过应用存储类(如
ImportedExtern
.金宝app仿真软件。参数
在模型工作区中建模参数。或者,在自动缩放模型之前,考虑用MATLAB数值变量替换这些参数对象,以防止定点工具自动缩放它们。
允许工具自动缩放模型参数可能会增加模型参数值(您在模型父模型中的块),模型工作区中的模型参数,以及模型中的客户端块参数。
参数对象
数据类型
属性设置为汽车
(上下文敏感的)。如果希望参数对象继续使用上下文敏感的数据类型,则清除建议。
有关使用定点工具自动缩放的详细信息金宝app仿真软件。参数
对象,看到使用定点工具自动缩放数据对象(定点设计师).
计算单个参数的最佳精度缩放
可以配置块参数或金宝app仿真软件。参数
对象来计算其自身的最佳精度缩放。首先,为目标参数或参数对象指定值范围信息。然后,使用数据类型助手或函数fixdt
将数据类型应用于参数或对象。当您不想使用定点工具自动缩放模型时,请使用这些技术。
启用块参数自动计算最佳精度缩放。您可以启用某些块(通常是Discrete库中的块)的参数来自动计算最佳精度的定点缩放。使用此技术将范围和数据类型信息存储在模型中,而不是存储在参数对象中。使用此技术时,如果稍后更改范围信息,块参数将自动重新计算最佳精度缩放。
在块对话框中,使用函数fixdt
指定具有未指定缩放的定点数据类型。例如,对查找表数据使用最佳精度缩放,并将数据存储在16位字中:
在数据类型的标签n-D查找表块,在最低而且最大列,为表数据的元素指定一个值范围。
下数据类型列,将表数据类型设置为
fixdt (16)
.如果你使用一个可调参数
金宝app仿真软件。参数
对象来设置表数据参数的值,设置数据类型
对象的属性汽车
.在生成的代码中,参数对象使用与块参数相同的缩放。
在模拟或生成代码时,查找表数据使用带符号的16位定点数据类型,其二进制点缩放取决于指定的范围信息。计算的缩放允许定点类型表示范围内的值。如果稍后更改了最小值或最大值,则在模拟或生成代码时,块将重新计算缩放。
计算参数对象的缩放。如果你使用金宝app仿真软件。参数
对象来设置多个块参数的值,如果块参数使用不同的数据类型(包括不同的定点缩放),则不能设置数据类型
对象的属性汽车
(默认)。相反,您可以通过在对象中指定范围和数据类型信息来计算参数对象的最佳精度定点缩放。还可以使用此技术将范围和数据类型信息存储在参数对象中,而不是块对话框中。使用此技术时,如果稍后更改范围信息,则必须使用Data Type Assistant重新计算最佳精度缩放。
假设您创建了一个参数对象来表示该值15.25
,该值的设计范围为0.00
而且32.00
.要计算最佳精度缩放,请使用数据类型助手。
在命令提示符下,在基本工作空间中创建一个参数对象,其值为
15.25
.myParam = 金宝appSimulink.Parameter(15.25);
在MATLAB工作区浏览器中,双击该对象
myParam
.打开属性对话框。在对象中指定范围信息。例如,set最低来
0.00
而且最大来32.00
.集数据类型来
fixdt (0 16 0)
.展开“数据类型助手”并单击计算最佳精度缩放.
数据类型从
fixdt (0 16 0)
来fixdt(0, 16日,10)
.
计算的缩放(10位的分段长度)使定点数据类型能够表示位于指定范围内的参数值。
如果在参数对象中指定了范围和数据类型信息,请考虑从使用该对象的块中删除范围和数据类型信息。某些工具(如定点工具)会忽略在块中指定的范围信息,而只使用参数对象中的信息。从块中删除信息可以防止混乱和用户错误。
例如,在参数属性a的TAB获得块对话框,设置参数最小而且参数的最大来[]
.集参数数据类型到继承的数据类型,例如继承:从“增益”继承
以便块参数使用与参数对象相同的数据类型。
检测由于量化和溢出的数值精度问题
当块参数、MATLAB变量或参数对象的数据类型不能表示指定的值时,数据类型会量化该值,从而影响数值精度。例如,32位浮点数据类型单
(浮动
在C代码中)不能准确地表示参数值1.73
.当数据项的实际值超出数据类型可以表示的值范围时,溢出可能导致信息丢失。
要检测这些问题,请使用下面的诊断配置参数配置参数>诊断>数据的有效性>参数.将这些诊断配置参数的值设置为警告
或错误
:
检测沮丧
检测精度损失
检测下溢
检测溢出
为参数数据重用自定义C数据类型
在模型中,您可以创建符合自定义C数据类型的参数数据,例如现有C代码定义的结构。利用这些数据:
用Simulink模型替换现有的C代码。金宝app
在Simulink中集成用于仿真的C代码(例如,通过使用遗留代码工具)金宝app。
准备生成代码(金宝app仿真软件编码器™),可以与现有代码集成。
使用这些技术来匹配您的自定义数据类型:
对于结构类型,创建
金宝app仿真软件。公共汽车
对象。类中存储的结构的数据类型使用对象金宝app仿真软件。参数
对象。看到在结构中组织相关块参数定义.对于枚举,创建一个枚举类并将其用作块参数的数据类型。看到在Simulink模型中使用枚举数据金宝app.
匹配
类型定义
表示基元、数值数据类型的别名的语句,请使用金宝app仿真软件。AliasType
对象作为块参数的数据类型。看到金宝app仿真软件。AliasType
.
要创建这些类和对象,可以使用该函数金宝appSimulink.importExternalCTypes
.
如果一个MATLAB函数block或statflow®图表在模型中使用导入的枚举或结构类型,则配置模型配置参数以包括(# include
)外部头文件中的类型定义。看到控件导入的总线和枚举类型定义(MATLAB函数块),在状态流程图中访问自定义代码变量和函数(Stateflow)而且在状态流程图中集成自定义结构(Stateflow)(图表)。
数学表达式的数据类型
如果使用数学表达式指定块参数,则块将使用MATLAB和Simulink数据类型规则组合确定最终的参数数据类型。金宝app
假设您定义了两个参数对象int8Param
而且doubleParam
,并使用对象指定恒定值参数。常数块。
int8Param = 金宝appSimulink.Parameter(3);int8Param。数据类型=“int8”;doubleParam = 金宝appSimulink.Parameter(9.36);doubleParam。数据类型=“双”;
的常数块的数据类型恒定值参数使用以下步骤:
每个参数对象将指定的数值转换为指定的数据类型。
参数对象 数据类型 数值 结果 int8Param
int8
3.
int8 (3)
doubleParam
双
9.36
双(9.36)
该块计算指定的表达式,
int8Param * doubleParam
,使用MATLAB规则。包含a的表达式
双
数据类型和不同类型返回不同类型的结果。因此,表达式的结果Int8(3) *双(9.36)
是int8 (28)
.
如果使用表达式设置参数对象的值(例如金宝app仿真软件。参数
),表达式中使用的参数对象遵循不同的数据类型规则。的汽车
设置数据类型
Property的意思略有不同。看到使用数学表达式设置变量值.
生成代码中的块参数数据类型
有关在生成的代码中控制参数数据类型的详细信息,请参见生成代码中的参数数据类型(金宝app仿真软件编码器).