proyecto final v 1.7

114
UNIVERSIDAD NACIONAL DE QUILMES INGENIERIA EN AUTOMATIZACION Y CONTROL INDUSTRIAL PROYECTO FIN DE CARRERA 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 Director: Ing. Diego Palmieri Fecha de presentación: 22/10/2010

Upload: matias-artazcoz

Post on 02-Jul-2015

383 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Proyecto Final v 1.7

UNIVERSIDAD NACIONAL DE QUILMES INGENIERIA EN AUTOMATIZACION Y CONTROL INDUSTRIAL

PROYECTO FIN DE CARRERA

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

Director: Ing. Diego Palmieri

Fecha de presentación: 22/10/2010

Page 2: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 2

Este informe, realizado por Manchione Pablo y Artazcoz Matías, describe el

proyecto de fin de carrera “Estudio, Identificación y Control de una planta medidora de

caudal másico”, para la carrera de Ingeniería en Automatización y Control Industrial

dependiente del Departamento de Ciencia y Tecnología de la Universidad Nacional de

Quilmes. El mismo fue realizado bajo la supervisión del profesor Ing. Diego Palmieri.

Page 3: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 3

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.

Page 4: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 4

Í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

Page 5: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 5

5.3 Diseño de un controlador por el método de asignación de polos ........... pág 48

5.3.1 Ajuste y cálculo del controlador .......................................................... pág 49

5.3.2 Resultados obtenidos .......................................................................... pág 52

5.3.3 Comparación entre el modelo de la planta y la panta real .................... pág 56

6. Interfaz gráfica Hombre – Máquina................................................. pag 57 6.1 Introducción a interfaces Hombre – Máquina ...................................... pag 57

6.1.2 Funcionalidad del HMI. ...................................................................... Pag 57

6.2 Desarrollo del sistema HMI. ................................................................. Pag 57

6.2.1 Pantalla principal ............................................................................... Pag 58

6.2.2 Ajustes de Parámetros Avanzados de control ....................................... Pag 63

6.2.3 Ajuste de Parámetros Avanzados de la Planta ...................................... Pag 64

6.2.4 Información ........................................................................................ Pag 66

6.3 Transferencia de datos entre Simulink y la Interfaz gráfica HMI. ............ Pag 66

8. Conclusiones ................................................................................. Pag 68

9. Bibliografía .................................................................................... Pag 70

Anexo 0: Herramientas de software y PC

Anexo 1: S_functions

Anexo 2: Diagramas Simulink

Anexo 3: Algoritmo de la interfaz gráfica

Anexo 4: Explicación de los circuitos desarrollados

Anexo 5: Hoja de datos

Anexo 6: Costos del proyecto

Anexo 7: Manual de usuario

Page 6: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 6

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.

Imagen 1.1: Planta existente1

1 Proyecto final de ingeniería de Nicolas Lazaretti

Page 7: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 7

Estos caudalímetros poseen la ventaja de ser más robustos en cuanto a la

variedad de sólidos que pueden manipular en comparación con el resto de sistemas de

medición de flujo másico. Debido a esto, se decidió utilizar el sistema existente.

Imagen 1.2: Planta existente2

Entonces, mediante el rediseño de los sistemas de actuación y sensado del

caudalímetro, se aplicaron adecuadamente técnicas de identificación y control

implementadas con herramientas de Matlab. Por último se desarrolló una interfaz gráfica

a medida que permite el comando del sistema.

2 Proyecto final de ingeniería de Nicolas Lazaretti

Page 8: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 8

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.

Page 9: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 9

3. Descripción del proyecto

El sistema originalmente poseía una estructura metálica, la cual formaba el

esqueleto del caudalímetro. Sobre dicha estructura se encontraba montada una cinta

transportadora comandada por un motor de CA, a través de dos reducciones hechas con

poleas. Este sistema hacía circular el sólido granulado que nos proveía la tolva, que

estaba montada sobre la cinta.

Además, el caudalímetro poseía dos celdas de carga acopladas sobre dos rodillos

deslizantes en medio de la cinta, que cumplían la función de medir el peso efectivo del

producto que se encuentra circulando. Por otra parte, un encoder montado sobre uno de

los rodillos que acompaña en movimiento de la cinta permitía medir la velocidad de la

misma. Entonces a partir de estas dos variables medidas, se puede determinar

indirectamente el caudal másico entregado por el sistema. Por último poseía dos tableros

eléctricos y un variador de velocidad, los cuales comandaban y acondicionan todas las

señales del sistema.

A partir de esto, se propuso un estudio, rediseño y desarrollo mecánico en cuanto

al sistema de actuación y medición de velocidad, como así también un rediseño y

desarrollo electrónico total que permite comandar, supervisar y controlar el sistema

completo. De esta manera lo que se busca es mejorar el desempeño físico del sistema,

adaptándolo a nuestra proposición de implementar un control a través de la PC,

utilizando herramientas de Matlab 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.

Por último, para el comando del sistema en tiempo real, se diseñó una interfaz

gráfica (HMI a medida), permitiendo el mando, el control y la supervisión sobre todos los

puntos del sistema. Esto último se llevó a cabo haciendo provecho de las herramientas

que provee Matlab para el tema en cuestión.

Dichos desarrollos mecánicos y electrónicos serán explicados y detallados en las

secciones 3.1 y 3.2 de la obra. Mientras que los desarrollos de identificación, control e

interfáz gráfica serán mencionados en los capítulos 4, 5 y 6 respectivamente.

Page 10: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 10

3.1 Desarrollo Mecánico

En esta etapa se abordará tanto el tema de los dispositivos de actuación, como los

de medición de velocidad y peso.

3.1.1 Desarrollo del actuador del sistema

Para el desarrollo del actuador del sistema, se estudió el torque que se necesitaba

a plena carga y la velocidad a la que debemos y podremos trabajar. Entonces a partir de

esto, poder seleccionar y obtener un motor de corriente continua (cc) con las

especificaciones necesarias. Luego se procedió al estudio de los distintos sistemas de

acople, al montaje mecánico del mismo y su posterior testeo de funcionamiento.

Para obtener el valor del torque mínimo necesario en el eje del motor, se calculó de

manera aproximada la resistencia que este debía vencer para poder girar. Es decir, se

dedujo cual sería la cupla mínima que debía suministrar el motor.

Para llevar a cabo esto, se partió de la definición de cupla:

, donde: es la fuerza necesaria para que el motor

venza la resistencia que ofrece el dispositivo y es el brazo de palanca (es decir la

distancia desde el eje en la que se aplica la fuerza).

Imagen 3.1: Cálculo del torque requerido por el motor

Luego se llenó completamente la tolva del caudalímetro y se aplicaron distintas fuerzas

sobre uno de los rodillos de la cinta, más precisamente sobre el cual actuaría el motor. El

proceso se realizó hasta encontrar la fuerza mínima que vencía la resistencia ofrecida por

el sistema. El resultado del ensayo arrojó un valor de . Por otro lado, como la fuerza

fue aplicada a una distancia de del eje, el torque mínimo estimado que se debe

ejercer es de:

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

Page 11: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 11

de por cada vuelta completa. Por lo tanto, para que la cinta se

desplace a una velocidad de , el rodillo debía poder girar a una velocidad de:

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.

Page 12: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 12

Imagen 3.2: Sistema de actuación de la planta

3.1.2 Verificación del sistema sensor de peso

Por otro lado, se procedió en la verificación del correcto funcionamiento de las

celdas de cargas de la planta, del sistema de rodillos y del soporte acoplado a ellas.

El caudalímetro posee un sistema de rodillos con deslizamiento perpendicular al

movimiento de la cinta, de esta manera el material que se encuentra circulando por ella

genera una fuerza hacia abajo sobre los mismos. Dichos rodillos, están dispuestos en

forma de “U”3, con el fin de evitar derrames del material que se encuentra circulado por la

cinta.

Imagen 3.3: Disposición de los rodillos

3 Proyecto final de ingeniería de Nicolas Lazaretti

Page 13: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 13

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.

Imagen 3.4: Sistema sensor de peso

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

Page 14: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 14

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.

3.1.3 Desarrollo del sistema de medición de velocidad

Otro punto a tener en cuenta es el del sistema de medición de velocidad lineal de

la cinta, debido a que la medición del caudal es producto de esta velocidad y del valor

obtenido del sensor de peso. Es por ello que se estudió y ensayó el desempeño de este

dispositivo con el objetivo de poder mejorarlo y obtener mayor precisión en la medición.

El sistema de medición de velocidad existente, en el caudalímetro, poseía un

codificador incremental formado por un disco ranurado y un sensor de proximidad

fotoemisor-fotoreceptor. Dicho sensor se encontraba colocado sobre el rodillo que

acompaña el movimiento de la cinta, es decir en el cual el sistema de actuación no realiza

tracción. Esto es para evitar mediciones erróneas en la velocidad de la cinta por

deslizamiento de la misma sobre los rodillos de transmisión.

Como el disco ranurado del codificador incremental existente constaba de 8 pulsos

y el diámetro del rodillo por el cual se mueve la cinta es de , este sistema de

medición descripto con anterioridad poseía una resolución de:

Esta baja resolución, provocaba cierta oscilación en el valor de medición de

velocidad. Dicha oscilación se veía reflejada en el valor de medición de caudal, pues como

se mencionó previamente, la medición de caudal es producto de la medición de peso y

velocidad.

Por otro lado, también se corría con la desventaja de tener que actualizar la

medición de velocidad en intervalos de tiempo extremadamente grandes frente a la

actualización en la medición del peso del producto. Esto también era debido a la baja

resolución del encoder, pues si la actualización de velocidad se reducía, la cantidad de

pulsos detectados por el sensor en una ventana de tiempo también se reducía, y por ende

la oscilación en la medición aumentaba. Esta oscilación influía de manera negativa a la

hora de controlar el sistema, produciendo una respuesta a lazo cerrado totalmente

indeseada. Por último, no se justifica disponer de un sistema de medición que involucre la

medición de dos variables que son actualizadas a velocidades totalmente opuestas.

Una vez mencionados los inconvenientes y desventajas del sistema de medición

original, se plantea como solución aumentar la resolución del encoder. Para esto, se tomó

en cuenta la velocidad de cálculo del sistema de adquisición de datos, el cual será

detallado en la siguiente sección.

Page 15: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 15

En vista de estas limitaciones en la velocidad de cálculo, se resolvió como punto

máximo un codificador incremental de 150 pulsos. A partir de esto, se obtuvo una

resolución de:

De esta manera, se consiguió aumentar la resolución del encoder 19 veces

respecto al modelo que poseía el caudalímetro, lo cual es de suma importancia desde el

punto de vista de la precisión del sistema.

Para ello se tuvo que modificar y cambiar tanto el sensor óptico existente, como

su electrónica de procesamiento (lo cual también será mencionado con mayor detalle en

la siguiente sección). Por último vale aclarar que el sistema de medición fue montado

sobre el rodillo que acompaña el movimiento de la cinta transportadora, por las mismas

causas que se mencionaron con anterioridad. A continuación se puede observar la

disposición del mismo.

Imagen 3.5: Sistema sensor de velocidad

3.2 Desarrollo electrónico

En esta etapa se mencionará el estudio, rediseño y desarrollo electrónico que fue

realizado durante el transcurso del proyecto. Por lo tanto, se abordará tanto el tema del

acondicionamiento de señales de los elementos actuación, como el de todos los elementos

intervinientes en la medición.

Se realizó un desarrollo electrónico de cada una de las placas necesarias para

cumplir con estos objetivos de sensado y actuación. Previo a esto se estudió, diseñó y

simuló cada circuito a partir de un software de simulación (Proteuss). Una vez

Page 16: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 16

corroborado el diseño y el correcto desempeño de la simulación, se procedió al armado

físico de la placa en sí.

3.2.1 Desarrollo del sistema de medición de velocidad

Como se menciona previamente, en esta obra, la resolución del codificador

incremental original fue aumentada 19 veces. Para esto se tuvo que cambiar el sensor

óptico existente y su correspondiente electrónica de procesamiento. A continuación se

justifican estos cambios realizados.

El sensor óptico original poseía un fotoemisor-fotoreseptor en el mismo dispositivo

(PhotoSwitch 42SRU-6402 de la firma ALLEN-BRADLEY), el cual no permitía detectar

pulsos con una resolución mayor a en un radio de . Con este sensor la

resolución máxima que se logró obtener fue de 32 pulsos, la cual provocó una mejora en

el sistema de medición de velocidad, pero no alcanzaba para obtener un cambio

considerable en la resolución. A continuación puede observarse un esquema que

representa el sensor que poseía la planta.

Imagen 3.6: Sensor óptico reemplazado

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.

Imagen 3.7: Sensor óptico actual

Page 17: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 17

A continuación puede observarse un diagrama en bloques de la conexión del

sistema.

Imagen 3.8: Diagrama en bloques del sistema sensor de velocidad

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.

3.2.2 Desarrollo del acondicionamiento de señal del transductor

de peso.

En este punto se realizó el acondicionamiento de la señal proveniente del

transductor de peso, en un rango de valores que un conversor analógico-digital pudiera

manejar y retransmitir.

Las celdas de cargas, implementadas en el sistema, poseen una señal de salida

diferencial de , con lo cual la señal entregada por estas será de algunos pocos

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

Page 18: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 18

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.9: Diagrama en bloques del sistema sensor de peso

El circuito implementado se puede dividir en dos etapas, una etapa de

amplificación y otra de ajuste de cero. La señal en baja tensión, proveniente de las celdas

de carga, ingresa al circuito de ajuste de ganancia. Dicho circuito, cumple la función de

amplificar el valor de tensión de entrada a un valor que sea manejable desde el punto de

vista de la transmisión de datos. Esta señal de entrada, una vez amplificada, ingresa en el

circuito de ajuste de Offset. Es decir, lo que se pretende en esta parte del circuito es

desplazar el valor de la señal de entrada en una constante.

A continuación se puede observar un gráfico que ilustra esta idea de ajuste de

ganancia y offset.

Imagen 3.10: Ajuste de ganancia y offset de la señal proveniente de las celdas de carga

Page 19: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 19

En el gráfico anterior puede visualizarse, en el eje de abscisas, la señal de entrada

(señal en baja tención) y, en el eje de ordenadas, la señal de salida de la placa. La idea, es

por ejemplo convertir una señal de entrada de en una señal de de salida

de .

En la figura dicho objetivo lo cumple la recta graficada en azul, en cambio, la

curva graficada en rojo posee un error de offset respecto a la deseada (la pendiente es la

misma). Es acá donde entra en juego el circuito de ajuste de cero, el cual, a partir de un

potenciómetro variable, me permite corregir este desplazamiento. Por otro lado, la curva

graficada en color negro posee un error de ganancia respecto a la curva deseada (no tiene

error de cero). Este error se anula ajustando el potenciómetro colocado en la etapa de

ajuste de ganancia.

A partir de todo esto mencionado previamente, podemos adaptar la señal que

entregan las celdas de carga en una señal (normalizada) que sea compatible con el

conversor analógico-digital.

Si se desea conocer el plano del circuito, el mismo se encuentra en uno de los

anexos de esta obra.

Además de lo descripto, la placa posee una fuente de tensión que puede ser

regulada entre . El objetivo de esta fuente es poder regular una alimentación

óptima en las celdas de carga.

3.2.3 Desarrollo del sistema Conversor Analógico Digital (CAD) y

transmisión de datos a la PC.

Una vez acondicionada la señal de medición de peso debe ser procesada y luego

transmitida hacia la PC, en forma digital, utilizando un solo pin del puerto paralelo. Para

cumplir con este objetivo, se utilizó un conversor analógico digital de 8 bits (AD0804), un

Shift Register (74HC175) y un optoaislador (4n25).

Básicamente el conversor analógico digital cumple la función de muestrear un

valor de tensión y convertirlo en una palabra de 8 bits en paralelo, en su salida. Esta

palabra digital es cargada en el Shift Register y retransmitida por él, en serie, hacia la PC.

A continuación se procederá con la explicación general del funcionamiento del

dispositivo:

1. La señal proveniente de celdas de carga, una vez amplificada (Vin), ingresa

en el conversor analógico-digital. Este muestrea dicha señal y la convierte

en una palabra digital de 8 bits, cada vez que un pulso de clock ingresa en

él.

Page 20: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 20

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

Si se desea conocer el plano completo del circuito, el mismo se encuentra en el

ANEXO 4 del proyecto.

Page 21: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 21

3.2.4 Desarrollo del sistema de actuación.

Una vez realizado el sistema de actuación mecánico, se diseñó la electrónica

encargada de amplificar la señal de proviene de la PC, con el fin de obtener la acción de

control deseada sobre el motor.

La señal de actuación sobre el motor es del tipo PWM (modulación por ancho de

pulso). Es decir, es una señal cuadrada, con ciclo de trabajo variable, que permite actuar

con diferentes rangos de tensiones sobre el motor de CC y así variar la velocidad del

mismo. Como el motor utilizado requiere una tensión de alimentación de , la

modulación por ancho de pulso aplicada al motor será una señal de onda cuadrada que

varié entre . Por último, la frecuencia de esta señal debe ser lo suficientemente

alta para que sea filtrada por el motor de CC (filtro pasa bajos). A continuación se puede

observar la señal PWM aplicada al motorreductor con un ciclo de trabajo del 50%.

Imagen 3.11: Señal de actuación

Dicha señal posee una frecuencia de , por lo tanto el motor no ve los

cambios abruptos que toma la señal y toma el valor medio de la misma. En este caso,

como la amplitud es de y el ciclo de trabajo del 50%, el valor medio sería una tensión

continua de .

Como el motorreductor de CC tiene un consumo de (aproximadamente),

este no puede ser comandado directamente desde la PC. Es por esto que surgió la

necesidad de implementar un circuito encargado de amplificar la señal proveniente de la

PC, con el fin de obtener la acción de control deseada. Para cumplir con este objetivo, se

conectaron 2 transistores de potencia en paralelo y uno de acople en cascada con estos

dos. En la siguiente figura se puede observar un diagrama en bloques del circuito

eléctrico implementado.

Page 22: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 22

Imagen 3.12: Diagrama en bloques de la electrónica correspondiente a la señal de actuación

El circuito se forma de dos etapas:

La primera etapa está compuesta por un transistor de baja potencia,

comandado a partir de una señal de onda cuadrada proveniente de la PC

La segunda etapa está constituida por dos transistores de potencia en

paralelo con el fin de repartir la corriente consumida por el motor en dos

ramas.

Cuando el primer transistor es excitado, desde la PC, este transmite dicha

excitación sobre los dos transistores de potencia. Por lo tanto, la señal de onda cuadrada,

generada por la PC, es transferida hacia el motor de corriente continua. Por otro lado,

como la tensión de alimentación de los transistores de potencia es de , la señal de

onda cuadrada sobre el motor posee una amplitud de aproximadamente. Pudiendo

variar, de esta manera, la tensión media sobre el motor en un rango de .

3.2.5 Desarrollo de la interfaz electrónica.

Este diseño electrónico, que vale la pena mencionar, tiene como objetivo la

interconexión con las placas de las diferentes etapas, como así también la señalización de

los datos transferidos a través del puerto paralelo de la PC. Esto no es de mucha utilidad

a la hora de operar el caudalímetro, pero sí lo es en el momento de verificar o testear su

correcto funcionamiento.

A continuación puede observarse un diagrama en bloques de la idea

implementada.

Imagen 3.13: Diagrama en bloques de la interfaz electrónica

Page 23: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 23

El circuito consta de una resistencia y un led en serie, conectados en paralelo con

el puerto de transferencia de datos.

3.2.6 Desarrollo electrónico del sensado de nivel mínimo.

A partir de un sensor fotoemisor-fotoreseptor (PhotoSwitch 42SRU-6402 de la

firma ALLEN-BRADLEY) se realiza una medición puntual de nivel del producto presente

en la tolva. Para esto lo que se hizo fue conectar al dispositivo con una configuración en

salida TTL y obtener esta señal desde la PC, pasando previamente por un optoacoplador.

Este sensor funciona de la misma manera que se explicó en la sección 3.2.1, es por ello

que no se va a entrar en este detalle. Por otro lado, el dispositivo optoaislador es

conectado de la misma manera que se mencionó en la sección 3.2.3, cumpliendo la

función de procesar la señal del sensor y generar en la salida un pulso más óptimo para

su lectura desde la PC. Para mayor información consulte la hoja de datos del producto

expuesta en unos de los anexos del proyecto.

3.2.7 Ruido de medición y fuentes de alimentación.

Debido a la utilización de un motor de CC se encuentra presente una interferencia

eléctrica en las señales de medición y actuación del sistema. Esta interferencia, tuvo que

ser atenuada a partir de la utilización de núcleos de ferrita en las señales de sensado y

mando del motor de CC. También se realizaron rediseños en las placas de

acondicionamiento de señal y CAD (mayando las pistas). Por último se separaron las

fuentes de alimentación de las placas de sensado y de actuación. Por esto, se utilizaron 3

fuentes de PC:

Una fuente, de con salida para la

alimentación de los circuitos de medición.

Dos fuentes en serie, de con salida para

alimentar tanto la señal de actuación como el motor de CC.

3.3 Desarrollo de los algoritmos de medición y actuación.

El desarrollo de los algoritmos para el comando (a través del puerto paralelo) de

cada uno de los diseños electrónicos se implementó a través de la programación de

funciones S-function de tipo C-MEX. A continuación se detalla el objetivo que cumple

cada una de ellas.

Page 24: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 24

3.3.1 Señal de actuación

Este algoritmo es el encargado de generar la señal de onda cuadrada con ciclo de

trabajo variable para el comando del motor. Para esto, debe cumplir con tres objetivos

fundamentales: la generación de la señal, el seteo de su período y ciclo de trabajo.

El seteo del ciclo de trabajo se realiza en base a la señal de control requerida por el

controlador, el estado de la señal de parada de emergencia y el algoritmo que indica que

el peso requerido ha sido alcanzado (tema a tratar en la sección 3.3.4). A continuación se

explica en forma general como se lograron estos requerimientos.

Seteo del ciclo de trabajo y período de la señal: para cumplir con este fin, el

algoritmo consta de dos variables de entrada que pueden ser seteadas

desde Simulik.

Generación de la onda cuadrada: este objetivo se lleva a cabo construyendo

una señal tipo rampa, la cual es comparada (instante a instante) con una

constante directamente ligada al ciclo de trabajo deseado. A partir de esta

comparación, el algoritmo escribe un uno lógico, en un pin de salida del

puerto paralelo, cuando la señal rampa es menor a la constante y viceversa

cuando es mayor. Esto se puede apreciar con mayor facilidad en el

siguiente gráfico: donde la señal constate es la de color rojo, la tipo rampa

de color azul y la onda cuadrada de color negro.

Imagen 3.14: Creación de la señal PWM

Page 25: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 25

A continuación, con el fin de comprender mejor esta idea, se muestra un diagrama

de flujo simplificado del algoritmo implementado.

Imagen 3.15: Diagrama en bloques del algoritmo generador de la señal PWM

3.3.2 Medición de peso

En este caso el algoritmo se encarga de sincronizar la transferencia de datos entre

el conversor analógico-digital, el shift register y la PC. Es decir, a grandes rasgos la

función se encarga de las siguientes tareas:

Page 26: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 26

1. Envía un pulso hacia el conversor analógico digital indicándole que muestree

la señal de entrada y la convierta en una palabra digital de 8 bits.

2. Envía un pulso al acumulador del shift register indicándole que lea los bits

escritos por el conversor analógico-digital y los cargue en memoria.

3. Genera una señal de clock que es recibida por el shift register. Esta es la

encargada de indicar, en cada pulso, que se envíe un bit hacia la PC.

4. Cada vez que la PC genera un pulso de clock, se lee el dato enviado por el

shift register.

5. Una vez que la PC recibe ocho bits, se realiza una conversión digital

analógica. Luego de esto el proceso comienza de nuevo desde el punto

número 1.

En el siguiente gráfico se puede visualizar un diagrama de flujo de la idea.

Imagen 3.16: Diagrama en bloques del algoritmo de medición de peso instantáneo

Page 27: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 27

3.3.3 Medición de velocidad de la cinta y nivel en la tolva.

El algoritmo implementado para la medición de velocidad se basa en contar la

cantidad de pulsos, provenientes del sensor óptico, en el transcurso de un determinado

tiempo. A partir de esto, se determina la velocidad angular del motor y por ende, con un

apropiado escalamiento, la velocidad lineal de la cinta.

Dentro de este algoritmo, se encuentra la supervisión del sensor que indica falta

de producto en la tolva. Este solo cumple la función de leer la salida del sensor de nivel

mínimo e indicar su estado.

A continuación puede observarse un diagrama de flujo del algoritmo

implementado.

Imagen 3.17: Diagrama en bloques del algoritmo de medición de velocidad

Page 28: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 28

3.3.4 Medición del peso requerido

Este algoritmo se implementó con el fin que el sistema se detenga automáticamente

una vez acumulada cierta cantidad de peso. En pocas palabras, lo que realiza es una

integración del caudal másico medido a lo largo del tiempo e informa al algoritmo de la

señal de actuación que se detenga la cinta cuando el peso requerido haya sido alcanzado.

A continuación se puede observar el diagrama de flujo del algoritmo.

Imagen 3.18: Diagrama en bloques del algoritmo de medición de peso acumulado

3.4 Puesta en marcha y calibración.

Una vez finalizadas las etapas de desarrollo electrónico, mecánico y software, cada

una por separada, se procedió con la puesta en marcha del sistema completo. Durante

esta tarea se llevaron a cabo los últimos ajustes finos sobre cada una estas etapas de

Page 29: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 29

medición y actuación. Se realizaron tres importantes tipos de calibración: la asociada al

sensor de velocidad, a la señal de actuación y al sistema de medición de peso.

Calibración del sensor de velocidad

Cuando se llevó a cabo el testeo de funcionamiento del sensado de velocidad, se

tuvo que decidir un tamaño en la ventana de tiempo que utiliza el algoritmo del software

del sistema en cuestión para realizar la medición. Una cantidad de tiempo grande

permitía contar más pulsos en una ventana, lo que producía menor error y por ende

menos oscilación en la velocidad. Pero, por otro lado, este tiempo no permitía actualizar el

sistema lo suficientemente rápido. El tamaño elegido para este período fue tomado a

prueba y error con el sistema en funcionamiento.

Calibración de la señal de actuación

Para el comando de la señal de actuación el software implementado posee una

opción de variar el período de la señal de onda cuadrada. Cuanto menor es el período de

la señal, mayor es la frecuencia y por ende mejor filtrada por el motor (filtro pasa bajos).

Pero, por otro lado, la resolución en la señal de actuación disminuye. Este ajuste, al igual

que el anterior fue realizado a partir de ensayos con el sistema en funcionamiento.

Calibración del sensor de peso

Para realizar este procedimiento se utilizaron distintos pesos conocidos a las

cuales fueron sometidas las celdas de carga. Estos pesos tenían una correlación

prácticamente lineal con el voltaje proveniente de las celdas. Entonces lo que se hizo fue

aproximar el resultado a partir de una recta que resulta de correlacionar los datos

obtenidos.

Testeo del sistema general

Una vez convertida la señal de las celdas de carga de a , se procedió con

el testeo de funcionamiento del sistema completo. Para esto, se puso en funcionamiento el

caudalímetro a una determinada velocidad constante durante un tiempo finito y conocido.

Como se conoce el caudal entregado por el sistema y el transcurso de tiempo en que lo

hace, se pudo hallar el peso total que había de acumularse durante ese período de

tiempo. El cual, fue constatado con una balanza a fin de corroborar el correcto

funcionamiento del sistema. A continuación puede observarse una gráfica de esta

comparación para diferentes velocidades (ciclo de trabajo) y un mismo período de tiempo.

Page 30: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 30

Imagen 3.20: Resultados de la calibración

Page 31: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 31

4. Dinámica del sistema

En este capítulo se abordará el tema de la aproximación del sistema real a un modelo

matemático estimado del mismo. El objetivo de esta etapa es un posterior estudio y

diseño de control con mayor criterio.

Modelar el sistema es de gran importancia a la hora de obtener un buen

conocimiento del proceso a controlar y por ende mejores resultados en el diseño de

control. Para lograr este modelado, se puede deducir su conducta a partir de leyes de

origen físico aplicables al sistema, para luego estimar los valores paramétricos del modelo

obtenido a partir de la relación entrada-salida del sistema real.

4.1 Modelo matemático del sistema

El sistema se conforma de dos grandes partes, por un lado tenemos el motor de

CC que genera el movimiento de la cinta transportadora y por otro lado la fuerza que el

producto genera sobre el sistema de sensado de peso.

4.1.1 Modelado matemático del motor de CC.

Para el modelado del motor de CC de imán permanente, se aplicaron las leyes

físicas correspondientes a la dinámica de su circuito de armadura y las leyes físicas de

acuerdo a la dinámica de cuerpo libre del rotor.

El siguiente diagrama de un motor de corriente continua representa el circuito

eléctrico de armadura del mismo y la relación de fuerzas sobre su rotor4:

Imagen 4.1: Esquema del motor de CC

4 “Feedback Control of Dynamic Systems” 4th Edition, by Gene F. Franklin

Page 32: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 32

El motor de CC consiste en un arrollamiento de varias espiras (inducido) que

puede girar inmerso en un campo magnético constante. Dicho campo magnético es

generado (en este caso) por un imán permanente. Al circular una corriente por el

devanado del inducido se ejerce sobre él un par que es directamente proporcional a dicha

corriente, y al flujo magnético generado por el imán permanente, es decir:

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:

Despreciando la inductancia L, de (4.2) se obtiene que:

(4.3)

Si se reemplaza (4.3) en (4.1) se llega a lo siguiente:

Page 33: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 33

Tomando como variables de estado , se tiene que:

(4.4)

4.1.2 Modelado matemático del caudal másico

Por otro lado, sabemos que el caudal másico a la salida del sistema es producto de

la velocidad de la cinta y de la fuerza que el material realiza sobre la misma. Por lo tanto,

podemos calcular este caudal como:

Donde:

Como y recordando que se puede escribir al caudal másico de salida

como5:

(4.5)

Imagen 4.2: Diagrama general del caudalímetro6

5 Instrumentación de Procesos Industriales, parte II [Héctor Polenta]

6 Instrumentación de Procesos Industriales, parte II [Héctor Polenta]

Page 34: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 34

4.1.3 Cálculo de la función de transferencia.

La variable que nos relaciona ambos modelos es la velocidad angular del eje del

motor . Entonces, despejando de la ecuación (4.5) se obtiene:

Si ahora reemplazamos este resultado en la ecuación (4.4) obtenemos:

Escrito en forma matricial queda de la siguiente manera:

Por otro lado, tomando como salida , la función de transferencia del

sistema completo es:

Donde , son dos constantes a determinar.

Para estimar el valor de estas constantes, se aproximó a un modelo de primer orden del

siguiente tipo:

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:

Page 35: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 35

Imagen 4.3: Respuesta al escalón

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:

Ahora bien como el control a implementar es digital, y el modelo matemático está

descripto sobre un espacio de estados continuos, hay que hallar el modelo discreto del

mismo.

Tomando (aproximación diferencia hacia atrás7) como una aproximación

del sistema continuo, la dinámica del modelo discretizada sería:

Donde, teniendo en cuenta que se necesitan al menos 6 muestras durante el transitorio y

que el tiempo de establecimiento mínimo es de 3 segundos, el tiempo de muestreo

utilizado fue de T=0.1s.

7 Digital Control of Dynamic System [Gene F. Franklin, J.David Powell, Michael Worlanan]

Page 36: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 36

A continuación se ven los resultados del ensayo al modelo obtenido. Estos

arrojaron valores que no fueron satisfactorios. Puede verse que para puntos de operación

alejados a los utilizados en la obtención del modelo, este se comporta diferente a la planta

real.

Imagen 4.4: Resultados del ajuste por ensayo al escalón

En base a esto, y al hecho de que el modelo matemático del motor es aproximado, se

plantea un nuevo modelo de la planta de un orden mayor. Es decir se plantea ajustar, de

manera empírica, una función de transferencia de segundo orden como la siguiente:

4.1.4 Ajustes de Parámetros.

El procedimiento consiste en obtener los parámetros del modelo matemático de la

planta, a partir de ensayos experimentales sobre el sistema real. Es decir, se ajustan los

parámetros del modelo en base a la respuesta del sistema frente a estímulos empíricos.

Page 37: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 37

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:

Imagen 4.5: Diagrama en bloques del sistema Simulik implementado en la identificación.

La función de transferencia estimada posee:

un polo en 0, 9, otro en 0, 75

un cero en 0

una ganancia de 0, 000455

Esto último se puede observar en la imagen anterior.

4.1.5 Resultados del modelo obtenido.

Los resultados del proceso de estimación del modelo fueron óptimos, tanto en el

rango de valores donde se realizó el ajuste de parámetros del modelo matemático, como

fuera de él. En conclusión el modelo estimado responde idénticamente al sistema real en

todo el rango de valores que trabaja el sistema, este va de a . Esto

destaca la linealidad con que responde dicho sistema.

Como los resultados, fueron totalmente satisfactorios, se decidió no aplicar algún

tipo de proceso de identificación de mayor complejidad.

Page 38: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 38

A continuación puede observarse la gráfica de la respuesta al escalón del sistema

real (curva azul) y el sistema estimado (curva roja), ambas excitadas con una señal de

entrada que produzca un caudal de salida de y respectivamente.

Imagen 4.6: Resultados de la identificación del sistema

Page 39: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 39

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.

Imagen 5.1: Diagrama en bloques general del sistema

Page 40: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 40

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.

5.1 Objetivos del comportamiento a lazo cerrado

En esta sección se detallan los requerimientos mínimos que se exigieron a la

respuesta a lazo cerrado del sistema una vez implementado el control. Tomando como

modelo una señal a lazo cerrado como la de la siguiente imagen:

Imagen 5.2: Explicación de las características de la respuesta del sistema

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.]

Page 41: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 41

Los requerimientos necesarios que se exigieron a lazo cerrado son:

1. Respuesta rápida: como el sistema debe tener la capacidad de entregar

caudales durante transcursos de tiempo relativamente cortos, el tiempo de

establecimiento debe ser pequeño (inferior a los 6 segundos).

2. Rechazo a perturbaciones: el controlador debe ser capaz de rechazar

perturbaciones que impidan el correcto funcionamiento del sistema.

3. Evitar una excesiva acción del controlador: la acción de control no debe ser muy

elevada, ya que esta podría dañar algún punto del sistema.

4. El controlador debe cumplir el seguimiento de referencia en un rango de

condiciones operativas.

5. El sobre valor de la respuesta del sistema debe ser nulo.

5.2 Ajuste empírico de un controlador PI.

El controlador más famosos y popular en los sistemas de control de procesos

industriales es el PID. El algoritmo de cálculo del control PID se divide en tres parámetros

distintos: el proporcional, el integral, y el derivativo. A continuación se puede observar su

representación matemática y un diagrama en bloques de la idea9.

Imagen 5.3: Diagrama en bloques de un controlador PID a lazo cerrado

Donde la acción proporcional actúa de manera proporcional al error obtenido entre

la medición y la referencia deseada. Esta acción es suficiente para estabilizar un sistema,

pero en caso de necesidad de seguimiento de referencia la misma tiene que ser muy

9 Control System Desing, [Graham C. Goodwin, Stefan. F. Graebe and Mario. E. Salgado.]

Page 42: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 42

elevada ( ). Esto último implica transitorios oscilantes o directamente sistemas

inestables. Es por esto que se plantea el uso de una acción integral.

La función de la acción integral es eliminar el error en régimen permanente, a

partir de la integración del error de manera proporcional. Esta acción dejará de actuar en

el momento que error en estado estacionario sea nulo. Por lo general, la acción integral es

adicionada a la Proporcional para formar un control PI con el propósito de obtener una

respuesta estable del sistema sin error estacionario.

Por último el término derivativo es utilizado para mejorar los transitorios del

sistema y el comportamiento frente a perturbaciones. Este término, trata de reducir el

error proporcionalmente a la misma velocidad que se produce este. Vale aclarar que

cuando la derivada de la señal del error es muy alta, por ejemplo por la presencia de

ruido de alta frecuencia, la acción derivativa puede alcanzar valores elevados indeseables.

Como en nuestro caso teníamos presencia de esta clase de ruido, se decidió implementar

un controlador PI.

5.2.1 Ajuste por el método de Ziegler y Nichols.

De todos los métodos existentes para el cálculo de las ganancias , del

controlador, nos basamos en el método de Ziegler-Nichols (1942) tomando el resultado

arrojado como punto de partida para un posterior ajuste empírico, en base a los

resultados deseados.

El análisis de Ziegler-Nichols implementado fue llevado a cabo a partir de la

respuesta al escalón del sistema. Entonces lo que se hizo fue llevar al sistema a una

referencia con una amplitud de , para luego excitarlo con una señal de entrada

tipo escalón.

A partir de lo obtenido, se midieron el tiempo de retardo “L” y la magnitud “a”

señalada en el siguiente gráfico, para luego calcular las ganancias correspondientes como

lo indica el método.

A continuación se puede observar el resultado que se obtuvo para realizar la

medición, una imagen ampliada de la zona (indicada en color verde) y el cálculo de las

ganancias que arroja este método.

Page 43: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 43

Imagen 5.4: Ensayo al escalón del sistema

Imagen 5.5: Ensayo al escalón del sistema (zoom)

El resultado del cálculo10 de las ganancias del controlador fue el siguiente:

10

Computer Controlled System, Theory and Desing,[ Karl J. Åström, Björn Wittenmark]

Page 44: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 44

Por lo tanto, como se mencionó previamente, tomando como punto de partida

estos valores obtenidos por el método de Ziegler-Nichols se llevó a cabo un ajuste fino de

las ganancias con el fin de cumplir los requerimientos planteados en la sección 5.1. Estas

dos ganancias calculadas previamente producían un pequeño sobre valor en la respuesta

a lazo cerrado y un tiempo de establecimiento indeseado. Es por esto que estas fueron

modificadas empíricamente con la planta en funcionamiento, para así lograr el

desempeño deseado. Los resultados finales fueron los siguientes:

5.2.2 Resultados obtenidos.

A continuación se muestran los resultados obtenidos con el controlador PI

calculado a partir del método de Ziegler-Nichols.

Page 45: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 45

Page 46: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 46

Imagen 5.5: Resultados de aplicar un controlador PI al sistema

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.

Page 47: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 47

Imagen 5.7: Acción de control del sistema a lazo cerrado con un controlador PI.

5.2.3 Comparación entre el modelo de la planta y la planta real

En esta sección se pretende exponer las similitudes o diferencias entre la

respuesta del sistema real y la del modelo matemático estimado, ambas comandadas por

el mismo controlador PI. A continuación se muestran los resultados obtenidos para

referencias de , y respectivamente.

Page 48: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 48

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).

5.3 Diseño de un controlador por el método de asignación

de polos.

En esta sección, se presentará el diseño de un controlador a partir del modelo

matemático del sistema mencionado en el capítulo 4 de esta obra. Para esto, se desarrolló

un diseño basado en asignación de polos a lazo cerrado.

A continuación se puede observar un diagrama en bloques general del sistema a

lazo cerrado y la función de transferencia que lo describe.

Page 49: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 49

Imagen 5.9: Diagrama en bloques de un sistema de control general.

Donde: es el modelo de la planta hallado previamente y es

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.

5.3.1 Ajuste y cálculo del controlador.

Partiendo de la función de transferencia que describe al sistema, sabemos que la

dinámica a lazo cerrado depende de la ubicación de los polos de esta. Como

, tomando , los polos a lazo cerrado del sistema son:

Ahora bien, como se pretende seguir referencias constantes el controlador debe

poseer el modelo interno de la referencia a seguir. Por otro lado, como el

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.]

Page 50: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 50

Donde el término representa al modelo interno de la referencia a seguir, y/o

perturbaciones a rechazar.

Una vez tenidos en cuenta la estructura del controlador y el modelo de la planta

pasamos a calcular el polinomio resultante:

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)

Para la ubicación de los polos a lazo cerrado se especificó un polinomio de cuarto

orden de la siguiente manera12:

Con:

Donde es el factor de amortiguamiento y es la frecuencia natural de oscilación.

Buscando una respuesta críticamente amortiguada con tiempo de establecimiento

relativamente chico y mínimo sobre valor, se eligió un factor de amortiguamiento de valor

1 y una frecuencia natural de oscilación entre 1 y 1.25.

12

Computer Controlled System, Theory and Desing,[ Karl J. Åström, Björn Wittenmark]

Page 51: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 51

Con este criterio, para y se obtuvo que:

Entonces, el polinomio a lazo cerrado queda de la siguiente manera:

Por otro lado, para y .25 se obtuvo:

En este caso, el polinomio a lazo cerrado queda de la siguiente forma:

A partir de estos dos resultados, se busco un valor intermedio eligiendo la

ubicación de los polos a lazo cerrado en un valor de 0.89. Una vez realizada esta elección,

reescribiendo el sistema de ecuaciones (5.1), con , se tiene que:

Luego, con la utilización de Matlab se resolvió el sistema de ecuaciones anterior,

obteniendo el siguiente controlador:

Por lo tanto la función de transferencia a lazo cerrado obtenida fue:

Con cuatro polos en 0.89, un cero en “cero”, un cero en 0.925 y un cero en 0.9.

Page 52: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 52

A continuación se puede visualizar el diagrama de polos y ceros del sistema a lazo

cerrado, donde se verifica que la frecuencia natural y el factor de amortiguamiento son los

deseados.

Imagen 5.10: Mapa de polos y ceros del sistema a lazo cerrado.

En la siguiente sección se muestran los resultados del diseño implementado a

partir de esta asignación de polos a lazo cerrado.

5.3.2 Resultados obtenidos.

A continuación pueden observarse los resultados obtenidos con el controlador

diseñado por asignación de polos, aplicado tanto al modelo del sistema como al sistema

real.

Page 53: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 53

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.

Page 54: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 54

Resultados sobre la planta real.

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.

Page 55: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 55

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.

Page 56: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 56

5.3.3 Comparación entre el modelo de la planta y la planta real

En esta sección, al igual que la 5.2, se pretende exponer las similitudes o

diferencias entre la respuesta del sistema real y la del modelo matemático estimado,

ambas comandadas por el mismo controlador. En este caso, a diferencia del anterior, el

controlador fue diseñado por asignación de polos a lazo cerrado. A continuación se

muestran los resultados obtenidos para referencias de , y

respectivamente.

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.

Page 57: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 57

6. Interfaz gráfica Hombre – Máquina

En esta sección se describe el desarrollo de la interfaz hombre máquina y cuales

son los objetivos que debiera cumplir dicha interfaz gráfica para el comando del sistema

detallado en los capítulos anteriores, para luego abordar la explicación de cómo se

lograron esos objetivos planteados.

6.1 Introducción a interfaces Hombre – Máquina

El objetivo de una HMI (Interface Hombre Máquina) es el de brindar un entorno

amigable de operación del sistema al usuario, de manera que la tarea de operación sea

intuitiva y sencilla.

6.1.2 Funcionalidad del HMI.

Un sistema de estas características, debe ofrecer una interfaz amistosa y lógica

para interactuar con el proceso, proporcionando:

Información sobre el estado actual.

Configuración de funcionalidades.

Visualización de Alarmas.

Gráficos históricos

Ingreso de parámetros.

De esta forma el sistema posee además habilidades de supervisión y monitoreo que

permiten una adecuada interacción con el usuario.

6.2 Desarrollo del sistema HMI.

Para la realización de la interfaz gráfica existen dos alternativas: sistemas

enlatados y sistemas a medida.

La utilización de un sistema enlatado, no se consideró conveniente, teniendo en

cuenta que estos utilizan protocolos estándar de comunicación y controladores de tipo

PLC, ya que están pensados para integrarse con un sistema de tipo industrial.

Las interfaces gráficas de usuario realizadas a medida (GUI), pueden desarrollarse

en diferentes entornos como por ejemplo JAVA, Visual C, Visual C++, Matlab, ect.

La herramienta de Matlab GUIDE (Graphical User Interface Development

Enviroment) posee algunas ventajas por sobre el resto:

Mayor eficiencia y velocidad a la hora de realizar cálculos.

Facilidad de programación.

Page 58: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 58

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.

En las siguientes secciones se detallarán como se componen cada una de las

pantallas del sistema, como así también los problemas que surgieron y sus soluciones.

6.2.1 Pantalla principal

En esta pantalla se pretende dar la opción, al usuario del sistema, de abrir las

pantallas de ajuste de los controladores, de los parámetros del sistema y la que brinda

información sobre la dinámica de la planta. Por otro lado, a partir de dos staticText, se

informa al operario sobre el estado en que se encuentra el sistema y qué tipo de alarma se

activo, en caso de ocurrir alguna.

Page 59: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 59

Dentro de un frame se encuentran dos botones, que permiten el arranque y

parada de la planta, dos edittext, utilizados para el seteo de los valores de caudal y peso

requerido, y un popumenu, que otorga la posibilidad seleccionar entre un modo normal o

avanzado de configuraciones.

Por último, se dispone de la opción de ploteo y vincular Simulik, las cuales

permiten visualizar el desempeño del sistema en la última puesta en marcha y abrir el

archivo simulink que se desea implementar.

El aspecto de la pantalla principal de la interfaz HMI puede observarse en la

siguiente figura.

Imagen 6.1: Pantalla Principal

Page 60: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 60

A continuación se explicará cómo se llevaron a cabo cada una de estas opciones

ofrecidas al usuario.

Información, ajustes de planta y ajustes de control

A partir de un menú, en la parte superior de la pantalla, se vincula la interfaz con

las pantallas de información, ajustes de planta y ajustes de control. Estas opciones

realizan solo la tarea de abrir la pantalla correspondiente a la elección tomada. El proceso

de ajuste de control, ajuste de planta y detalles de información fueron programados cada

uno en estas pantallas secundarias. Estos algoritmos serán explicados con mayor detalle

en las secciones 6.2.2, 6.2.3 y 6.2.4 respectivamente.

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.

Estado del sistema y eventos

Page 61: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 61

En la parte superior de la pantalla se encuentra una imagen del proceso. Esta

posee, en su esquina inferior izquierda, dos staticTex utilizados para informar al usuario

sobre el estado y los eventos ocurridos en el sistema. Para llevar a cabo estas tareas de

supervición, el algoritmo de la interfaz se encuentra leyendo periódicamente el valor de

las variables, en el workspace, relacioadas con los estados y eventos. Estas variables son

modificadas desde Simulink, una vez finalizada la simulación, en base a lo que haya

sucedido en el sistema.

La lectura periódica de variables se implementó a partir de la creación de un

objeto Timer, en el momento que se abre la pantalla. El cual, es encendido al inicio de

cada puesta en marcha y detenido una vez finalizado el proceso. Cuando el Timer es

encendido, este llama periódicamente a una función que se encarga de chequear el valor

de las variables correspondientes, para luego mostrar en pantalla la información que

corresponda.

Los estados en que se puede hallar el sistema son los siguientes:

Sistema detenido: En este caso, el sistema se detuvo a causa de algún

evento.

Dosificando: El sistema se encuentra en pleno proceso de dosificación, por

lo cual no ha ocurrido ningún evento.

Cuando se detiene el sistema se informa al usuario el motivo de la detención. A

continuación se muestran los diferentes motivos o eventos que provocan la interrupción

del proceso:

Parada de Emergencia: El sistema se detuvo a causa de presionar la

parada de emergencia sobre el caudalímetro.

Dosificación incompleta: El sistema se detiene por presionar el botón de

stop manual desde la interfaz gráfica.

Tolva vacia: Indica que el sensor de Nivel está detectando la falta de

producto en la tolva.

Dosificación exitosa: El sistema se detiene luego de llegar al peso requerido

exitosamente.

A continuación, se presentan en una tabla, las diferentes posibilidades de estados

y eventos ocurridos durante la operación del sistema:

Estado Evento

Dosificando… Ninguno

Page 62: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 62

Sistema Detenido Dosificación exitosa

Sistema Detenido Tolva Vacía

Sistema Detenido Dosificación Incompleta

Sistema Detenido Parada de Emergencia

Tabla 6.1: Estados y eventos del sistema

Botones Play y Stop

Stop: Este botón permite detener el proceso en cualquier instante del mismo, a

partir del seteo de variables en Simulink. Por otro lado, actualiza el valor del evento

ocurrido, lo muestra en pantalla y detiene la ejecución del Timer. Es el único evento que

no se muestra a partir del objeto Timer.

Play: En este objeto se llevan a cabo una serie de tareas, que son las encargadas

de poner en funcionamiento el sistema a partir de los datos seleccionados por el usuario.

Dichas tareas se enumeran a continuación:

1. Arranca la ejecución del Timer.

2. Se actualizan el estado de los staticText que indican el estado y los eventos

ocurridos.

3. Se toma el valor de los editText (caudal y el peso requerido) y se los escribe en el

Worckspace. En los editText se cargan los valores de caudal y peso requerido en la

operación del proceso.

4. Se fija el estado del popumenu.

5. Se abre de manera local el archivo “.mat” correspondiente al estado del

popumenu. Luego se escriben las variables cargadas en el worckspace. Es decir, si

se ha seleccionado modo avanzado, se leerá el archivo correspondiente a este

modo y por ende se pondrá en marcha el sistema con los valores modificados por

el usuario. En cambio, si se selecciona modo normal, se cargará un archivo cuyos

valores permiten que el sistema responda óptimamente. Este archivo, fue seteado

y cargado con el fin de no poder modificarlo de ninguna manera.

6. Conecta al Target.

7. Se inicia la ejecución del programa.

A continuación, puede observarse el diagrama de flujo del algoritmo implementado.

Page 63: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 63

Imagen 6.2: Diagrama de flujo del botón Play

6.2.2 Ajustes de Parámetros Avanzados de control

En esta pantalla se pretende dar la opción, al operario del sistema, de realizar

ajustes avanzados del controlador. Este será posible sólo en un rango de operación

limitado, es decir, no se podrán seleccionar valores que produzcan acciones de control

extremadamente grandes ni extremadamente pequeñas. Esto es para no causar desgastes

ni rupturas en la planta.

Imagen 6.3: Pantalla Control

Page 64: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 64

La pantalla se divide en dos grupos:

En el primer grupo se encuentran las herramientas que permiten variar la

dinámica a lazo cerrado en forma indirecta, mediante el seteo de las

ganancias del controlador PID.

El segundo grupo, a diferencia del anterior, da la posibilidad de variar de

forma directa la dinámica del sistema, ajustando el factor de

amortiguamiento y la frecuencia natural del mismo. En este caso el

controlador utilizado es calculado, desde el algoritmo de la interfaz, por el

método de asignación de polos13.

Estos parámetros se encuentran guardados en un archivo de extensión „.mat‟ el

cual, al abrirse la pantalla, es cargado y mostrado a través de los controles slider y static

text.

A partir de dos checkbox, en la parte superior de la pantalla, se puede seleccionar

el o los controladores que se desean ajustar. La implementación de dichos ajustes se

lleva a cabo mediante la modificación de los controles slider que se ven en pantalla.

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.

6.2.3 Ajuste de Parámetros Avanzados de la Planta

En esta pantalla se pretende dar la opción al operario del sistema de ajustar

parámetros de la planta de manera arbitraria. Este ajuste, al igual que el ajuste de los

controladores, será posible sólo en un rango de operación limitado, es decir, no se podrán

seleccionar parámetros inadecuados que originen un incorrecto funcionamiento del

sistema.

13

Ver capítulo 5.3 donde se explica en forma detallada el método

Page 65: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 65

Imagen 6.4: Pantalla Planta

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.

Page 66: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 66

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.

Imagen 6.5: Pantalla Información

Simplemente a partir de dos checkbox en la parte inferior de la pantalla se puede

seleccionar la respuesta que se desea visualizar en el centro de la pantalla.

6.3 Transferencia de datos entre Simulink y la Interfaz

gráfica HMI.

Como se menciona en la sección 6.2, existe una transferencia de datos continua

entre Simulink y la interfaz gráfica HMI, una vez finalizado el proceso y al inicio del

mismo. Esta transferencia de datos de lleva a cabo a partir de la escritura y lectura de

variables en el workspace, ya que este puede ser accedido por ambos sistemas.

Por un lado, se tienen las variables que son escritas desde la interfaz gráfica HMI,

las cuales a su vez, son las encargadas de setear los parámetros de los bloques en

Simulink.

Por otro lado, desde Simulink se graban en el worckspace los valores

correspondientes de las variables que indican el estado del sistema y si ha ocurrido o no

algún evento.

Por último, al ejecutarse el botón de Stop, se produce un seteo de parámetros

desde la interfaz HMI directamente hacia Simulink.

Page 67: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 67

A continuación puede observarse un diagrama en bloques de esta idea de

transferencia de datos, lo cual ayudará a clarificar esta idea.

Imagen 6.6: Transferencia de datos

Page 68: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 68

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 )

Page 69: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 69

el sistema presenta un respuesta en régimen permanente oscilatoria debida a la muy baja

velocidad (casi nula) que se desplaza la cinta.

Por último queremos destacar que consideramos de gran importancia todos los

conocimientos, tanto prácticos como teóricos, adquiridos durante el período de esta obra.

Sin dejar de lado la aplicación en conjunto de aquellos conocimientos obtenidos durante

todo el transcurso de la carrera.

Page 70: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 70

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.

[3] Gene F. Franklin. “Feedback Control of Dynamic Systems” 4th Edition.

[4] Antonio Creus Solé. “Instrumentación industrial”. 5ª Ed. Marcombo Boixareu editires.

[5] Héctor Polenta. “Instrumentación de Procesos Industriales”, pare II.

[6] Matlab. http://www.mathworks.com/.

[7] Simulink Matlab. . http://www.mathworks.com/.

[8] Real Time Windows Target. http://www.mathworks.com/,1998.

[9] Guide Matlab. http://www.mathworks.com/.

[10] C.Mex Matlab. http://www.mathworks.com/.

[11] Paul A. Tipler. ”Física”. Editorial Reverté, 1994.

[12] Manual de curso de IFIX. “IFIX Fundamentals”.

[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.

Page 71: Proyecto Final v 1.7

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).

Page 72: Proyecto Final v 1.7

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.

S-function de la señal de medición de velocidad

#define S_FUNCTION_NAME encoder

#define S_FUNCTION_LEVEL 2

#define PORT_OUT 0x378

#define PORT_IN 0x379

#define MUESTRAS 6 // Cantidad de muestras del promedio móvil

#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

}

//*************************************************************************************************

//*************************************************************************************************

Page 73: Proyecto Final v 1.7

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);

static int EntradaAnterior=0;

static int Nivel_min=0;

static int Pulsos=0;//Cuenta la cantidad de pulsos static double Contador=0; // Cuenta el tiempo transcurrido

static double promedio_3;

static double prom_3[MUESTRAS];//Entre corchetes va la cantidad de muestras que

deseo para realizar un promedio movil

double T;

double ventana; int Entrada=0;

int cant_muestras=MUESTRAS;

int i;

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

/* Leo el puerto paralelo */

Entrada=(int)(inp(0x379)&0x40);//Leo la salida del sensor óptico

Nivel_min=(int)(inp(0x379)&0x20);//Leo la salida del PhotoSwhitch (sensor de nivel mínimo)

/* 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 }

Contador=Contador+T;//Incremento el tiempo transcurrido

if(Contador>=ventana)//Me fijo si el tiempo transcurrido es igual a la ventana de

tiempo {

//*************************************************************************************************

//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

}

Page 74: Proyecto Final v 1.7

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

}

EntradaAnterior=Entrada;//Guardo en entrada anterior la entrada actual para el próximo ciclo

}

static void mdlTerminate(SimStruct *S)

{

} #ifdef MATLAB_MEX_FILE

#include "simulink.c"

#else

#include "cg_sfun.h"

#endif

S-function de la medición de peso acumulado #define S_FUNCTION_NAME peso

#define S_FUNCTION_LEVEL 2

#define PORT_OUT 0x378

#define PORT_IN 0x379

#define MUESTRAS 10 #include "simstruc.h"

#include <conio.h> //para comandar el puerto paralelo

//*************************************************************************************************

// 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);

}

//*************************************************************************************************

Page 75: Proyecto Final v 1.7

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;

caudal=(*uPtrs0[0]);//Leo el caudal instantáneo

peso_total=(caudal*0.01)+peso_total;//Integro el caudal en el tiempo

*y0=peso_total;//Muestro en la salida 0 el peso acumulado durante un tiempo

determinado

}

static void mdlTerminate(SimStruct *S)

{

} #ifdef MATLAB_MEX_FILE

#include "simulink.c"

#else

#include "cg_sfun.h"

#endif

S-function de la señal de medición de peso #define S_FUNCTION_NAME shiftyad_2

#define S_FUNCTION_LEVEL 2

#define PORT_OUT 0x378 //(888 en decimal)

#define PORT_IN 0x379 //(889 en decimal)

#define PORT_CNTRL 0x37A //(890 en decimal) #define MUESTRAS 16

#include "simstruc.h"

#include <conio.h> //Para manejar el puerto paralelo

//*************************************************************************************************

Page 76: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

// Inicialización de entradas y salidas (0 entradas y 1 salidas)

//************************************************************************************************* static void mdlInitializeSizes(SimStruct *S)

{

ssSetNumSFcnParams(S, 0);

ssSetNumInputPorts(S, 0);

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.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:

Page 77: Proyecto Final v 1.7

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

entrada_2=(int)(inp(PORT_IN)&(0x10)); //Leo el dato enviado por el shift register

numero 2

peso_2=((peso_2) << 1) + ((entrada_2)/16); //desplazo un bit todo hacia la izquierda

y le agrego el siguiente bit

contador=contador+1;//Cuento la cantidad de datos recibidos

if (contador==8)//Me fijo si la cantidad de datos recibidos es 8

{

condicion=0;//Inicializo el algoritmo contador=0;//Inicializo la cantidad de datos tomada

Page 78: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

//************************************************************************************************* //*************************************************************************************************

// 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;

Page 79: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

}

}

static void mdlTerminate(SimStruct *S)

{

}

#ifdef MATLAB_MEX_FILE

#include "simulink.c" #else

#include "cg_sfun.h"

#endif

S-function de la señal de actuación #define S_FUNCTION_NAME pwm

#define S_FUNCTION_LEVEL 2 #define PORT_OUT 0x378

#define PORT_IN 0x379

#include "simstruc.h"

#include <conio.h> //para comandar el puerto paralelo

//************************************************************************************************* // 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

Page 80: Proyecto Final v 1.7

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);

static int Triangular=0;

double Amplitud; double PWM;

double DutyCycle;

double T; //Periodo

double peso;

double peso_requerido;

double Nivel_min; double Parada;

double parada_logica;

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

Nivel_min=(int)(inp(0x379)&0x20);//Leo la salida del PhotoSwhitch (sensor de nivel

mínimo)

Parada=(int)(inp(0x379)&0x80);//Leo la parada de emergencia

//*************************************************************************************************

// Genero una señal triangular

//************************************************************************************************* if(Triangular>=T)

{

Triangular=0;

}

else

{ Triangular=Triangular+1;

}

//*************************************************************************************************

//*************************************************************************************************

DutyCycle=(*uPtrs1[0])*T/100;//Calculo el valor correspondiente al ciclo de trabajo

deseado

Page 81: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

if(peso_requerido<=peso)//Me fijo si el peso requerido fue alcanzado {

PWM=0;//Si el peso requerido fue alcanzado paro el sistema

*y0=1;//Aviso que se se ejecute stop

}

else

{ if (Nivel_min<=1)//Me fijo si se activo el sensor de nivel mínimo

{

PWM=0;//Si la tolva se quedo sin producto paro el sistema

*y0=2;//Aviso que se ejecute stop

} else

{

if (Parada>=1)//Me fijo si se presiono la parada de emergencia

{

PWM=0;//Si se presiono la parada de emergencia paro el sistema

*y0=3;//Aviso que se ejecute stop }

else

{

if (parada_logica==1)

{

PWM=0; }

else

{

if(DutyCycle==0)//Me fijo si el ciclo de trabajo es cero

{ PWM=0;//Si el ciclo de trabajo es cero paro el sistema

}

else

{

PWM=(DutyCycle>=Triangular); //si se cumple la condición se pone en 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

}

}

static void mdlTerminate(SimStruct *S)

{

Page 82: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

}

#ifdef MATLAB_MEX_FILE #include "simulink.c"

#else

#include "cg_sfun.h"

#endif

Page 83: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Anexo 2: Diagramas Simulink

La herramienta utilizada como interfaz gráfica entre el programador y la generación

de código C para trabajar en tiempo real fue Simulink. Este entorno junto con las s-

function y los toolbox mencionados previamente permiten, en conjunto, que la aplicación

se ejecute y controle al sistema en tiempo real. A continuación se presentan los

diagramas Simulink implementados para el desarrollo del proyecto.

Diagrama Simulink implementado con un controlador PID

Page 84: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Diagrama Simulink implementado con un controlador por asignación de polos

Page 85: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Anexo 3: Algoritmo de la interfaz gráfica

A partir de la herramienta Guide de Matlab se llevó a cabo la creación de la interface

gráfica de usuario. La cual, a diferencia del diagrama Simulink y las s-function no genera

código que trabaja en tiempo real.

Para la creación de dicha interfaz se utilizo el lenguaje de programación de Matlab y

la creación de objetos que facilita la herramienta Guide, como lo son: menús, slider,

pushbutton, statixtex, edittext, list, option, axes, ect. A partir de los eventos (callback)

que poseen cada uno de estos objetos se programaron las distintas funcionalidades de la

interfaz.

A continuación se presenta el código utilizado para su desarrollo.

Algoritmo de la pantalla principal de la interfaz gráfica

function varargout = interfaz(varargin)

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

function interfaz_OpeningFcn(hObject, eventdata, handles, varargin)

%Aquí seteamos los parámetros iniciales axes(handles.axes1);

a=imread('83.jpg');

image(a);

axis off;

set(handles.conect,'enable','on');

set(handles.estado,'String','Sistema Detenido','backgroundcolor','yellow') set(handles.pushbutton2,'enable','off');

assignin('base','periodo',20);

assignin('base','peso_final',2);

assignin('base','base_de_tiempo',0.001);

assignin('base','ventana',0.125); assignin('base','caudal',0.5);

Page 86: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

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);

function varargout = interfaz_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

% -----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

% --------------------------------------------------------------------------------------------------

%Aquí se programa el evento información del menú para abrir la pantalla

información-----------------------------------------------------------------------------------------------

function conect_Callback(hObject, eventdata, handles)

informacion%Abrimos la pantalla de información

% --------------------------------------------------------------------------------------------------

% ----------Aquí se programa el evento del botón play-------------------------------------

function pushbutton2_Callback(hObject, eventdata, handles)

assignin ( 'base', 'motivo',0) ;%Reseteamos los parámetros relacionados con las alarmas

global T

Page 87: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

set_param(T,'value','0')%Se resetea el estado del botón stop escribiendo sobre

simulink

%---- se cargan los parámetros asociados con los modos--------------------------------

a=get(handles.list1,'Value');

if a==1

load('Modo_Normal.mat');%Cargo el archivo correspondiente a modo normal

elseif a==2 load('Modo_Avanzado.mat');%Cargo el archivo correspondiente a modo avanzado

end

%----------Se realiza Validación de los valores ingresados por teclado------------------

cau=str2double(get(handles.edit1,'String')); if isnan(cau)% Comprobamos que el dato ingresado en el edittext se correcto

errordlg('El caudal ingresado debe ser numerico','ERROR');%Si el dato es

incorrecto se muestra un mensaje de error

set(handles.edit1,'String',0);%Si el dato es incorrecto asigno un valor 0, por

default, al edit text

cau=0;%Si el dato es incorrecto asigno un valor 0, por default, al workspace else

assignin ( 'base', 'caudal', cau) ;%Si el dato es correcto lo asignamos al

workspace

end

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) ;

%----------------Chequeo el estado de Dosificación y oculto evento ---------------------

motivo=evalin('base','motivo');%Leo el valor que me indica el estado del sistema

if motivo(length(motivo))==0 %Chequeo si en el sistema no ocurre ningún evento set(handles.estado,'String','Dosificando...','backgroundcolor','green')%Seteo el

edit text que indica el estado

set(handles.evento,'visible','off') %Oculto el edit text que indica el evento

Page 88: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

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

function popupmenu1_CreateFcn(hObject, eventdata, handles)

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');

%-------Me fijo si esta dosificando y muestro el estado y evento-------------

if motivo(length(motivo))==0%Me fijo si la variable que marca los eventos indica

proceso en dosificación y luego seteo los Static text set(handles.estado,'String','Dosificando...','backgroundcolor','green')

else

if motivo(length(motivo))==1%Me fijo si la variable que marca los eventos

indica que la dosificación fue exitosa y luego seteo los Static text

set(handles.estado,'String','Sistema Detenido','backgroundcolor','yellow')

set(handles.evento,'visible','on','String','Dosificacion Exitosa','backgroundcolor','green')

stop(var.tmr);

else

if motivo(length(motivo))==2%Me fijo si la variable que marca los eventos

indica que se activo el sensor de nivel y luego seteo los Static text set(handles.estado,'String','Sistema Detenido','backgroundcolor','yellow')

set(handles.evento,'visible','on','String','Tolva Vacia','backgroundcolor',[1

0.502 0])

stop(var.tmr);

else

if motivo(length(motivo))==3%Me fijo si la variable que marca los eventos indica que se presiono la parada de emergencia y luego seteo los Static text

set(handles.estado,'String','Sistema Detenido','backgroundcolor','red')

set(handles.evento,'visible','on','String','Parada de

Emergencia','backgroundcolor','red')

stop(var.tmr); end

end

end

Page 89: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

end

function popupmenu1_Callback(hObject, eventdata, handles)

function listbox1_CreateFcn(hObject, eventdata, handles)

if ispc

set(hObject,'BackgroundColor','white');

else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

function listbox1_Callback(hObject, eventdata, handles)

% ----------Aquí se programa el evento del botón stop-------------------------------------

function pushbutton4_Callback(hObject, eventdata, handles)

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

function list1_CreateFcn(hObject, eventdata, handles)

if ispc

set(hObject,'BackgroundColor','white');

else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

%------Cambio el valor de la lista según se halla seleccionado modo normal o

avanzado------------------------------------------------------------------------------------------- function list1_Callback(hObject, eventdata, handles)

global sel

sel=get(hObject,'Value');%Leo el valor de la lista y muestro en pantalla el valor

seleccionado

switch sel

case 1 warndlg('Ha seleccionado Modo Normal','Gracias');

case 2

warndlg('Ha seleccionado Modo Avanzado','Gracias');

case 3

warndlg('Ha seleccionado Modo Manual','Gracias'); end

function edit2_CreateFcn(hObject, eventdata, handles)

Page 90: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

if ispc

set(hObject,'BackgroundColor','white'); else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

function edit1_CreateFcn(hObject, eventdata, handles)

if ispc set(hObject,'BackgroundColor','white');

else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

function edit1_Callback(hObject, eventdata, handles)

% ----------Aquí se programa el evento planta del menú para abrir la pantalla

planta-----------------------------------------------------------------------------------------------------

function planta_Callback(hObject, eventdata, handles)

planta%Abro la pantalla de planta % -------------------------------------------------------------------------------------------------

% ----------Aquí se programa el evento control del menú para abrir la pantalla

control-----------------------------------------------------------------------------------------------------

function control_Callback(hObject, eventdata, handles)

control%Abro la pantalla control % ------------------------------------------------------------------------------------------------

function pushbutton4_ButtonDownFcn(hObject, eventdata, handles)

function edit2_Callback(hObject, eventdata, handles)

function figure1_DeleteFcn(hObject, eventdata, handles)

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

function checkbox1_Callback(hObject, eventdata, handles)

function pushbutton6_Callback(hObject, eventdata, handles)

% ----------Aquí se programa el evento Plot del menú -----------------------------------

function ploteo_Callback(hObject, eventdata, handles)

%%% Acá se grafican los parámetros Act, Set Point y Caudal real

axes(handles.axes4);%Tomo posesión de axes cla reset;%Reseteo el axes

axes(handles.axes4);%tomo posesión del axes

caudal_real=evalin('base','caudal_real');%Leo la variable de caudal

t1=0:0.001:(length(caudal_real)*0.001)-0.001;%Genero el vector tiempo

plot(t1,caudal_real,'LineWidth',2,'color','blue');%Ploteo el caudal Vs el tiempo

hold on;

Page 91: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

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

grid on;%Asigno la grilla

axis([0 (length(caudal_real)*0.001) 0 5]);%Asigno una dimensión al grafico

set(handles.axes4,'YColor',[0.2 0.4 0.7]);%Asigno un color al eje X

set(handles.axes4,'XColor',[0.2 0.4 0.7]);%Asigno un color al eje Y set(handles.axes4,'Color',[0.3 0.3 0.3]);%Asigno un color a l fondo del grafico

title('Comportamiento de la Planta','Color',[0.2 0.4 0.7]);%Asigno un titulo a la

imagen

xlabel('Segundos');%Asigno una etiqueta a la coordenada X

ylabel('Caudal');%Asigno una etiqueta a la coordenada Y legend('Caudal [Kg/s]','Set Point','Actuacion [5%]',2);%Asigno una leyenda al

grafico

hold off

Algoritmo de la pantalla “ajustes de control” function varargout = control(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @control_OpeningFcn, ...

'gui_OutputFcn', @control_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

function control_OpeningFcn(hObject, eventdata, handles, varargin)

%Aquí seteamos los parámetros iniciales

axes(handles.axes1);

a=imread('PID.jpg'); image(a);

axis off;

axes(handles.axes2);

b=imread('PID_2.jpg');

image(b);

axis off; load('Modo_Avanzado.mat');

set(handles.slider1,'Value',p);

set(handles.text4,'String',p);

set(handles.slider3,'Value',in);

Page 92: Proyecto Final v 1.7

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);

function varargout = control_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function slider1_CreateFcn(hObject, eventdata, handles)

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 ganancia

proporcional-----------

function slider1_Callback(hObject, eventdata, handles) set(handles.text4,'String',get(handles.slider1,'Value'));%Se muestra en el edit text

el valor del slider

% --------Aquí se programa el evento del boton guardar---------------------------------

function pushbutton1_Callback(hObject, eventdata, handles) load('Modo_Avanzado.mat');%Cargo el archivo modo avanzado .mat

%---Se setean los valores de los slider en el workspace

assignin('base','p',get(handles.slider1,'Value'));

assignin('base','in',get(handles.slider3,'Value'));

assignin('base','d',get(handles.slider4,'Value'));

assignin('base','epsi',get(handles.slider5,'Value')); assignin('base','w',get(handles.slider6,'Value'));

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];

Page 93: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

B=[2.65+a -2.325+b 0.675+c D]';

C=inv(A)*B; r=C(1);

s0=C(2);

s1=C(3);

s2=C(4);

assignin('base','s0',s0);

assignin('base','s1',s1); assignin('base','s2',s2);

assignin('base','r',r);

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

% --------Aquí se programa el evento del botón cancelar----------------------------------

function pushbutton2_Callback(hObject, eventdata, handles) warndlg('Recuerde que para trabajar con "Modo Avanzado" debe seleccionarlo en la

pantalla principal','Sus Datos NO han sido guardados.Gracias');

close(control)%Se cierra la pantalla control

function edit1_CreateFcn(hObject, eventdata, handles)

if ispc

set(hObject,'BackgroundColor','white');

else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

function edit1_Callback(hObject, eventdata, handles)

function checkbox1_Callback(hObject, eventdata, handles)

%-- Se habilitan o deshabilitan los slider según el estado del checkbox2------- a=get(handles.checkbox1,'Value');

if a==1

set(handles.frame1,'Enable','on')

set(handles.slider1,'Enable','on')

set(handles.slider3,'Enable','on') set(handles.slider4,'Enable','on')

else

set(handles.frame1,'Enable','off')

set(handles.slider1,'Enable','off')

set(handles.slider3,'Enable','off')

set(handles.slider4,'Enable','off') end

%-- Se habilitan o deshabilitan los slider según el estado del checkbox2-------

function checkbox2_Callback(hObject, eventdata, handles)

a=get(handles.checkbox2,'Value'); if a==1

set(handles.frame2,'Enable','on')

set(handles.slider5,'Enable','on')

Page 94: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

set(handles.slider6,'Enable','on')

else

set(handles.frame2,'Enable','off')

set(handles.slider5,'Enable','off')

set(handles.slider6,'Enable','off')

end

function slider3_CreateFcn(hObject, eventdata, handles)

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 ganancia integral----

function slider3_Callback(hObject, eventdata, handles)

set(handles.text14,'String',get(handles.slider3,'Value'));%Se muestra en el edit text el valor del slider

function slider4_CreateFcn(hObject, eventdata, handles)

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 ganancia derivativa---- function slider4_Callback(hObject, eventdata, handles)

set(handles.text16,'String',get(handles.slider4,'Value'));%Se muestra en el edit text

el valor del slider

function slider5_CreateFcn(hObject, eventdata, handles)

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 el 1º coeficiente de

los ceros del controlador----------

function slider5_Callback(hObject, eventdata, handles)

set(handles.text18,'String',get(handles.slider5,'Value'));%Se muestra en el edit text

el valor del slider

function slider6_CreateFcn(hObject, eventdata, handles)

usewhitebg = 1;

if usewhitebg

set(hObject,'BackgroundColor',[.9 .9 .9]); else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

Page 95: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

% --------Aquí se programa el evento del slider vinculado con el 2º coeficiente de los ceros del controlador----------

function slider6_Callback(hObject, eventdata, handles)

set(handles.text20,'String',get(handles.slider6,'Value'));%Se muestra en el edit text

el valor del slider

Algoritmo de la pantalla “ajustes de planta” function varargout = planta(varargin)

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @planta_OpeningFcn, ... 'gui_OutputFcn', @planta_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

function planta_OpeningFcn(hObject, eventdata, handles, varargin)

%Aquí seteamos los parámetros iniciales

axes(handles.axes2); a=imread('motor_2.jpg');

image(a);

axis off;

axes(handles.axes3);

b=imread('encoder1.jpg'); image(b);

axis off;

load('Modo_Avanzado.mat');

set(handles.text9,'String',num2str(periodo));

set(handles.slider1,'Value',periodo);

periodo=0.0001*periodo; frecuencia=round(1/periodo);

set(handles.text5,'String',num2str(periodo));

set(handles.text7,'String',num2str(frecuencia));

ventana=ventana*1000;

set(handles.text13,'String',num2str(ventana)); set(handles.slider3,'Value',ventana);

handles.output = hObject;

guidata(hObject, handles);

Page 96: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

function varargout = planta_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function slider1_CreateFcn(hObject, eventdata, handles)

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 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

function edit1_CreateFcn(hObject, eventdata, handles)

if ispc

set(hObject,'BackgroundColor','white'); else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

function edit1_Callback(hObject, eventdata, handles)

function slider3_CreateFcn(hObject, eventdata, handles)

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

% --------Aquí se programa el evento del botón guardar----------------------------------

function pushbutton1_Callback(hObject, eventdata, handles)

load('Modo_Avanzado.mat');%Cargo el archivo modo avanzado.mat

ventana=get(handles.slider3,'Value');%Tomo el valor del slider 3

ventana=0.001*ventana;%Calculo el valor de la ventana en segundos

assignin('base','ventana',ventana);%Asigno el valor de ventana al workspace periodo=get(handles.slider1,'Value');%Tomo el valor del slider 1

assignin('base','periodo',periodo);%Asigno el valor del periodo al workspace

Page 97: Proyecto Final v 1.7

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')%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

% --------Aquí se programa el evento del botón cancelar----------------------------------

function pushbutton2_Callback(hObject, eventdata, handles) warndlg('Recuerde que para trabajar con "Modo Avanzado" debe seleccionarlo en la

pantalla principal','Sus Datos NO han sido guardados.Gracias');

close(planta)%Se cierra la pantalla planta

function axes2_CreateFcn(hObject, eventdata, handles)

function edit2_CreateFcn(hObject, eventdata, handles)

if ispc

set(hObject,'BackgroundColor','white');

else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

function edit2_Callback(hObject, eventdata, handles)

Algoritmo de la pantalla “Información” function varargout = informacion(varargin)

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

function informacion_OpeningFcn(hObject, eventdata, handles, varargin)

%Aquí seteamos los parámetros iniciales

axes(handles.axes1);

a=imread('ensayoesc.bmp');

image(a);

Page 98: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

axis off;

set(handles.checkbox1,'value',1) set(handles.checkbox2,'value',0)

handles.output = hObject;

guidata(hObject, handles);

function varargout = informacion_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;

% ----------Aqui se programa el evento del checkbox correspondiente a la respuesta

al escalón--------------------------------------------------------------------------------------------------

function checkbox1_Callback(hObject, eventdata, handles) axes(handles.axes1);%Tomo posesión del axes

a=imread('ensayoesc.bmp');%Leo la imagen que deseo mostrar

image(a);%Cargo la imagen en el axes

axis off;

set(handles.checkbox1,'value',1)%Seteo el checkbox1 como activo

set(handles.checkbox2,'value',0)%Seteo el checkbox2 como inactivo

% ----------Aqui se programa el evento del checkbox correspondiente a la respuesta

en frecuencia----------------------------------------------------------------------------------------------

function checkbox2_Callback(hObject, eventdata, handles)

axes(handles.axes1);%Tomo posesión del axes

a=imread('bode.bmp');%Leo la imagen que deseo mostrar image(a);%Cargo la imagen en el axes

axis off;

set(handles.checkbox1,'value',0)%Seteo el checkbox1 como inactivo

set(handles.checkbox2,'value',1)%Seteo el checkbox2 como activo

Page 99: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Anexo 4: Explicación de los circuitos desarrollados

Señal de Actuación

Se diseño la electrónica necesaria con el fin de amplificar la señal proveniente de

la pc, modulada en ancho de pulso (PWM) a fin de entregar la corriente y tensión

necesaria para el correcto funcionamiento del motorreductor.

5 mA 5 A

0-5 V 0-24 V

Para ello se utilizó una combinación de transistores, en modo corte o saturación

funcionando en lo que se conoce como llave (Abierto o Cerrado). La señal PWM

proveniente de la pc ingresa en la base del transistor de baja potencia NPN BC548. La

corriente de emisor de este, provoca la conducción de los transistores de potencia NPN

TIP41. La conexión de estos es de tipo Darlintong con una pequeña resistencia en la

base. Al disponer de dos de estos en paralelo se asegura que soporten la corriente que

demanda el motor, especialmente en el arranque.

La tensión y corriente que alimenta a este circuito es generada por dos fuentes

conmutadas de PC dispuestas en serie.

Etapa

Amplificación

Page 100: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

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.

Pin Nº Tipo Conexión Bornera Nº 2 Salida Load CAD 1

3 Salida Acumulado SR 2

5 Salida Clock SR 3

7 Salida Señal de actuación 4

10 Entrada Señal del SR Nº1 5

11 Entrada Señal del SR Nº2 6

12 Entrada Señal del Sensor de Nivel 7

13 Entrada Señal del encoder 8

15 Entrada Parada de emergencia 9

25 Tierra Tierra de las fuentes 10

En el plano de autocad puede verse el esquema de dicha placa.

Page 101: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

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.

Page 102: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Acondicionamiento de la Señal de celda de carga.

El objetivo de este circuito es el tratamiento y acondicionamiento de la señal

proveniente de la celda de carga, normalizando la señal que esta entrega para poder

luego procesarla.

Tensión Diferencial 0 a 5Volt

2mV/V

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.

Etapa

Acondicionamiento

de Señal

Page 103: Proyecto Final v 1.7

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.

00110010

Señal Analógica 0 – 5 Volt

Para cumplir con este objetivo, se utilizó el conversor analógico-digital de 8 bits

AD0804, el cual realiza la conversión de la señal de tensión proveniente del

acondicionador de señal antes mencionado. Esta conversión se realiza simplemente

mediante la orden de inicio de conversión activo a nivel bajo de la pata 3 de dicho

integrado. Apenas unos instantes después tenemos los resultados en el Bus de datos

de dicho componente en forma paralela.

La etapa siguiente dentro del circuito es, mediante un registro de desplazamiento, la

conversión de estos datos a un formato serie. Para ello se utilizó el Shift Register

74HC175. Dándole desde la PC una vez más una orden de inicio en la pata 1

(acumulador) y una señal de sincronismo en la pata 2 (clock), el registro comienza a

desplazar los datos hasta finalizar con los 8 bits. Por último se hace pasar estos por

el optoaislador 4n25 como para acondicionar la señal antes de enviarla a la pc,

evitando de esta manera algún tipo de error en el proceso de detección por parte de

esta.

Etapa

Trasmisión de

Datos

Page 104: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Anexo 5

Hoja de datos

Page 105: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Anexo 6: Costos del proyecto

A continuación se presentan los costos que fueron invertidos en la realización del

proyecto, detallando además los materiales reutilizados o donados. Esto último se puede

apreciar en la siguiente tabla.

Costos desarrollados en este proyecto.

Recursos Costo estimado

3 Fuente de switching $600

Motorreductor de cc $700

Componentes electrónicos $400

Acoples del motor $100

Acrílico $100

Parada de emergencia $80

Estructura mecánica (Reutilizada)

Celdas de carga (Reutilizada)

PC (Prestada por UNQ)

Licencia Matlab (Prestada por UNQ)

Costo Total $1.980

Gastos Varios Costo estimado

Ferretería $200

Viáticos, impresiones, llamados telefónicos $100

Pintura $50

Producto (Arena) (Donada)

Costo Total $350

Costo Total (Recursos + Gastos varios) $2.330

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.

Page 106: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Costos estimados del proyecto completo.

Recursos Costo estimado

3 Fuente de switching $600

Motorreductor de cc $700

Componentes electrónicos $400

Acoples del motor $100

Acrílico $100

Parada de emergencia $80

Estructura mecánica 14$2.000

Celdas de carga *$500

PC *$2.800

Licencia Matlab+Toolbox *$10.000

Costo Total $16.680

Gastos Varios Costo estimado Ferretería $200

Viáticos, impresiones, llamados telefónicos $100

Pintura $50

Producto (Arena) (Donada)

Costo Total $350

Costo Total (Recursos + Gastos varios) $17.030

14

Datos estimados

Page 107: Proyecto Final v 1.7

Anexo 7: Manual de usuario

Manual de usuario para el estudio,

identificación y control de una planta

medidora de caudal másico.

Universidad Nacional de Quilmes (U.N.Q.) Ingeniería en automatización y control Industrial

Manchione, Pablo Germán Artazcoz, Matías

Page 108: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 2

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

Page 109: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 3

A-Implementación o Verificación de Conexiones y Puesta en marcha

A continuación se presentan las tareas de conexionado y puesta en marcha del

sistema:

1_ Primero se debe encender la PC.

2_ Alimentar las fuentes de tensión con 220 V.

3_ Encender las fuentes de alimentación.

4_ Verificar que el pulsador de parada de emergencia se encuentre sin presionar.

5_ Conectar la ficha DB25 entre el caudalímetro y la PC, a través del puerto paralelo.

6_ Abrir el software Matlab 6.5 y cargar el archivo interfaz.m. Este archivo ejecutará el

inicio de la interfaz gráfica.

Una Vez concluidas estas operaciones, el sistema se encuentra listo para ser

operado.

ADVERTENCIA: Evite tener algún proceso corriendo en simultáneo mientras utiliza

el sistema. Dependiendo del procesador que utilice, el sistema podría arrojar

mensajes de advertencias demorando la ejecución de la aplicación.

B-Operación del Sistema

La operación del sistema se lleva a cabo a partir de la interfaz gráfica

implementada en Matlab. Dicha interfaz presenta la siguiente pantalla de opciones:

Page 110: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 4

En ella se pueden observar una lista de opciones brindadas a partir de un menú.

A continuación se explica para que se utilizan y, que ofrecen cada una de estas opciones.

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

Para visualizar las diferentes imágenes se deben seleccionar los checkBox

correspondientes en la parte inferior de la pantalla. Esto último se ilustra en la imagen

anterior.

Page 111: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 5

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.

Page 112: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 6

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.

A partir de barras de desplazamiento se puede ajustar, por un lado, las ganancias de

un controlador PID, el cual está directamente ligado al archivo Simulink PID.mdl. Por lo

tanto en caso de querer utilizarlo este debe vincularse.

Por otro lado, las barras de la parte inferior de la pantalla permiten modificar el

factor de amortiguamiento y la frecuencia natural de oscilación de los polos a lazo cerrado

del sistema. En este caso el controlador utilizado es calculado por el método de

asignación de polos. Para el uso de estos parámetros debe vincularse desde la pantalla

principal el archivo asignación_de_polos.mdl.

Page 113: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 7

Luego, al presionar el botón “Guardar” ubicado en la parte inferior de la pantalla se

salvarán todos los ajustes realizados, y se informará (al igual que en los ajustes de planta)

que en caso de querer utilizarlos deberá seleccionarse un modo de uso avanzado en la

pantalla principal.

Por último, para abandonar la pantalla sin salvar los cambios realizados, se debe

presionar el botón “Cancelar”.

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.

Page 114: Proyecto Final v 1.7

Estudio, identificación y control de una planta medidora de caudal másico. UNQ

Página 8

Estado Evento Descripción

Dosificando… Ninguno El sistema se encuentra en plena dosificación.

Sistema Detenido Dosificación exitosa El sistema se detiene luego de llegar al peso requerido

exitosamente. Sistema Detenido Tolva Vacía El sistema se encuentra detenido,

a causa de falta de producto en la

tolva. Sistema Detenido Dosificación Incompleta El sistema se encuentra detenido,

a causa de que se presionó el

botón Stop desde la interfaz gráfica.

Sistema Detenido Parada de Emergencia El sistema se encuentra detenido, a causa de que se presionó el botón Parada de Emergencia

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.

C- Calibración del sistema

A continuación se explican los pasos a seguir para realizar la calibración del sistema.

Calibración de celdas de carga

A continuación se detallan los pasos a seguir para realizar la calibración de las celdas

de carga:

1_ Se deben ajustar los registros mecánicos dispuestos sobre las celdas de carga.

Estos deben quedar de tal manera que se ejerza una fuerza pareja sobre ambas celdas.

2_ Se debe verificar que la cinta se halle lo más centrada posible frente ambas

celdas.

3_ Se ajusta el cero a partir de la respuesta de las celdas frente a la cinta sin

producto. Este ajuste se realiza desde la placa electrónica de amplificación.

4_ Se exponen diferentes pesos en la cinta, ajustando la ganancia de la respuesta

desde la placa electrónica correspondiente.

5_ El último ajuste de ganancia se lleva a cabo desde la PC, en el diagrma

Simulink.

5_ El proceso debe repetirse hasta obtener los resultados deseados en la PC.