常驻嘉宾
- 积分
- 3787
- 威望
- 1857
- 贡献
- 918
- 兑换币
- 704
- 注册时间
- 2012-3-12
- 在线时间
- 506 小时
|
我在调增量式PID的时候遇到一个问题好奇怪,先纯比例控制,当比例系数过大时,速度最后会越来越快,当较小时,就会衰减,调整不到出现震荡的波形,10ms采样一次速度之,并进行控制,即在采集速度后调用下面这个函数,这个现象好奇怪,不知道大家有没有遇到过,指点一下~~
//增量式PID
/* 增量 U(k)-U(k-1)=kp*{e(k)-e(k-1)} 比例 Ts为采样周期
// + Kp*Ts/Ti*e(k) 积分 ki= Kp*Ts/Ti
// + kp*Td/Ts*{e(k)-2e(k-1)+e(k-2)} 微分 kd=kp*Td/Ts
*/
void increase_pid(float kp,float kd,float ki)
{
nowspeed = g_pulsenum; //得到当前速度采样值
er=gspeed-nowspeed; //本次误差量
pvalue=er-er1; // 比例控制量
ivalue=er; //积分控制量
dvalue=er-2*er1+er2; //微分控制量
outpwm= outpwm+kp*pvalue+ki*er+kd*dvalue; //增量式PID公式
er2=er1; //误差更新
er1=er; //
if(outpwm>500) outpwm=500; //限幅
if(outpwm<0) outpwm=0;
left_motorpwm(0,outpwm); //给定控制电机PWM
right_motorpwm(0,outpwm);
}
|
|