概述
说明
Integrator Limited 模块与 Integrator 模块相同,但前者会根据饱和上界和下界限制该模块的输出。有关详细信息,请参阅限制积分。
Simulink® 将 Integrator 模块作为具有一种状态的动态系统进行处理。模块动态由以下方程指定:
{x˙(t)=u(t)y(t)=x(t)x(t0)=x0
,其中:
u 是模块输入。
y 是模块输出。
x 是模块状态。
x0 是 x 的初始条件。
虽然这些方程定义了连续时间下的准确关系,但 Simulink 使用数值逼近方法以有限精度来进行计算。Simulink 可以使用若干不同的数值积分方法来计算模块的输出,每种方法都在特定的应用中各具优势。使用 Configuration Parameters 对话框的 Solver 窗格(请参阅Solver 窗格)可以选择最适合您的应用的方法。
所选求解器会使用当前输入值和前一个时间步的状态值计算 Integrator 模块在当前时间步的输出。为支持此计算模型,Integrator 模块会保存在当前时间步的输出,以供求解器计算其在下一个时间步的输出。该模块还为求解器提供了初始条件,用于计算该模块在仿真开始时的初始状态。初始条件的默认值为 0。使用模块参数对话框可以为初始条件指定其他值,或在模块上创建初始值输入端口。
使用参数对话框可以:
定义积分的上限和下限
创建可将模块的输出(状态)重置为初始值的输入,具体取决于输入的变化方式。
创建可选的状态输出,以便模块的输出值可以触发模块重置
使用 Discrete-Time Integrator 模块可以创建纯离散系统。
定义初始条件
可以在模块对话框上将初始条件定义为参数,或者从外部信号输入初始条件:
要将初始条件定义为模块参数,请将 Initial condition source 参数指定为 “internal” 并在 Initial condition 字段中输入值。
要从外部源提供初始条件,请将 Initial condition source 参数指定为 “external”。模块输入下会显示一个额外输入端口。
注意
如果积分器限制其输出(请参阅限制积分),则初始条件必须在积分器的饱和界限范围内。如果初始条件在模块饱和界限范围之外,该模块会显示错误消息。
绕回循环状态
自然界中有多种物理现象表现为循环、周期或旋转。例如,表现出旋转运动的物体或机械以及振荡器会就属于这种现象。
在 Simulink 中对这些现象进行建模时,需要对定期或循环信号的变化率进行积分以获取运动状态。
但是,这种方法的缺点是,经过长时间仿真后,表示定期或循环信号的状态会积分为很大的值。而且,由于角度减小,计算这些信号的正弦或余弦所占用的时间会越来越长。大信号值还会对求解器的性能和准确性产生负面影响。
克服这一缺点的一种方法是在角状态达到 2π 时将其重置为 0(或者在其达到 π 时重置为 –π,以确保数值对称)。此方法可改进正弦和余弦计算的准确性,并缩短角度减小时间。但该方法还需要过零检测,并引入了求解器重置,这会减慢可变步长求解器的仿真,尤其是在大型模型中。
为消除绕回点处的求解器重置,Integrator 模块支持绕回状态,您可以通过在模块参数对话框上选中 Wrap state 来启用这些状态。当启用 Wrap state 时,模块图标将更改为指示该模块具有绕回状态。
Simulink 允许以绕回状态上限和下限值参数为边界的绕回状态。下面的方程给出了确定绕回状态的算法:
y={xx∈[xl,xu)x−(xu−xl)⌊x−xlxu−xl⌋otherwise
其中:
xl 是绕回状态的下限值。
xu 是绕回状态的上限值。
y 是输出。
支持绕回状态具有以下优势。
消除当模型接近大角度和大状态值时的仿真不稳定性。
减少仿真期间的求解器重置次数并消除对过零检测的需求,从而改善仿真时间。
消除大角度值,从而加速针对角状态的三角函数计算。
提高求解器的准确性和性能,并支持无限制仿真时间。
限制积分
要防止输出超出可指定的级别,请选中 Limit output 复选框,并在相应的参数字段中输入限制。此操作会使该模块起到限量积分器的作用。当输出达到界限时,积分操作将关闭以防止积分饱和。在仿真期间,您可以更改限制,但不能更改是否限制输出。模块按如下方式确定输出:
当积分小于或等于 Lower saturation limit 时,输出保持在 Lower saturation limit。
当积分在 Lower saturation limit 和 Upper saturation limit 之间时,输出为积分。
当积分大于或等于 Upper saturation limit 时,输出保持在 Upper saturation limit。
要生成指示状态正受到限制的信号,请选中 Show saturation port 复选框。模块输出端口下方会显示一个饱和端口。
信号具有以下三个值之一:
1 表示正在应用上限。
0 表示积分不受限制。
-1 表示正在应用下限。
如果选中此复选框,模块将包含三个过零点:一个用于检测何时进入饱和上界,一个用于检测何时进入饱和下界,一个用于检测何时不再饱和。
注意
对于 Integrator Limited 模块,默认情况下 Limit output 处于选中状态,Upper saturation limit 设置为 1,Lower saturation limit 设置为 0。
重置状态
模块可以根据外部信号将其状态重置为指定的初始条件。要使模块重置其状态,请选中其中一个 External reset 选项。模块输入端口下方将显示一个触发端口,并指示触发类型。
选择 “rising” 可在重置信号从负值或零上升到正值时重置状态。
选择 “falling” 可在重置信号从正值下降到零或负值时重置状态。
选择 “either” 可在重置信号从零变为非零值、从非零值变为零或改变符号时重置状态。
选择 “level” 可于重置信号在当前时间步为非零值时或者从上一个时间步的非零值更改为当前时间步的零值时重置状态。
选择 “level hold” 可于重置信号在当前时间步为非零值时重置状态。
重置端口具有直接馈通。如果模块输出直接或通过一系列带直接馈通的模块反馈到此端口中,则会产生代数环(请参阅代数环概念)。使用 Integrator 模块的状态端口可以反馈该模块的输出,而不会创建代数环。
注意
为了符合汽车工业软件可靠性协会 (MISRA®) 软件标准,您的模型必须使用布尔信号来驱动 Integrator 模块的外部重置端口。
关于状态端口
在 Integrator 模块的参数对话框上选中 Show state port 复选框会导致 Integrator 模块的顶部显示一个附加输出端口,即状态端口。
状态端口的输出与模块的标准输出端口的输出相同,但以下情况除外。如果在当前时间步重置模块,则状态端口的输出为模块尚未重置时在模块的标准输出中显示的值。状态端口的输出在时间步中的显示会早于 Integrator 模块输出端口的输出的显示。使用状态端口可以避免以下建模方案中出现代数环:
自重置积分器(请参阅创建自重置积分器)
将状态从一个使能子系统切换到另一个(请参阅在使能子系统之间切换状态)
注意
当更新模型时,Simulink 会检查状态端口是否适用于这两个方案中的一个。如果不适用,会显示错误消息。此外,不能将此端口的输出记录在于 Accelerator 模式下执行的引用模型中。如果为该端口启用记录,Simulink 将在执行引用模型期间生成“signal not found”警告。
创建自重置积分器
在创建根据其输出值重置自身的积分器时,Integrator 模块的状态端口有助于避免代数环。例如,考虑以下模型。
此模型尝试通过将积分器的输出减 1 后反馈到积分器的重置端口来创建自重置积分器。但是,该模型会创建代数环。要计算 Integrator 模块的输出,Simulink 软件需要知道模块的重置信号的值,反之亦然。由于这两个值相互依存,Simulink 软件无法单独确定一个值。因此,如果您尝试仿真或更新此模型,系统会显示错误消息。
以下模型使用积分器的状态端口来避免代数环。
在此版本中,重置信号的值取决于状态端口的值。状态端口的值会早于 Integrator 模块输出端口的值在当前时间步中显示。因此,Simulink 可以确定该模块是否需要在计算模块输出之前进行重置,从而避免代数环。
在使能子系统之间切换状态
状态端口可帮助您在两个使能子系统之间传递状态时避免代数环。例如,考虑以下模型。
使能子系统 A 和 B 包含以下模块:
子系统 A子系统 B
在此模型中,一个恒定的输入信号驱动两个对信号求积分的使能子系统。一个脉冲发生器生成启用信号,从而使执行在两个子系统之间切换。每个子系统的使能端口均设为重置,这使得子系统可在变为活动状态时重置其积分器。重置积分器会使积分器读取其初始条件端口的值。每个子系统中积分器的初始条件端口均连接到另一个子系统中积分器的输出端口。
此连接的用途是,当执行在两个子系统之间切换时,启用对输入信号的连续积分。但是,此连接会创建代数环。要计算 A 的输出,Simulink 需要知道 B 的输出,反之亦然。由于两个输出相互依存,Simulink 无法计算输出值。因此,如果您尝试仿真或更新此模型,系统会显示错误消息。
同一模型的以下版本使用积分器状态端口来避免在切换状态时创建代数环。
使能子系统 A 和 B 包含以下模块:
子系统 A子系统 B
在此模型中,A 子系统中积分器的初始条件取决于 B 子系统中积分器的状态端口值,反之亦然。状态端口的值会早于积分器输出端口的值在仿真时间步中更新。因此,Simulink 可以计算任一积分器的初始条件,而无需知道另一个积分器的最终输出值。有关使用状态端口在条件执行子系统之间切换状态的另一个示例,请参阅 sldemo_clutch 模型。
指定模块输出的绝对容差
默认情况下,Simulink 软件会使用在 Configuration Parameters 对话框中指定的绝对容差值(请参阅Error Tolerances for Variable-Step Solvers)来计算 Integrator 模块的输出。如果此值未提供足够的误差控制,则请在 Integrator 模块对话框的 Absolute tolerance 字段中指定更合适的值。您指定的值将用于计算所有模块输出。
选择所有选项
如果选择所有选项,模块图标将如下所示。
最后
以上就是追寻往事为你收集整理的matlab对信号积分,对信号求积分 - Simulink - MathWorks 中国的全部内容,希望文章能够帮你解决matlab对信号积分,对信号求积分 - Simulink - MathWorks 中国所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复