Second-Order Integrator
输入信号的二阶积分
库:
Simulink /
Continuous
描述
Second-Order Integrator 模块和 Second-Order Integrator Limited 模块用来求解器二阶初始值问题:
其中 u 是系统的输入信号。因此,此模块是一个动态系统,它具有两个连续状态:x 和 dx/dt。
注意
这两个状态存在一种数学关系,即,dx/dt 是 x 的导数。为了在整个仿真过程中满足这种关系,Simulink 对模块的参数和行为进行了诸多限制。
Second-Order Integrator Limited 模块除了默认情况下基于指定的上限和下限值来限制状态外,它与 Second-Order Integrator 模块完全相同。有关详细信息,请参阅限制状态。
Simulink® 软件可以使用若干不同的数值积分方法来计算模块的输出。每一种方法都有适用于特定情景的优点。使用“配置参数”对话框的求解器窗格可以选择最适合您的应用的方法。(有关详细信息,请参阅求解器选择标准。)所选求解器使用当前输入值计算 Second-Order Integrator 模块在当前时间步的状态。
使用模块参数对话框可以:
指定每个状态初始条件的来源是内部还是外部
为状态初始条件指定值
为一个或两个状态定义上限和下限
为每个状态指定绝对容差
为两个状态指定名称
选择外部重置条件
启用过零检测
当 x 达到饱和时重新初始化 dx/dt
指定 Simulink 忽略状态限制和外部重置以进行线性化操作
定义初始条件
可以在模块对话框上将每个状态的初始条件逐个定义为参数,或者从外部信号输入一个或全部两个初始条件。
要将状态 x 的初始条件定义为模块参数,请从 x 初始条件来源下拉菜单中选择内部,并在 x 初始条件字段中输入值。
要从状态 x 的外部源提供初始条件,请将初始条件来源参数指定为外部。模块上出现一个额外的输入端口。
要将状态 dx/dt 的初始条件定义为模块参数,请从 dx/dt 初始条件来源下拉菜单中选择内部,并在 dx/dt 初始条件字段中输入值。
要从外部源为状态 dx/dt 提供初始条件,请将 dx/dt 初始条件来源指定为外部。模块上出现一个额外的输入端口。
如果您为两个状态初始条件都选择使用外部源,您的模块将如下所示。
注意
Simulink 不允许初始条件值为
inf
或NaN
。如果您通过指定饱和界限来限制状态 x 或状态 dx/dt (请参阅限制状态),而一个或多个初始条件位于对应的范围外,则相应的状态将被初始化为最接近的有效值,并计算一组一致的初始条件。
限制状态
为二阶系统建模时,您可能需要限制模块的状态。例如,气缸内的活塞运动受牛顿第二定律制约,对活塞的位置 (x) 有所限制。使用 Second-Order Integrator 模块,您可以限制状态 x 和 dx/dt,使它们相互独立。您甚至可以在仿真过程中更改限制;但是,您不能改变状态是否受限制。一个重要的原则是,上限必须严格大于对应的下限。
当您限制了一个或两个状态时,模块的外观将发生变化。在这两种状态都受限制的情况下,模块显示如下。
对于每个状态,您可以使用模块参数对话框设置适当的饱和界限范围。
仅限制 x
如果您使用 Second-Order Integrator Limited 模块,默认情况下会限制两个状态。但是,您可以通过选择 x 限制并在相应的参数字段中输入范围,手动限制 Second-Order Integrator 模块上的状态 x。
这样,模块将按如下方式确定状态的值:
当 x 小于或等于下限值时,x 的值保持在下限值,dx/dt 设置为零。
当 x 介于下限值和上限值之间时,两个状态都按照二阶 ODE 给出的轨迹变化。
当 x 大于或等于上限值时,x 的值保持在上限值,dx/dt 设置为零。
您可以选择在 x 达到饱和时将 dx/dt 重新初始化为新的值。请参阅当 x 达到饱和时重新初始化 dx/dt。
仅限制 dx/dt
与状态 x 一样,状态 dx/dt 默认情况下在 Second-Order Integrator Limited 模块对话框的 dx/dt 窗格上设置为受限制。您可以在 Second-Order Integrator 模块上手动设置参数 dx/dt 限制。在任一情况下,都必须为 dx/dt 输入适当的限制。
如果您只限制状态 dx/dt,模块将按如下方式确定 dx/dt 的值:
当 dx/dt 小于或等于下限值时,dx/dt 的值保持在下限值。
当 dx/dt 介于下限值和上限值之间时,两个状态都按照二阶 ODE 给出的轨迹变化。
当 dx/dt 大于或等于上限值时,dx/dt 的值保持在上限值。
当状态 dx/dt 保持在上限值或下限值时,x 的值受一阶初始值问题制约:
其中 L 是 dx/dt 的限制值(上限或下限),tL 是 dx/dt 达到此限制值的时间,xL 是状态 x 在该时间的值。
限制两个状态
当您限制两个状态时,Simulink 将通过限制允许的 dx/dt 上限和下限值,使状态在数学意义上保持一致。这种限制对于满足以下约束很有必要:
当 x 达到饱和界限值时,dx/dt 的值必须为零。
要使 x 离开上限值,dx/dt 的值必须严格为负。
要使 x 离开下限值,dx/dt 的值必须严格为正。
对于这些情况,dx/dt 的上限值必须严格为正,dx/dt 的下限值必须严格为负。
当两个状态都受限制时,模块将按如下方式确定状态:
当 x 达到其限制值时,产生的行为与“仅限制 x”中描述的相同。
当 dx/dt 达到其限制值之一时,产生的行为与“仅限制 dx/dt”中描述的相同 - 包括当 dx/dt 保持在其限制值时使用一阶 ODE 计算 x。在这种情况下,当 x 达到其限制值之一时,它会保持在该限制值并将 dx/dt 设置为零。
当二者同时达到各自的限制值时,状态 x 的行为将覆盖 dx/dt 的行为,以保持状态的一致性。
如果您限制了两个状态,可以选择在状态 x 达到饱和时重新初始化 dx/dt。如果重新初始化后的值超出了 dx/dt 的指定范围,则将 dx/dt 重新初始化为最接近的有效值,并计算一组一致的初始条件。请参阅 当 x 达到饱和时重新初始化 dx/dt。
重置状态
模块可以根据外部信号将其状态重置为指定的初始条件。要使模块重置其状态,请选择属性窗格上的外部重置选项之一。模块输入端口下方将显示一个触发端口,并指示触发类型。
选择上升沿可在重置信号从零上升到正值、从负值上升到正值或从负值上升到零时重置状态。
选择下降沿可在重置信号从正值下降到零、从正值下降到负值或从零下降到负值时重置状态。
选择任一沿可在重置信号从零变为非零值或改变符号时重置状态。
重置端口具有直接馈通。如果模块输出直接或通过一系列带直接馈通的模块反馈到此端口中,则会产生代数环(请参阅代数环概念)。
启用过零检测
此参数控制是否为此模块启用过零检测。默认情况下,属性窗格上的启用过零检测参数处于选中状态。但是,仅当“配置参数”对话框的求解器窗格上的过零控制设置为使用局部设置时,此参数才起作用。有关详细信息,请参阅过零检测。
当 x 达到饱和时重新初始化 dx/dt
对于某些建模应用程序,当状态 x 达到其限制值时,必须重新初始化 dx/dt,以使 x 立即退出饱和状态。您可以通过在属性窗格上选择当 x 达到饱和时重新初始化 dx/dt 来实现这一目的。
如果启用了此选项,当 x 达到饱和的那一刻,Simulink 将检查 dx/dt 初始条件(参数或信号)的当前值是否允许状态 x 立即退出饱和。如果允许,Simulink 将使用那一刻的初始条件(参数或信号)值重新初始化状态 dx/dt。如果不允许,Simulink 将在当前时刻忽略此参数,并将 dx/dt 设置为零,以使模块状态保持一致。
只有在 x 真正达到饱和界限的那一刻,此参数才适用。在那之后的任何时间,即在 x 保持饱和时,此参数并不适用。
有关详细信息,请参阅关于限制状态的各节内容。有关示例,请参阅弹球的仿真。
忽略状态限制和外部重置以进行线性化
如果您希望通过线性化来简化模型,可以选中忽略状态限制和重置以便于线性化,以使 Simulink 忽略状态限制和外部重置。
指定模块输出的绝对容差
默认情况下,Simulink 软件会使用在“配置参数”对话框中指定的绝对容差值(请参阅Error Tolerances for Variable-Step Solvers)来计算 Integrator 模块的输出。如果此值不能提供足够的误差控制,请在参数对话框的 x 绝对容差字段中为状态 x 指定更合适的值,在 dx/dt 绝对容差字段中为状态 dx/dt 指定更合适的值。Simulink 将使用您指定的值来计算模块的状态值。
指定输出端口的显示
您可以使用 ShowOutput
参数控制是显示 x 还是 dx/dt 输出端口。您可以显示一个输出端口,也可以显示两个;但必须至少选择一个。
指定状态名称
您可以使用 StateNameX
和 StateNameDXDT
参数指定 x 状态和 dx/dt 状态的名称。但是,您必须为这两个状态都指定名称,或者都不指定名称;不能只为 x 或者只为 dx/dt 指定名称。这两个状态名称必须具有完全相同的类型和长度。而且,状态数量必须能够被名称数量整除。
选择所有选项
如果选择所有选项,模块图标将如下所示。
示例
端口
输入
输出
参数
扩展功能
版本历史记录
在 R2010a 中推出