//位置式PID float Kp; float Ki; float Kd; float eSum,e0,e1; float pid_control(float now,float target) { float pe,ie,de; float out; e0 = target - now; eSum += e0; pe = e0; ie = eSum; de = e0 - e1; out = pe*Kp + ie*Ki + de*Kd; out = limit(out,-LIMIT,LIMIT); e1 = e0; return out; } //增量式PID float Kp; float Ki; float Kd; float eSum,e0,e1,e2; float pid_control(float now,float target) { float pe,ie,de; float out; e0 = target - now; pe = e0 - e1; ie = e0; de = e0 - 2*e1 + e2; out = pe*Kp + ie*Ki + de*Kd; out = limit(out,-LIMIT,LIMIT); e2 = e1; e1 = e0; return out; }