Integrator
对信号求积分
库:
Simulink /
Commonly Used Blocks
Simulink /
Continuous
描述
Integrator 模块求输入信号关于时间的积分,并将结果作为输出信号。
Simulink® 将 Integrator 模块作为具有一种状态的动态系统进行处理。模块动态由以下方程指定:
,其中:
u 是模块输入。
y 是模块输出。
x 是模块状态。
x0 是 x 的初始条件。
虽然这些方程定义了连续时间下的准确关系,但 Simulink 使用数值逼近方法以有限精度来进行计算。Simulink 可以使用若干不同的数值积分方法来计算模块的输出,每种方法都在特定的应用中各具优势。使用“配置参数”对话框的求解器窗格(请参阅求解器窗格)可以选择最适合您的应用的方法。
所选求解器会使用当前输入值和前一个时间步的状态值计算 Integrator 模块在当前时间步的输出。为支持此计算模型,Integrator 模块会保存在当前时间步的输出,以供求解器计算其在下一个时间步的输出。该模块还为求解器提供了初始条件,用于计算该模块在仿真开始时的初始状态。初始条件的默认值为 0。使用模块参数对话框可以为初始条件指定其他值,或在模块上创建初始值输入端口。
使用参数对话框可以:
定义积分的上限和下限
创建可将模块的输出(状态)重置为初始值的输入,具体取决于输入的变化方式。
创建可选的状态输出,以便模块的输出值可以触发模块重置
使用 Discrete-Time Integrator 模块可以创建纯离散系统。
定义初始条件
可以在模块对话框上将初始条件定义为参数,或者从外部信号输入初始条件:
要将初始条件定义为模块参数,请将初始条件来源参数指定为内部并在初始条件字段中输入值。
要从外部源提供初始条件,请将初始条件来源参数设置为外部。模块上出现一个额外的输入端口。
注意
如果选择限制输出参数,初始条件必须在饱和界限内。如果初始条件不在模块饱和界限范围内,该模块会显示错误消息。
限制积分
要将输出信号限制在指定的值范围内,请选择限制输出并指定饱和界限。当输出达到其中一个限值时,积分动作被禁用以防止积分饱和。在仿真期间,您可以更改限制,但不能更改是否限制输出。该模块按照以下准则确定输出信号值:
当积分值小于或等于饱和下限时,输出信号值为饱和下限。
当积分值在饱和下限与饱和上限之间时,输出为积分值。
当积分值大于或等于饱和上限时,输出信号值为饱和上限。
要生成指示状态何时受饱和界限限制的信号,请选择显示饱和端口。第二个输出端口出现在模块上。
饱和信号具有以下三个值之一:
1
- 状态受饱和上限限制0
- 状态不受限制–1
- 状态受饱和下限限制
当限制 Integrator 模块输出时,该模块有三个过零信号:一个用于检测积分值何时超出饱和上限,一个用于检测积分值何时小于饱和下限,一个用于检测积分值何时从饱和变为不饱和。
注意
默认情况下,为 Integrator Limited 模块启用限制输出参数,其中饱和上限参数值设置为 1
,饱和下限参数值设置为 0
。
绕回循环状态
一些物理现象,如振荡器和展示旋转运动的机器,本质上是循环的、周期的或旋转的。在 Simulink 模块图中对这些现象进行建模时,需要对周期或循环信号的变化率进行积分以获取运动状态。在长仿真时间跨度上,这种方法可以导致表示周期性或循环信号的状态会积分为很大的值。计算这些信号的三角值(如正弦或余弦)需要更长时间,因为这些值会因角度减小而变大。随着信号值变大,求解器的性能和准确性会下降。
克服这一缺点的一种方法是在角状态达到 2π 时将其重置为 0
(或者在其达到 π 时重置为 –π,以确保数值对称)。此方法可改进正弦和余弦计算的准确性,并缩短角度减小时间。但该方法还需要过零检测,并引入了求解器重置,这会减慢变步长求解器的仿真,尤其是在大型模型中。
为消除绕回点处的求解器重置,Integrator 模块支持绕回状态,您可以通过在模块参数对话框上选中绕回状态来启用这些状态。当启用绕回状态时,模块图标将更改为指示该模块具有绕回状态。
Integrator 模块支持以绕回状态上限和下限值参数为边界的绕回状态。下面的方程给出了确定绕回状态的算法:
其中:
xl 是绕回状态的下限值。
xu 是绕回状态的上限值。
y 是输出。
支持绕回状态具有以下优势。
消除当模型接近大角度和大状态值时的仿真不稳定性。
减少仿真期间的求解器重置次数并消除对过零检测的需求,从而改善仿真时间。
消除大角度值,从而加速针对角状态的三角函数计算。
提高求解器的准确性和性能,并支持无限制仿真时间。
重置状态
模块可以根据外部信号将其状态重置为指定的初始条件。要使模块重置其状态,请选中其中一个外部重置选项。模块输入端口下方将显示一个触发端口,并指示触发类型。
选择上升沿可在重置信号从负值或零上升到正值时重置状态。
选择下降沿可在重置信号从正值下降到零或负值时重置状态。
选择任一沿可在重置信号从零变为非零值、从非零值变为零或改变符号时重置状态。
选择电平可于重置信号在当前时间步为非零值时或者从上一个时间步的非零值更改为当前时间步的零值时重置状态。
选择电平保持可于重置信号在当前时间步为非零值时重置状态。
重置端口具有直接馈通。如果模块输出直接或通过一系列带直接馈通的模块反馈到此端口中,则会产生代数环(请参阅代数环概念)。使用 Integrator 模块的状态端口可以反馈该模块的输出,而不会创建代数环。
注意
为了符合汽车工业软件可靠性协会 (MISRA™) 软件标准,您的模型必须使用布尔信号来驱动 Integrator 模块的外部重置端口。
关于状态端口
在 Integrator 模块的参数对话框上选中显示状态端口复选框会导致 Integrator 模块的顶部显示一个附加输出端口,即状态端口。
状态端口的输出与模块的标准输出端口的输出相同,但以下情况除外。如果在当前时间步重置模块,则状态端口的输出为模块尚未重置时在模块的标准输出中显示的值。状态端口的输出在时间步中的显示会早于 Integrator 模块输出端口的输出的显示。使用状态端口可以避免以下建模场景中出现代数环:
使用自重置积分器的系统
将状态从一个使能子系统传递给另一个
注意
当更新模型时,Simulink 会检查状态端口是否适用于这两个场景中的一个。如果不适用,会显示错误消息。此外,不能将此端口的输出记录在于加速模式下执行的引用模型中。如果为该端口启用记录,Simulink 将在执行引用模型期间生成“signal not found”警告。
指定模块输出的绝对容差
默认情况下,Simulink 软件会使用在“配置参数”对话框中指定的绝对容差值(请参阅Error Tolerances for Variable-Step Solvers)来计算 Integrator 模块的输出。如果此值未提供足够的误差控制,则请在 Integrator 模块对话框的绝对容差字段中指定更合适的值。您指定的值将用于计算所有模块输出。
示例
扩展示例
端口
输入
输出
参数
扩展功能
版本历史记录
在 R2006a 之前推出