Está en la página 1de 28

Control Adaptivo

5.1. Introduccin Los sistemas de control adaptivo ajustan su comportamiento a las cambiantes propiedades del proceso controlado y de las seales que interactan sobre dicho proceso. La investigacin sobre controladores adaptivos se ha centrado en dos grupos principales: controladores adaptivos con un modelo referencial y controladores con autosintonizacin. Tal sistema combina en su diseo un mtodo de estimacin de parmetros, una tcnica de estimacin de estados (el filtro de Kalman), una representacin lineal del modelo del proceso, y una ley de control. El objetivo del control es determinar una fuerza de control capaz de minimizar la diferencia entre la salida del proceso y la seal de referencia.

El sistema de control con autosintonizacin mostrado en la figura 5.1 opera como sigue: luego de cada tiempo de muestreo, el vector estimado de parmetros se actualiza empleando los datos proporcionados por la entrada U del proceso y por la salida Y del mismo. Luego, los elementos de se usan para recuperar el modelo lineal del proceso, lo cual permite estimar el vector de estado del modelo del proceso x (empleando un filtro de Kalman) y el valor de equilibrio de la ley de control actual U. Tales resultados se usan luego para computar la ley de control residual u y para actualizar la ley de control actual U a partir de la relacin U = + u. . 5.2. Modelando Procesos No Lineales Consideremos el siguiente proceso dinmico continuo:

dondeX (de orden n) y U(t) son el vector de estado y la ley de control, respectivamente. La funcin no lineal f (.) puede tambin contener disturbios v(.) en los estados. De la ecuacin (5.1), es posible obtener el modelo lineal siguiente:

dondeA es la matriz de estado de dimensin nn, B es la matriz de control de dimensin n1, C es la matriz de salida de dimensin 1n, y A, By C son las correspondientes incertidumbres acotadas con dimensiones apropiadas. Adems, v(X, t) es un vector no lineal de disturbios de orden n actuando sobre los estados, w(X, t) es un disturbio no lineal de orden uno actuando en la salida, e Y (t) es la salida del proceso de orden uno. El proceso nominal no perturbado se obtiene fijando en cero todas las incertidumbres y todos los disturbios en la ecuacin (5.1). Muestreando dicho modelo nominal, podemos obtener la siguiente representacin:

dondek es el tiempo discreto y las matrices G y H poseen las mismas dimensiones que las matrices A y B, respectivamente. La correspondiente ecuacin polinomial residual toma la forma:

dondez es el operador de desplazamiento, con:

Empleando ahora las relaciones residuales: y = Y , x = X y u = U en las ecuaciones (5.3) y (5.4) obtenemos:

donde la constante C se determina de:

5.3. Procedimientos de Estimacin 5.3.1. El Mtodo de los Mnimos Cuadrados Recursivo Para estimar los parmetros del modelo del proceso usaremos las seales actuales U(k) e Y (k) en lugar de sus desviaciones u(k) e y(k). Para ello, la descripcin en el espacio de estado dada por la ecuacin (5.7) tiene que ser reordenada para tomar la forma siguiente:

donde el vector de informacin (o de medicin) contiene los valores presentes y pasados de la entrada U y de la salida Y como sigue:

y el vector contiene los parmetros a ser estimados, a saber:

Notar que en la ecuacin (5.9), el orden del vector de informacin y el orden del vector de parmetros es 2n+1; es decir, dichos vectores han incrementadosu orden en uno. La ecuacin (5.7) con z = 1 (propiedad del valor final) representa la condicin de estado estable, es decir: A(1) = B(1) + C (5.12) El algoritmo bsico de los mnimos cuadrados recursivo puede implementarse en la forma siguiente: 1) Obtener el vector de parmetros inicial (0) usando los valores de los parmetros del modelo del proceso (ecuacin (5.5)). 2) Obtener el valor inicial del parmetro C(0) empleando la ecuacin (5.8), considerando = 0 e igual a la seal de referencia. 3) La matriz de covarianza inicial P puede tener la forma P = I, donde I es la matriz identidad y _ 1. 4) Tomar nuevas mediciones de Y (k) y de U(K) en el proceso, para obtener una nueva ecuacin de la forma dada en (5.9). 5) Computar el error de estimacin (ver ecuaciones (5.10) y (5.11)): e(k) = Y (k) T (k)(k) 6) Sabiendo que P(k) = [T (k)(k)]1, computar: i(k) = P(k)(k). 7) Computar: j(k) = T (k)i(k); (k) = i(k)/[ + j(k)] (k + 1) = (k) + (k)e(k); P(k + 1) = [I (k)T (k)]P(k)/ 8) Actualizar: P(k + 1) = P(k) y (k + 1) = (k) 5.3.2. Mnimos Cuadrados Recursivo Mejorado El algoritmo bsico de los mnimos cuadrados recursivo se encuentra bastante difundido. Sin embargo, dicho algoritmo puede presentar problemas potenciales de carcter numrico que podran afectar el diseo final del controlador con auto sintonizacin, el cual puede implementarse en la forma siguiente:

Figura 5.2: Respuesta del modelo lineal del proceso a un escaln de magnitud U = 0.4.

1) Obtener el vector de parmetros inicial (0) usando los valores de los parmetros del modelo del proceso dadas en la ecuacin (5.4). 2) Obtener el valor inicial del parmetro C(0) empleando la ecuacin (5.8), considerando = 0 e Y igual a la seal de referencia. 3) La matriz de covarianza inicial P puede tener la forma P = I, donde I es la matriz identidad y _ 1. 4) Tomar nuevas mediciones de Y (k) y de U(K) en el proceso, para obtener una nueva ecuacin de la forma dada en (5.9). 5) Computar: (k) = max(1, _(k)_); n = /(k) 6) Determinar la matriz N(k) aplicando factorizacin Cholesky en: N(k)N(k)T = P(k) 7) Determinar la matriz diagonal de escalamiento S(k) con elementos sjj. Tal matriz minimiza el nmero condicional del producto S(k)N(k) siempre que sjj= 1/njj, donde cada njjse obtiene tomando el valor absoluto de la suma de los elementos de la fila j de N(k). 8) Computar:

9) Implementar el criterio para parar la estimacin y para encontrar la nueva matriz de escalamiento Nnewcomo sigue: sabiendo que ttes el nmero condicionante de PS, si tt (cota inferior), parar la estimacin; en otro caso, si tt (cota superior), determinar Nnew(k) (a partir de la relacionPS = NnewNTnew), calcular los elementos nnewjj(valor absoluto de la suma de los elementos de las filas de Nnew(k)),determinar la matriz diagonal Snewcon elementos snewjj= 1/nnewjj, ycalcular la matriz PnewS= SnewPSSnew. Finalmente, actualizar: P =PnewS. 5.3.3. Estimacin de Estados De la ecuacin (5.6) podemos obtener el siguiente modelo nominal perturbado del proceso:

El procedimiento de estimacin descrito en la subseccin anterior nos proporciona el vector de parmetros estimado del proceso (k). Usando los elementos de dicho vector de parmetros, podemos reconstruir las matrices estimadas G(k), H (k) y C(k). El vector de estado estimado x(k) puede ser obtenido empleando un filtro de Kalman [6], con ecuacin de observacin:

y ecuacin de actualizacin de estados:

En la ecuacin (5.14), la matriz de ganancia Ko(k) se calcula de:

dondePo(k) es la matriz definida positiva, solucin nica de la siguiente ecuacin matricial discreta asociada de Riccati:

dondeQoy Ro son matrices de covarianza definidas positivas correspondiente a los disturbios v y w, respectivamente.

5.4. La Ley de Control Es bastante conocido [6] que el controlador proporcional optimo cuadrtico es una matriz de ganancia Kxque nos permite formular la siguiente ley de control u = Kxx(k). Dicha matriz es el resultado de la minimizacin de la funcin de costo:

sujeto a la ecuacin de restriccin:

donde la matriz Q = QT es semidefinida positiva y la matriz R es definida positiva. En la subseccin 4.5 se detalla cmo seleccionar estas matrices. La ganancia Kxse obtiene de:

donde S es la nica matriz definida-positiva solucin de la siguiente ecuacin matricial discreta asociada de Riccati:

Para mejorar el rendimiento del controlador proporcional, es posible adicionar accin integral a dicho controlador. Definiendo la variable z(k) como la integral (sumatoria) del error [ Y (k) Y (k)]:

entonces:

de modo que la representacin en el espacio de estado del sistema aumentado toma la forma siguiente:

donde el super ndice a significa aumentado. El vector xay las matrices Aa, Ba y Ca poseen la forma:

Por consiguiente, el problema es determinar la matriz de ganancia Kacomo resultado de la minimizacin de la siguiente funcin de costo:

donde la matriz Qa= [Qa]T es semidefinida positiva. La ganancia Kase obtiene de:

En la ecuacin (5.26), Paes la nica matriz definida-positiva solucin de la siguiente ecuacin matricial discreta asociada de Riccati:

Por consiguiente, la ley de control del controlador optimo cuadrtico proporcional integral viene a ser:

y los parmetros de ponderacin de rendimiento son R y Qa. 5.5. Procedimiento de Diseo El procedimiento para disear el sistema de control con auto sintonizacin ilustrado en la figura 5.1 es como sigue: 1) Formular el problema 2) Usando toda la informacin disponible acerca del proceso no lineal, determinar sus modelos lineal y no lineal 3) Implementar el mtodo de los mnimos cuadrados recursivo mejorado para estimar los parmetros del modelo del proceso. 4) Implementar el procedimiento desarrollado en la subseccin 5.3.3 para estimar los estados del modelo del proceso. 5) Implementar la ley de control residual u(k)dada por la ecuacin (5.28), computar U (k) usando la ecuacin (5.8), y actualizar la ley de control actual empleando la relacin U(k) = u(k) + U (k). 6) Simular el sistema de control adaptivo variando las matrices de ponderacin R, Qa, Ro y Qo, hasta obtener un rendimiento satisfactorio del sistema. 7) Implementar el hardware. 8) Implementar el software de control. 9) Realizar pruebas de funcionamiento (resultados experimentales). 5.6. Control Adaptivo de un Servomotor No Lineal 5.6.1. Formulacin del Problema El servomotor D.C. con carga no lineal es un proceso de una entrada y una salida que puede ser controlado por el voltaje de armadura. La carga no lineal es una varilla metlica acoplada al eje del servomotor, a manera de un brazo robtico de un grado de libertad. En el extremo de la varilla se pueden acoplar cargas adicionales.

El objetivo del control es disear e implementar un sistema de control adaptivo con auto sintonizacin, de modo tal que la varilla se posicione en una referencia predeterminada con mnimo sobreimpulso en su respuesta, a pesar de la presencia de la carga no lineal y de las no linealidades inherentes del proceso como son las fricciones esttica y de Coulomb, y saturacin enel amplificador del servomotor. 5.6.2. El Modelo del Proceso La figura 3.9 presenta la estructura del proceso no lineal a controlar. La tabla 3.2 describe las variables y los valores de los parmetros. El proceso no lineal puede ser descrito mediante un modelo lineal en el espacio de estado de la forma:

donde:

La funcin de transferencia de pulso Gp(z), para un tiempo de muestreo de 0.01 s (o lo que es lo mismo, una frecuencia de muestreo de Fs= 100 Hz), tiene la forma:

y su correspondiente ecuacin de diferencias es:

dondea1 = -1.9608, a2 = 0.9626, b1 = 0.044 y b2 = 0.045. Vimos que partiendo de la ecuacin (5.30), un mismo proceso puede adoptar mltiples representaciones de estado de la forma:

dondeG, H y C son las matrices de estado, de control y de salida respectivamente,con dimensiones apropiadas. La representacin cannica controlable del proceso (primera forma, ecuacin (3.100) con b0 = 0) tiene la forma:

5.6.3. Estimacin de Parmetros Para estimar (o identificar) los parmetros del modelo del proceso, empleamos el mtodo de los mnimos cuadrados recursivo mejorado desarrollado en la subseccin 5.3.2. Como primer paso calculamos el vector inicial de parmetros:

donde el valor inicial de C(0) con U = 0 e Y igual a la seal de referencia) es:

En el tercer paso fijamos la matriz de covarianza inicial P de orden 5:

Como cuarto paso obtenemos nuevas mediciones de Y (k) y de U(K) y formulamos:

Con los datos determinados hasta aqu, ahora podemos implementar losotros pasos (ver ejemplo 5.2) con Cmin= 15 y Cmax= 100. 5.6.4. Estimacin de Estados El procedimiento para la estimacin de estados se describe en la subseccin 5.3.3. El procedimiento de estimacin (subseccin anterior) nos proporciona el vector de parmetros estimado del proceso, a saber:

Usando los elementos de dicho vector de parmetros, podemos reconstruir las matrices estimadas G(k), H (k) y C(k) correspondientes a la representacin cannica controlable (ecuacin (5.32)):

Las ecuaciones del filtro de Kalman para estimar el vector de estado x son (ver ecuaciones (5.14), (5.15) y (5.16)):

Para cada muestra discreta, el programa de simulacin disadap.mcalcula las matrices Po(k) y Ko(k) empleando las matrices de covarianza de los disturbios v y w, a saber, Qo= 0.01 y Ro = 0.04.

5.6.5. La Ley de Control Para determinar el controlador proporcional- integral ptimo cuadrtico con realimentacin de estados, la representacin en el espacio de estado aumentado toma la forma siguiente (ecuacin (5.23)):

donde:

La matriz de control Kase obtiene de:

El programa disadap.m calcula las matrices Ka(k), Ga(k) y Ha(k) para cada tiempo de muestreo. En el software de control implementado, la matriz Pa(k)b se obtiene luego de iterar la ecuacin de Riccati 20 veces en cada perodo de muestro. Los valores de R y Qapara la simulacin son:

5.6.6. La Ley de Control Residual Para el sistema de control a lazo cerrado podemos tomar la seal (k) igual a la referencia para todo k. As, podemos calcular la ley de control residual empleando la relacin u(k) = U(k) (k), donde (k) se halla en lnea a partir de la ecuacin (5.8), como sigue:

Finalmente, actualizamos la ley de control actual: U(k) = u(k) + (k). 5.6.7. Simulacin del Sistema de Control Adaptivo El siguiente programa disadap.m resume todos los pasos descritos anteriormente para simular el sistema de control adaptivo. La simulacin incluye la estrategia para no saturar el amplificador, pero no incluye la compensacin de la no linealidad provocada por la friccin de Coulomb debido a que no es necesario.
% disadap.m SIMULACION DEL SISTEMA DE CONTROL DE POSICION % ADAPTIVO CON AUTOSINTONIZACION clearall % PARAMETROS DEL PROCESO NO LINEAL (TABLA 3.3) JL = 3.5e-7; bL = 1e-5; Ro = 0.01; Jm = 1.9062e-6; bm = 1.8338e-6; g = 9.81; E = 31.035e-3; Ra = 7.38; m = 0.06377; Kact = 14.9; cc = 0.25; Mo = 0.02; % 0.00, 0.01, 0.045;

K = 31.071e-3; n = 19.741; L = 4.64e-3; Lo = 0.776; B = n^2*bm +bL; Jeff = n^2*Jm +JL; M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2; N = g*Lo*(Mo+m/2); % MODELO LINEAL DEL PROCESO CONTINUO DE SEGUNDO ORDEN Ac = [0 1;-N/M -(B + n^2*K*E/Ra)/M]; % (c: CONTINUO) Bc = [0;n*K*Kact/(Ra*M)]; Cc = [1 0]; Dc = [0]; % MODELO LINEAL DISCRETO DEL PROCESO DE SEGUNDO ORDEN T = 0.01; % PERIODO DE MUESTREO [G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,'zoh'); [num,den]=ss2tf(G,H,C,D); a1 = den(2); a2 = den(3); b1 = num(2); b2 = num(3); % Gcc,Hcc, Ccc, Dcc: REPRESENTACION CANONICA CONTROLABLE a11 = 0; a12 =1; a21 = -a2; a22 = -a1; b11 = b1; b21 =b2-a1*b1; c11 =1; c12 = 0; Gcc = [a11 a12;a21 a22]; Hcc = [b11;b21]; Ccc=[c11 c12]; Dcc = [0]; % REPRESENTACION POLINOMIAL % A(z^(-1)) = 1 + a1*z^(-1) + a2*z^(-1); % B(z^(-1)) = b1*z^(-1) + b2*z^(-1); % A(z^(-1))*Y(k) = B(z^(-1))*U(k) + Ce; % CASO AUMENTADO % en el estado estacionario: z = 1: % (1 + a1 + a2)*Yo = (b1 + b2)*Uo + Ce % CONDICIONES INICIALES Y(1) = 0; Y(2) = 0; Y(3) = 0; % SALIDA ACTUAL y(1) = 0; y(2) = 0; % SALIDA RESIDUAL U(1) = 0; U(2) = 0; U(3) = 0; % SE~NAL DE CONTROL ACTUAL u(1) = 0; u(2) = 0; % SE~NAL DE CONTROL RESIDUAL xmenos = zeros(2,1); % VECTOR DE OBSERVACION INICIAL z=0; % ACCION INTEGRAL INICIAL X1 = 0; X2 = 0; % ESTADOS ACTUALES % CONDICIONES INICIALES DE LOS PARAMETROS Ref = 1; % MAGNITUD DE LA SE~NAL DE REFERENCIA frec = 0.007; % FRECUENCIA DE LA SE~NAL DE REFERENCIA Ce = (1 + a1 + a2)*Ref; % VALOR INICIAL DE Ce thi = [-a1 -a2 b1 b2 Ce]; % VECTOR INICIAL DE PARAMETROS alfa=1000; Pi = alfa*eye(5); % MATRIZ DE COVARIANZA INICIAL lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA cmax = 100; cmin = 10; % UMBRALES DE ESTIMACION % PARAMETROS DE OPTIMIZACION Qo = 0.01; Ro = 0.04; % PARA EL FILTRO DE KALMAN R = 0.45; Qa = [0.05 0 0;0 0.1 0;0 0 1]; % PARA LA GANANCIA Ka % ******** LAZO DEL SISTEMA DE CONTROL ADAPTIVO ********* Mm = 2000; for r = 1:Mm t = r + 2; % SE~NAL DE REFERENCIA Yo(t)= Ref*sign(sin(frec*(t-2))); % ESTIMACION DE PARAMETROS (METODO MCRM) psi = [Y(t-1) Y(t-2) U(t-1) U(t-2) 1]; rho = max(1,norm(psi)); psin = psi/rho; Nn = chol(Pi); % Nn*Nn = Pi =>Nn*Nn = Pi S = inv(diag(Nn*ones(5,1),0)); Ps = S*Pi*S; psins = inv(S)*psin'; rt = 1 + psins'*Ps*psins; lamb = 1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2;

e = Y(t)/rho - thi'*psin; j = psins'*Ps*psins + lamb; th = thi + e*inv(S)*Ps*psins/j; Hns = Ps*psins/j; Ps = (Ps - Hns*psins'*Ps)/lamb; tt = abs(max(eig(Ps))/min(eig(Ps)) ); cmax = 100; cmin = 15; iftt<= cmin, Pi = Ps; thi = th; elseiftt>= cmax, Nnew = chol(Ps'); % Nnew*Nnew = Ps Snew = inv(diag(Nnew*ones(5,1),0)); Psnew = Snew*Ps*Snew; Pi = Psnew; thi = th; end % RECUPERACION DE LA ECUACION CANONICA CONTROLABLE ae1 = -th(1); ae2 = -th(2); be1 = th(3); be2 = th(4); Ce = th(5); ae11 = 0; ae12 =1; ae21 = -ae2; ae22 = -a1; GE = [ae11 ae12;ae21 ae22]; be11 = 0; be21 = 1; HE = [be11;be21]; ce11 =be2; ce12 = be1; CE = [ce11 ce12]; DE = [0]; % SALIDA RESIDUAL (DESVIACION) y(t) = Y(t) - Yo(t); % CALCULO DE LA GANANCIA Ko DEL ESTIMADOR DE KALMAN Ko = dlqe(GE,HE,CE,Qo,Ro); xmas = xmenos + Ko*(y(t) - CE*xmenos); % OBSERVACION z = z -CE*xmas; % ACCION INTEGRAL % CALCULO DE LA GANANCIA Ka DEL CONTROLADOR OPTIMO Ga = [GE zeros(2,1);-CE 1]; Ha = [HE;0]; Ca = [CE 0]; Ka = dlqr(Ga,Ha,Qa,R); % CALCULO DE LA LEY DE CONTROL RESIDUAL u(t) = - Ka*[xmas;z]; % ACTUALIZANDO ESTADOS xmenos = GE*xmas + HE*u(t); % CALCULO DE Uin (VALOR D.C. DE U(t)) AE = 1 + ae1 + ae2; BE = be1 + be2; Uin = inv(BE)*(AE*Yo(t) - Ce); % CALCULO DE LA SE~NAL DE CONTROL U(t) U(t) = u(t) + Uin; % LIMITANDO LA SE~NAL U(t) PARA EVITAR SATURACION if(U(t) > 1.4) U(t) = 1.4; elseif(U(t) <-1.4) U(t) = -1.4; end % MODELO NO LINEAL DE SEGUNDO ORDEN (DISCRETIZCION DIRECTA) TN = cc*sign(X2); X1 = X1 + T*X2; X2 = X2 + T*(-(N/M)*sin(X1) - (B/M + n^2*K*E/(M*R))*X2 ... - TN/M + (n*K*Kact/(R*M))*U(t) ); Y(t+1) = X1; end % ***************** FIN DEL LAZO DE CONTROL ************** % GRAFICOS ejex = linspace(0,Mm*T,Mm); subplot(2,1,1) plot(ejex,Yo(1:Mm),ejex,Y(1:Mm)); grid ylabel('Posicion Y (rad)') subplot(2,1,2)

plot(ejex,U(1:Mm)); grid ylabel('Se~nal de control U (voltios)') xlabel('Tiempo en segundos') print-f-depssimsca% CREA simsca.eps

5.6.9. Implementacin del Software de Control Consideraciones Generales El software de control debe implementar las ecuaciones del sistema en tiempo real, incluyendo la solucin de las ecuaciones de Riccati para calcular las ganancias del controlador y del observador. Ya que la simulacin del sistema no incluye estos tipos de clculo, es necesario explicar sucintamente las ecuaciones involucradas en el sistema de control adaptivo a ser implementado en tiempo real. El modelo lineal continuo del proceso se obtiene de la ecuacin (5.29):

La ecuacion de diferencias del proceso es (ver ecuacinen (5.31)):

Ensamblaje del Software de Control El software de control emplea en su ejecuci on la siguiente secuencia: 1. Inicializa_Sistema(); 2. Mide_Variables(&y,&r,&vel,t); 3. Estima_Parametros(Th,y,u); 4. Encuentra_Control(r,&u); 5. u=Aplica_Control(u,vel); La compilacin de archivos para hacerlos ejecutables se realiza en Borland C/CPP mediante un proyecto que involucre todos los archivos, en nuestro caso, los archivos R1LLIB.H, R1LLIB.CPP y CON122.CPP. Una precaucin a considerar es la de especicar que la compilacin on se ejecute con el modelo de memoria Large. Otra precaucin es asegurarse que al inicio y al nal de la ejecucin de los programas, el servomotor debe estar parado, lo que se logra enviando la seal oset de 2.3 voltios.

Ejemplos resueltos Problema 5.1 El problema 3.2 describe las ecuaciones que gobiernan la dinmica longitudinal de un avin comercial volando a velocidad de crucero (altura y velocidad constantes). El control del ngulo de inclinacion del avin (ver gura 3.14) es un problema longitudinal a resolver. El objetivo de control entonces es disear un autopiloto que manipulando el ngulo e del deector de elevacin, controle el ngulo de inclinacin del avin. Se pide disear un sistema de control adaptivo que genere una fuerza de control, de modo que la salida del proceso (el ngulo de inclinacin on ) presente un sobreimpulso menor al 10% y un tiempo de estabilizacin menor que 10 s, con un error en estado estable nulo. Por ejemplo, si la entrada de referencia es 0.2 rad, entonces el ngulo de inclinacin no debe exceder el valor de 0.22 rad, y luego de 10 segundos, permanecer en 0.2 rad.
% PARAMETROS DEL PROCESO nn = 3; r=1; % nn: ORDEN DEL PROCESO; r: NUMERO DE SALIDAS NN = 7; % ORDEN DEL VECTOR ESTIMADO DE PARAMETROS % cmax = 100; cmin = 15; % PARA EL ESTIMADOR DE PARAMETROS % PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN Sigma = 10; Xi = 1; % PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke; r+nn=4 R = 400; Qa = [0 0 0 0;0 0 0 0;0 0 0.001 0;0 0 0 0.001]; % MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO Ac = [-0.313 56.7 0;-0.0139 -0.426 0;0 56.7 0]; Bc = [0.232;0.0203;0]; Cc = [0 0 1]; Dc = [0]; T = 0.1; % PERIODO DE MUESTREO % MODELO LINEAL DISCRETO [G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,'zoh'); [num,den]=ss2tf(G,H,C,D); a1 = den(2); a2 = den(3); a3=den(4); b1 = num(2); b2 = num(3); b3=num(4); % CONDICIONES INICIALES Ref = 0.2; % MAGNITUD DE LA SE~NAL DE REFERENCIA Ce = (1 + a1 + a2 + a3)*Ref; % Uo = 0 (ARBITRARIO) thi = [-a1 -a2 -a3 b1 b2 b3 Ce]'; alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA Y(1)=0; Y(2)=0; Y(3)=0; y(1)=0; y(2)=0; y(3)=0; % SALIDA U(1)=0; U(2)=0; U(3)=0; u(1)=0; u(2)=0; u(3)=0; % CONTROL xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL z=0; % ACCION INTEGRAL INICIAL % LAZO DEL SISTEMA DE CONTROL ***************************** MM = 2000; for t = 1:MM % SE~NAL DE REFERENCIA v1(t+3)=0.2*sign(sin(0.005*t)); % proceso Y(t+3) = [Y(t+2) Y(t+1) Y(t) U(t+2) U(t+1) U(t)]*... [-a1 -a2 -a3 b1 b2 b3]'; y(t+3) = Y(t+3) - v1(t+3); % SALIDA RESIDUAL (DESVIACION) % ESTIMACION DE PARAMETROS (METODO MCRM) psi = [Y(t+2) Y(t+1) Y(t) U(t+2) U(t+1) U(t) 1]'; rho = max(1,norm(psi)); psin = psi/rho;

Nn = chol(Pi'); % Nn*Nn = Pi => Nn*N = Pi S = inv(diag(Nn*ones(NN,1),0)); Ps = S*Pi*S; psins = inv(S)*psin; rt = 1 + psins'*Ps*psins; lamb = 1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2; e = Y(t+3)/rho - psin'*thi; j = psins'*Ps*psins + lamb; th = thi + e*inv(S)*Ps*psins/j; Hns = Ps*psins/j; Ps = (Ps - Hns*psins'*Ps)/lamb; tt = abs(max(eig(Ps))/min(eig(Ps)) ); cmax = 100; cmin = 15; if tt <= cmin, Pi = Ps; thi = th; elseif tt >= cmax, Nnew = chol(Ps'); % Nnew*Nnew = Ps Snew = inv(diag(Nnew*ones(NN,1),0)); Psnew = Snew*Ps*Snew; Pi = Psnew; thi = th; end % RECUPERACION DE LA ECUACION CANONICA CONTROLABLE ae1 = -th(1); ae2 = -th(2); ae3 = -th(3); be1 = th(4); be2 = th(5); be3 = th(6); Ce = th(7); nume = [0 be1 be2 be3]; dene = [1 ae1 ae2 ae3]; [GE,HE,CE,DE] = tf2ss(nume,dene); % CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN F = dlqe(GE,HE,CE,Sigma,Xi); xmas = xmenos + F*(y(t+3) - CE*xmenos); % OBSERVACION z = z -CE*xmas; % ACCION INTEGRAL % CALCULO DE LA GANANCIA Ka DEL CONTROLADOR Ga = [GE zeros(nn,r);-CE eye(r,r)]; Ha = [HE;zeros(r,r)]; Ca = [CE zeros(r,r)]; Ka = dlqr(Ga,Ha,Qa,R); % CALCULO DE LA LEY DE CONTROL RESIDUAL u(t+3) = - Ka*[xmas;z]; % ec. (27) % ACTUALIZANDO ESTADOS xmenos = GE*xmas + HE*u(t+3); % % CALCULO DEL VALOR DE EQUILIBRIO U AE = 1 + ae1 + ae2 + ae3; BE = be1 + be2 + be3; Uin = inv(BE)*(AE*v1(t+3) - Ce); % CALCULO DE LA SE~NAL ACTUAL DE CONTROL U(K) U(t+3) = u(t+3) + Uin; end% ********************************* % GRAFICOS ejex = linspace(0,MM*T,MM); subplot(2,1,1) plot(ejex,v1(3:MM+2),ejex,Y(3:MM+2)), grid ylabel('Inclinacion (rad)') subplot(2,1,2) plot(ejex,U(3:MM+2)), grid xlabel('Tiempo en seg') ylabel('Angulo del deflector (rad)') print -deps-fp4adap1

0.4
Inclinacion (rad)

0.2 0 -0.2 -0.4

20

40

60

80

100

120

140

160

180

200

Angulo del deflector (rad)

1 0.5 0 -0.5 -1

20

40

60

80 100 120 Tiempo en seg

140

160

180

200

Problema 5.3 La gura 3.20 muestra un monorriel de dos carros descrito en el problema 3.5. El problema a resolver es el control de velocidad del carro de maquinas mediante un sistema de control adaptivo con autosintonizacion. Para garantizar a los pasajeros un viaje confortable, los cambios de velocidad deben realizarse con un tiempo de estabilizacin menor que 15 s y con mnimo sobreimpulso. El error en estado estable debe ser nulo. Simule una seal de referencia que cambie la velocidad de 30 a 20 m/s y demuestre que se cumplen las especicaciones de diseo. Luego enfrente el problema de seguimiento. Mostrar que la velocidad de la maquina puede seguir una trayectoria predeterminada de velocidades. El programa p7adap1b.m trata el caso de referencia arbitraria. Revise tal programa si desea ver detalles al respecto.

clear all % PARAMETROS GENERALES nn = 6; r=1; % nn: orden del proceso; r: NUMERO DE SALIDAS NN = 13; % ORDEN DEL VECTOR ESATIMADO DE PARAMETROS % cmax = 100; cmin = 15; % PARA EL ESTIMADOR DE PARAMETROS % PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN Xi = 2; Sigma = 1;

% PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke R = 1; Qa = 1*eye(r+nn,r+nn); % PARAMETROS DEL PROCESO M1=1300; M2=2600; M3=2600; K12=100000; K23=100000; B12=500; B23=500; B1=5000; B2=10000; B3=10000; % MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO A=[0 1 0 0 0 0 -K12/M1 -(B1+B12)/M1 K12/M1 B12/M1 0 0 0 0 0 1 0 0 K12/M2 B12/M2 -(K12+K23)/M2 -(B2+B23+B12)/M2 K23/M2 B23/M2 0 0 0 0 0 1 0 0 K23/M3 B23/M3 -K23/M3 -(B3+B23)/M3]; B=[0 1 0 0 0 0]'; alfa = 1; % CONSTANTE TACOMETRICA C=[ 0 alfa 0 0 0 0 0 0 0 alfa 0 0 0 0 0 0 0 alfa]; D=[0;0;0]; [numc,denc]=ss2tf(A,B,C,D); % MODELO LINEAL DISCRETO T = 0.5; % periodo de muestreo0.2 [G,H,C,D]=c2dm(A,B,C,D,T,'zoh'); [num,den]=ss2tf(G,H,C,D); a1 = den(2); a2 = den(3); a3=den(4); a4=den(5); a5=den(6); a6=den(7); b1 = num(2); b2 = num(3); b3=num(4); b4=num(5); b5=num(6); b6=num(7); % CONDICIONES INICIALES Ref = 30; % MAGNITUD DE LA SE~NAL DE REFERENCIA Ce = (1+a1+a2+a3+a4+a5+a6)*Ref; % Uo = 0 (ARBITRARIO) thi = [-a1 -a2 -a3 -a4 -a5 -a6 b1 b2 b3 b4 b5 b6 Ce]'; alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA Y(1)=0; Y(2)=0; Y(3)=0; Y(4)=0; Y(5)=0; Y(6)=0; y(1)=0; y(2)=0; y(3)=0; y(4)=0; y(5)=0; y(6)=0; % salida U(1)=0; U(2)=0; U(3)=0; U(4)=0; U(5)=0; U(6)=0; u(1)=0; u(2)=0; u(3)=0; u(4)=0; u(5)=0; u(6)= 0; % control xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL z=0; % ACCION INTEGRAL INICIAL % INICIO DEL LAZO DE CONTROL ******************* MM = 600; for t = 1:MM % SE~NAL DE REFERENCIA Yo(t+6)= 25 + 5*sign(sin(0.02*t)); % MODELO LINEAL DEL PROCESO Y(t+6) = [Y(t+5) Y(t+4) Y(t+3) Y(t+2) Y(t+1) Y(t)... U(t+5) U(t+4) U(t+3) U(t+2) U(t+1) U(t)]*... [-a1 -a2 -a3 -a4 -a5 -a6 b1 b2 b3 b4 b5 b6]'; y(t+6) = Y(t+6) - Yo(t+6); % salida residual (desviaci on) % ESTIMACION DE PARAMETROS (METODO MCRM) psi = [Y(t+5) Y(t+4) Y(t+3) Y(t+2) Y(t+1) Y(t)... U(t+5) U(t+4) U(t+3) U(t+2) U(t+1) U(t) 1]'; rho = max(1,norm(psi)); psin = psi/rho; Nn = chol(Pi'); % Nn*Nn = Pi => Nn*N = Pi S = inv(diag(Nn*ones(NN,1),0)); Ps = S*Pi*S; psins = inv(S)*psin; rt = 1 + psins'*Ps*psins; lamb = 1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2; e = Y(t+6)/rho - psin'*thi; j = psins'*Ps*psins + lamb;

th = thi + e*inv(S)*Ps*psins/j; Hns = Ps*psins/j; Ps = (Ps - Hns*psins'*Ps)/lamb; tt = abs(max(eig(Ps))/min(eig(Ps)) ); cmax = 100; cmin = 15; if tt <= cmin, Pi = Ps; thi = th; elseif tt >= cmax, Nnew = chol(Ps'); % Nnew*Nnew = Ps Snew = inv(diag(Nnew*ones(NN,1),0)); Psnew = Snew*Ps*Snew; Pi = Psnew; thi = th; end % RECUPERACION DE LA ECUACION CANONICA CONTROLABLE ae1=-th(1); ae2=-th(2); ae3=-th(3); ae4=-th(4); ae5=-th(5); ae6=-th(6); be1=th(7); be2=th(8); be3=th(9); be4=th(10); be5=th(11); be6=th(12); Ce=th(13); ae11=0; ae12=1; ae13=0; ae14=0; ae15=0; ae16=0; ae21=0; ae22=0; ae23=1; ae24=0; ae25=0; ae26=0; ae31=0; ae32=0; ae33=0; ae34=1; ae35=0; ae36=0; ae41=0; ae42=0; ae43=0; ae44=0; ae45=1; ae46=0; ae51=0; ae52=0; ae53=0; ae54=0; ae55=0; ae56=1; ae61=-ae6; ae62=-ae5; ae63=-ae4; ae64=-ae3; ae65=-ae2; ae66=-ae1; GE = [ae11 ae12 ae13 ae14 ae15 ae16 ae21 ae22 ae23 ae24 ae25 ae26 ae31 ae32 ae33 ae34 ae35 ae36 ae41 ae42 ae43 ae44 ae45 ae46 ae51 ae52 ae53 ae54 ae55 ae56 ae61 ae62 ae63 ae64 ae65 ae66]; be11=0; be21=0; be31=0; be41=0; be51=0; be61=1; HE=[be11;be21;be31;be41;be51;be61]; ce11 =be6; ce12=be5; ce13=be4; ce14=be3; ce15=be2; ce16=be1; CE = [ce11 ce12 ce13 ce14 ce15 ce16]; DE = [0]; % CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN F = dlqe(GE,HE,CE,Sigma,Xi); xmas = xmenos + F*(y(t+6) - CE*xmenos); % OBSERVACION z = z -CE*xmas; % ACCION INTEGRAL % CALCULO DE LA GANANCIA Ka DEL CONTROLADOR Ga = [GE zeros(nn,r);-CE eye(r,r)]; Ha = [HE;zeros(r,r)]; Ca = [CE zeros(r,r)]; Ka = dlqr(Ga,Ha,Qa,R); % CALCULO DE LA LEY DE CONTROL RESIDUAL u(t+6) = - Ka*[xmas;z]; % ec. (27) % ACTUALIZANDO ESTADOS xmenos = GE*xmas + HE*u(t+6); % ec. (15) AE = 1 + ae1 + ae2 + ae3 + ae4 + ae5 + ae6; BE = be1 + be2 + be3 + be4 + be5 + be6; Uin = inv(BE)*(AE*Yo(t+6) - Ce); % CALCULO DE LA SE~NAL DE CONTROL U(k) U(t+6) = u(t+6) + Uin; end% FIN DEL LAZO DE CONTROL ********************** % GRAFICOS ejex = linspace(0,MM*T,MM); subplot(2,1,1) plot(ejex,Yo(7:MM+6),ejex,Y(7:MM+6)), grid ylabel('Y1: Velocidad (m/s)') xlabel('Tiempo en segundos') subplot(2,1,2)

plot(ejex,U(7:MM+6)), grid xlabel('Tiempo en segundos') ylabel('Voltaje de control u') print -deps-fp7adap1a

40
Y1: Velocidad (m/s)

30 20 10 0

50

100

150 200 Tiempo en segundos

250

300

30
Voltaje de control u

20 10 0 -10

50

100

150 200 Tiempo en segundos

250

300

Problema 5.4 La gura 3.22 muestra el proceso ascensor tratado en el problema 3.6. El problema a resolver es posicionar suavemente el ascensor en un piso determinado, lo que signica sobreimpulso nulo (para que no se pase de piso) y tiempo de estabilizacin menor que 10 s. Para no saturar al actuador (el amplicador de potencia), la seal de control debe estar dentro del rango de 200 voltios. Disear un sistema de control de posicin adaptivo con autosintonizacion que cumpla las especicaciones pedidas. % p8adap1.m SOLUCION DEL PROBLEMA 5.4
clear all % PARAMETROS GENERALES nn = 4; r=1; % nn: orden del proceso; r: NUMERO DE SALIDAS NN = 9; % ORDEN DEL VECTOR ESATIMADO DE PARAMETROS % cmax = 100; cmin = 15; % PARA EL ESTIMADOR DE PARAMETROS % PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN Xi = 0.001; Sigma = 400; % PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke R = 1; Qa = 1*eye(r+nn,r+nn); % MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO Ac = [-0.2 0 0 0;1 0 0 0;2 0 -2 0;5 0 0 -5];

Bc = [0.001;0;0;0]; Cc = [0 1 0 0]; Dc = [0]; T = 0.8; % PERIODO DE MUESTREO % MODELO LINEAL DISCRETO [G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,'zoh'); [num,den]=ss2tf(G,H,C,D); a1 = den(2); a2 = den(3); a3=den(4); a4=den(5); b1 = num(2); b2 = num(3); b3=num(4); b4=num(5); % CONDICIONES INICIALES Ref = 1; % MAGNITUD DE LA SE~NAL DE REFERENCIA: Yo = Ref Ce = (1 + a1 + a2 + a3 + a4)*Ref; % Uo = 0 (arbitrario) thi = [-a1 -a2 -a3 -a4 b1 b2 b3 b4 Ce]'; alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA Y(1)=0;Y(2)=0;Y(3)=0;Y(4)=0; y(1)=0;y(2)=0;y(3)=0;y(4)=0; U(1)=0;U(2)=0;U(3)=0;U(4)=0; u(1)=0;u(2)=0;u(3)=0;u(4)=0; xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL z=0; % ACCION INTEGRAL INICIAL % INCIO DEL LAZO DE CONTROL ********************************** MM = 1000; for t = 1:MM % SE~NAL DE REFERENCIA g(t+4)=6 + 4*sign(sin(0.01*t)); % MODELO LINEAL DEL PROCESO Y(t+4)=[Y(t+3) Y(t+2) Y(t+1) Y(t) ... U(t+3) U(t+2) U(t+1) U(t)]*[-a1 -a2 -a3 -a4 b1 b2 b3 b4]'; y(t+4) = Y(t+4) - g(t+4); % salida residual (desviacion) % ESTIMACION DE PARAMETROS (METODO MCRM)% psi = [Y(t+3) Y(t+2) Y(t+1) Y(t) ... U(t+3) U(t+2) U(t+1) U(t) 1]'; rho = max(1,norm(psi)); psin = psi/rho; Nn = chol(Pi'); % Nn*Nn = Pi => Nn*N = Pi S = inv(diag(Nn*ones(NN,1),0)); Ps = S*Pi*S; psins = inv(S)*psin; rt = 1 + psins'*Ps*psins; lamb = 1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2; e = Y(t+4)/rho - psin'*thi; j = psins'*Ps*psins + lamb; th = thi + e*inv(S)*Ps*psins/j; Hns = Ps*psins/j; Ps = (Ps - Hns*psins'*Ps)/lamb; tt = abs(max(eig(Ps))/min(eig(Ps)) ); cmax = 100; cmin = 15; if tt <= cmin, Pi = Ps; thi = th; elseif tt >= cmax, Nnew = chol(Ps'); % Nnew*Nnew = Ps Snew = inv(diag(Nnew*ones(NN,1),0)); Psnew = Snew*Ps*Snew; Pi = Psnew; thi = th; end % RECUPERACION DE LA ECUACION CANONICA CONTROLABLE ae1 =-th(1); ae2 =-th(2); ae3=-th(3); ae4 =-th(4); be1 = th(5); be2 = th(6); be3= th(7); be4 = th(8); Ce=th(9); ae11 = 0; ae12 = 1; ae13 = 0; ae14 = 0; ae21 = 0; ae22 = 0; ae23 = 1; ae24 = 0; ae31 = 0; ae32 = 0; ae33 = 0; ae34 = 1; ae41 =-ae4; ae42 = -ae3; ae43 = -ae2; ae44 = -ae1; GE = [ae11 ae12 ae13 ae14;ae21 ae22 ae23 ae24;... ae31 ae32 ae33 ae34;ae41 ae42 ae43 ae44];

be11=0; be21=0; be31=0; be41=1; HE=[be11;be21;be31;be41]; ce11=be4; ce12=be3; ce13=be2; ce14=be1; CE=[ce11 ce12 ce13 ce14]; DE=[0]; % CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN F = dlqe(GE,HE,CE,Sigma,Xi); xmas = xmenos + F*(y(t+4) - CE*xmenos); % OBSERVACION z = z -CE*xmas; % ACCION INTEGRAL % CALCULO DE LA GANANCIA Ka DEL CONTROLADOR Ga = [GE zeros(nn,r);-CE eye(r,r)]; Ha = [HE;zeros(r,r)]; Ca = [CE zeros(r,r)]; Ka = dlqr(Ga,Ha,Qa,R); % CALCULO DE LA LEY DE CONTROL RESIDUAL u(t+4) = - Ka*[xmas;z]; % ACTUALIZANDO ESTADOS xmenos = GE*xmas + HE*u(t+4); AE= 1 + ae1 + ae2 + ae3 + ae4; BE= be1 + be2 + be3 + be4; Uin = inv(BE)*(AE*g(t+4) - Ce); % CALCULO DE LA SE~NAL DE CONTROL U(t) U(t+4) = u(t+4) + Uin; % LIMITANDO LA SE~NAL U(t) if(U(t+4) > 200) U(t+4) = 200; elseif(U(t+4) <-200) U(t+4) = -200; else U(t+4) = U(t+4); end end% FIN DEL LAZO DE CONTROL ********************** % GRAFICOS ejex = linspace(0,MM*T,MM); subplot(2,1,1) plot(ejex,g(4:MM+3),ejex,Y(4:MM+3)), grid ylabel('Posicion') xlabel('Tiempo en segundos') subplot(2,1,2), grid plot(ejex,U(3:MM+2)), grid xlabel('Tiempo en segundos') ylabel('Voltaje de control') print -deps-fp8adap2

15

Posicion

10

100

200

300 400 500 Tiempo en segundos

600

700

800

200
Voltaje de control

100 0 -100 -200

100

200

300 400 500 Tiempo en segundos

600

700

800

Problema 5.5 La gura 2.2 muestra dos tanques identicos colocados en cascada. La seccin horizontal A=9 m2 de cada tanque es constante. El objetivo de control es controlar la altura H2 empleando el ujo Qo. La deduccin del modelo linealizado del proceso se describe en el ejemplo 2.1. Disear un controlador adaptivo con auto sintonizacin que cumpla los siguientes requerimientos: tiempo de estabilizacin menor que 15 s, sobreimpulso menor al 5% y error en estado estable nulo. Estas condiciones de diseo deben mantenerse cuando se cambie la referencia (por ejemplo de 3 a 1 m). Adems, el ujo de entrada (la seal de control) no debe sobrepasar los 3 m3/s.
nn = 2; r=1; % nn: ORDEN DEL PROCES; r: NUMERO DE SALIDAS NN = 5; % ORDEN DEL VECTOR ESATIMADO DE PARAMETROS % cmax = 100; cmin = 15 % PARA EL ESTIMADOR DE PARAMETROS % PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN Xi = 100; Sigma = 0.01; % PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke R = 1; Qa = 0.1*eye(r+nn,r+nn); % PARAMETROS DEL PROCESO NO LINEAL gamma=0.4; gg=9.81; rho=1.23; A=9; Qo=3; H=Qo^2/(gamma^2*rho*gg); Z=(gamma*sqrt(rho*gg))/(2*A*sqrt(H)); % MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO Ac = [-Z 0;Z -Z]; Bc = [1;0]; Cc = [1 0]; Dc = [0]; T = 0.8; % PERIODO DE MUESTREO % MODELO LINEAL DISCRETO [G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,'zoh'); [num,den]=ss2tf(G,H,C,D); a1 = den(2); a2 = den(3);

b1 = num(2); b2 = num(3); % Gcc,Hcc, Ccc, Dcc: REPRESENTACION CANONICA CONTROLABLE a11 = 0; a12 =1; a21 = -a2; a22 = -a1; b11 = 0; b21 = 1; c11 =b2; c12 = b1; Gcc = [a11 a12;a21 a22]; Hcc = [b11;b21]; Ccc =[c11 c12]; Dcc = [0]; % CONDICIONES INICIALES Ref = 1; % MAGNITUD DE LA SE~NAL DE REFERENCIA: Yo = Ref Ce = (1 + a1 + a2)*Ref; % Uo = 0 (ARBITRARIO) thi = [-a1 -a2 b1 b2 Ce]'; alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA Y(1) = 0; Y(2) = 0; y(1) = 0; y(2) = 0; % salida U(1 )= 0; U(2) = 0; u(1) = 0; u(2) = 0; % control H1(1) =0; H1(2)=0; xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL z=0; % ACCION INTEGRAL INICIAL % INICIO DEL LAZO DE CONTROL ********************************** MM = 200; for t = 1:MM % SE~NAL DE REFERENCIA g(t+2)=2-1*sign(sin(0.08*t)); % MODELO LINEAL DEL PROCESO y(t+2) = [y(t+1) y(t) u(t+1) u(t)]*[-a1 -a2 b1 b2]'; Y(t+2) = y(t+2) + g(t+2); % salida actual % ESTIMACION DE PARAMETROS (METODO MCRM) psi = [Y(t+1) Y(t) U(t+1) U(t) 1]'; rho = max(1,norm(psi)); psin = psi/rho; Nn = chol(Pi'); % Nn*Nn = Pi => Nn*N = Pi S = inv(diag(Nn*ones(NN,1),0)); Ps = S*Pi*S; psins = inv(S)*psin; rt = 1 + psins'*Ps*psins; lamb=1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2; e = Y(t+2)/rho - psin'*thi; j = psins'*Ps*psins + lamb; th = thi + e*inv(S)*Ps*psins/j; Hns = Ps*psins/j; Ps = (Ps - Hns*psins'*Ps)/lamb; tt = abs(max(eig(Ps))/min(eig(Ps)) ); cmax = 100; cmin = 15; if tt <= cmin, Pi = Ps; thi = th; elseif tt >= cmax, Nnew = chol(Ps'); % Nnew*Nnew = Ps Snew = inv(diag(Nnew*ones(NN,1),0)); Psnew = Snew*Ps*Snew; Pi = Psnew; thi = th; end % RECUPERACION DE LA ECUACION CANONICA CONTROLABLE ae1=-th(1); ae2=-th(2); be1=th(3); be2=th(4); Ce=th(NN); ae11 = 0; ae12 =1; ae21 = -ae2; ae22 = -ae1; GE = [ae11 ae12;ae21 ae22]; be11 = 0; be21 = 1; HE = [be11;be21]; ce11 =be2; ce12 = be1; CE = [ce11 ce12]; DE = [0]; % CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN F = dlqe(GE,HE,CE,Sigma,Xi); xmas = xmenos + F*(y(t+2) - CE*xmenos); % OBSERVACION z = z -CE*xmas; % ACCION INTEGRAL % CALCULO DE LA GANANCIA Ka DEL CONTROLADOR Ga = [GE zeros(nn,r);-CE eye(r,r)];

Ha = [HE;zeros(r,r)]; Ca = [CE zeros(r,r)]; Ka = dlqr(Ga,Ha,Qa,R); % CALCULO DE LA LEY DE CONTROL RESIDUAL u(t+2) = - Ka*[xmas;z]; % ACTUALIZANDO ESTADOS xmenos = GE*xmas + HE*u(t+2); % CALCULO DE Uo (VALOR D.C. DE U) % AE(z^(-1)) = 1 + ae1*z^(-1) + ae2*z^(-1); % BE(z^(-1)) = be1*z^(-1) + be2*z^(-1); % AE(z^(-1))*Y(k) = BE(z^(-1))*U(k) + Ce; Ce = th(N), N=5 % En estado estacionario: z=1, Y(k) = Yo(k) (Referencia) % entonces: U(z=1) = inv(B(z=1)*[A(z=1)*Ref - ce] AE = 1 + ae1 + ae2; BE = be1 + be2; Uin = inv(BE)*(AE*g(t+2) - Ce); % CALCULO DE LA SE~NAL DE CONTROL U(t) U(t+2) = u(t+2) + Uin; % LIMITANDO LA SE~NAL U(t) if(U(t+2) > 3) U(t+2) = 3; elseif(U(t+2) <-3) U(t+2) = -3; end end% FIN DEL LAZO DE CONTROL ********************** % GRAFICOS ejex = linspace(0,MM*T,MM); subplot(2,1,1) plot(ejex,g(3:MM+2),ejex,Y(3:MM+2)), grid ylabel('Nivel en metros') xlabel('Tiempo en segundos') subplot(2,1,2) plot(ejex,U(3:MM+2)), grid xlabel('Tiempo en segundos') ylabel('Flujo de control (m/s)') print -deps-fp9adap1

3
Nivel en metros

2.5 2 1.5 1

20

40

60 80 100 Tiempo en segundos

120

140

160

4
Flujo de control (m/s)

2 0 -2 -4

20

40

60 80 100 Tiempo en segundos

120

140

160

Problema 5.6 El proceso electromecnico mostrado en la gura 3.26 se describe en el problema 3.8. Disenar un sistema de control adaptivo con auto sintonizacin para controlar la velocidad angular del eje del motor mediante el voltaje de entrada que puede variar entre 100 voltios. La senal de referencia es arbitraria (problema de seguimiento).
nn = 3; r=1; % nn: ORDEN DEL PROCESO; r: NUMERO DE SALIDAS NN = 7; % ORDEN DEL VECTOR ESATIMADO DE PARAMETROS % PARAMETROS DEL PROCESO: J = 0.01; % MOMENTO DE INERCIA DEL MOTORM (kgm2/s2) Ke =0.01; Kt = 0.01; % CONSTANTE ELECTROMOTRIZ (Nm/A) R = 12; % RESISTENCIA (Ohmios) C = 0.5; % CONDENSADOR (uF) L = 0.5; % INDUCTANCIA DE LA ARMADURA (H) Kw = 1.8; % CONSTANTE TORSIONAL (Nm/rad) % MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO Ac = [-1/(R*C) -1/C 0;... Kw/(L*Kw + Kt*Ke) 0 -Ke*Kw/(L*Kw + Kt*Ke);0 Kt/J 0]; Bc = [1/(R*C);0;0]; Cc = [0 0 1]; Dc = [0]; T = 0.2; % PERIODO DE MUESTREO % MODELO LINEAL DISCRETO DEL PROCESO [G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,'zoh'); [num,den]=ss2tf(G,H,C,D); a1 = den(2); a2 = den(3); a3=den(4); b1 = num(2); b2 = num(3); b3=num(4); % PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN Xi = 0.001; Sigma = 10; % PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke R = 0.1*eye(r,r); Qa = 0.001*eye(r+nn,r+nn);

% Gcc,Hcc, Ccc, Dcc: REPRESENTACION CANONICA CONTROLABLE a11 =0; a12 =1; a13 =0; a21 =0; a22 =0 ; a23 =1; a31 = -a3; a32 = -a2; a33 =-a3; b11 = 0; b21 = 0; b31 = 1; c11 =b3; c12 = b2; c13 = b1; Gcc = [a11 a12 a13;a21 a22 a23;a31 a32 a33]; Hcc = [b11;b21;b31]; Ccc =[c11 c12 c13]; Dcc = [0]; % CONDICIONES INICIALES Ref = 1; % MAGNITUD DE LA SE~NAL DE REFERENCIA: Yo = Ref Ce = (1 + a1 + a2 + a3)*Ref; % Uo = 0 (ARBITRARIO) thi = [-a1 -a2 -a3 b1 b2 b3 Ce]'; alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA Y(1) = 0; Y(2) = 0; Y(3) = 0; y(1)=0; y(2)=0; y(3)=0; U(1 )= 0; U(2) = 0; U(3) = 0; u(1)=0; u(2)=0; u(3)=0; xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL z=0; % ACCION INTEGRAL INICIAL % INICIO DEL LAZO DE CONTROL ********************************** MM = 400; for t = 1:MM % SE~NAL DE REFERENCIA Yo(t+3)= 0.4 + 3*(sin(0.02*t))+0.01*t; % MODELO LINEAL DEL PROCESO Y(t+3) = [Y(t+2) Y(t+1) Y(t) U(t+2) U(t+1) U(t)]*... [-a1 -a2 -a3 b1 b2 b3]'; y(t+3) = Y(t+3) - Yo(t+3); % SALIDA RESIDUAL (DESVIACION) % ESTIMACION DE PARAMETROS (METODO MCRM) psi = [Y(t+2) Y(t+1) Y(t) U(t+2) U(t+1) U(t) 1]'; rho = max(1,norm(psi)); psin = psi/rho; Nn = chol(Pi'); % Nn*Nn = Pi => Nn*N = Pi S = inv(diag(Nn*ones(NN,1),0)); Ps = S*Pi*S; psins = inv(S)*psin; rt = 1 + psins'*Ps*psins; lamb = 1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2; e = Y(t+3)/rho - psin'*thi; j = psins'*Ps*psins + lamb; th = thi + e*inv(S)*Ps*psins/j; Hns = Ps*psins/j; Ps = (Ps - Hns*psins'*Ps)/lamb; tt = abs(max(eig(Ps))/min(eig(Ps)) ); cmax = 100; cmin = 15; if tt <= cmin, Pi = Ps; thi = th; elseif tt >= cmax, Nnew = chol(Ps'); % Nnew*Nnew = Ps Snew = inv(diag(Nnew*ones(NN,1),0)); Psnew = Snew*Ps*Snew; Pi = Psnew; thi = th; end % RECUPERACION DE LA ECUACION CANONICA CONTROLABLE ae1 = -th(1); ae2 = -th(2); ae3 = -th(3); be1 = th(4); be2 = th(5); be3 = th(6); Ce = th(7); ae11 = 0; ae12 =1; ae13 = 0; ae21 = 0; ae22 = 0; ae23 = 1; ae31 =-ae3; ae32 = -ae2; ae33 = -ae1; GE = [ae11 ae12 ae13;ae21 ae22 ae23;ae31 ae32 ae33]; be11 = 0; be21 = 0; be31 = 1; HE = [be11;be21;be31]; ce11 =be3; ce12 = be2; ce13 = be1; CE = [ce11 ce12 ce13]; DE = [0]; % CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN

F = dlqe(GE,HE,CE,Sigma,Xi); xmas = xmenos + F*(y(t+3) - CE*xmenos); z = z -CE*xmas; % CALCULO DE LA GANANCIA Ka DEL CONTROLADOR Ga = [GE zeros(nn,r);-CE eye(r,r)]; Ha = [HE;zeros(r,r)]; Ca = [CE zeros(r,r)]; Ka = dlqr(Ga,Ha,Qa,R); % CALCULO DE LA LEY DE CONTROL RESIDUAL u(t+3) = - Ka*[xmas;z]; % ACTUALIZANDO ESTADOS xmenos = GE*xmas + HE*u(t+3); AE = 1 + ae1 + ae2 + ae3; BE = be1 + be2 + be3; Uin = inv(BE)*(AE*Yo(t+3) - Ce); % CALCULO DE LA SE~NAL DE CONTROL U(t) U(t+3) = u(t+3) + Uin; % LIMITANDO LA SE~NAL U(t) if(U(t+3) > 100) U(t+3) = 100; elseif(U(t+3) <-100) U(t+3) = -100; end end% FIN DEL LAZO DE CONTROL ********************** % GRAFICOS ejex = linspace(0,MM*T,MM); subplot(2,1,1) plot(ejex,Yo(3:MM+2),ejex,Y(3:MM+2)); grid ylabel('Velocidad (rad/s)') subplot(2,1,2) plot(ejex,U(3:MM+2)); grid xlabel('Tiempo en seg') ylabel('Voltaje de control') print -deps-fp11adap1
8

Velocidad (rad/s)

6 4 2 0 -2 0 10 20 30 40 50 60 70 80

40

Voltaje de control

20 0 -20 -40

10

20

30

40 50 Tiempo en seg

60

70

80

También podría gustarte