Este documento presenta dos ejemplos para analizar sistemas de control usando Matlab y Scilab. El primer ejemplo analiza la respuesta de un sistema de control de tercer orden con diferentes controladores PID (P, PI, PD, PID) a cambios escalón. El segundo ejemplo usa herramientas como el lugar geométrico de las raíces, diagrama de Nyquist y de Bode para analizar un sistema de control de quinto orden con controlador P. Se incluyen los listados de código de Matlab y Scilab para ambos ejemplos y las gráficas de
1. Departamento de Automática
IE – 431
Sistemas de Control
Sistemas de control con
Matlab®
y ScilabTM
Prof. Víctor M. Alfaro
Julio de 2004
Rev. Diciembre de 2005
2. IE-431 Sistemas de control con Matlab y Scilab
TABLA DE CONTENIDO
1. Introducción........................................................................................1
1.1 Matlab........................................................................................................1
1.2 Scilab..........................................................................................................1
2. Planteamiento de los problemas........................................................2
2.1 Ejemplo 1 - Controladores PID...............................................................2
2.2 Ejemplo 2 – Herramientas para el análisis de un sistema de control..3
3. Programas y respuestas.....................................................................4
3.1 Ejemplo 1 - Listados de instrucciones.....................................................4
3.2 Ejemplo 1 - Salida gráfica........................................................................7
3.2.1 Gráficos en Matlab 7
3.2.2 Gráficos en Scilab 7
3.3 Ejemplo 2 - Listados de instrucciones.....................................................8
3.4 Ejemplo 2 - Salida gráfica........................................................................9
3.4.1 Gráficos en Matlab 9
3.4.2 Gráficos en Scilab 10
Vma.ucr.ie431.matlab&scilab.odt V.M. Alfaro
3. IE-431 Sistemas de control con Matlab y Scilab 1
1. Introducción
En la actualidad, la utilización en los cursos de control automático de algún programa de diseño
de sistemas de control asistido por computadora (CACSD), se ha hecho indispensable. No sola-
mente por permitir estos el uso de herramientas cuya utilización en forma manual puede ser muy
tediosa, si no principalmente porque agilizan el proceso de diseño al permitir realizar cambios en
el sistema y analizar las consecuencias de los mismos. Por ejemplo, se puede variar un parámetro
del controlador o de la planta y visualizar su efecto en diferentes características del sistema en
forma inmediata, facilitando así el análisis y el diseño de los sistemas de control realimentados.
Además, con ellos se puede analizar el comportamiento del sistema de control con múltiples téc-
nicas como por ejemplo: en el dominio del tiempo (respuesta al escalón y al impulso), el plano
completo (localización de polos y ceros, el lugar geométrico de las raíces de Evans) o la respuesta
de frecuencia (Bode, Nyquist, Black).
En la red de computadoras de la Escuela están a disposición de los estudiantes, el Matlab®
7.0
con sus herramientas de control y otras más, y el ScilabTM
3.1.
Con los ejemplos que se presentan a continuación, se pretende que el estudiante pueda apreciar
las similitudes entre los dos “lenguajes”, así como sus diferencias y que esto le permita desarro-
llar sus programas para análisis y diseño de los sistemas de control con, cualquiera de los dos pro-
gramas. Los estudiantes matriculados en el curso pueden obtener los ejemplos programados tanto
en Matlab® como ScilabTM
, entrando a las páginas Web del curso en el sistema de administración
de cursos de la Escuela (http://www.eie.ucr.ac.cr/cursos/).
1.1 Matlab
El Matlab de The MathWorks, Inc., EUA. (http://www.mathworks.com/) es sin duda el programa
de cálculo numérico técnico y CACSD más conocido. Este, junto con su programa compañero de
simulación digital Simulink®, son ampliamente utilizados en los ejemplos presentados en las edi-
ciones recientes de los libros de texto de control más utilizados.
Los manuales de la Versión 6.5 en formato .pdf pueden obtener en la página de Recursos del sitio
Web de la Escuela (http://www.eie.ucr.ac.cr/recursos.html).
Lamentablemente el alto costo del Matlab les hace imposible a casi todos los estudiantes el tener
una copia personal, aun de la versión para estudiantes, la cual es bastante limitada.
1.2 Scilab
El programa Scilab (http://www.scilab.org/) es desarrollado por un consocio encabezado por el
Institut National de Recherche en Informatique et en Automatique (INRIA), Francia, el cual es
distribuido en forma gratuita por Internet. Este es entonces una alternativa muy atractiva para los
estudiantes.
En la página de Recursos de la Escuela (http://www.eie.ucr.ac.cr/recursos.html) se pueden obte-
ner las versiones para Windows y Linux del Scilab 3.1.1.
2. Planteamiento de los problemas
Vma.ucr.ie431.matlab&scilab.odt V.M. Alfaro
4. IE-431 Sistemas de control con Matlab y Scilab 2
A continuación se dan los enunciados de dos problemas de control hipotéticos. No se pretende
con ellos explotar las capacidades de estos dos programas, más bien por el contrario, se tratará de
utilizar solo las instrucciones básicas., de manera que sirvan estos de comparación.
2.1 Ejemplo 1 - Controladores PID
Para el sistema de control mostrado en la Figura Nº 1, en donde Gps es la función de transfe-
rencia de la planta y Gc s la del controlador, se desea obtener la respuesta del sistema de con-
trol a un cambio escalón unitario en el valor deseado rt (servomecanismo) y en la
perturbación zt (regulador).
Para el ejemplo se empleará una planta cuya función de transferencia es
Gp s=
1
5s12s1s1
y los controladores serán:
• Proporcional (P)
GcPs=K c
• Proporcional-Integral (PI)
GcPI s=K c
1
1
Ti s
• Proporcional-Derivativo (PD)
GcPDs=K c 1T d s
• Proporcional-Integral-Derivativo (PID)
GcPI s=K c
1
1
Ti s
Td s
con los parámetros: K c=2.75, T i=5.0, Td=1.5 (los mismos para todos los controladores, se-
gún se aplique)
Vma.ucr.ie431.matlab&scilab.odt V.M. Alfaro
Gp(s)Gc(s)
r(s)
z(s)
y(s)e(s) u(s)
+
+ +
-
Lazo de control realimentado
Controlador Proceso
5. IE-431 Sistemas de control con Matlab y Scilab 3
Se deberá mostrar en una misma “ventana”, pero en gráficas separadas, la respuesta del servome-
canismo y del regulador con los cuatro controladores.
2.2 Ejemplo 2 – Herramientas para el análisis de un sistema de control
En este otro caso, para el sistema de control de la figura anterior, se empleará una planta cuya
función de transferencia es
Gps=
1.5
s12s14s1
y el controlador uno puramente proporcional
GcPs=K c=2.5
Se debe de obtener:
• la respuesta del sistema de control a un cambio escalón unitario en el valor deseado
• el lugar geométrico de las raíces (LGR) para 0≤K c≤∞
• el diagrama de Nyquist
• el diagrama de Bode
y mostrarlos todos estos gráficos en una sola ventana.
Vma.ucr.ie431.matlab&scilab.odt V.M. Alfaro
6. IE-431 Sistemas de control con Matlab y Scilab 4
3. Programas y respuestas
En el punto 3.1 siguiente se muestra el listado de instrucciones (“scripts”), tanto para Matlab
como para Scilab, necesarias para resolver los problemas planteados en 2.0 arriba, los cuales se
han colocado de manera que se pueda hacer una comparación, casi línea a línea, de los dos pro-
gramas. En el punto 3.2 se muestran las gráficas de las respuestas obtenidas con cada uno de los
programas.
En forma similar al anterior, en el punto 3.3 se muestran los listados de instrucciones para el
Ejemplo 2 y en el punto 3.4 las salidas gráficas correspondientes.
3.1 Ejemplo 1 - Listados de instrucciones
Programa en Matlab Programa en Scilab
%Sistemas de Control con Matlab
%(control_pid.m)
%V.M. Alfaro, 2004
%
clear
s=tf('s');
%vector de tiempos
t=0:0.05:50;
%
%función de transferencia de la
%planta (3er orden)
gp=1/((5*s+1)*(2*s+1)*(s+1));
%
%parámetros de los controladores
Kc=2.75;Ti=5;Td=1.5;
%
%ventana
figure(1)
set(1,'Name','Sistemas de control
con controladores PID')
%----------------------------------
//Sistemas de Control con Scilab
//(control_pid.sce)
//V.M. Alfaro, 2004, 2005
//
clear
s=poly(0,'s');
//vector de tiempos
t=0:0.05:50;
//
//función de transferencia de la
//planta (3er orden)
gp=1/((5*s+1)*(2*s+1)*(s+1));
//
//parámetros de los controladores
Kc=2.75;Ti=5;Td=1.5;
//
//ventana
xset('window',1)
xname('Sistemas de control con
controladores PID')
//---------------------------------
%servomecanismos
%control P
gc=Kc;
Mr=gc*gp/(1+gc*gp);
yp=step(Mr,t);
%
%
%control PI
gc=Kc*(1+1/(Ti*s));
Mr=gc*gp/(1+gc*gp);
ypi=step(Mr,t);
%
%
%control PD
gc=Kc*(1+Td*s);
Mr=gc*gp/(1+gc*gp);
//servomecanismos
//control P
gc=Kc;
Mr=gc*gp/(1+gc*gp);
Mrs=syslin('c',Mr);
yp=csim('step',t,Mrs);
//
//control PI
gc=Kc*(1+1/(Ti*s));
Mr=gc*gp/(1+gc*gp);
Mrs=syslin('c',Mr);
ypi=csim('step',t,Mrs);
//
//control PD
gc=Kc*(1+Td*s);
Mr=gc*gp/(1+gc*gp);
Vma.ucr.ie431.matlab&scilab.odt V.M. Alfaro
7. IE-431 Sistemas de control con Matlab y Scilab 5
Programa en Matlab Programa en Scilab
ypd=step(Mr,t);
%
%
%control PID
gc=Kc*(1+1/(Ti*s)+Td*s);
Mr=gc*gp/(1+gc*gp);
ypid=step(Mr,t);
%
%
%respuesta de los servomecanismos
%gráfico
subplot(1,2,1)
plot(t,[yp ypi ypd ypid])
grid on
%títulos y otras leyendas
title('Respuesta al escalón -
servomecanismo')
xlabel('tiempo'),ylabel('y(t)')
legend('control P','control
PI','control PD', 'control PID',0);
text(22,0.6,'Kc= 8, Ti= 8, Td=
1.5')
%----------------------------------
Mrs=syslin('c',Mr);
ypd=csim('step',t,Mrs);
//
//control PID
gc=Kc*(1+1/(Ti*s)+Td*s);
Mr=gc*gp/(1+gc*gp);
Mrs=syslin('c',Mr);
ypid=csim('step',t,Mrs);
//
//respuesta de los servomecanismos
//gráfico
subplot(1,2,1);xset('font',2,3)
plot2d(t',[yp; ypi; ypd;
ypid]',style=[2,3,5,6]),xgrid(4)
//títulos y otras leyendas
xtitle('Respuesta al escalón –
servomecanismo','tiempo','y(t)');
legends(['control P';'control
PI';'control PD';'control PID'],
[2,3,5,6],opt=1)
xstring(22,0.6,'Kc= 8, Ti= 8, Td=
1.5')
//---------------------------------
%reguladores
%control P
gc=Kc;
Mz=gp/(1+gc*gp);
yp=step(Mz,t);
%
%
%control PI
gc=Kc*(1+1/(Ti*s));
Mz=gp/(1+gc*gp);
ypi=step(Mz,t);
%
%
%control PD
gc=Kc*(1+Td*s);
Mz=gp/(1+gc*gp);
ypd=step(Mz,t);
%
%
%control PID
gc=Kc*(1+1/(Ti*s)+Td*s);
Mz=gp/(1+gc*gp);
ypid=step(Mz,t);
%
%
%respuesta de los reguladores
%gráfico
subplot(1,2,2)
plot(t,[yp ypi ypd ypid])
grid on
%títulos y otras leyendas
title('Respuesta al escalón -
regulador')
//reguladores
//control P
gc=Kc;
Mz=gp/(1+gc*gp);
Mzs=syslin('c',Mz);
yp=csim('step',t,Mzs);
//
//control PI
gc=Kc*(1+1/(Ti*s));
Mz=gp/(1+gc*gp);
Mzs=syslin('c',Mz);
ypi=csim('step',t,Mzs);
//
//control PD
gc=Kc*(1+Td*s);
Mz=gp/(1+gc*gp);
Mzs=syslin('c',Mz);
ypd=csim('step',t,Mzs);
//
//control PID
gc=Kc*(1+1/(Ti*s)+Td*s);
Mz=gp/(1+gc*gp);
Mzs=syslin('c',Mz);
ypid=csim('step',t,Mzs);
//
//respuesta de los reguladores
//gráfico
subplot(1,2,2),xset('font',2,3)
plot2d(t',[yp; ypi; ypd;
ypid]',style=[2,3,5,6]),xgrid(4)
//títulos y otras leyendas
xtitle('Respuesta al escalón -
regulador','tiempo','y(t)')
Vma.ucr.ie431.matlab&scilab.odt V.M. Alfaro
8. IE-431 Sistemas de control con Matlab y Scilab 6
Programa en Matlab Programa en Scilab
xlabel('tiempo'),ylabel('y(t)')
legend('control P','control
PI','control PD', 'control PID',0);
text(22,0.12,'Kc= 8, Ti= 8, Td=
1.5')
legends(['control P','control
PI','control PD','control PID'],
[2,3,5,6],opt=1)
xstring(22,0.12,'Kc= 8, Ti= 8, Td=
1.5')
Vma.ucr.ie431.matlab&scilab.odt V.M. Alfaro
9. IE-431 Sistemas de control con Matlab y Scilab 7
3.2 Ejemplo 1 - Salida gráfica
En las siguientes curvas de respuesta se puede apreciar el efecto que tiene la adición del modo
integral o derivativo sobre el comportamiento dinámico del sistema.
3.2.1 Gráficos en Matlab
3.2.2 Gráficos en Scilab
Vma.ucr.ie431.matlab&scilab.odt V.M. Alfaro
Kc= 8, Ti= 8, Td= 1.5
Respuesta al escalón - servomecanismo
tiempo
y(t)
0 5 10 15 20 25 30 35 40 45 50
0.0
0.5
1.0
1.5
control P
control PI
control PD
control PID
Kc= 8, Ti= 8, Td= 1.5
Respuesta al escalón - regulador
tiempo
y(t)
0 5 10 15 20 25 30 35 40 45 50
-0.10
-0.05
0.00
0.05
0.10
0.15
0.20
0.25
0.30
0.35
control P
control PI
control PD
control PID
10. IE-431 Sistemas de control con Matlab y Scilab 8
3.3 Ejemplo 2 - Listados de instrucciones
Programa en Matlab Programa en Scilab
%%Sistemas de Control con Matlab
%(control_herramientas.m)
%V.M. Alfaro, 2004
%
clear
s=tf('s');
%vector de tiempos
t=0:0.1:30;
%
%función de transferencia, planta
gp=1.5/((s+1)*(2*s+1)*(4*s+1));
%
%función de trans., controlador (P)
gc=2.5;
%
%función de trans. de lazo abierto
gla=gc*gp;
%
%función de trans. de lazo cerrado
glc=feedback(gla,1);
%
%uso de las herramientas de control
figure(1)
set(1,'Name','Análisis de un sistema
de control con varias herramientas')
%
%respuesta a un escalón unitario
%lazo cerrado
subplot(2,2,1)
step(glc,t),grid on
title('Respuesta a un scalón
unitario')
xlabel('tiempo'),ylabel('y(t)')
%
%lugar de las raíces (LGR)
subplot(2,2,2)
rlocus(gla);sgrid([0.75 0.4],[1
1.5])
%
%diagrama de Nyquist
subplot(2,2,3)
nyquist(gla)
%
%diagrama de Bode
subplot(2,2,4)
bode(gla),grid on
//Sistemas de Control con Scilab
//(control_herramientas.sce)
//V.M. Alfaro, 2004
//
clear
s=poly(0,'s');
//vector de tiempos
t=0:0.1:32;
//
//función de transferencia, planta
gp=1.5/((s+1)*(2*s+1)*(4*s+1));
//
//función de trans., controlador (P)
gc=2.5;
//
//función de trans., lazo abierto
gla=gc*gp;glas=syslin('c',gla);
//
//función de trans. lazo cerrado
gu=1;glc=gla/.gu;
glcs=syslin('c',glc);
//uso de las herramientas
xset('window',1)
xname('Análisis de un sistema de
control con varias herramientas')
//
//respuesta a un escalón unitario
//lazo cerrado
subplot(2,2,1),xgrid(4)
plot2d(t,csim('step',t,glcs),style=2
)
xtitle('Respuesta a un scalón
unitario','tiempo','y(t)')
//
//lugar de las raíces (LGR)
subplot(2,2,2),xgrid(4)
evans(glas,2.5)
sgrid([0.75 0.4],[0.5 0.75],2)
//
//diagrama de Nyquist
subplot(2,2,3)
nyquist(glas)
//
//diagrama de Bode
subplot(2,2,4)
bode(glas,0.001,10)
Vma.ucr.ie431.matlab&scilab.odt V.M. Alfaro
11. IE-431 Sistemas de control con Matlab y Scilab 9
3.4 Ejemplo 2 - Salida gráfica
Las siguientes figuras permiten estudiar el comportamiento dinámico, la estabilidad y otras
características del sistema de control.
3.4.1 Gráficos en Matlab
Vma.ucr.ie431.matlab&scilab.odt V.M. Alfaro