Varios algoritmos de control PID de uso común

PID posicional

  • Es aplicable al objeto imputado sin el vínculo integral.
  • La realización de este algoritmo también necesita utilizar la idea de PID incremental; de lo contrario, el término de suma aumentará enormemente con el aumento del tiempo de control, lo que resultará en un uso excesivo de la memoria.
  • simulación de matlab;
%-----------------位置式PID------------------%
e = [];
e(1) = 0; e(2) = 0; e(3) = 0;
u = []; u(1) = 0; u(2) = 0;
r = 1; y = []; y(1) = 0;
for i  = 0:0.01:10
    e(3) = r - y(end);
    deltau = 0.5*(e(3)-e(2))+0.5*e(3)+0.05*(e(3)-2*e(2)+e(1));
    u(2) = u(1) + deltau;
    y = [y,u(2)];
    e = [e(2:3),0];
    u = [u(2),0];
end
figure(1)
stairs(0:0.01:10,y(1:1001),'r-','LineWidth',1)
xlim([0,1])
ylim([0,1.5])
xlabel('t')
title('位置式PID')

Inserte la descripción de la imagen aquí

PID incremental

  • Esto es adecuado para el objeto controlado que contiene un enlace integral, como un motor paso a paso.
  • Simulación de Matlab:
%-----------------增量式PID------------------%
e = [];
e(1) = 0; e(2) = 0; e(3) = 0;
u = []; u(1) = 0; u(2) = 0;
r = 1; y = []; y(1) = 0;
for i  = 0:0.01:10
    e(3) = r - y(end);
    deltau = 0.4*(e(3)-e(2))+0.05*e(3)+0*(e(3)-2*e(2)+e(1));
    u(2) = deltau;
    y = [y,u(2)];
    e = [e(2:3),0];
    u = [u(2),0];
end
figure(2)
stairs(0:0.01:10,y(1:1001),'r-','LineWidth',1)
xlim([0,1])
ylim([0,1.5])
xlabel('t')
title('增量式PID')

Inserte la descripción de la imagen aquí

Algoritmo de control PID con separación integral

  • Este tipo de algoritmo aparece porque muchas veces el término integral alcanza un valor grande cuando el objeto controlado no alcanza el estado estacionario, por lo que el controlador se satura, por lo que es necesario suprimir el enlace integral cuando la desviación es grande.
  • Diagrama esquemático
    Inserte la descripción de la imagen aquí
  • Simulación de Matlab:
%-----------------积分分离PID------------------%
e = []; key = 0;                 
e(1) = 0; e(2) = 0; e(3) = 0;
u = []; u(1) = 0; u(2) = 0;
r = 1; y = []; y(1) = 0;
for i  = 0:0.01:10
    e(3) = r - y(end);            
    if abs(e(3)) < 0.7 key = 1; else key = 0; end         %赋值限制小了会有稳态误差
    deltau = 0.5*(e(3)-e(2))+0.5*key*e(3)+0.05*(e(3)-2*e(2)+e(1));
    u(2) = u(1) + deltau;
    y = [y,u(2)];
    e = [e(2:3),0];
    u = [u(2),0];
end
figure(4)
stairs(0:0.01:10,y(1:1001),'r-','LineWidth',1)
xlim([0,1])
ylim([0,1.5])
xlabel('t')
title('积分分离PID')

Inserte la descripción de la imagen aquí

Algoritmo de control PID con zona muerta

  • Diagrama esquemático:
    Inserte la descripción de la imagen aquí
  • Simulación de Matlab:
%-----------------死区PID------------------%
e = [];
e(1) = 0; e(2) = 0; e(3) = 0;
u = []; u(1) = 0; u(2) = 0;
r = 1; y = []; y(1) = 0;
for i  = 0:0.01:10 
    e(3) = r - y(end);
    if abs(e(3))<0.1       %死区增大稳态误差增大
        e(3) = 0;
    end
    deltau = 0.5*(e(3)-e(2))+0.5*e(3)+0.05*(e(3)-2*e(2)+e(1));
    u(2) = u(1) + deltau;
    y = [y,u(2)];
    e = [e(2:3),0];
    u = [u(2),0];
end
figure(5)
stairs(0:0.01:10,y(1:1001),'r-','LineWidth',1)
xlim([0,1])
ylim([0,1.5])
xlabel('t')
title('死区PID')

Inserte la descripción de la imagen aquí

Algoritmo de control PID derivado incompleto

  • Diagrama esquemático:
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
    Antiinterferencia
  • Simulación de Matlab:
%-----------------不完全微分PID------------------%
e = []; alpha = 0.5;
e(1) = 0; e(2) = 0; e(3) = 0;
u = []; u(1) = 0; u(2) = 0;  u1=[]; u1(1) = 0; u1(2) = 0;
r = 1; y = []; y(1) = 0;
for i  = 0:0.01:10
    e(3) = r - y(end);
    deltau = 0.5*(e(3)-e(2))+0.5*e(3)+0.05*(e(3)-2*e(2)+e(1));
    u(2) = u(1) + deltau;
    u1(2) = alpha*u1(1) + (1-alpha)*u(2);
    y = [y,u1(2)];
    e = [e(2:3),0];
    u = [u(2),0];
    u1 = [u1(2),0];
end
figure(3)
stairs(0:0.01:10,y(1:1001),'r-','LineWidth',1)
xlim([0,1])
ylim([0,1.5])
xlabel('t')
title('不完全微分PID')

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_43145941/article/details/105614360
Recomendado
Clasificación