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:10e(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')
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:10e(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')
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
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:10e(3)= r -y(end);ifabs(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')
Algoritmo de control PID con zona muerta
Diagrama esquemático:
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:10e(3)= r -y(end);ifabs(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')
Algoritmo de control PID derivado incompleto
Diagrama esquemático:
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:10e(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')