#ifndef _PID_H_
#define _PID_H_
typedef struct PID
{
int SetPoint; //设定目标
float Kp; //比例常数
float Ki; //积分常数
int eKT; //上次差值
} PID;
static PID sPID;
static PID *sptr = &sPID;
void IncPIDInit(void)
{
sptr->eKT = 0; //上次差值
sptr->Kp = 0; //比例常数
sptr->Ki = 0; //积分常数
sptr->SetPoint = 0; //设定值
}
int IncPIDCalc(int NextPoint)
{
static
int iError,uKT; //当前误差
iError = sptr->SetPoint - NextPoint; //增量计算
uKT=uKT+sptr->Kp*(iError-sptr->eKT)+sptr->Ki*iError;//存储本次PID值
sptr->eKT = iError;
//返回增量值
return(
uKT);
}
#endif
希望对你有帮助。