PID(比例积分微分控制器)
- 位置
sys_utils.aclib
- 功能说明
对现场输入的过程值与设定值比较,对其增量进行PID调节控制。将控制量输出给现场设备以达到调节目的,同时对输出值进行限幅操作,以保证输出在上下限范围波动,如果超出限值,将产生报警。
- 参数说明
输入参数 | 数据类型 | 描述 | 掉电保持 | 常量 |
---|---|---|---|---|
ACTUAL_VALUE | REAL | 当前值,过程值 | ✔ | × |
SET_VALUE | REAL | 设定值,期望值 | ✔ | × |
KP | REAL | 比例增益 | ✔ | × |
TI | REAL | 积分时间(秒),TI>=0,如果TI=0,表示没有积分环节 | ✔ | × |
TD | REAL | 微分时间(秒),TD>=0,如果TD=0,表示没有微分环节 | ✔ | × |
MANUAL | BOOL | TRUE:手动操作模式;FALSE:自动操作模式 | ✔ | × |
Y_MANUAL | REAL | 手动输出值,若MANUAL=TRUE,则Y:=Y_MANUAL | ✔ | × |
Y_OFFSET | REAL | 前馈控制量 | ✔ | × |
Y_MAX | REAL | 输出值上限 | ✔ | × |
Y_MIN | REAL | 输出值下限 | ✔ | × |
UPPER_DEADBAND | REAL | 偏差死区上限,UPPER_DEADBAND>=0 | ✔ | × |
LOWER_DEADBAND | REAL | 偏差死区下限,LOWER_DEADBAND>=0 | ✔ | × |
RESET | BOOL | 初始化PID,且Y :=Y_OFFSET | × | × |
输入参数 | 数据类型 | 描述 | 掉电保持 | 常量 |
---|---|---|---|---|
Y | REAL | 控制量输出 | ✔ | × |
LIMITS_ACTIVE | BOOL | TRUE:控制量输出超出输出值限制(Y_MIN,Y_MAX) | × | × |
- 详细说明
- MANUAL:用来开关手动操作
- RESET:用于初始化PID
- Y_MIN 和Y_MAX用于规定输出范围。
- 计算
- 手动模式:输出值Y等于手动输入值Y_MANUAL
- 自动模式:在正常操作(MANUAL = RESET = LIMITS_ACTIVE = FALSE)下,再根据设定值SET_VALUE、过程值ACTUAL_VALUE及死区范围UPPER_DEADBAND、LOWER_DEADBAND计算偏差,再根据输出值Y、输出值上下限Y_MAX、Y_MIN及偏差计算积分饱和系数,然后根据比例增益KP、积分时间TI、微分时间TD和积分饱和系数计算控制输出的比例分量、积分分量、微分分量以及控制输出值Y。公式如下:
PID的逻辑结构如下图所示:
PID控制器自身测量两次调用之间花费的时间的最大的精度是毫秒,周期较短时,运行控制可能不够精细,某些场景建议采用PID_FIXCYCLE。 | |
---|---|
- 示例:通过PID控制,将当前位置控制在20附近
- CFC示例
- ST示例
- LD示例
- IL示例
PID_FIXCYCLE(比例积分微分控制器)
- 位置
sys_utils.aclib
- 功能说明
对现场输入的过程值与设定值比较,对其进行PID调节控制。将调节的指令输出给现场设备从而达到及时响应的调节任务,同时对输出值进行限幅操作,以保证输出在许可的范围内操作,并对超限数值及时报警。
这个功能块类似于PID,只是处理时间不是自动进行测量的而是通过输入 CYCLE (秒) 指定的。
注:例如用户组态了一个0.25ms的任务周期,该功能块所在的任务执行时间小于0.25ms,则设定CYCLE=0.00025,则可以实现0.25ms的执行周期控制精度