由于不懂PID算法,但我想用这个PID控制0-80.0摄氏度的空气加热器,pconst、iconst、dconst建议从什么值开始做整定实验呢?iMax、iMin又怎么决定的呢
比例:
Vnew = GetV(); //获得当前温度
error = aim - Vnew; //误差=目标温度 - 当前温度
pTerm = error*pconst; //比例项的值就是误差乘上比例常量pconst
积分:
Vnew = GetV(); //获得当前温度
ErrorSum += (aim - Vnew); //每一次的误差累计起来
if(ErrorSum > iMax)ErrorSum = iMax;
else if(ErrorSum < iMin)ErrorSum = iMin; //避免积分饱和,通常的做法是像上面程序一样设定iMax和iMin。它们和积分常量的大小相关。
iTerm = ErrorSum *iconst; //误差和乘上积分常量iconst
微分:
Vnew = GetV(); //获得当前温度
dTerm = (Vnew - Vlast)*dconst; //当前温度 - 上次速度,再乘微分常数dconst
Vlast = Vnew ; //保留本次速度,下次当成上次温度使用
//pTerm+iTerm+dTerm
希望大家给点建议 |