PID算法控制简单理解
1 传统的位式控制算法
用户期望值Sv(设定值)经控制算法输出一个输出信号OUT,输出信号加载到执行部件上(像MOS管等)对控制对象进行控制(步进电机、加热器等),控制对象的当前值(Pv)如速度通过传感器反馈给控制算法与Sv相比较。
特点:1 位式算法输出的控制信号只有两种状态‘H’或者‘L’。
2 算法输出信号OUT的依据:
如果Pv>=Sv 输出信号高了
如果Pv<Sv 输出信号低了
缺点:只能考察控制对象的当前值
2 PID算法
Sv:用户的设定值(目标值)
Pv:反应负载当前的状态值(控制对象当前的状态值)
E = Sv – Pv :偏差值
2.1 PID算法分析
1.从开始工作到当前时刻得到一个采样点序列(假如每秒采样一次,Xk表示当前时刻的采样值):
X1,X2,X3,……….Xk-1,Xk
2.分析采样点序列得到三个信息:
1> 偏差值Ek = Sv – Xk 反映了当前时刻,传感器反馈回来的值与目标值偏差的程度;
如果:Ek>0 表示当前时刻未达标
Ek=0 表示当前时刻已达标
Ek<0 表示当前时刻已超标
设:Pout = Kp * Ek ——比例控制
特点:比例控制一般输出为PWM信号,通过调节PWM的占空比,来对输出进行控制。比例控制只考虑当前时刻是否有偏差,当Ek=0时,负载就处于失控状态,PWM此时可不起作用;比例控制没有偏差时是不起作用的,需要始终有一个偏差。
一般地在算法上加一个常数:
Pout = Kp * Ek + out0 ;
2>历史偏差序列(有正数有负数)
设:E1=Sv-X1,E2=Sv-X2,E3=Sv-X3,………Ek = Sv – Xk
得序列:E1,E2,E3,………….Ek.
Sk=E1+E2+E3+…………+Ek
如果:Sk>0 过去时间段大多数时刻未达标
Sk=0 过去时间段总体情况较好
Sk<0 过去时间段大多数时刻超标
根据历史状态输出信号得:
Iout = Kp * Sk ——积分算法
单纯的积分控制Sk=0时,会严重干扰当前情况,进入失控状态;一般的
Iout = Kp * Ek + out0
3>最近两次的偏差相减
Dk=Ek-Ek-1
如果:Dk>0 偏差有增大趋势
Dk=0 偏差趋势没有变化
Dk<0 偏差有减小趋势
Dout =Dk * Kp ——微分控制
微分控制不可以独立行动,微分算法只关心偏差有没有变化趋势
Dout =Dk * Kp + out0