金宝app®块允许您为其输出信号指定一个有效值范围。指定信号范围有助于优化数据类型和改进生成的代码。
如果你有嵌入式编码器®,金宝app仿真软件编码器™可以通过考虑为信号和参数指定的最小值和最大值来优化从模型生成的代码。这种优化可以删除算法代码,并影响某些模拟模式(如SIL或外部模式)的结果。有关更多信息,请参见使用指定的最小值和最大值进行优化(嵌入式编码).
下面的块允许你为它们的输出信号指定范围:
要为大多数块指定信号范围,请使用输出最小而且输出最大块的参数,以指定块输出信号的有效值范围。例外包括数据存储内存,轮廓尺寸,总线元件,外港,输出总线元件,信号规范块,您可以使用他们的最低而且最大参数来指定信号范围。看到允许信号范围规范的块获取适用块的列表。
要访问这些参数,请使用属性检查器(在建模选项卡,在设计,点击属性检查器)、模型数据编辑器(在建模选项卡上,单击模型数据编辑器),或方块对话框。
将最小值或最大值指定为表达式,该表达式计算为标量实数双
数据类型。例如,你可以使用:
一种文字数字,如98.884
.隐式地,数据类型为双
.
数值工作空间变量(参见通过创建变量共享和重用块参数值)的数据类型为双
.使用此技术可在多个数据项之间共享最小值或最大值。
当您使用变量来设置最小值
或马克斯
的属性金宝app仿真软件。ValueType
,金宝app仿真软件。信号
,或金宝app仿真软件。公共汽车Element
对象时,将变量的当前值赋给该对象。的最小值
而且马克斯
对象的属性不受变量未来更改的影响。
指定的标量值应用于复合信号的每个元素(例如,当信号是非标量或总线时)。有关标量展开的信息,请参见输入和参数的标量展开.
若要不指定信号的最小值或最大值,请使用空矩阵[]
,为默认值。
如果您使用总线、数据存储和状态流等建模结构®图表,您可以使用不同的技术来指定设计范围信息。使用表格中的信息。
目标信号描述 | 技术及更多信息 |
---|---|
数值复杂信号 |
当您指定输出最小或输出最大对于数值复杂的信号,指定的最小值和最大值分别适用于复数的实部和虚部。如果复数的任意一部分小于最小值或大于最大值,则复数不在指定范围内。没有对实部和虚部的任何组合进行范围检查,例如 |
总线中的信号元素 |
如果您使用a组装总线总线的创造者块时,可以在上游块上指定范围信息总线的创造者块。 无论使用何种技术组装总线,都可以创建 |
信号MATLAB函数块 |
使用端口和数据管理器指定最低而且最大数据的属性。看到设置通用数据属性. |
状态流程图中的信号 |
设置最低而且最大对应的状态流数据的属性。看到限制范围内(Stateflow). |
与对象相关联的信号(例如 |
设置 |
数据存储(数据存储内存块或 |
对于一个数据存储内存块,设置最低而且最大块的参数。对于信号对象,设置 |
金宝appSimulink提供了一个名为模拟距离检查,在模拟过程中,当信号超出指定范围时,您可以启用该功能进行检测。启用后,Simulink将块金宝app输出的信号值与指定的范围进行比较以块为单位处理信号范围)和块数据类型。也就是说,Simu金宝applink执行以下检查:
DataTypeMin≤MinValue≤VALUE≤MaxValue≤DataTypeMax
在哪里
DataTypeMin
由块数据类型表示的最小值。
MinValue
是块应该输出的最小值,由,例如,输出最小.
价值
是块输出的信号值。
MaxValue
是块应该输出的最大值,由,例如,输出最大.
DataTypeMax
由块数据类型表示的最大值。
请注意
有可能过度指定一个块如何处理超出特定范围的信号。例如,您可以为两个信号范围参数指定值(而不是默认值)并启用饱和整数溢出参数。在这种情况下,Simulin金宝appk将显示一条警告消息,建议您禁用饱和整数溢出参数。
要启用模拟距离检查诊断:
在你的模型窗口,在建模选项卡上,单击模型设置.
金宝appSimulink弹出“配置参数”对话框。
在选择树中,单击“配置参数”对话框左侧的诊断>数据的有效性类别。在右边下面信号,设置模拟距离检查诊断为错误
或警告
.
点击好吧以应用更改,并关闭“配置参数”对话框。
看到模拟距离检查获取更多信息。
检查信号范围错误或警告:
启用模拟距离检查模型的诊断(请参见启用模拟距离检查).
在模型窗口中,单击运行模拟模型。
金宝appSimulink模拟您的模型并执行信号范围检查。如果信号超出了它的指定范围模拟距离检查诊断指定错误
, 金宝appSimulink停止模拟并生成错误(例如,在诊断查看器中)。
否则,如果信号超出其指定范围时模拟距离检查诊断指定警告
, 金宝appSimulink在MATLAB中生成警告信息®命令窗口。每条消息都标识出输出信号超出其指定范围的块,以及发生这种违反的时间步骤。
一些虚拟块(参见非虚拟块和虚拟块)允许您指定输出信号的范围,例如轮廓尺寸而且外港块。当模拟距离检查对于包含此类块的模型启用诊断,虚拟块的信号范围将向后传播到它接收到输出信号的非虚拟块的第一个实例。如果非虚块为自己的范围指定了不同的值,Simulink将使用金宝app紧密可能的范围。也就是说,Simu金宝applink使用较大的最小值和较小的最大值来检查信号。
例如,考虑以下模型:
在这个模型中,Constant块指定了它的输出最大参数为300,和轮廓尺寸Block设置为100。假设您启用模拟距离检查对模型进行诊断和仿真。的轮廓尺寸块反向将其最大值传播到它前面的非虚拟块,即常数块。金宝app然后,Simulink使用两个最大值中较小的一个来检查信号常数块输出。因为常数block输出一个值(200)超过最小范围的信号,Simulink将产生一个错误。金宝app
双
当数据项(信号或参数)使用的数据类型不是双
,在比较之前,Simulink将数据项和每金宝app个设计限制(指定的最小值或最大值)强制转换为非双精度数据类型。这种技术有助于防止产生不必要的、误导性的错误和警告。
然而,Simuli金宝appnk将设计限制存储为双
之前的比较。如果数据项的数据类型的精度高于双
(例如,具有128位字长和126位分数长度的定点数据类型)或更大的范围双
,双
如果不能精确地表示设计极限的值,Simulink可能会产生意想不到的警告和错误。金宝app
如果非双精度类型具有更高的精度,则考虑将设计限制舍入到离零最远的下一个数字双
可以表示。例如,假设一个信号在将最大值设置为后产生一个错误98.8847692348509014
.在命令提示符下,计算离0最远的下一个数字双
可以表示。
格式长98.8847692348509014 + eps(98.8847692348509014)
Ans = 98.884769234850921
使用得到的数字,98.884769234850921
,以替换最大值。