pid.m

来自「增量式PID算法的matlab仿真程序」· M 代码 · 共 53 行

M
53
字号
%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 + =
减小字号Ctrl + -
显示快捷键?