Você está na página 1de 16

6. SISTEMAS LINEALES DE SEGUNDO ORDEN - SISO.

Melanio Coronado**, Jonathan Cortes*, Wilfrido Ortega*


Universidad del Atlntico. Simulacin y Control de Procesos. Programa de Ingeniera Qumica

Introduccin.
Un sistema lineal de segundo orden con una variable de entrada, " x(t )" , y una variable salida, " y(t )" se modela matemticamente con una ecuacin que en funcin de parmetros de significado dinmico se escribe en la siguiente forma:

d 2 y (t ) dy(t ) 2 y (t ) Kx(t ) 2 dt dt

(6.1)

Siendo, una constante de tiempo, el factor de amortiguamiento y K la ganancia en estado estacionario del sistema. Estos tres parmetros se calculan con ecuaciones en funcin de caractersticas fsicas del sistema. La constante de tiempo expresa un atraso dinmico, el valor del factor de amortiguamiento determina el tipo de respuesta del sistema y la ganancia tiene el mismo significado definido para los sistemas de primer orden La ecuacin anterior se escribe, usualmente, en trminos de las variables desviacin con respecto a sus valores en el estado inicial, es decir en la forma estndar para anlisis dinmico o de sistemas de control:

d 2Y (t ) dY (t ) 2 Y (t ) KX (t ) 2 dt dt

(6.2)

Solucin analtica de una ecuacin diferencial de segundo orden


La solucin analtica de una ecuacin diferencial lineal no homognea como la (6.2) es la suma de una solucin general y una solucin particular. La solucin general es la que se obtiene con la parte homognea de la ecuacin, es decir, con la expresin contenida en el miembro izquierdo igualado a cero y la solucin particular depende de la expresin matemtica que constituye al miembro derecho de la ecuacin no homognea. Para la solucin general se plantea la denominada Ecuacin caracterstica o Ecuacin auxiliar correspondiente a una ecuacin algebraica

polinmica del mismo grado de la parte homognea de la ecuacin diferencial. Para la ecuacin (6.2), la ecuacin caracterstica es de segundo grado con la siguiente expresin, siendo " r" las races de la ecuacin caracterstica:

2 r 2 2 r 1 0

(6.3)

Las races de la ecuacin (6.3) se obtienen con la siguiente frmula:

2 1

(6.4)

La ecuacin (6.4) muestra que la naturaleza de sus races depende del factor de amortiguamiento, lo que determina el tipo de respuesta que se obtiene para la ecuacin diferencial (6.2) o el comportamiento del sistema, de la siguiente manera:

Si 1 , las races son reales diferentes y negativas y la respuesta del sistema es una
suma de trminos exponenciales con signos negativos. Esto se define como un Comportamiento monotnico estable o Sobreamortiguado

Si 1 , las races son reales iguales y negativas y la respuesta del sistema es una
expresin exponencial con signo negativo. Esto muestra un Comportamiento monotnico estable crtico o Amortiguado crtico porque si se disminuye el valor del coeficiente de amortiguamiento la respuesta es de tipo subamortiguado y si, por lo contrario, se aumenta el sistema es ms sobreamortiguado

Si 0 1 , las races son complejas conjugadas con parte real negativa y la


respuesta del sistema es una expresin exponencial sinusoidal decreciente. Esto muestra un Comportamiento oscilatorio estable o Subamortiguado estable

Si 0 , las races son cantidades imaginarias iguales de signo contrario y la


respuesta del sistema es una expresin sinusoidal. Esto muestra un Comportamiento oscilatorio sostenido

Si 1 0 , las races son complejas conjugadas con parte real positiva y la


respuesta del sistema es una expresin exponencial sinusoidal creciente. Esto

muestra un Comportamiento oscilatorio inestable o Subamortiguado inestable , es decir con oscilaciones de amplitud creciente

Si 1 , las races son reales positivos y la respuesta del sistema es una expresin
exponencial con signos positivos. Esto muestra un Comportamiento monotnico inestable o Sobreamortiguado inestable.

Solucin numrica de una ecuacin diferencial de segundo orden


Una ecuacin diferencial de segundo orden se puede transformar en un sistema de dos ecuaciones diferenciales de primer orden mediante la introduccin de dos variables que sustituyan a la variable de salida de la siguiente manera:

Y (t ) y (1)

dY (t ) dy(1) y (2) dt dt
d 2 Y (t ) dy(2) dt dt 2

En trminos de y(1), y(2), la ecuacin diferencial de segundo orden (6.2) se transforma en el siguiente sistema de ecuaciones diferenciales

dy(1) y ( 2) dt

(6.5)

dy(2) 2y (2) y (1) KX (t ) dt

(6.6)

Las soluciones a una ecuacin diferencial de segundo orden, para cambio paso, rampa y seno en la variable de entrada aparecen deducidas en la Leccin 4 del curso sobre Dinmica de Sistemas, al igual que los perfiles grficos que permiten visualizar algunas de las propiedades de cada una de ellas. En este punto se hace la respectiva referencia para su estudio y se continua con la explicacin de la construccin de una interfaz grfica con la cual se simule dicha simulacin.

Solucin numrica con Matlab GUI


A continuacin se describe la elaboracin de una interfaz grfica que facilite, al usuario de Matlab, la solucin grfica de una ecuacin diferencial lineal de segundo orden SISO mediante la introduccin de los parmetros dinmicos y las condiciones iniciales de un sistema, el tipo de perturbacin en la variable de entrada con sus correspondientes especificaciones y la verificacin de la consideracin de un tiempo muerto en el transporte dinmico. Para ello se instalan en el GUIDE un conjunto de elementos (o controles) que o muestran leyendas (Static Text) o capturan datos (Edit Text) o seleccionan procedimientos (Radio Button, Check Box) o ejecutan procedimientos (Push Button) o despliegan grficos (Axes)

Instalacin de los controles en la interfaz de usuario GUI:


Una vez iniciado GUIDE, en el rea de diseo se instalan los diferentes controles y se observa una interfaz con la configuracin que muestra la Figura 6.1. Para todos los controles se deja la propiedad Tag con sus asignaciones por defecto. Al archivo se le asigna el nombre LSORDENSISO.

Figura 6.1. Interfaz grfica de usuario

1. Controles Axes: Se instalan dos controles de esta clase para desplegar imgenes. En el axes1 se despliega la imagen de la ecuacin diferencial de segundo orden lineal y en el axes2 se despliega la respuesta grfica a la solucin solicitada por el usuario. El cdigo para el axes1 se incluye de tal manera que la imagen se observe al desplegarse la interfaz para su ejecucin. 2. Controles Radio Button: Se instalan tres controles de esta clase para seleccionar el tipo de respuesta que se quiere simular. Se asignan las propiedades String con las leyendas que se observan en la Figura 6.1, es decir, Cambio Paso, Cambio Rampa y Cambio Seno. Para el botn Cambio Paso, la propiedad Value se asigna con el valor de uno y para los otros dos botones se asigna con el valor de cero. Esto hace que, por defecto, al desplegarse la interfaz el botn que aparezca como seleccionado sea el Cambio Paso 3. Controles Check Box: Se instala un control de esta clase para especificar si se quiere la respuesta con tiempo muerto. Se asigna la propiedad String con la leyenda Tiempo Muerto 4. Controles Static Text: Se instalan nueve controles de esta clase para anexar leyendas a los botones (Edit Text) donde se introducen datos requeridos para la solucin de la ecuacin diferencial. Se asignan las propiedades String con las leyendas que se observan en la Figura 6.1, es decir, Constante de Tiempo, Factor de Amortiguamiento, Ganancia Estacionaria, Condicin Inicial Y(0), Condicin Inicial Y(0), Tiempo Inicial, Tiempo Final, Cambio Paso, Frecuencia. Para el botn Frecuencia la propiedad Visible se ajusta al valor off. La propiedad Visible para los otros Static Text se deja en su valor por defecto, es decir, on. Esto quiere decir, que al desplegarse la interfaz el botn Frecuencia no se observa y se notara cuando se seleccione el radio botn Cambio Seno. El cdigo elaborado hace que cuando se seleccione el Radio Button denominado Cambio Rampa, la propiedad String del botn Cambio Paso cambie al valor Pendiente y cuando se seleccione el Radio Button denominado Cambio Seno, la propiedad String del botn Cambio Paso cambie al valor Amplitud 5. Controles Edit Text: Se instalan diez controles de esta clase para que el usuario introduzca los parmetros requeridos para la solucin de la ecuacin diferencial (constante de tiempo, factor de amortiguamiento, ganancia, condiciones iniciales, tiempo inicial, tiempo final, cambio paso y frecuencia). Se asigna a todos ellos la propiedad String con un valor de cero. La propiedad Visible de los botones donde se editan la frecuencia y el tiempo muerto se ajustan al valor off y se hacen visibles cuando se seleccionen el Radio Button Cambio Seno y el Check Box Tiempo Muerto, respectivamente.

6. Controles Push Button: Se instalan cuatro botones de esta clase para ejecutar, reiniciar, cancelar la simulacin y solicitar ayuda sobre la misma. Se asignan las propiedades String a los nombres Solucin, Reiniciar, Cancelar y Ayuda. Al presionar el botn Solucion se resuelve la ecuacin diferencial y se despliega la respuesta grafica en el control axes2. Al presionar el botn Reinicio todos los controles toman los valores iniciales asignados por defecto. Al presionar el bot Ayuda se despliega una ayuda dentro del escritorio de Matlab que muestra el cdigo construido para la elaboracin de la interfaz 7. Controles Panel: Se instalan cuatro botones de esta clase para encerrar los botones en cuadros separados para observarlos como dentro de un marco. Se asignan las propiedades String con los nombres Parmetros, Perturbacin, Entradas. Uno de los controles se deja sin propiedad String. La propiedad ForegroundColor se ajusta a color rojo y la propiedad TitlePosition a centertop Concluida la instalacin y distribucin de los componentes del GUI se procede a construir la codificacin para el funcionamiento de este programa. Para ello presione el botn M-File Editor de la barra de herramientas para acceder al cdigo hasta ahora construido por MatLab para su modificacin

Programacin del GUI


Antes de empezar a codificar los callbacks de cada uno de los controles se procede a definir las ecuaciones que se utilizaran para el desarrollo del programa que en este caso se declararan como funciones para que no sea necesario crear archivos adicionales.

Funciones Definicin de las Respuestas


function dy = paso3(t,y) global tau ro K I span X dy = [y(2); (K*X - y(1) - 2*ro*tau*y(2))/tau^2]; function dy = rampa3(t,y) global tau ro K I span r dy = [y(2); (K*r*t - y(1) - 2*ro*tau*y(2))/tau^2]; function dy = seno3(t,y) global tau ro K I span A w dy = [y(2); (K*A*sin(w*t) - y(1) - 2*ro*tau*y(2))/tau^2];

Imagen Ecuacin Diferencial


En este ejercicio se construy una imagen con la ecuacin diferencial de segundo orden lineal SISO de la misma forma como se procedi con la de primer orden y se guardo con el nombre segundo.jpg. A continuacin se digita el siguiente cdigo dentro de la funcin de apertura del GUI para que en su despliegue inicial se observe la ecuacin diferencial de primer orden que se quiere resolver en este programa. function LSORDENSISO_OpeningFcn(hObject, eventdata, handles, varargin) SISO (see VARARGIN) % Choose default command line output for LSORDENSISO handles.output = hObject; % Update handles structure guidata(hObject, handles); axes(handles.axes1) im = imread('segundo.jpg') axis off; imshow(im); El rengln axes(handles.axes1) selecciona el axes donde se despliega la imagen correspondiente a la ecuacin diferencial. En el siguiente rengln, la palabra clave imread copia la imagen correspondiente al archivo segundo.jpg que debe archivarse dentro de la misma carpeta en que se encuentra el archivo LSORDENSISO y la asigna a una variable im. El rengln, axis off, inactiva la numeracin de los ejes del axes y mediante la palabra clave imshow se muestra la imagen que se quiere, es decir, im

Radio Boton Cambio Paso


El cdigo que se muestra a continuacin se cumple cuando se selecciona el radio buton Cambio Paso function radiobutton1_Callback(hObject, eventdata, handles) % Hint: get(hObject,'Value') returns toggle state of radiobutton1

set(handles.radiobutton2,'Value',0); set(handles.radiobutton3,'Value',0); set(handles.text8,'String','Cambio Paso'); set(handles.edit10,'Visible','on'); set(handles.text9,'Visible','off'); set(handles.edit11,'Visible','off'); Se deduce de los renglones anteriores, que se inactivan los otros dos radio botones denominados Cambio Rampa y Cambio Seno, se mantienen invisibles los controles text9 y edit11 y se ajusta la propiedad String del control text8 al valor Cambio Paso

Radio Boton Cambio Rampa


El cdigo que se muestra a continuacin se cumple cuando se selecciona el radio buton Cambio Paso function radiobutton2_Callback(hObject, eventdata, handles) % Hint: get(hObject,'Value') returns toggle state of radiobutton2 set(handles.radiobutton1,'Value',0); set(handles.radiobutton3,'Value',0); set(handles.text8,'String','Pendiente'); set(handles.edit10,'Visible','on'); set(handles.text9,'Visible','off'); set(handles.edit11,'Visible','off'); Es similar al anterior inactivndose, en este caso, los radio botones Cambio Paso y Cambio Seno. La propiedad String del botn text8 toma el valor Pendiente

Radio Botn Cambio Seno


El cdigo que se muestra a continuacin se cumple cuando se selecciona el radio botn Cambio seno function radiobutton3_Callback(hObject, eventdata, handles) % Hint: get(hObject,'Value') returns toggle state of radiobutton3

set(handles.radiobutton1,'Value',0); set(handles.radiobutton2,'Value',0); set(handles.text8,'String','Amplitud'); set(handles.edit10,'Visible','on'); set(handles.text9,'Visible','on'); set(handles.edit11,'Visible','on'); En este caso, se inactivan los radio botones Cambio Paso y Cambio Rampa; la propiedad String del boton text8 se ajusta con el valor Amplitud y se hacen visible los botones edit10, text9 y edit11 con los valores por defecto de su propiedad String (cero, Frecuencia y cero, respectivamente).

Botn de Verificacin Tiempo Muerto


El siguiente cdigo es el procedimiento que se desarrolla cuando se verifica el cuadro denominado Tiempo Muerto function checkbox1_Callback(hObject, eventdata, handles) % Hint: get(hObject,'Value') returns toggle state of checkbox1 if (get(handles.checkbox1,'Value') == 1) set(handles.edit9,'Visible','on'); else set(handles.edit9,'Visible','off'); set(handles.edit9,'String',0); end

La primera parte del lazo hace que sea visible el control edit9, si se verifica el cuadro de checkbox1 denominado Tiempo Muerto. Lo anterior, se logra mediante el ajuste de la propiedad Visible a un valor on. En caso contrario, es decir, si se desactiva el botn checkbox1, no se observan dicho control y la propiedad String del control edit9 se ajusta a cero

Botn Push Button Solucin


El siguiente cdigo es el procedimiento que se desarrolla cuando se presiona el botn denominado Solucin. Se convierten los parmetros a carcter numrico y

se resuelve la ecuacin diferencial para cada uno de los casos que incluye el diseo de la interfaz. Los resultados se muestran grficamente en el axes2 function pushbutton1_Callback(hObject, eventdata, handles) global K tau ro X w tspan I a b den h h1 to r A tau = str2double(get(handles.edit1,'String')); ro = str2double(get(handles.edit2,'String')); K = str2double(get(handles.edit3,'String')); I(1) = str2double(get(handles.edit4,'String')); I(2) = str2double(get(handles.edit5,'String')); tspan(1)= str2double(get(handles.edit7,'String')); tspan(2)= str2double(get(handles.edit8,'String')); axes(handles.axes2) if (get(handles.radiobutton1,'Value') == 1); cla; X = str2double(get(handles.edit10,'String')); [t,y] = ode45(@paso3,tspan,I); plot(t,y(:,1),'k'); xlabel('Tiempo','FontSize',12); ylabel('Respuesta','FontSize',12); title('Respuesta Paso','Fontsize',14); hold on if (get(handles.checkbox1,'Value') == 1) to = str2double(get(handles.edit9,'String')); h = tf([K*X],[tau^2 2*ro*tau 1],'inputdelay',to); [y1,t] = step(h,tspan(2)); plot(t,y1(:,1),'r'); xlabel('Tiempo','FontSize',12); ylabel('Respuesta','FontSize',12); title('Respuesta Paso','Fontsize',14); legend('Sin Tiempo Muerto','Con Tiempo Muerto',4); end end if (get(handles.radiobutton2,'Value') == 1); cla; r = str2double(get(handles.edit10,'String')); [t,y] = ode45(@rampa3,tspan,I);

plot(t,r*t,'r',t,y(:,1)/K,'k'); xlabel('Tiempo','FontSize',12); ylabel('Respuesta','FontSize',12); title('Respuesta Rampa','Fontsize',14); legend('Entrada','Sin Tiempo Muerto',4); hold on if (get(handles.checkbox1,'Value') == 1) to = str2double(get(handles.edit9,'String')); h = tf([r],[tau^2 2*ro*tau 1 0],'inputdelay',to); [y1,t] = step(h,tspan(2)); plot(t,y1(:,1),'b'); xlabel('Tiempo','FontSize',12); ylabel('Respuesta','FontSize',12); title('Respuesta Rampa','Fontsize',14); legend('Entrada','Sin Tiempo Muerto','Con Tiempo Muerto',4); end end if (get(handles.radiobutton3,'Value') == 1); cla; A = str2double(get(handles.edit10,'String')); w = str2double(get(handles.edit11,'String')); [t,y] = ode45(@seno3,tspan,I); plot(t,A*sin(w*t),'r',t,y(:,1),'k'); xlabel('Tiempo','FontSize',12); ylabel('Respuesta','FontSize',12); title('Respuesta Seno','Fontsize',14); legend('Entrada','Salida Sin Tiempo Muerto',4); hold on if (get(handles.checkbox1,'Value') == 1) to = str2double(get(handles.edit9,'String')); a = [1 0 w^2]; b = [tau^2 2*ro*tau 1]; den = conv(a,b); h = tf([K*A*w],den,'inputdelay',to); [y1,t] = impulse(h,tspan(2)); plot(t,y1(:,1),'b') xlabel('Tiempo','FontSize',12); ylabel('Respuesta','FontSize',12);

title('Respuesta Seno','Fontsize',14); legend('Entrada','Salida Sin Tiempo Muerto','Salida Con Tiempo Muerto',4); end end

Botn Push Button Reiniciar


El siguiente cdigo es el procedimiento que se desarrolla cuando se presiona el botn denominado Reiniciar. Todos los controles se especifican de acuerdo a las propiedades introducidas inicialmente function pushbutton2_Callback(hObject, eventdata, handles) cla reset; axes(handles.axes1); im = imread('segundo.jpg'); axis off; imshow(im); set(handles.radiobutton1,'Value',1); set(handles.radiobutton2,'Value',0); set(handles.radiobutton3,'Value',0); set(handles.edit1,'String',0); set(handles.edit2,'String',0); set(handles.edit3,'String',0); set(handles.edit4,'String',0); set(handles.edit5,'String',0); set(handles.edit7,'String',0); set(handles.edit8,'String',0); set(handles.edit9,'String',0); set(handles.edit10,'String',0); set(handles.checkbox1,'Value',0); set(handles.text8,'String','Cambio Paso'); set(handles.text9,'Visible','off'); set(handles.edit9,'Visible','off'); set(handles.edit11,'Visible','off');

Botn Push Button Cancelar


El siguiente cdigo es el procedimiento que se desarrolla cuando se presiona el botn denominado Cancelar. Se borra toda la memoria y se cierran todas las

figuras previo despliegue de un cuadro de dilogo modal para confirmar el cierre de la figura function pushbutton3_Callback(hObject, eventdata, handles) selection = questdlg(['Desea cerrar ' get(handles.figure1,'Name') '?'],... ['Cerrar ' get(handles.figure1,'Name') '...'],... 'Yes','No','No'); if strcmp(selection,'No') return; end clear, close all;

Botn Push Button Ayuda


El siguiente cdigo es el procedimiento que se desarrolla cuando se presiona el botn denominado Ayuda. Se despliega un documento de ayuda bajo la plataforma de Matlab como se observa en la Figura 6.2. En la parte superior se observa el vnculo para abrir el cdigo escrito para la construccin de la interfaz function pushbutton4_Callback(hObject, eventdata, handles) helpwin('LSORDENSISO.m')

Figura 6.2 Ventana de Ayuda

Ejecucin del Programa


Al ejecutar el programa se despliega la interfaz elaborada. La Figura 6.3 muestra la respuesta subamortiguada (Factor de Amortiguamiento = 0.2) ante un cambio paso en la variable de entrada

Figura 6.3 Interfaz Respuesta Paso Subamortiguada

Se sugiere al usuario adicionar los controles que muestren algunas caractersticas de las respuestas, como por ejemplo en el caso observado en la Figura 6.3 el sobrepaso mximo, el tiempo de asentamiento, etc. De igual manera en otros tipos de respuestas paso con perfil sobreamortiguado, amortiguado crtico o oscilatorio sostenido La Figura 6.4 muestra la respuesta rampa para un factor de amortiguamiento de cero que incluye el perfil sin y con tiempo muerto. Se observa el comportamiento esperando en forma oscilatoria sostenida a travs de la rampa de entrada. La pendiente de la rampa de entrada es 3

Figura 6.4 Interfaz Respuesta Rampa Sistema Segundo Orden Lineal

Se sugiere al usuario hacer las simulaciones que muestren los diferentes perfiles de la respuesta rampa haciendo cambios en el valor asignado al Factor de Amortiguamiento de tal manera que se observen las respuestas sobreamortiguadas, subamortiguadas estables o inestables La Figura 6.5 muestra la respuesta seno para los parmetros y especificaciones observadas (Constante de tiempo = 2, Factor de amortiguamiento = 0.4, Ganancia Estacionaria = 3, Condicin Inicial = 0, Tiempo Inicial = 0, Tiempo Final = 50, Amplitud = 2, Frecuencia = 0.5, Tiempo Muerto = 3). El cdigo muestra la funcin seno de entrada y las respuestas sin y con tiempo muerto Se observa en la solucin grfica que la respuesta sin tiempo muerto (Color Negro) toma un perfil sinusoidal sostenido despus de un cierto tiempo y que es la misma respuesta con tiempo muerto con un atraso adicional (Color Azul). Se sugiere agregar algunos otros elementos que muestren algunas caractersticas de la respuesta como, en el caso de la respuesta seno, la amplitud, el atraso dinmico, por ejemplo. En forma similar, se sugiere al usuario hacer los cambios en el factor de amortiguamiento de tal manera que se observen los diferentes perfiles en el

comportamiento de la respuesta y ajustar los controles agregados para visualizar parmetros caractersticos de las respuestas en cada caso.

Figura 6.5 Interfaz Respuesta Seno Sistema de Segundo Orden Lineal

Você também pode gostar