📄 pid.m
字号:
%delay:3拍,速度PID加入考虑上拍速度环节,上一拍速度的影响体现在系数K上
clc;
clear;
SetPoint = 100;
StartPoint = 0;
Kp = 0.1;
Ki = 0.4;
Kd = 0.5;
K = 0.4;
v = 0;
e = 0;
e_1 = 0;
e_2 = 0;
e_3 = 0;
e_4 = 0;
e_5 = 0;
CurrentPoint(1) = 0;
SimTimes = 1000;
i=1;
figure(1);
while (i<=SimTimes)
SetPoint(i) = 100*cos(i/100);
e = SetPoint(i) - CurrentPoint(i);
ev(i) = e;
d = Kp*(e_3-e_4)+Ki*e_3+Kd*(e_3-2*e_4+e_5)+K*v;%add delay
%d = Kp*(e-e_1)+Ki*e+Kd*(e-2*e_1+e_2);
if d>5
d=5;
end;
if d<-5
d=-5;
end;
v = d;
CurrentPoint(i+1) = CurrentPoint(i) + d;
e_1 = e;
e_2 = e_1;
e_3 = e_2;
e_4 = e_3;
e_5 = e_4;
i = i+1;
end
i=1;
while(i<=SimTimes)
subplot(121)
plot(i,SetPoint(i),'r.',i,CurrentPoint(i),'b.');
hold on;
subplot(122)
plot(i,ev(i),'g.');
hold on;
i = i+1;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -