Control de Procesos
TALLER SCILAB
Clase 5: Uso básico de Xcos
Xcos es una herramienta de Scilab que permite el modelamiento y simulación de sistemas
dinámicos continuos o discretos. La principal ventaja que posee el Xcos es la resolución de
sistemas complejos mediante el uso del algebra de bloques, lo cual es más amigable con el usuario
por su interfaz gráfica. Para acceder a este basta con escribir en la consola “xcos” o hacer click en
el icono de la siguiente imagen:
Luego deberían aparecer dos pantallas más o menos así:
La ventana de la izquierda se llama “explorador de paletas”, mientras que el de la derecha será la
“ventana principal del Xcos o editor”, las cuales pasaremos a revisar a continuación.
1
Control de Procesos
1. Explorador de paletas
Consta de una lista de bloques que contiene por default el Xcos para la construcción de la
simulación, están distribuidos por categoría para su fácil búsqueda. Si por alguna razón usted
quisiera diseñar otro tipo de controlador más específico, puede descargar el toolbox de la página
https://atoms.scilab.org/
Un bloque es la unidad más pequeña en Xcos, los cuales son necesarios para para cualquier
simulación. En general todos los bloques contiene al menos una entrada y una salida que permiten
la conexión entre sí, para ingresar algún bloque basta con arrastrarlo desde el explorador de
paletas a la ventana principal del Xcos, quedando de la siguiente forma:
Para conectarlos basta con hacer click en alguna de las flechas del bloque y arrastrarla hasta otra
flecha del bloque de esta forma:
2
Control de Procesos
Bloques más utilizados:
Para el diseño de un controlador clásico PID los bloques más utilizados serán:
- Bloque CLR: Permite crear una función de transferencia, basta con ingresar el numerador
y el denominador en el plano s, tiene la forma de:
2∗s
Por ejemplo, si deseara ingresar la función de transferencia F (s)= , primero habría que
3∗s2 +1
arrastrar el bloque al editor, para luego doble click en la función y escribir el numerador y el
denominador.
- Controlador PID: Ingresa un controlador PID al sistema, el cual tiene una forma de:
Este bloque solo tiene la opción de ingresar los valores del Proporcional, Integral y derivativo de la
siguiente forma:
3
Control de Procesos
- Ganancia: El bloque ganancia consta en tomar la señal de entrada y multiplicarla por el
valor de la ganancia, por ejemplo: si tu señal tiene un valor de 20 y tu ganancia es 2,
entonces la salida del bloque será 40. Su bloque tiene la siguiente forma:
- Suma: permite la suma o resta entre dos o más señales, su versión más simple tiene la
forma de:
Si, por ejemplo, deseara dos sumas y una resta, debe hacer doble click en el bloque suma y
cambiar las entradas de la siguiente forma:
De esta forma, todos los 1 representan sumas y -1 representan restas. En general todos los
bloques de operaciones matemáticas funcionan de la misma forma.
- Entradas: Como se vieron en documentos anteriores, pueden ser del tipo impulso
(CONST), escalón unitario (STEP_FUNCTION), rampa (RAMP), entre otras. Se pueden
encontrar en la paleta de fuentes.
- Mux y Demux: Son utilizadas para unir y desunir señales de forma vectorial, resultando
una señal del tipo matricial. Permiten unir más de dos señales dando doble click al bloque,
en su cuadro de dialogo respectivo. Sus iconos son de la forma:
4
Control de Procesos
- Clock: Este bloque es utilizado como un activador del tiempo, además de permitir al
usuario cambiar el tiempo de inicio y el periodo de la simulación. Su símbolo es de la
forma:
Todas las flechas que estén en rojo significa que son alimentadas con la variable tiempo,
como las que veremos a continuación.
- Cscope: Grafica la respuesta del sistema. Contiene dos entradas, la de tiempo (roja) y la
del sistema (negra). Puede ser encontrada en la pestaña Sinks. Su símbolo es de la forma:
Un detalle importante de las propiedades de Cscope es que Refresh period debe ser igual
al tiempo final de integración seleccionado (ver más adelante), de no ser así el Cscope no
mostrara el grafico desde el tiempo 0
- AFFICH_m: Muestra el resultado numérico de la simulación. Al igual que Cscope, contiene
dos entradas, la de tiempo (roja) y la del sistema (negra). Puede ser encontrada en la
pestaña Sinks. Su símbolo es de la forma:
2. Ventana principal del Xcos.
El editor del Xcos permite el diseño de diagramas de flujo mediante el uso de bloques que fueron
explicados anteriormente para la simulación de sistemas dinámicos. A continuación revisaremos
las opciones que presenta el Xcos:
2.1 Configuración del simulador
Se encuentra en la barra de la parte superior del Editor, primero click en simulación y luego click
en editor para entrar.
5
Control de Procesos
Con esto aparecerá lo siguiente:
- Tiempo final de integración: En qué momento termina la simulación
- Escalamiento en tiempo real: Es cuánto dura el tiempo en la simulación, donde por
defecto es 1 segundo.
- Tolerancias absolutas y relativas del integrador: Tiene relación con propiedades del
solver.
- Tolerancia en el tiempo: Es el intervalo de tiempo más pequeño que utiliza el
solucionador ode.
- Intervalo de tiempo máximo para la integración: Si se produce el mensaje “Demasiadas
llamadas”, este valor debe ser reducido.
- Solver kind: Método de resolución, igual al utilizado en simulaciones (ver clase 4, ahí
aparecen los métodos disponibles).
- Maximum step size: tiempo máximo que debe tardar el solucionador, donde el 0 significa
que no posee limite.
2.2 Ejecutar traza y depurar.
Permite establecer el xcos en modo de depuración, permitiendo elegir entre cuadro tipos de
depuración disponibles.
6
Control de Procesos
2.3 Asignar contexto.
Scilab permite definir instrucciones por medio de parámetros simbólicos en distintos bloques,
donde se definen esos parámetros es en la venta de asignar contexto. Se ubica en la barra de
simulación Asignar contexto. Por ejemplo:
2.4 Iniciar simulación.
Finalmente, con todo configurado, para iniciar la simulación basta con hacer click en el icono de la
izquierda siguiente:
Hasta aquí son los conceptos básicos para entender el funcionamiento de Xcos, en el siguiente
documento revisaremos un ejemplo completo del diseño de un controlador PID mediante el uso
del método de Ziegers-Nichols
Ejemplo 1: Se tiene el siguiente reactor CSTR como muestra la siguiente figura:
Se desea controlar la concentración de salida del compuesto A, que sea igual a 2.5 M a partir del
flujo másico de vapor. Considere las siguientes suposiciones para el sistema:
- Reactor isovolumétrico
2
- Posee una reacción con cinética del tipo r =k∗[ Ca ]
7
Control de Procesos
Mientras que las constantes del sistema son:
Constante Valor Constante Valor
Volumen (V) 2 (m3) T° entrada (T1) 15 (°C)
Capacidad calorífica (Cp) 4.18 (KJ/Kg*C) Concentración de entrada 4 (M)
(Ca)
Densidad (p) 800 (Kg/m3) Constante de reacción (K0) 8 (M/hr)
Flujo (F) 1.5 (m3/hr) T° inicial en reactor (T0) 15 (°C)
Entalpia de vapor (λ) 2000 (KJ/Kg) Concentración inicial (Ca0) 10 (M)
Masa de vapor máxima (m) 80 (Kg/hr) Energía de activación (Ea) 1200 (J/mol)
Solución:
i) Modelo del sistema:
- Balance de masa a la especie A:
dn
=n entrada−n salida−nreaccionan
dt
d (Ca∗V )
=F∗Cai−F∗Ca−k∗Ca2∗V
dt
Como en este caso el volumen es constante, sale de la diferencial, además, agregando la ecuación
de Arrhenius el modelo queda:
− Ea
dCa F ( R∗T
= ∗ Cai−Ca )−k 0∗e ∗Ca2 (1) 2
dt V
- Balance de energía:
dU
=U entrada −U salida +U vapor
dt
d ( p∗Cp∗V∗T 2)
=Cp∗p∗F∗T 1−Cp∗p∗F∗T 2+ m∗λ
dt
Sacando todo lo que es constante de la derivada y dividiendo obtendremos la segunda ecuación:
dT2 F m∗λ
= ∗ ( T 1−T 2 ) + (2)
dt V p∗Cp∗V
ii) Obtención del estado natural:
Existen distintas formas de obtención del estado natural que usted conoce: eliminando los
términos diferenciales y despejando algebraicamente; aplicando transformadas de Laplace de los
modelos y calculando el límite de la función por s; utilizando el programa Scilab para conocer el
comportamiento del modelo, para este caso utilizaremos el ultimo método que permite no solo
8
Control de Procesos
conocer el estado natural, sino además conocer el set point más adelante. El script del programa
queda de la siguiente forma:
Su resolución es idéntica a cuando revisamos en el taller 3, por si tiene dudas consulte este taller.
El comando disp(y) permite visualizar en la ventana de comando el resultado final de la siguiente
forma:
Donde la última columna representa el resultado final, así 2.01 será la concentración de A y 46.89
la temperatura final. La siguiente grafica es el comportamiento obtenido en Scilab:
9
Control de Procesos
iii) Obtención de valores del set point:
Una de las ventajas de usar el Scilab es permitir conocer al usuario todo el comportamiento del
sistema. En este caso la lógica del sistema es que si bajo el flujo másico de vapor que calienta el
sistema habrá más concentración de A en el reactor ya que reaccionará menos, con esto podemos
decir que es posible controlar el sistema. Para saber cuánto debo bajar el flujo másico para
obtener una concentración igual a 2.5 M de A basta con tantear en el mismo Scilab cambiando los
valores del flujo de vapor (m), de esta forma la respuesta es:
Kg
m=57.7 ; T 2=38 ° C ; Ca=2.5(M )
h
Obviamente si usted desea comprobar, basta con eliminar ambas diferenciales y resolver el
sistema de ecuaciones de 2x2
iv) Obtención de función de transferencia y perturbaciones:
Volviendo a la ecuación 1 del modelo:
− Ea
dCa F ( R∗T
= ∗ Cai−Ca )−k 0∗e ∗Ca2 (1) 2
dt V
Si se da cuenta existen 3 variables que son funciones en el plano s, estas son: Ca, T2 y m; es por
ello que es necesario linealizar el segundo término de la ecuación mediante una expansión por
serie de Taylor, la cual tiene una forma general de:
df df
f =f ( a ,b ) +
da |
a=0
∗( a−a 0 )+
db |
b=0
∗( b−b0 )
10
Control de Procesos
Así nos queda:
− Ea
R∗T 2.0
∗Ea∗Ca20
−Ea −Ea −Ea
R∗T 2 2 R∗T 20 2 e
e ∗Ca =e ∗Ca0 + 2
∗( T 2−T 2,0 ) +2∗Ca0∗e R∗T ∗(Ca−Ca0 )
20
T 2,0 ∗R
Reemplazando, no olvide que cuando está controlando la cercanía de la linealización es en el set
point:
−Ea
R∗T 2
e ∗Ca2=3.9293+ 5.8637∗10−3∗( T 2−311 )+ 3.1435∗(Ca−2.5)
−Ea
R∗T 2
e ∗Ca2=−5.753+5.8637∗10−3∗T 2 +3.1435∗Ca
Reemplazando en la ecuación 1:
dCa 1.5∗4 1.5∗Ca
= − −8∗(−5.753+ 5.8637∗10−3∗T 2+ 3.1435∗Ca)
dt 2 2
dCa
=49.02−25.9∗Ca−0.047∗T 2
dt
Aplicando transformada de Laplace:
49.02
s∗Ca ( s )−10= −25.9∗Ca ( s ) −0.047∗T 2 ( s)
s
−0.047∗T 2 ( s) 49.02 10
Ca ( s )= + + (3)
s+ 25.9 s∗( s+25.9) s+25.9
Ahora trabajando el balance de energía:
dT2 F m∗λ
= ∗ ( T 1−T 2 ) +
dt V p∗Cp∗V
d T 2 1.5 1.5 m∗2000
= ∗288− ∗T 2+
dt 2 2 800∗4.18∗2
dT2
=216−0.75∗T 2 +0.3∗m
dt
Aplicando Laplace:
216
s ¿ T 2 ( s)−288= −0.75∗T 2 ( s ) +0.3∗m(s)
s
11
Control de Procesos
0.3 216 288
T 2 ( s )= ∗m ( s ) + + (4 )
s+0.75 s∗( s+ 0.75 ) s +0.75
Llevando (4) a (3):
−0.0141∗m ( s ) 10.152 13.536 49.02 10
Ca ( s )= − − + + (5)
( s+ 25.9 )∗( s+0.75 ) s∗( s +0.75 )∗ ( s+ 25.9 ) ( s+ 0.75 )∗( s+25.9 ) s∗( s+25.9 ) s+ 25.9
Donde el primer término corresponde a la función de transferencia del sistema, todo el resto
representa las perturbaciones del sistema.
12
Control de Procesos
v) Diseño del controlador en Scilab:
Para el diseño del controlador utilizaremos una estructura de control del tipo feedback, para
simplificar un poco más utilizaremos un script para determinar las perturbaciones del sistema
obtenidas en la ecuación 5:
De esta forma en la consola de Scilab aparecerá el resultado:
Llevándolo al simulador Xcos:
Si bien está correcto, las líneas están un poco desordenadas, para ello basta con seleccionar las
que deseas ordenar y con el botón derecho: Estilo de enlace Optimo, quedando:
13
Control de Procesos
Para comenzar la simulación basta con ajustar el tiempo final de integración y del Cscope el
Refresh period, Scilab usa por defecto el tiempo de integración 10 5 lo cual es muy alto, se
recomienda para empezar usar 100.
3. Criterio de Routh-Hurwitz
Es utilizado para analizar la estabilidad en sistemas dinámicos verificando si las raíces se
encuentran en el sector positivo o negativo del plano complejo. En palabras más simples: si al
aplicar el criterio de Routh-Hurwitz la primera columna es totalmente positiva, entonces el sistema
es estable; si no el sistema es inestable. El comando utilizado en Scilab para determinar el criterio
es:
Si se desea obtener la ganancia crítica del sistema, es decir, donde el sistema oscila
constantemente, se utiliza la segunda forma del comando, sino, se utiliza la primera.
Ejemplo 2: Obtener la estabilidad del ejemplo 1:
Como los coeficientes de la primera columna son positivas, entonces el sistema es estable.
14
Control de Procesos
4. Método de Ziegers-Nichols:
Recordemos que este método permite la sintonización de controladores PID para sistemas a lazo
cerrado encontrando la ganancia crítica del sistema, en términos más simples es buscar la
ganancia para un controlador tipo P (representado por Kc) hasta que el sistema oscile
continuamente.
El método es el siguiente:
- Se aplica a la planta solo control proporcional con una ganancia kp pequeña
- Aumentar el valor de kp hasta que el lazo comienza a oscilar. La oscilación debe ser lineal y
se detecta en CSCOPE
- Se registra en la salida la ganancia de modo que kp=kc y se lee el periodo crítico.
- Con la siguiente tabla se ajustan los parámetros de control de acuerdo al siguiente cuadro
Kp Ti (tiempo de integración) Td (tiempo de derivación)
P Kc/2 -- --
PI Kc/2.2 Pcr/1.2 --
PID Kc/1.7 Pcr/2 Pcr/8
El valor de kp puede ser cualquier número real, por tanto requiere de harta paciencia para la
sintonización por este método.
Ejemplo 3: Sintonice mediante el método de Ziegers-Nichols el siguiente controlador PID:
1
G proceso =
2∗s +3∗s 2+ s 3
Solución: Al ingresar todo al Xcos de Scilab y utilizando un controlador tipo feedback queda de la
siguiente manera:
15
Control de Procesos
Con una ganancia kp=6 la respuesta en CSCOPE queda:
De esta forma kp=kc=6, mientras que el periodo de oscilación se saca haciendo zoom en SCOPE.
16
Control de Procesos
Es decir, Pcr será aproximadamente igual a 4.5
Si se desea un controlador PID entonces:
Kp=3.53 ; τi=2.25 ; τd=0.56
Y la respuesta del sistema será:
Obviamente como el método de Zieglers-Nichols es un método semi empírico no siempre dará la
respuesta exacta del controlador, aunque si dará una buena aproximación, leyendo la respuesta
del sistema basta con incrementar la acción derivativa para controlar, entonces el PID será:
Kp=3.53 ; τi=2.25 ; τd=4
Con respuesta:
17
Control de Procesos
18