单片机C语言,需要一个编写封装好的PID算法头文件,寻求帮助。

2025-01-04 09:07:59
推荐回答(1个)
回答1:

#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

希望对你有帮助。