Professional Documents
Culture Documents
Estudio, identificación y
control de una planta
medidora de caudal másico.
Alumnos:
Pablo Germán Manchione
Leg: 15619
Matias Javier Artazcoz
Leg: 11857
Página 2
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Resumen:
La Instrumentación y Control de Procesos industriales de caudal de sólidos
involucra principalmente materiales a granel transportados por vía seca, tales como
polvos o materiales de molienda movilizados por una cinta transportadora. Dichos
materiales pueden ser: alimentos (azúcar, yerba, arroz, polenta, cacao en polvo, harinas,
sémolas, legumbres, leche en polvo, harina, semillas, sal seca), materiales para la
construcción (cal, cemento, arena, piedra), medicamentos en polvo, fertilizante granulado,
entre otros. El control de caudal másico y dosificación de estos productos, en la industria,
es de gran importancia en diferentes procesos como por ejemplo el fraccionado y
distribución de los mismos a la hora de obtener productos de buena calidad en menor
tiempo. Es por ello que, se ha trabajado sobre un sistema de dosificación de sólidos
granulados.
El objetivo de proyecto propuesto fue realizar el control y la automatización en
tiempo real de una planta medidora de caudal másico por vía seca, comandada a partir de
una interfaz gráfica (HMI a medida), utilizando herramientas de Matlab. Por otro lado, se
procedió y se enfocó en el estudio de técnicas para la identificación de la dinámica del
proceso a controlar. De esta manera se obtuvo un modelo aproximado del mismo, para un
posterior diseño y/o ajuste de control. Por último, se llevó a cabo una serie de pruebas y
comparaciones entre el control en simulación y el control en tiempo real, a partir de los
resultados obtenidos.
Para todo esto se dispuso de una planta existente que fue aprovechada en cuanto
a su estructura mecánica. No obstante, el proyecto se enfoca además, en el diseño y la
construcción de los circuitos electrónicos necesarios para el acondicionamiento de las
señales de sensado y actuación. Como así también, se encara el cálculo y el rediseño del
actuador y el sensor de velocidad de la misma, para ser reemplazados los ya existentes.
Página 3
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Índice
1. Introducción .................................................................................. pág 6
2. Objetivo ......................................................................................... pág 8
3. Descripción del proyecto ............................................................... pág 9
3.1 Desarrollo Mecánico .............................................................................. pág 10
3.1.1 Desarrollo del actuador del sistema ..................................................... pág 10
3.1.2 Verificación del sistema sensor de peso ............................................... pág 12
3.1.3 Desarrollo del sistema de medición de velocidad .................................. pág 14
3.2 Desarrollo electrónico ........................................................................... pág 15
3.2.1 Desarrollo del sistema de medición de velocidad .................................. pág 16
3.2.2 Desarrollo del acondicionamiento de señal del transductor de peso...... pág 17
3.2.3 Desarrollo del sistema CAD y transmisión de datos a la PC.................. pág 19
3.2.4 Desarrollo del sistema de actuación .................................................... pág 21
3.2.5 Desarrollo de la interfaz electrónica ..................................................... pág 22
3.2.6 Desarrollo del sensado de nivel mínimo ............................................... pág 23
3.2.7 Ruido de medición y fuentes de alimentación ...................................... pág 23
3.3 Desarrollo de los algoritmos de medición y actuación ........................... pág 23
3.3.1 Señal de actuación ............................................................................. pág 24
3.3.2 Medición de peso ................................................................................ pág 25
3.3.3 Medición de velocidad en la cinta y nivel en la tolva ............................. pág 27
3.3.4 Medición del peso requerido ................................................................ pág 28
3.4 Puesta en marcha y calibración ............................................................. pág 28
4. Dinámica del sistema ..................................................................... pág 31
4.1 Modelado matemático del sistema ....................................................... pág 31
4.1.1 Modelado matemático del motor de CC................................................ pág 31
4.1.2 Modelado matemático del caudal másico ............................................. pág 33
4.1.3 Cálculo de la función de transferencia ................................................. pág 34
4.1.4 Ajuste de parámetros .......................................................................... pág 36
4.1.5 Resultados del modelo obtenido .......................................................... pág 37
5. Control .......................................................................................... pág 39
5.1 Objetivos del control a lazo cerrado ...................................................... pág 40
5.2 Ajuste empírico de un controlador PI .................................................... pág 41
5.2.1 Ajuste por método de Ziegler-Nichols................................................... pág 42
5.2.2 Resultados obtenidos .......................................................................... pág 44
5.2.3 Comparación entre el modelo de la planta y la panta real .................... pág 47
Página 4
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 5
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
1. Introducción
Hoy en día en la industria, la instrumentación y control de procesos industriales
de caudal de sólidos granulados, son de suma importancia a la hora de brindar calidad y
repetividad en el proceso de elaboración de ciertos productos. Este es un punto cada vez
más importante y demandante por los consumidores, que ha aumentado de manera
progresiva en los últimos años.
Los medidores de caudal másico de sólidos por vía seca permiten pesar cualquier
material seco a granel o granulado, que a diferencia de los instrumentos medidores de
caudal volumétrico no dependen de la temperatura y presión a la que se encuentra el
producto. Este tipo de medidores pueden encontrarse en industrias tan diversas como
sus materias primas lo indiquen, como ser: alimentos (azúcar, yerba, arroz, polenta,
cacao en polvo, harinas, sémolas, legumbres, leche en polvo, harina, semillas, sal seca),
materiales para la construcción (cal, cemento, arena, piedra), medicamentos en polvo,
fertilizante granulado, por mencionar solo algunas.
Existen varias alternativas para medir caudal másico, una de ellas es medir el
caudal volumétrico, compensarlo y convertirlo adecuadamente en caudal másico. Pero
como se mencionó previamente, los métodos de medición volumétrica tienen una gran
dependencia con la temperatura y la presión en la que halla el fluido. Otra alternativa es
medir directamente el caudal másico, para ello se puede utilizar un medidor por efecto
Coriolis, por principios térmicos, por impacto, o los medidores de caudal de sólidos
desplazados en cinta transportadora.
Como se disponía de un dosificador de caudal de sólidos granulados en cinta
transportadora, gracias a la donación del ingeniero Nicolas Lazaretti luego de concluir su
proyecto final de ingeniería, este fue aprovechado en cuanto a su estructura mecánica
con el fín de mejorar su rendimiento.
1
Proyecto final de ingeniería de Nicolas Lazaretti
Página 6
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
2
Proyecto final de ingeniería de Nicolas Lazaretti
Página 7
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
2. Objetivos
Como objetivo principal del proyecto se plantea el control y la automatización, en
tiempo real, de una planta dosificadora de caudal másico de sólidos granulados. Como así
también el mando y la supervisión del sistema desde una interfaz gráfica. Desde este
objetivo primordial y teniendo en cuenta la planta existente, se desglosan otros objetivos a
cumplir:
Rediseño mecánico de la planta desde el punto de vista del actuador y el sistema de
medición de velocidad de la cinta transportadora. Es decir, se plantea modificar los
actuadores, el esquema de reducciones, el torque y la velocidad alcanzados por la
misma. En cuanto a la medición de velocidad, se propone un rediseño del
codificador incremental aumentando la resolución del mismo, con el fin de obtener
mayor precisión en el sensado.
Acondicionamiento y rediseño electrónico de la planta. Es decir, tanto para las
señales de sensado como para las de actuación de la planta, se plantea el diseño de
la electrónica correspondiente para el correcto desempeño de las mismas.
Estudio de la dinámica de la planta, con el fin de encontrar un modelo matemático
del sistema lo más aproximado posible al real. A partir de esto se plantea el diseño
en simulación y la aplicación en tiempo real de un control a lazo cerrado. Dicho
control debe permitir, al caudalímetro, entregar una cantidad de masa por unidad
de tiempo constate en su salida. También debe poder rechazar perturbaciones que
puedan afectar el desempeño del proceso.
El sistema también debe tener la capacidad de entregar no solo un caudal
constante, sino también un peso determinado luego de transcurrir cierta cantidad
de tiempo.
Para el mando y la supervisión del sistema desde una interfaz gráfica se propone el
desarrollo de una interface de usuario (HMI) a medida. La cual debe cumplir con la
capacidad de:
o Poder supervisar el comportamiento físico del sistema, alarmas de nivel
mínimo, parada de emergencia.
o Comandar el arranque del sistema.
o Permitir el seteo de referencias de control, configuraciones del controlador
a utilizar, y variables de calibración del sistema.
Por último, se plantea una prueba y comparación del controlador diseñado, en
simulación y en tiempo real.
Página 8
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 9
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Además se evaluó el valor mínimo de velocidad al cual debía girar el rodillo para
cumplir con una mínima velocidad lineal requerida en la cinta. Como el diámetro del
rodillo sobre el cual se desliza la cinta es de , la misma se desplaza una distancia
Página 10
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Por otra parte, como se disponía de una polea de acople con una reducción 1.38:1
respecto a la polea presente en el rodillo, la velocidad y la cupla demandada por el motor
fue:
A partir de estos resultados, tomados como una cota inferior de trabajo, se decidió
obtener un motor con una velocidad nominal de y un torque de .
Con estos datos, se procedió a realizar el cálculo de la potencia necesaria en el eje del
motorreductor:
El paso siguiente fue realizar una pequeña investigación de mercado sobre los
productos ofrecidos por fabricantes de la zona. Por cuestiones de oferta y falta de variedad
se decidió obtener un motor con una potencia nominal de (2 veces mayor a la
requerida en el límite estimado) y una velocidad nominal de . Entonces, con esta
idea de ser conservadores a la hora de realizar la elección del producto, los resultados del
acople, ensamble y prueba del motorreductor fueron totalmente satisfactorios.
Este cambio en el sistema de actuación de la planta fue realizado con el fin de
mejorar la respuesta del sistema, reduciendo además computacionalmente y
eléctricamente la complejidad del mismo.
A continuación se presentan unas imágenes de dicho sistema de actuación, donde
se puede apreciar el motor con sus poleas, correa y el rodillo que lo acopla con la cinta
transportadora.
Página 11
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
3
Proyecto final de ingeniería de Nicolas Lazaretti
Página 12
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Por otro lado, el sistema de pesado posee, en los extremos de los rodillos de bolilla
recirculante, un acople basado en cuatro rodamientos dispuestos sobre una varilla recta.
Este acople permite que la fuerza sobre los rodillos, generada por el producto en
movimiento, sea transmitida al soporte de las celdas de manera perpendicular. Por último
esta fuerza es transmitida a un registro mecánico montado en las celdas de carga, la cual
es captada por las mismas.
Para que el esfuerzo que realiza el material transportado por la cinta sea parejo,
estos registros están formados por dos tornillos regulables. Es decir, para que el peso del
material circulante se reparta equitativamente entre las dos celdas de carga, se dispone
de estos registros regulables que facilitan la calibración de una distribución de peso
uniforme entre ambos sensores.
Este sistema de sensado descripto previamente, carecía de uno de los rodillos
deslizantes por los cuales se transmite el peso hacia las celdas de carga. Por este motivo,
se tuvo que construir uno de ellos a medida. Por otro lado, tampoco se disponía de uno de
los dos registros de peso que se encuentran sobre las celdas de carga, el cual también
tuvo que ser repuesto.
Luego procedimos verificando el correcto funcionamiento mecánico de este sistema
de sensado realizando una primera calibración del mismo, a partir de la regulación de los
Página 13
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
registros de peso. Se ratificó que la respuesta de las celdas de carga, ante la exposición de
las mismas a diferentes pesos, era la correcta. Como el ensayo fue óptimo, se decidió no
realizar ningún tipo de cambios sobre este sensor.
Página 14
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 15
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Entonces, ante esta necesidad de aumentar aún más la resolución del sistema, se
decidió reemplazar el sensor existente, por un sensor óptico ranurado CR560. En este
caso el diodo emisor y el fototransistor detector se encuentran opuestos uno del otro, lo
que permite un aumento en la resolución del sistema. Esto último se debe a que, el
sensor, tiene la capacidad de detectar objetos de menor tamaño y por ende podemos
aumentar la resolución del disco del encoder. Dicho sensor puede visualizarse en la
siguiente figura.
Página 16
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
A partir del circuito de entrada (para mayor detalle ver ANEXO 4) se logra la
correcta emisión del diodo. Por otro lado, al interrumpir periódicamente esta señal óptica,
se obtiene una señal de onda cuadrada sobre el receptor del sensor, la cual es
retransmitida hacia la PC a través del “circuito receptor”. Ahora, solo queda medir la
frecuencia de la onda cuadrada y así determinar la velocidad de los pulsos (esto equivale
a la velocidad de la cinta). Para realizar la medición de frecuencia de esta onda se utilizó
funciones del tipo C-MEX implementadas en Matlab (dicho tema se abordará más
adelante en esta obra).
Por último, vale la pena aclarar que, este sensor permitía obtener un encoder de
mayor resolución a la diseñada. Sin embargo, la velocidad de cálculo de la PC no
respondía a velocidades muy altas de procesamiento.
aún a plena carga. Es por esta causa que debimos diseñar una etapa electrónica
que amplifique esta tensión mediante una etapa de amplificadores operacionales en una
configuración de tipo instrumentación -lo cual logra características necesarias para
acondicionar la señal proveniente de la celda- y la exprese entre 0 y 5 volts (tensión de
transmisión de datos normalizada que decidimos utilizar). Los componentes utilizados en
Página 17
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
dicha etapa debieron ser de precisión para evitar acarrear errores en la medición ni
variaciones en la misma por los cambios de temperatura
El diagrama en bloques del circuito implementado es el siguiente:
Imagen 3.10: Ajuste de ganancia y offset de la señal proveniente de las celdas de carga
Página 18
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 19
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
2. Esta palabra (de 8 bits) es tomada por el shift register cada vez que ingresa
un pulso por el acumulador del mismo.
3. Una vez cargados los datos sobre el acumulador del shift register,
ingresando una señal de clock sobre el mismo, se envían los datos en serie
hacia el optoacoplador.
4. El optoaislador solo cumple la función de reconstuir la forma de onda de
los pulsos que son transmitidos hacia la PC.
Vale aclarar que tanto las señales de clock, acumulador y salida son transmitidas
a través de la interfaz del puerto paralelo de la PC. La coordinación y lógica de estas
señales fue implementada mediante la utilización de herramientas como Real Time
Workshop, la programación de funciones de tipo S-Function o C-Mex y el Real Time
Windows Target como target de aplicación (el tema se abordará más adelante en esta
obra). A continuación se puede observar un diagrama en bloques del sistema.
Imagen 3.11: Diagrama en bloques del sistema conversor AD y transmisión de datos hacia la PC
Página 20
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 21
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 22
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 23
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 24
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 25
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 26
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 27
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 28
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 29
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 30
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
4
“Feedback Control of Dynamic Systems” 4th Edition, by Gene F. Franklin
Página 31
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Por otra parte, al girar este devanado de inducido en presencia del campo magnético ,
generado por el imán permanente, se produce en el mismo una caída de tensión o fuerza
contraelectromotriz, , proporcional a su velocidad de giro
Aplicando la ley de newton, sobre el rotor del motor, se tiene que: el par mecánico
(o torque) desarrollado por el motor genera una aceleración angular en la carga y se
encarga de vencer la fuerza de fricción , proporcional a la velocidad de giro. Por lo
tanto:
(4.1)
Por otro lado, considerando al devanado del inducido como un conductor con una
resistencia y una inductancia , y tomando la fuerza contaelectromotriz como una
fuente de tención proporcional a la velocidad de giro, podemos aplicar la ley de Kirchoff al
circuito eléctrico de armadura resultante:
(4.2)
Con
Donde:
(4.3)
Página 32
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
(4.4)
Donde:
(4.5)
5
Instrumentación de Procesos Industriales, parte II [Héctor Polenta]
6
Instrumentación de Procesos Industriales, parte II [Héctor Polenta]
Página 33
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Para luego ajustar los parámetros del mismo mediante la medición de la ganancia en
continua, retardo y tiempo de respuesta del sistema, ante una excitación de tipo escalón.
Esto último puede observarse en el siguiente gráfico:
Página 34
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Dónde
Debido al bajo retardo de la planta, en comparación con la dinámica del sistema, este
decidió despreciarse para finalmente obtener el siguiente modelo matemático:
7
Digital Control of Dynamic System [Gene F. Franklin, J.David Powell, Michael Worlanan]
Página 35
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 36
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Uno de los ensayos que permite obtener este modelo consiste en excitar a la planta
con una señal de tipo escalón, para luego registrar la evolución temporal de la salida del
sistema y compararla con la del modelo matemático.
A partir de ensayos repetidos, se ajustaron experimentalmente los polos y la
ganancia del modelo hasta tener un error considerable entre la planta real y la planta
identificada, ambas excitadas con una actuación correspondiente a un caudal másico
entre y .
Los ensayos, para el ajuste del modelo, fueron realizados desde Simulink a partir
del siguiente diagrama en bloques:
Página 37
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 38
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
5. Control
En este capítulo se desarrollarán las técnicas de control aplicadas tanto al sistema
real como al modelo matemático obtenido.
En primera instancia se realizó un estudio de la planta frente a una entrada de
tipo escalón, para luego ajustar un controlador PI a partir del método de Ziegler-Nichols.
Posteriormente se llevó a cabo un ajuste fino de las ganancias, proporcional e integral, de
manera empírica con el sistema en marcha, buscando el desempeño a lazo cerrado
deseado.
Por otra parte, se diseñó un controlador aplicando la técnica de ubicación de polos
a lazo cerrado sobre el modelo matemático de la planta, para una posterior corroboración
sobre el sistema real. Esta técnica permitió cumplir con los requerimientos de control
deseados a partir de un desarrollo de diseño teórico.
El capítulo también presenta las especificaciones de la dinámica a lazo cerrado
requeridas, es decir cómo deseamos que se comporte el sistema luego de aplicar el control
calculado.
Para el diseño de los controladores, tanto en la asignación de polos como en el
ajuste por Ziegler y Nichols, se utilizó MATLAB como herramienta de cálculo. Por otro
lado, para corroborar el correcto funcionamiento del controlador en el lazo cerrado del
sistema, se utilizó SIMULINK haciendo uso de herramientas que permiten trabajar en
tiempo real como: Real Time Workshop, la programación de funciones de tipo S-Function
y el Real Time Windows Target como target de aplicación.
Antes de comenzar con la explicación de cómo se realizó el diseño de control
presentamos un diagrama en bloques general del sistema.
Página 39
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Como lo indica la imagen anterior, el sistema completo está compuesto por dos
grandes partes:
La PC constituida por el controlador, los parámetros de referencia, sensado y
comando de la planta real.
El sistema físico compuesto por los circuitos electrónicos de acondicionamiento de
señal, los sensores, el actuador y la estructura mecánica.
Donde:
: es el valor de referencia que se desea seguir.
: es el máximo valor que toma la señal d salida del sistema.
: es el valor del sobre valor producido. Es decir el valor máximo por
el cual la salida superó a la señal de referencia.
es el tiempo de establecimiento del sistema. Es decir, es el tiempo que tarda la
salida en entrar en una ventana de . 8
8
Control System Desing, [Graham C. Goodwin, Stefan. F. Graebe and Mario. E. Salgado.]
Página 40
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
9
Control System Desing, [Graham C. Goodwin, Stefan. F. Graebe and Mario. E. Salgado.]
Página 41
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 42
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
10
Computer Controlled System, Theory and Desing,[ Karl J. Åström, Björn Wittenmark]
Página 43
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 44
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 45
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Se puede observar, que los resultados cumplen con los requerimientos de sobre
valor nulo, tiempo de establecimiento menor a seis segundos y seguimiento de referencia
en un rango de caudal relativamente amplio. Faltaría corroborar, por último, el rechazo
de perturbaciones y el desempeño de una acción de control no excesiva. Esto puede
apreciarse en los siguientes diagramas.
Imagen 5.6: Rechazo a perturbaciones del sistema a lazo cerrado con un controlador PI.
Página 46
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Imagen 5.7: Acción de control del sistema a lazo cerrado con un controlador PI.
Página 47
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Imagen 5.8: Comparación entre el modelo de la planta y el sistema a lazo cerrado con un controlador
PI.
Se puede apreciar que las respuestas difieren muy poco ante la presencia del
mismo controlador. A partir de este resultado se decidió utilizar el modelo del sistema
para diseñar un control por asignación de polos, para luego aplicarlo al sistema real y
observar los resultados obtenidos. Este tema se abordará en la siguiente sección del
capítulo (sección 5.3).
Página 48
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
el controlador a diseñar.
A partir de esto último, en la siguiente sección se explica como fue el desarrollo y
la elección del controlador utilizado en el sistema.
controlador deberá tener necesariamente, para llevar a cabo la asignación de polos, dos
polos y dos ceros (para que la ecuación diofantina tenga solución11). Es decir, el
controlador debe ser de la siguiente forma:
11
Control System Desing, [Graham C. Goodwin, Stefan. F. Graebe and Mario. E. Salgado.]
Página 49
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Donde son los polos del sistema a lazo cerrado. Desarrollando la ecuación
anterior se obtiene el siguiente sistema de cuatro ecuaciones con cuatro incógnitas:
+ +( + )+ − + −( + ) +
(5.1)
Con:
12
Computer Controlled System, Theory and Desing,[ Karl J. Åström, Björn Wittenmark]
Página 50
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Con cuatro polos en 0.89, un cero en “cero”, un cero en 0.925 y un cero en 0.9.
Página 51
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 52
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Resultados en simulación.
Imagen 5.11: Resultados del modelo del sistema a lazo cerrado con un controlador diseñado por
asignación de polos.
Página 53
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Imagen 5.12: Resultados del sistema a lazo cerrado con un controlador diseñado por asignación de
polos.
Se puede observar, que los resultados cumplen con los requerimientos de tiempo
de establecimiento y sobre valor. Faltaría corroborar por último el rechazo de
perturbaciones y el desempeño de una acción de control no excesiva. Esto último puede
apreciarse en los siguientes diagramas.
Página 54
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Imagen 5.13: Rechazo a perturbaciones del sistema a lazo cerrado con un controlador diseñado por
asignación de polos.
5.7: Acción de control del sistema a lazo cerrado con un controlador diseñado por asignación de polos.
Página 55
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Imagen 5.8: Comparación entre el modelo de la planta y el sistema a lazo cerrado con un controlador
diseñado por asignación de polos.
Página 56
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 57
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Considerando además que tanto las etapas de los drivers de sensado y actuación,
como el control implementado fueron realizadas en Matlab, se optó por la utilización de
dicha herramienta, favoreciendo la integración de las diferentes etapas del proyecto.
Para el desarrollo de la interfaz de usuario, desde GUIDE, es necesario crear los
elementos que formarán parte de esta y definir qué acciones deberá realizar cada uno.
Con la utilización de este entorno se genera un archivo “.fig”, el cual contiene los
objetos de la interfaz, y un archivo “.m”, donde se escribe el algoritmo de las tareas que
realizan estos.
A continuación se hace referencia de los distintos objetos que fueron creados para
el desarrollo de la GUI:
StaticText: Es un texto estático (etiqueta) que cumple la función de mostrar
una cadena de caracteres.
EditText: Caja de texto que permite ingresar y editar texto.
Pushbutton: Botón que permite invocar a una acción inmediatamente
luego de ser presionado.
Slider: El Slider es una barra de desplazamiento que se utiliza para
representar e ingresar un determinado rango de valores.
Frame: Genera un espacio donde se pueden almacenar un conjunto de
objetos.
Axes: Es el objeto utilizado para mostrar imágenes y gráficos. Crea un
espacio donde estas figuras pueden ser representadas.
CheckBox: Caja que indica el estado de una opción.
ListBox: Lista deslizable que permite seleccionar entre varias opciones.
Popupmenu: Es un menú de opciones situado en la parte superior de la
pantalla.
Página 58
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 59
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Vincular a Simulink…
Dentro del menú de opciones, una de ellas es la llamada Vincular a Simulink…
Esta, al ejecutarse abre la ventana “open” de Matlab y guarda localmente el directorio y el
nombre del archivo seleccionado. Luego procede abriendo el archivo simulink elegido.
Este puede ser tanto el que contiene el controlador PID, como el diseñado por asignación
de polos. Entonces, dependiendo de cuál de los dos archivos se vincule, se ejecutará uno
u otro control.
Una vez realizadas estas tareas, se habilita el botón (botón verde) que permite
arrancar el sistema. Dicho botón, estaba inicialmente deshabilitado a causa de no
encontrarse vinculado ningún tipo de archivo.
Ploteo
La última opción que presenta el menú es la del ploteo del comportamiento del
sistema. Este evento, ejecuta una serie de comandos que toman las variables de caudal y
actuación implementadas en el sistema, y las muestra un gráfico ubicado en la parte
inferior de la pantalla. Estas variables son escritas desde Simulink (una vez finalizado el
proceso) en el Worckspace y tomadas desde allí por la interfaz HMI. Además de estas dos,
se captura desde el Worckspace la variable que indica la referencia que se pretende
seguir, para luego graficarla junto al comportamiento del sistema.
En cuanto al gráfico en sí, este posee una escala en segundos sobre el eje de las
absisas y una escala en Kg/s en el eje de ordenadas. Vale aclarar que, la señal de
actuación, se encuentra graficada fuera de escala. Es decir, esta es dibujada en una
escala 1:20 respecto a la real.
Página 60
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Estado Evento
Dosificando… Ninguno
Página 61
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 62
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 63
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
13
Ver capítulo 5.3 donde se explica en forma detallada el método
Página 64
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
La pantalla se divide en dos grupos, por un lado el ajuste del período de la señal
de actuación, y por otro los ajustes de la ventana de tiempo en que el encoder cuenta los
pulsos.
Estos parámetros, al igual que en la pantalla “Parámetros avanzados de Control”
se encuentran guardados en un archivo de extensión „.mat‟ el cual, al iniciar la misma,
es cargado y mostrado en pantalla a través de los controles slider y static text.
La implementación de dichos ajustes se lleva a cabo mediante la modificación de
los controles slider que se ven en pantalla.
El primer grupo (período de la señal de actuación), posee además dos Static Text
que indican cual es la frecuencia a la cual estaría trabajando el motor y la resolución de
la señal PWM ajustada.
Los cambios realizados, afectan directamente las variables del Workspace.
Utilizando la opción guardar que se observa en la figura, se guardaran los ajustes
realizados para futuras sesiones del sistema.
Cabe mencionar que para utilizar el sistema con los parámetros avanzados
ingresados en las pantallas de ajuste, debe seleccionarse el modo avanzado en la pantalla
principal.
Página 65
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
6.2.4 Información
Esta pantalla es solo a título informativo. Se pretende informar al operario sobre la
respuesta al escalón y la respuesta en frecuencia del sistema que va a utilizar. Para que
de esta manera, el mismo, pueda realizar un mejor ajuste de los parámetros de los
controladores que desee implementar.
Página 66
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 67
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
7. Conclusiones
A partir de modificaciones y rediseños sobre los sistemas mecánicos y electrónicos
(capítulo 3) en el caudalímetro ya existente, se obtuvo una mejora en la precisión del
mismo. Lo cual fue de mera importancia para la implementación de los lazos de control e
identificación del sistema real.
Por otro lado, el uso de herramientas de software en tiempo real, permitió realizar la
adquisición de datos para la identificación (capítulo 4) del sistema. Este modelado, al
comportarse de manera casi idéntica al sistema real, permitió un mejor estudio de la
dinámica de la planta, y un mejor diseño y ajuste de los controladores implementados
(capítulo 5).
Recordando todos los objetivos propuestos (capítulo 2) en el proyecto, podemos
observar que estos fueron cumplidos en su totalidad con un desempeño totalmente
satisfactorio, lo cual puede observarse con detalle en el capítulo 5 (Sección Resultados) de
esta obra.
Por otra parte, se lograron los requerimientos de la dinámica a lazo cerrado del
sistema expresados en el capítulo 5 (requerimientos de control). Para lograr estos objetivos
en cuanto a la respuesta del sistema a lazo cerrado, fue de vital importancia la obtención
del modelo matemático del sistema real. Ya que a partir de este se pudieron definir
criterios a la hora de ajustar las ganancias del controlador PI implementado. Como así
también, fue indispensable para llevar a cabo el diseño del controlador por asignación de
polos.
Si comparamos los resultados obtenidos por ambos controladores (sección 5.2.3 y
5.3.3), se puede observar que, aunque ambos cumplan con estos objetivos, el diseño
implementado a partir de una asignación de polos presenta un tiempo de establecimiento
menor a la dinámica obtenida con un controlador PI. Luego, las demás características a
contemplar son similares en un caso respecto al otro.
El comando, supervisión y ajuste del sistema se realiza desde un HMI implementado
a partir de la herramienta Guide de Matlab (capítulo 6), tal como se presenta en los
objetivos de esta obra.
Respecto al rango de trabajo del sistema, este va desde a
cumpliendo con todos los objetivos de control planteados en el capítulo 5. El sistema
responde a caudales menores a y mayores a sobre exigiendo su
desempeño. Si el caudal de salida se elige mayor a , ante una perturbación en la
planta el actuador podría responder de manera no satisfactoria dependiendo de la
magnitud de la perturbación. Por otro lado, por debajo de los (hasta los )
Página 68
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 69
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
8. Bibliografía
[1] Graham C. Goodwin, Stefan. F. Graebe and Mario. E. Salgado. “Control System
Desing”. Prentice Hall International, 2001.
[2] Katsuhiko Ogata. “Ingeniería de control moderna”. 3ª Ed. Prentice Hall, 1998.
[4] Antonio Creus Solé. “Instrumentación industrial”. 5ª Ed. Marcombo Boixareu editires.
[13] Gene F. Franklin, J.David Powell, Michael Worlanan. “Digital Control of Dynamic
System”
[14] Karl J. Åström, Björn Wittenmark. “Computer Controlled System Theory and Desing”,
3ª Ed. Prentice Hall, 1997.
Página 70
Anexo 0: Herramientas de software y PC
Las herramientas informáticas indispensables para la realización del proyecto son
una PC con el software de Matlab 6.5, Simulink 5.0 y sus respectivos toolbox.
Las herramientas de Matlab/Simulink utilizadas fueron el toolbox Real Time
Windows Target y el Real Time Workshop, los cuales permiten trabajar en tiempo real.
Por otro lado para poder ejecutar algoritmos en tiempo real, la PC debe poseer un
compilador de código en C, por ejemplo Watcom 11 o Visual Basic compiler. Ya que es
necesario convertir el diagrama de bloques de Simulink en un código C, y por otro lado
también es necesario compilar las s-funcion escritas también en lenguaje C.
Por último también se necesita tener instalada la herramienta Guide de Matlab, la
cual permite crear Guis (Interfaces gráficas de usuario).
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Anexo 1: S_functions
Una S-functión es un bloque de Simulink escrito en lenguaje C, C + + o Fortran. En
este caso como se trabaja en tiempo real, las s-function fueron escritas en C. Estas
permiten generar un bloque a medida, en Simulink, con la posibilidad de trabajar en
tiempo real, a partir de las herramientas Real Time Workshop y Real Time Windows
Target.
Es por esto que se generaron las siguientes s-function, a modo de driver, con el fin de
cubrir los requerimientos de medición y actuación del sistema.
#include "simstruc.h"
#include <conio.h> //para comandar el puerto paralelo
//*************************************************************************************************
// Inicialización de entradas y salidas (2 entradas y 1 salida)
//*************************************************************************************************
static void mdlInitializeSizes(SimStruct *S)
{
ssSetNumSFcnParams(S, 0);
ssSetNumInputPorts(S, 2);
ssSetInputPortWidth(S, 0, 1);
ssSetInputPortWidth(S, 1, 1);
ssSetInputPortDirectFeedThrough(S, 0, 1);
ssSetInputPortDirectFeedThrough(S, 1, 1);
ssSetNumOutputPorts(S,1);
ssSetOutputPortWidth(S, 0, 1);
ssSetNumSampleTimes(S, 1);
ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);
}
//*************************************************************************************************
//*************************************************************************************************
//*************************************************************************************************
// Seteo de tiempo de muestreo y offset
//*************************************************************************************************
static void mdlInitializeSampleTimes(SimStruct *S)
{
ssSetSampleTime(S, 0, 0.001);//Tiempo de muestreo de 1 milisegundo
ssSetOffsetTime(S, 0, 0.0);//Tiempo de offset cero segundos
}
//*************************************************************************************************
//*************************************************************************************************
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
//*************************************************************************************************
// Inicio del algoritmo
//*************************************************************************************************
static void mdlOutputs(SimStruct *S, int_T tid)
{
real_T *y0 = ssGetOutputPortRealSignal(S,0);
InputRealPtrsType uPtrs0 = ssGetInputPortRealSignalPtrs(S,0);
InputRealPtrsType uPtrs1 = ssGetInputPortRealSignalPtrs(S,1);
T=(*uPtrs0[0]);//Base de tiempo (es el tiempo que transcurre cada vez que se llama a la
funcion)
ventana=(*uPtrs1[0]);//Transcurso de tiempo en el cual se cuentan los pulsos
/* Detecto flancos*/
if(Entrada==64 && EntradaAnterior==0)//Me fijo si el sensor óptico cambio de estado
{
Pulsos=Pulsos+1;//Si el sensor óptico cambio de estado cuento un pulso
}
//*************************************************************************************************
//Si el tiempo transcurrido es igual a la ventana de tiempo, calculo la velocidad
instantánea y hago un promedio móvil
//*************************************************************************************************
promedio_3=0;
for (i=0;i<=(cant_muestras-2);i++)
{
prom_3[i] = prom_3[i+1];//Desplazo las mediciones anteriores
promedio_3 = promedio_3 + prom_3[i];//Sumo las mediciones anteriores
}
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
prom_3[(cant_muestras-1)]=Pulsos*0.141372/(Contador*149);//Calculo la
medición actual
promedio_3=(promedio_3+prom_3[(cant_muestras-1)])/cant_muestras;//Calculo
el promedio
*y0=promedio_3;//Muestro la velocidad en la salida 0
//*************************************************************************************************
//*************************************************************************************************
Contador=0;//Reseteo el tiempo transcurrido
Pulsos=0;//Reseteo la cantidad de pulsos
}
//*************************************************************************************************
// Inicialización de entradas y salidas (1 entrada y 1 salida)
//*************************************************************************************************
static void mdlInitializeSizes(SimStruct *S)
{
ssSetNumSFcnParams(S, 0);
ssSetNumInputPorts(S, 1);
ssSetInputPortWidth(S, 0, 1);
ssSetInputPortDirectFeedThrough(S, 0, 1);
ssSetNumOutputPorts(S,1);
ssSetOutputPortWidth(S, 0, 1);
ssSetNumSampleTimes(S, 1);
ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);
}
//*************************************************************************************************
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
//*************************************************************************************************
//*************************************************************************************************
// Seteo de tiempo de muestreo y offset
//*************************************************************************************************
static void mdlInitializeSampleTimes(SimStruct *S)
{
ssSetSampleTime(S, 0, 0.01);//Tiempo de muestreo 10 milisegundos
ssSetOffsetTime(S, 0, 0.0);//Tiempo de offset cero segundos
}
//*************************************************************************************************
//*************************************************************************************************
//*************************************************************************************************
// Inicio del algoritmo
//*************************************************************************************************
static void mdlOutputs(SimStruct *S, int_T tid)
{
real_T *y0 = ssGetOutputPortRealSignal(S,0);
InputRealPtrsType uPtrs0 = ssGetInputPortRealSignalPtrs(S,0);
real_T caudal;
int i;
static int cont;
static real_T peso_total;
//*************************************************************************************************
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
ssSetNumSampleTimes(S, 1);
ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);
}
//*************************************************************************************************
//*************************************************************************************************
//*************************************************************************************************
// Seteo de tiempo de muestreo y offset
//*************************************************************************************************
static void mdlInitializeSampleTimes(SimStruct *S)
{
ssSetSampleTime(S, 0, 0.01);//Tiempo de muestreo 10 milisegundos
ssSetOffsetTime(S, 0, 0.0);//Tiempo de offset cero segundos
}
//*************************************************************************************************
//*************************************************************************************************
//*************************************************************************************************
// Inicio del algoritmo
//*************************************************************************************************
static void mdlOutputs(SimStruct *S, int_T tid)
{
real_T *y0 = ssGetOutputPortRealSignal(S,0);
int i=0;
int j=0;
int a=0;
int cant_muestras=MUESTRAS;
static int condicion=0;
static int contador=0;
static int entrada=0;
static int peso=0;
static int entrada_2=0;
static int peso_2=0;
static int prom_1[MUESTRAS];//ENTRE CORCHETES VA LA CANTIDAD DE
MUESTRAS QUE QUIERO DE PROMEDIO MOVIL
static int prom_2[MUESTRAS];//ENTRE CORCHETES VA LA CANTIDAD DE
MUESTRAS QUE QUIERO DE PROMEDIO MOVIL
static int promedio_1;
static int promedio_2;
cant_muestras=MUESTRAS;
switch (condicion)
{
case 0:
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
{
outp(PORT_OUT,((inp(PORT_OUT))&(0xFE))); //pongo el bit 6 del CAD en 0 y el
conversor AD comienza la conversion.
condicion=1;
}
break;
case 1:
{
outp(PORT_OUT,((inp(PORT_OUT))|(0x01))); //pongo el bit 6 del CAD en 1 (ya
convirtió).
condicion=2;
}
break;
case 2:
{
outp(PORT_OUT,((inp(PORT_OUT))&(0xFD))); //envío un 0 en el bit 0 del shift
register(indico que cargo datos)
condicion=3;
}
break;
case 3:
{
outp(PORT_OUT,((inp(PORT_OUT))|(0x02))); //envío un 1 en el bit 0 del shift
register(indico que cargo datos)
condicion=4;
}
break;
case 4:
{
outp(PORT_OUT,(((inp(PORT_OUT))&(0xEF))|(0x02))); //envío un 0 en el bit 2 del
shift register y envío un 1 en el bit 0 del shift register (indico que estoy tomando datos)
condicion=5;
}
break;
case 5:
{
outp(PORT_OUT,(((inp(PORT_OUT))) |(0x10))); //envío un 1 en el bit 2 del shift
register y envio un 1 en el bit 0 del shift register(indico que estoy tomando datos)
entrada=(int)(inp(PORT_IN)&(0x08)); //Leo el dato enviado por el shift register
numero 1
peso=(peso << 1) + (entrada/8); //desplazo un bit todo hacia la izquierda y le agrego
el siguiente bit
//*************************************************************************************************
//*************************************************************************************************
// HAGO UN PROMEDIO MOVIL con los datos obtenidos a través de primer shift
register
//*************************************************************************************************
//*************************************************************************************************
promedio_1=0;
for (i=0;i<=(cant_muestras-2);i++)
{prom_1[i] = prom_1[i+1];//Desplazo los datos anteriores
promedio_1 = promedio_1 + prom_1[i];//Sumo los datos anteriores
}
prom_1[(cant_muestras-1)]=5000-(((peso)*5000)/255);//Calculo el ultimo valor
recibido
promedio_1=(promedio_1+prom_1[(cant_muestras-1)])/cant_muestras;//Realizo el
promedio
//*************************************************************************************************
//*************************************************************************************************
// HAGO UN PROMEDIO MOVIL con los datos obtenidos a través del segundo shift
register
//*************************************************************************************************
//*************************************************************************************************
i=0;
promedio_2=0;
for (i=0;i<=(cant_muestras-2);i++)
{prom_2[i] = prom_2[i+1];//Desplazo los datos anteriores
promedio_2 = promedio_2 + prom_2[i];//Sumo los datos anteriores
}
prom_2[(cant_muestras-1)]=5000-(((peso_2)*5000)/255);//Calculo el ultimo valor
recibido
promedio_2=(promedio_2+prom_2[cant_muestras-1])/cant_muestras;//Realizo el
promedio
*y0=promedio_2+promedio_1;//Muestro el valor recibido (en milivolts) en la salida
0
//*************************************************************************************************
//*************************************************************************************************
// Inicializo valores
//*************************************************************************************************
//*************************************************************************************************
peso=0;
entrada=0;
peso_2=0;
entrada_2=0;
//*************************************************************************************************
//*************************************************************************************************
}
else//Si la cantidad de datos recibidos es menor a 8 vuelvo al case 4
{
condicion=4;
}
}
break;
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
}
}
//*************************************************************************************************
// Inicialización de entradas y salidas (5 entradas y 1 salida)
//*************************************************************************************************
static void mdlInitializeSizes(SimStruct *S)
{
ssSetNumSFcnParams(S, 0);
ssSetNumInputPorts(S, 5);
ssSetInputPortWidth(S, 0, 1);
ssSetInputPortWidth(S, 1, 1);
ssSetInputPortWidth(S, 2, 1);
ssSetInputPortWidth(S, 3, 1);
ssSetInputPortWidth(S, 4, 1);
ssSetInputPortDirectFeedThrough(S, 0, 1);
ssSetInputPortDirectFeedThrough(S, 1, 1);
ssSetInputPortDirectFeedThrough(S, 2, 1);
ssSetInputPortDirectFeedThrough(S, 3, 1);
ssSetInputPortDirectFeedThrough(S, 4, 1);
ssSetNumOutputPorts(S,1);
ssSetOutputPortWidth(S, 0, 1);
ssSetNumSampleTimes(S, 1);
ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);
}
//*************************************************************************************************
//*************************************************************************************************
//*************************************************************************************************
// Seteo de tiempo de muestreo y offset
//*************************************************************************************************
static void mdlInitializeSampleTimes(SimStruct *S)
{
ssSetSampleTime(S, 0, 0.0001);//Tiempo de muestreo 100 microsegundos
ssSetOffsetTime(S, 0, 0.0);//Tiempo de offset cero segundos
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
}
//*************************************************************************************************
//*************************************************************************************************
//*************************************************************************************************
// Inicio del algoritmo
//*************************************************************************************************
static void mdlOutputs(SimStruct *S, int_T tid)
{
real_T *y0 = ssGetOutputPortRealSignal(S,0);
InputRealPtrsType uPtrs0 = ssGetInputPortRealSignalPtrs(S,0);
InputRealPtrsType uPtrs1 = ssGetInputPortRealSignalPtrs(S,1);
InputRealPtrsType uPtrs2 = ssGetInputPortRealSignalPtrs(S,2);
InputRealPtrsType uPtrs3 = ssGetInputPortRealSignalPtrs(S,3);
InputRealPtrsType uPtrs4 = ssGetInputPortRealSignalPtrs(S,4);
T=(*uPtrs0[0]);//Periodo
peso=(*uPtrs2[0]);//Peso acumulado en la salida del sistema
peso_requerido=(*uPtrs3[0]);//Peso requerido
parada_logica=(*uPtrs4[0]);//parada_logica
//*************************************************************************************************
// Genero una señal triangular
//*************************************************************************************************
if(Triangular>=T)
{
Triangular=0;
}
else
{
Triangular=Triangular+1;
}
//*************************************************************************************************
//*************************************************************************************************
if (PWM==0)
{
outp(PORT_OUT,((inp(PORT_OUT))&(0xBF))); //Cuando PWM=0 escribo
un cero en el puerto paralelo
}
else
{
outp(PORT_OUT,((inp(PORT_OUT))|(0x40))); //Cuando PWM=1 escribo
un uno en el puerto paralelo
}
}
}
#ifdef MATLAB_MEX_FILE
#include "simulink.c"
#else
#include "cg_sfun.h"
#endif
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @interfaz_OpeningFcn, ...
'gui_OutputFcn', @interfaz_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin & isstr(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
assignin('base','p',30);
assignin('base','in',30);
assignin('base','d',0);
assignin('base','s0',42.889);
assignin('base','s1',-78.272);
assignin('base','s2',35.705);
assignin('base','r',-0.92951);
assignin ( 'base', 'motivo',0) ;
assignin ( 'base', 'caudal_real',0) ;
assignin ( 'base', 'act',0) ;
global var;
var.tmr=timer('TimerFcn',{@TimerCallback,hObject,handles},'Period',2.1,'Execution
Mode','fixedspacing');
axes(handles.axes4);
set(handles.axes4,'YColor',[0.2 0.4 0.7]);
set(handles.axes4,'XColor',[0.2 0.4 0.7]);
set(handles.axes4,'Color',[0.3 0.3 0.3]);
title('Comportamiento de la Planta','Color',[0.2 0.4 0.7]);
xlabel('Segundos');
ylabel('Caudal');
handles.output = hObject;
guidata(hObject, handles);
% -----Aquí se programa el evento vincular del menú para abrir un archivo .mdl----
function vincular_Callback(hObject, eventdata, handles)
[filename,path]=uigetfile({'*.mdl'});%Cargo el nombre del archivo y el directorio
global T
B='';
for i=1:(length(filename)-4);
B=strcat(B,filename(i));%Concatenamos el nombre del archivo con el directorio
end
T=strcat(B,'/parada_logica');%Concateno el archivo .mdl con el bloque al cual
deseo cambiarle el parámetro
open(filename);%Abrimos el archivo
set(handles.pushbutton2,'enable','on');%Habilito el botón de play
% --------------------------------------------------------------------------------------------------
peso_f=str2double(get(handles.edit2,'String'));
if isnan(peso_f)% Comprobamos que el dato ingresado en el edittext se correcto
errordlg('El peso final ingresado debe ser numerico','ERROR');%Si el dato es
incorrecto se muestra un mensaje de error
set(handles.edit2,'String',0);%Si el dato es incorrecto asigno un valor 0, por
default, al edit text
peso_f=0;%Si el dato es incorrecto asigno un valor 0, por default, al workspace
else
assignin ( 'base', 'peso_final', peso_f) ;%Si el dato es correcto lo asignamos al
workspace
end
%------se asignan como variables de workspace las variables cargadas del archivo
.mat----------
clc
assignin ( 'base', 'p',p) ;
assignin ( 'base', 'in',in) ;
assignin ( 'base', 'd',d) ;
assignin ( 'base', 's0',s0) ;
assignin ( 'base', 's1',s1) ;
assignin ( 'base', 's2',s2) ;
assignin ( 'base', 'r',r) ;
assignin ( 'base', 'periodo',periodo) ;
assignin ( 'base', 'ventana',ventana) ;
end
global var;
start(var.tmr)%Arranco el Timer
set_param(gcs,'SimulationCommand','connect');%Conecto al target
set_param(gcs,'SimulationCommand','Start');%Inicio el proceso
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
%------------Evento Timer--------------------------------------------------------
function TimerCallback(obj,event,hObject,handles)
global var;
motivo=evalin('base','motivo');
end
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
global T
set_param(T,'value','1');%Seteo el valor del bloque en simulink que me detiene el
proceso
%----Seteo los static text para mostrar la información del evento stop-----------------
set(handles.estado,'String','Sistema Detenido','backgroundcolor','yellow')
set(handles.evento,'visible','on','String','Dosificacion
Incompleta','backgroundcolor',[1 0.502 0])
global var
stop(var.tmr)%Detenemos el Timer
set_param(gcs,'SimulationCommand','Stop');%Detenemos el proceso
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
global var;
stop(var.tmr);%Cuando se cierra la pantalla detengo el Timer
delete(var.tmr);%Borro el Timer
clc;%Limpio la pantalla
clear all;%Borro las variables
plot(t1,ones(length(caudal_real),1)*(evalin('base','caudal')),'w-.');% Ploteo la
referencia
plot(t1,((evalin('base','act'))/20),'g--');%Ploteo la señal de actuación
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
set(handles.slider1,'Value',p);
set(handles.text4,'String',p);
set(handles.slider3,'Value',in);
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
set(handles.text14,'String',in);
set(handles.slider4,'Value',d);
set(handles.text16,'String',d);
set(handles.slider6,'Value',w);
set(handles.text20,'String',w);
set(handles.slider5,'Value',epsi);
set(handles.text18,'String',epsi);
handles.output = hObject;
guidata(hObject, handles);
p=get(handles.slider1,'Value');
in=get(handles.slider3,'Value');
d=get(handles.slider4,'Value');
epsi=get(handles.slider5,'Value');
w=get(handles.slider6,'Value');
omega=w;
a=1;
p1=-2*exp(-epsi*omega*0.1)*cos(omega*0.1*sqrt(1-(epsi^2)));
p2=exp(-epsi*2*omega*0.1);
b=conv([1 -exp(-a*omega*0.1)],[1 -exp(-a*omega*0.1)]);
polinomio=conv(b,[1 p1 p2]);
a=polinomio(2);
b=polinomio(3);
c=polinomio(4);
D=polinomio(5);
A=[1 0.000455 0 0;-2.65 0 0.000455 0;2.325 0 0 0.000455;-0.675 0 0 0];
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
save('Modo_Avanzado.mat','p','in','d','s0','s1','s2','r','ventana','periodo','epsi','w')%Se
sobreescribe el archivo modo avanzado.mat
warndlg('Recuerde que para trabajar con "Modo Avanzado" debe seleccionarlo en la
pantalla principal','Sus Datos se han guardado correctamenete.Gracias');
close(control)%Se cierra la pantalla control
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
set(handles.slider6,'Enable','on')
else
set(handles.frame2,'Enable','off')
set(handles.slider5,'Enable','off')
set(handles.slider6,'Enable','off')
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
handles.output = hObject;
guidata(hObject, handles);
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
% -Aquí se programa el evento del slider vinculado con el periodo de la señal PWM-
function slider1_Callback(hObject, eventdata, handles)
periodo=(get(handles.slider1,'Value'));%Se toma el valor del slider
periodo=0.0001*periodo;%Se calcula el periodo
frecuencia=round(1/periodo);%Se calcula la frecuencia
set(handles.text5,'String',num2str(periodo));%Se muestra en el edit text el periodo
set(handles.text7,'String',num2str(frecuencia));%Se muestra en el edit text la
frecuencia
set(handles.text9,'String',get(handles.slider1,'Value'));%Se muestra en el edit text
la resolución
usewhitebg = 1;
if usewhitebg
set(hObject,'BackgroundColor',[.9 .9 .9]);
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
% ----Aquí se programa el evento del slider vinculado con la ventana del encoder---
function slider3_Callback(hObject, eventdata, handles)
set(handles.text13,'String',get(handles.slider3,'Value'));%Se muestra el valor de la
ventana en milisegundos
save('Modo_Avanzado.mat','p','in','d','s0','s1','s2','r','ventana','periodo','epsi','w')%So
breescribo el archivo modo_avanzado.mat con los nuevos valores
warndlg('Recuerde que para trabajar con "Modo Avanzado" debe seleccionarlo en la
pantalla principal','Sus Datos se han guardado correctamente.Gracias');
close(planta)%se cierra la pantalla planta
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @informacion_OpeningFcn, ...
'gui_OutputFcn', @informacion_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin & isstr(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
axis off;
set(handles.checkbox1,'value',1)
set(handles.checkbox2,'value',0)
handles.output = hObject;
guidata(hObject, handles);
5 mA 5A
Etapa
Interfaz
Se diseño esta etapa con el fin de conectar de forma práctica las señales de
sensado y actuación de la PC con el sistema. Dicha etapa posee Borneras para una
fácil conexión y además indicadores de tipo Led de bajo consumo en paralelo a fin de
indicar los estados de las distintas señales.
A continuación se muestra un esquema de los pines de conexión de la ficha DB25
asociados con los de la bornera de la interfaz.
Encoder incremental
Esta etapa se encarga de detectar los mínimos cambios en la velocidad. Se utilizó
un sensor CR560, de tipo ranurado en donde el diodo emisor y el fototransistor
detector se encuentran opuestos. Al avanzar la cinta, gira el disco del encoder
solidario a esta, e interrumpe la recepción del fototransistor.
El circuito emisor consta de una resistencia de 470 Ohm en serie con el fotodiodo
emisor. Esta resistencia es alimentada con una tensión continua de 5Volt con el fin
de hacer circular una corriente de 10mA necesaria para que se produzca la emisión
del diodo.
Por otro lado el receptor, conformado por un fototransistor, es conectado en serie
con una resistencia de 10 KOhm (circuito receptor). Esto fue realizado para que
cuando el receptor sea estimulado, toda la tensión de alimentación caiga sobre
la resistencia obteniendo un cero lógico en el colector del transistor. Por otro lado
cuando el receptor no es excitado, no circula corriente por el transistor y por ende se
consigue un 1 lógico (5Volt) en el colector del mismo.
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Etapa
Tensión Diferencial 0 a 5Volt
Acondicionamiento
2mV/V de Señal
Existen diferentes etapas dentro del circuito, la primera es aquella que se encarga
de brindarle la alimentación a la celda de carga.
Alimentación de la celda de carga: El diodo LM336-Z2.5 (D1) es quien regula la
tensión de referencia de 2.5V, que se introduce al pin12 del amplificador operacional
TL084 (U1:D), a la salida del mismo (pin14) tenemos un transistor NPN BC548 (Q1)
conectado como seguidor de emisor el cual oficia de driver para proporcionar una
buena corriente a la regulación. Mediante el potenciómetro 1Kohm (RV3) puede
regularse la tensión que regula al diodo y por ende aquella que alimentará la celda.
Señal de Offset: Desde el emisor del transistor Q1 y por medio de 2 resistencias de
10K se consigue un divisor de tensión que divide a la mitad la tensión de dicho emisor
y esta es la tensión que se introduce al pin 13 del OA U1:D para que el mismo quede
configurado como buffer o seguidor de tensión, con una ganancia de 2.
Con esa tensión de 5V muy estable y regulada se consigue en el pin 7 del OA U1:C
una tensión de referencia de -5V haciendo que el mismo actué como amplificador
inversor de ganancia unitaria.
Y con esas dos tensiones (5V y -5V) se atacan las resistencias en los extremos del
preset OFFSET, por lo tanto esas resistencias están alimentadas de 5V y -5V
respectivamente.
Amplificación Diferencial: Los amplificadores operacionales (OA) OP07 (U2,U3 y U4)
conforman un clásico amplificador diferencial como los de Instrumentación solo que
este utiliza OA de bajo costo OP07 con ganancia unidad (al cual se le regula el offset
por medio del pin 8 del TL084) con sus respectivos amplificadores de entrada con
ganancia de 200 a 1000 regulable por medio del preset RV2 y por un sencillo
seguidor de tensión o buffer que es el encargado de otorgar la baja impedancia a la
salida.
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Placa CAD
El objetivo de esta placa es convertir una señal analógica en una señal digital serie.
Etapa 00110010
Anexo 5
Hoja de datos
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Por otro lado, también se ofrece un costo estimativo del proyecto total. Es decir el
precio (aproximado) que debería invertirse para desarrollar el proyecto por completo, lo
cual puede observarse en la siguiente tabla.
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
14
Datos estimados
Anexo 7: Manual de usuario
Indice
A-Implementación o Verificación de Conexiones y Puesta en marcha .... 3
B-Operación del Sistema ............................................................................... 3
Vincular a Simulink ................................................................................ 4
Información............................................................................................ 4
Ajustes de planta .................................................................................... 5
Ajustes de Control .................................................................................. 6
Ploteo ..................................................................................................... 7
C- Calibración del sistema ..................................................................... 8
Calibración Celdas de carga .................................................................... 8
Página 2
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Página 3
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Vincular a Simulink
Al presionar este botón se desplegará una ventana de “Open” que permitirá abrir un
archivo Simulink. Necesariamente debe vincularse un archivo Simulink al sistema, caso
contrario el sistema no responderá. Este archivo, puede ser el que utiliza el controlador
PI, o bien el que implementa el controlador diseñado por asignación de polos.
Una vez cargado el archivo, se habilita el botón que permite arrancar el proceso
(botón verde). El cual, estaba deshabilitado a causa de no encontrarse vinculado ningún
archivo.
Información
Al seleccionar esta opción, se abre una nueva pantalla (la pantalla Información). La
finalidad de esta pantalla es otorgar información sobre la dinámica del sistema al usuario.
Ofrece la posibilidad de apreciar tanto la respuesta al escalón del sistema como la
respuesta en frecuencia del mismo.
A continuación se puede observar la pantalla Información
Página 4
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Ajustes de Planta
Al seleccionar este evento, se abre una nueva pantalla (la pantalla Ajustes Avanzados
de Planta). La finalidad de esta pantalla es ofrecer la posibilidad al usuario de setear
parámetros de calibración avanzados, para luego utilizarlos en el proceso.
A continuación se presenta dicha pantalla y una explicación de cada uno de sus
comandos.
A partir de las dos barras de desplazamiento se puede ajustar, por un lado, el período
de la señal de actuación, el cual está directamente ligado a la frecuencia y a la resolución
de la señal PWM. Por otro lado, la barra de la parte inferior de la pantalla permite
modificar la ventana de tiempo en que el encoder contabiliza los pulsos para la medición
de velocidad.
Una vez realizados los cambios requeridos, si estos se desean utilizar, deben
guardarse. Esto se logra presionando el botón “Guardar” ubicado en la parte inferior de la
pantalla. Al presionar el botón, se salvarán los cambios, y se informará que en caso de
querer utilizarlos deberá seleccionarse un modo de uso avanzado en la pantalla principal.
Página 5
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Por último si no se desean guardar los cambios, solo se debe presionar el botón
“Cancelar”.
Ajustes de Control
Al seleccionar este evento, se abre una nueva pantalla (la pantalla Ajustes Avanzados
de Control). La finalidad de esta pantalla es ofrecer la posibilidad al usuario de diseñar y
ajustar controladores para luego utilizarlos en el proceso.
A continuación se presenta dicha pantalla y una explicación de cada uno de sus
comandos.
Página 6
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
Ploteo
La última opción que presenta el menú es la del ploteo. Este evento, al ser ejecutado
mostrará en la parte inferior de la pantalla un gráfico de la respuesta del sistema en la
última puesta en marcha.
La pantalla principal posee además una imagen sobre la cual hay un frame y dos
etiquetas. Estas etiquetas son las encargadas de informar al operario sobre el estado del
sistema y los eventos ocurridos. A continuación se presenta una tabla con los diferentes y
estados que se pueden presentar en el proceso.
Página 7
Estudio, identificación y control de una planta medidora de caudal másico. UNQ
El frame posee dos botones, uno de Play y otro de Stop. Al presionar el Boton Play
(botón verde), el proceso comienza, y al oprimir el botón de stop el proceso finaliza.
Antes de presionar el botón play debe elegirse el modo de funcionamiento que se
desea. Este puede ser Normal o Avanzado, y se selecciona a partir del popuMenu que se
encuentra dentro del frame.
Por otro lado, deben elegirse los valores del peso requerido luego de cierta cantidad de
tiempo y del caudal másico al cual será entregado el peso. Estos datos se setean en los
dos editText que se encuentran también dentro del frame.
Página 8