刚接触PID算法,还没有用它做过项目,就简单说一下PID算法的基本思想和原理,欢迎各位大佬指正。
PID算法是经典的控制算法,能根据用户的设定值自动控制对象稳定工作在设定值。PID算法名字的由来就是它共有P项,I项,D项三项的线性叠加来控制对象。下面具体计算各项:
设定了控制对象需要稳定的工作点也就是设定值(SV)后,PID首先通过传感器获得控制对象的当前值(PV),将PV与SV进行计算处理,得到一个输出信号来控制对象。
- P项的计算(比例项)
此项的计算简单易懂,首先通过传感器获得控制对象的当前值,一旦达到设定值的时候即PV=SV,就使控制对象停止工作;若PV<SV就以最大功率工作。
若只以此项计算的值来控制控制对象,就会使控制对象只处于停止或最大功率工作两种状态。
- I项的计算(积分项)
将历史的当前值与设定值的差求和,就可以得出一个求和的值。再给求和的值乘以一个参数就能根据历史状态得出预测,用此预测就可以控制输出信号。输出信号的强度就好比速度V,对速度V在时间T上积分就得到行驶的总路程,用总路程的大小就可以预测接下来速度应大点还是小点。输出信号也一样,对历史偏差求和就可以预测输出信号的强弱。
- D项的计算(微分项)
继续使用v,t的例子,如果对速度V在时间T上求导,也就是微分,就能得到这段时间的加速度,根据加速度的大小,就能预测速度的大小。D项的算法也是如此,对最近两端等时间内的当前值与设定值之差再求差,就是微分了,将得到的值乘以一个参数也能得到一个值,就能D项的值了。
将这三项的值相加,就能得到PID的完整值了。但是平时应用中也可以只使用其中的一项或两项。