pid算法
int PIDCal(PID *pp, int ThisError)
{
//增量式PID算法(需要控制的不是控制量的绝对值,而是控制量的增量)
int pError,dError,iError;
double data0=0;
pError = ThisError-pp->LastError;
iError = ThisError;
dError = ThisError-2*(pp->LastError)+pp->PreError;
//增量计算
data0=pp->Proportion*pError + pp->Integral*iError+pp->Derivative*dError; //增量
pp->YnBuffer[1]=pp->YnBuffer[0]+data0;
pp->YnBuffer[0]=pp->YnBuffer[1];
//存储误差用于下次运算
pp->PreError = pp->LastError;
pp->LastError = ThisError;
return ((int)pp->YnBuffer[1]);
}
to be continued ...