Sea el motor dc de excitacin independiente, controlado por armadura, tal que sus parmetros son: Momento de inercia del rotor (J) Coeficiente de friccin viscosa (b) Constantes elctrica (K=Ke=Kt) Resistencia de armadura (Ra) Inductancia de armadura (La) [ ] = = = = = [ 0.01 kg.m2/s2 0.1 Nms 0.01 Nm/Amp 1 Ohm 0.5 ]
NOTA:
Ra + ea ia
La if = cte +
efem
wm
T J b
OBSERVACION GENERAL: SE DESARROLARA UN SISTEMA DE CONTROL OPTIMO PROPORCIONAL E INTEGRAL PARA LAS DOS PRIMERAS VARIABLES DEL SISTEMA. LUEGO SE IMPLEMENTARA UN SISTEMA DE CONTROL OPTIMO PROPORCIONAL PARA LAS TRES VARIABLES: CORRIENTE, VELOCIDAD ANGULAR Y ANGULO. PARA LOS DOS PRIMEROS DISEOS NO EXISTE INCONVENIENTE EN LOS RESULTADOS, A DIFERENCIA DEL ULTIMO QUE NO CUMPLE LAS PERSPECTIVAS, POR TAL MOTIVO SE HIZO ALGUNAS MODIFICACIONES AL DISEO. ESPECIFICAMENTE AL VECTOR DE GANANACIAS (ESTO ULTIMO SE EXPLICARA DETALLADAMENTE MAS ADELANTE).
CONTROL II
FIEE - UNI
CONTROL PTIMO
[ ]
][ ]
][ ]
Si modificamos el orden del vector de estado de la siguiente manera [ Ahora remplazando valores tendremos: [ ]
][ ]
[ ]
][ ]
[ ]
Control optimo proporcional para un motor (sistema de 2x2): Moldeamiento del sistema (2x2) [ ]
] [ ]
[ ]
][ ]
[]
[ [ ]
][ ]
[]
CONTROL II
FIEE - UNI
Observacin: A medida que aumentamos el valor de R el tiempo de establecimiento empieza a aumentar, para nuestro caso con un R=0.1 se obtiene un Ts= 0.7seg; a diferencia de otros valores mayores de R que dan valores muy grandes de tiempo de establecimiento; por ejemplo para R=10 da como Ts =1.5seg y no solo eso, sino que tambin aumenta la magnitud del error. Tambin se pudo haber escogido R=0.5 pues este valor reduce en 20% el sobrepico de la funcin corriente.
ESQUEMA EN SIMULINK
CONTROL II
FIEE - UNI
CONTROL II
FIEE - UNI
En Matlab.
%EL MOTOR DC %DISEO DE UN SISTEMA DE CONTROL OPTIMO PROPORCIONAL (SISTEMA 2X2) A=[1 -10 ;-2 -0.02]; B=[0;2]; C=[1 0]; D=[0]; [f,c]=size(A); %1.-) Verificamos la controlabilidad M=ctrb(A,B) rangoM=rank(M) detM=det(M) if rangoM==f fprintf('EL SISTEMA ES DE ESTADO COMPLETAMENTE CONTROLABLE') else fprintf('EL SISTEMA NO ES CONTROLABLE') rangoM fprintf(['DEBERIA SER RANGO=' str2double(f)]) end %2.-) Elegimos adecuadamente Q y R Q=eye(f) R=0.5 %3.-) Verificamos la estabilidad del sistema sys=ss(A,B,C,D); tf(sys); [num,den] = ss2tf(A,B,C,D); tf(num,den) %4.-) Determinamos la matriz P [P,l,g]=care(A,B,Q,R); P %5.-) Determinamos el vector de ganancia K=(R^-1)*B'*P %6.-) Graficamos los resultados del control proporcional Ap=A-B*K Bp=B*K(1) Cp=C; Dp=D; t=0:0.02:6; [y,x,t]=step(Ap,Bp,Cp,Dp,1,t); % El nuevo sistema sys=ss(Ap,Bp,Cp,Dp); tf(sys); [num,den] = ss2tf(Ap,Bp,Cp,Dp); tf(num,den) size(x); x1=[1 0 ]*x'; x2=[0 1 ]*x'; figure subplot(2,2,1); plot(t,x1); grid title('Velocidad Angular') xlabel('t seg'); ylabel('x1') subplot(2,2,2); plot(t,x2);grid title('Corriente') xlabel('t seg'); ylabel('x2') subplot(2,2,[3 4]); plot(t,y-1); grid title('Error: Salida-Entrada (y-r) ') xlabel('t seg'); ylabel('x4')
CONTROL II
FIEE - UNI
] [ ]
[ ]
][ ]
[]
] [
[ ]
][
[ ]
] [ ]
[ ]
][ ]
CONTROL II
FIEE - UNI
ESQUEMA EN SIMULINK
CONTROL II
FIEE - UNI
En MatLab:
%EL MOTOR DC %DISEO DE UN SISTEMA DE CONTROL OPTIMO INTEGRAL (SISTEMA 2X2) A=[1 -10;-2 -0.02]; B=[0;2]; C=[1 0]; D=[0]; [f,c]=size(A); % Definicin del nuevo sistema (An,Bn,Cn,Dn) An=[A zeros(f,1);-C 0] Bn=[B;0]; Cn=[C 0]; Dn=[0]; %1.-) Verificamos la controlabilidad Mn=ctrb(An,Bn); rangoMn=RANK(Mn); detMn=det(Mn); %2.-) Elegimos adecuadamente Q y R Qn=1*eye(f+1); Rn=0.5; Verificamos la estabilidad del sistema sys=ss(An,Bn,Cn,Dn); tf(sys); [num,den] = ss2tf(An,Bn,Cn,Dn); tf(num,den) Determinamos la matriz P [Pn,l,g]=care(An,Bn,Qn,Rn); Pn Determinamos el vector de ganancias K=(Rn^-1)*Bn'*Pn Graficamos los resultados del control proporcional Ki=-K(end) Kp=K(1,1:end-1) %El nuevo sistema Ap=[A-B*Kp B*Ki;-C 0] Bp=[0;0;1] Cp=[C 0] Dp=[0]; %Ap=An-Bn*K %Bp=Bn*K(1) %Cp=Cn;
%3.-)
t=0:0.02:20; [y,x,t]=step(Ap,Bp,Cp,Dp,1,t); % El nuevo sistema sys=ss(Ap,Bp,Cp,Dp); tf(sys); [num,den] = ss2tf(Ap,Bp,Cp,Dp); tf(num,den) size(x); x1=[1 0 0]*x'; x2=[0 1 0]*x'; x3=[0 0 1]*x'; figure subplot(2,2,1);plot(t,x1);grid title('Velocidad Angular') xlabel('t seg');ylabel('x1') subplot(2,2,2);plot(t,x2);grid title('Corriente') xlabel('t seg');ylabel('x2') subplot(2,2,[3 4]);plot(t,1-y);grid title('Error: Entrada -Salida (r-y) ') xlabel('t seg');ylabel('x3')
CONTROL II
FIEE - UNI
[ ]
][ ]
[ ]
][ ]
[ ]
-10.0000 -11.7361 0
0 2.0000 0
Bp = 0 -6.6868 0
Cp=C; Dp=D;
[ ]
] [ ]
][ ]
Observacin: Este sistema determinado no satisface la condiciones de control; esto es debido a que al agregar la nueva variable , entonces se obtiene k3=0 ;tal como se muestra en el siguiente esquema
CONTROL II
FIEE - UNI
Esta grafica muestra la salida del sistema sin modificacin; por ello y(t=INFINITO )=0. Ahora si K3 = 0; entonces CONTROL II
FIEE - UNI
Del grafico y(t=infinito) es aproximadamente 2.5 es con esta ltima modificacin la salida (la velocidad angular) se logra controlar en estado estable. En matlab:
%EL MOTOR DC %DISEO DE UN SISTEMA DE CONTROL OPTIMO PROPORCIONAL (SISTEMA 3X3) %"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" %"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" A=[1 -10 0;-2 -0.02 0; 1 0 0]; B=[0;2;0]; C=[1 0 0]; D=[0];
[f,c]=size(A); %1.-) Verificamos la controlabilidad M=ctrb(A,B); rangoM=RANK(M); detM=det(M); if rangoM==f fprintf('EL SISTEMA ES DE ESAPACIO COMPLETAMENTE CONTROLABLE') else fprintf('EL SISTEMA NO ES CONTROLABLE') rangoM fprintf(['DEBERIA SER RANGO=' str2double(f)]) end %2.-) Elegimos adecuadamente Q y R Q=[1 0 0;0 1 0; 0 0 1]; R=1; %3.-) Verificamos la estabilidad del sistema sys=ss(A,B,C,D); tf(sys); [num,den] = ss2tf(A,B,C,D); tf(num,den) %4.-) Determinamos la matriz P [P,l,g]=care(A,B,Q,R); P %5.-) Determinamos el vector de ganancias K=(R^-1)*B'*P ki=1*K(1); %6.-) Graficamos los resultados del control proporcional Ap=A-B*K Bp=B*ki Cp=C; Dp=D;
CONTROL II
FIEE - UNI
% El nuevo sistema sys=ss(Ap,Bp,Cp,Dp); tf(sys); [num,den] = ss2tf(Ap,Bp,Cp,Dp); tf(num,den) t=0:0.02:20; [y,x,t]=step(Ap,Bp,Cp,Dp,1,t); size(x); x1=[1 0 0 ]*x'; x2=[0 1 0 ]*x'; x3=[0 0 1 ]*x'; figure subplot(2,2,1);plot(t,x1);grid title('Velocidad Angular') xlabel('t seg');ylabel('x1') subplot(2,2,2);plot(t,x2);grid title('Corriente') xlabel('t seg');ylabel('x2') subplot(2,2,3);plot(t,x3);grid title('Angulo') xlabel('t seg');ylabel('x3') subplot(2,2,4);plot(t,1-y);grid title('Error: Entrada -Salida (r-y) ') xlabel('t seg');ylabel('x4') %"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" %""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
CONTROL II
FIEE - UNI