这个函数库 ⇘ util.library提供以下 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) 。 |