Diseño de Compensadores de Adelanto por Cancelación Cero-Polo en MATLAB: Examen Resuelto de Control Automático
Examen 11-1-2024
% Examen 11-1-2024
clear all
close all
clc
format long
Datos del enunciado
% Datos del enunciado
s=tf('s')
G=550*(s+15)/((s+0.6)*(s+6)*(s+12))
H=1;
ts=0.8
Mp=1.5/100
a) Diseño del compensador por cancelación cero-polo
% a) Diseñar el compensador más adecuado, cumpliendo las especificaciones y
% utilizando el método de cancelación cero-polo.
xi=sqrt(log(Mp)^2/(pi^2+log(Mp)^2))
wn=4/(xi*ts)
pd1=-xi*wn+wn*sqrt(1-xi^2)*1i
pd2=-xi*wn-wn*sqrt(1-xi^2)*1i
figure
rlocus(G*H)
sgrid(xi,wn)
hold on
plot([real(pd1) real(pd2)],[imag(pd1) imag(pd2)],'k*')
% Como se puede ver, pd no pertenece al LGR, por lo tanto necesitaremos
% diseñar un compensador de adelanto.
% Para el método de cancelación cero-polo, cancelamos el polo más cercano
% al origen, sin que este sea cero, en este caso s=-0.6.
pd_re=abs(real(pd1))
pd_im=abs(imag(pd1))
theta1=180-atan2d(pd_im,pd_re-0.6)
theta2=atan2d(pd_im,6-pd_re)
theta3=atan2d(pd_im,12-pd_re)
theta4=atan2d(pd_im,15-pd_re)
AAC=-180+(theta1+theta2+theta3)-theta4
% AAC es positivo, por lo tanto hemos obtenido un compensador de adelanto.
% Ahora utilizamos el método de cancelación cero-polo.
b=0.6;
beta=theta1-AAC
y=pd_im/(tand(beta))
a=y+pd_re
Gc_sinK=(s+b)/(s+a)
[K,polos_lc]=rlocfind(Gc_sinK*G*H,pd1)
Gc=K*Gc_sinK
b) Sistema controlado
% b) Mostrar en una figura el sistema controlado.
figure
rlocus(Gc_sinK*G*H)
sgrid(xi,wn)
hold on
plot([real(pd1) real(pd2)],[imag(pd1) imag(pd2)],'k*')
e) Respuesta ante una entrada escalón
% e) Mostrar la respuesta ante una entrada escalón.
fdt_lc1=feedback(Gc*G,H)
fdt_lc2=feedback(Gc2*G,H)
figure
step(fdt_lc1) % también se puede step(fdt_lc1,fdt_lc2)
hold on
step(fdt_lc2)
% Se puede observar que ambas respuestas presentan un error, ya que no
% llegan a 1 respecto al MP; la fdt_lc1 presenta más error que la fdt_lc2.
% Para mejorar la respuesta obtenida, se podría diseñar un compensador de retraso
% o meter un integrador para eliminar el error.
f) Estabilidad relativa de ambos sistemas
% f) Analizar la estabilidad relativa de ambos sistemas.
figure
margin(Gc*G*H)
grid on
[MG,MF,wcg,wcf]=margin(Gc*G*H)
figure
margin(Gc2*G*H)
grid on
[MG2,MF2,wcg2,wcf2]=margin(Gc2*G*H)
figure
bode(fdt_lc1)
grid on
figure
bode(fdt_lc2)
grid on
% Ambos sistemas serán estables puesto que MG y MF son positivos y MG2 y
% MF2 también lo son.
c) Cancelación del polo situado en s=-6
% c) Ahora cancelamos el polo situado en s=-6.
b2=6;
gamma=theta2-AAC
y2=pd_im/(tand(gamma))
a2=y2+pd_re
Gc_sinK2=(s+b2)/(s+a2)
[K2,polos_lc2]=rlocfind(Gc_sinK2*G*H,pd1)
Gc2=K2*Gc_sinK2
d) Sistema controlado con cancelación en s=-6
% d) Mostrar en una nueva figura el sistema controlado.
figure
rlocus(Gc_sinK2*G*H)
sgrid(xi,wn)
hold on
plot([real(pd1) real(pd2)],[imag(pd1) imag(pd2)],'k*')