Академический Документы
Профессиональный Документы
Культура Документы
La idea de realimentación esta´ tan asociada con la teoría de control que resulta
casi imposible pensar en control sin realimentación. Un ejercicio muy interesante
es preguntarse ¿por qué motivo no se podría controlar un sistema con un
controlador a lazo abierto? Hasta ahora hemos considerado que disponemos de
un modelo matemático del sistema (sin decir mucho respeto de la exactitud del
mismo) y si bien hemos trabajado con perturbaciones externas no hicimos un
tratamiento o modelado de las mismas, es decir la supusimos conocidas. Bajo
estas hipótesis no parecería necesaria la realimentación. Un resultado muy
2
interesante surge de hacer un poco de algebra de bloques con un lazo de control
típico como se muestra en Figura 1. En este lazo P representa el sistema físico
a ser controlado, K(s) es el modelo matemático del controlador a utilizar y d(s)
es una perturbación externa a la salida de la planta.
d
r- - - - ? -y
f K (s) P f
6
3
1. CREAR UN MODELO INCIERTO DE P (S) :
P=
Type "P.NominalValue" to see the nominal value, "get(P)" to see all properties,
and "P.Uncertainty" to interact with the uncertain elements.
>> KI = 1/(2*tau.Nominal*gamma.Nominal);
C = tf(KI,[1 0]);
CLP = feedback(P*C,1)
CLP =
4
3. GENERAR 20 MUESTRAS ALEATORIAS DE LOS PARÁMETROS
INCIERTOS GAMMA Y TAU Y TRAZAR LAS RESPUESTAS A UN
ESCALÓN CORRESPONDIENTES DE LOS MODELOS DE CICLO
CERRADO PLANTAS :
5
• ureal construye estos parámetros inciertos:
• Por razones físicas, los valores de Kf y Kb son la misma, incluso si no
están seguros.
• En este ejemplo, el valor nominal es de 0.015 con un rango entre 0,012
y 0,019.
• Fricción viscosa, Kf, tiene un valor nominal de 0,2 con una variación del
50% en su valor.
R = ureal('R',2,'Percentage',40);
L = ureal('L',0.5,'Percentage',40);
>> K = ureal('K',0.015,'Range',[0.012 0.019]);
Km = K;
Kb = K;
>> Kf = ureal('Kf',0.2,'Percentage',50);
Km = K;
Kb = K;
>> Kf = ureal('Kf',0.2,'Percentage',50);
H.InputName = {'AppliedVoltage';'AngularSpeed'};
H.OutputName = {'Current';'AngularSpeed';'RotorTorque'};
6
6. MODELO DE MOTOR DE CC CON INCERTIDUMBREMODELO DE
MOTOR DE CC CON INCERTIDUMBRE
>> P = Pall(2,:)
P=
Type "P.NominalValue" to see the nominal value, "get(P)" to see all properties, and
"P.Uncertainty" to interact with the uncertain elements.
7
7. ANÁLISIS DE LAZO ABIERTO DEL MOTOR DC
step(P.NominalValue,'r-+',usample(P,20),'b',3)
legend('Nominal','Samples')
om = logspace(-1,2,80);
Pg = ufrd(P,om);
bode(usample(Pg,25),'b',Pg.NominalValue,'r-+');
legend('Samples','Nominal')
8
Análisis de diagrama de Bode a lazo abierto
>>
9
9. CARACTERÍSTICAS DE LA ROBUSTEZ EN EL RECHAZO DE LAS
PERTURBACIONES.
[SM,DM,MM] = loopmargin(P.NominalValue*Cont);
>> S = feedback(1,P*Cont);
bodemag(usample(S,20),'b',S.Nominal,'r-+');
legend('Samples','Nominal')
title('Disturbance Rejection')
legend('Samples','Nominal')
10
Rechazo de una perturbación escalón
>> Sg = ufrd(S,om);
[maxgain,worstuncertainty] = wcgain(Sg);
Maxgain
maxgain =
LowerBound: 7.4366
UpperBound: 7.4431
CriticalFrequency: 5.1152
>> maxgain
maxgain =
LowerBound: 7.4236
UpperBound: 7.4385
CriticalFrequency: 5.1152
11
>> Sworst = usubs(S,worstuncertainty);
Sgworst = frd(Sworst,Sg.Frequency);
norm(Sgworst,inf)
maxgain.LowerBound
ans =
7.4366
ans =
7.4366
ans =
7.4236
ans =
7.4236
ans =
>> step(Sworst,'b',S.NominalValue,'r-+',6);
title('Disturbance Rejection')
legend('Worst-case','Nominal')
12
12. COMPARACIÓN DE LAS RESPUESTAS CON MAGNITUD DE BODE:
step(Sworst,'b',S.NominalValue,'r-+',6);
title('Disturbance Rejection')
legend('Worst-case','Nominal')
>> bodemag(Sg.NominalValue,'r-+',Sgworst,'b');
legend('Worst-case','Nominal')
hold on
semilogx(maxgain.CriticalFrequency,20*log10(maxgain.LowerBound),'g*')
hold off
……………………………………………………………………………………………………………………
13
CONCLUSION