PID

这个函数库 util.library提供以下 PID (比例–积分–微分) 控制功能块:

插图 548: FBD 中PID

与 PD 控制不同,这个功能块多了一个 REAL 型输入TN 用于按照秒来调整时间 (例如 "0.5" 表示 500 秒)。

提示!

PID 控制器测量两此调用的共同时间,然而是以秒作为最大时间。这个输入将会导致一个短的扫描时间:例如如果循环时间为 1ms 那么 PID 有时候会按照 2 ms 的间隔进行计算,有时 0 ms。所以如果可能。最好使用 PID_FIXCYCLE,通过这个参数可是特殊设定扫描时间。参阅 “PID_FIXCYCLE”

提示!

考虑到只有在启动时,复位或者在一个改变下载到控制器中时,用户手动模式定义的参数值才会被应用。

功能块输入:

变量

数据类型

描述

ACTUAL

REAL

控制器当前控制值

SET_POINT

REAL

描述值,命令值

KP

REAL

比例系数,P-部分比例增益

这个系数一定不能为 0,都则功能块将不会产生任何输出。

TN

REAL

复位时间, I-部分增益倒数

以秒给予,例如 "0.5" 为 500 秒

这个值必须 >0,否则功能块将不会有任何输出。TN 值越小,操作参数中包含的积分部分的作用越大。TN 增加的越多,这部分包含的越少。

TV

REAL

微分时间, D-部分比例增益

以秒给出,例如 "0.5" 为 500 秒

Y_MANUAL

REAL

如果 MANUAL = TRUE 定义输出值 Y

Y_OFFSET

REAL

操作值 Y 偏移

Y_MIN, Y_MAX

REAL

操作值 Y 的高低限制。如果 Y 到达限制位置,输出 LIMITS_ACTIVE 将会被设置为 TRUE 并且 Y 将保持值在描述的范围内。控制器只在 Y_MIN<Y_MAX 时工作。

MANUAL

BOOL

如果为 TRUE,手动操作将会被激活,那么操作值将会通过 Y_MANUAL 进行定义。

RESET

BOOL

TRUE 复位控制器;在重新初始化时 Y = Y_OFFSET。

功能块输出:

变量

数据类型

描述

Y

REAL

操作值,功能块确定 (参阅下文)

LIMITS_ACTIVE

BOOL

TRUE 表明 Y 到达给定的限制值 (Y_MIN, Y_MAX).

OVERFLOW

BOOL

TRUE 表明超出范围 (参阅下文)

Y_OFFSET, Y_MIN 以及 Y_MAX 用于指定操作变量的范围。

MANUAL 可以用于激活手动操作; RESET 可以用于重新初始化控制器。

在通常操作模式下 (MANUAL = RESET = LIMITS_ACTIVE = FALSE) 控制器计算 控制偏差 e的方式不同于 SET_POINT – ACTUAL,创建微分时间 并作为一个内部变量存储。

输出操作变量 Y不同于 PD 控制器的地方是其中包含了一个积分部分并按照如下方式计算:

所以除了P-部分也包含控制器偏差的当前改变 (D-部分) 以及控制器历史偏差 (I-部分) 最终都将会影响操作变量。

PID 控制器可以通过设置 TV=0 转换为一个 PI-控制器。

因为附加的积分部分,控制器的积分过程中可能会发生越界,如果积分偏差 太大。因此为了保证安全输出一个布尔型变量OVERFLOW被设置,在这种情况下将会被设置为 TRUE。这种情况只会发生在控制器被错误参数初始化过程中。同时,控制器将会被暂停直到重新初始化。

一旦到达操作数的限制值 (Y_MIN 或者 Y_MAX) ,积分部分将会首先适应,类似输入历史自动影响输出值。如果不希望出现这种情况,可以通过以下方式实现:关闭 PID 控制器中的限制 (Y_MIN>=Y_MAX) 并为输出值 Y 提供 LIMIT 操作 (IEC 标准) (参阅下文图片中示例)。

提示!

如果扫描时间改变没有必要改变参数值 (KP, TN, TV) 。

通过 PID 和 LIMIT 实现的温度控制

下文示例中展示了使用 PID 模块和 LIMIT 操作实现的温度控制。这个温度的输入值类似于通过一个常量 ActualTemperature给定。

插图 549: PID 示例