Engee 文档

积分器

输入信号的积分。

类型: Integrator

图书馆中的路径:

/Basic/Continuous/Integrator

资料描述

积分器 计算输入信号随时间的积分的值。

积分器 它可以被认为是一个具有一个状态的动态系统。 块行为由以下方程描述:

哪里

  • -输入信号;

  • -输出信号;

  • -条件;

  • -初始状态 .

这些方程描述了连续时间内输出对输入的精确依赖性;数值近似方法用于以有限精度估计它们。 在*Engee*中,有几种类型的求解器实现不同的数值积分方法来计算块输出。 每个求解器都有其优点,具体取决于特定的任务。

选定的求解器计算块输出 积分器 在当前时间步长处,使用当前输入值和先前时间步长处的状态值。 要做到这一点,块 积分器 保存当前时间步长中输出信号的值,供求解器在下一步中使用。 该块还向求解器提供初始状态,以在模拟开始时计算该块的状态。 默认情况下,初始状态值为'0'。 使用"块参数"窗口,您可以为初始状态设置不同的值。

要创建一个完全离散的系统,建议使用块 离散时间积分器.

确定初始状态

您可以在块的对话框中将初始状态定义为参数,也可以从外部信号输入它们。:

  • 要将初始状态定义为块参数,请指定 初始条件源 如何 内部 并在字段中输入值 初始条件 .

  • 若要从外部源获取初始状态,请指定 初始条件源 如何 外部. 输入端口下方会出现一个额外的输入端口。

注意:如果积分器限制其输出信号(参见积分器的限制),则初始状态必须在积分器的饱和范围内。 如果初始状态超过块的饱和限制,则块显示错误消息。

积分器的限制

若要确保输出数据不超过指定的级别,请选中该框 极限输出 并在相应的参数字段中输入限制。 此操作导致块作为有限积分器起作用。 当输出达到极限值时,积分器操作结束。

在仿真期间,您可以更改约束,但不能打开或关闭积分器约束。 该块定义输出数据如下:

  • 当积分小于或等于 饱和度下限 ,输出信号保持在 饱和度下限 .

  • 当积分介于 饱和度下限饱和上限 ,输出为积分。

  • 当积分大于或等于 饱和上限 ,输出信号保持在 饱和上限 .

要生成指示状态何时受限的信号,请选中该框 显示饱和端口 . 块输出端口下方出现饱和端口。

integrator 2

信号取三个值之一:

  • `1’表示施加上限。

  • '0’表示积分不受限制。

  • `-1’表示应用了下限。

选中此复选框时,该块有三个过零点。:

  • 以确定何时进入饱和上限。

  • 来确定何时进入饱和下限。

  • 以确定何时离开饱和区。

重置循环状态

一些物理现象本质上是周期性的,周期性的或旋转的。 这些现象的建模涉及对周期性或循环信号的变化率进行积分以获得状态变量。

这种方法的缺点是,在长时间的模拟时间内,表示周期性或循环信号的状态被积分到非常大的值。 此外,计算这些信号的正弦或余弦需要越来越多的时间。 较大的信号值也会对求解器的性能和精度产生负面影响。

克服这一缺点的一种方法是在角度状态达到"0"时将其重置为"0" (或之前 当它到达 ,用于数值对称)在模型中使用附加算法。 这种方法提高了正弦和余弦计算的精度。 但请记住,这会重置求解器,这会减慢可变间距求解器的仿真速度,特别是在大型模型中。

为避免在重置输出值时重置求解器,请阻止 积分器 它包含一个内置的状态重置机制,您可以通过选中该框来启用该机制。 缠绕状态 块参数对话框中。

启用参数时 缠绕状态 ,块图标改变,指示为块启用循环状态重置。

如果启用循环状态重置,则状态值由以下表达式确定:

哪里:

  • -状态值的下限;

  • -状态值的上限;

  • -结果(条件)。

重置循环状态具有以下优点:

  • 消除模型接近大角度和大状态值时的建模不稳定性。

  • 减少仿真期间求解器重置的次数,从而缩短仿真时间。

  • 消除了大角度值,加快了基于角状态的三角函数的计算。

  • 提高求解器精度和性能,并提供无限的仿真时间。

重置状态

块将其状态复位到外部信号上的初始状态。 复位触发器的类型由参数决定 外部复位 . 当选择除 单元具有复位端口,其旁边指示复位触发器的类型。

重置触发器的类型

外部复位参数允许您定义复位信号属性,即复位触发器。 以下触发器是可能的:

  • 上升 -复位信号通过边沿时的状态,即从负值或零值增加到正值。

  • 下降 -复位信号被切断时的状态,即从正值下降到零或负值。

  • 或者 -重置复位信号上升或下降时的状态,即它从零变为非零值,从非零值变为零,或改变符号。

  • 级别 —复位并将输出保持在其初始状态,直到复位信号为零,即在当前时间步长处不同于零或在当前时间步长处从上一个时间步长处的非零值变为零。

  • 级别保持 -当复位信号为非零时将输出信号复位到其原始状态。

复位端口具有直接输入。 如果块的输出信号被送回这个端口,或者直接地或者通过一系列直接传输块,则获得代数环路。 使用块状态端口 积分器 于块输出的反馈而不创建代数迴路。

关于状态端口

选中此框 显示状态端口 在"块参数"对话框中 积分器 这导致在积分器单元的顶部有一个额外的输出端口,即状态端口。

integrator 1

状态端口的输出与块的标准输出端口的输出相同,但以下情况除外。 如果块在当前时间步长被重置,状态端口输出表示如果块没有被重置,标准块输出上会出现的值。

状态端口的输出数据在时间步长中出现得比积分器单元的输出端口的输出数据更早。 在这些仿真场景中使用状态端口打开代数电路。:

创建自消积分器

阻止状态端口 积分器 帮助您在创建基于其输出值重置自身的积分器时避免代数循环。 考虑以下模型。

该模型试图通过将积分器的输出信号(减去"1")反馈到积分器的复位端口来创建自对准积分器。 但是,该模型创建了一个代数循环。 为了计算积分器单元的输出,软件必须知道单元复位信号的值,反之亦然。 由于这两个值是相互依赖的,因此软件无法确定它们中的任何一个。 因此,尝试模拟或更新此模型时会出现错误消息。

下面的模型使用积分器的状态端口来避免发生代数循环。

在此版本中,复位信号的值取决于状态端口的值。 状态端口的值在当前时间步长中比积分器单元的输出端口的值更早可用。 因此,可以在计算块输出之前确定是否重置块,从而避免了代数循环。

在启用的子系统之间传输状态

状态端口有助于避免在两个使能的子系统之间传输状态时发生代数循环。 例如,考虑以下模型。

启用的子系统’A’和`B’包含以下块:

子系统’A` 子系统’B`

在这个模型中,一个恒定的输入信号驱动两个集成信号的子系统。 脉冲发生器产生在子系统之间交替执行的分辨率信号。 每个子系统的*Enabled*端口设置为’reset',这会导致子系统在其变为活动状态时重置其积分器。 重置积分器导致积分器读取其初始状态端口的值。 每个子系统中的积分器的初始状态端口连接到另一个子系统中的积分器的输出端口。

这种连接被设计为提供输入信号的连续集成,同时在两个子系统之间交替执行。 但是,连接会创建一个代数循环。 要计算`A’的输出,您需要知道`B’的输出,反之亦然。 由于输出数据是相互依赖的,因此无法计算输出值。 因此,尝试模拟或更新此模型时会出现错误消息。

同一模型的此版本使用积分器的状态端口,以避免在状态转移期间创建代数循环。

启用的子系统’A’和`B’包含以下块:

子系统’A` 子系统’B`

在该模型中,`A`中积分器的初始状态取决于`B`中积分器的端口状态的值,反之亦然。 状态端口值在仿真时间步长中比积分器输出端口的值更早更新。 因此,能够在不知道另一积分器的最终输出值的情况下计算任意积分器的初始状态。

港口

输出

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

Details

积分结果。

数据类型

Float64`。

复数支持

# 输出_2 — 输出信号限制符号
标量 | 向量 | 矩阵

Details

饱和输出信号,指定为标量、矢量或矩阵,用于指示何时输出信号受饱和上限或下限限制。

  • 如果积分以 饱和上限 为界,输出信号为 1

  • 如果积分以 饱和度下限 为界,输出信号为 -1

  • 如果积分在这些限值之间,输出信号为 0。更多信息,请参阅积分器限值

数据类型

Float64`。

复数支持

# OUT_3 — 状态
标量 | 向量 | 矩阵

Details

输出程序块的状态。更多信息,请参阅关于状态端口

依赖关系

要使用该端口,请选择 显示状态端口 复选框。

数据类型

Float64`。

复数支持

输入

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

Details

要积分的信号。

数据类型

Float64`。

复数支持

# x0 — 初始状态
标量 | 向量 | 矩阵

Details

由外部信号指定的程序块初始状态。请参阅定义初始状态

依赖关系

要使用该端口,请将 初始条件源 设置为 。 外部.

数据类型

Float64`。

复数支持

# 外部复位 — 复位
标量 | 向量 | 矩阵

Details

通过外部信号将设备状态复位到预设的初始状态。请参阅复位状态

依赖关系

要使用该端口,请将 外部复位 设置为 以外的任何值。 .

数据类型

Float64"、"Bool"。

复数支持

参数

主机

# 外部复位 — 复位到初始状态
| 上升 | 下降 | 或者 | 级别 | 级别保持

Details

指定外部复位信号的触发类型。

  • 上升- 当复位信号通过边沿时复位状态。

  • 下降- 当复位信号通过边沿时复位状态。

  • 或者- 当复位信号上升或下降(通过边沿或片段)时复位状态。

  • 级别- 当复位信号在当前时间步长内与零值不同,或在前一时间步长内从非零值变为当前时间步长内的零值时,复位并将输出保持在初始状态。

  • 级别保持- 当复位信号在当前时间步与零值不同时,将输出复位到初始状态。

none | rising | falling | either | level | level hold

默认值

none

程序使用名称

ExternalReset

可调谐

可计算

# 初始条件源 — 选择初始状态源
内部 | 外部

Details

选择初始状态源:

  • 内部- 从参数 初始条件 获取初始状态。

  • 外部- 通过输入端口 x0 从外部接收初始状态。

internal | external

默认值

internal

程序使用名称

InitialConditionSource

可调谐

可计算

# 初始条件 — 初始状态
Scalar / array of real numbers

Details

积分器 区块的初始状态。

依赖关系

要使用该参数,请将 初始条件源 参数设置为 内部.

默认值

0.0

程序使用名称

InitialCondition

可调谐

可计算

# 极限输出 — 将程序块的输出值限制在指定范围内
Logical

Details

将程序块输出值限制在参数 饱和度下限饱和上限 之间。

  • 选中此复选框可将程序块输出限制为参数 饱和度下限饱和上限 之间的值。

  • 清除此复选框不会限制块输出值。

依赖关系

选择该选项可启用参数 饱和度下限饱和上限

默认值

false (关掉)

程序使用名称

LimitOutput

可调谐

可计算

# 饱和上限 — 积分上限
Scalar / array of real numbers

Details

以标量、向量或矩阵的形式说明积分的上限。

依赖关系

要使用该选项,请选择复选框 极限输出

默认值

Inf

程序使用名称

UpperSaturationLimit

可调谐

可计算

# 饱和度下限 — 积分下限
Scalar / array of real numbers

Details

以标量、向量或矩阵的形式说明积分的下限。

依赖关系

要使用该选项,请选择复选框 极限输出

默认值

-Inf

程序使用名称

LowerSaturationLimit

可调谐

可计算

# 缠绕状态 — 循环复位
Logical

Details

重置参数 包裹状态上限值包裹状态下限值 之间的循环状态。启用该参数可减少求解器重置次数,提高计算性能和精度,并增加旋转和循环状态的允许模拟时间。

如果将 包裹状态上限值 指定为 "inf",将 包裹状态下限值 指定为 "inf",则不会发生重置。

依赖关系

选择该选项可设置 包裹状态上限值包裹状态下限值

默认值

false (关掉)

程序使用名称

WrapState

可调谐

可计算

# 包裹状态上限值 — 重置循环状态的上限
Scalar / array of real numbers

Details

块输出信号的上限(用于重置循环状态)。

依赖关系

要使用该参数,请选择复选框 缠绕状态

默认值

pi

程序使用名称

WrappedStateUpperValue

可调谐

可计算

# 包裹状态下限值 — 重置循环状态的下限
Scalar / array of real numbers

Details

块输出信号的下限(用于重置循环状态)。

依赖关系

要使用该参数,请选择复选框 缠绕状态

默认值

-pi

程序使用名称

WrappedStateLowerValue

可调谐

可计算

# 显示饱和端口 — 切换饱和输出端口
Logical

Details

选择此复选框可为程序块添加饱和输出端口。

依赖关系

选择此选项可启用饱和输出端口。

默认值

false (关掉)

程序使用名称

ShowSaturationPort

可调谐

可计算

# 显示状态端口 — 切换状态输出端口
Logical

Details

选择此复选框可为程序块添加一个状态输出端口。

依赖关系

选择此选项可启用状态输出端口。

默认值

false (关掉)

程序使用名称

ShowStatePort

可调谐

可计算