这个函数库 ⇘ 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) 。  |