AnyMath 文档

Integrator

输入信号的积分。

模块类型: Integrator

库中的路径:

/Basic/Continuous/Integrator

资料描述

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

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

哪里

  • -输入信号;

  • -输出信号;

  • -条件;

  • -初始状态 .

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

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

要创建一个完全离散的系统,建议使用块 Discrete-Time Integrator.

确定初始状态

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

  • 要将初始状态定义为块参数,请指定 Initial condition source 如何 internal 并在字段中输入值 Initial condition .

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

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

积分器的限制

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

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

  • 当积分小于或等于 Lower saturation limit ,输出信号保持在 Lower saturation limit .

  • 当积分介于 Lower saturation limitUpper saturation limit ,输出为积分。

  • 当积分大于或等于 Upper saturation limit ,输出信号保持在 Upper saturation limit .

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

integrator 2

信号取三个值之一:

  • `1’表示施加上限。

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

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

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

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

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

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

重置循环状态

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

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

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

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

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

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

哪里:

  • -状态值的下限;

  • -状态值的上限;

  • -结果(条件)。

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

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

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

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

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

重置状态

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

重置触发器的类型

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

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

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

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

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

  • level hold -当复位信号为非零时将输出信号复位到其原始状态。

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

关于状态端口

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

integrator 1

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

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

创建自消积分器

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

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

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

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

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

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

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

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

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

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

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

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

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

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

港口

输出

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

Details

积分结果。

数据类型

Float64

复数支持

输入

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

Details

要积分的信号。

数据类型

Float64

复数支持

参数

参数

# External reset — 将状态重置为初始状态
none | rising | falling | either | level | level hold

Details

指定要用于外部复位信号的触发器类型。

  • rising -复位信号经过边沿时复位状态。

  • falling -当复位信号被切断时复位状态。

  • either -复位信号上升或下降(通过边缘或切片)时复位状态。

  • level —当复位信号在当前时间步为非零值或在当前时间步从上一个时间步的非零值变为零时,将输出复位并保持在其初始状态。

  • level hold —当复位信号在当前时间步长为非零时,将输出信号复位到其初始状态。

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

默认值

none

程序使用名称

ExternalReset

可调谐

可计算

# Initial condition source — 选择初始状态的来源
internal | external

Details

选择初始状态的来源:

  • internal -从参数中获取初始状态 Initial condition .

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

internal | external

默认值

internal

程序使用名称

InitialConditionSource

可调谐

可计算

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

Details

块的初始状态 Integrator .

依赖关系

若要使用此参数,请为参数设置 Initial condition source 价值 internal.

默认值

0.0

程序使用名称

InitialCondition

可调谐

可计算

# Limit output — 将块的输出值限制在指定范围内
Logical

Details

将块输出限制为参数之间的值 Lower saturation limitUpper saturation limit .

如果选中此复选框,则块的输出限制为参数之间的值 *Lower saturation limitUpper saturation limit .

*取消选中此选项不会限制块的输出值。

依赖关系

选择此选项包括以下选项 Lower saturation limitUpper saturation limit .

默认值

false (关掉)

程序使用名称

LimitOutput

可调谐

可计算

# Wrap state — 重置循环状态
Logical

Details

重置参数之间的循环状态 Wrapped state upper valueWrapped state lower value . 启用此参数可减少求解器复位次数,提高计算的性能和准确性,并增加旋转和循环状态的允许仿真时间。

如果指定 Wrapped state upper value 如何 资讯Wrapped state lower value 如何 -inf,不会有重置。

依赖关系

选择此选项允许您设置参数 Wrapped state upper valueWrapped state lower value .

默认值

false (关掉)

程序使用名称

WrapState

可调谐

可计算

# Show saturation port — 启用饱和输出端口
Logical

Details

选择此选项可将饱和输出端口添加到块中。

依赖关系

选择此选项将打开饱和输出端口。

默认值

false (关掉)

程序使用名称

ShowSaturationPort

可调谐

可计算

# Show state port — 启用状态输出端口
Logical

Details

选择此选项可将状态输出端口添加到块。

依赖关系

选择此选项将打开状态输出端口。

默认值

false (关掉)

程序使用名称

ShowStatePort

可调谐

可计算

# Enable zero-crossing — 过零检测
Logical

Details

选择此选项可启用过零检测。

默认值

false (关掉)

程序使用名称

ZeroCross

可调谐

可计算