PID 算法是在工程领域,运用最为广泛的调节器,记录一下位式控制算法和 PID 算法的区别,以及 PID 各个参数对 SV 的影响。

PID 控制器

A proportional–integral–derivative controller (PID controller or three term controller) is a control loop feedback mechanism widely used in industrial control systems and a variety of other applications requiring continuously modulated control. A PID controller continuously calculates an error value {\displaystyle e(t)}e(t) as the difference between a desired setpoint (SP) and a measured process variable (PV) and applies a correction based on proportional, integral, and derivative terms (denoted P, I, and D respectively), hence the name.

PID 控制器是一种在工业领域广泛使用的循环控制系统,PID 控制器需要持续计算 SetPoint 和 ProcessVariable 之间差值,记为 e(t),然后通过比例 P,积分 I,微分 D 三个部分来优化输出达到目标值。

位式控制算法

位式控制算法

  • 通过用户设置(按键或可调电阻)一个期望值 sv
  • 通过位式控制算法,输出out 高低点平
  • 通过out 输出,利用执行部件控制控制对象
  • 控制对象做相关动作
  • 传感器获得相关传感参数后,输出当前值 pv,然后位式控制算法通过 sv 和 pv 对比,输出 out 值

image

我们以温度控制为例,用户设置 100 摄氏度的 sv 预期值,当 pv 低于 100 摄氏度的时候,位式控制算法输出高电位,执行部件打开开关,控制对象(加热器)开始加热,直到传感器感知到温度大于 100 摄氏度的时候,out 为低电平,停止加热即可。

特点

位式控制算法的特点是:

  • out 只有 H、L 两种电位
  • out 输出依据
    • pv < sv ==> H
    • pv >= sv ==> L

局限

由于控制对象的惯性,比如加热器的通电之后,并不会马上达到加热效果,关闭电源后,加热器还有余温会去加热,也不会马上达到降温的效果,所以,由于控制对象的惯性,pv 会在 sv 水位上下浮动,我们期望这个浮动更可能小。

PID 算法

image

比例控制算法 - P

历史采样值:X1, X2, … Xk-1, Xk

当前偏差:Ek = Sv - Xk (Sv 为用户期望值)

  • 大于 0 表示当前未达标
  • 等于 0 表示当前已达标
  • 小于 0 表示当前已超标

输出:Pout = Kp * Ek + Out0 (Out0 是为了控制在 Ek 为 0 的时候,使得 Out 不为 0 的常数 ,Kp 为比例系数)

特点:

out 输出并不只是高低电平两种可能,而是 PWM 信号,该信号有一个信号控制周期,可以在一个周期内,控制多少时间导通,多少时间关闭。具体的控制精度由 PWM 的脉宽决定。

缺点:只考虑现在,不考虑偏差

积分算法 - I

历史偏差序列:E1, E2, … Ek-1, Ek

Sk = E1 + E2 + … Ek-1 + Ek (因为 Ek 有可能是正数,也可能是负数,该代数和并不会是一个正无穷)

  • 大于 0,过去这段时间大部分是未达标
  • 等于 0
  • 小于 0,过去这段时间大部分是超标

Iout = Ki * Sk + Out0

特点:考虑了历史数据,没有充分考虑现在的偏差

微分算法 - D

最近偏差:Dk = Ek - E k-1

  • 大于 0,偏差正越来越大,偏差有增大的趋势,变化率
  • 等于 0,偏差没有发生改变

Dout = Kd * Dk + Out0, 微分是用来预测将来的变化,由于等于 0 的时候,代表着偏差没有发生变化,只要 Dk 为 0, Dout 就会为 0,这样不会输出信号,所以微分不能单独用于输出信号。

PID 各个参数的影响

References