中级会员
 
- 积分
- 226
- 威望
- 122
- 贡献
- 68
- 兑换币
- 68
- 注册时间
- 2016-1-7
- 在线时间
- 18 小时
- 毕业学校
- 哈哈
|
之前看过一句话,不限福的增量式pd相当于位置式pd
验证下:
目前调车的时候,发现过弯道的时候后半段会发现打角不够~
写着写着:自己想到了怎么解决了,就是每一次不对pwm进行修改,将其赋给另一个变量,限幅输出,这样弯道后半期打角度就会足够,否则就会像第二幅图像后半期一样,输出为很不理想的~我low了,也许大家就是这样解决的~~~
假设入弯道的偏差依次为piancha=[8 10 15 16 17 18 19 20 27 25 18 17 16 10 8]; %进弯道的时候
位置式pd占空比结果用红线表示,增量式pd占空比结果用蓝点表示(这里只调了p)
matlab代码如下,直接进行,位置式pd调节,最后限幅输出,注意:增量式是没有限幅,但是画图时限幅了
%%左边打角865 中间780 右边695
%%进行限幅
%依照时间顺序的偏差
piancha=[8 10 15 16 17 18 19 20 27 25 18 17 16 10 8]; %进弯道的时候
zuo=865;
zhong=780;
you=695;
pwm=zeros(1,length(piancha)); %每时每刻的pwm信号
%%按照位置式pd 且限幅
%当前误差
error_pre=0; %初始化为0
kp=5;
kd=0;
for i=1:length(piancha)
error_now=piancha(i); %%当前偏差赋值
pwm(i)=zhong+kp*error_now+kd*(error_now-error_pre);
error_pre=error_now;
end
%%pwm进行限幅
pwm(pwm>865)=865;
pwm(pwm<695)=695;
plot(pwm,'r');
hold on;
%%增量式pd
error_pre=0; %初始化为0
error_prepre=0;
kp=5;
kd=0;
pwm(1)=zhong;
for i=2:length(piancha)
error_now=piancha(i); %%当前偏差赋值
pwm(i)=pwm(i-1)+kp*(error_now-error_pre)+kd*(error_now-2*error_pre+error_prepre);
error_prepre=error_pre;
error_pre=error_now;
%%pwm进行限幅
% pwm(pwm>865)=865; %第二个图像时 每一次增量式均有限幅
%pwm(pwm<695)=695;
end
%%pwm进行限幅
pwm(pwm>865)=865; %第一个图像,增量式没有进行限幅
pwm(pwm<695)=695;
plot(pwm,'b*');
hold on;
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|