位置式PID算法的C语言代码

typedef struct{
	float limit;	//输出限幅
	float target;	//目标量
	float feedback;	//反馈量
	float Kp;		
	float Ki;
	float Kd;
	float eSum;
	float e0;		//当前误差
	float e1;		//上一次误差
}PIDType;

#define max(a, b)			(a>b? a:b)
#define min(a, b)			(ae0 = p->target - p->feedback;

	//误差积分
	p->eSum += p->e0;

	//误差微分
	de = p->e0 - p->e1;

	pe = p->e0;
	ie = p->eSum;

	p->e1 = p->e0;

	out = pe*(p->Kp) + ie*(p->Ki) + de*(p->Kd);
	//输出限幅
	out = range(out, -p->limit, p->limit);
	return out;
}

你可能感兴趣的:(c语言)