Engee 文档

Second-Order Integrator

二阶积分器

类型: SecondOrderIntegrator

图书馆中的路径:

/Basic/Continuous/Integrator, Second-Order

说明

程序块 Second-Order Integrator 执行二阶积分。该程序块的行为由以下方程描述:

其中 是输入信号。因此,该模块代表了一个具有两个连续状态的动态系统:

这两个状态有一个数学关系,即 的导数。为了在模拟过程中实现这种关系,Engee 对程序块的参数和行为施加了各种限制。

这些方程描述了连续时间内输出对输入的精确依赖关系。数值近似方法用于以有限的精度对其进行估计。在 Engee 中,有几种类型的求解器,它们采用不同的数值积分方法来计算块输出。根据具体问题的不同,每种求解器都有自己的优势。

所选求解器利用当前输入值和上一时间步的状态值计算当前时间步的块 Second-Order Integrator 的输出。

初始值 可以在程序块参数对话框中设置。

国家限制

在对二阶系统建模时,可能需要对模块的状态进行限制。例如,活塞在气缸内的运动受牛顿第二定律支配,活塞位置受 约束。在程序块 * Second-Order Integrator * 中,可以对状态 进行独立约束。需要遵循的一条重要规则是,上限必须严格大于相应的下限。

仅限制 x

您可以通过选择 Limit x 复选框并在相应参数中输入限制条件来限制 的状态。

程序块定义的状态值如下:

  • 小于或等于下限时, 的值保持在下限, 设置为零。

  • 介于下限和上限之间时,两种状态都对应于给定的二阶 ODU。

  • 大于或等于其上限时, 的值保持在其上限, 设置为零。

达到上限时,您可以使用新值重新初始化

仅限制 dx/dt

您可以通过选择复选框 Limit dx/dt 并在相应参数中输入限制条件来限制 的状态。

如果只限制 , 的状态,程序块会定义 的值如下:

  • 小于或等于下限时, 的值将保持在下限。

  • 介于下限和上限之间时,两种状态都对应于给定的二阶 ODU。

  • 大于或等于其上限时, 的值将保持在其上限。

  • 当状态 保持在上限或下限时, 的值由一阶初始值任务决定:

,

,

其中

  • - 是限值 (上限或下限);

  • - 达到该上限的时间;

- 时刻的状态值。

两种状态的极限

当您限制两种状态时,Engee 通过限制 允许的上下限值来保持状态之间的数学一致性。这种限制对于满足以下限制是必要的:

  • 在限制范围内时, 的值必须为零。

  • 要使 超过上限, 的值必须严格为负。

  • 要超出下限, 的值必须严格为正。

在这种情况下, 的上限必须严格为正,而 的下限必须严格为负。

当两个状态都有界限时,程序块按以下方式确定状态:

  • 每当 达到极限时,所产生的行为与本节所述相同。 仅限制 x.

  • 每当 达到其极限之一时,所产生的行为包括当 保持在其极限之一时,使用一阶 ODE 计算 。在这种情况下,每当 达到其中一个极限时,它就会保持在该极限,而 则设为零。

  • 每当两者同时达到各自的极限时, 的状态行为会覆盖 的行为,以保持状态的一致性。

限制两种状态时,可以选择在 状态达到饱和时重新初始化 。如果重新初始化的值超出了指定的限制 ,那么 将被重新初始化为最接近的有效值,并计算出一组一致的初始条件。

港口

输入

# u — 输入信号
标量 | 向量 | 矩阵

Details

以标量、向量或矩阵形式输入积分器的信号 u

数据类型

Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64, Bool

复数支持

输出

# x — 输出信号
标量 | 向量 | 矩阵

Details

以标量、向量或矩阵形式输出的 x 状态信号。

数据类型

Float64`。

复数支持

# dx — 输出信号
标量 | 向量 | 矩阵

Details

以标量、向量或矩阵形式输出的 dx 状态信号。

数据类型

Float64`。

复数支持

参数

参数

# Initial condition x — 初始状态值 x
Scalar / array of real numbers

Details

x 区块的初始状态值。

默认值

0.0

程序使用名称

ICX

可调谐

可计算

# Limit x — 状态限值 x
Logical

Details

将程序块输出限制在参数 Lower limit xUpper limit x 之间的数值。默认情况下,该复选框未被选中。

默认值

false (关掉)

程序使用名称

LimitX

可调谐

可计算

# Upper limit x — 状态值上限 x
Scalar / array of real numbers

Details

指定状态值的上限 x

x 的状态上限必须严格大于下限。

依赖关系

要使用此参数,请选择复选框 Limit x

默认值

Inf

程序使用名称

UpperLimitX

可调谐

可计算

# Lower limit x — 状态值下限 x
Scalar / array of real numbers

Details

指定状态值的下限值 x

状态 x 的下限必须严格小于上限。

依赖关系

要使用此参数,请选择复选框 Limit x

默认值

-Inf

程序使用名称

LowerLimitX

可调谐

可计算

# Wrap x — 接通转换开关 x
Logical

Details

在参数值 Wrapped upper value xWrapped Lower 值 x 之间启用携带状态 x 。启用携带状态后,无需进行过零检测,减少了求解器重置次数,提高了求解器性能和精度,并在模拟旋转和循环状态轨迹时增加了仿真时间。

如果将 Wrapped upper value x 指定为 "inf",将 Wrapped Lower 值 x 指定为 "inf",则不会发生携带状态。

默认值

false (关掉)

程序使用名称

WrapX

可调谐

可计算

# Wrapped upper value x — 转运上限值 x
Scalar / array of real numbers

Details

指定 x 的上限值。 x 的上限值必须大于下限值。

依赖关系

要使用该参数,请选择复选框 Wrap x

默认值

pi

程序使用名称

WrappedUpperValueX

可调谐

可计算

# Wrapped lower value x — 转让价值较低 x
Scalar / array of real numbers

Details

指定 x 的下限值。 x 的下限值必须小于上限值。

依赖关系

要使用该参数,请选择复选框 Wrap x

默认值

-pi

程序使用名称

WrappedLowerValueX

可调谐

可计算

参数

# Initial condition dx/dt — 初始状态值 dx/dt
Scalar / array of real numbers

Details

初始状态值 dx/dt .

默认值

0.0

程序使用名称

ICDXDT

可调谐

可计算

# Limit dx/dt — 状态限值 dx/dt
Logical

Details

将程序块输出限制在参数 Lower limit dx/dtUpper limit dx/dt 之间的数值。默认情况下,该复选框未被选中。

如果状态限制设置为 x ,参数 Lower limit dx/dtUpper limit dx/dt 定义的区间必须为零。

默认值

false (关掉)

程序使用名称

LimitDXDT

可调谐

可计算

# Upper limit dx/dt — 状态值上限 dx/dt
Scalar / array of real numbers

Details

指定状态值的上限 dx/dt

依赖关系

如果限制 x ,则该参数必须为严格意义上的正值。

要使用该参数,请勾选 Limit dx/dt

默认值

Inf

程序使用名称

UpperLimitDXDT

可调谐

可计算

# Lower limit dx/dt — 条件下限 dx/dt
Scalar / array of real numbers

Details

指定状态下限 dx/dt

依赖关系

如果限制 x ,则该参数必须为严格意义上的负值。

要使用该参数,请选择复选框 Limit dx/dt

默认值

-Inf

程序使用名称

LowerLimitDXDT

可调谐

可计算