programa de supervisión y configuración para controladores

227
Universidad de Costa Rica Facultad de Ingeniería Escuela de Ingeniería Eléctrica IE – 0502 Proyecto Eléctrico Programa de supervisión y configuración para controladores Foxboro® 716C Por: Roberto Herrera Matamoros Ciudad Universitaria Rodrigo Facio Agosto de 2006

Upload: phungdung

Post on 31-Dec-2016

230 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Programa de supervisión y configuración para controladores

Universidad de Costa Rica Facultad de Ingeniería

Escuela de Ingeniería Eléctrica

IE – 0502 Proyecto Eléctrico

Programa de supervisión y configuración para controladores Foxboro® 716C

Por:

Roberto Herrera Matamoros

Ciudad Universitaria Rodrigo Facio Agosto de 2006

Page 2: Programa de supervisión y configuración para controladores

Programa de supervisión y configuración para controladores Foxboro® 716C

Por: Roberto Herrera Matamoros

Sometido a la Escuela de Ingeniería Eléctrica de la Facultad de Ingeniería

de la Universidad de Costa Rica como requisito parcial para optar por el grado de:

BACHILLER EN INGENIERÍA ELÉCTRICA

Aprobado por el Tribunal:

_________________________________ Ing. Víctor M. Alfaro

Profesor Guía

_________________________________ _________________________________ Ing. Geovanny Delgado Cascante Ing. Andrés Díaz Soto Profesor lector Profesor lector

Page 3: Programa de supervisión y configuración para controladores

iii

iii

DEDICATORIA

A Dios, quien me da las fuerzas cada día.

A mis padres, que me han dado su apoyo en todos mis años de estudio.

A Pao, por la paciencia y comprensión, pero sobre todo, por todos los sacrificios.

Page 4: Programa de supervisión y configuración para controladores

iv

iv

RECONOCIMIENTOS

Agradezco al profesor Víctor Alfaro por su disposición y disponibilidad para ayudar

y aclarar dudas a lo largo del desarrollo de todo el proyecto, así como tomarse el tiempo

necesario para leer cada uno de los avances del trabajo.

A Marco Chacón, Luis Diego Gómez y Alfonso Herrera por la ayuda invaluable y

desinteresada para la confección de las cajas de interconexión de los controladores.

También a Marco Chacón, Esteban Ortiz, Andrés Díaz y Lochi Yu por sus

sugerencias de cómo resolver mis dudas y mejorar el funcionamiento del programa en Perl.

Un agradecimiento especial además a Daniel Picado por brindarme la flexibilidad

en el trabajo necesaria para poder completar este proyecto satisfactoriamente.

Finalmente, agradezco a cada uno de mis compañeros y amigos que estuvieron a mi

lado dando muestras de apoyo y palabras de aliento todo el tiempo.

Muchas gracias a todos, esto no se pudo haber hecho sin ustedes.

Page 5: Programa de supervisión y configuración para controladores

v

v

ÍNDICE GENERAL

ÍNDICE DE FIGURAS................................................................................ viii ÍNDICE DE TABLAS.....................................................................................xi NOMENCLATURA..................................................................................... xiii RESUMEN......................................................................................................16

CAPÍTULO 1: Introducción .........................................................................17

1.1 Objetivos...............................................................................................................18 1.1.1 Objetivo general............................................................................................18 1.1.2 Objetivos específicos ....................................................................................18

1.2 Metodología ..........................................................................................................19 CAPÍTULO 2: Desarrollo teórico ................................................................21

2.1 Conceptos de Control Automático........................................................................21 2.1.1 Elementos de un sistema de control realimentado........................................21 2.1.2 Tipos de controladores..................................................................................23

2.2 El Controlador Digital Foxboro® 716C ...............................................................26 2.2.1 Especificaciones generales ...........................................................................26 2.2.2 Entradas y salidas..........................................................................................26 2.2.3 Interfaz de comunicación serial ....................................................................29 2.2.4 Características de control..............................................................................29 2.2.5 Características adicionales............................................................................31 2.2.6 Modo de configuración / operación ..............................................................32

2.3 Interfaz RS-485.....................................................................................................35 2.3.1 Especificaciones generales ...........................................................................35 2.3.2 Señales ..........................................................................................................36 2.3.3 Topología y redes..........................................................................................38 2.3.4 Puesta a tierra................................................................................................41 2.3.5 Efectos de líneas de transmisión y otras consideraciones.............................42 2.3.6 Enlace simplificado de baja potencia............................................................44 2.3.7 Cables............................................................................................................44

2.4 Protocolo de Comunicación..................................................................................46 2.4.1 Características deseables...............................................................................46 2.4.2 Protocolo MODBUS.....................................................................................46

Page 6: Programa de supervisión y configuración para controladores

vi

vi

2.4.3 Principio de protocolo maestro/esclavo........................................................47 2.4.4 Formato de mensajes MODBUS ..................................................................48 2.4.5 Diagramas de comunicación.........................................................................50 2.4.6 Detección de errores .....................................................................................54 2.4.7 Protocolo MODBUS aplicado al Foxboro® 716C .......................................56

CAPÍTULO 3: Familiarización con el controlador Foxboro® 716C en el Laboratorio de Control Automático ............................................................60

3.1 Descripción y configuración de los equipos .........................................................60 3.1.1 Procesos de caudal y temperatura Lab-Volt® 3522 .....................................60 3.1.2 Controlador Foxboro® 716C........................................................................62 3.1.3 Programa de control digital Lab-Volt LVPROSIM......................................63 3.1.4 Conexión de los equipos ...............................................................................64

3.2 Experimentos realizados en el laboratorio............................................................67 CAPÍTULO 4: Preparación inicial de la red RS-485 y pruebas de protocolo de comunicación ............................................................................69

4.1 Conexión del controlador Foxboro® 716C con la PC..........................................69 4.2 Pruebas de comunicación utilizando software de monitoreo de puerto serial. .....73

4.2.1 Pruebas para el puerto...................................................................................74 4.2.2 Pruebas de protocolo y comandos MODBUS ..............................................77

CAPÍTULO 5: Desarrollo del programa de supervisión y configuración82

5.1 Requerimientos del programa...............................................................................82 5.1.1 Requerimientos generales .............................................................................82 5.1.2 Ejemplos de programas con interfaz gráfica.................................................83

5.2 Elección del lenguaje de programación ................................................................86 5.3 Descripción de la interfaz gráfica .........................................................................88

5.3.1 Vista general de la interfaz ...........................................................................88 5.3.2 Control de conexión/desconexión.................................................................89 5.3.3 Tablero de operación y sintonización del controlador..................................90 5.3.4 Configuración de gráfico y registro ..............................................................92 5.3.5 Gráfico de tendencias....................................................................................93 5.3.6 Ventana de mensajes.....................................................................................94

5.4 Funcionamiento interno del programa..................................................................94 5.4.1 Interacción con interfaz gráfica ....................................................................94 5.4.2 Establecimiento de conexión ........................................................................95 5.4.3 Proceso de envío de mensajes.......................................................................98 5.4.4 Procesamiento adicional de mensajes.........................................................100 5.4.5 Ciclo de graficación y registro de variables................................................101 5.4.6 Detección y corrección de errores ..............................................................103

CAPÍTULO 6: Conclusiones y recomendaciones .....................................105

BIBLIOGRAFÍA..........................................................................................110

Page 7: Programa de supervisión y configuración para controladores

vii

vii

APÉNDICE A: Parámetros de configuración del Foxboro® 716C ........112

APÉNDICE B: Parámetros de operación del Foxboro® 716C ...............117

APÉNDICE C: Funciones del protocolo de comunicaciones del Foxboro® 716C [14]..........................................................................................................118

C.1 Función 1 y 2: Lectura de n bits .........................................................................118 C.2 Función 3 y 4: Lectura de n palabras..................................................................119 C.3 Función 5: Escritura de un bit.............................................................................120 C.4 Función 6: Escritura de una palabra ...................................................................121 C.5 Función 15: Escritura de n bits ...........................................................................122 C.6 Función 16: Escritura de n palabras....................................................................123 APÉNDICE D: Direcciones de memoria del Foxboro® 716C [14] ...........124

Apéndice E: Experimentos realizados en el Laboratorio de Control .....131

E.1 Experimento 1: Característica Estática del Proceso ...........................................131 E.1.1 Procedimiento .............................................................................................131 E.1.2 Resultados...................................................................................................132

E.2 Experimento 2: Característica Dinámica del Proceso.........................................134 E.2.1 Procedimiento .............................................................................................134 E.2.2 Resultados...................................................................................................137

E.3 Experimento 3: Parámetros últimos o críticos....................................................139 E.3.1 Procedimiento .............................................................................................139 E.3.2 Resultados...................................................................................................141

E.4 Experimento 4: Controlador Proporcional (P)....................................................143 E.4.1 Procedimiento .............................................................................................143 E.4.2 Resultados...................................................................................................145

E.5 Experimento 5: Controlador Proporcional Integral (PI) .....................................147 E.5.1 Procedimiento .............................................................................................147 E.5.2 Resultados...................................................................................................150

E.6 Experimento 6: Controlador Proporcional Integral Derivativo (PID) ................155 E.6.1 Procedimiento .............................................................................................155 E.6.2 Resultados...................................................................................................156

E.7 Experimento 7: Método de Sintonización de Ziegler y Nichols.........................159 E.7.1 Procedimiento .............................................................................................159 E.7.2 Resultados...................................................................................................161

E.8 Experimento 8: Sintonización mediante criterios integrales ..............................163 E.8.1 Procedimiento .............................................................................................163 E.8.2 Resultados...................................................................................................166

APÉNDICE F: Código fuente del programa.............................................170

APÉNDICE G: Manual de usuario del programa....................................202

Page 8: Programa de supervisión y configuración para controladores

viii

viii

ÍNDICE DE FIGURAS

Figura 2.1 Lazo de Control Realimentado [1]....................................................................21

Figura 2.2 Diagrama de bloques de un controlador PID ideal [1] .....................................24

Figura 2.3 Diagrama de bloques simplificado del controlador Foxboro® 716C .............26

Figura 2.4 Diagrama de la disposición de las terminales del Foxboro® 716C [13] ...........27

Figura 2.5 Algoritmo de auto-ajuste SMART del Foxboro® 716C [13]............................30

Figura 2.6 Interruptor del modo de configuración/operación del Foxboro® 716C [13] ....32

Figura 2.7 Panel frontal del controlador Foxboro® 716C [13] ..........................................34

Figura 2.8 Señal diferencial o balanceada en una interfaz RS-485 [9] ..............................37

Figura 2.9 Configuración de dos hilos (half duplex) para RS-485 [8] ...............................38

Figura 2.10 Configuración de cuatro hilos (full duplex) para RS-485 [8] .........................39

Figura 2.11 Diferentes topologías posibles para una red RS-485 [11] ...............................40

Figura 2.12 Conductor de señal común en una interfaz RS-485 [11] .................................41

Figura 2.13 Terminación de las líneas de transmisión de una red RS-485 [10] .................43

Figura 2.14 Velocidad de transmisión máximas permitida según la longitud de línea [9].45

Figura 2.15 Marco unitario de mensaje de protocolo MODBUS de línea serial [8]..........48

Figura 2.16 Formato de un byte en el protocolo MODBUS de línea serial . ..................49

Figura 2.17 Separación mínima entre marcos unitarios de mensajes MODBUS . ...........50

Figura 2.18 Separación mínima entre caracteres de un marco de mensaje MODBUS. ...50

Figura 2.19 Sintaxis de diagramas de estados de la comunicación MODBUS [8]. ...........51

Figura 2.20 Diagrama de Estados del maestro en la comunicación MODBUS [8]. ..........51

Figura 2.21 Diagrama de Estados del esclavo en la comunicación MODBUS. ...............53

Figura 2.22 Diagrama de flujo para el algoritmo de cálculo del CRC 16. .......................56

Figura 3.1 Diagrama esquemático de los procesos del Lab-Volt® 3522. ........................61

Figura 3.2 Conexiones para el control y monitoreo del proceso de temperatura .............65

Page 9: Programa de supervisión y configuración para controladores

ix

ix

Figura 3.3 Conexiones para el control y monitoreo del proceso de caudal ......................66

Figura 4.1 Convertidor RS-232/485 de Aten Technologies .............................................70

Figura 4.2 Adaptador DB-9 hembra a DB-25 macho para puerto serial ..........................70

Figura 4.3 Diagrama de conexión serial entre la PC y el controlador ..............................72

Figura 4.4 Software de monitoreo de puerto serial RealTerm..........................................74

Figura 4.5 Señal “A” al transmitir la cadena ASCII “RS” ...............................................75

Figura 4.5 Señal “A”, “B” y diferencial al transmitir la cadena ASCII “RS” ..................76

Figura 4.6 Captura del comando que pone el controlador en modo remoto.....................78

Figura 4.7 Petición y respuesta para la instrucción de modo remoto ...............................79

Figura 4.8 Petición errónea y respuesta de error vista en el RealTerm ............................81

Figura 4.9 Petición errónea y respuesta de error vista en el osciloscopio ........................81

Figura 5.1 Interfaz gráfica del software LVPROSIM de Lab-Volt® ...............................83

Figura 5.2 Interfaz gráfica del software GUNT RT 578.20..............................................85

Figura 5.3 Interfaz gráfica del programa realizado...........................................................89

Figura 5.4 Ventana del diálogo de configuración del controlador ...................................92

Figura 5.5 Flujo del proceso de conexión de los controladores........................................96

Figura 5.6 Flujo del proceso de desconexión de los controladores ..................................97

Figura 5.7 Flujo del proceso de envío de mensajes al controlador...................................98

Figura E.1 Resultados del experimento de la característica estática del proceso ...........133

Figura E.2 Condición de oscilación permanente del proceso de caudal.........................141

Figura E.3 Respuesta del proceso de caudal a un cambio escalón con Bp = 50% .........141

Figura E.4 Condición de oscilación permanente del proceso de temperatura ................142

Figura E.5 Respuesta del proceso térmico a un cambio escalón con Bp = 50% ............142

Figura E.6 Efecto de la variación de Bp en el proceso de caudal – Control P ...............145

Figura E.7 Efecto de la variación de Bp en el proceso de temperatura – Control P.......145

Figura E.8 Efecto de la variación de ti en el proceso de caudal – Control PI.................150

Figura E.9 Efecto de la variación de Bp en el proceso de caudal – Control PI...............151

Figura E.10 Efecto de la variación de ti en el proceso de temperatura – Control PI ......151

Figura E.11 Efecto de la variación de Bp en el proceso de temperatura – Control PI ....152

Figura E.12 Respuesta del proceso de temperatura con td =0 – Control PID .................157

Page 10: Programa de supervisión y configuración para controladores

x

x

Figura E.13 Respuesta del proceso de temperatura con td =2s – Control PID ...............157

Figura E.14 Respuesta del proceso de temperatura con td =5s – Control PID ...............158

Figura E.15 Respuesta del proceso - método sintonización de Ziegler y Nichols PI .....161

Figura E.16 Respuesta de proceso - método sintonización de Ziegler y Nichols PID ...162

Figura E.17 Respuesta de proceso para método de sintonización Rovira - ITAE..........167

Figura E.18 Respuesta de proceso para método de sintonización López - ITAE...........167

Figura E.19 Respuesta de proceso - método de sintonización Alfaro IAE Servo ..........168

Figura E.20 Respuesta de proceso - método de sintonización Alfaro IAE Regulador ...168

Page 11: Programa de supervisión y configuración para controladores

xi

xi

ÍNDICE DE TABLAS

Tabla 2.1 Configuración de puentes internos según el tipo de entrada analógica[13]........28

Tabla 2.2 Resumen de especificaciones de la EIA-485[7].................................................36

Tabla 2.3 Formato de la transmisión maestro-esclavo [14] ................................................57

Tabla 2.4 Formato de error devuelto por un esclavo[14]....................................................58

Tabla 2.5 Códigos de error devueltos en el protocolo de comunicación[14] .....................58

Tabla 3.1 Parámetros de configuración del controlador para el uso en el laboratorio......62

Tabla 4.1 Formato de la instrucción para ingresar al modo remoto del controlador ........78

Tabla 4.2 Error esperado para el direccionamiento erróneo.............................................80

Tabla 5.1 Código de colores utilizado en los gráficos de control del programa...............93

Tabla A.1 Parámetros del modo de configuración básica del Foxboro® 716C[13] .........112

Tabla A.2 Parámetros del modo de configuración avanzada del Foxboro® 716C[13] ....114

Tabla B.1 Parámetros del modo de operación del Foxboro® 716C[14]...........................117

Tabla C.1 Función 1 y 2: Lectura de n bits – Petición del Maestro................................118

Tabla C.2 Función 1 y 2: Lectura de n bits – Respuesta del esclavo..............................118

Tabla C.3 Función 3 y 4: Lectura de n palabras – Petición del Maestro ........................119

Tabla C.4 Función 3 y 4: Lectura de n palabras – Respuesta del esclavo ......................119

Tabla C.5 Función 5: Escritura de un bit – Petición del Maestro...................................120

Tabla C.6 Función 5: Escritura de un bit – Respuesta del esclavo.................................120

Tabla C.7 Función 6: Escritura de una palabra – Petición del Maestro..........................121

Tabla C.8 Función 6: Escritura de una palabra – Respuesta del esclavo........................121

Tabla C.9 Función 15: Escritura de n bits – Petición del Maestro .................................122

Tabla C.10 Función 15: Escritura de n bits – Respuesta del esclavo .............................122

Tabla C.11 Función 16: Escritura de n palabras – Petición del Maestro........................123

Tabla C.12 Función 16: Escritura de n palabras – Respuesta del esclavo......................123

Tabla D.1 Estados de bit y comandos para el dispositivo en modo de control ..............124

Page 12: Programa de supervisión y configuración para controladores

xii

xii

Tabla D.2 Estados de bit y comandos para el dispositivo en modo de configuración....125

Tabla D.3 Palabras para el dispositivo en modo de control............................................127

Tabla D.4 Palabras para el dispositivo en modo de configuración.................................128

Tabla A.1 Resultados de la característica estática del proceso de caudal.......................132

Tabla E.2 Modelos de primer y segundo orden más tiempo muerto– proceso de caudal........................................................................................................................................137

Tabla E.3 Modelos de primer y segundo orden más tiempo muerto – proceso térmico 138

Tabla E.4 Parámetros críticos de los procesos de caudal y temperatura ........................142

Tabla E.5 Modelos de la planta basados en los parámetros últimos...............................143

Tabla E.6 Resultados para el proceso de caudal – Control proporcional .......................146

Tabla E.7 Resultados para el proceso de temperatura – Control proporcional...............146

Tabla E.8 Resultados de la variación de ti en el proceso de caudal – Control PI ...........152

Tabla E.9 Resultados de la variación de Bp en el proceso de caudal – Control PI .........153

Tabla E.10 Resultados de la variación de ti en el proceso térmico – Control PI ...........153

Tabla E.11 Resultados de la variación de Bp en el proceso térmico – Control PI ..........153

Tabla E.12 Resultados de la variación de td en el proceso térmico – Control PID.........158

Tabla E.13 Resultados de la sintonización mediante el método de Ziegler y Nichols ...162

Tabla E.14 Cálculo de parámetros de control mediante criterios integrales ..................164

Tabla E.15 Resultados de la sintonización mediante criterios integrales .......................169

Page 13: Programa de supervisión y configuración para controladores

xiii

xiii

NOMENCLATURA

ASCII American Standard Code for Information Interchange. Código

numérico de 7 bits para representar los caracteres del alfabeto y otros

caracteres especiales.

Bit Dígito en sistema numeral binario. Unidad fundamental de información.

Byte Palabra binaria formada por varios bits, generalmente ocho.

Baud rate En telecomunicaciones, medida del número de cambios en el medio de

transmisión que ocurren por segundo en una señal modulada.

Bp Parámetro de banda proporcional del controlador automático

Buffer Área de almacenamiento temporal de datos transmitidos entre dos

dispositivos para compensar diferencias en envío o recepción.

CRC Método de detección de errores por chequeo de redundancia cíclica

DTE Data terminal equipment. En una comunicación serial, equipo que

convierte la información del usuario en señales para la transmisión.

DCE Data terminal equipment. En una comunicación serial, equipo que se

comunica con el DTE y que realiza las funciones de conversión de

señales y codificación al otro extremo de la línea de comunicación.

e(s) Señal de error en el lazo de control realimentado

EIA Alianza de Industrias Electrónicas.

Gc(s) Función de transferencia del controlador automático

Gp(s) Función de transferencia de la planta

GUI Graphical user interface. Interfaz gráfica de un software.

IAE Criterio de integral del error absoluto

ITAE Criterio de integral del tiempo por el error absoluto

KC Parámetro de ganancia del controlador automático

Kp Parámetro de ganancia de la planta

LSB Least significant bit. Bit menos significativo de una palabra binaria.

Page 14: Programa de supervisión y configuración para controladores

xiv

xiv

MODBUS Protocolo que permite una comunicación maestro-esclavo en gran

diversidad de arquitecturas de redes.

MSB Most significant bit. Bit más significativo de una palabra binaria.

Mp Sobrepaso máximo de la respuesta del sistema de control

OR Operador lógico.

PC Personal Computer. Computadora personal.

PDU Protocol data unit. Unidad básica en un mensaje de protocolo MODBUS

Perl Practical Extraction and Report Language. Lenguaje de programación.

PI Controlador proporcional integral

PID Controlador proporcional integral derivativo.

PLC Programador lógico programable.

r(s) Valor deseado del sistema de control

RS-232 Estándar de comunicación serial punto a punto.

RS-485 Estándar de comunicación serial multipunto que utiliza líneas

balanceadas.

RTS Request to send. Señal que forma parte del protocolo de control de flujo

de datos en la comunicación serial.

RTU Remote terminal unit. Modo de transmisión serial MODBUS.

SMART Algoritmo de auto-ajuste propietario de Foxboro®

STP Shielded twisted pair. Cable de par trenzado con pantalla.

t1.5 Tiempo igual a 1.5 veces la duración de emisión de un carácter (byte) en

el protocolo MODBUS

t3.5 Tiempo igual a 3.5 veces la duración de emisión de un carácter (byte) en

el protocolo MODBUS

ta2% Tiempo de asentamiento al 2% de la respuesta del sistema de control

Td Parámetro de tiempo derivativo del controlador automático

Ti Parámetro de tiempo integral del controlador automático

tm Tiempo muerto de la planta

Page 15: Programa de supervisión y configuración para controladores

xv

xv

tau (τ) Constante de tiempo de la planta

TIA Asociación de Industrias de Telecomunicación.

u(s) Salida del controlador automático

UART Universal asynchronous receiver transmitter. Circuito integrado en

computadoras que convierte los datos en paralelo a datos en serie o el

proceso inverso, con el fin de comunicarse con sistemas externos.

UL Unit load. Carga unitaria que se conecta a un bus de comunicaciones.

XOR OR exclusivo. Operador lógico.

y(s) Variable realimentada en el lazo de control.

z(s) Perturbación del lazo de control realimentado.

Page 16: Programa de supervisión y configuración para controladores

16

RESUMEN

El proyecto consistió en dos etapas principales. En la primera se realizó un

programa para manejar la conexión, configuración y sintonización de dos o más

controladores Foxboro 716® conectados a través una red RS-485, así como el registro y la

graficación de: variable realimentada y(t), salida de controlador u(t) y valor deseado r(t) de

varios esclavos a la vez. En la segunda se construyeron las cajas de conexión para los

controladores, con terminales de entrada, salidas, alimentación y conexión de red, para una

utilización sencilla y segura del dispositivo en el Laboratorio de Control Automático.

Para el desarrollo de la comunicación, se estudiaron los manuales del equipo, así

como las especificaciones para redes RS-485, y las normas del protocolo MODBUS.

Después se realizó la implementación física de la red entre la PC y el controlador y se

realizaron satisfactoriamente varias pruebas de comunicación. Luego, se desarrolló el

programa de supervisión y configuración utilizando el lenguaje Perl, con una interfaz

gráfica hecha con Perl/Tk. El programa permite la configuración de los parámetros de

control más importantes, así como el monitoreo de las variables principales y el registro de

datos en un archivo externo, con dos o más esclavos conectados a la vez.

En forma paralela, se construyeron las cajas de interconexión de los controladores,

siguiendo los requerimientos de seguridad incluidos en el manual del fabricante.

Finalmente, se preparó un manual de usuario del programa y el controlador, para

facilitar su uso en las prácticas del laboratorio.

Page 17: Programa de supervisión y configuración para controladores

17

CAPÍTULO 1: Introducción

La Escuela de Ingeniería Eléctrica de la Universidad de Costa Rica adquirió en el

año 2005 varios controladores PID digitales marca Foxboro®, modelo 716C para ser

utilizados como herramienta didáctica en las prácticas del Laboratorio de Control

Automático. Estos controladores son compactos y sencillos de utilizar; sin embargo, cada

vez que se necesita configurar el dispositivo, es necesario abrir su cubierta protectora para

acceder al selector de modo de funcionamiento: configuración u operación. Por otra parte,

el alambrado tanto de entradas y salidas, como de la alimentación se debe hacer por medio

de los terminales ubicados en la parte posterior del controlador, que igualmente podrían

deteriorarse por exceso de uso. Como estos controladores serán utilizados por estudiantes

en las prácticas de laboratorio, se debía evitar al máximo esta manipulación.

Para ello se recurrió a dos soluciones, las cuales dieron origen al presente proyecto.

La primera de ellas fue desarrollar un programa para la configuración y operación remota

de los controladores desde una computadora utilizando una red RS-485. La segunda fue

construir cajas de interconexión portátiles en donde se pudieran empotrar los controladores,

y que tuviera puertos de entrada y salida de una manera accesible, así como el cable de

alimentación de poder, y otras conexiones necesarias. Así, se podría aprovechar al máximo

la utilización de los controladores, alargando su vida útil.

Page 18: Programa de supervisión y configuración para controladores

18

1.1 Objetivos

1.1.1 Objetivo general

Desarrollar un programa de supervisión para dos o más controladores Foxboro®

716C conectados en red, que permita su sintonización y configuración desde una PC,

así como el despliegue gráfico de sus señales de entrada y salida.

1.1.2 Objetivos específicos

• Estudiar las características de control y comunicaciones del controlador PID digital

Foxboro® 716C.

• Analizar las características de otros programas supervisores y determinar las

características deseables para este tipo de programa.

• Seleccionar el lenguaje de programación adecuado para el desarrollo.

• Desarrollar un programa que permita la supervisión remota en línea, de dos o más

controladores Foxboro® 716C sobre una red RS-485.

• El programa debe permitir como mínimo: selección del modo de operación

(manual/automática), sintonización de sus parámetros (ganancia, tiempo integral,

tiempo derivativo, filtro, otros), ajuste del valor deseado, despliegue gráfico de la

variable medida, el valor deseado y la salida del controlador.

• Montar los controladores en cajas de interconexión portátiles, con terminales

disponibles para sus señales de entrada y salida, conexión a la red y alimentación.

• Preparar el Manual de Usuario del programa de supervisión y configuración.

Page 19: Programa de supervisión y configuración para controladores

19

1.2 Metodología

El desarrollo del presente proyecto se inició con una familiarización con el

funcionamiento de los controladores Foxboro® 716C. Para ello, se estudiaron los

manuales aportados por el fabricante, haciendo énfasis en las secciones referentes a la

configuración del dispositivo, a sus características de control, requerimientos de alambrado,

así como también el manual de protocolo de comunicaciones. Posteriormente, se trabajó

con el controlador de forma local (sin conexión serial) en el laboratorio, utilizando como

planta el equipo Lab-Volt® modelo 3522, el cual consta de un proceso de caudal y uno de

temperatura, y se realizaron varias de las prácticas del curso de laboratorio de control. Se

identificaron modelos para representar las plantas, se determinaron los parámetros de

sintonización del controlador PID Foxboro® 716C y se realizó el control. Esto permitió

familiarizarse con el funcionamiento del equipo.

Como siguiente paso, se establecieron los requerimientos mínimos que debe tener el

programa de configuración y supervisión. Para ello, se analizaron las funciones básicas que

presentan programas similares, tales como el GUNT RT 578.20 para el controlador ABB

Digitric 500, o el LVPROSIM, que es el que controla el equipo de Lab-Volt® descrito

anteriormente. Con base las características identificadas como necesarias para desarrollar

el programa propuesto, se procedió a la elección del lenguaje de programación adecuado

para la codificación.

Page 20: Programa de supervisión y configuración para controladores

20

Para que el programa fuera capaz de manejar el dispositivo de manera remota, fue

necesario estudiar tanto las especificaciones para la configuración de hardware para una red

RS-485, como las normas que rigen el protocolo de comunicaciones entre la PC y el equipo

remoto. Para ello se realizó una consulta bibliográfica que contempló tanto las normas

generales de los estándares respectivos, como ejemplos de aplicaciones prácticas, y

adecuando los conceptos para la implementación específica, según lo establecido en los

manuales de configuración y comunicación del Foxboro® 716C.

Una vez contemplados todos los aspectos anteriores, se procedió a implementar

físicamente la red entre el computador y un controlador, utilizando la conexión serial

provista por el fabricante. Inicialmente se desarrolló un programa de configuración

preliminar, el cual, de manera sencilla (sin el uso de una interfaz gráfica, incluso) permitió

realizar algunas de las funciones básicas de configuración y captura de datos, para

asegurarse del buen funcionamiento de la red en general, de la temporización y

procesamiento de los comandos de comunicación, entre otros aspectos, y de esa forma

determinar si era necesario hacer ajustes posteriores. Finalizada la etapa de desarrollo

preliminar, se completó el programa incorporándole el resto de su funcionalidad, que

permitía la configuración y supervisión mínima expuesta en los objetivos del proyecto.

En forma paralela, se construyeron las cajas de interconexión de los controladores.

Finalmente, una vez probado el programa, se confeccionó un manual de usuario

para que los estudiantes sean capaces de conectar los equipos de manera adecuada,

configurar los controladores, y utilizar los equipos como parte de sus prácticas,

supervisando y controlando distintas plantas y procesos utilizando el Foxboro® 716C.

Page 21: Programa de supervisión y configuración para controladores

21

CAPÍTULO 2: Desarrollo teórico

Previo al desarrollo del programa de configuración y supervisión se deben conocer

los principios básicos del control automático, los controladores PID, las características del

Foxboro® 716C, así como una serie de temas acerca del sistema de comunicación serial

que utiliza, para lograr una implementación correcta de acuerdo con los estándares

establecidos.

2.1 Conceptos de Control Automático

2.1.1 Elementos de un sistema de control realimentado Un sistema de control realimentado puede representarse por medio de un diagrama

de bloques como el que muestra la Figura 2.1:

Figura 2.1 Lazo de Control Realimentado [1]

En este sistema, pueden identificarse sus distintos componentes, los cuales son:

a) La planta (Gp(s)): Esta representa la función de transferencia de una planta o

un proceso industrial que va a ser controlado, que incluye el proceso en sí

junto con un sensor/transmisor y un elemento final de control. Este modelo

matemático puede obtenerse mediante métodos de identificación

experimentales de lazo abierto o cerrado, los cuales por lo general consisten

Page 22: Programa de supervisión y configuración para controladores

22

en excitar el proceso y registrar tanto las entradas como las salidas de la

planta, para luego obtener un modelo mediante técnicas ya desarrolladas.

b) El Controlador (Gc(s)): Es el último elemento del lazo de control, que se

encarga de mantener una variable dentro de los límites establecidos. Se

representa por la función de transferencia del controlador, la cual depende del

tipo de controlador que vaya a ser utilizado, como se verá más adelante.

También dependiendo del tipo de proceso, puede funcionar como regulador o

como servomecanismo, y su acción puede ser directa o inversa.

c) Señal realimentada (y(s)): Representa la medición que toma el sensor de la

variable controlada, es decir, la salida del proceso que debe controlarse. Esta

señal es enviada hacia el controlador por medio del transmisor para que se

calcule la señal de error.

d) Señal de error (e(s)): El error e(s) es la diferencia entre el valor deseado de la

variable controlada y su valor real. Con base en este valor, el controlador

calcula su salida, dependiendo del algoritmo que este tenga.

e) Entradas r(s) y z(s): Las entradas del sistema de control son el valor deseado

r(s) y la perturbación z(s). El valor deseado, es el que se desea que tenga la

variable controlada y(s). Las perturbaciones son también entradas al sistema

de control que tienden a desviar la variable controlada de su valor deseado.

f) Salida del controlador (u(s)): La señal de salida del controlador es recibida

por el elemento final de control, el cual se encarga de modificar la variable

manipulada m(s) para efectuar la acción de control.

Page 23: Programa de supervisión y configuración para controladores

23

2.1.2 Tipos de controladores

Existen muchos tipos de controladores que varían no sólo en su mecanismo de

operación (neumáticos, analógicos, digitales, PLC) sino también en sus modos de control.

El modo de control lo conforma la función de transferencia del controlador, la cual es la

expresión matemática con la que el controlador procesa la señal de error para calcular la

salida requerida para restablecer el equilibrio del sistema.

Los controladores de uso industrial están formados por la combinación de modos de

control proporcional, integral y derivativo.[1] De esta forma surgen los controladores de

tipo proporcional (P), proporcional-integral (PI), proporcional-derivativo (PD) y

proporcional-integral-derivativo (PID). En cada uno, existen hasta tres parámetros

fundamentales que se sintonizan para lograr la respuesta adecuada del lazo de control: la

ganancia Kc (o banda proporcional Bp), el tiempo integral Ti y el tiempo derivativo Td.

Todos los controladores P, PI y PD se representan respectivamente como:

cc K)s(G = (2.1.2-1)

⎟⎟⎠

⎞⎜⎜⎝

⎛+=

sT11K)s(Gi

cc (2.1.2-2)

( )sT1K)s(G dcc += (2.1.2-3)

Sin embargo, la falta de estandarización en el desarrollo de los primeros

controladores PID industriales provocó la existencia de diversas variaciones de estos. De

esta forma es común encontrar controladores con modo de control PID “ideal”, PID serie o

Page 24: Programa de supervisión y configuración para controladores

24

PID paralelo. En el PID ideal, cada modo actúa sobre el error por separado, tal y como lo

muestra la Figura 2.2:

Figura 2.2 Diagrama de bloques de un controlador PID ideal [1]

Y la función de transferencia es:

⎟⎟⎠

⎞⎜⎜⎝

⎛++= sT

sT11K)s(G di

cc (2.1.2-4)

No obstante, los primeros fabricantes de controladores industriales encontraron que

resultaba más sencillo construir un PID colocando un controlador PI en serie con un PD,

dando origen al PID serie, el cual se representa como:

⎟⎠⎞⎜

⎝⎛ ′+⎟⎟

⎜⎜

′+′= sT1sT

11K)s(G d

i

cc (2.1.2-5)

Por otra parte, está también el controlador PID paralelo, el cual tiene una ganancia

de ajuste independiente para cada modo de control:

⎟⎠⎞

⎜⎝⎛ ++= sK

sKK)s(G d

ipc (2.1.2-6)

Page 25: Programa de supervisión y configuración para controladores

25

Sin embargo, las ecuaciones (2.1.2-4) a (2.1.2-6) vistas anteriormente corresponden

a modelos teóricos, por lo que a la hora de la implementación real, requieren ciertas

modificaciones, principalmente por el hecho de que es imposible construir físicamente un

derivador puro. Una forma de corregir esto es incluir un filtro paso bajo con constante τf en

el modo derivativo, por lo que las ecuaciones de los PID ideal, serie y paralelo “realizables”

son:

⎟⎟⎠

⎞⎜⎜⎝

⎛τ+

++=s1

sTsT

11K)s(Gf

d

icc (2.1.2-7)

⎟⎟

⎜⎜

τ+

′+⎟

⎜⎜

′+′=s1

sT1

sT

11K)s(Gf

d

i

cc (2.1.2-8)

⎟⎟⎠

⎞⎜⎜⎝

⎛τ+

++=s1

sKs

KK)s(G

f

dipc (2.1.2-9)

También existe el controlador PID “industrial” que aplica el modo derivativo sobre

la señal realimentada en lugar de la señal del error. Su ecuación es:

⎟⎟

⎜⎜

τ+

′++⎟

⎜⎜

′+′= )t(yp1pT1

)t(rpT

11K)t(uf

d

i

c (2.1.2-10)

Asimismo existen otras variaciones más como los PID de dos grados de libertad, los

controladores PID universales, entre otros, cuya descripción puede encontrarse en artículos

y literatura de control automático, pero que se salen del alcance del presente trabajo.

Page 26: Programa de supervisión y configuración para controladores

26

2.2 El Controlador Digital Foxboro® 716C

2.2.1 Especificaciones generales El controlador Foxboro® 716C es un controlador digital que, a pesar de ser

compacto, ofrece gran variedad de opciones de configuración y operación, entre ellas la

comunicación con equipos de adquisición de datos. La Figura 2.3 presenta un diagrama de

bloques simplificado de este instrumento.

Figura 2.3 Diagrama de bloques simplificado del controlador Foxboro® 716C

A continuación se describirán brevemente las principales características del

controlador.[12][13]

2.2.2 Entradas y salidas En su parte posterior, el controlador Foxboro® 716C presenta un tablero con 15

terminales para las conexiones de entrada y salida del dispositivo, así como para su

alimentación eléctrica. La Figura 2.4 muestra la disposición de estas terminales:

Page 27: Programa de supervisión y configuración para controladores

27

Figura 2.4 Diagrama de la disposición de las terminales del Foxboro® 716C [13]

Alimentación AC (PWR Line - terminales 4 y 5):

La alimentación puede tener un valor nominal de 100 a 240 Vac. El neutro del

sistema debe conectarse forzosamente a la terminal 4. Se deben utilizar cables con calibre

mínimo de 16 AWG con aislamiento que resista al menos 75°C.

Entrada de medición (LINEAR - terminales 8,9,10):

Esta es una entrada “universal” analógica, ya que permite conectar termopares,

detectores de temperatura por resistencia (RTD), o entradas lineales de voltaje (0 a 5Vdc, 1

a 5 Vdc, 0 a 10Vdc, 2 a 10Vdc, 0 a 60 mV, 12 a 60 mV) o corriente (0 a 20 mA, 4 a 20

mA). Únicamente para los dos primeros casos se utilizan los tres terminales. Se

recomienda el uso de cables con pantalla, la cual debe aterrizarse únicamente en un

extremo del cable.

Para poder predeterminar el tipo de entrada analógica que se utilizará, el Foxboro®

716C requiere que se configuren unos “puentes” internos, según se indica en la Tabla 2.1.

Page 28: Programa de supervisión y configuración para controladores

28

Tabla 2.1 Configuración de puentes internos según el tipo de entrada analógica[13]

J106 Tipo de entrada

1-2 3-4 5-6 7-8 9-10 TC-RTD abierto cerrado abierto abierto abierto 60 mV abierto cerrado abierto abierto abierto

5 V cerrado abierto cerrado abierto abierto 10 V abierto abierto cerrado abierto abierto

20 mA abierto abierto abierto cerrado cerrado

Entrada lógicas (SP/SP2 - terminales 14 y 15):

El Foxboro® 716C viene equipado con una entrada de contacto lógico para poder

alternar entre el valor deseado principal (set point 1) y el secundario (set point 2). La

transferencia puede darse por medio de un interruptor externo con valor nominal de 0.5

mA, 5Vdc o mayor. Para poder reconocer un cambio, el contacto debe permanecer cerrado

más de 100 ms.

Salida lineal (OUT1- terminales 6 y 7):

La señal de salida analógica es opto-aislada configurable para 0 a 20 mA, o 4 a 20

mA. Esta puede programarse para servir tanto como salida de control (directa o inversa),

como también para retransmisión del valor medido, o del valor deseado. La retransmisión

puede hacer uso de un filtro digital con una constante de tiempo igual a la de la lectura.

Salidas de relé (OUT2 y OUT3 – terminales 1,2,3):

El controlador tiene además disponibles otras dos salidas de relé con un contacto de

valor nominal de 2 A a 250 Vac (con carga resistiva) y protegidas por varistor. Estas dos

salidas pueden configurarse para utilizarse como salidas de control (directa o inversa) o

como salida de alarma (de proceso, de banda o de desviación).

Page 29: Programa de supervisión y configuración para controladores

29

2.2.3 Interfaz de comunicación serial Además de las terminales ya mencionadas, el controlador posee tres más dedicadas

a la interfaz serial (RS 485 – terminales 11,12,13), para poder comunicarse con una PC y

ser configurado y controlado remotamente desde esta. Estas tres terminales son opto-

aisladas y conforman un sistema RS-485 de tres hilos (A/A’, B/B’,Común). Otras

características importantes son:

- Velocidad de transmisión configurable entre 600, 1200, 2400, 4800, 9600 o

19200 baudios.

- Longitud máxima de cable: 1,5 km (a 9600 baud)

- Máximo 32 unidades (esclavos) pueden conectarse a la PC (maestro)

- Dirección: configurable de 1 a 255

- Tipo de protocolo: MODBUS, JBUS o protocolo propietario de Foxboro®

La definición de estos conceptos, así como una explicación más profunda acerca de

las interfaces seriales RS-485, así como del protocolo de comunicación MODBUS, pueden

encontrarse en las secciones 2.3 y 2.4, respectivamente.

2.2.4 Características de control

El controlador Foxboro® 716C presenta un algoritmo de control proporcional

integral derivativo (PID), el cual se puede sintonizar manualmente o por medio del

algoritmo propietario de auto-ajuste denominado “SMART”. Este monitorea continuamente

el proceso y automáticamente ajusta los parámetros del PID según sea necesario. En el

arranque, SMART optimiza la llegada al valor deseado y reduce el sobrepaso; durante el

Page 30: Programa de supervisión y configuración para controladores

30

control, los parámetros se ajustan cuando hay perturbaciones o cambios en la carga o en el

valor deseado. La Figura 2.5 ilustra ambas condiciones.

Figura 2.5 Algoritmo de auto-ajuste SMART del Foxboro® 716C [13]

Sin embargo, los mecanismos de auto-ajuste no son siempre muy efectivos, por lo

que generalmente resulta mejor sintonizar manualmente el algoritmo PID. Algunas de las

características y opciones de control que presenta el dispositivo son:

- Tipo de control configurable entre PID, PI, P, auto-ajuste (SMART) o control

deshabilitado (trabajando como indicador únicamente).

- Modo de operación manual o automático.

- Banda proporcional: configurable de 1% a 200% del rango de entrada

- Tiempo derivativo: configurable de 1 segundo a 10 minutos en intervalos de 1

segundo, o apagado.

- Tiempo integral: configurable de 1 segundo a 20 minutos, en intervalos de 1

segundo, o apagado.

- Pre-carga integral: configurable para una salida de control entre 0 a 100% del

rango de salida.

Page 31: Programa de supervisión y configuración para controladores

31

- Histéresis (para encendido o apagado de acción de control): configurable entre

0.1% a 10.0% del rango de entrada.

- Opción de configurar dos puntos de operación distintos (valor deseado):

principal (SP) y auxiliar (SP2), transferibles por medio de un interruptor

externo.

- Configuración de funciones de rampa independientes aplicables a los aumentos

o disminuciones en el valor deseado, así como para arranques suaves.

- Salida de control (principal o secundarias) inversa o directa.

- Alarmas de proceso, banda o desviación configurables en las salidas de control

auxiliares, de acción directa o inversa, con restablecimiento automático o

manual.

- Retransmisión de valor deseado o valor medido por medio de la salida principal.

- Filtro digital para el valor mostrado o retransmitido (constante de tiempo de 4 s

para RTD o termopar, 2 s para entradas lineales).

- Tiempo de muestreo: 250 ms (entradas lineales) o 500 ms (RTD o termopar).

2.2.5 Características adicionales - Indicador con pantalla doble de LED de cuatro dígitos para mostrar el valor

deseado, la variable controlada y los valores de configuración.

- Teclado frontal para configuración y operación.

- Indicadores luminosos para indicar número de salidas utilizadas, número de

punto de operación, operación automática/manual, habilitación de manejo

Page 32: Programa de supervisión y configuración para controladores

32

remoto, habilitación de algoritmo de auto ajuste, unidades de temperatura, entre

otros.

- Bloqueo de seguridad para evitar modificación de parámetros durante la

operación.

2.2.6 Modo de configuración / operación Para alternar entre el modo de configuración u operación el controlador Foxboro®

716C presenta en su interior un interruptor (V01) tal y como lo muestra la Figura 2.6. La

posición abierta indica el modo de configuración, mientras que el cierre da lugar al modo

de operación. Según el modo en que se encuentre, las funciones que son accedidas por

medio del teclado frontal varían, así como la información desplegada por la pantalla.

Figura 2.6 Interruptor del modo de configuración/operación del Foxboro® 716C [13]

En ambos modos, las funciones de las teclas son las siguientes:

FUNC: Guarda el valor escogido y pasa al siguiente parámetro de configuración.

MAN: Regresa al parámetro anterior sin guardar el valor escogido.

/ : Aumenta/disminuye el valor del parámetro seleccionado.

Page 33: Programa de supervisión y configuración para controladores

33

Modo de Configuración:

Una vez que se ha colocado el interruptor V01 en la posición abierta, al encender el

controlador aparecerá la leyenda “COnF” en la pantalla, indicando que efectivamente el

dispositivo se encuentra en el modo de configuración.

Un listado exhaustivo de los parámetros de configuración disponibles en este modo,

así como los valores que se pueden seleccionar para cada uno de ellos se detallan en el

Apéndice A.

Modo de Operación:

Cuando el interruptor V01 se regresa a la posición cerrada, el dispositivo entrará en

el modo de operación. Al encenderse, la pantalla estará en el modo de despliegue normal,

con el valor medido en la parte superior y el valor deseado en la parte inferior.

Los indicadores luminosos de la parte frontal representan lo siguiente:

- REM: Se enciende al utilizar el punto de operación remoto (enlace serial)

- °C: Se enciende cuando la variable controlada está en grados Celsius.

- °F: Se enciende cuando la variable controlada está en grados Fahrenheit.

- SMRT: Parpadea durante el cálculo de auto ajuste. Se mantiene encendida

cuando el auto ajuste está activo.

- OUT 1: Parpadea con un ciclo de trabajo proporcional al valor de salida.

- OUT 2: Se enciende cuando la salida 2 está activa o la Alarma 1 está activa.

- OUT 3: Se enciende cuando la salida 3 está activa o la Alarma 2 está activa.

La Figura 2.7 muestra la apariencia de la pantalla, los botones y los indicadores

luminosos del panel frontal del controlador Foxboro® 716C.

Page 34: Programa de supervisión y configuración para controladores

34

Figura 2.7 Panel frontal del controlador Foxboro® 716C [13]

La tabla del Apéndice B muestra todos los parámetros de operación accesibles por

medio del teclado en este modo. Algunos de ellos podrían no aparecer, dependiendo de la

configuración que se haya establecido previamente.

Otras opciones disponibles durante el modo de operación son:

- Despliegue de la salida de control de acción inversa o directa: presionando la

tecla FUNC por tres segundos (r- inversa) y luego por otros tres segundos más

(d - directa). Se vuelve al modo normal al presionar la tecla por tres segundos

adicionales.

- Habilitar/deshabilitar de la salida de control: presionando simultáneamente las

teclas FUNC + durante cinco segundos deshabilita las salidas de control y el

dispositivo actúa únicamente como indicador. Para habilitar las salidas

nuevamente se repite el procedimiento.

- Función manual: el controlador puede ponerse en manual si se presiona la tecla

MAN por un segundo. El valor de la salida inversa se muestra en los dos dígitos

más significativos y el de la salida directa sale en los menos significativos. El

punto decimal entre ellos parpadea indicando que el modo manual está activo.

Page 35: Programa de supervisión y configuración para controladores

35

El valor deseado se puede modificar por medio de las teclas / . Para

regresar al modo automático se presiona el botón MAN por dos segundos.

- Acceso al valor deseado: cuando está en el modo normal, se puede modificar

este valor presionando alguna de las teclas / por 2 segundos. Una vez

ajustado el valor se activa después de dos segundos.

- Auto ajuste: ver Apéndice B.

2.3 Interfaz RS-485

2.3.1 Especificaciones generales La Recommended Standard 485, conocida simplemente como RS-485 es una norma

que define una interfaz de comunicación serial que no es tan comúnmente utilizada como la

RS-232; sin embargo, tiene un uso extensivo en las industrias para la transmisión de datos

multipunto debido a las ventajas que presenta frente a éste en cuanto a que permite una

comunicación bidireccional entre múltiples nodos con mayor velocidad de transmisión,

longitud de cables y rechazo de ruido, entre otros aspectos.

Alrededor de 1983, la EIA (Electronics Industries Alliance) definió el estándar RS-

485, pero posteriormente fue mejorado junto con la TIA (Telecommunications Industry

Association) para convertirlo en el estándar TIA/EIA-485-A en 1998, para asegurar una

uniformidad y compatibilidad entre diferentes fabricantes. El nombre TIA/EIA-485 o RS-

485 se usa comúnmente de manera indistinta. El estándar define principalmente las

características eléctricas de la línea, los emisores (drivers) y los receptores (receivers), pero

deja abierto las cuestiones referentes a las líneas de transmisión, topología y protocolo de

comunicaciones; no obstante, actualmente se pueden encontrar recomendaciones acerca de

Page 36: Programa de supervisión y configuración para controladores

36

ello en la documentación de gran cantidad de aplicaciones que utilizan este tipo de interfaz.

La tabla 2.1 muestra un resumen de las especificaciones de la EIA-485, tomado de las notas

de aplicación de la B&B Electronics:

Tabla 2.2 Resumen de especificaciones de la EIA-485[7]

2.3.2 Señales En una interfaz RS-232, se transmite una señal única de voltaje con respecto a señal

de tierra común. Esta señal de voltaje se alterna entre positiva y negativa cuando se están

enviando los datos, y es muy susceptible al ruido. En una interfaz RS-485, por el contrario,

se hace uso de una señal balanceada o diferencial para transmitir el flujo de información.

Esto es, que el emisor envía dos señales A y B que son complementarias (inversas) una de

otra, de tal forma que cuando la señal positiva sube por encima de un nivel de referencia, la

negativa reacciona yendo por debajo de este nivel. Para que el voltaje diferencial del

emisor sea válido, la diferencia entre señales debe ser de 1.5 a 6 V, ya sea negativo o

positivo. La región de -1.5 a +1.5 V se considera indeterminada.

Page 37: Programa de supervisión y configuración para controladores

37

El receptor, por su parte, compara las diferencias entre éstas dos líneas y no con

respecto a tierra, y de esta forma detecta el flujo binario. En un receptor, un voltaje

diferencial mayor a 200 mV o menor a -200 mV ya permite detectar un estado lógico en sus

terminales, e igualmente se considera aceptado un rango que va desde los 200 mV hasta los

6 V, para compensar la atenuación. Otra de las ventajas que presenta la interfaz RS-485, es

que tolera un voltaje de modo común que va desde los -7 V a los +12 V.

La Figura 2.8 ilustra en la parte superior cómo se definen cada una de las señales

individuales A y B, y en la parte inferior cómo se toma la señal diferencial.

Figura 2.8 Señal diferencial o balanceada en una interfaz RS-485 [9]

El estándar TIA/EIA-485, así como varias hojas de aplicación [6] describen la forma

en que el receptor define los dos estados lógicos de la línea:

- Si la señal de A es al menos 200 mV mayor que B, la salida es un alto lógico.

- Si la señal de B es al menos 200 mV mayor que A, la salida es un bajo lógico

- Para diferencias menores a 200 mV, la salida es indeterminada.

Page 38: Programa de supervisión y configuración para controladores

38

2.3.3 Topología y redes La forma más simple que se conoce de RS-485 es la que consiste en un maestro y

uno o varios esclavos colocados en cada extremo de un par de hilos trenzados (más el

conductor común) y que permite una comunicación de tipo half duplex. La información

puede fluir en ambas direcciones, ya que cada elemento puede ser emisor o receptor, pero

sólo puede hacerlo hacia una dirección y sólo un dispositivo puede transmitir a la vez. Sin

embargo, también es posible lograr una comunicación full duplex (simultáneamente en

ambos sentidos) si en lugar de usar una configuración de dos hilos se usa una de cuatro

hilos. La Figura 2.9 muestra una topología general de dos hilos (half duplex), mientras que

la Figura 2.10 muestra cómo sería la configuración para cuatro hilos (full duplex).

Figura 2.9 Configuración de dos hilos (half duplex) para RS-485 [8]

Page 39: Programa de supervisión y configuración para controladores

39

Figura 2.10 Configuración de cuatro hilos (full duplex) para RS-485 [8]

En las figuras se observan resistencias de pull-up y pull-down para polarizar las

líneas, así como resistencias en las terminaciones de las líneas.

Por otro lado, el estándar RS-485 permite que se puedan conectar hasta 32 cargas

unitarias 1 con una impedancia típica de entrada de 12 kΩ cada una. Si se utilizan

receptores con altas impedancias es posible lograr conectar hasta 256 nodos, aunque estos

operarán más lentamente que los comunes.

El estándar no define la forma en que deben ser conectados los elementos de la red.

Sin embargo, de acuerdo con la experiencia en la industria, se ha determinado que existen

algunas configuraciones que no son recomendables para trabajar con esta interfaz, debido a

las reflexiones que se podrían producir en la línea de transmisión. La Figura 2.11 muestra

algunas topologías que podrían ser implementadas para una red RS-485.

1 En inglés: Unit loads (UL)

Page 40: Programa de supervisión y configuración para controladores

40

Figura 2.11 Diferentes topologías posibles para una red RS-485 [11]

La primera de ellas es la de un bus con derivaciones; la segunda es un bus con

derivaciones en forma de estrella; la tercera es una configuración de estrella; la cuarta es

una configuración conocida como “daisy chain”2, y finalmente se encuentra una topología

de aro. De todas ellas, la más recomendable es la de daisy chain, ya que esta permite

manejar más fácilmente las reflexiones, seguida de una formación de bus, siempre y cuando

las derivaciones sean lo más cortas posibles. Todas las demás tienen tendencia a presentar

problemas en las líneas, especialmente para bitrates altos o grandes distancias.

A pesar de ello, si las velocidades de transmisión no son altas, o las líneas de

transmisión son relativamente cortas, se puede utilizar cualquier configuración sin grandes

eventualidades.

2 Configuración de hardware en la que los dispositivos se conectan en serie unos con otros.

Page 41: Programa de supervisión y configuración para controladores

41

2.3.4 Puesta a tierra A pesar de que la interfaz RS-485 half duplex es referida como una interfaz de dos

hilos, en realidad debe estar conformada por tres conductores. Aunque el receptor no

necesita de una señal de referencia para poder determinar los niveles lógicos, igual es

necesaria la presencia de un tercer hilo común en la red RS-485 debidamente aterrizado

para proveer un camino para la corriente de desbalance entre las líneas diferenciales. Sin

esta tierra común, el circuito puede trabajar bien, pero la energía proveniente del

desbalance podría disiparse en forma de radiación electromagnética.

Para cumplir con la especificación, la tierra del elemento transmisor debe ser la

misma que la de los elementos receptores, y el conductor de referencia debe aterrizarse en

un único punto de la red. La conexión entre las terminales comunes se puede hacer por

medio de un par trenzado extra, o por medio del la pantalla de un cable STP.

La Figura 2.12 muestra la forma en que se puede colocar el conductor de señal

común entre varios dispositivos RS-485.

Figura 2.12 Conductor de señal común en una interfaz RS-485 [11]

Page 42: Programa de supervisión y configuración para controladores

42

2.3.5 Efectos de líneas de transmisión y otras consideraciones La transmisión balanceada del RS-485 permite que los datos sean menos

susceptibles al ruido, ya que las perturbaciones afectan de manera similar a las señales

positivas y negativas, además de que usualmente se utiliza un par de cables trenzados para

transmitir mediante este sistema, lo cual ayuda a reducir este efecto. Estos son los

principales factores por las que una red RS-485 se puede extender hasta 4000 pies de

longitud (1.2 km) o transmitir a velocidades de hasta 10 Mbps, mientras que con RS-232

las distancias y razones de transmisión son muy limitadas.

Empero, las distancias grandes junto con las altas velocidad hacen que surjan otro

tipo de efectos típicos de una línea de transmisión, los cuales hay que tomar en

consideración a la hora de la implementación para poder contrarrestarlos. El primer gran

efecto que se mencionó en el apartado 2.3.3 son las reflexiones de las ondas. En un artículo

acerca de circuitos RS-485 [6], se explica que en una línea de transmisión no compensada,

ocurre una reflexión cuando la corriente inicial llega al receptor, y este solo es capaz de

absorber una fracción de esta, y el resto la refleja hacia el emisor. Con el cambio de

dirección de la corriente, se induce un voltaje en la línea, y el receptor inicialmente percibe

un voltaje mayor al transmitido originalmente. Cuando el voltaje reflejado llega

nuevamente al emisor, el cual tiene una impedancia menor al de la línea, este absorbe parte

de la reflexión y de nuevo repele el resto, provocando que el receptor observe un voltaje

reducido debido al nuevo cambio de polaridad en la reflexión. Esto ocurre varias veces

hasta que la línea llega a establecerse con un valor final de corriente. Las reflexiones

Page 43: Programa de supervisión y configuración para controladores

43

provocan que el receptor muchas veces malinterprete valores lógicos, provocando errores

en la comunicación.

Existen muchas maneras de combatir este efecto, pero la forma más sencilla y la

más comúnmente utilizada es la de es colocar resistores en las terminaciones de la línea de

transmisión con una impedancia igual a la impedancia característica de la línea. Para RS-

485, se utiliza con frecuencia un resistor de 120 Ω para tal efecto, tal y como se muestra en

la Figura 2.13, utilizando los resistores RT.

Figura 2.13 Terminación de las líneas de transmisión de una red RS-485 [10]

Por otra parte, cuando la línea está inactiva (ninguno de los nodos está

manejándola), el estado de ésta es desconocida. Para poder asegurar que se mantenga un

nivel correcto de voltaje en estos casos, se recomienda colocar resistencias para polarizar la

línea, poniendo una resistencia de pull-up hacia la fuente en la línea B y una de pull-down

en la línea A hacia tierra, tal y como mostraba la Figura 2.8. Este proceso es conocido

como idle-state biasing. El cálculo de las resistencias debe hacerse correctamente, ya que

la escogencia incorrecta puede resultar en baja inmunidad al ruido, o al contrario, en exceso

de carga para los emisores.

Page 44: Programa de supervisión y configuración para controladores

44

2.3.6 Enlace simplificado de baja potencia Las resistencias de terminación y de polarización mencionadas en la sección

anterior, son necesarias para aplicaciones de gran escala, pero tienen la desventaja de

incrementar el consumo de potencia del circuito. Para aplicaciones donde la línea es corta,

y las velocidades de transmisión son bajas, se pueden prescindir de estos elementos para

construir redes simples, de bajo costo y bajo consumo. Esto se debe a que en las líneas

cortas, las reflexiones desaparecen mucho antes de que el receptor esté listo para tomar los

datos. La regla general para determinar si una línea es corta, es si el tiempo de

levantamiento de su señal es mayor a cuatro veces el tiempo de propagación de una vía de

la línea (one-way delay)3. A mayores longitudes, los efectos de líneas de transmisión deben

ser considerados.

2.3.7 Cables

El medio de interconexión entre los dispositivos tampoco es especificado dentro del

estándar RS-485. Sin embargo, el medio más comúnmente utilizado es el de un par de

cables trenzados, debido a las ventajas que presenta en cuanto a inmunidad de ruido. Los

diseñadores generalmente prefieren utilizar cables trenzados de calibre 24 AWG, con una

impedancia característica de 100 o 120Ω.

Se dijo anteriormente que en una red RS-485 se puede transmitir a lo largo de

distancias de hasta 1.2 km, o con velocidades de hasta 10 Mbps. Sin embargo, estas dos

características no pueden darse simultáneamente. La Figura 2.14 presenta una curva

3 One-way delay: tiempo necesario para que una señal viaje desde el emisor hasta el receptor. Se calcula dividiendo la longitud del cable entre la velocidad de propagación del cable, provista por los fabricantes como un porcentaje de la velocidad de la luz.

Page 45: Programa de supervisión y configuración para controladores

45

empírica de razón de transmisión en función de la longitud de los cables, usando un par de

cables trenzados de 24 AWG con una capacitancia de 16 pF/ft, y con terminaciones de

100Ω.

Figura 2.14 Velocidad de transmisión máximas permitida según la longitud de línea [9]

No existe un consenso acerca de si es necesario utilizar cables blindados para la

conexión de redes RS-485, ya que algunos dicen que se requieren para prevenir la

introducción de ruido en el bus de comunicación y limitar las emisiones provenientes del

mismo[9], mientras que otros dicen que los receptores son suficientemente buenos para

tolerar malos niveles de ruido debido a las características de rechazo de modo común, y que

los cables blindados son más costosos y difíciles de manipular físicamente[11]. Sin

embargo, en todos los casos mencionan que la escogencia depende de la aplicación

específica.

Page 46: Programa de supervisión y configuración para controladores

46

2.4 Protocolo de Comunicación

2.4.1 Características deseables Como el estándar EIA-485 no define tampoco cuál es protocolo de comunicación

que debe usarse para la red, el diseñador puede darse la libertad de elegir el que le sea más

favorable. Sin embargo, en muchos de los casos se utiliza una configuración de maestro-

esclavo con un protocolo de comando-respuesta, donde un solo nodo envía los comandos y

el nodo accedido devuelve la respuesta. En los casos que se utiliza una configuración de

RS-485 de dos hilos, debe usarse una comunicación que no permita que el esclavo conteste

antes que el maestro se ponga en “tercer estado”, para que no haya colisión entre los datos

enviados y la respuesta.

En muchas ocasiones, los enlaces RS-485 utilizan protocolos que son soportados

por los UART provistos en las PC u otros dispositivos, entre ellos el protocolo MODBUS.

2.4.2 Protocolo MODBUS

El protocolo de comunicaciones MODBUS fue desarrollado por la empresa

Modicon4 para el uso de sus PLC. A pesar de ser un protocolo propietario, se mantuvo

publicado abiertamente, lo cual permitió el desarrollo de diversas variantes y mejoras, con

lo cual se ha llegado a convertir en un protocolo estándar para la industria de control, ya

que es utilizado para conectar casi cualquier dispositivo electrónico industrial.

Existen algunas variantes del MODBUS para distintas arquitecturas de red, sin

embargo, el Foxboro® 716C utiliza la forma de MODBUS a través de una línea serial,

4 Empresa fundada a fines de 1960, creadora del primer PLC producido comercialmente, que luego llegó a formar parte de Schneider Automation.

Page 47: Programa de supervisión y configuración para controladores

47

cuyas características se describen en el documento “MODBUS Over Serial Line:

Specifications & Implementation guide v1.0” [8], el cual está disponible en Internet. A

continuación se resumen sus características más sobresalientes, extraídas de ese estándar:

2.4.3 Principio de protocolo maestro/esclavo

El protocolo MODBUS por línea serial utiliza una configuración maestro/esclavo.

Sólo puede haber un maestro conectado a la red, con varios nodos esclavos conectados a

ella. Los esclavos nunca transmitirán información a menos que la comunicación sea

iniciada por el maestro, ni tampoco podrán comunicarse con otros esclavos. Solo puede

haber una transacción MODBUS al mismo tiempo.

El maestro puede iniciar un pedido a un esclavo de dos formas:

a) Modo unicast: El maestro accede un único nodo esclavo particular.

Después de procesar el pedido, el esclavo devuelve una respuesta al

maestro. La transacción es entonces de dos mensajes. Para ello cada

esclavo debe tener una dirección única (de 1 a 247 generalmente).

b) Modo broadcast: El maestro envía un pedido a todos los esclavos al

mismo tiempo. No se envía ninguna respuesta al maestro, por lo que

serán únicamente enviados comandos de escritura. Para ello existe una

dirección 0 reservada para identificar este direccionamiento múltiple

Page 48: Programa de supervisión y configuración para controladores

48

2.4.4 Formato de mensajes MODBUS En la comunicación serial MODBUS, existen dos tipos de modos de transmisión: el

modo RTU (Remote terminal unit) y el modo ASCII, los cuales definen diferentes formas

en la que la información es colocada en los campos del mensaje y cómo se decodifica. Sin

embargo, el modo RTU es el más utilizado, con contadas excepciones, por lo cual se hará

una descripción únicamente de los requerimientos para este modo.

Cada marco (frame) de comunicación, también conocido como unidad de dato de

protocolo (PDU5 por sus siglas en inglés) está compuesto por varios campos definidos tal y

como se muestra a continuación:

Dirección 1 byte

Código de Función 1 byte

Datos 0 a 252 bytes

CRC 2 bytes

PDU de MODBUS de línea serial

Figura 2.15 Marco unitario de mensaje de protocolo MODBUS de línea serial [8].

- En el campo de la dirección, el maestro indica la dirección única del esclavo (de

1 a 247 generalmente. Las direcciones 248 a 255 son generalmente reservadas).

Cuando el esclavo responde, pone su propia dirección en el campo para hacerle

saber al maestro quién le está respondiendo.

- El código de la función indica al servidor la operación por realizar.

- Los datos contienen parámetros de solicitud o de respuesta, según quien la emita

y dependen de la función particular.

Page 49: Programa de supervisión y configuración para controladores

49

- El campo de CRC es un campo de detección de error que utiliza un código de

redundancia cíclica calculado según el contenido del mensaje.

Cada byte en un mensaje contiene dos caracteres hexadecimales (8 bits), y cada

mensaje debe transmitirse como un hilo continuo de caracteres. Sin embargo, el formato de

cada byte es finalmente de un carácter asincrónico de 11 bits, ya que está compuesto por:

- Un bit de inicio

- 8 bits de datos, con el bit menos significativo enviado primero

- 1 bit de paridad (par o impar o ninguna)

- 1 bits de parada (o 2 bits de parada en caso que no se use paridad)

1 2 3 4 5 6 7 Bit

paridad 0 Bit

Inicio Bin

parada

Figura 2.16 Formato de un byte en el protocolo MODBUS de línea serial [8].

El elemento receptor debe ser capaz de detectar el inicio del mensaje, así como

saber cuando este ha sido completado. Para ello cada marco de mensaje debe ser separado

por un intervalo de silencio de al menos 3,5 veces la duración de un carácter, conocido

como t3.5. En caso de que esta temporización se incumpla, el receptor debe detectar un error

de mensaje parcial.

5 PDU: Protocol data unit

Page 50: Programa de supervisión y configuración para controladores

50

Figura 2.17 Separación mínima entre marcos unitarios de mensajes MODBUS [8].

De igual forma, si hay un intervalo de silencio mayor a 1.5 veces la duración de un

carácter (t1.5) el marco de mensaje se considera incompleto y es descartado por el receptor.

Figura 2.18 Separación mínima entre caracteres de un marco de mensaje MODBUS[8].

La duración de un carácter se define dependiendo del baud rate, o razón de baudio

la cual es una medida en telecomunicaciones del número de señales que se transmiten por

segundo.6 En el protocolo MODBUS, se permite típicamente utilizar un baud rate de 9600

ó 19200, aunque los fabricantes de dispositivos pueden opcionalmente utilizar otras

velocidades.

2.4.5 Diagramas de comunicación

Para comprender mejor el algoritmo de control en la comunicación serial

MODBUS, el estándar muestra un diagrama de estados del maestro y del esclavo, los

cuales siguen la siguiente notación:

6 Esta medida no se debe confundir con el data rate, o razón de datos, dada en bps, ya que cada señal puede estar compuesta por varios bits para hacer mejor uso del ancho de banda.

Estado ATrigger

[condición] / acción

Estado B

Page 51: Programa de supervisión y configuración para controladores

51

Figura 2.19 Sintaxis de diagramas de estados de la comunicación MODBUS [8].

Diagrama de estados del maestro:

El comportamiento del maestro en el protocolo MODBUS serial se puede

representar de la siguiente manera:

Figura 2.20 Diagrama de Estados del maestro en la comunicación MODBUS [8].

- El dispositivo se encuentra en “estado inactivo” al encenderse. El maestro sólo

puede enviar una petición si está en este estado, y no puede enviar dos

peticiones simultáneamente.

Inactivo

Esperando retardo

Esperando respuesta

Procesando respuesta

Procesando error

Solicitud enviada en modo broadcast

/ inicio de retardo de devolución

Expiración de retardo Solicitud enviada

a un esclavo / inicia contador de

tiempo de respuesta

Recepción de respuesta [Esclavo inesperado]

Expiración de tiempo de respuesta

Recepción de respuesta [Esclavo esperado] / detiene contador de respuesta

Fin de procesamiento de respuesta

Fin de procesamiento de error

Error de marco

Page 52: Programa de supervisión y configuración para controladores

52

- El contador de tiempo de respuesta en el modo unicast se utiliza para prevenir

que el maestro quede en un ciclo interminable en caso de que no se reciba

respuesta. El retardo debe ser suficiente para que el esclavo procese y devuelva

el valor pedido. Si el tiempo se agota, se genera un error y el maestro vuelve a

estado inactivo.

- Una vez que recibe una respuesta, el maestro la procesa para su verificación. Si

la respuesta proviene de un esclavo inesperado, la ignora y continúa contando.

Si hay un error en el marco, este es detectado.

- El error de marco surge del chequeo de paridad aplicado a cada carácter y al

chequeo de redundancia aplicado al marco completo. Esta detección de errores

se detallará en la Sección 2.4.6.

- Aunque en modo broadcast no se espera respuesta por parte de los esclavos,

igual el maestro espera un tiempo (retardo de devolución) para dar oportunidad

a los esclavos para que procesen el pedido antes de enviar una nueva petición.

Diagrama de estados del esclavo:

El comportamiento del esclavo en el protocolo MODBUS serial se puede

representar de la siguiente manera:

Page 53: Programa de supervisión y configuración para controladores

53

Figura 2.21 Diagrama de Estados del esclavo en la comunicación MODBUS[8].

- El dispositivo se encuentra en “estado inactivo” al encenderse. En este estado,

no hay solicitudes pendientes.

- Al recibir una solicitud, el paquete es revisado para verificar su validez. Pueden

encontrarse errores de formato, acciones inválidas, entre otras. En caso de error,

el esclavo debe enviar una respuesta al maestro. Excepción: si el error

detectado es un error de marco, no hay respuesta hacia el maestro.

- En el modo unicast, una vez completada la acción solicitada, la respuesta es

formateada y enviada al maestro.

Inactivo

Revisando solicitud

Procesando acción

requerida

Formato de Respuesta de

error

Recepción de una solicitud (del maestro)

Error en datos solicitados

Procesando respuesta

Revisión OK

Fin de procesamiento [modo unicast]

Error en procesamiento

Fin de procesamiento [modo broadcast]

Envío de respuesta de error

Respuesta normal enviada

Error en chequeo de marco, o marco

no asignado a este esclavo

Page 54: Programa de supervisión y configuración para controladores

54

2.4.6 Detección de errores

Todo sistema de comunicación efectivo debe contar con métodos para detectar, y en

algunos casos corregir, errores en transmisión de los datos, ya sea originados por un

mensaje erróneo enviado por el emisor, o por errores aleatorios ocasionados por alguna

perturbación que afecta la línea de comunicación.

En el caso del protocolo MODBUS, se cuenta con dos tipos distintos de detección

de errores: chequeos de paridad (aplicados a cada carácter) o chequeos de marco utilizando

métodos de redundancia cíclica, los cuales se aplican a un mensaje completo. Estos son

calculados por el emisor (maestro o esclavo) y se adjuntan al mensaje antes de su

transmisión.

Para el chequeo de paridad se puede utilizar paridad par, paridad impar, o incluso se

da la opción de no usar chequeo de paridad. Esta se aplicará entonces a cada carácter de 8

bits (en el caso de RTU). El emisor entonces adjunta a cada carácter el bit de paridad (tal

como se muestra en la Figura 2.16) y lo envía. El receptor, por su parte cuenta nuevamente

el número de 1’s que vienen en el byte y compara el valor de paridad, detectando un error si

no hay concordancia. Por esto es importante que todos los dispositivos en la red usen el

mismo tipo de paridad.

Para el chequeo de marco, el modo de transmisión RTU utiliza el método de

chequeo de redundancia cíclica de 16 bits (CRC 16). Con el CRC, se revisa el contenido

completo del mensaje (independiente de la paridad) y genera un valor de 16 bits

(implementado como 2 bytes de 8 bits cada uno) que se agrega al final del mensaje. El

Page 55: Programa de supervisión y configuración para controladores

55

elemento receptor también calcula nuevamente el CRC al recibir el mensaje, lo compara y

devuelve un error en caso de que no sean iguales. El algoritmo para generar un valor de

CRC 16, según el documento de MODBUS [8], es el siguiente:

1) Cargar un registro de 16 bits, llamado el registro CRC, con el número

hexadecimal 0hFFFF (todos los bits con valor de 1).

2) Aplicar un OR exclusivo (XOR) al primer byte de 8 bits del mensaje con la

parte baja del byte CRC, y colocar el resultado en el registro CRC.

3) Desplazar el registro CRC un bit hacia la derecha (hacia el LSB), poniendo en

cero el MSB.

4) Extraer y examinar el LSB.

a. Si el LSB es 0: Repetir el paso 3 (desplazamiento adicional)

b. Si el LSB es 1: Aplicar un XOR al registro CRC con el valor polinomial

0hA001 (1010 0000 0000 0001).

5) Repetir los pasos 3 y 4 hasta que se hayan realizado 8 desplazamientos. Una

vez completado esto, se debe haber procesado completamente un byte de 8

bits.

6) Repetir los pasos 2 a 5 para el siguiente byte del mensaje. Continuar esto

hasta que todos los bytes hayan sido procesados.

7) El contenido final del registro CRC es el “valor CRC”.

8) A la hora de transmitir el valor CRC en el mensaje, se debe enviar primero el

byte menos significativo, seguido por el byte más significativo.

La Figura 2.22 muestra al algoritmo anterior en forma de diagrama de flujo:

Page 56: Programa de supervisión y configuración para controladores

56

Figura 2.22 Diagrama de flujo para el algoritmo de cálculo del CRC 16[8].

2.4.7 Protocolo MODBUS aplicado al Foxboro® 716C

El controlador digital Foxboro® 716C puede utilizar un protocolo MODBUS,

JBUS, o incluso uno propietario de Foxboro®. Sin embargo, para el desarrollo del trabajo

se prefiere utilizar MODBUS, ya que es el que cuenta con la mayor documentación

disponible, aunque el JBUS difiere de este básicamente en la definición de las direcciones.

Page 57: Programa de supervisión y configuración para controladores

57

El controlador utiliza un protocolo half duplex con un maestro y varios esclavos

(hasta 31). El maestro puede enviar tanto peticiones en modo unicast como broadcast. La

velocidad de comunicación es configurable para trabajar con valores de baud rate de 600,

1200, 2400, 4800, 9600 o 19200 y la definición del formato de transmisión es conforme

con la sección 2.4.4.

Tabla 2.3 Formato de la transmisión maestro-esclavo [14]

Rango Byte Dirección de Esclavo 1 Código de Función 1 Datos n Chequeo de Error (CRC-16) 2

En la documentación del protocolo de comunicación del Foxboro® 716C se definen

las funciones que pueden utilizarse para realizar las distintas operaciones (ver Apéndice C),

así como también la tabla de direcciones de memoria que se deben acceder en cada caso

(ver Apéndice D). Cada una de estas funciones está descrita como un par de comandos: la

solicitud que debe ser enviada por el maestro y la respuesta esperada por parte del esclavo,

la cual es básicamente la misma, con ciertas modificaciones.

Sin embargo, hay ocasiones en las que el esclavo detecta errores en la solicitud del

maestro. Si el chequeo de error CRC 16 está mal, si el código de función no es

implementado, o si el buffer del receptor se satura, el esclavo no envía respuesta alguna. Si

el error es de otro tipo, el esclavo responde forzando el sétimo bit del byte del código de la

función a 1 y luego genera un código de error.

Page 58: Programa de supervisión y configuración para controladores

58

Tabla 2.4 Formato de error devuelto por un esclavo [14]

Rango Byte Dirección de Esclavo 1 Código de Función (+ 0h80) 1 Código de error 1 Chequeo de Error (CRC-16) 2

Tabla 2.5 Códigos de error devueltos en el protocolo de comunicación [14]

No. De Error Descripción 2 Dirección ilegal de dato 3 Valor ilegal de dato 9 Número ilegal de datos requeridos 10 El bit o palabra indicados no pueden modificarse 1xx Error en el parámetro de configuración “xx” 199 Error en la selección de la salida de control 2xx Error en la calibración de la entrada 255 Error en los parámetros de control

Notas acerca de la comunicación:

- Cada vez que la transferencia de información se realice usando 2 bytes (1

palabra de 16 bits), el primer byte es transmitido el es más significativo.

- Se utiliza el formato de complemento a dos para los números negativos.

- El esclavo comienza a enviar una respuesta de 2 a 700 ms después de detectar el

fin de una solicitud, el cual es detectado contando el número de bytes recibido.

- Cuando se envían números decimales, el punto decimal es eliminado.

- Para que un esclavo pueda comenzar a ser controlado desde el maestro, se debe

poner en 1 el bit de estado local/remoto que corresponde a la dirección 10 o 218

Page 59: Programa de supervisión y configuración para controladores

59

(MODBUS). El esclavo continúa en modo remoto hasta que la actividad en la

línea sea interrumpida por más de 3 segundos.

- Modo local: La comunicación maestro/esclavo se limita a la transferencia de

datos del esclavo al maestro, sin poder modificar ningún parámetro desde el

maestro, con la excepción del bit de estado local/remoto. Los parámetros sólo

se pueden modificar desde el teclado externo.

- Modo remoto: Los parámetros del esclavo sólo pueden ser modificados desde el

maestro.

Page 60: Programa de supervisión y configuración para controladores

60

CAPÍTULO 3: Familiarización con el controlador Foxboro®

716C en el Laboratorio de Control Automático

Para familiarizarse con el funcionamiento del Foxboro® 716C, se utilizó como

controlador del equipo Lab-Volt® 3522-0 utilizado en el curso IE-0432, “Laboratorio de

Control Automático” realizando con este las prácticas de laboratorio.[3] A continuación se

presentan los procedimientos utilizados y los resultados obtenidos en estas prácticas.

3.1 Descripción y configuración de los equipos

3.1.1 Procesos de caudal y temperatura Lab-Volt® 3522

Este equipo contiene dos diferentes procesos que pueden usarse de forma

independiente, uno de caudal y otro de temperatura.

El proceso de caudal consiste en un ducto con un ventilador de velocidad variable,

cuya acción se controla mediante un elemento de actuación de corriente (4 a 20 mA) o de

voltaje (0 a 5 V). El caudal de aire se mide usando un tubo de Venturi y un medidor de

presión diferencial. Un transmisor se encarga de enviar el valor medido hacia el exterior,

sea por medio de una señal de corriente (4 a 20 mA) o de voltaje (0 a 5 V). Además, el

tubo tiene una compuerta con apertura regulable para introducir perturbaciones al sistema.

El proceso de temperatura consta de una pieza metálica con un elemento calefactor,

que puede aumentar su temperatura por medio de un elemento de actuación de corriente (4

a 20 mA) o de voltaje (0 a 5 V). Para enfriar la pieza, se utiliza un disipador de calor junto

con el flujo de aire proveniente del mismo ventilador que utiliza el proceso de caudal. Un

sensor se encarga de medir el valor de la temperatura, y un transmisor de salida de voltaje

Page 61: Programa de supervisión y configuración para controladores

61

(0 a 5 V) o de corriente (4 a 20 mA) lleva la señal hasta el controlador. Los transmisores de

ambos procesos tienen ajuste de “cero” y “ámbito”, por lo que deben ser calibrados

adecuadamente antes de utilizarlos.

La guía del Laboratorio de Control Automático[13] provee un diagrama esquemático

del equipo, así como una descripción de las distintas partes:

Figura 3.1 Diagrama esquemático de los procesos del Lab-Volt® 3522.

1. Entrada de aire al ducto

2. Elemento calefactor, radiador y sensor de temperatura

3. Tubo Venturi y tomas de presión para la medición del caudal de aire

4. Compuerta para producir perturbaciones

5. Ventilador

6. Salida del ducto

7. Actuador del ventilador

Page 62: Programa de supervisión y configuración para controladores

62

8. Transmisor de caudal de aire en el ducto

9. Transmisor de temperatura de la pieza calentada

10.Actuador del elemento calefactor

3.1.2 Controlador Foxboro® 716C Las características de este controlador fueron ya mencionadas en el Capítulo 2.

Durante el desarrollo de estas prácticas se utilizó este instrumento como controlador de los

procesos de caudal y temperatura, pero usando en todo momento los modos de

configuración y operación manuales, ya que aún no se había desarrollado el programa de

configuración y supervisión remoto.

Los valores de configuración utilizados fueron los siguientes:

Tabla 3.1 Parámetros de configuración del controlador para el uso en el laboratorio

Descripción de parámetro Valor utilizado

Tipo de entrada Lineal: V [0,5 V]

Posición de punto decimal Una posición decimal

Valor inicial de escala (bajo) 0.0

Valor completo de escala (alto) 100

Acción de Salida 1 Salida de control de acción reversa

Tipo de Salida 1 Salida de tipo 4 a 20 mA

Función de salida 2 No usada

Función de salida 3 No usada

Punto de operación del arranque suave 0

Bloqueo de seguridad Desbloqueado

Page 63: Programa de supervisión y configuración para controladores

63

Tabla 3.1 Parámetros del controlador para el uso en el laboratorio (cont.)

Descripción de parámetro Valor utilizado

Acción de la salida de control principal Resultado del calculo PID

Valor desplegado de la salida principal Resultado del calculo PID

Función de auto ajuste (SMART AT) Protegida bajo el Bloqueo de seguridad

Valor máximo de la banda proporcional calculada por auto ajuste 30

Valor mínimo de la banda proporcional calculada por auto ajuste 1.0

Valor mínimo del tiempo integral calculado por auto ajuste 0.2

Función manual Habilitada

Estado del dispositivo al arranque Inicio en modo AUTO

Duración del time out en el modo de operación 30 segundos

Valor de Seguridad de la salida Sin valor de seguridad (por defecto)

Filtro digital en el valor desplegado No usa filtro

Tipo de acción de control El proceso es controlado por acción PID

3.1.3 Programa de control digital Lab-Volt LVPROSIM La planta Lab-Volt® 3522 viene acompañada de un software propietario llamado

LVPROSIM que no solo permite supervisar los procesos, sino que incorpora un controlador

PID si se desea realizar el control. La comunicación entre la planta y el programa se realiza

mediante una caja de interfaz de entradas y salidas que permite la lectura de hasta seis

señales analógicas (con rango de 0 a 5 V o de 0 a 15 V) o dos entradas digitales (TTL), y

que tiene dos salidas analógicas (0 a 5 V) y dos salidas digitales (TTL), y se comunica con

la PC por medio del puerto serial (RS-232).

Para realizar las prácticas utilizando el Foxboro® 716C como controlador externo,

se prescindió de las opciones de controlador LVPROSIM, pero sí se hizo uso de otras

Page 64: Programa de supervisión y configuración para controladores

64

características de este programa, como el registrador de tendencias y el generador de

funciones. El registrador de tendencias es una ventana que muestra gráficamente los

valores de las señales analógicas de las entradas y salidas de la caja de interfaz, por lo que

es útil para observar las señales de la variable controlada, la salida del controlador, la salida

del generador de funciones, entre otros. Además, presenta unos botones que permiten

guardar los valores medidos en un archivo de texto, para su posterior análisis. El generador

de funciones puede generar señales cuadradas, senoidales o triangulares con diferentes

valores de frecuencia y amplitud. Sin embargo, puede utilizarse también como una

estación de carga manual usando una onda cuadrada con frecuencia 0 Hz y desviación 0

(señal DC), para variar la velocidad del abanico introduciendo perturbaciones al proceso de

temperatura. La salida del generador de funciones generalmente se conecta internamente a

la salida 2 de la caja de interfaz.

Es importante mencionar que dependiendo de si se utiliza el proceso de caudal o el

de temperatura, hay que ajustar la constante de tiempo del filtro en la configuración de las

entradas analógicas así como el período de muestreo (500 ms para el proceso de

temperatura o 250 ms para el proceso de caudal) para que las señales sean capturadas

correctamente y para que la escala de tiempo del registrador de tendencias sea correcta.

3.1.4 Conexión de los equipos

Para llevar a cabo los experimentos y poder registrar tanto las señales de la variable

controlada como la salida del controlador, era necesario hacer una conexión entre la planta

Lab-Volt® 3522, el controlador Foxboro® 716C y la caja de interfaz de entradas y salidas

Lab-Volt® 9065. Sin embargo, la planta permite tanto entradas de voltaje (0 a 5 V) como

Page 65: Programa de supervisión y configuración para controladores

65

de corriente (4 a 20 mA); y el controlador entradas de voltaje (0 a 5 V) y corriente (4 a 20

mA), pero únicamente presenta una salida de corriente (0 a 20 mA ó 4 a 20 mA). La caja

de interfaz acepta solamente entradas de voltaje (0 a 5 V ó 0 a 15 V), por lo que había

cierto problema de incompatibilidad entre las entradas y salidas, lo cual requirió algunos

ajustes adicionales.

Figura 3.2 Conexiones para el control y monitoreo del proceso de temperatura

Para que la salida del controlador pudiera ser observada mediante el registrador de

funciones del LVPROSIM, se debía convertir la señal de corriente en una señal de voltaje

Page 66: Programa de supervisión y configuración para controladores

66

que la caja de interfaz pudiera reconocer. Para ello se hizo uso de una resistencia de 250 Ω

con tolerancia de 0.1% conectada entre la terminal positiva de la señal de salida del

controlador y tierra. De esta forma, el voltaje medido a través de esta resistencia variaría

de 1 a 5 V cuando la señal se movía entre los 4 y 20 mA.

Figura 3.3 Conexiones para el control y monitoreo del proceso de caudal

Estos valores de voltaje se daban al no tener carga conectada, pero al conectar este

nodo a las entradas de voltaje de la planta y de la interfaz, los valores de voltaje disminuían

visiblemente, debido a que las impedancias de entrada de la plata y de la interfaz no eran

suficientemente altas. Fue entonces que se decidió utilizar un amplificador operacional en

Page 67: Programa de supervisión y configuración para controladores

67

configuración de buffer (seguidor de voltaje) conectado a la terminal positiva de la

resistencia, para evitar caídas de tensión debidas a las bajas impedancias de entradas. Para

ello se utilizó un solo amplificador del integrado LM324, polarizándolo con 12 V dc por

medio de una fuente de voltaje externa.

De esta forma, las conexiones finales para utilizar el proceso de temperatura y el

proceso de caudal se presentan en las Figuras 3.2 y 3.3 respectivamente.

3.2 Experimentos realizados en el laboratorio

Como parte de la familiarización con el controlador, se realizaron los siguientes

experimentos:

1- Obtención de la característica estática de los procesos de caudal y temperatura

2- Obtención de la característica dinámica de los procesos de caudal y temperatura

3- Determinación de los parámetros últimos o críticos de ambos procesos

4- Operación del controlador en modo proporcional (P)

5- Operación del controlador en modo proporcional-integral (PI)

6- Operación del controlador en modo proporcional-integral-derivativo (PID)

7- Sintonización del controlador mediante el Método de Ziegler y Nichols

8- Sintonización del controlador mediante criterios integrales.

El detalle de los procedimientos seguidos en cada práctica y los resultados

obtenidos se presentan en el Apéndice E.

Page 68: Programa de supervisión y configuración para controladores

68

La idea de llevar a cabo las prácticas anteriores tenía tres propósitos fundamentales,

los cuales eran:

1) Determinar si era posible utilizar el controlador Foxboro® 716C como parte de las

prácticas del Laboratorio de Control Automático, y que este funcionara de manera

adecuada en cada caso, ya que este es el ambiente en donde se pretende utilizar en

un futuro.

2) Comprobar el tipo de algoritmo PID que tiene el controlador, ya que ni en toda la

documentación provista por el fabricante, ni en la información disponible en

Internet especificaba el tipo de algoritmo que seguía. Sin embargo, al configurar al

controlador por medio de métodos de sintonización específicos para controladores

PID ideales se observó que el comportamiento fue coherente con lo esperado,

además de que los resultados obtenidos fueron similares a los que obtuvieron otros

estudiantes del Laboratorio de Control Automático utilizando el controlador del

LVPROSIM, que si tiene un algoritmo PID-ideal.

3) Familiarizarse con la operación y configuración del controlador para así poder

observar cuales son las opciones más comúnmente utilizadas, y las funciones más

relevantes, para así poder decidir cuáles eran los parámetros que debían ser

incluidos en el programa de supervisión y configuración.

Una vez que se pudo observar el comportamiento del controlador PID bajo

configuración local, podía pasarse a la siguiente fase, la cual consistía en realizar el enlace

del controlador con la PC, para iniciar la comunicación remota.

Page 69: Programa de supervisión y configuración para controladores

69

CAPÍTULO 4: Preparación inicial de la red RS-485 y pruebas

de protocolo de comunicación

4.1 Conexión del controlador Foxboro® 716C con la PC

En el apartado 2.2.3 se mencionó que el controlador posee tres terminales que están

destinadas para utilizarse como interfaz serial RS-485 para que un computador pudiera

configurarlo y controlarlo de forma remota. Sin embargo, la mayoría de las computadoras,

incluyendo las que existen en el Laboratorio de Control Automático no están equipadas con

un puerto RS-485, sino que comúnmente tienen disponible un puerto serial RS-232 para

establecer la comunicación con distintos dispositivos.

Por lo tanto, era necesario adquirir una tarjeta de comunicaciones RS-485 para

instalarla en la PC que iba a utilizarse para comunicarse con el controlador, o como

segunda opción, adquirir un convertidor RS-232/RS-485. La segunda alternativa resultó

ser mejor, ya que al ser un componente de hardware externo, se presentaba mayor

portabilidad para el sistema, al no tener que depender de un solo computador para el

manejo de los controladores.

Con este fin, se consiguió el convertidor IC485SN marca Aten Technologies, el

cual presenta las siguientes características:

- Convertidor bi-direccional de RS-232 a RS-485.

- Funciona con interfaz RS-485 half duplex o full duplex.

- Terminales RS-485 de tipo tornillo o RJ-11.

- Puerto RS-232 de tipo DB-25 (25 pines).

Page 70: Programa de supervisión y configuración para controladores

70

- No requiere alimentación externa.

- Interruptor para seleccionar entre si el dispositivo trabaja en modo DCE o DTE

- Interruptor para habilitar el control del protocolo de la comunicación mediante

una señal RTS.

Figura 4.1 Convertidor RS-232/485 de Aten Technologies

Por otra parte, se debió utilizar un adaptador DB9 hembra a DB25 macho tal y

como el que muestra la Figura 4.2 para conectar el convertidor a la PC debido a que el

puerto serial de ésta era únicamente de 9 pines.

Figura 4.2 Adaptador DB-9 hembra a DB-25 macho para puerto serial

Page 71: Programa de supervisión y configuración para controladores

71

El cable que se utilizó para la conexión entre los dispositivos es un Belden 9501,

que consta de un par trenzado de conductores 24 AWG con pantalla y conductor de

drenaje. Con este tipo de cables, el conductor de drenaje puede utilizarse como el

conductor común de la interfaz RS-485, mientras que el par trenzado lleva las señales

complementarias A y B.

Para soportar tanto redes half duplex como full duplex, las salidas de las señales RS-

485 del convertidor RS-232/485 cuentan con cuatro terminales: T+ (1), T- (2), R- (3) y R+

(4). En el caso presente en que solamente se va a utilizar una configuración half duplex

multipunto, las terminales 1 y 4 se unen entre sí, así como 2 y 3. Según la convención para

RS-485, las terminales denominadas como positivas (1 y 4) corresponden a la señal B,

mientas que las negativas a la señal de A. En el Foxboro® 716C, estas señales

corresponden a las terminales 12 (B/B’) y 11 (A/A’), respectivamente.

Sin embargo, el convertidor IC485SN no cuenta con ninguna terminal para el

conductor común, lo cual es un requisito de la conexión de interfaces RS-485, tal y como

indica el estándar. Por lo tanto, como solución temporal, se conectó el conductor de

drenaje del par trenzado a la terminal 13 (C) del controlador por un lado, y a la carcasa del

puerto serial de la PC, del otro. De esta forma, se cumplía además con el requisito de que

el conductor común debe estar aterrizado en uno de sus extremos. Ya como solución

permanente se propone realizar una modificación interna al convertidor IC485SN, donde se

agregue un conductor que esté soldado al pin número 7 (aterrizado) del conector DB25 en

un extremo, y que pueda accederse por medio de un contacto adicional al puerto RJ al otro

extremo. Esto implicaría que la conexión entre el convertidor y los controladores se realice

Page 72: Programa de supervisión y configuración para controladores

72

utilizando el cable de par trenzado con terminales RJ-12, que tienen las mismas

dimensiones que las RJ-11, pero pueden conectar hasta seis conductores en lugar de cuatro.

La Figura 4.3 muestra en forma esquemática la manera en que finalmente se realizaría la

conexión entre la PC y un controlador Foxboro® 716, luego de haber realizado las

modificaciones necesarias al convertidor RS-232/485.

Figura 4.3 Diagrama de conexión serial entre la PC y el controlador

Cabe mencionar que, como las distancias entre la PC y los controladores se

pretende que sean relativamente cortas (menos de 5 m.) en esta red RS-485 los efectos de

líneas de transmisión son despreciables, por lo que puede utilizarse un enlace simplificado

de baja potencia, tal como lo establece la sección 2.3.6, en el cual no es necesario realizar la

polarización de las líneas, ni colocar resistencias en los extremos de estas. Por otro lado,

cuando se utilicen dos o más controladores en la red, solamente uno iría conectado

Page 73: Programa de supervisión y configuración para controladores

73

directamente al convertidor RS-485/232. Los demás se colocarían en serie con el primer

esclavo, para conformar la configuración de daisy chain.

4.2 Pruebas de comunicación utilizando software de monitoreo de

puerto serial.

Antes de llevar a cabo la comunicación por medio del programa que debía ser

desarrollado, se hicieron preliminarmente unas pruebas de comunicación serial utilizando

software de monitoreo de puertos ya existente, con el propósito de verificar el

funcionamiento adecuado del puerto, de la red de comunicación, y que el controlador

respondiera correctamente a los comandos enviados.

El programa seleccionado para las pruebas fue el RealTerm: Serial Capture

Program v1.99 (http://realterm.sourceforge.net), ya que poseía la ventaja de traer entre sus

opciones, la de concatenar cualquier mensaje enviado con un código CRC-16 Modbus

calculado por el programa mismo, ahorrando la necesidad de calcularlo cada vez que se

enviara un comando distinto.

El puerto serial fue configurado con las siguientes opciones:

- Puerto: COM1

- Baud rate: 9600

- Bits de datos: 8 bits

- Paridad: sin paridad.

- Bits de parada: 2

- Control de flujo: Ninguno

Esta configuración se resume como: 9600-8-N-2 (baud-bits-paridad-bits de parada)

Page 74: Programa de supervisión y configuración para controladores

74

La Figura 4.4 muestra la interfaz del software de RealTerm, con la configuración de

opciones de puerto en la parte inferior.

Figura 4.4 Software de monitoreo de puerto serial RealTerm

El programa fue utilizado para enviar y recibir las cadenas de datos. Por otra parte,

se utilizó un osciloscopio Tektronix® TDS 220 para capturar las señales que se transmitían

a través del enlace RS-485.

4.2.1 Pruebas para el puerto

Como primera prueba, simplemente se envió la cadena ASCII con los caracteres

“RS” para observar cómo eran transmitidos estos valores binarios, la configuración de bits

de inicio, paridad y parada, así como observar la duración de cada bit y el tiempo de

levantamiento de las señales.

Page 75: Programa de supervisión y configuración para controladores

75

Según la codificación ASCII, la R y S se representan como 1010010 y 1010011

respectivamente. Cuando se envía la información a través del puerto serial, los caracteres

se envían en el mismo orden en que fueron ingresados, pero cada carácter se invierte. Esto

es, primero se envía el LSB y de último el MSB. Además, el inicio de cada dato de 8 bits

se marca con un bit de inicio (en bajo) y se termina con un bit de parada (en alto). Como se

eligió no usar paridad, se utilizan entonces dos bits de parada.

En la Figura 4.5 se ilustra la captura del osciloscopio de la señal “A” del enlace RS-

485, tomando como referencia la tierra del circuito, donde se ilustra lo anterior. La escala

de tiempo es de 250 us/div, y la escala y vertical de 2V/div.

Figura 4.5 Señal “A” al transmitir la cadena ASCII “RS”

Se observa además que la señal “A” tiene un valor de alrededor de 4.3 V cuando se

transmite un 1 binario, y un valor de 710 mV cuando se transmite un 0, y que se mantiene

Page 76: Programa de supervisión y configuración para controladores

76

en un valor alto antes y después de cada transmisión. Por otra parte, cada bit tiene una

duración aproximada de 104.95 us, lo cual se acerca al valor teórico de 1/9600 (104.1667

us) dado por el valor del baud rate.

La Figura 4.6 muestra la señal “A” (arriba), la señal complementaria “B” (en

medio) y la señal diferencial “A-B” (abajo) que resultan al transmitir la cadena ASCII

“RS”. En este caso la escala vertical se cambió a 5V/div.

Figura 4.5 Señal “A”, “B” y diferencial al transmitir la cadena ASCII “RS”

Se observa ahora cómo efectivamente las señales “A” y “B” son de magnitud casi

idéntica, pero de valor opuesto. La señal diferencial resultante tiene un valor de 3.2 V en

alto y de -4.2 V en bajo, por lo que su amplitud es de alrededor de 7.4 V. Según la

referencia y la forma en que se tomó la señal diferencial (Señal A-Señal B), un valor de 1

Page 77: Programa de supervisión y configuración para controladores

77

binario se muestra como un voltaje positivo, mientras que un cero tiene un valor de voltaje

negativo.

Por otra parte, utilizando el osciloscopio se midió también el tiempo de

levantamiento de las señales en la red, obteniendo un valor aproximadamente de 150 ns.

Según la sección 2.3.6, para que una línea de red RS-485 se pudiera considerar corta y se

prescindiera del uso de la terminación y polarización de líneas, el tiempo de levantamiento

de las señales debía ser al menos cuatro veces mayor al tiempo de propagación en un

sentido de la línea (one-way delay). Según la hoja de fabricante del cable Belden 9501, la

velocidad de propagación es un 60% de la velocidad de la luz, por lo que, tomando el hecho

de que la longitud máxima de los cables a utilizar en la conexión será de 4 m, el one-way

delay tiene un valor de 22.2 ns, por lo cual se confirma la configuración utilizada para la

red cumple con los requisitos necesarios.

4.2.2 Pruebas de protocolo y comandos MODBUS La segunda prueba consistió en utilizar algunos comandos reales del protocolo para

determinar si eran interpretados correctamente por el controlador Foxboro® 716C y si este

respondía según lo esperado.

Para estos efectos, el comando elegido como ejemplo fue el que envía la instrucción

al controlador para ponerse en modo remoto, ya que de todas formas el controlador no

responde a instrucciones enviadas a través del puerto serial a menos que se encuentre en

este modo. Según la información de los Apéndices C y D, esta es una función de tipo 5

(escritura de un bit) y tiene el siguiente formato:

Page 78: Programa de supervisión y configuración para controladores

78

Tabla 4.1 Formato de la instrucción para ingresar al modo remoto del controlador

Campo Dato (hex) Dirección de Esclavo 017 Código de Función 05 Dirección de bit (byte alto) 00 Dirección de bit (byte bajo) 0A Dato (byte alto) FF Dato (byte alto) 00 CRC-16 (byte bajo) AC CRC-16 (byte alto) 38

La cadena de datos fue enviada nuevamente utilizando el software de RealTerm,

pero esta vez eligiendo que el formato de los mensajes enviados fuera hexadecimal

separado por espacios en lugar de ASCII. La Figura 4.6 muestra la señal diferencial vista

en el osciloscopio cuando se envía el mensaje anterior desde la computadora.

Figura 4.6 Captura del comando que pone el controlador en modo remoto

7 En este caso, las pruebas se hicieron con el controlador configurado con la dirección 1

Page 79: Programa de supervisión y configuración para controladores

79

Al realizar la prueba, se observó que efectivamente el controlador entraba en modo

remoto, ya que al momento de enviar el mensaje el indicador luminoso “REM” del panel

frontal comenzaba a parpadear. No obstante, según el protocolo de comunicaciones, el

esclavo también debía enviar una respuesta de 2 a 700 ms después de recibir la instrucción,

que para el caso de una Función 5 es realmente un eco del mensaje enviado. Lo anterior se

verificó en el osciloscopio tal y como lo muestra la Figura 4.7.

Figura 4.7 Petición y respuesta para la instrucción de modo remoto

Tal como se observa, la respuesta fue recibida alrededor de 3 ms después de haberse

detectado el fin de la petición. Por otra parte, la señal enviada desde controlador presenta

una amplitud mayor que la del comando proveniente de la PC, con un valor de voltaje pico-

pico de cerca de 9.5 V.

Finalmente, se quiso ver la reacción del esclavo cuando se enviaba un comando

incorrecto, para ver si efectivamente se recibía un código de error de vuelta. Es importante

Page 80: Programa de supervisión y configuración para controladores

80

recordar que únicamente hay una respuesta de error si la instrucción contiene una dirección

ilegal de dato o un valor de dato fuera de rango, si hay un número ilegal de datos requeridos

o si se intenta escribir una palabra o bit que no pueden ser modificados. En caso que de

que el CRC-16 o el código de función indicado no fueran correctos, o si el buffer del

receptor está saturado, el controlador ni siquiera respondería.

Según la Sección 2.4.7, el código de error tiene un formato tal y como muestra la

Tabla 2.4, donde el campo del código de función contiene el código de función enviado

sumado a un valor hexadecimal de 0h80, y en el campo de código de error presenta un

código de acuerdo con el tipo de error, según lo indicado en la Tabla 2.5.

Para probar, se envió nuevamente un mensaje similar al presentado en la Tabla 4.1,

pero en lugar de utilizar el valor de la dirección 0h0A se utilizó 0h20.8 El error esperado

era por tanto:

Tabla 4.2 Error esperado para el direccionamiento erróneo

Campo Valor (hex) Dirección de Esclavo 01 Código de Función (+ 0h80) 85 Código de error 02 CRC-16 (byte bajo) C3 CRC-16 (byte alto) 51

En la Figura 4.8 se observa una captura del programa RealTerm donde se observa el

envío del dato incorrecto y la correspondiente respuesta, y la Figura 4.9 muestra las señales

vistas en el osciloscopio.

8 El valor del CRC-16 en este caso también cambiaba a 0hF08D

Page 81: Programa de supervisión y configuración para controladores

81

Figura 4.8 Petición errónea y respuesta de error vista en el RealTerm

Figura 4.9 Petición errónea y respuesta de error vista en el osciloscopio

Ya observados estos comportamientos, se tenía mayor confianza para realizar la

comunicación desde el programa de configuración y supervisión que iba a desarrollarse.

Page 82: Programa de supervisión y configuración para controladores

82

CAPÍTULO 5: Desarrollo del programa de supervisión y

configuración

5.1 Requerimientos del programa

5.1.1 Requerimientos generales Según los objetivos del proyecto y la experiencia adquirida durante la realización de

los experimentos en el Laboratorio de Control Automático, se concluyó que el programa

debía cumplir con las siguientes características:

- Correr en Windows® XP y tener una interfaz gráfica amigable para el usuario.

- Permitir un cambio rápido entre los modos manual/automático del controlador.

- Configuración rápida de los parámetros de control principales: tiempo integral,

tiempo derivativo, banda proporcional y valor deseado.

- Opciones de configuración para parámetros adicionales, por ejemplo: filtro en el

valor desplegado, tipo de acción de control, valor deseado secundario, valor de

precarga integral.

- Visualización gráfica de la variable realimentada, valor deseado y salida del

controlador y registro de estos valores en un archivo para el análisis posterior.

- Permitir la conexión, desconexión, configuración y control de al menos dos

controladores funcionando de manera simultánea.

- Apegarse al comportamiento de un “maestro”, incluyendo la detección de

errores, según la definición del protocolo MODBUS.

Page 83: Programa de supervisión y configuración para controladores

83

5.1.2 Ejemplos de programas con interfaz gráfica Para determinar la forma en que el programa de interfaz gráfica debía interactuar

con el usuario y el controlador, se hizo un breve análisis de las características de otros

programas supervisores: el GUNT RT 578.20 para el controlador ABB Digitric 500 y el

software LVPROSIM para plantas Lab-Volt® 3522, que también actúa como controlador.

Ya en la sección 3.1.3 se habían mencionado ciertas características del programa

LVPROSIM, sin embargo no se hizo una presentación explícita de su interfaz, tal y como

aparece en la Figura 5.1.

Figura 5.1 Interfaz gráfica del software LVPROSIM de Lab-Volt®

Las diferentes partes que la componen son:

1

3

2

5

4

Page 84: Programa de supervisión y configuración para controladores

84

1) Plantilla frontal del controlador: contiene barras indicadoras e indicadores

digitales para apreciar el valor deseado, la variable controlada y la señal de

salida del controlador. Además posee un selector Automático/Manual para su

operación. Si el controlador está en operación manual, el valor de la salida del

controlador se puede modificar mediante el deslizamiento de la barra de salida o

cambiando su valor en la casilla indicadora.

2) Registrador de tendencias: Muestra gráficos de las entradas y salidas del

controlador y otras variables. Los botones en la parte inferior del registrador

permiten pausar o borrar el registro, así como reiniciar el reloj. También se

muestra la escala de tiempo del registro, la cual depende del periodo de muestro

seleccionado. Se puede elegir también si se guardan los datos en un archivo.

3) Visualizador de entradas: Permite visualizar los valores de las variables de

entradas por medio de barras indicadoras.

4) Visualizador de salidas: Permite observar los valores de la salida del

controlador, así como del generador de funciones, en caso de que sea utilizado.

5) Menú de opciones y configuración: Contiene los menús y diálogos de

configuración para que el usuario pueda establecer la comunicación, seleccionar

el período de muestreo, escoger las señales que serán desplegadas en el

registrador, configurar el tipo de entradas analógicas, escoger el tipo de acción

del controlador, introducir los parámetros del controlador y configurar y

accionar el generador de funciones, entre otros aspectos.

Page 85: Programa de supervisión y configuración para controladores

85

El programa GUNT RT 578.20, por su parte, presenta una interfaz con las

siguientes características:

Figura 5.2 Interfaz gráfica del software GUNT RT 578.20

Las diferentes partes que la componen son:

1) Registrador de variables: gráfico en función del tiempo del valor deseado, salida

del controlador y valor realimentado. Los valores actuales se presentan en el

extremo derecho. Con un botón se puede detener y reiniciar el registro. La

constante de tiempo, y las escalas x y y pueden ajustarse. Finalmente hay

también botones para borrar o imprimir el gráfico desplegado.

2

1

3

4

Page 86: Programa de supervisión y configuración para controladores

86

2) Selección del controlador y otros subprogramas: en este panel se presentan

varios botones para ejecutar funciones diversas. El primero de ellos permite

elegir entre tres modos predefinidos de control. El segundo permite acceder

opciones avanzadas de configuración del controlador. El tercero abre un

subprograma de análisis del gráfico de control y los últimos dos son para

obtener información del programa o cerrarlo, respectivamente.

3) Tablero de parámetros y variables de control: Permite modificar los valores de

valor deseado, salida del controlador y valor realimentado por medio de barras

de desplazamiento. Además contiene casillas numéricas para ingresar los

parámetros de control (ganancia, tiempo proporcional y tiempo integral). Estos

parámetros no son cambiados en el controlador hasta que no se presione el

botón de escritura, que se encuentra debajo. El botón de la parte inferior sirve

para cambiar entre los modos manual y automático. Este panel soporta hasta

dos lazos de control independientes.

4) Registro de valores medidos: Este bloque de funciones permite el registro

manual o continuo de datos en un archivo para el análisis posterior. La ruta del

archivo y el nombre del mismo pueden ser seleccionados por el usuario. Para el

registro automático se puede escoger el intervalo de muestreo.

5.2 Elección del lenguaje de programación

Según los requerimientos del programa y en el tipo de funciones que se debían

realizar, se eligió Perl como lenguaje de programación, dadas las siguientes ventajas:

Page 87: Programa de supervisión y configuración para controladores

87

1) Facilidad de aprendizaje: aparte de que ya se contaba con cierta

familiarización con el lenguaje, Perl es un lenguaje práctico, eficiente, flexible y

completo, lo cual permite que pueda ser asimilado en poco tiempo.

2) Disponibilidad de información: el intérprete de Perl es un software de código

abierto. Esta disponibilidad, unido a la gran versatilidad del lenguaje, han

logrado que Perl cuente con amplia popularidad, por lo que es fácil acceder por

medio de Internet gran cantidad de documentación, literatura o artículos que

resultan útiles para el programador, además de la gran cantidad de

documentación que viene con el programa en sí.

3) Módulos especiales: existen una gran colección de “módulos” para Perl

destinados a realizar tareas especiales que no vienen con la distribución estándar

del programa, pero que pueden obtenerse por Internet a través de CPAN

(Comprehensive Perl Archive Network - http://search.cpan.org/), el cual cuenta

con la contribución de más de 10000 autores. Dentro de esos módulos se

encuentra por ejemplo el Win32::SerialPort, para el manejo del puerto serial; el

Tk::Graph, que sirve para realizar gráficos dentro de interfaces gráficas y el

Time::HiRes para realizar operaciones con unidades de tiempo pequeñas. Los

módulos mencionados eran indispensables para poder realizar el programa

propuesto.

4) Facilidad para manejo de interfaces gráficas: dentro de los módulos nativos

de la distribución de Perl se encuentra “Tk”, el cual contiene una serie de

Page 88: Programa de supervisión y configuración para controladores

88

herramientas o widgets para la creación de interfaces gráficas mediante el uso de

programación orientada a objetos, el cual es bastante intuitivo y flexible, lo que

permite construir interfaces poderosas con codificación sencilla.

5) Portabilidad: Perl se encuentra disponible para la mayoría de los sistemas

operativos existentes y es relativamente transparente entre estos, por lo que con

algunas modificaciones, un programa escrito en Perl puede ser prácticamente

multiplataformas, esto es, que si se escribe en Windows® puede ser fácilmente

trasladado para correr en Linux, por ejemplo.

5.3 Descripción de la interfaz gráfica

5.3.1 Vista general de la interfaz

Basándose en las necesidades del programa, y rescatando aspectos importantes de

los programas antes mencionados, se realizó la interfaz gráfica para el programa utilizando

Perl/Tk, la cual se observa en la Figura 5.3. Los elementos que la componen son:

1) Control de conexión/desconexión

2) Tablero de operación y sintonización del controlador

3) Configuración de gráfico y registro

4) Gráfico de tendencias

5) Ventana de mensajes

Page 89: Programa de supervisión y configuración para controladores

89

En las secciones siguientes se describirán cada uno de estos bloques funcionales,

detallando sus elementos e interacción con el usuario.

Figura 5.3 Interfaz gráfica del programa realizado

5.3.2 Control de conexión/desconexión Sus elementos son: casilla de selección del esclavo, botón de conexión y botón de

desconexión. Los esclavos se van conectando de uno en uno, seleccionando la dirección

respectiva en la casilla y enviando el comando de conectar. En caso de que el esclavo

seleccionado no esté físicamente conectado a la red, el programa desplegará un error en la

ventaja de mensajes (5). La casilla de selección también sirve para indicar a cuál esclavo se

le enviarán los comandos a través del tablero de operación (2). Si se selecciona la dirección

de esclavo cero, entonces los comandos se enviarán en modo broadcast, es decir, a todos

1

2

3

4

5

Page 90: Programa de supervisión y configuración para controladores

90

los esclavos a la vez. La desconexión de los esclavos se puede ir haciendo igualmente de

uno a uno o todos a la vez, eligiendo la dirección de esclavo cero. El botón de desconexión

no se habilitará a menos de que el esclavo seleccionado se encuentre actualmente

conectado.

5.3.3 Tablero de operación y sintonización del controlador Este módulo es el que cuenta con mayor cantidad de elementos: interruptor de

selección de modo automático/manual, casillas de parámetros de control, botón de

configuración, botón de refrescamiento de parámetros de control, y botón de envío de

parámetros. Después de realizarse una conexión exitosa con algún esclavo, todos los

elementos del tablero se encuentran deshabilitados, a excepción del botón de

refrescamiento. De esta forma, al presionar este botón se habilitan el resto de elementos del

panel, se obtienen el modo y los valores actuales del controlador y se colocan en las casillas

correspondientes, además de ser desplegados en la ventana de mensajes (5). El interruptor

de selección de modo permite precisamente cambiar entre modo de operación automático o

manual. En el modo automático la casilla del valor de salida del controlador (“u(t)”) queda

deshabilitada. Los valores de las casillas de parámetros de control pueden editarse

utilizando las flechas al lado del cuadro, o editando directamente el texto que está en la

casilla. En caso de ingresarse algún carácter no numérico se desplegará un mensaje de

error (5). Los campos correspondientes al tiempo integral y tiempo derivativo contienen

dos casillas cada uno: la primera es para el valor en minutos y la segunda para segundos.

Una vez que se ingresen nuevos valores en las casillas, estos no se actualizarán en el

controlador sino hasta que se presione el botón de envío. Al hacerlo, el programa primero

Page 91: Programa de supervisión y configuración para controladores

91

verificará que todos los valores de las casillas estén dentro del rango correcto. De lo

contrario imprimirá un mensaje de error (5) y sustituirá los valores incorrectos con el valor

máximo o mínimo de la escala, en caso de que haya un valor encima o debajo del rango,

respectivamente. Si los valores son correctos y el envío se concluye exitosamente, las

variables se confirman en la ventana de mensajes (5). Una excepción de lo anterior es el

caso de la casilla de u(t) en modo manual, ya que el valor de la salida del controlador sí se

cambia directamente al editar el valor de la interfaz. Como se dijo en la sección previa, el

tablero del controlador envía comandos al esclavo cuya dirección aparezca en ese momento

en la casilla de direcciones (1). En caso de que se cambie la dirección de esclavo

nuevamente el panel se deshabilita hasta que se haga un nuevo refrescamiento de valores.

Si se elige la dirección cero (broadcast) la opción de refrescar se deshabilita, ya que en este

modo ningún esclavo puede contestar, pero sí se pueden enviar valores a todos los esclavos

al mismo tiempo.

El botón de configuración abre una nueva ventana (Figura 5.4) para modificar

parámetros adicionales en el controlador cuya dirección aparece en ese momento en la

casilla de direcciones (1), o en todos, si está en modo broadcast. Estos parámetros incluyen

el valor de precarga integral y el valor deseado secundario (SP2), el tipo de control (PID ó

PID) y la habilitación del filtro en la variable realimentada. Los dos primeros parámetros

pueden leerse o escribirse, mientras que los últimos son únicamente de lectura, ya que el

dispositivo no permite configurarlos de forma remota. Cuando se envían comandos para un

solo controlador, los botones de envío se habilitan hasta después de leer el valor actual,

Page 92: Programa de supervisión y configuración para controladores

92

mientras que en modo broadcast los botones de lectura no se encuentran deshabilitados,

pero no así los de envío.

Figura 5.4 Ventana del diálogo de configuración del controlador

5.3.4 Configuración de gráfico y registro Sus elementos son: botón de activación de registro, botón de desactivación de

registro, botón de borrado de gráfico y archivo, campo de ruta de archivo de registro, botón

de elección de nombre de archivo y botón para elección de ruta del mismo. Al abrir el

programa, el campo de la ruta de archivo indica la ruta predeterminada: “c:\temp\graph” y

el nombre de archivo predeterminado “Foxboro_data.csv”. Si los archivos o carpetas no

existen, se crearán, mientras que si ya existe el archivo los nuevos datos se anexarán a los

datos que actualmente se encuentren en el archivo, a menos que se presione el botón de

[Borrar]. Con los botones de ruta y nombre de archivo, [Ruta…] y [Archivo…] pueden

sustituirse los valores predeterminados con valores que el usuario desee. Inicialmente, los

botones de [Registro], [Detener] y [Borrar] se encuentran desactivados, a menos que haya

algún esclavo ya conectado. Una vez lograda la comunicación, puede iniciarse la

Page 93: Programa de supervisión y configuración para controladores

93

graficación y el registro de los valores presionando el botón de [Registro], con lo cual

aparecerá el gráfico en la ventana correspondiente (4). Una vez que se tomen los valores

necesarios, se detiene la graficación y el registro con el botón de [Detener]. Si se quieren

ver los valores resultantes, debe abrirse el archivo que se encuentra en la ruta que se haya

seleccionado anteriormente. En caso de que se quieran tomar nuevos valores, si se quiere

que estén en un archivo aparte debe seleccionarse un nuevo nombre o ruta de archivo y

después presionar nuevamente el botón de [Registro]. Si se quiere que los nuevos valores

se anexen al mismo archivo solamente se vuelve a presionar el botón de [Registro]. Si se

presiona el botón de [Borrar] se limpiará la ventana de gráfico, pero también se borrarán

todos los datos anteriores en el archivo actual.

5.3.5 Gráfico de tendencias En esta ventana se muestra un gráfico con las variables principales de control: valor

realimentado (y(t)), salida del controlador (u(t)) y valor deseado (r(t)), tanto para el esclavo

“principal”, como para un “secundario”. El esclavo “principal” será el que se conecte

primero, y el “secundario” el que lo siga. Las variables de los dos controladores pueden

distinguirse entre sí porque utilizan colores diferentes, tal y como muestra la Tabla 5.1:

Tabla 5.1 Código de colores utilizado en los gráficos de control del programa

Parámetro de control Principal Secundario

y(t) Rojo Café

u(t) Amarillo Blanco

r(t) Azul Naranja

Page 94: Programa de supervisión y configuración para controladores

94

El gráfico despliega a la vez hasta 200 muestras tomadas, luego de eso se

comenzará a desplazar hacia la izquierda, perdiendo de vista los valores anteriores.

5.3.6 Ventana de mensajes Tal y como se ha mencionado, esta ventana cumple únicamente una labor

informativa, desplegando mensajes al usuario cuando una operación se realiza

satisfactoriamente, dando los valores de control que son leídos o escritos al controlador, o

advirtiendo cuando ocurren errores de rango, o de comunicación. La ventana tiene una

barra de desplazamiento vertical, por lo que pueden observarse el historial de todos los

mensajes que han desplegado desde el momento en que se inició la sesión del programa.

5.4 Funcionamiento interno del programa

5.4.1 Interacción con interfaz gráfica Como todo programa escrito en Perl/Tk donde se dispone de una interfaz gráfica o

GUI para interactuar con el usuario, el presente programa es dirigido por “eventos”, lo cual

significa que su ciclo principal se encarga de llamar a distintas subrutinas respondiendo a

eventos externos como el presionar un botón, por ejemplo. Por tanto, la interacción con el

usuario es primordial para determinar el flujo de control del programa. Sin embargo,

también existen otros procesos que se continúan efectuando cíclicamente después de haber

realizado una acción y que deben detenerse por medio de otra acción específica. En las

siguientes secciones se explicarán los procesos más importantes dentro del flujo del

programa y cómo interactúan estos con las entradas provenientes desde el usuario.

Page 95: Programa de supervisión y configuración para controladores

95

5.4.2 Establecimiento de conexión Antes de poder comenzar a enviar o recibir comandos hacia o desde un esclavo,

primero debe establecerse una conexión con él para hacerlo entrar en modo remoto. Sin

embargo, el manual del controlador especifica que si un esclavo no recibe ningún comando

durante 3 segundos, vuelve a ponerse en modo local. Además, el programa debía permitir

que se manejara la conexión con dos o más controladores a la vez. Con todo ello, se

implementó en el programa el flujo de conexión y re-conexión de los esclavos tal y como

se aprecia en la Figura 5.5. El proceso se inicia cuando el usuario selecciona la dirección

de un esclavo y presiona el botón de conexión. Una vez que esto ocurre, la dirección del

esclavo pasa a formar parte de una lista que contiene las direcciones de los dispositivos

conectados y se le envía el comando para colocarlo en modo remoto (Función 5 MODBUS,

dirección 10, bit en alto). Una vez que se logra una conexión exitosa, se entra en un ciclo

automático donde cada 3 segundos se envía el comando de conexión a todos los esclavos

que se encuentren dentro de la lista, con un retardo de 10 ms entre cada uno, para dar

tiempo a que se estabilice el puerto. Si antes de los 3 segundos se envía cualquier otra

instrucción por la red, el contador se devuelve a cero y reinicia el conteo de los 3 segundos,

ya que el requisito es que se envíe cualquier instrucción durante este tiempo.

En caso de que se le envíe el comando a un esclavo que no esté físicamente

conectado, o en caso de que un esclavo se desconecte accidentalmente de la red, el

programa detectará el error de conexión, imprime un mensaje de error y eliminará ese

elemento de la lista de esclavos, para evitar que se vuelva a mandarle el comando. Si este

esclavo era el único que se había conectado, entonces se sale completamente del ciclo.

Page 96: Programa de supervisión y configuración para controladores

96

Figura 5.5 Flujo del proceso de conexión de los controladores

inicio

Bandera de conexión = 1

Activación de widgets

Agregar dirección a lista de direcciones

Iniciar timer de 3 s

Tomar elemento de la lista de direcciones

Enviar comando de conexión a ese esclavo

Esperar 10 ms

Conexión exitosa?

¿Más elementos en lista?

Esperar fin de timer

¿Timer agotado?

Enviar mensaje de error de conexión

Quitar elemento de la lista de

direcciones

¿Lista vacía?

Fin

Desactivar widgets

Bandera de conexión = 0

¿Otra instrucción?

Instrucción Desconexión

Apuntar siguiente elemento de lista

SI

NO

NO

SI

NO

SI

NO SI

SI

NO

SI

NO

Page 97: Programa de supervisión y configuración para controladores

97

De forma similar, si durante este tiempo se le envía el comando de desconexión a

alguno de los controladores, su dirección se saca de la lista, y si ya no quedan más

elementos en esta, entonces se termina también el proceso. El proceso completo de

desconexión se muestra en detalle en la Figura 5.6.

Figura 5.6 Flujo del proceso de desconexión de los controladores

La fase de “detener procesos pendientes” se refiere a que se detienen los ciclos de

registro, graficación, y conexión, si todavía estaban activos.

inicio

Detener procesos pendientes

Quitar dirección de lista de direcciones

Fin de timer de conexión

Enviar comando de conexión a ese esclavo

Esclavo está

conectado

¿Lista vacía?

Fin

Desactivar widgets

Bandera de conexión = 0

NO

NO

SI

SI

Page 98: Programa de supervisión y configuración para controladores

98

5.4.3 Proceso de envío de mensajes

Figura 5.7 Flujo del proceso de envío de mensajes al controlador

inicio

Leer datos del GUI

Formato de parámetros de mensaje (func..)

Agregar CRC-16

Convertir a ASCII

Enviar mensaje por el puerto serial

¿Mensaje recibido?

Procesamiento genérico

¿Varios esclavos?

¿Instrucción graficación?

NO

SI

Esperar mensaje I

Fin

¿Mensaje completo?

Esperar mensaje II

Broadcast?

Quitar elemento de la lista de

direcciones

¿Lista vacía?

Bandera de conexión = 0

Esperar 20 ms

Mensaje de error

Detener procesos pendientes

SI

NO

SI NO

SI

NO

NO

SI

SI

NO

Error

SI

NO

Error

Mensaje de error

Fin

SI

Verificación de datos

NO

Mensaje de error

Page 99: Programa de supervisión y configuración para controladores

99

El envío de los mensajes desde el programa hacia el controlador debía cumplir con

los requerimientos del protocolo MODBUS, tanto en el formato de los datos, como en el

diagrama de estados del maestro (Figura 2.20). El proceso es iniciado al recibir un evento

que proviene desde el GUI, y de esta se toma la información que va a ser enviada al

esclavo, según el comando elegido. Si la instrucción consiste en escribir valores de

parámetros de control que fueron ingresados por el usuario, hay primero una verificación

de los valores para no enviar valores incorrectos. En caso de error, se imprime una

advertencia, y el mensaje no se envía. En caso contrario, al mensaje por enviar se le da el

formato según el tipo de función MODBUS al cual corresponda (ver Apéndice C). Esto

incluye el cálculo y anexo del código de redundancia cíclica CRC-16 para la detección de

errores. Una vez que los datos están completos, la información se convierte en ASCII para

enviarla a través del puerto serial utilizando las capacidades del módulo Win32::SerialPort.

Inmediatamente después del envío, se procede a verificar que el esclavo haya

respondido adecuadamente, según lo establecido en el Apéndice C para cada tipo de

función y sabiendo el número de bytes esperado. Según el manual del controlador, la

respuesta puede ocurrir luego de 2 a 700 ms. Sin embargo, en el programa esto se dividió

en dos etapas de espera. En la etapa I hay un límite de tiempo de 100 ms. Si después de

este tiempo hay una respuesta, se procede con el procesamiento de esta. Si no, entonces se

pasa a una segunda etapa de espera de hasta 600 ms en caso de hablar con un solo

controlador, o de 100 ms más para el modo broadcast. Al agotarse el tiempo y no haber

aún respuesta (o si está incompleta), si se encontraba en modo broadcast entonces es

Page 100: Programa de supervisión y configuración para controladores

100

normal que no haya contestación, y por tanto se continúa con el flujo. En caso de que no,

entonces se detecta que hay un error de comunicación con el esclavo elegido, con lo cual se

pasa a un proceso de error similar al presentado en la Figura 5.6, donde su dirección se

elimina de la lista y en caso de ser el único esclavo, se detienen todos los procesos.

Si el mensaje recibido tiene una longitud igual a la esperada, entonces continúa con

un procesamiento “genérico”, donde básicamente se verifica que el esclavo que respondió

fue el adecuado, y donde se chequea que no hayan ocurrido errores de “marco”, realizando

nuevamente un cálculo de CRC-16 y comparándolo con el que fue recibido. En caso de

error, se imprime un mensaje de advertencia al usuario.

Finalmente, si hay varios esclavos conectados a la vez, se da un retardo de 20 ms

después de cada instrucción para que el puerto se estabilice, evitando errores de

comunicación inducidos. La excepción a esto ocurre cuando se están solicitando los datos

para la graficación y registro, ya que un retardo afectaría el período de muestreo.

5.4.4 Procesamiento adicional de mensajes En el punto anterior, se observó que el ciclo de envío de las intrucciones incluye un

procesamiento genérico de los mensajes recibidos. Sin embargo, cuando la instrucción

enviada corresponde a la Función 1 (lectura de n bits) o Función 3 (lectura de n palabras),

debe darse un proceso de interpretación suplementario de los datos obtenidos, para obtener

la información relevante que se solicitó.

Esta labor corresponde a dos funciones separadas (Process_Func_1 y

Process_Func_3) que, dependiendo del tipo de instrucción enviada, toman la cadena de

Page 101: Programa de supervisión y configuración para controladores

101

datos del puerto, le extraen la información no relevante (número de instrucción, dirección

de esclavo, CRC-16, etc.) y devuelven únicamente una cadena de valores cuyos elementos

(bits o palabras) están ordenados de igual forma en la cual aparecen en memoria, para

accederlas más fácilmente.

5.4.5 Ciclo de graficación y registro de variables El inicio de estos dos ciclos comienza al presionar el botón de [Registro] en el GUI.

Al hacerlo, el programa abrirá el archivo con el nombre y la ruta especificados por el

usuario. Si el archivo o ruta no existen, el programa los crea. Si el archivo se encuentra

abierto por otra aplicación, hay un mensaje de error y el ciclo termina. Después, se toma el

valor de hora actual, para utilizarlo como valor de referencia.

A partir de aquí se inician dos ciclos separados, uno para el registro y el otro para la

graficación. En el primero, cada aproximadamente ~250 ms se le envía al esclavo

principal, y luego al secundario, la orden de leer los valores de salida de controlador, valor

de referencia y variable realimentada. Una vez recibidos los datos son procesados tal y

como se menciona en 5.4.4 y los valores resultantes se imprimen en el archivo de registro

(junto con una variable de tiempo calculada con base en el valor de referencia) y se guardan

en la estructura de datos accedida por el ciclo de graficación. Si el valor realimentado está

fuera del rango, se sustituye con un mensaje de sobre o bajo rango en el archivo, y con un

valor máximo o mínimo en el arreglo de datos de graficación. También, el valor de la

variable salida del controlador del esclavo es refrescado en el GUI.

Page 102: Programa de supervisión y configuración para controladores

102

En el ciclo de graficación, simplemente cada 500 ms se toman los últimos valores

que fueron ingresados en la estructura de datos de graficación y son desplegados en la

ventana del gráfico. Ambos ciclos se terminan al presionar el botón de [Detener] o al

desconectarse todos los controladores. Los ciclos se representan en la Figura 5.8.

Figura 5.8 Flujo del proceso de registro y graficación

inicio

Toma ruta y archivo

Abrir archivo indicado

Hora de referencia

Valor de tiempo

Registro en archivo

Rango correcto

Solicitud de datos

Esperar 250 ms

Abierto por otro programa

Error Fin

Procesar datos

Ajustar valor

Refrescar estructura de datos / GUI

Más de un esclavo?

Esclavo 2 procesado

Registro detenido

Tomar ultimos valores de estructura

de datos

Actualizar gráfico

Fin

Esperar 500 ms

Registro detenido

SI

NO

SI

NO

NO

SI NO

SI

SI

SI

NO

Ciclo registro Ciclo graficación

NO

Page 103: Programa de supervisión y configuración para controladores

103

5.4.6 Detección y corrección de errores Ya se han mencionado algunos de los mecanismos de prevención de errores que

contiene el programa, pero ahora se hará un resumen de los más relevantes:

- Si se intenta establecer conexión un esclavo que no está conectado a la red, el

programa detectará que no hay respuesta y dará un mensaje de error. Lo mismo

ocurre si accidentalmente se desconecta alguno de los esclavos.

- No se puede enviar el comando de desconexión a un controlador que no se

encuentre conectado actualmente.

- El tablero del controlador en el GUI queda desactivado a menos que el

controlador esté conectado y los valores actuales hayan sido leídos.

- En la ventana de configuración de parámetros adicionales, no se pueden enviar

valores a menos que se hayan leído los valores actuales (excepción: modo

broadcast).

- En modo de operación automática, no se permite modificar el valor de la salida

del controlador.

- Si hay un error de marco o ha respondido un esclavo al que no se le haya

enviado algún comando, el programa despliega mensaje de error.

- En modo broadcast, no se espera respuesta alguna de ningún controlador cuando

se envía algún comando.

Page 104: Programa de supervisión y configuración para controladores

104

- Cuando hay errores de comunicación y se desconectan todos los esclavos, todos

los procesos cíclicos (graficación, conexión, etc.) son detenidos para evitar

continuar generando errores.

- Si se intenta abrir un archivo de registro que esté abierto en otro programa, por

ejemplo, Excel, el programa dará un mensaje de error y detiene el registro.

- En las casillas de valores de parámetros de control sólo se permite ingresar

números. Cualquier otro carácter genera un mensaje de error. Además antes de

enviar los valores se revisa que todos estén dentro de su rango válido y si no, se

corrigen.

- Si los valores de variable realimentada leídos desde en controlador están fuera

de rango, el programa lo detecta y en el archivo coloca un mensaje que así lo

indica, mientras que en el gráfico lo sustituye por un valor máximo o mínimo.

- Entre el envío de las instrucciones secuenciales hacia varios controladores, hay

ciertos retardos inducidos para dar tiempo a que se estabilice el puerto serial y

evitar así fallos de comunicación.

Page 105: Programa de supervisión y configuración para controladores

105

CAPÍTULO 6: Conclusiones y recomendaciones

Entre las principales conclusiones en encuentran:

- Se logró realizar un programa que permite la conexión, configuración y

sintonización de dos o más controladores, así como el registro y la graficación

de los valores de: variable realimentada y(t), salida de controlador u(t) y valor

deseado r(t) de hasta dos esclavos a la vez, por lo que se cumple con todos los

objetivos básicos del proyecto.

- La codificación del programa fue completamente realizada en Perl, utilizando

además algunos módulos adicionales que no vienen con la distribución estándar,

pero que se pueden obtener fácilmente a través de Internet. La elección de este

lenguaje fue adecuado, ya que se pudo lograr la funcionalidad que se quería

resultando así en un programa completo con un tamaño cerca de los 100 Kb.

- El programa fue diseñado para ser utilizado como una herramienta didáctica en

el Laboratorio de Control Automático, por lo que su funcionalidad está basada

en los requerimientos necesarios para llevar a cabo los experimentos del curso.

El programa no está pensado para utilizar el controlador como parte de un

equipo industrial.

- La interfaz gráfica del programa de supervisión y configuración no sólo resulta

ser amigable para el usuario, sino que además cuenta con autoprotección para

evitar errores por parte del mismo, habilitando o deshabilitando los controles

según la necesidad, y evaluando los rangos de los valores introducidos.

Page 106: Programa de supervisión y configuración para controladores

106

- El programa no sólamente muestra las variables de control ya mencionadas en

forma gráfica, sino que además las registra en un archivo con formato de valores

separados por comas, el cual el usuario puede modificar su nombre y ubicación,

y que puede luego abrir con un software de manejo de hojas electrónicas para su

revisión, análisis o despliegue posterior.

- A pesar de que el controlador Foxboro® 716C tiene habilitada la opción de ser

controlado y configurado a través de una red serial, fue evidente que el aparato

no está diseñado para un control tan intensivo o continuo de forma remota, sino

que más bien su funcionalidad es bastante rígida. Esto se demuestra por

ejemplo en el hecho de que si durante tres segundos no se envía ningún

comando remoto, la conexión se pierde, o que el controlador no envía

automáticamente los valores de las variables de control hacia el maestro, sino

que hay que hacer la solicitud contínuamente para obtenerlos, lo cual dificultó el

desarrollo del programa de control.

- A pesar de que el ciclo de despliegue gráfico y registro del programa está hecho

de tal forma de que el periodo de registro sea cercano a los 250 ms, el manejo

interno de los datos (realizado por parte de los módulos) puede causar que

gradualmente este tiempo de muestreo comience a incrementarse, hasta llegar a

un promedio de cerca de 380 ms cuando ya la ventana del gráfico está

completamente llena. Al separar los dos ciclos (despliegue y registro) y

hacerlos independientes, el tiempo final logró bajarse, pero aún se da una

dilación. En el programa realizado no se realiza una acumulación de valores,

Page 107: Programa de supervisión y configuración para controladores

107

sino que se va sobreescribiendo una única estructura de datos, pero es probable

que el módulo internamente vaya acumulando datos, causando el retardo

mencionado. Aún así, los datos obtenidos son correctos, pero el intervalo de

muestreo variable puede dificultar luego la tarea de identificación de procesos.

- Usualmente, una interfaz RS-485 requiere que se añandan resistencias de

terminación y polarización a la red para evitar los efectos de líneas de

transmisión. Sin embargo, al utilizarse líneas de tan corta longitud y

velocidades no muy altas de transmisión, se puede utilizar un enlace

simplificado, como en este caso.

- Se observó que la comunicación entre el maestro y el esclavo efectivamente se

apega al protocolo de comunicación MODBUS, tanto en el formato de los

mensajes, tiempos de respuesta, detección de errores, esquemas de

comunicación, modos de transmisión unicast o broadcast y utilización de

funciones de lectura y escritura de bits o palabras. El programa trabaja con

velocidad de 9600 baudios, sin paridad y con dos bits de parada.

- El convertidor comercial RS-232 a RS-485 no cumplía inicialmente con los

requisitos de las normas RS-485, debido a que no tenía conexión para un hilo

común. Por lo tanto, requirió de ciertas modificaciones internas para poder esta

conforme a las regulaciones, como la inclusión de una conexión a tierra, y la

adición de una terminal adicional para la conexión del conductor común.

Page 108: Programa de supervisión y configuración para controladores

108

Por otra parte, las recomendaciones que surgen después del trabajo son:

- El programa finalmente trabajó adecuadamente para cumplir con los objetivos

del proyecto. Sin embargo, posteriormente pueden realizarse mejoras al código

para incluir funcionalidad adicional, o para optimizar algunas situaciones

actuales. Entre ellas se encuentran:

o Buscar algún módulo alternativo de manejo de gráficos para la interfaz

gráfica de Perl/Tk que no sea Tk::Graph, para ver si se puede lograr la

eliminación del retardo del período de muestreo debido a la acumulación

de valores. Otra opción es utilizar los módulos GTK en lugar de

Perl/Tk, ya que provee un conjunto de herramientas más avanzadas.

o Incluir un botón que permita al usuario imprimir ya sea los gráficos

obtenidos, los datos de registro, o incluso los valores de configuración

actuales.

o Expandir la funcionalidad del gráfico de tendencias para que pueda

desplegar los valores de más de dos controladores a la vez. Además, que

el programa permita la elección de las variables que serán mostradas.

o Hacer uso de opciones adicionales que tiene el controlador que no fueron

incluidas dentro del presente programa porque no son elementos

indispensables, pero sí son deseables, entre ellos: utilización de las

salidas de relé para el control de alarmas de proceso, banda o desviación;

configuración de las alarmas, opciones de histéresis, activación del

algoritmo de autorregulación (SMART), entre otras.

Page 109: Programa de supervisión y configuración para controladores

109

o Buscar formas en que se pueda hacer que el código sea más compacto y

eficiente, eliminando redundancias, y simplificando la configuración de

los objetos en el GUI, utilizando cadenas de configuración múltiples en

lugar de dar el formato uno a uno, por ejemplo.

- Al estar escrito el programa el Perl, puede considerarse la posibilidad de realizar

una versión del programa para trabajar con el sistema operativo GNU/Linux, ya

que la conversión no requeriría de mucho trabajo. Lo que sí debe modificarse es

la sustitución del módulo Win32::SerialPort, ya que este está diseñado

específicamente para el manejo del puerto serial en ambiente Windows.

- Al igual que como al programa se le puede añadir funcionalidad para trabajar

con las salidas secundarias del controlador y la utilización de alarmas, a la caja

de conexiones se le pueden añadir los elementos necesarios para permitir estas

opciones adicionales.

- Utilizar una metodología más exhaustiva para confirmar el tipo de algoritmo de

control PID del Foxboro® 716C.

- Contactar al personal de servicio técnico del fabricante para resolver el

problema del porqué no pueden escribirse parámetros de configuración del

controlador de forma remota (tipo de acción de control o filtro del valor

desplegado, por ejemplo).

Page 110: Programa de supervisión y configuración para controladores

110

BIBLIOGRAFÍA

1. Alfaro, V. “Controladores PID”, Escuela de Ingeniería Eléctrica, Universidad de

Costa Rica, 2004.

2. Alfaro, V. “Identificación Experimental”, Escuela de Ingeniería Eléctrica,

Universidad de Costa Rica, 2004

3. Alfaro, V. “IE – 432 Laboratorio de control: Procesos de caudal y temperatura

(Lab-Volt Modelo 3522)”, Escuela de Ingeniería Eléctrica, Universidad de Costa

Rica, 2004

4. Alfaro, V. “Métodos de Sintonización”, Escuela de Ingeniería Eléctrica,

Universidad de Costa Rica, 2005

5. Axelson, J. “Serial Port Complete: Programming & Circuits for RS-232 and

RS-485 Links & Networks”, Lakeview Research, USA, 2001.

6. Axelson, J. “Designing RS-485 circuits”, Circuit Cellar Ink, USA, No. 107, Junio

1999.

7. B&B Electronics. “RS-422 and RS-485 Application Note”, http://www.bb-

elec.com.

8. Modicon Inc. “MODBUS over serial line: specification & implementation

guide (v1.0)”, http://www.modbus.org

9. National Semiconductor. “Ten ways to bulletproof RS-485 interfaces”,

http://www.national.com .

10. National Semiconductor. “Practical Limits of RS-485”, http://www.national.com .

Page 111: Programa de supervisión y configuración para controladores

111

11. Perrin, B. “The Art and Science of RS-485”, Circuit Cellar Ink, USA, No. 108,

Julio 1999.

12. The Foxboro Company. “PSS 2C-1B5 A. I/A Series® Model 716C 1/16 DIN

Temperature Controller: Product Specifications”, USA, February 1997.

13. The Foxboro Company. “MI 018-575. I/A Series® Model 716C 1/16 DIN

Temperature Controller: Installation, Configuration and Operation”, USA,

February 1997.

14. The Foxboro Company. “MI 018-579. I/A Series® Models 718TC and 716C

Controller: Serial Communication Guide”, USA, May 1997.

Page 112: Programa de supervisión y configuración para controladores

112

APÉNDICE A: Parámetros de configuración del Foxboro®

716C

Configuración básica:

A continuación se brinda un listado exhaustivo de las opciones que pueden

seleccionarse para cada parámetro, así como la dependencia que tienen con otros.

Tabla A.1 Parámetros del modo de configuración básica del Foxboro® 716C[13]

Código Descripción de parámetro Opciones Descripción de opción Dependencia Configuración de Comunicación Serial OFF Deshabilitado Ero Protocolo Propietario Foxboro nbUS Modbus

Ser1 Protocolo de Interfaz Serial

jbUS Jbus

-

1 a 95 Protocolo Foxboro únicamente Ser2 Dirección de enlace serial

1 a 255 Demás protocolos Ser1: ON

Ser3 Baud rate para enlace serial 600 a 19200 Baud rate Ser1: ON 7E 7 bits + paridad par 7O 7 bits + paridad impar 8E 8 bits + paridad par 8O 8 bits + paridad impar

Ser4 Formato de byte

8 8 bits sin paridad

Ser1: ON

Configuración de Entradas y rangos 0 Termopar tipo L [0,+400°C] 1 Termopar tipo L [0,+900°C] 2 Termopar tipo J [0,+400°C] 3 Termopar tipo J [0,+1000°C] 4 Termopar tipo K [0,+400°C] 5 Termopar tipo K [0,+1200°C] 6 Termopar tipo T [0,+400°C] 7 Termopar tipo N [0,+1400°C] 8 Termopar tipo R [0,+1760°C] 9 Termopar tipo S [0,+1760°C] 10 RTD tipo Pt100 [-199.9,+400 °C] 11 RTD tipo Pt100 [-200,+800 °C] 12 Lineal: mV [0,60 mV] 13 Lineal: mV [12,60 mV] 14 Lineal: mA [0,20 mA] 15 Lineal: mA [4,60 mA] 16 Lineal: V [0,5 V] 17 Lineal: V [1,5 V]

P1 Tipo de entrada

18 Lineal: V [0,10 V]

Si P1 = 0,2,4,9 o 15 => P36 = FLtr

Page 113: Programa de supervisión y configuración para controladores

113

19 Lineal: V [2,10 V] 20 Termopar tipo L [0,+1650°F] 21 Termopar tipo J [0,+1830°F] 22 Termopar tipo K [0,+2190°F] 23 Termopar tipo T [0,+750°F] 24 Termopar tipo N [0,+2550°C] 25 Termopar tipo R [0,+3200°C] 26 Termopar tipo S [0,+3200°C] 27 RTD tipo Pt100 [-199.9,+400 °F] 28 RTD tipo Pt100 [-330,+1470 °F] _ _ _ _ . No decimal _ _ _ . _ Una posición decimal _ _ . _ _ Dos posiciones decimales

P2 Posición de punto decimal

_ . _ _ _ Tres posiciones decimales

P1 : entrada lineal

-1999 a 4000 Entradas lineales

P3 Valor inicial de escala (bajo) Según P1 Entradas TC y RTD

P1. // rL: determinado

-1999 a 4000 Entradas lineales P4

Valor completo de escala (alto)

Según P1 Entradas TC y RTD

P1. // rH: determinado

Configuración de Salidas y Rangos de Alarma rEv Salida de control de acción reversa dir Salida de control de acción directa Pv.rt Retransmisión analógica de variable controlada

P5 Acción de Salida 1

Sp.rt Retransmisión analógica de valor deseado

-

0 - 20 Salida de tipo 0 a 20 mA P6 Tipo de Salida 1

4 - 20 Salida de tipo 4 a 20 mA -

P7 Retransmisión analógica - Valor inicial de escala

-1999 a 4000 Limite inferior de rango P5: Pv.Rt o SP.rt

P8 Retransmisión analógica - Valor final de escala

-1999 a 4000 Limite superior de rango P5: Pv.Rt o SP.rt

nonE No usada rEv Salida de control de acción reversa dir Salida de control de acción directa AL1.P Usada como salida de Alarma de proceso AL1.b Usada como salida de Alarma de banda

P9 Función de salida 2

AL1.d Usada como salida de Alarma de desviación

Si P9 = rEv => CY2 = 15s. // Si P9 = dir => CY2 = 10s (si P22 = Alr), 4s (si P22 = OIL), 2s (si

P22 = H2O)

H.A. Alarma alta (fuera de banda) con reset autom. L.A. Alarma baja (dentro de banda) con reset autom. H.L. Alarma alta (fuera de banda) con reset manual

P10 Modo de operación de Alarma 1

L.L. Alarma baja (dentro de banda) con reset manual

P9: AL1.P, AL1.b, AL1.d

nonE No usada rEv Salida de control de acción reversa dir Salida de control de acción directa AL2.P Usada como salida de Alarma de proceso AL2.b Usada como salida de Alarma de banda

P11 Función de salida 3

AL2.d Usada como salida de Alarma de desviación

Si P11 = rEv => CY3 = 15s. // Si

P11 = dir => CY3 = 10s (si P22 = Alr), 4s (si P22 = OIL), 2s (si P22 = H2O)

H.A. Alarma alta (fuera de banda) con reset autom. L.A. Alarma baja (dentro de banda) con reset autom. H.L. Alarma alta (fuera de banda) con reset manual

P12 Modo de operación de Alarma 1

L.L. Alarma baja (dentro de banda) con reset manual

P11: AL2.P, AL2.b, AL2.d

Page 114: Programa de supervisión y configuración para controladores

114

Configuración de Puntos de Operación de Alarma y Arranque suave

OPrt Punto de operación e histéresis de Alarma 2 pueden configurarse en el modo de operación

P13 Programabilidad de Punto de

operación de Alarma 2 y valor de histéresis

COnf Punto de operación e histéresis de Alarma 2 pueden configurarse en el modo de Configuración

P11: AL2.P, AL2.b, AL2.d

Según rango Para alarma de proceso

0 a 500 Para alarma de banda P14 Punto de operación de Alarma 2

-500 a 500 Para alarma de desviación

P11: AL2.P, AL2.b, AL2.d // P13: COnF

P15 Valor de histéresis de Alarma 2 0.1% a 10.0% Porcentaje del rango seleccionado en P3-P4 P11: AL2.P, AL2.b,

AL2.d // P13: COnF

P16 Punto de operación del arranque suave

Según rango

Valor en unidades de ingeniería para iniciar la función de "arranque suave" al inicio, dentro del rango de lectura

tOL diferente a InF

Configuración de Bloqueo de seguridad

0 Desbloqueado: Todos los parámetros pueden modificarse

1 Bloqueado: Ningún parámetro puede modificarse (a excepción del valor deseado y reset de alarma)

P17 Bloqueo de seguridad

2 a 9999 Contraseña para desbloquear el dispositivo

ver P30

Configuración avanzada:

Una vez en el modo de configuración, se selecciona el código 262 por medio de las

teclas / y se presiona el botón FUNC. De esta forma se pueden acceder las opciones

de configuración avanzada.

Tabla A.2 Parámetros del modo de configuración avanzada del Foxboro® 716C[13]

Código Descripción de parámetro Opciones Descripción de opción Dependencia Configuración de Acciones de Salidas y valores desplegados

norL La salida es el resultado del calculo PID P18 Acción de la salida de control

principal CnPL La salida es el complemento del calculo PID (100-PID)

P5,P9 o P1 = rEv o dir

norL El valor desplegado es el resultado del calculo PID

P19 Valor desplegado de la salida principal CnPL El valor desplegado es el complemento del

calculo PID (100-PID)

P5,P9 o P1 = rEv o dir

norL La salida es el resultado del calculo PID P20 Acción de la salida de control

secundaria CnPL La salida es el complemento del calculo PID (100-PID)

Si dos de P5,P9 o P1 = rEv o dir

P21 Valor desplegado de la salida secundaria norL El valor desplegado es el resultado del calculo

PID Si dos de P5,P9 o

P1 = rEv o dir

Page 115: Programa de supervisión y configuración para controladores

115

CnPL El valor desplegado es el complemento del calculo PID (100-PID)

AIr Aire (CY2/3 = 10s, rC = 1.00) OIL Aceite (CY2/3 = 4s, rC = 0.80) P22 Medio de enfriamiento H2O Agua (CY2/3 = 2s, rC = 0.40)

Afecta P9, P11, CY2/CY3 y rC

OFF Algoritmo de auto ajuste no calcula rC P23 Ganancia de enfriamiento relativa

calculada por el SMART AT ON Algoritmo de auto ajuste calcula rC

Únicamente para dos salidas de

control Configuración de Acciones de Alarma dir Directa (relé energizado en condición de alarma)

P24 Acción de Alarma 1 rEv Inversa (relé desenergizado)

P9: AL1.P, AL1.b, AL1.d

OFF Standby deshabilitado P25 Standby de Alarma 1

ON Standby habilitado P9: AL1.P, AL1.b,

AL1.d dir Directa (relé energizado en condición de alarma)

P26 Acción de Alarma 2 rEv Inversa (relé desenergizado)

P11: AL2.P, AL2.b, AL2.d

OFF Standby deshabilitado P27 Standby de Alarma 2

ON Standby habilitado P11: AL2.P, AL2.b,

AL2.d Configuración de Offset

-19.9 a 19.9 Rango para valores con un lugar decimal P28 Offset aplicado a la variable

controlada -199 a 199 Rango para valores con dps lugares decimales P1: entrada no

lineal

Configuración de Protección de Despliegue de Parámetros

OFF Los parámetros protegidos no pueden desplegarse P29 Mostrar parámetros protegidos

ON Los parámetros protegidos pueden desplegarse P17: No cero

Configuración de Auto ajuste con función de SMART

0 Auto ajuste deshabilitado

1 Auto ajuste no protegido por Bloqueo de seguridad P30 Función de auto ajuste (SMART

AT)

2 Auto ajuste protegido bajo el Bloqueo de seguridad

Únicamente si hay salidas de control

configuradas

P31 Valor máximo de la banda

proporcional calculada por auto ajuste

[Valor de P32,200%] Valor máximo del rango

P30: no cero, y con salidas de control

configuradas

P32 Valor mínimo de la banda

proporcional calculada por auto ajuste

[1.0%,P31] Valor mínimo del rango P30: no cero, y con salidas de control

configuradas

P33 Valor mínimo del tiempo integral calculado por auto ajuste

00.01 a 02.00 Valor en mm.ss

P30: no cero, y con salidas de control

configuradas

Configuración de Función Automática/Manual

OFF Función manual deshabilitada P34 Función manual

ON Función manual habilitada

Únicamente si hay salidas de control

configuradas

0 El instrumento inicia en modo AUTO

1 El instrumento inicia en modo MANUAL con la salida del controlador en 0%

P35 Estado del dispositivo al arranque

2 El instrumento inicia en el mismo modo en el que estaba antes de apagarse, pero si estaba en modo manual la salida el 0% al reiniciar

Únicamente si hay salidas de control

configuradas y P34 no es OFF

Page 116: Programa de supervisión y configuración para controladores

116

3

El instrumento inicia en el mismo modo en el que estaba antes de apagarse, pero si estaba en modo manual inicia con la misma salida que tenia antes

Configuración de "time out"

tn.10 10 segundos P36

Selección de la duración del time out usado por el instrumento

durante el modo de operación tn.30 30 segundos -

Configuración de Valor de Seguridad de Salida

0 No hay valor de seguridad (por defecto)

1 Valor de seguridad aplicado cuando se detecta una condición de sobre rango o sub rango

2 Valor de seguridad aplicado cuando se detecta una condición de sobre rango

P37 Condiciones para el Valor de Seguridad de la salida

3 Valor de seguridad aplicado cuando se detecta una condición de sub rango

Únicamente si hay salidas de control

configuradas

0.0 a 100.0% Para una salida de control únicamente

P38 Valor de Seguridad de Salida -100.0 a 100.0% Para dos salidas de control

Únicamente si hay salidas de control

configuradas y P37 no es cero

Configuración de Filtro Digital noFL. No usa filtro

P39 Filtro digital en el valor desplegado FLtr Filtro habilitado (4s para RTD/TC; 2s para

entrada lineal) -

noFL. No usa filtro P40 Filtro digital en el valor

retransmitido FLtr Filtro habilitado (4s para RTD/TC; 2s para entrada lineal)

-

Configuración de Acción de control

Pid El proceso es controlado por acción PID P41 Tipo de acción de control

Pi. El proceso es controlado por acción PI

Únicamente si hay salidas de control

configuradas

Configuración de Anti-windup P42 Anti-Reset-Windup -30% a 30% Porcentaje de la banda proporcional -

Page 117: Programa de supervisión y configuración para controladores

117

APÉNDICE B: Parámetros de operación del Foxboro® 716C

Tabla B.1 Parámetros del modo de operación del Foxboro® 716C[14]

Código Descripción de parámetro Opciones Descripción de opción Dependencia SP Valor deseado (punto operación) [rL,rH] En unidades de ingeniería rL,rH

ON SMART Habilitado Snrt Estado de auto ajuste SMART

OFF SMART Deshabilitado P30 (config)

ON Restablecer estado de alarma n.RSt Reset manual de alarmas

OFF No cambiar estado Alarmas

configuradas ON El instrumento está bloqueado

nnn Clave de bloqueo de protección OFF El instrumento no está

bloqueado P17

SP2 Valor deseado auxiliar [rL,rH] En unidades de ingeniería rL,rH AL1 Punto de operación de Alarma 1 Según P9 En unidades de ingeniería P9

HSA1 Histéresis de Alarma 1 % de P4-P3 Porcentaje de rango de escala P4,P3 AL2 Punto de operación de Alarma 2 Según P14 En unidades de ingeniería P14

HSA2 Histéresis de Alarma 2 Según P15 Porcentaje de rango de escala P15 Pb Valor de Banda Proporcional 1% a 200% Porcentaje de rango P4-P3 Control PI,PID

hYS Histéresis para acción de control de APAGADO/ENCENDIDO % de P4-P3 Porcentaje de rango de escala -

ti Tiempo integral 00.01 a 20.00 Unidades mm.ss Control PI,PID

td Tiempo derivativo 00.01 a 10.00 Unidades mm.ss Control PID

0 a 100% Para una salida de control 0 a -100% Enfriamiento IP Pre carga integral 0 a 100% Calentamiento

Salidas utilizadas

CY2* Tiempo de ciclo de salida 2 Según P22 En segundos P22 CY3* Tiempo de ciclo de salida 3 Según P22 En segundos P22 rC* Ganancia de enfriamiento relativa N/A Ganancia salida 2 P9

OLAP Banda muerta / traslape entre

salidas de calentamiento / enfriamiento

Según Pb % de la banda proporcional Pb

rL Límite inferior del valor deseado -100% a 100% En unidades de ingeniería Según P3

rH Límite superior del valor deseado -100% a 100% En unidades de ingeniería Según P4

Grd1 Rampa aplicada a un cambio positivo en el valor deseado N/A En unidades por minuto -

Grd2 Rampa aplicada a un cambio negativo en el valor deseado N/A En unidades por minuto -

OLH Limite superior de la salida N/A En % de la salida - tOL Duración del límite de la salida N/A En minutos -

0.1% a 25% % de la salida por segundo rnP Razón de levantamiento máxima

de la salida de control. InF (>25%) No hay rampa aplicada

-

Page 118: Programa de supervisión y configuración para controladores

118

APÉNDICE C: Funciones del protocolo de comunicaciones del

Foxboro® 716C [14]

C.1 Función 1 y 2: Lectura de n bits

Tabla C.1 Función 1 y 2: Lectura de n bits – Petición del Maestro

Rango Byte Dirección de Esclavo (1 – 255) 1 Código de Función (01-02) 1 Dirección de inicio de bit (byte alto) 1 Dirección de inicio de bit (byte bajo) 1 Número de bits (byte alto) 1 Número de bits (byte bajo) 1 Chequeo de Error (CRC-16) 2

Tabla C.2 Función 1 y 2: Lectura de n bits – Respuesta del esclavo

Rango Byte Dirección de Esclavo (1 – 255) 1 Código de Función (01-02) 1 Conteo de bytes (n) 1 Datos n Chequeo de Error (CRC-16) 2

- Estas funciones sirven para solicitar el valor de un cierto número de bits que

representan el estado de un esclavo (máximo 24 bits consecutivos a la vez).

- El campo de “datos” indica el bit solicitado. El bit solicitado con la dirección

más baja está en el bit menos significativo del primer byte; el siguiente en el bit

1 y así sucesivamente. Los bits necesarios para completar el último byte se

llenan con ceros.

Page 119: Programa de supervisión y configuración para controladores

119

C.2 Función 3 y 4: Lectura de n palabras

Tabla C.3 Función 3 y 4: Lectura de n palabras – Petición del Maestro

Rango Byte Dirección de Esclavo (1 – 255) 1 Código de Función (03-04) 1 Dirección de inicio de palabra (byte alto) 1 Dirección de inicio de palabra (byte bajo) 1 Número de palabras (byte alto) 1 Número de palabras (byte bajo) 1 Chequeo de Error (CRC-16) 2

Tabla C.4 Función 3 y 4: Lectura de n palabras – Respuesta del esclavo

Rango Byte Dirección de Esclavo (1 – 255) 1 Código de Función (03-04) 1 Conteo de bytes (n) 1 Datos n Chequeo de Error (CRC-16) 2

- Estas funciones sirven para leer un grupo de palabras de 16 bits consecutivas

que contienen valores de variables del esclavo (máximo 20 palabras a la vez).

- El campo de “datos” contiene las palabras solicitadas en el siguiente formato:

parte alta de la primera palabra, parte baja de la primera palabra, parte alta de la

segunda palabra, y así sucesivamente. El campo de datos contiene 0h8000 (hex)

para direcciones no usadas o para información no relevante para la

configuración actual

Page 120: Programa de supervisión y configuración para controladores

120

C.3 Función 5: Escritura de un bit

Tabla C.5 Función 5: Escritura de un bit – Petición del Maestro

Rango Byte Dirección de Esclavo (1 – 255)9 1 Código de Función (05) 1 Dirección de bit (byte alto) 1 Dirección de bit (byte bajo) 1 Dato 2 Chequeo de Error (CRC-16) 2

Tabla C.6 Función 5: Escritura de un bit – Respuesta del esclavo

Rango Byte Dirección de Esclavo (1 – 255) 1 Código de Función (05) 1 Dirección de bit (byte alto) 1 Dirección de bit (byte bajo) 1 Datos 2 Chequeo de Error (CRC-16) 2

- Comando para cambiar el estado de un bit del esclavo.

- El campo de datos debe ser 0h0 para poner un bit en cero o 0hFF00 (hex) para

ponerlo en uno.

9 Permite el uso de la dirección 0 para utilizar el modo broadcast.

Page 121: Programa de supervisión y configuración para controladores

121

C.4 Función 6: Escritura de una palabra

Tabla C.7 Función 6: Escritura de una palabra – Petición del Maestro

Rango Byte Dirección de Esclavo (1 – 255)10 1 Código de Función (06) 1 Dirección de palabra (byte alto) 1 Dirección de palabra (byte bajo) 1 Datos 2 Chequeo de Error (CRC-16) 2

Tabla C.8 Función 6: Escritura de una palabra – Respuesta del esclavo

Rango Byte Dirección de Esclavo (1 – 255) 1 Código de Función (06) 1 Dirección de palabra (byte alto) 1 Dirección de palabra (byte bajo) 1 Datos 2 Chequeo de Error (CRC-16) 2

- Comando para cambiar el valor de una palabra (16 bits) del esclavo.

- El campo de datos en 0h8000 (hex) se considera un valor de “no importa”. En

ese caso, el valor presente no se modificará.

10 Permite el uso de la dirección 0 para utilizar el modo broadcast.

Page 122: Programa de supervisión y configuración para controladores

122

C.5 Función 15: Escritura de n bits

Tabla C.9 Función 15: Escritura de n bits – Petición del Maestro

Rango Byte Dirección de Esclavo (1 – 255)11 1 Código de Función (15) 1 Dirección de inicio de bit (byte alto) 1 Dirección de inicio de bit (byte bajo) 1 Número de bits (byte alto) 1 Número de bits (byte bajo) 1 Contador de bytes (n) 1 Datos n Chequeo de Error (CRC-16) 2

Tabla C.10 Función 15: Escritura de n bits – Respuesta del esclavo

Rango Byte Dirección de Esclavo (1 – 255) 1 Código de Función (15) 1 Dirección de inicio de bit (byte alto) 1 Dirección de inicio de bit (byte bajo) 1 Número de bits (byte alto) 1 Número de bits (byte bajo) 1 Chequeo de Error (CRC-16) 2

- Comando que cambia el estado de un grupo consecutivo de bits (hasta 24 bits).

- El estado deseado de cada bit va dentro del campo de “datos” (1 = encendido, 0

= apagado).

- El estado impuesto para bits de sólo lectura es ignorado.

- El comando es procesado desde el primer bit y es ejecutado o no dependiendo

del estado actual del esclavo. Si hay un error, el comando es abortado.

11 Permite el uso de la dirección 0 para utilizar el modo broadcast.

Page 123: Programa de supervisión y configuración para controladores

123

C.6 Función 16: Escritura de n palabras

Tabla C.11 Función 16: Escritura de n palabras – Petición del Maestro

Rango Byte Dirección de Esclavo (1 – 255)12 1 Código de Función (16) 1 Dirección de inicio de palabra (byte alto) 1 Dirección de inicio de palabra (byte bajo) 1 Número de palabras (byte alto) 1 Número de palabras (byte bajo) 1 Contador de bytes (n) 1 Datos n Chequeo de Error (CRC-16) 2

Tabla C.12 Función 16: Escritura de n palabras – Respuesta del esclavo

Rango Byte Dirección de Esclavo (1 – 255) 1 Código de Función (16) 1 Dirección de inicio de palabra (byte alto) 1 Dirección de inicio de palabra (byte bajo) 1 Número de palabras (byte alto) 1 Número de palabras (byte bajo) 1 Chequeo de Error (CRC-16) 2

- Comando para escribir un grupo consecutivo de palabras (máximo 20)

- El dato impuesto para palabras de sólo lectura es ignorado.

- El comando es procesado iniciando desde la primera palabras y es ejecutado o

no dependiendo del estado actual del esclavo. Al primer error encontrado, el

esclavo aborta el comando y devuelve un error.

- El valor de 0h8000 (hex) se considera como un valor de “no importa”.

12 Permite el uso de la dirección 0 para utilizar el modo broadcast.

Page 124: Programa de supervisión y configuración para controladores

124

APÉNDICE D: Direcciones de memoria del Foxboro® 716C [14]

Tabla D.1 Estados de bit y comandos para el dispositivo en modo de control

Page 125: Programa de supervisión y configuración para controladores

125

Tabla D.2 Estados de bit y comandos para el dispositivo en modo de configuración

Page 126: Programa de supervisión y configuración para controladores

126

Page 127: Programa de supervisión y configuración para controladores

127

Tabla D.3 Palabras para el dispositivo en modo de control

Page 128: Programa de supervisión y configuración para controladores

128

Tabla D.4 Palabras para el dispositivo en modo de configuración

Page 129: Programa de supervisión y configuración para controladores

129

Notas:

1) Cuando hay un error de medición, el campo de “datos” contiene alguno de

los siguientes códigos de error: 30004 (0h7534) – debajo del rango, 30005

(0h7535) – encima del rango, 30014 (0h753E) – error en junta de

Referencia, 30050 (0h7562) – error en autocero interno.

2) La relación entre estos valores es la siguiente:13

13 Únicamente para dos salidas de control configuradas. Cuando el dispositivo está configurado con dos salidas de control, la salida principal es “rev” y la secundaria es “dir”.

Page 130: Programa de supervisión y configuración para controladores

130

1. Salida principal = PID + OLAP (si el bit en dirección 328 es 0)

2. Salida principal = 100.0 – (PID + OLAP) (si hay 1 en dirección 328)

3. Salida secundaria = (OLAP – PID) * rC (si hay 0 en dirección 330)

4. Salida secundaria = 100.0 - (OLAP – PID) * rC (si hay 1 en

dirección 330)

3) El valor 0h7FFF significa que la acción integral está excluida.

4) El valor transmitido es creado de la siguiente forma: (No. De revisión de

software) * 100 + código de identificación (29 para el 716C).

5) El valor deseado es usado para los algoritmos de PID y de SMART.

Cualquier cambio no está influenciado por el mecanismo de gradiente.

Además, el valor deseado no se guarda en la EEPROM, y se pierde al

apagar el aparato.

6) El valor de 0h7FFF significa que la transferencia del punto de operación se

da como un cambio de escalón.

7) El valor de 0h7FFF significa que la acción limitadora está siempre activa.

8) Al solicitar, siempre se envía el umbral activo (threshold). Durante el

establecimiento, si el dispositivo está en modo de control, se modifica el

umbral para la corrida actual, mientras que en modo de configuración se

modifica el parámetro P14.

9) El valor de 0h7FFF significa que no hay limitación de rampa impuesta.

10) El comando de escritura decimal se acepta sólo con entradas lineales.

11) Para más información, ver manual del fabricante (tablas adicionales).

Page 131: Programa de supervisión y configuración para controladores

131

Apéndice E: Experimentos realizados en el Laboratorio de

Control

E.1 Experimento 1: Característica Estática del Proceso14

La característica estática de un proceso se refiere a la relación entre la variable de

entrada (salida del controlador) y la señal realimentada (salida del transmisor), en estado

estacionario (condiciones de operación estable).

El objetivo de esta práctica consistió en obtener la característica estática del proceso

de caudal, para verificar el funcionamiento de controlador en modo manual y ver la

respuesta correspondiente del proceso.

E.1.1 Procedimiento 1- Se conectó el controlador, la planta y la interfaz de entradas y salidas tal y como

se describe en la Figura 3.3

2- Se encendió el controlador y se puso en modo manual con salida de 0%.

3- Se encendió el equipo didáctico Lab-Volt® 3522 (calibrado adecuadamente)

4- Se verificó que la compuerta para producir perturbaciones estuviera cerrada

5- Se incrementó en un 10% la salida del controlador, se esperó a que la respuesta

se estabilizara y se anotó el valor de la misma en la Tabla A.1. Se continuó

14 Antes de cada experimento, se realizó la calibración correspondiente de los transmisores, según lo descrito en el manual de laboratorio [3]

Page 132: Programa de supervisión y configuración para controladores

132

incrementando la salida del controlador en pasos del 10% hasta que alcanzó el

100%.

6- Se bajó nuevamente la salida del controlador a 0% y se esperó a que la respuesta

regresara a cero.

7- Se colocó la compuerta de perturbaciones al 50% y se repitieron los pasos 5 y 6

8- Se abrió la compuerta de perturbaciones al 100% y se repitieron los pasos 5 y 6

E.1.2 Resultados

Tabla A.1 Resultados de la característica estática del proceso de caudal

Señal salida controlador (%)

Salida proceso (%) compuerta cerrada

Salida proceso (%) compuerta al 50%

Salida proceso (%) compuerta abierta

0 0 0 0 10 8 6.7 4.1 20 15.8 13.8 10.5 30 22.9 20.5 16.6 40 31.5 28.6 23.6 50 41.1 37.9 32.1 60 51.8 48 40.6 70 63.2 58.4 51.1 80 76.3 70.7 62.2 90 88.8 82.5 72.3 100 99.8 92.6 79.4

Page 133: Programa de supervisión y configuración para controladores

133

Salida del proceso (%) en funcion de la senal de salida del controlador (%)

0

2 0

4 0

6 0

8 0

1 0 0

1 2 0

0 2 0 4 0 6 0 8 0 1 0 0 1 2 0

Sa lida c on t r ola dor (% )

Salid

a pr

oces

o (%

)

C om pu er t a c er r a da C om pu er t a a l 5 0 % C om pu er t a a b ier t a

Figura E.1 Resultados del experimento de la característica estática del proceso

Según los resultados se observó sí el proceso reacciona a los cambios en la salida

del controlador en modo manual, sólo que la linealidad de la curva de la característica

estática sí está sujeta a las perturbaciones que se pueden presentar en el sistema, ya que la

apertura de la compuerta influye de modo que hay mayor linealidad conforme la compuerta

se encuentra más cerrada. Asimismo, se aprecia que la variable controlada alcanza menor

magnitud, conforme la compuerta se encuentre más abierta.

Además, con base en la característica estática se puede deducir que la acción

requerida para el controlador es de tipo inversa, ya que si la salida aumenta, se requiere

Page 134: Programa de supervisión y configuración para controladores

134

bajar la velocidad del abanico, mientras que si la salida disminuyera el abanico deberá

aumentar la velocidad.

E.2 Experimento 2: Característica Dinámica del Proceso

Antes de poder determinar los parámetros de sintonización para un controlador, es

necesario obtener la característica dinámica de un proceso, lo cual comúnmente se hace

introduciendo un estímulo externo al proceso (escalón unitario, por ejemplo) y registrando

tanto su entrada, como su salida. Esto permite hacer luego uso de varios métodos

existentes de identificación de procesos, que permiten obtener una ecuación que lo modele.

E.2.1 Procedimiento

Proceso de caudal:

1- Se conectó el controlador, el equipo de adquisición y la planta tal y como se

describe en la Figura 3.3

2- Se encendió el controlador Foxboro® en modo manual con salida de 0%.

3- Se encendió el equipo didáctico Lab-Volt 3522

4- Se ejecutó el programa LVPROSIM, configurándolo adecuadamente para el

proceso de caudal y para registrar la variable controlada y la salida del

controlador.

5- Se verificó que la compuerta para producir perturbaciones estuviera cerrada

Page 135: Programa de supervisión y configuración para controladores

135

6- Se preparó el almacenamiento de las señales en un archivo y se inició el

registro.

7- Después de unos 10 s se cambió la salida del controlador a 50%15

8- Una vez que el proceso se estabilizó nuevamente (por unos 10 s) se terminó el

registro del archivo y se guardó.

9- Se guardaron datos nuevamente, pero esta vez cambiando la salida del

controlador a 0% y esperando que se estabilizara el proceso.

10- Se abrió la compuerta de perturbaciones al 50% y se repitieron los pasos 6 a 9.

11- Se abrió la compuerta de perturbaciones al 100% y se repitieron los pasos 6 a 9.

Proceso de temperatura:

2- Se conectó el controlador, el equipo de adquisición y la planta tal y como se

describe en la Figura No. 3.2, conectando además la salida del generador de

funciones a la entrada de control del proceso de caudal.

3- Se encendió el controlador Foxboro® en modo manual con salida de 0%.

4- Se ejecutó el programa LVPROSIM, bajo la operación como equipo didáctico,

configurándolo adecuadamente.

5- Se ajustó el generador de funciones para que tuviera amplitud cero, frecuencia

cero y desviación cero.

15 Nota: Como durante la operación manual el Foxboro® 716C cambia su valor de salida gradualmente, la salida no es un escalón exactamente, sino que es realmente una rampa.

Page 136: Programa de supervisión y configuración para controladores

136

6- Se repitieron los pasos 6 a 9 que se realizaron para el proceso de caudal.

7- Se aumentó la amplitud de la señal del generador de funciones a 50%.

8- Se repitió el paso 6 de este procedimiento.

9- Se aumentó la amplitud de la señal del generador de funciones a 100%.

10- Se repitió el paso 6 de este procedimiento guardando la información

correspondiente.

Los datos guardados en los archivos fueron procesados con el programa

ie432_procesos.m escrito en Matlab® por el Ing. Víctor Alfaro, el cual además de

identificar un modelo de la planta de primer y segundo orden más tiempo muerto usando el

método de “1/4 – 3/4 de Alfaro”[2] grafica la respuesta de la planta al escalón, la entrada de

la planta y la respuesta del modelo obtenido.

Los resultados obtenidos se presentarán seguidamente. Sin embargo, cabe destacar

que por hecho de usar el controlador de forma manual y no poder hacer cambios

escalonados en el valor deseado, los modelos obtenidos no fueron totalmente satisfactorios,

especialmente en el caso del proceso de caudal, al tener una reacción tan rápida ante los

valores deseados.

Page 137: Programa de supervisión y configuración para controladores

137

E.2.2 Resultados Tabla E.2 Modelos de primer y segundo orden más tiempo muerto– proceso de caudal

Condición de perturbación Tipo de escalón POMTM16 SOMTM

Positivo 62.611s

1s434.29889.0

2 =

+

1390s

1s059.3s386.29889.0

2

2

=

++

Compuerta cerrada

Negativo 93.2980s

1s99.29829.0

2 =

+

9.5680s

1s807.3s623.39829.0

2

2

=

++

Positivo 42.467s

1s473.29311.0

2 =

+

39.1130s

1s139.3s463.29311.0

2

2

=

++

Compuerta al 50%

Negativo 75.2930s

1s131.39389.0

2 =

+

23.5377s

1s974.3s948.39389.0

2

2

=

++

Positivo 5.536s

1s067.2e7099.0

2

1125.0

=

+

625s

1s623.2s725.17099.0

2

2

=

++

Compuerta al 100%

Negativo 38.2135s

1s656.27299.0

2 =

+

55.3621s

1s375.3s84.27299.0

2

2

=

++

Tal como se esperaba, los altos valores de s2 indican que los modelos obtenidos no

son muy fieles a la respuesta real del proceso. Sin embargo, en todos los casos el modelo

de primer orden se aproximaba mejor. Por otra parte, el efecto principal observable del

aumento de la magnitud de la perturbación es que el sistema disminuye su ganancia.

16 POMTM: Primer orden más tiempo muerto. SOMTM: Segundo orden más tiempo muerto.

Page 138: Programa de supervisión y configuración para controladores

138

Para el proceso de temperatura:

Tabla E.3 Modelos de primer y segundo orden más tiempo muerto – proceso térmico

Condición de perturbación Tipo de escalón POMTM SOMTM

Positivo 75.319s

1s24.43e968.1

2

s31.8

=

+

8.3226s

1s9.54s9.752968.1

2

2

=

++

Generador de funciones apagado

Negativo 262.368s

1s81.42e972.1

2

s61.8

=

+

8.2896s

1s34.54s1.738972.1

2

2

=

++

Positivo 9.112s

1s46.29e009.1

2

s15.7

=

+

7.604s

1s39.37s5.349009.1

2

2

=

++

Generador de funciones al 50%

Negativo 28.609s

1s48.19e01.1

2

s74.1

=

+

12.2209s

1s73.24s95.15201.1

2

2

=

++

Positivo 49.111s

1s29.22e6531.0

2

s7.11

=

+

312.108s

1s29.28s1.200e6531.0

2

2

55.4

=

++

Generador de funciones al 100%

Negativo 54.337s

1s745.12e6493.0

2

s639.0

=

+

97.996s

1s17.16s36.656493.0

2

2

=

++

Los modelos de primer orden obtenidos tienen una mejor bondad de ajuste con

respecto a los modelos del proceso de caudal. Sin embargo, aún las aproximaciones no son

del todo óptimas, posiblemente por el hecho de que el escalón aplicado no era instantáneo,

o a problemas del programa utilizado para el ajuste. No obstante, los modelos obtenidos

Page 139: Programa de supervisión y configuración para controladores

139

pueden utilizarse para calcular posteriormente los parámetros de sintonización óptimos para

los controladores, al menos de forma aproximada.

E.3 Experimento 3: Parámetros últimos o críticos

Otra forma de obtener la característica dinámica de un proceso es por medio de una

condición de oscilación mantenida, lo cual se puede hacer utilizando un controlador

puramente proporcional.

E.3.1 Procedimiento

Proceso de caudal:

1- Se conectó el controlador, el equipo de adquisición y la planta tal y como se

describe en la Figura 3.3

2- Se sintonizó el controlador como un controlador puramente proporcional, con

los siguientes parámetros:

a. Banda proporcional 50%

b. Tiempo integral 0 (Off)

c. Tiempo derivativo 0

d. Componente integral 0%

3- Se cambió el controlador a operación automática y se cambió el valor deseado a

un valor de 50%.

4- Si el sistema no era oscilatorio, se volvía a operación manual, con valor deseado

en 0%, y se reducía el valor de la banda proporcional.

Page 140: Programa de supervisión y configuración para controladores

140

5- De esta manera, por prueba y error, se fue cambiando el valor deseado del

controlador hasta que el sistema pasara el límite de estabilidad y comenzara a

oscilar de forma permanente.

6- Cuando la respuesta fue oscilatoria, se tomó nota de la banda proporcional del

controlador (banda proporcional límite) y el periodo de oscilación, observando

la señal del registrador del LVPROSIM.

7- Se tomó también el valor de la ganancia de la planta para un valor arbitrario de

banda proporcional del controlador.

Proceso de temperatura

1- Se conectó el controlador, el equipo de adquisición y la planta tal y como se

describe en la Figura No. 3.2, conectando además la salida 2 del equipo de

adquisición (generador de funciones) a la entrada de control del proceso de

caudal.

2- Se realizó el mismo procedimiento que para el proceso de caudal, sólo que

iniciando con los siguientes parámetros:

a. Banda proporcional 50%

b. Tiempo integral 0 (Off)

c. Tiempo derivativo 0

d. Componente integral 0%

Page 141: Programa de supervisión y configuración para controladores

141

3- Nuevamente se tomó nota de la banda proporcional límite y el periodo de

oscilación crítica, así como la ganancia de la planta para un valor de banda

proporcional arbitrario.

E.3.2 Resultados

Figura E.2 Condición de oscilación permanente del proceso de caudal

Figura E.3 Respuesta del proceso de caudal a un cambio escalón con Bp = 50%

Page 142: Programa de supervisión y configuración para controladores

142

Figura E.4 Condición de oscilación permanente del proceso de temperatura

Figura E.5 Respuesta del proceso térmico a un cambio escalón con Bp = 50%

Con los datos anteriores, siguiendo el método de Ziegler y Nichols[2], se obtuvieron

los siguientes parámetros:

Tabla E.4 Parámetros críticos de los procesos de caudal y temperatura

Proceso Kcu Bpu (%) Tu (s)

Caudal 6.66 15% 2.17

Temperatura 11.11 9% 23.25

Page 143: Programa de supervisión y configuración para controladores

143

Con base en la información última, también pueden obtenerse modelos de primer

orden más tiempo muerto de la planta, los cuales fueron:

Tabla E.5 Modelos de la planta basados en los parámetros últimos

Proceso Modelo Gp (s)

Caudal 1s19.2

e275.1 s438.0

+

Temperatura 1s84.46

e143.1 s104.6

+

E.4 Experimento 4: Controlador Proporcional (P)

En un controlador proporcional, el único parámetro que puede modificarse el la

ganancia Kc, o banda proporcional Bp, que en realidad se relacionan de la siguiente forma:

Bp100Kc = (E.4-1)

Este parámetro único afecta el funcionamiento del sistema de control en términos

del error permanente, estabilidad y rapidez. El objetivo de este experimento era observar

las variaciones en la respuesta del sistema a un escalón, a distintos valores de ganancia

proporcional del controlador.

E.4.1 Procedimiento Proceso de caudal:

Page 144: Programa de supervisión y configuración para controladores

144

1- Se conectó el controlador en modo manual con salida de 0%, el equipo de

adquisición y la planta tal y como se describe en la Figura 3.3

2- Se sintonizó el controlador con los siguientes parámetros:

a. Banda proporcional 100%

b. Tiempo integral 0 (Off)

c. Tiempo derivativo 0

d. Componente integral 0%

3- Se pasó el controlador a modo automático y después de 10 s, se cambió el valor

deseado del controlador a 50%, y se esperó a que se estabilizara la respuesta del

sistema, guardando los datos en un archivo para el análisis.

4- Se cambió el valor deseado a 0% y se regresó el controlador a modo manual.

5- Se cambió la Banda proporcional a 60% y se repitieron los pasos 3 a 4.

6- Se cambió la Banda proporcional a 30% y se repitieron los pasos 3 a 4.

Proceso de temperatura:

1- Se conectó el controlador en modo manual con salida de 0%, el equipo de

adquisición y la planta tal y como se describe en la Figura 3.2

2- Se repitieron los pasos 2 a 6 del proceso de caudal, pero con la diferencia de que

en el punto 5 se usa Bp = 50%, y en el punto 6 Bp = 20%.

Page 145: Programa de supervisión y configuración para controladores

145

E.4.2 Resultados

Figura E.6 Efecto de la variación de Bp en el proceso de caudal – Control P

Figura E.7 Efecto de la variación de Bp en el proceso de temperatura – Control P

Page 146: Programa de supervisión y configuración para controladores

146

Se observa que para distintos valores de banda proporcional, la respuesta varía

visiblemente. Una forma de medir estas diferencias, es tomar los valores de error

permanente, sobrepaso máximo y tiempo de asentamiento al 2% para cada uno de los

valores de ganancia del controlador. A continuación se presenta un resumen de los datos

obtenidos:

Tabla E.6 Resultados para el proceso de caudal – Control proporcional

Parámetro Bp = 30% Bp = 60% Bp = 100%

ep 12% 20.12% 27.18%

Mp 5.65% 2.4% n/a

ta2% (s) 7.7 3.88 3.2

Tabla E.7 Resultados para el proceso de temperatura – Control proporcional

Parámetro Bp = 30% Bp = 60% Bp = 100%

ep 5.11% 10.3% 16.9%

Mp 9.07% 2.68% n/a

ta2% (s) 63.1 61.5 58.1

Los datos muestran que conforme disminuye la ganancia proporcional (o aumenta la

banda proporcional), el sistema alcanza más rápidamente su valor final (disminución del

tiempo de asentamiento) el sobrepaso máximo disminuye indicando una menor condición

oscilatoria, y por tanto, un aumento de la estabilidad, pero esto a costa de un aumento del

error permanente del sistema.

Page 147: Programa de supervisión y configuración para controladores

147

E.5 Experimento 5: Controlador Proporcional Integral (PI)

El controlador PI puede ajustar tanto el valor de la banda proporcional como el del

tiempo integral. La interacción de estos dos factores incide de forma diferente en el

comportamiento dinámico del lazo de control, lo cual puede observarse al obtener la

respuesta del sistema de control a un cambio de escalón en el valor deseado, usando

combinaciones distintas de estos dos parámetros.

E.5.1 Procedimiento Proceso de caudal – variación de tiempo integral:

1- Se conectó el controlador en modo manual con salida de 0%, el equipo de

adquisición y la planta tal y como se describe en la Figura 3.3

2- Se sintonizó el controlador con los siguientes parámetros:

a. Banda proporcional 100%

b. Tiempo integral 3 s

c. Tiempo derivativo 0

d. Componente integral 0%

3- Se pasó el controlador a modo automático y después de aproximadamente 10 s,

se cambió el valor deseado del controlador a 50%, y se esperó a que se

estabilizara la respuesta del sistema, guardando los datos.

Page 148: Programa de supervisión y configuración para controladores

148

4- Se cambió el valor deseado a 0% y se regresó el controlador al modo manual.

5- Se cambió el tiempo integral a 2 segundos y se repitieron los pasos 3 a 4.

6- Se cambió el tiempo integral a 1 segundo y se repitieron los pasos 3 a 4.

Proceso de caudal – variación de banda proporcional:

7- Se sintonizó el controlador con los siguientes parámetros:

a. Banda proporcional 150%

b. Tiempo integral 1 s

c. Tiempo derivativo 0

d. Componente integral 0%

8- Se pasó el controlador a modo automático y después de aproximadamente 10 s,

se cambió el valor deseado del controlador a 50%, y se esperó a que se

estabilizara la respuesta del sistema, guardando los datos.

9- Se cambió el valor deseado a 0% y se regresó el controlador al modo manual.

10- Se cambió la banda proporcional a 100% y se repitieron los pasos 8 a 9.

11- Se cambió la banda proporcional a 75% y se repitieron los pasos 8 a 9.

Proceso de temperatura – variación de tiempo integral:

1- Se conectó el controlador en modo manual con salida de 0%, el equipo de

adquisición y la planta tal y como se describe en la Figura 3.3

Page 149: Programa de supervisión y configuración para controladores

149

2- Se sintonizó el controlador con los siguientes parámetros:

a. Banda proporcional 50%

b. Tiempo integral 18 s

c. Tiempo derivativo 0

d. Componente integral 0%

3- Se pasó el controlador a modo automático y después de aproximadamente 10 s,

se cambió el valor deseado del controlador a 50%, y se esperó a que se

estabilizara la respuesta del sistema, guardando los datos.

4- Se cambió el valor deseado a 0% y se regresó el controlador al modo manual.

5- Se cambió el tiempo integral a 12 segundos y se repitieron los pasos 3 a 4.

6- Se cambió el tiempo integral a 9 segundos y se repitieron los pasos 3 a 4.

Proceso de temperatura – variación de banda proporcional:

7- Se sintonizó el controlador con los siguientes parámetros:

a. Banda proporcional 100%

b. Tiempo integral 12 s

c. Tiempo derivativo 0

d. Componente integral 0%

Page 150: Programa de supervisión y configuración para controladores

150

8- Se pasó el controlador a modo automático y después de aproximadamente 10 s,

se cambió el valor deseado del controlador a 50%, y se esperó a que se

estabilizara la respuesta del sistema, guardando los datos.

9- Se cambió el valor deseado a 0% y se regresó el controlador al modo manual.

10- Se cambió la banda proporcional a 50% y se repitieron los pasos 8 a 9.

11- Se cambió la banda proporcional a 30% y se repitieron los pasos 8 a 9.

E.5.2 Resultados

0.00

10.00

20.00

30.00

40.00

50.00

60.00

0.00 10.00 20.00 30.00

tiempo (s)

%

ti = 3s

ti = 2s

ti = 1 s

Valor deseado (%)

Figura E.8 Efecto de la variación de ti en el proceso de caudal – Control PI

Page 151: Programa de supervisión y configuración para controladores

151

0

10

20

30

40

50

60

0.00 7 .50 15.00 22.50 30.00

tiempo (s)

%

BP = 7 5%

BP = 100%

BP = 150%

Valor deseado (%)

Figura E.9 Efecto de la variación de Bp en el proceso de caudal – Control PI

0.00

10.00

20.00

30.00

40.00

50.00

60.00

70.00

0.00 30.00 60.00 90.00 120.00 150.00 180.00 210.00

tiempo (s)

%

ti = 9s

ti = 12s

ti = 18s

valor deseado (%)

Figura E.10 Efecto de la variación de ti en el proceso de temperatura – Control PI

Page 152: Programa de supervisión y configuración para controladores

152

0

10

20

30

40

50

60

70

0.00 30.00 60.00 90.00 120.00 150.00 180.00 210.00 240.00

tiempo (s)

%

BP = 1 00%

BP = 5 0%

BP = 3 0%

V a lor desea do (%)

Figura E.11 Efecto de la variación de Bp en el proceso de temperatura – Control PI

Se observa que para distintas combinaciones de banda proporcional y tiempo integral,

la respuesta varía visiblemente. Nuevamente se toman los valores de error permanente,

sobrepaso máximo y tiempo de asentamiento al 2% para cada uno de los las combinaciones

de estos parámetros como medida de la variación de la respuesta. A continuación se

presenta un resumen de los datos obtenidos:

Tabla E.8 Resultados de la variación de ti en el proceso de caudal – Control PI

Parámetro ti = 1s ti = 2s ti = 3s

ep 1.66% 1.7% 1.82%

Mp n/a n/a n/a

ta2% (s) 16.3 14.3 22

Page 153: Programa de supervisión y configuración para controladores

153

Tabla E.9 Resultados de la variación de Bp en el proceso de caudal – Control PI

Parámetro Bp = 75% Bp = 100% Bp = 150%

ep 1.12% 1.35% 1.8%

Mp n/a n/a n/a

ta2% (s) 15.75 14.4 15

Tabla E.10 Resultados de la variación de ti en el proceso térmico – Control PI

Parámetro ti = 9s17 ti = 12s ti = 18s

ep n/a 0.8% 1.6%

Mp n/a 11.8% 9.6%

ta2% (s) n/a 207 158

Tabla E.11 Resultados de la variación de Bp en el proceso térmico – Control PI

Parámetro Bp = 30%18 Bp = 50% Bp = 100%

ep n/a 1.5% 2%

Mp n/a 10.65% 14.1%

ta2% (s) n/a 157.5 232.5

De los datos tabulados para el proceso de caudal, se observa que manteniendo el

valor de la banda proporcional constante, un valor menor de tiempo integral haría menor el

17 El sistema se volvió oscilatorio con este valor de ti

Page 154: Programa de supervisión y configuración para controladores

154

error permanente. No se puede concluir nada sobre el tiempo de asentamiento ya que los

valores obtenidos cambiaron de diferente manera al variar el tiempo integral, además de

que en ningún momento se dio un sobrepaso de la señal.

Asimismo, si se mantiene el tiempo integral constante, una disminución en el valor

de la banda proporcional llevará consigo una disminución del error permanente. No se

puede concluir nada sobre el tiempo de asentamiento ya que los valores obtenidos

cambiaron de diferente manera al variar la banda proporcional, ni tampoco hubo sobrepaso

máximo.

En el proceso de temperatura se observa que para un valor constante de banda

proporcional, si se disminuye el valor de la constante de tiempo integral, el error

permanente disminuye, trayendo consigo un aumento tanto en el tiempo de asentamiento

como en el sobrepaso máximo. Si el tiempo integral se disminuye aún más, el sistema

comienza a oscilar.

De manera análoga, al mantener constante el tiempo integral y variando el valor de

banda proporcional, si la banda disminuye, el error permanente también disminuye,

disminuyendo también el sobrepaso máximo. No se puede concluir nada sobre el tiempo de

asentamiento ya que los valores obtenidos cambiaron de diferente manera al variar la banda

proporcional. Nuevamente, si el valor de la banda proporcional disminuye aún más, el

sistema comienza a oscilar.

18 El sistema se volvió oscilatorio con este valor de Bp

Page 155: Programa de supervisión y configuración para controladores

155

E.6 Experimento 6: Controlador Proporcional Integral Derivativo

(PID)

En el controlador proporcional integral derivativo hay ya tres parámetros que se

pueden ajustar: la banda proporcional (o ganancia), el tiempo integral y el tiempo

derivativo. Para estos controladores, resulta más complejo la sintonización ya que existen

aún más combinaciones de valores cada una con diferente incidencia directa sobre las

características del comportamiento dinámico del lazo de control.

Para analizar la influencia del tiempo derivativo sobre estas características, se

obtuvo la respuesta del sistema de control del proceso térmico, a un cambio en el valor

deseado utilizando un controlador PI y luego un PID con varios valores de tiempo

derivativo.

E.6.1 Procedimiento

1- Se conectó el controlador en operación manual con salida de 0%, el equipo de

adquisición y la planta tal y como se describe en la Figura 3.2, además se

conectó la salida del generador de funciones a la entrada de control del abanico.

2- Se ajustó el generador de funciones para trabajar con onda cuadrada, frecuencia

cero, desviación cero y amplitud cero.

3- Se sintonizó el controlador PID con los siguientes parámetros:

a. Banda proporcional 50%

b. Tiempo integral 12 s

Page 156: Programa de supervisión y configuración para controladores

156

c. Tiempo derivativo 0

d. Componente integral 0%

4- Se pasó el controlador a operación automática y después de unos 10 segundos,

se cambió la el valor deseado a 50%.

5- Se esperó a que se estabilizara la respuesta y después de alrededor de 10

segundos se aumentó la amplitud del generador de funciones a 100%.

6- Se esperó unos 10 segundos después de estabilizarse el sistema y se disminuyó

nuevamente la amplitud del generador de funciones a 0%.

7- Una vez que el sistema se estabilizó finalmente, se guardaron los datos en un

archivo para el análisis. Se vuelve a poner el controlador en modo manual con

salida de 0%.

8- Se cambió el tiempo derivativo a 5 s y se repitieron los pasos 4 a 7

9- Se cambió el tiempo derivativo a 2 s y se repitieron los pasos 4 a 7

E.6.2 Resultados

Page 157: Programa de supervisión y configuración para controladores

157

0 . 0

2 0 . 0

4 0 . 0

6 0 . 0

8 0 . 0

1 0 0 . 0

0 .0 0 7 5 . 0 0 1 5 0 .0 0 2 2 5 .0 0 3 0 0 .0 0 3 7 5 .0 0 4 5 0 .0 0 5 2 5 .0 0

t iem po (s)

%

y (t )

r (t )

G en . Fu n c

Figura E.12 Respuesta del proceso de temperatura con td =0 – Control PID

0 .0

2 0 .0

4 0 .0

6 0 .0

8 0 .0

1 0 0 .0

0 .0 0 7 5 . 0 0 1 5 0 . 0 0 2 2 5 .0 0 3 0 0 .0 0 3 7 5 . 0 0 4 5 0 . 0 0

t iem po (s)

%

y ( t )

r (t )

G en . Fu n c

Figura E.13 Respuesta del proceso de temperatura con td =2s – Control PID

Page 158: Programa de supervisión y configuración para controladores

158

0.0

2 0.0

4 0.0

6 0.0

80.0

1 00.0

0.00 7 5.00 1 50.00 2 2 5.00 3 00.00 3 7 5.00 4 50.00

tiem po (s)

%

y ( t )

r ( t )

G en . Fu n c

Figura E.14 Respuesta del proceso de temperatura con td =5s – Control PID

Tabla E.12 Resultados de la variación de td en el proceso térmico – Control PID

Escalón en valor deseado Perturbación positiva Perturbación negativa ep Mp ta2% (s) ep Mp ta2% (s) ep Mp ta2% (s)

td=0 s 4.87% 10.2% 155.66 9.15% 14.27% 63.73 7.32% 8.9% 188.8 td=2 s 1.18% 8.47% 128.6 8.23% 13.8% 72 5.88% 8.23% 95.6 td=5 s 0% 8.24% 126.2 8.8% 12.35% 72.8 2.22% 8.5% 101.1

Se observa que al aumentar la acción derivativa, el sistema tiende a ser más estable,

más rápido (disminuye ta2%) y el sobrepaso máximo disminuye, con algunas excepciones.

El cambio del tiempo derivativo no debería tener ningún efecto sobre el error permanente;

sin embargo, se observa que con el aumento de td también fue disminuyendo el error. No

Page 159: Programa de supervisión y configuración para controladores

159

obstante, las gráficas no permiten medirlo con exactitud, por lo que los valores no son del

todo precisos.

E.7 Experimento 7: Método de Sintonización de Ziegler y Nichols

El método de Ziegler y Nichols fue el primer método de sintonización sistemático

en ser desarrollado. Este utiliza la información crítica del proceso para la sintonización de

controladores PI y PID. Entre las características del método están que el método está

optimizado para controladores funcionando como regulador, y que utiliza el criterio de

decaimiento de un cuarto.

Para este laboratorio se utilizó la información crítica del proceso térmico obtenida

en el experimento 3 y se sintonizaron los controladores PI y PID para analizar el

comportamiento dinámico del lazo de control ante cambios en la perturbación y el valor

deseado.

E.7.1 Procedimiento

1- Utilizando la información crítica determinada para el proceso térmico con la

velocidad mínima del abanico 19 , se calcularon los parámetros para un

controlador PI y un PID-Ideal empleando el método de Ziegler y Nichols.

2- Se conectó el controlador en operación manual con salida de 0%, el equipo de

adquisición y la planta tal y como se describe en la Figura 3.2, además se

conectó la salida del generador de funciones a la entrada de control del abanico.

Page 160: Programa de supervisión y configuración para controladores

160

3- Se ajustó el generador de funciones para trabajar con onda cuadrada, frecuencia

cero, desviación cero y amplitud cero.

4- Se sintonizó el controlador como PI con los siguientes parámetros:

a. Banda proporcional 20%

b. Tiempo integral 19 s

c. Tiempo derivativo 0

d. Componente integral 0%

5- Se pasó el controlador a operación automática y después de unos 10 segundos,

se cambió la el valor deseado a 50%.

6- Se esperó a que se estabilizara la respuesta y después de alrededor de 10

segundos se aumentó la amplitud del generador de funciones a 100%.

7- Se esperó unos 10 segundos después de estabilizarse el sistema y se disminuyó

nuevamente la amplitud del generador de funciones a 0%.

8- Una vez que el sistema se estabilizó finalmente, se guardaron los datos en un

archivo para el análisis. Se vuelve a poner el controlador en modo manual con

salida de 0%.

9- Se cambió el tiempo derivativo a 5 s y se repitieron los pasos 5 a 8

10- Se cambió el tiempo derivativo a 2 s y se repitieron los pasos 5 a 8

19 Resultados obtenidos en el Experimento 3

Page 161: Programa de supervisión y configuración para controladores

161

11- Se sintonizó el controlador como PID con los siguientes parámetros:

a. Banda proporcional 12% (valor máximo)

b. Tiempo integral 15 s

c. Tiempo derivativo 2 s

d. Componente integral 0%

12- Se repitieron los pasos 5 a 10 con los nuevos valores de sintonización.

E.7.2 Resultados

0

10

20

30

40

50

60

0 100 200 300

y(t)r(t)Gen. de func.

Figura E.15 Respuesta del proceso - método sintonización de Ziegler y Nichols PI

Page 162: Programa de supervisión y configuración para controladores

162

0

10

20

30

40

50

60

0.0 100.0 203.5 303.5 403.5

y(t)

r(t)

Salida analógica 2(Gen. de func.)

Figura E.16 Respuesta de proceso - método sintonización de Ziegler y Nichols PID

Tabla E.13 Resultados de la sintonización mediante el método de Ziegler y Nichols

Escalón en valor deseado Perturbación positiva Perturbación negativa Método sintonización Decaimiento Mp ta2%

(s) Decaimiento Mp ta2% (s) Decaimiento Mp ta2%

(s) Ziegler Nichols PI 29.41% 5.60% 97.5 18.75% 10.30% 24 10.53% 7.60% 36

Ziegler Nichols PID n/a20 n/a 19.5 13.00% 6.28% 17.4 10.00% 5.70% 24

En términos generales, los lazos de control se comportaron de la manera esperada

por cuanto trataron de hacer tender el valor de la variable controlada al especificado en la

referencia después de producida la perturbación con un decaimiento menor al 25%, pero se

ve que no tienen un comportamiento óptimo a la hora de funcionar como servomecanismos,

20 No se da un sobrepaso máximo y por lo tanto tampoco hay valor de decaimiento válido.

Page 163: Programa de supervisión y configuración para controladores

163

lo cual es evidente por ejemplo en el caso del controlador PI al haber un valor alto de

decaimiento y de tiempo de asentamiento.

Por otro lado, se observa que con la incorporación de la variable derivativa se

mejora tanto el decaimiento como los valores de sobrepaso máximo y de tiempo de

asentamiento. En cuanto al error permanente, se observa que en ambos casos el error

resulta muy cercano a cero.

E.8 Experimento 8: Sintonización mediante criterios integrales

Otros métodos de sintonización de controladores determinan los parámetros de

control de manera tal que la respuesta del lazo de control sea optimizada para alguna

función dependiente del error. Los parámetros del controlador se seleccionan de manera tal

que la función de costo establecida sea mínima. Algunos criterios usuales son la integral

del error absoluto (IAE) o la integral del tiempo por el error absoluto (ITAE) como función

de costo. Muchos de estos procedimientos de sintonización se basan en un modelo de

primer orden más tiempo muerto del proceso controlado, obtenido a partir una curva de

reacción. Existen métodos que optimizan el funcionamiento del controlador como

servomecanismos, como otros que son óptimos para reguladores.

El objetivo de este laboratorio fue comparar el desempeño de los lazos de control

del proceso térmico utilizando varios de estos métodos de sintonización, tanto para

funcionamiento como servomecanismo como para reguladores.

E.8.1 Procedimiento

Page 164: Programa de supervisión y configuración para controladores

164

1- Utilizando el modelo de primer orden más tiempo muerto identificado para el

proceso térmico con la velocidad mínima del abanico, a partir de la curva de

reacción, se calcularon los parámetros para un controlador PID-Ideal empleando

el método de López (criterio ITAE), el de Rovira (criterio ITAE) y el Alfaro

(criterio IAE para servomecanismo y regulador)[4]

Tabla E.14 Cálculo de parámetros de control mediante criterios integrales

Método / Parámetro Kc Bp (%) Ti (seg) Td (seg) Lopez ITAE 3.29 30.42 15.20 3.19 Rovira ITAE 1.99 50.19 56.31 2.88 Alfaro IAE Servo 2.06 48.61 46.28 3.13 Alfaro IAE Regulador 3.25 30.75 14.94 4.23

2- Se conectó el controlador en operación manual con salida de 0%, el equipo de

adquisición y la planta tal y como se describe en la Figura 3.2, además se

conectó la salida del generador de funciones a la entrada de control del abanico.

3- Se ajustó el generador de funciones para trabajar con onda cuadrada, frecuencia

cero, desviación cero y amplitud cero.

4- Se sintonizó el controlador como PI con los parámetros calculados por el

método de Rovira (ITAE):

a. Banda proporcional 50.2%

b. Tiempo integral 56 s

c. Tiempo derivativo 3 s

Page 165: Programa de supervisión y configuración para controladores

165

d. Componente integral 0%

5- Se pasó el controlador a operación automática y después de unos 10 segundos,

se cambió la el valor deseado a 50%.

6- Se esperó a que se estabilizara la respuesta y después de alrededor de 10

segundos se aumentó la amplitud del generador de funciones a 100%.

7- Se esperó unos 10 segundos después de estabilizarse el sistema y se disminuyó

nuevamente la amplitud del generador de funciones a 0%.

8- Una vez que el sistema se estabilizó finalmente, se guardaron los datos en un

archivo para el análisis. Se vuelve a poner el controlador en modo manual con

salida de 0%.

9- Se sintonizó el controlador como PI con los parámetros calculados por el

método de López (ITAE):

a. Banda proporcional 30.4%

b. Tiempo integral 15 s

c. Tiempo derivativo 3 s

d. Componente integral 0%

10- Se repitieron los pasos 5 a 8 con estos nuevos valores de sintonización

11- Se sintonizó el controlador como PI con los parámetros calculados por el

método de Alfaro para servomecanismos (IAE):

Page 166: Programa de supervisión y configuración para controladores

166

a. Banda proporcional 48.6%

b. Tiempo integral 46 s

c. Tiempo derivativo 3 s

d. Componente integral 0%

12- Se repitieron los pasos 5 a 8 con estos nuevos valores de sintonización

13- Se sintonizó el controlador como PI con los parámetros calculados por el

método de Alfaro para regulador (IAE):

a. Banda proporcional 30.7%

b. Tiempo integral 15 s

c. Tiempo derivativo 4 s

d. Componente integral 0%

14- Se repitieron los pasos 5 a 8 para estos nuevos valores de sintonización

E.8.2 Resultados

Page 167: Programa de supervisión y configuración para controladores

167

Rovira - ITAE

0.00

10.00

20.00

30.00

40.00

50.00

60.00

0.0 75.0 150.0 225.0 300.0 375.0 450.0

y(t)

r(t)Gen. de func.

Figura E.17 Respuesta de proceso para método de sintonización Rovira - ITAE

Lopez - ITAE

0.00

10.00

20.00

30.00

40.00

50.00

60.00

0.0 75.0 150.0 225.0 300.0 375.0

y(t)

r(t)Gen. de func.

Figura E.18 Respuesta de proceso para método de sintonización López - ITAE

Page 168: Programa de supervisión y configuración para controladores

168

Alfaro - Servo IAE

0.00

10.00

20.00

30.00

40.00

50.00

60.00

0.0 100.0 200.0 300.0 400.0

y(t)

r(t)Gen. de func.

Figura E.19 Respuesta de proceso - método de sintonización Alfaro IAE Servo

Alfaro - Regulador IAE

0.00

10.00

20.00

30.00

40.00

50.00

60.00

0.0 75.0 150.0 225.0 300.0

y(t)

r(t)Gen. de func.

Figura E.20 Respuesta de proceso - método de sintonización Alfaro IAE Regulador

El análisis del desempeño de los lazos de controla para cada uno de los métodos

utilizados se resume en la siguiente tabla:

Page 169: Programa de supervisión y configuración para controladores

169

Tabla E.15 Resultados de la sintonización mediante criterios integrales

Escalón en valor deseado Perturbación positiva Perturbación negativa Método sintonización ep (%) Mp (%) ta2% (s) ep (%) Mp (%) ta2% (s) ep (%) Mp (%) ta2% (s)

Rovira ITAE 0.85 n/a 33.3 1.7 13.1 150 0.77 9.39 121

López ITAE 0 3.1 66.8 0.58 10.9 58.3 0 7.1 88.2

Alfaro Servo IAE 0.7 n/a 34.5 0.6 13.46 133 0.8 9.1 107

Alfaro Regulador IAE 0.44 3.37 83.6 0.43 9.51 35 0.45 7.2 71.8

Se observa que los sistemas cuyos controladores fueron optimizados para funcionar

como servomecanismos (Rovira, Alfaro IAE Servo) presentan un mejor funcionamiento en

presencia de un cambio escalón en el valor deseado que aquellos sintonizados como

reguladores. Esto se refleja en que no ocurren sobrepasos (la variable controlada no oscila

antes de llegar al valor final), y que los sistemas alcanzan el valor deseado en menos de la

mitad del tiempo. Sin embargo, presentaron un error permanente mayor que los

reguladores, por el hecho de tener un tiempo integral mucho mayor que estos. Ahora, entre

los métodos de Rovira y de Alfaro IAE servo, se observa que el rendimiento de ambos

resulta muy similar, aunque el método de Alfaro presenta un error permanente menor.

A la hora de introducir perturbaciones al proceso, los sistemas con controladores

optimizados como reguladores respondieron más rápido y tuvieron menor sobrepaso y error

permanente en todos los casos. Comparando los métodos de López y de Alfaro IAE

Regulador, en la primer perturbación el método de Alfaro superó al de López en todos los

parámetros medidos, mientras que en la segunda perturbación presentó solamente un error

permanente mayor y un sobrepaso máximo muy similar, pero aún su tiempo de

asentamiento fue bastante mejor.

Page 170: Programa de supervisión y configuración para controladores

170

APÉNDICE F: Código fuente del programa

use Tk; use Tk::Graph; use Tk::LabFrame; use Tk::ROText; use strict; use Win32::SerialPort; use Time::HiRes qw(usleep gettimeofday tv_interval); ############################################################################################ # Variables de uso general ############################################################################################ my $ob; my $sl; my $pollmillisec = 180; my $registro_flag = 0; my %graph_data_hash; my $ref_hash = \%graph_data_hash; $graph_data_hash{"r2 (t)"}=""; $graph_data_hash{"u2 (t)"}=""; $graph_data_hash{"y2 (t)"}=""; my $data_path = "c:/temp/graph"; my $filename = "Foxboro_data.csv"; my $remote_timer; my $time_reference; my $time_variable; my $graph_timer; my $graph_window_timer; my $graph_instruct; my $refreshed_flag = 0; my $quick_out = 0; my $num_char_write = 8; my $num_char_read = 8; my $slave_address = 1; my $slave_address_spin = 1; my @slave_address_graph = (); my @slave_address_array = (); my $Options_window; my $Connect_flag = 0; my $null_word = 0x8000; my @Func_return; my @Msg_read_array; my $Msg_read; my @Processed_data; my $done = 1; my $Bp_value; my $IP_value; my $Ti_min_value; my $Ti_sec_value; my $Ti_value; my $Td_min_value;

Page 171: Programa de supervisión y configuración para controladores

171

my $Td_sec_value; my $Td_value; my $Ref_value; my $Ref_value_2; my $Out_value; my $auto_man_status = 0; my $CRC_reg; my $poly_value; ############################################################################################ # Configuracion puerto serial ############################################################################################ my $cfgfile = "COM1_test.cfg"; if (-e $cfgfile) # revisa si el archivo de configuracion existe { $ob = Win32::SerialPort->start ($cfgfile) or die "No puede iniciar archivo de configuracion $cfgfile: $!\n"; } else{ # si no existe, crea un archivo nuevo $ob = new Win32::SerialPort ("COM1") or die "No se puede crear archivo de configuracion $cfgfile: $!"; # propiedades del puerto serial $ob -> databits(8); $ob -> baudrate(9600); $ob -> parity("none"); $ob -> stopbits(2); $ob -> buffers(100000,100000); $ob -> write_settings or undef $ob; print "No puede cambiar los parametros del puerto serial $cfgfile: $!" unless ($ob); $ob -> save($cfgfile) or warn "No puede guardar archivo de configuracion $cfgfile: $!"; $ob -> close or die "failed to close"; $ob = Win32::SerialPort->start ($cfgfile) or die "Archivo de configuracion $cfgfile no encontrado: $!\n"; } # otros parametros de control de I/0 my $poll = 0; my $polltime = 200; # milliseconds my $maxpoll = 150; # 30 seconds my $msg = ""; my $send = ""; my $senttext = ""; $ob->user_msg(1); $ob->error_msg(1); $ob->lookclear; # empty buffer ############################################################################################ # SWITCH MEGA WIDGET - Para utilizar el widget de tipo interruptor en el GUI ############################################################################################ $Tk::SlideSwitch::VERSION = '1.1'; package Tk::SlideSwitch; use Tk::widgets qw/Label Scale/; use base qw/Tk::Frame/; Construct Tk::Widget 'SlideSwitch'; sub Populate {

Page 172: Programa de supervisión y configuración para controladores

172

my($self, $args) = @_; $self->SUPER::Populate($args); my $ll = $self->Label->pack(-side => 'left'); $sl = $self->Scale->pack(-side => 'left'); my $rl = $self->Label->pack(-side => 'left'); $self->ConfigSpecs( -command => [$sl, qw/command Command /], -from => [$sl, qw/from From 0/], -highlightthickness => [$sl, qw/highlightThickness HighlightThickness 0/], -length => [$sl, qw/length Length 30/], -llabel => [qw/METHOD llabel Llabel /], -orient => [$sl, qw/orient Orient horizontal/], -rlabel => [qw/METHOD rlabel Rlabel /], -showvalue => [$sl, qw/showValue ShowValue 0/], -sliderlength => [$sl, qw/sliderLength SliderLength 15/], -sliderrelief => [$sl, qw/sliderRelief SliderRelief raised/], -to => [$sl, qw/to To 1/], -troughcolor => [$sl, qw/troughColor TroughColor /], -width => [$sl, qw/width Width 8/], -variable => [$sl, qw/variable Variable /], 'DEFAULT' => [$ll, $rl], ); $self->{ll} = $ll; $self->{sl} = $sl; $self->{rl} = $rl; $self->bind('<Configure>' => sub { my ($self) = @_; my $orient = $self->cget(-orient); return if $orient eq 'horizontal'; my ($ll, $sl, $rl) = ($self->{ll}, $self->{sl}, $self->{rl}); $ll->packForget; $sl->packForget; $rl->packForget; $ll->pack; $sl->pack; $rl->pack; }); } # end Populate # Private methods and subroutines. sub llabel { my ($self, $args) = @_; $self->{ll}->configure(@$args); } # end llabel sub rlabel { my ($self, $args) = @_; $self->{rl}->configure(@$args); } # end rlabel 1; package main;

Page 173: Programa de supervisión y configuración para controladores

173

############################################################################################ # INICIO DE LA INTERFAZ GRAFICA ############################################################################################ my $mw = MainWindow->new(-title => "Programa de Configuracion y Supervision - Foxboro 716C"); $mw -> resizable(0,0); $mw -> minsize(800,600); my $frame1 = $mw->Frame(-borderwidth => 2, -relief => 'groove' )->pack(-fill => 'both', -expand => 1 ); my $frame2 = $mw->Frame(-borderwidth => 2, -relief => 'groove' )->pack(-fill => 'both', -expand => 1 ); my $frame3 = $mw->Frame(-borderwidth => 2, -relief => 'groove' )->pack(-fill => 'both', -expand => 1 ); my $frame4 = $mw->Frame(-borderwidth => 2, -relief => 'groove' )->pack(-fill => 'both', -expand => 1 ); my $frame5 = $frame4->Frame(-borderwidth => 2, -relief => 'groove' )->pack(-side => 'left', -fill => 'both', -expand => 1 ); my $frame6 = $frame4->Frame(-borderwidth => 2, -relief => 'groove' )->pack(-side => 'left', -fill => 'both', -expand => 1 ); my $lbl_slave_address = $frame1 ->Label(-text => "Direccion Esclavo" )->pack(-side => 'left', -padx => 5, -pady => 5, -anchor => 'c' ); my $spin_address = $frame1 -> Spinbox(-from => 0, -to => 255, -width => 5, -textvariable => 1, -state => 'readonly', -readonlybackground => 'white', -command => sub{ &refresh_slave_address; } )->pack(-side => 'left', -padx => 5, -pady => 5, -anchor => 'c' ); my $btn_connect_frm1 = $frame1 -> Button(-text => "Conectar", -command => sub {

Page 174: Programa de supervisión y configuración para controladores

174

$Connect_flag = 1; &widget_activate; $slave_address = $slave_address_spin; push (@slave_address_array,$slave_address); if ($slave_address == 0){ print_on_text_box("\nPoniendo a todos los esclavos en modo remoto\n"); } else{ print_on_text_box("\nPoniendo en modo remoto a esclavo $slave_address\n"); } &button_connect; } )->pack(-side => 'left', -padx => 5, -pady => 5, -anchor => 'c' ); my $btn_disconnect_frm1 = $frame1 -> Button(-text => "Desconectar", -command => sub { $slave_address = $slave_address_spin; # Revisa que sea una direccion de un esclavo conectado my $found_address = grep $_ == $slave_address,@slave_address_array; if ($found_address == 0 and $slave_address != 0){ print_on_text_box("\nERROR: Ese esclavo no se encuentra conectado\n"); return; } # Saca el valor de la direccion del esclavo del arreglo de direcciones de esclavos @slave_address_array = grep $_ != $slave_address,@slave_address_array; # Anuncia cual esclavo esta desconectando. Si esta en modo broadcast, desconecta todos. if ($slave_address == 0){ @slave_address_array = (); print_on_text_box("\nPoniendo a todos los esclavos en modo local\n"); } else{ print_on_text_box("\nPoniendo en modo local a esclavo $slave_address\n"); } # Envio de la instruccion al esclavo correspondiente (o todos si es BROADCAST) &Func_5(10,0x00,0x00); &initialize_widgets; # Secuencia de "limpieza" cuando se desconecta el ultimo de los controladores if (@slave_address_array == ()){ print_on_text_box("\nTodos los esclavos estan desconectados\n"); $Connect_flag = 0; $graph_timer -> cancel if ($registro_flag == 1); $graph_window_timer -> cancel if ($registro_flag == 1); $registro_flag = 0; close(data_FH); } } )->pack(-side => 'left', -padx => 5, -pady => 5, -anchor => 'c' ); my $graph = $frame2->Graph(

Page 175: Programa de supervisión y configuración para controladores

175

-type => 'Line', -foreground => "black", -borderwidth => 2, -titlecolor => '#435d8d', -legend => 1, -yformat => '%d%%', -ylabel => "%", -xformat => "%d", -xlabel => "# Muestras", -padding => [20,20,20,40], # Padding [top, right, buttom, left] -printvalue => '%s', -linewidth => 1, -shadow => '#435d8d', -dots => 0, -look => 200, #escala x -wire => "#d2e8e4", -max => 100, # eje y -ytick => 10, -xtick => 5, -config => { ".y (t)" => { -color => "red" }, ".u (t)" => { -color => "yellow" }, ".r (t)" => { -color => "blue" }, "y2 (t)" => { -color => "brown" }, "r2 (t)" => { -color => "orange" }, "u2 (t)" => { -color => "white" }, }, )->pack( -expand => 1, -fill => 'both'); my $btn_registroON = $frame3 -> Button(-text => "Registro", -command => sub{if (!$registro_flag){ $registro_flag = 1; if (!-d "$data_path") { `mkdir "$data_path"`; } my $opened = open(data_FH, ">> $data_path\\$filename"); if (! $opened){ print_on_text_box ("\nERROR!!: El archivo $filename se encuentra abierto en otra aplicacion Debe cerrarlo antes de poder iniciar el registro!\n"); return; } print_on_text_box ("\nInicia registro en archivo\n"); $time_reference = [gettimeofday]; update_graph_data($frame3, $pollmillisec); &update_graph; } } )->pack(-side => 'left', -padx => 5, -pady => 5, -anchor => 'c' ); my $btn_pausa = $frame3 -> Button(-text => "Detener", -command => sub{$registro_flag = 0; print_on_text_box ("\nDetiene registro en archivo\n");

Page 176: Programa de supervisión y configuración para controladores

176

close(data_FH); } )->pack(-side => 'left', -padx => 5, -pady => 5, -anchor => 'c' ); my $btn_erase = $frame3 -> Button(-text => "Borrar", -command => sub{close data_FH; open(data_FH, "+> $data_path\\$filename") or die; $graph->clear(); $time_reference = [gettimeofday]; print_on_text_box ("\nArchivo de datos borrado\n");} )->pack(-side => 'left', -padx => 5, -pady => 5, -anchor => 'c' ); my $entry_archive_path = $frame3 ->Entry(-text => "$data_path/$filename" )->pack(-side => 'left', -fill => 'x', -expand => 1, -padx => 5 ); my $btn_filename = $frame3 -> Button(-text => "Archivo...", -command => sub{ # muestra cuadro de dialogo para cambiar nombre de archivo my $Filename_popup = $mw->Toplevel(-title => "Nombre de archivo"); my $Label_filename = $Filename_popup->Label(-text => "Elija un nombre para el archivo de registro de datos" )->pack(-side => 'top', -padx => 5, -pady => 5, -fill => 'x'); my $Filename_popup_frame = $Filename_popup->Frame( )->pack(-side => 'bottom', -fill => 'x', -expand => 1, -pady => 5); my $Entry_filename = $Filename_popup->Entry( )->pack(-side => 'left', -padx => 5, -pady => 5, -fill => 'x', -expand => 1); my $Label_extension = $Filename_popup->Label(-text => ".csv " )->pack(-side => 'left',-anchor => 'w'); my $Button_Filename_cancel = $Filename_popup_frame->Button(-text => "Cancel", -width => 10, -command => sub{ $Filename_popup->withdraw() } )->pack(-side => 'left',-anchor => 'center',-expand => 1); my $Button_Filename_ok = $Filename_popup_frame->Button(-text => "OK", -width => 10, -command => sub{ $filename = ($Entry_filename -> get).".csv"; if (defined $data_path and $data_path ne '') {

Page 177: Programa de supervisión y configuración para controladores

177

$entry_archive_path -> configure(-text => "$data_path/$filename"); }$Filename_popup->withdraw(); } )->pack(-side => 'right',-anchor => 'center',-expand => 1); my $filename_edit = $filename; $filename_edit =~ s/.csv//; $Entry_filename->insert('end',$filename_edit); } )->pack(-side => 'left', -padx => 5, -pady => 5, -anchor => 'c' ); my $btn_browse = $frame3 -> Button(-text => "Ruta...", -command => [\&dir,$entry_archive_path] )->pack(-side => 'left', -padx => 5, -pady => 5, -anchor => 'c' ); my $lbl_controlador_conf = $frame5 -> Label(-text => "Opciones del Controlador" )->grid(-column => 2, -row => 0, -columnspan =>2, -sticky => 'ew' ); my $btn_configure = $frame5 -> Button(-text => "Mas opciones...", -width => 10, -command => sub{ # ELEMENTOS DE INTERFAZ PARA LA VENTANA DE CONFIGURACION $Options_window = $mw->Toplevel(-title => "Opciones de controlador"); $Options_window ->grab; $Options_window -> resizable(0,0); my $opt_frame1 = $Options_window->Frame(-borderwidth => 2,-relief => 'groove')->pack(-fill => 'both',-expand => 1); my $opt_frame2 = $Options_window->Frame(-borderwidth => 2,-relief => 'groove')->pack(-fill => 'both',-expand => 1); my $opt_frame3 = $Options_window->Frame(-borderwidth => 2,-relief => 'groove')->pack(-fill => 'both',-expand => 1); my $dir_text = "\nDireccion: $slave_address_spin"; $dir_text = "\nModo broadcast" if ($slave_address_spin == 0); my $lbl_header = $opt_frame1 -> Label(-text => "Opciones adicionales del controlador\n$dir_text",-justify => 'left')->pack(-expand => 1,-fill=>'both'); my $lbl_IP = $opt_frame2 -> Label(-text => "IP (%)")->grid(-padx => 5,-pady => 5,-column => 0,-row => 0); my $spin_IP = $opt_frame2 -> Spinbox(-from => 0, -to => 100, -width => 5, -increment => 0.1, -invalidcommand => sub { -invalidcommand => [\&msg_box_numeric,""], },

-validate => 'all',

Page 178: Programa de supervisión y configuración para controladores

178

-validatecommand => sub { my ($proposed) = @_; return not $proposed =~ m/[^(\d{1,3}\.\d{1,1})]/g; }, -textvariable => 0 )->grid(-padx => 5,-pady => 5,-column => 1,-row => 0); my $opt_IP_set_button = $opt_frame2 -> Button(-text =>"Enviar", -state =>'disabled', -width =>8, -command => sub{ $IP_value = $spin_IP ->get; &config_value_send(516,$IP_value,0,100,'word'); } )->grid(-padx => 5,-pady => 5,-column => 3,-row => 0,-sticky => "ew"); my $opt_IP_get_button = $opt_frame2 -> Button(-text =>"Leer", -width =>8, -command => sub{ &config_value_get(516,$spin_IP,$opt_IP_set_button,'word'); }, )->grid(-padx => 5,-pady => 5,-column => 2,-row => 0,-sticky => "ew"); my $lbl_Ref_2 = $opt_frame2 -> Label(-text => "r2 (t) (%)")->grid(-padx => 5,-pady => 5,-column => 0,-row => 1); my $spin_Ref_2 = $opt_frame2 -> Spinbox(-from => 0, -to => 100, -width => 5, -increment => 0.1, -invalidcommand => [\&msg_box_numeric,""], -validate => 'all', -validatecommand => sub {

my ($proposed) = @_; return not $proposed =~ m/[^(\d{1,3}\.\d{1,1})]/g; },

-textvariable => 0 )->grid(-padx => 5,-pady => 5,-column => 1,-row => 1); my $opt_Ref_2_set_button = $opt_frame2 -> Button(-text =>"Enviar", -width =>8, -state => 'disabled',

-command => sub{ $Ref_value_2 = $spin_Ref_2 ->get; &config_value_send(139,$Ref_value_2,0,100,'word'); } )->grid(-padx => 5,-pady => 5,-column => 3,-row => 1,-sticky => "ew"); my $opt_Ref_2_get_button = $opt_frame2 -> Button(-text =>"Leer", -width =>8, -command => sub{ &config_value_get(139,$spin_Ref_2,$opt_Ref_2_set_button,'word'); }, )->grid(-padx => 5,-pady => 5,-column => 2,-row => 1,-sticky => "ew"); my $lbl_filter = $opt_frame3->LabFrame(-label => 'Filtro en valor desplegado')->pack(); # Botones de seleccion para valor de filtro

Page 179: Programa de supervisión y configuración para controladores

179

my $opt_filter_value; foreach (qw(OFF ON)) { $lbl_filter->Radiobutton(-text => $_, -value => $_, -variable => \$opt_filter_value, )->pack(-side => 'left',-padx => 5,-pady => 5); } my $opt_filter_set_button = $lbl_filter -> Button(-text =>"Enviar", -width =>8, -state => 'disabled', -command => sub{ my $choice_val; if ($opt_filter_value == 'OFF'){

$choice_val = 0; } elsif ($opt_filter_value == 'ON'){

$choice_val = 1; } &config_value_send(214,$choice_val,"","",'bit'); } )->pack(-side => 'right',-padx => 5,-pady => 5); my $opt_filter_get_button = $lbl_filter -> Button(-text =>"Leer", -width =>8, -command => sub{ my $choice_val = config_value_get(214,$lbl_filter,$lbl_filter,'bit'); if ($choice_val == 0){

$opt_filter_value = 'OFF' } elsif ($choice_val == 1){

$opt_filter_value = 'ON' } }, )->pack(-side => 'right'); my $lbl_PID = $opt_frame3->LabFrame(-label => 'Tipo de Accion de Control')->pack(); # Botones de seleccion para valor de PID my $opt_pid_value; foreach (qw(PID PI)) {

$lbl_PID->Radiobutton(-text => $_, -value => $_, -variable => \$opt_pid_value, )->pack(-side => 'left',-padx => 5,-pady => 5); } my $opt_pid_set_button = $lbl_PID -> Button(-text =>"Enviar", -width =>8, -state => 'disabled', -command => sub{ my $choice_val; if ($opt_pid_value == 'PID'){

$choice_val = 0; } elsif ($opt_pid_value == 'PI'){

$choice_val = 1;

Page 180: Programa de supervisión y configuración para controladores

180

} &config_value_send(338,$choice_val,"","",'bit'); } )->pack(-side => 'right',-padx => 5,-pady => 5); my $opt_pid_get_button = $lbl_PID -> Button(-text =>"Leer", -width =>8, -command => sub{ my $choice_val = config_value_get(338,$lbl_PID,$lbl_PID,'bit'); if ($choice_val == 0){

$opt_pid_value = 'PID' } elsif ($choice_val == 1){

$opt_pid_value = 'PI' } }, )->pack(-side => 'right'); # Activacion o desactivacion de widgets en ventana de opciones if ($slave_address_spin == 0){ &enable_disable_widget(0,$opt_IP_get_button,$opt_Ref_2_get_button,$opt_filter_get_button); &enable_disable_widget(1,$opt_IP_set_button,$opt_Ref_2_set_button,$opt_filter_set_button); } } )->grid(-padx => 5, -pady => 5, -column => 0, -row => 5, -columnspan =>2, -sticky => "ew" ); my $lbl_Pb = $frame5 -> Label(-text => "Bp (%)" )->grid(-column => 0, -row => 2 ); my $spin_Pb = $frame5 -> Spinbox(-from => 1, -to => 200, -width => 10, -increment => 0.1, -invalidcommand => [\&print_on_text_box,"\nError: solo puede introducir numeros\n"], -validate => 'all', -validatecommand => sub { my ($proposed) = @_; return not $proposed =~ m/[^(\d{1,3}\.\d{1,1})]/g; }, )->grid(-padx => 5, -pady => 5, -column => 1, -row => 2, -columnspan =>2 ); my $lbl_Ti = $frame5 -> Label(-text => "Ti (mm_ss)" )->grid(-column => 0,

Page 181: Programa de supervisión y configuración para controladores

181

-row => 3); my $spin_Ti_min = $frame5 -> Spinbox(-from => 0, -to => 20, -width => 3, -invalidcommand => [\&print_on_text_box,"\nError: solo puede introducir numeros enteros\n"], -validate => 'all', -validatecommand => sub { my ($proposed) = @_; return not $proposed =~ m/[^\d]/g; }, -textvariable => 0 )->grid(-padx => 0, -pady => 5, -column => 1, -row => 3 ); my $spin_Ti_sec = $frame5 -> Spinbox(-from => 1, -to => 59, -width => 3, -invalidcommand => [\&print_on_text_box,"\nError: solo puede introducir numeros enteros\n"], -validate => 'all', -validatecommand => sub { my ($proposed) = @_; return not $proposed =~ m/[^\d]/g; }, -textvariable => 0 )->grid(-padx => 0, -pady => 5, -column => 2, -row => 3 ); my $lbl_Td = $frame5 -> Label(-text => "Td (mm_ss)" )->grid(-column => 0, -row => 4 ); my $spin_Td_min = $frame5 -> Spinbox(-from => 0, -to => 10, -width => 3, -invalidcommand => [\&print_on_text_box,"\nError: solo puede introducir numeros enteros\n"], -validate => 'all', -validatecommand => sub { my ($proposed) = @_; return not $proposed =~ m/[^\d]/g; }, -textvariable => 0 )->grid(-padx => 0, -pady => 5, -column => 1, -row => 4 ); my $spin_Td_sec = $frame5 -> Spinbox(-from => 0, -to => 59, -width => 3, -invalidcommand => [\&print_on_text_box,"\nError: solo puede introducir numeros enteros\n"], -validate => 'all', -validatecommand => sub {

Page 182: Programa de supervisión y configuración para controladores

182

my ($proposed) = @_; return not $proposed =~ m/[^\d]/g; }, -textvariable => 0 )->grid(-padx => 0, -pady => 5, -column => 2, -row => 4 ); my $lbl_Ref = $frame5 -> Label(-text => "r (t) (%)" )->grid(-column => 3, -row => 2, -padx => 2 ); my $spin_Ref = $frame5 -> Spinbox(-from => 0, -to => 100, -increment => 0.1, -width => 5, -invalidcommand => [\&print_on_text_box,"\nError: solo puede introducir numeros\n"], -validate => 'all', -validatecommand => sub { my ($proposed) = @_; return not $proposed =~ m/[^(\d\.\d{1})]/g; }, -textvariable => 0 )->grid(-padx => 5, -pady => 5, -column => 4, -row => 2 ); my $lbl_Out = $frame5 -> Label(-text => "u (t) (%)" )->grid(-column => 3, -row => 3, -padx => 5 ); my $spin_Out = $frame5 -> Spinbox(-from => 0, -to => 100, -width => 5, -invalidcommand => [\&print_on_text_box,"\nError: solo puede introducir numeros enteros\n"], -validate => 'all', -validatecommand => sub { my ($proposed) = @_; return not $proposed =~ m/[^\d]/g; }, -command => sub { $quick_out = 1; #para que no escriba todos los valores, sino solo la salida del controlador sub_spin_out(); $quick_out = 0; } )->grid(-padx => 5, -pady => 5, -column => 4, -row => 3 ); my $btn_refresh = $frame5 -> Button(-text => "Enviar", -command=> sub { $slave_address = $slave_address_spin;

Page 183: Programa de supervisión y configuración para controladores

183

# convertir valores obtenidos de la GUI en bytes de 8 bits # Valores: Valor deseado,Banda proporcional, tiempo integral, tiempo derivativo my $validate_OK = &validate_PID_params; if ($validate_OK == 1){ my @PID_params_array = ($Ref_value*10,$null_word,$null_word,$null_word,$Bp_value*10,$null_word,$Ti_value,$Td_value); my @PID_params_data = (); foreach (@PID_params_array){ my $PID_param_HI = (&high_low_byte($_))[1]; my $PID_param_LO = (&high_low_byte($_))[0]; push (@PID_params_data,$PID_param_HI,$PID_param_LO); } # Enviar valores para formatear segun funcion correspondiente &Func_16(1,8,@PID_params_data); } if ($auto_man_status == 1) { #Si esta en manual, actualizar tambien valor de salida &sub_spin_out(); } } )->grid(-padx => 5, -pady => 5, -column => 3, -row => 5, -columnspan =>2, -sticky => "ew" ); my $sl_auto_man = $frame5->SlideSwitch( -variable => $auto_man_status, -orient => 'horizontal', -command => sub { $slave_address = $slave_address_spin; if ($auto_man_status){ if ($Connect_flag){ &print_on_text_box("\nControlador en modo:AUTO\n"); &Func_5(1,0x00,0x00); foreach ($spin_Pb,$spin_Td_min,$spin_Ti_min,$spin_Td_sec,$spin_Ti_sec,$spin_Ref){ $_->configure(-state => 'normal') if ($refreshed_flag); } $spin_Out -> configure(-state => 'disabled') if ($refreshed_flag); } } else{ if ($Connect_flag){ &print_on_text_box("\nControlador en modo:MANUAL\n"); &Func_5(1,0xFF,0x00); $spin_Out -> configure(-state => 'normal') if ($refreshed_flag); } }

Page 184: Programa de supervisión y configuración para controladores

184

$auto_man_status = not($auto_man_status); }, -llabel => [-text => 'MANUAL', -foreground => 'blue'], -rlabel => [-text => 'AUTO', -foreground => 'blue'], -troughcolor => 'gray', -width => 20 )->grid(-column => 2,-row => 1,-columnspan =>2,-ipady => 8); my $btn_update = $frame5 -> Button(-text => "Refrescar", -width => 10, -command => sub{ $slave_address = $slave_address_spin; &button_refresh; } )->grid(-padx => 5, -pady => 3, -column => 2, -row => 5, -sticky => "ew"); my $text_box = $frame6-> Scrolled("ROText", -height => 10, -background => 'white', -scrollbars => "e" )->pack(-fill => 'both', -expand => 1 ); $text_box-> insert('end',"<< Bienvenido al Programa de Configuracion y Supervision del Foxboro 716C >>\n"); # arreglos de widgets que se pueden habilitar o deshabilitar my @control_widgets_en_des = ($spin_Pb,$spin_Ti_min,$spin_Ti_sec,$spin_Td_min,$spin_Out,$spin_Td_sec,$spin_Ref,$btn_refresh,$sl_auto_man); my @disconnected_widgets = ($btn_disconnect_frm1,$btn_registroON,$btn_pausa,$btn_erase,$btn_configure,$btn_update); &initialize_widgets; MainLoop(); ############################################################################################ # SUBFUNCIONES UTILIZADAS EN LA GUI ############################################################################################ # ------------------------------------------------------------------------------------------ # Subrutina que inicializa las widgets en modo deshabilitado hasta que se refresquen los valores # Entrada: n/a # Salida: bandera de deshabilitacion y arreglo de widgets sub initialize_widgets{ &enable_disable_widget(0,(@control_widgets_en_des,@disconnected_widgets)); &enable_disable_widget(1,($btn_connect_frm1)); } # ------------------------------------------------------------------------------------------ # Subrutina que activa los widgets despues de que se haya conectado el controlador

Page 185: Programa de supervisión y configuración para controladores

185

# Entrada: n/a # Salida: n/a sub widget_activate{ &enable_disable_widget(1,@disconnected_widgets); &enable_disable_widget(0,($btn_connect_frm1)); } # ------------------------------------------------------------------------------------------ # Subrutina que envia la funcion para conectarse al controlador # y repite la funcion cada 3 segundos, para evitar que regrese al modo local # Entrada: n/a # Salida: n/a sub button_connect{ if ($Connect_flag == 1){ $remote_timer = $btn_connect_frm1->after(3000, [\&button_connect]); } foreach (@slave_address_array){ $slave_address = $_; &Func_5(10,0xFF,0x00); # PRUEBA if (scalar @slave_address_array > 1){ # espera 10 milisegundos para que se estabilice el puerto my $timeout; $timeout = Win32::GetTickCount() + (10); while (Win32::GetTickCount() < $timeout){ } } } } # ------------------------------------------------------------------------------------------ # Subrutina que refresca valores de configuracion de controladores # y actualiza valores en la GUI # Entrada: n/a # Salida: bandera de habilitacion y arreglo de widgets sub button_refresh{ $refreshed_flag = 1; # Verificar si se encuentra en automatico o manual &Func_1(1,1); @Processed_data = Process_Func_1(@Func_return); # Dependiendo del valor leido coloca el switch en la posicion correspondiente if ($Processed_data[0] == 1){ $sl->set(0); } else { $sl->set(1); } # Enviar comando para leer palabras de memoria &Func_3(1,8); @Processed_data = Process_Func_3(@Func_return); # Procesamiento de datos obtenidos $Bp_value = sprintf("%3.1f",$Processed_data[4]/10); $Ti_value = $Processed_data[6]; $Ti_min_value = ($Ti_value-$Ti_value%60)/60; $Ti_sec_value = $Ti_value - $Ti_min_value*60; $Td_value = $Processed_data[7]; $Td_min_value = ($Td_value-$Td_value%60)/60; $Td_sec_value = $Td_value - $Td_min_value*60;

Page 186: Programa de supervisión y configuración para controladores

186

$Out_value = $Processed_data[1]/10; $Ref_value = sprintf("%3.1f",$Processed_data[0]/10); # Refrescar los datos del GUI $spin_Pb ->set($Bp_value); $spin_Ti_min ->set($Ti_min_value); $spin_Ti_sec ->set($Ti_sec_value); $spin_Td_min ->set($Td_min_value); $spin_Td_sec ->set($Td_sec_value); $spin_Out ->set($Out_value); $spin_Ref ->set($Ref_value); &print_on_text_box("\nValores de control leidos.\n\n\t u(t): \t$Out_value %\n\t Bp: \t$Bp_value %\n\t Ti: \t$Ti_min_value:$Ti_sec_value (mm:ss)\n\t Td: \t$Td_min_value:$Td_sec_value (mm:ss)\n\t r(t): \t$Ref_value %\n"); # Habilitar los botones de configuracion de valores de control &enable_disable_widget(1,@control_widgets_en_des); if ($auto_man_status == 0){ &enable_disable_widget(0,($spin_Out)); } } # ------------------------------------------------------------------------------------------ # Subrutina que habilita o deshabilita ciertos widgets de la interfaz # Entrada: valor de 1 o 0 (habilitar o deshabilitar), arreglo de widgets # Salida: n/a sub enable_disable_widget{ my $en_dis_command = shift; my @en_dis_array = @_; foreach (@en_dis_array){ if ($en_dis_command){ $_ -> configure(-state => 'normal'); } else { $_ -> configure(-state => 'disabled'); } } } # ------------------------------------------------------------------------------ # Subrutina para cambiar la ruta en la cual se guardara el archivo de resultados # Entrada: nombre de la ventana principal # Salida: cambia el texto en la etiqueta y la variable $data_path que contiene la ruta del archivo sub dir { my $w = shift; $data_path = $w->chooseDirectory; if (defined $data_path and $data_path ne '') { $entry_archive_path -> configure(-text => "$data_path/$filename"); } } # ------------------------------------------------------------------------------ # Subrutina que despliega ventana de mensaje de error cuando valor ingresando no es un numero # Entrada: n/a # Salida: n/a sub msg_box_numeric{ $Options_window->messageBox(-title => 'Error', -message => 'Error: Solo puede introducir numeros', -type => 'OK', -icon => 'error'); }

Page 187: Programa de supervisión y configuración para controladores

187

# ------------------------------------------------------------------------------ # Subrutina que despliega ventana de mensaje de error cuando valor esta fuera del rango # Entrada: Valor minimo, valor maximo # Salida: n/a sub msg_box_range{ my $minimum = shift @_; my $maximum = shift @_; $Options_window->messageBox(-title => 'Error', -message => "Error: El valor esta fuera del rango [$minimum,$maximum]", -type => 'OK', -icon => 'error'); } # ------------------------------------------------------------------------------ # Subrutina para actualizar la direccion del esclavo cada vez que se cambia este campo # Entrada: n/a # Salida: n/a sub refresh_slave_address{ $slave_address_spin = $spin_address -> get; &enable_disable_widget(0,@control_widgets_en_des); if (($slave_address_spin) == 0){ &enable_disable_widget(0,($btn_update)); &enable_disable_widget(1,@control_widgets_en_des) if ($Connect_flag == 1); print_on_text_box("\nATENCION: Direccionamiento en modo BROADCAST\n"); return; } my $found_address = grep $_ == ($slave_address_spin),@slave_address_array; if ($found_address == 0){ &enable_disable_widget(0,@disconnected_widgets); &enable_disable_widget(1,($btn_connect_frm1)); } else{ &enable_disable_widget(0,($btn_connect_frm1)); &enable_disable_widget(1,(@disconnected_widgets)); } } # ------------------------------------------------------------------------------ # Subrutina para actualizar la informacion del grafico (y en el archivo) # Entrada: n/a # Salida: impresion en el archivo de datos sub update_graph_data{ my $wid = shift or return undef; my $ms = shift or return undef; $time_variable = tv_interval ($time_reference, [gettimeofday]); print data_FH "$time_variable,"; @slave_address_graph = @slave_address_array; #Toma valores del PRIMER ESCLAVO ============ $slave_address = shift @slave_address_graph; $graph_instruct = 1; &Func_3(0,3); @Processed_data = Process_Func_3(@Func_return); # Valor de referencia:

Page 188: Programa de supervisión y configuración para controladores

188

my $graph_data_1 = $Processed_data[1]/10; # Salida del controlador PID my $graph_data_2 = $Processed_data[2]/10; # Para el caso de la variable realimentada: # En caso de que el valor leido este por encima o por debajo del rango # se sutituye por un valor maximo (105) o minimo (-5), respectivamente my $graph_data_3; if (($Processed_data[0]) == 30005){ $graph_data_3 = 100; print data_FH "$graph_data_1,$graph_data_2,Sobre rango,"; } elsif (($Processed_data[0]) == 30004 or ($Processed_data[0]) > 65500){ $graph_data_3 = 0; print data_FH "$graph_data_1,$graph_data_2,Bajo rango,"; } else{ $graph_data_3 = $Processed_data[0]/10; print data_FH "$graph_data_1,$graph_data_2,$graph_data_3,"; } $graph_data_hash{".r (t)"}=$graph_data_1; $graph_data_hash{".u (t)"}=$graph_data_2; $graph_data_hash{".y (t)"}=$graph_data_3; if (@slave_address_graph != ()){ #Toma valores del SEGUNDO ESCLAVO ============ $slave_address = shift @slave_address_graph; $graph_instruct = 1; &Func_3(0,3); @Processed_data = Process_Func_3(@Func_return); # Valor de referencia: my $graph_data_4 = $Processed_data[1]/10; # Salida del controlador PID my $graph_data_5 = $Processed_data[2]/10; # Para el caso de la variable realimentada: # En caso de que el valor leido este por encima o por debajo del rango # se sutituye por un valor maximo (105) o minimo (-5), respectivamente my $graph_data_6; if (($Processed_data[0]) == 30005){ $graph_data_6 = 100; print data_FH "$graph_data_4,$graph_data_5,Sobre rango\n"; } elsif (($Processed_data[0]) == 30004 or ($Processed_data[0]) > 65500){ $graph_data_6 = 0; print data_FH "$graph_data_4,$graph_data_5,Bajo rango\n"; } else{ $graph_data_6 = $Processed_data[0]/10; print data_FH "$graph_data_4,$graph_data_5,$graph_data_6\n"; } $graph_data_hash{"r2 (t)"}=$graph_data_4; $graph_data_hash{"u2 (t)"}=$graph_data_5; $graph_data_hash{"y2 (t)"}=$graph_data_6;

Page 189: Programa de supervisión y configuración para controladores

189

$spin_Out ->set($graph_data_5) if ($auto_man_status == 0 and $slave_address_spin == 2); } else{ print data_FH "\n"; if (exists($graph_data_hash{"r2 (t)"})){ $graph_data_hash{"r2 (t)"}=""; $graph_data_hash{"u2 (t)"}=""; $graph_data_hash{"y2 (t)"}=""; } } $spin_Out ->set($graph_data_2) if ($auto_man_status == 0 and $slave_address_spin == 1); if ($registro_flag ==1){ #si no se ha detenido el registro $graph_timer = $wid->after($ms, [\&update_graph_data => $wid, $ms ]); } } # ------------------------------------------------------------------------------ # Subrutina para actualizar la informacion del grafico en si # Entrada: n/a # Salida: impresion en pantalla sub update_graph{ if ($registro_flag ==1){ $graph->set($ref_hash); $graph_window_timer = $graph->after(500, [\&update_graph]); } } # ------------------------------------------------------------------------------ # Subrutina para imprimir un texto en ventana de mensajes del GUI # (imprime mensaje y hace scrolling hacia abajo # Entrada: string de mensaje # Salida: impresion en la ventana de texto sub print_on_text_box{ my $message_text_box = shift (@_); $text_box ->insert('end',$message_text_box); $text_box->yviewMoveto(1); #hace scroll hasta el final para mostrar el ultimo mensaje } close data_FH; # ------------------------------------------------------------------------------------------ # Subrutina utilizada en modo manual para validar el parametro de salida de controlador y enviarlo # al esclavo cada vez que se incrementa o disminuye el valor de este en la GUI. # Entrada: Valores leidos del GUI # Salida: premensaje formateado para escribir sub sub_spin_out{ my $validate_OK = &validate_PID_params; if ($validate_OK == 1){ # convertir valores obtenidos de la GUI en bytes de 8 bits # Valores: Salida del controlador my @PID_params_array = ($Out_value*10); my @PID_params_data = (); foreach (@PID_params_array){

Page 190: Programa de supervisión y configuración para controladores

190

my $PID_param_HI = (&high_low_byte($_))[1]; my $PID_param_LO = (&high_low_byte($_))[0]; push (@PID_params_data,$PID_param_HI,$PID_param_LO); } # Enviar valores para formatear segun funcion correspondiente $slave_address = $slave_address_spin; &Func_6(130,@PID_params_data); } } # ------------------------------------------------------------------------------------------ # Subrutina para validar los parametros del controlador cada vez que activa boton de actualizar # Entrada: n/a # Salida: n/a sub validate_PID_params{ # obtener todos los valores a ser escritos $Bp_value = ($spin_Pb -> get); #$IP_value = ($spin_IP -> get); $Ti_min_value = $spin_Ti_min -> get; $Ti_sec_value = $spin_Ti_sec -> get; $Ti_value = $Ti_min_value*60+$Ti_sec_value; $Td_min_value = $spin_Td_min -> get; $Td_sec_value = $spin_Td_sec -> get; $Td_value = $Td_min_value*60+$Td_sec_value; $Ref_value = ($spin_Ref -> get); # revisar todos los valores en general # en caso que se sobrepase valor maximo, se imprime error # y se pone el valor maximo en el campo correspondiente if ($Bp_value < 1 or $Bp_value > 200 or $Ti_min_value > 20 or $Ti_sec_value > 59 or ($Ti_sec_value < 1 and $Ti_min_value == 0) or ($Ti_sec_value > 0 and $Ti_min_value == 20) or ($Td_sec_value > 0 and $Td_min_value == 10) or $Td_min_value > 10 or $Td_sec_value > 59 or $Ref_value > 100 or $Ref_value_2 > 100 or $Out_value > 100){ # revisar valor de banda proporcional if ($Bp_value > 200) { &print_on_text_box("\nERROR: Valor de Bp no valido\n"); $spin_Pb -> set(200); $Bp_value = $spin_Pb -> get; } elsif ($Bp_value < 1) { &print_on_text_box("\nERROR: Valor de Bp no valido\n"); $spin_Pb -> set(1); $Bp_value = $spin_Pb -> get; } # revisar valor de Tiempo integral if ($Ti_min_value > 20) { &print_on_text_box("\nERROR: Valor de Ti no valido\n"); $spin_Ti_min -> set(20); $Ti_min_value = $spin_Ti_min -> get; } if ($Ti_sec_value > 59) { &print_on_text_box("\nERROR: Valor de Ti no valido\n"); $spin_Ti_sec -> set(59); $Ti_sec_value = $spin_Ti_sec -> get; } if ($Ti_sec_value < 1 and $Ti_min_value == 0) { &print_on_text_box("\nERROR: Valor de Ti no valido\n"); $spin_Ti_sec -> set(1); $Ti_sec_value = $spin_Ti_sec -> get; } if ($Ti_sec_value > 0 and $Ti_min_value == 20) { &print_on_text_box("\nERROR: Valor de Ti no valido\n");

Page 191: Programa de supervisión y configuración para controladores

191

$spin_Ti_min -> set(20); $Ti_min_value = $spin_Ti_min -> get; $spin_Ti_sec -> set(0); $Ti_sec_value = $spin_Ti_sec -> get } # revisar valor de Tiempo derivativo if ($Td_min_value > 10) { &print_on_text_box("\nERROR: Valor de Td no valido\n"); $spin_Td_min -> set(10); $Td_min_value = $spin_Td_min -> get; } if ($Td_sec_value > 59) { &print_on_text_box("\nERROR: Valor de Td no valido\n"); $spin_Td_sec -> set(59); $Td_sec_value = $spin_Td_sec -> get; } if ($Td_sec_value > 0 and $Td_min_value == 10) { &print_on_text_box("\nERROR: Valor de Td no valido\n"); $spin_Td_min -> set(10); $Td_min_value = $spin_Td_min -> get; $spin_Td_sec -> set(0); $Td_sec_value = $spin_Td_sec -> get } # revisar valor de referencia (SP) if ($Ref_value > 100) { &print_on_text_box("\nERROR: Valor de r(t) no valido\n"); $spin_Ref -> set(100); $Ref_value = $spin_Ref -> get; } return 0; } else{ if ($auto_man_status){ #en Manual unicamente $Out_value = ($spin_Out -> get); # revisar valor de salida if ($Out_value > 100) { &print_on_text_box("\nERROR: Valor de u(t) no valido\n"); $spin_Out -> set(100); $Out_value = $spin_Out -> get; return 0; } else{ &print_on_text_box("\n\nActualizando valores de control.\n"); &print_on_text_box("\n\t Bp: \t$Bp_value %\n\t Ti: \t$Ti_min_value:$Ti_sec_value (mm:ss)\n\t Td: \t$Td_min_value:$Td_sec_value (mm:ss)\n\t r(t): \t$Ref_value %\n\t u(t): \t$Out_value %\n") if (!$quick_out); &print_on_text_box("\n\t u(t): \t$Out_value %\n") if ($quick_out); } } else{ # en AUTO &print_on_text_box("\n\nActualizando valores de control.\n"); &print_on_text_box("\n\t Bp: \t$Bp_value %\n\t Ti: \t$Ti_min_value:$Ti_sec_value (mm:ss)\n\t Td: \t$Td_min_value:$Td_sec_value (mm:ss)\n\t r(t): \t$Ref_value %\n\t"); } return 1; } #} } # ------------------------------------------------------------------------------------------ # Subrutina que obtiene los parametros de configuracion adicional cuando se presiona el boton de lectura

Page 192: Programa de supervisión y configuración para controladores

192

# Entrada: direccion de parametro,parametro de configuracion,identificacion de widget,identificacion de boton de envio,tipo de dato # Salida: valor de configuracion leido sub config_value_get{ my $config_value_address = shift @_; my $widget_ID = shift @_; my $send_button_ID = shift @_; my $data_type = shift @_; my $config_value; if ($data_type eq 'word'){ $slave_address = $slave_address_spin; &Func_3($config_value_address,1); @Processed_data = Process_Func_3(@Func_return); $config_value = (shift @Processed_data)/10; $widget_ID -> set($config_value); $send_button_ID -> configure(-state => 'normal'); } elsif ($data_type eq 'bit') { $slave_address = $slave_address_spin; &Func_1($config_value_address,1); @Processed_data = Process_Func_1(@Func_return); $config_value = (shift @Processed_data); return $config_value; } } # ------------------------------------------------------------------------------------------ # Subrutina para formatear y validar los parametros de configuracion adicional cada vez que presiona el boton de envio # Entrada: direccion de parametro,parametro de configuracion,limite inferior,limite superior,tipo de dato # Salida: envio de comando por puerto serial (Func 6) sub config_value_send{ my $config_value_address = shift @_; my $config_value = shift @_; my $low_limit = shift @_; my $high_limit = shift @_; my $data_type = shift @_; if ($data_type eq 'word'){ if (($config_value < $low_limit) or ($config_value > $high_limit)){ &msg_box_range($low_limit,$high_limit); return; } my @PID_params_array = ($config_value*10); my @PID_params_data = (); foreach (@PID_params_array){ my $PID_param_HI = (&high_low_byte($_))[1]; my $PID_param_LO = (&high_low_byte($_))[0]; push (@PID_params_data,$PID_param_HI,$PID_param_LO); } $slave_address = $slave_address_spin; &Func_6($config_value_address,@PID_params_data); } elsif ($data_type eq 'bit'){ if ($config_value == 0){ &Func_5($config_value_address,0x00,0x00); }

Page 193: Programa de supervisión y configuración para controladores

193

elsif ($config_value == 1){ &Func_5($config_value_address,0xFF,0x00); } } } ############################################################################################ # SUBFUNCIONES UTILIZADAS EN LA GUI - FORMATO DE MENSAJE DE SALIDA ############################################################################################ # ------------------------------------------------------------------------------ # Funcion 1 Modbus <<Lectura de N bits>> # Entrada: Arreglo de parametros (DirInicio,NumBits) # Salida: Arreglo de premensaje para enviar a funcion send_message sub Func_1{ my @Func_arguments = @_; # Direccion del esclavo my $slave = $slave_address; # Codigo de Funcion my $code = 1; # Direccion de inicio de palabras en memoria (Parte alta y baja) my $mem_address = shift @Func_arguments; my $mem_address_HI = (&high_low_byte($mem_address))[1]; my $mem_address_LO = (&high_low_byte($mem_address))[0]; # Datos - 2 bytes que tienen estado de bit por modificar my $num_bits = shift @Func_arguments; my $num_of_bits_HI = (&high_low_byte($num_bits))[1]; my $num_of_bits_LO = (&high_low_byte($num_bits))[0]; # Arreglo de salida - premensaje my @Func_message = ($slave,$code,$mem_address_HI,$mem_address_LO,$num_of_bits_HI,$num_of_bits_LO); # Numero de bytes que se veran a la hora de leer del puerto $num_char_write = 8; if (($num_bits % 8) != 0){ $num_char_read = 5+(($num_bits-($num_bits % 8))/8)+1; } else{ $num_char_read = 5+($num_bits/8); } # Envia arreglo de salida a funcion de envio @Func_return = &send_message(@Func_message); return @Func_return; } # ------------------------------------------------------------------------------ # Funcion 3 Modbus <<Lectura de N palabras>> # Entrada: Arreglo de parametros (DirInicio,NumPalabras) # Salida: Arreglo de premensaje para enviar a funcion send_message sub Func_3{ my @Func_arguments = @_; # Direccion del esclavo my $slave = $slave_address; # Codigo de Funcion

Page 194: Programa de supervisión y configuración para controladores

194

my $code = 3; # Direccion de inicio de palabras en memoria (Parte alta y baja) my $mem_address = shift @Func_arguments; my $mem_address_HI = (&high_low_byte($mem_address))[1]; my $mem_address_LO = (&high_low_byte($mem_address))[0]; # Numero de palabras por ser leidas (Parte alta y baja) my $num_of_words = shift @Func_arguments; my $num_of_words_HI = (&high_low_byte($num_of_words))[1]; my $num_of_words_LO = (&high_low_byte($num_of_words))[0]; # Arreglo de salida - premensaje my @Func_message = ($slave,$code,$mem_address_HI,$mem_address_LO,$num_of_words_HI,$num_of_words_LO); # Numero de bytes que se veran a la hora de leer del puerto $num_char_write = 8; $num_char_read = 5+$num_of_words*2; # Envia arreglo de salida a funcion de envio @Func_return = &send_message(@Func_message); return @Func_return; } # ------------------------------------------------------------------------------ # Funcion que toma los valores del GUI y formatea segun los parametros de la # Funcion 5 Modbus <<Escritura de un bit>> # Entrada: Arreglo de parametros (DirInicio,Datos) # Salida: Arreglo de premensaje para enviar a funcion send_message sub Func_5{ my @Func_arguments = @_; # Direccion del esclavo my $slave = $slave_address; # Codigo de Funcion my $code = 5; # Direccion de inicio de palabras en memoria (Parte alta y baja) my $mem_address = shift @Func_arguments; my $mem_address_HI = (&high_low_byte($mem_address))[1]; my $mem_address_LO = (&high_low_byte($mem_address))[0]; # Datos - 2 bytes que tienen estado de bit por modificar my @data = @Func_arguments; # Arreglo de salida - premensaje my @Func_message = ($slave,$code,$mem_address_HI,$mem_address_LO,@data); # Numero de bytes que se veran a la hora de leer del puerto $num_char_write = 8; $num_char_read = 8; # Envia arreglo de salida a funcion de envio @Func_return = &send_message(@Func_message); $done = 1; return $done; } # ------------------------------------------------------------------------------ # Funcion que toma los valores del GUI y formatea segun los parametros de la # Funcion 6 Modbus <<Escritura de una palabra>> # Entrada: Arreglo de parametros (DirInicio,Datos) # Salida: Arreglo de premensaje para enviar a funcion send_message sub Func_6{

Page 195: Programa de supervisión y configuración para controladores

195

my @Func_arguments = @_; # Direccion del esclavo my $slave = $slave_address; # Codigo de Funcion my $code = 6; # Direccion de inicio de palabras en memoria (Parte alta y baja) my $mem_address = shift @Func_arguments; my $mem_address_HI = (&high_low_byte($mem_address))[1]; my $mem_address_LO = (&high_low_byte($mem_address))[0]; # Datos - 2 bytes que tienen estado de bit por modificar my @data = @Func_arguments; # Arreglo de salida - premensaje my @Func_message = ($slave,$code,$mem_address_HI,$mem_address_LO,@data); # Numero de bytes que se veran a la hora de leer del puerto $num_char_write = 8; $num_char_read = 8; # Envia arreglo de salida a funcion de envio @Func_return = &send_message(@Func_message); return @Func_return; } # ------------------------------------------------------------------------------ # Funcion que toma los valores del GUI y formatea segun los parametros de la # Funcion 15 Modbus <<Escritura de N bits>> # Entrada: Arreglo de parametros (DirInicio,NumBits,Datos) # Salida: Arreglo de premensaje para enviar a funcion send_message sub Func_15{ my @Func_arguments = @_; # Direccion del esclavo my $slave = $slave_address; # Codigo de Funcion my $code = 15; # Direccion de inicio de palabras en memoria (Parte alta y baja) my $mem_address = shift @Func_arguments; my $mem_address_HI = (&high_low_byte($mem_address))[1]; my $mem_address_LO = (&high_low_byte($mem_address))[0]; # Numero de palabras por ser leidas (Parte alta y baja) my $num_of_bits = shift @Func_arguments; my $num_of_bits_HI = (&high_low_byte($num_of_bits))[1]; my $num_of_bits_LO = (&high_low_byte($num_of_bits))[0]; # Numero total de bytes my $num_bytes; if ($num_of_bits % 8 == 0){ $num_bytes = ($num_of_bits)/8; } else{ $num_bytes = (($num_of_bits-($num_of_bits % 8))/8)+1; } # Datos - Palabras que van a escribirse my @data = @Func_arguments; # Arreglo de salida - premensaje my @Func_message = ($slave,$code,$mem_address_HI,$mem_address_LO,$num_of_bits_HI,$num_of_bits_LO,$num_bytes,@data); # Numero de bytes que se veran a la hora de leer del puerto

Page 196: Programa de supervisión y configuración para controladores

196

$num_char_write = 9 + $num_bytes; $num_char_read = 8; # Envia arreglo de salida a funcion de envio @Func_return = &send_message(@Func_message); return @Func_return; } # ------------------------------------------------------------------------------ # Funcion que toma los valores del GUI y formatea segun los parametros de la # Funcion 16 Modbus <<Escritura de N palabras>> # Entrada: Arreglo de parametros (DirInicio,NumPalabras,Datos) # Salida: Arreglo de premensaje para enviar a funcion send_message sub Func_16{ my @Func_arguments = @_; # Direccion del esclavo my $slave = $slave_address; # Codigo de Funcion my $code = 16; # Direccion de inicio de palabras en memoria (Parte alta y baja) my $mem_address = shift @Func_arguments; my $mem_address_HI = (&high_low_byte($mem_address))[1]; my $mem_address_LO = (&high_low_byte($mem_address))[0]; # Numero de palabras por ser leidas (Parte alta y baja) my $num_of_words = shift @Func_arguments; my $num_of_words_HI = (&high_low_byte($num_of_words))[1]; my $num_of_words_LO = (&high_low_byte($num_of_words))[0]; # Numero total de bytes my $num_bytes = $num_of_words*2; # Datos - Palabras que van a escribirse my @data = @Func_arguments; # Arreglo de salida - premensaje my @Func_message = ($slave,$code,$mem_address_HI,$mem_address_LO,$num_of_words_HI,$num_of_words_LO,$num_bytes,@data); # Numero de bytes que se veran a la hora de leer del puerto $num_char_write = 9+$num_bytes; $num_char_read = 8; # Envia arreglo de salida a funcion de envio @Func_return = &send_message(@Func_message); return @Func_return; } # ------------------------------------------------------------------------------ # Funcion que toma un arreglo de un pre-mensaje y le da formato para ser enviado # (agrega codigo CRC16 y convierte mensaje en un string ASCII) # Entrada: array de n elementos # Salida: sub send_message{ # Formacion del codigo de CRC-16 my @Byte_array = @_; my $CRC_16 = crc_16(@Byte_array); #calcula el CRC arreglo por enviarse my $low_CRC_16 = (&high_low_byte($CRC_16))[0]; #parte baja CRC16 my $high_CRC_16 = (&high_low_byte($CRC_16))[1]; #parte alta CRC16

Page 197: Programa de supervisión y configuración para controladores

197

@Byte_array = (@Byte_array,$low_CRC_16,$high_CRC_16); # se apenda el CRC16 al arreglo # El mensaje esta completo! # Convertir el mensaje en string ASCII (para modulo de SerialPort): #FOR DEBUG ONLY print_on_text_box("\nSending @Byte_array\n"); my $Msg_string = ""; foreach (@Byte_array){ $a = (unpack("H*", pack("N", $_))); #convierte de decimal a hex (numero) $a =~ s/^0.....//; #quita ceros innecesarios a la izquierda $a = pack("H*",$a); #convierte a simbolo hex $Msg_string = $Msg_string.$a; } ################################################################################# if ($Connect_flag == 1){ # COMANDO PARA ENVIAR!!! $ob->write($Msg_string); $remote_timer -> cancel if (defined $remote_timer); $ob -> lookclear; #if ($slave_address != 0){ # COMANDO PARA LEER #-------------------------------------------------------------- $ob ->read_interval(100); $ob ->read_const_time(100); my $gotit = ""; until ("" ne $gotit) { if ($slave_address != 0){ $gotit = $ob -> read($num_char_write+$num_char_read); # poll until data ready } else{ $gotit = $ob -> read($num_char_write); # poll until data ready } die "\nAborted without match\n" unless (defined $gotit); last if ($gotit); } $gotit = unpack("H*",$gotit); # Revisar tamaño de respuesta my $answer_length = (length ($gotit))/2; # FOR DEBUG ************* print_on_text_box("\n$gotit\n"); $Msg_string = $gotit; if ($answer_length != ($num_char_write+$num_char_read)){ print_on_text_box("\nEsperando respuesta..."); my $timeout; if ($slave_address == 0){ $timeout = Win32::GetTickCount() + (100); } else { $timeout = Win32::GetTickCount() + (600); } my $gotit_2; while (Win32::GetTickCount() < $timeout){ if ($slave_address != 0){ $gotit_2 = $ob -> read($num_char_read);

Page 198: Programa de supervisión y configuración para controladores

198

$gotit_2 = unpack("H*",$gotit_2); # FOR DEBUG ************* print_on_text_box("\n$gotit_2\n"); last if ($gotit_2 ne ""); } } if ($gotit_2 eq "" and ($slave_address != 0)){ print_on_text_box("\n\nERROR DE COMUNICACION CON EL CONTROLADOR!! (Direccion: $slave_address)\n"); print_on_text_box("Instruccion enviada: $gotit\n"); &initialize_widgets; $ob -> read(50); $ob -> lookclear; @slave_address_array = grep $_ != $slave_address,@slave_address_array; if (@slave_address_array == ()){ $Connect_flag = 0; $graph_timer -> cancel if ($registro_flag == 1); $registro_flag = 0; close(data_FH); } return; } else{ $Msg_string = $Msg_string = $gotit.$gotit_2; print_on_text_box(" OK\n"); } } # Ir a procedimiento de procesamiento de respuesta (generico) if ($Connect_flag == 1 and ($slave_address != 0)){ @Msg_read_array = Process_Func_generic($Msg_string); } $remote_timer = $btn_connect_frm1->after(3000, [\&button_connect]); } # end of if if ((scalar @slave_address_array > 1) and ($graph_instruct != 1)){ # espera 20 milisegundos para que se estabilice el puerto my $timeout; $timeout = Win32::GetTickCount() + (20); while (Win32::GetTickCount() < $timeout){ } } $graph_instruct = 0; return @Msg_read_array; } # ------------------------------------------------------------------------------ # Funcion para separar un byte de 16 bits en byte alto y byte bajo (8 bits) # Entrada: Byte de 16 bits # Salida: 2 bytes de 8 bits en un arreglo (MSB,LSB) sub high_low_byte{ my $complete_byte = @_[0]; return($complete_byte & 0x00FF,(($complete_byte & 0xFF00) >> 8)); } # ------------------------------------------------------------------------------ # Funcion para calcular el CRC-16 Modbus

Page 199: Programa de supervisión y configuración para controladores

199

# Entrada: Mensaje a ser enviado (arreglo de n bytes de 8 bits) # Salida: 2 bytes de 8 bits con codigo CRC-16 (LSB,MSB) sub crc_16{ my @Byte_chain = @_; $CRC_reg = 0xFFFF; #inicializar registro $poly_value = 0xA001; #constante foreach (@Byte_chain){ #calcula el valor de forma 'acumulativa' crc_calc($_,$CRC_reg); } my $Final_CRC = $CRC_reg; return $Final_CRC; #devuelve valor CRC } # ------------------------------------------------------------------------------ # Algoritmo de calculo de CRC-16 propiamente # Entrada: Byte de 8 bits de mensaje # Salida: 2 bytes de 8 bits con codigo CRC-16 (acumulado) sub crc_calc { my $byte = shift(@_); $CRC_reg = shift(@_); my $n = 0; #Comenzar con el algoritmo CRC16-Modbus $CRC_reg = $CRC_reg ^ $byte; until ($n > 7){ my $LSB_CRC_reg = $CRC_reg & 0x0001; $CRC_reg = $CRC_reg >> 1; if ($LSB_CRC_reg == 0x0001){ $CRC_reg = $CRC_reg ^ $poly_value; } $n = $n + 1; } return $CRC_reg; } # ------------------------------------------------------------------------------------------ # Funcion que procesa los valores leidos despues de enviar la Funcion 1 <<Lectura de N bits>>. # Entrada: Cadena de valores hexadecimales. # Salida: Arreglo de valores relevantes. sub Process_Func_1{ my @Array_to_process = @_; # Se descompone el arreglo en cada uno de los elementos y se extraen los datos leidos my $slave_dir = shift @Array_to_process; my $func_code = shift @Array_to_process; my $byte_count = shift @Array_to_process; my $CRC = (pop @Array_to_process).(pop @Array_to_process); #FOR DEBUG ************* print_on_text_box "\n$slave_dir,$func_code,$byte_count,@Array_to_process\n";

Page 200: Programa de supervisión y configuración para controladores

200

my @Array_data_only = (); # Descompone la informacion leida de memoria (solo datos) en un arreglo donde los elementos tienen el # mismo orden que las direcciones de memoria while (scalar (@Array_to_process) != 0){ my $data_bits = sprintf("%.8b",shift @Array_to_process); my @temp_array = split//, $data_bits; push (@Array_data_only,reverse @temp_array); } return @Array_data_only; } # ------------------------------------------------------------------------------------------ # Funcion que procesa los valores leidos despues de enviar la Funcion 3 <<Lectura de N palabras>>. # Entrada: Cadena de valores hexadecimales. # Salida: Arreglo de valores relevantes. sub Process_Func_3{ my @Array_to_process = @_; # Se descompone el arreglo en cada uno de los elementos y se extraen los datos leidos my $slave_dir = shift @Array_to_process; my $func_code = shift @Array_to_process; my $byte_count = shift @Array_to_process; my $CRC = (pop @Array_to_process).(pop @Array_to_process); # FOR DEBUG ************* print_on_text_box "\n$slave_dir,$func_code,$byte_count,@Array_to_process\n"; my @Array_data_only = (); while (scalar (@Array_to_process) != 0){ my $data_hi = shift @Array_to_process; my $data_lo = shift @Array_to_process; push (@Array_data_only,hex($data_hi.$data_lo)); } return @Array_data_only; } # ------------------------------------------------------------------------------------------ # Funcion que realiza el procesamiento generico de las respuestas leidas por el puerto serial # Segun protocolo MODBUS # Entrada: Cadena de valores hexadecimales. # Salida: Arreglo de valores relevantes - solo datos (eliminando el eco del comando enviado) sub Process_Func_generic{ @Msg_read_array = (); my @Msg_read_array_for_CRC = (); $Msg_read = shift @_; $Msg_read = substr($Msg_read,$num_char_write*2,$num_char_read*2); #FOR DEBUG ************* print_on_text_box "\nAnswer only: $Msg_read\n"; while (length($Msg_read) != 0){ push(@Msg_read_array,substr($Msg_read,0,2));

Page 201: Programa de supervisión y configuración para controladores

201

push(@Msg_read_array_for_CRC,hex(substr($Msg_read,0,2))); substr($Msg_read,0,2) = "" } # Revisar si la respuesta viene de esclavo correcto print_on_text_box "\nError: Respuesta de Esclavo inesperado. Obtenida: $Msg_read_array[0] Esperada:$slave_address \n" if ($Msg_read_array[0] != $slave_address); # Revisar si hay error de marco (Error en CRC)- - - - - - - - # 1) Tomar valores de CRC-16 leidos my $CRC_16_high_received = pop (@Msg_read_array_for_CRC); my $CRC_16_low_received = pop (@Msg_read_array_for_CRC); # 2) Recalcular CRC-16 con el resto del arreglo para ver si los valores son los correctos my $CRC_16 = crc_16(@Msg_read_array_for_CRC); my $low_CRC_16 = (&high_low_byte($CRC_16))[0]; #parte baja CRC16 my $high_CRC_16 = (&high_low_byte($CRC_16))[1]; #parte alta CRC16 # 3) Comparar valores recibidos con nuevo calculo print_on_text_box "\nError de Marco\n" if (($CRC_16_low_received != $low_CRC_16) or ($CRC_16_high_received != $high_CRC_16)); # - - - Fin revision CRC-16 return @Msg_read_array; }

Page 202: Programa de supervisión y configuración para controladores

202

APÉNDICE G: Manual de usuario del programa

Manual de Usuario

C O N T R O L A D O R F O X B O R O ® 7 1 6 C

Y P R O G R A M A D E S U P E R V I S I Ó N Y C O N F I G U R A C I Ó N “ F O X V I E W ”

Roberto Herrera Matamoros - A02057

I Semestre 2006

Page 203: Programa de supervisión y configuración para controladores

Tabla de Contenidos Introducción 204 El controlador Foxboro® 716C 205 1.1 Características Generales 205 1.2 Características de Control 206 1.3 Descripción de la caja de conexiones207 1.4 Carátula frontal del controlador 208 1.5 Selección de punto de operación 209 1.6 Alimentación y encendido / apagado 209 1.7 Conexión de entradas / salidas 210 1.8 Modos de configuración / operación 211 1.8.1 Modo de operación 211 1.8.2 Modo de configuración 213 1.9 Conexión de red para operación remota213 Operación remota del controlador

utilizando el programa FoxView 215 2.1 Requisitos para Instalación 215 2.2 Instrucciones de Instalación 216 2.3 Operación del programa 216 2.3.1 Control de conexión/desconexión 217 2.3.2 Tablero de operación y sintonización

del controlador 217 2.3.3 Configuración de gráfico y registro220 2.3.4 Gráfico de tendencias 221 2.3.5 Ventana de mensajes 222 2.4 Manejo de errores 223 Ejemplo de utilización 225 3.1 Conexión de dispositivos 225 3.2 Inicio de Programa 225 3.3 Estableciendo conexión 225 3.4 Sintonización del controlador 226

3.5 Registro de datos 226 3.6 Cambio de valores en el controlador 226 3.7 Finalización 226

Page 204: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

Introducción l objetivo principal del presente manual es el de familiarizar a los estudiantes del

Laboratorio de Control Automático con el funcionamiento del controlador PID

digital Foxboro® 716C, sus características principales de operación y opciones de

configuración para su uso en las prácticas de laboratorio, y del programa FoxView.

Primeramente se hace una descripción general del controlador y de los elementos que

componen su caja de interconexiones.

Posteriormente se explican los pasos necesarios para conectar el controlador con una PC y de

esta forma utilizar el programa FoxView para realizar la configuración, sintonización y

supervisión remota del controlador PID.

Este programa cuenta con una interfaz gráfica que le permite al usuario acceder fácilmente a

los parámetros del dispositivo, así como visualizar de forma gráfica las principales variables de

control del proceso, tanto para uno o varios controladores conectados a la vez.

En el manual se detallan las instrucciones de instalación del programa, la descripción de los

elementos de la interfaz gráfica, los procesos generales más importantes (sintonización,

graficación, etc.), la explicación de los mensajes de error que puedan presentarse al usuario,

entre otros.

Finalmente se incluye un ejemplo de su uso donde se observa el procedimiento necesario

para obtener la curva de reacción de un proceso utilizando el programa FoxView y el

controlador Foxboro® 716C.

En los anexos se incluye también información pertinente que puede ser revisada por el

usuario para una mayor familiarización con el equipo.

E

204

Page 205: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

Capítulo

1 El controlador Foxboro® 716C Descripción de sus características principales y opciones de configuración

l controlador Foxboro® 716C es un controlador digital que, a pesar de ser compacto, ofrece gran variedad de opciones de configuración y operación, entre ellas la comunicación con equipos de adquisición de datos.

1.1 Características Generales

E Entre los rasgos más distintivos a primera vista, se observan:

Indicador con pantalla doble de LED para mostrar el valor deseado, la variable controlada y los valores de

configuración.

Teclado frontal para configuración y operación (local).

Indicadores luminosos para indicar número de salidas utilizadas, número de punto de operación, operación automática/manual, habilitación de manejo remoto, habilitación de algoritmo de auto ajuste, unidades de temperatura, entre otros.

Sin embargo este controlador presenta también otras características importantes, como son:

Interfaz de comunicación serial: permite la conexión con una PC para una configuración, sintonización y supervisión remota.

Entrada “universal” de señales lineales, o utilización de termopar o RTD.

Previsión para el uso de alarmas de proceso, así como el control de salidas de relé.

Page 206: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

1.2 Características de Control El controlador Foxboro® 716C presenta un algoritmo de control PID, el cual se

puede sintonizar manualmente o por medio del algoritmo propietario de auto-ajuste denominado “SMART”, que monitorea continuamente el proceso y automáticamente ajusta los parámetros del PID según sea necesario. Sin embargo, los mecanismos de auto-ajuste no son siempre muy efectivos, por lo que resulta más recomendable sintonizar manualmente el algoritmo PID.

Algunas de las características y opciones de control que presenta el dispositivo son:

Tipo de control configurable entre PID, PI, P, auto-ajuste (SMART) o control deshabilitado (trabajando como indicador únicamente).

Modo de operación manual o automático.

Banda proporcional: configurable de 1% a 200% del rango de entrada

Tiempo derivativo: configurable de 1 segundo a 10 minutos en intervalos de 1 segundo, o apagado.

Tiempo integral: configurable de 1 segundo a 20 minutos, en intervalos de 1 segundo, o apagado.

Pre-carga integral: configurable para una salida de control entre 0 a 100% del rango de salida.

Histéresis (para encendido o apagado de acción de control): configurable entre 0.1% a 10.0% del rango de entrada.

Opción de configurar dos puntos de operación distintos (valor deseado): principal (SP) y auxiliar (SP2), transferibles por medio de un interruptor externo.

Salida de control (principal o secundarias) inversa o directa.

Filtro digital para el valor mostrado o retransmitido (constante de tiempo de 4 s para RTD o termopar, 2 s para entradas lineales).

Tiempo de muestreo: 250 ms (entradas lineales) o 500 ms (RTD o termopar).

206

Page 207: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

1.3 Descripción de la caja de conexiones El controlador Foxboro® 716C se encuentra montado en una caja de interconexiones que permite acceder fácilmente sus conexiones de entradas y salidas. Las siguientes figuras muestran diagramas esquemáticos del panel frontal y trasero de la caja de conexiones del controlador:

IN + IN -

OUT + OUT -

SP2

SP

2

FIGURA 1.1 Vista frontal de la caja de conexiones del Foxboro®716C

3

4

5

1

6 7

FIGURA 1.2 Vista trasera de la caja de conexiones del Foxboro®716C

Las partes son:

1) Carátula frontal del Controlador Foxboro® 716C

2) Interruptor de selección de punto de operación principal (SP) o secundario (SP2)

3) Terminales de conexión para señales de entrada y salida del controlador.

207

Page 208: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

4) Interruptor de encendido/apagado.

5) Entrada del cable de alimentación AC.

6) Interruptor de selección de modo de configuración / operación.

7) Terminales de conexión para red serial (RS-485).

1.4 Carátula frontal del controlador En la parte frontal (1) se encuentra la pantalla con los valores de la señal de entrada del controlador (número superior), salida del controlador (número inferior), los indicadores luminosos y el teclado para operación y configuración local (sin conexión a PC).

FIGURA 1.3 Panel frontal del controlador Foxboro®716C

La descripción de los indicadores y función de los botones del teclado es la siguiente:

Botón Descripción Indicador Descripción

Disminuye el valor del parámetro seleccionado REM El instrumendo está siendo

controlado de forma remota.

Incrementa el valor del parámetro seleccionado °C / °F

Muestra las unidades de medición cuando se usa para control de procesos térmicos.

Muestra en secuencia todos los parámetros de configuración guardando el último valor ingresado.

OUT1 La salida principal de control está habilitada.

Vuelve al parámetro de configuración anterior sin guardar el valor ingresado. Si se presiona por un segundo, realiza el cambio entre el modo automático/manual.

OUT2/OUT3 Función de salidas auxiliares (alarmas, salida secundaria). No están siendo utilizadas actualmente.

Habilita / deshabilita la salida de control (cinco segundos) SP2

Parpadea lentamente cuado se utiliza el punto de operación secundario (SP2)

El controlador funciona en modo manual. MAN

208

Page 209: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

Nota

Cuando se trabaja con el controlador de forma remota (controlado desde la PC), el teclado permite navegar entre los valores de los parámetros de operación / configuración, pero únicamente para su visualización. Estos valores no podrán ser modificador con el teclado local.

1.5 Selección de punto de operación El controlador permite la configuración de dos valores de operación (valor deseado) distintos, ya sea por medio del teclado (modo local) o desde una PC (modo remoto).

Modo local: El punto de operación principal (SP) se puede modificar estando en modo de operación manteniendo presionada alguna de las teclas / durante dos segundos y luego aumentar o disminuir la cantidad hasta alcanzar el valor desado. Una vez ajustado el valor se activa después de dos segundos más. Para cambiar el punto de operación secundario (SP2), se presiona la tecla FUNC varias veces hasta que en la parte superior de la pantalla aparezca la palabra “SP2”. Otra vez se utilizan las teclas / para ajustar el valor, y este se guarda al presionar FUNC nuevamente.

Modo remoto: Ver capítulo 2 (operación remota).

Para alternar entre los valores principal y secundario (SP/SP2) se utiliza el interruptor localizado en la parte frontal de la caja de conexión del controlador (2).

1.6 Alimentación y encendido / apagado El controlador funciona con una alimentación nominal de 100 a 240 Vac. El cable de alimentación se conecta en la parte posterior de la caja de conexiones, en la terminal (5).

Después de conectar el cable, el controlador se apaga o se enciende utilizando el interruptor (I/O) (4) localizado también en

la parte trasera de la caja.

Advertencia

El controlador debe encenderse únicamente después de que se hayan realizado todas las demás conexiones (red, entradas y salidas, etc.)

209

Page 210: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

1.7 Conexión de entradas / salidas La conexión de las señales de entrada (valor realimentado) y salida del controlador se realiza utilizando las terminales (3) localizadas en la parte frontal de la caja de conexiones del controlador. Para cada señal se tiene dos terminales (positiva y negativa).

La Figura 1.4 muestra un ejemplo de cómo se conectarían las señales de entrada y salida del controlador para trabajar con el proceso de caudal de una planta Lab-Volt® 3522.

FIGURA 1.4 Ejemplo de conexión de las entradas y salidas del controlador

Nota

El controlador puede configurarse para trabajar con señales de voltaje (0 a 5 V / 1 a 5 V / 0 a 10 V / 2 a 10 V / 0 a 60 mV / 12 a 60 mV) o de corriente (4 a 20 mA / 0 a 20 mA). También puede utilizar entradas de termopar o RTD. Por defecto, la entrada está configurada como una señal de corriente de 4 a 20 mA. Para modificar este valor debe entrar al modo de configuración del dispositivo (ver sección 1.8 “Modos de configuración / operación”) y además debe cambiar la posición de unos “puentes” que se encuentran en la parte interna del controlador (ver manual MI018-575).

La salida del controlador es únicamente de corriente (0 a 20 mA / 4 a 20 mA).

210

Page 211: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

1.8 Modos de configuración / operación Para alternar entre el modo de configuración y el de operación, el controlador Foxboro® 716C posee un interruptor (6) en la parte posterior de la caja de conexiones tal y como lo muestra la Figura 1.2. Si la pantalla indica “Conf”, se ha seleccionado el modo de configuración, de lo contrario estará en modo de operación. Según el modo en que se encuentre, las funciones que son accedidas por

medio del teclado frontal varían, así como la información desplegada por la pantalla.

Advertencia

Para evitar daños en el controlador y errores durante la ejecución del programa de supervisión remota, el interruptor de modo de configuración y operación debe únicamente accionarse cuando el dispositivo se encuentra apagado. Además, para poder utilizar el programa de configuración remota, el controlador debe estar en modo de operación.

1.8.1 Modo de operación

Este es el modo en el que opera normalmente el controlador. Si no se ha presionado ninguna tecla, la pantalla muestra el valor de la señal de entrada del controlador (número superior), y el valor de la salida del controlador (número inferior).

Durante el funcionamiento puede cambiarse la operación manual a automática o viceversa, utilizando la tecla MAN (ver sección 1.4), alternar entre el punto de operación principal y secundario (ver sección 1.5), cambiar el valor del punto de operación (ver sección 1.5) y modificar los valores de los parámetros de operación y las variables de control.

Para realizar esto último, se presiona la tecla FUNC para navegar entre los distintos parámetros que pueden cambiarse. En la pantalla se verá el código del parámetro en la parte inferior, y el valor actual en la parte superior. Los valores pueden modificarse usando las teclas / y se guardan al presionar FUNC nuevamente. Si se presiona MAN se regresa al parámetro anterior, pero no se guarda el valor que fue modificado.

Nota

Si durante 10 segundos después de haber presionado la tecla FUNC o haber modificado algún parámetro no se realiza acción alguna, el controlador regresará a la pantalla normal, donde despliega los valores de entrada y salida únicamente.

211

Page 212: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

La siguiente tabla muestra el significado de cada uno de los parámetros de operación que pueden modificarse desde el modo de operación (algunos pueden no aparecer, dependiendo de la configuración del controlador).

Código Descripción de parámetro Opciones Descripción de opción Dependencia SP Valor deseado (punto operación) [rL,rH] En unidades de ingeniería rL,rH

ON SMART Habilitado Snrt Estado de auto ajuste SMART

OFF SMART Deshabilitado P30 (config)

ON Restablecer estado de alarma n.RSt Reset manual de alarmas

OFF No cambiar estado Alarmas

configuradas

ON El instrumento está bloqueado nnn Clave de bloqueo de protección

OFF El instrumento no está bloqueado

P17

SP2 Valor deseado auxiliar [rL,rH] En unidades de ingeniería rL,rH AL1 Punto de operación de Alarma 1 Según P9 En unidades de ingeniería P9

HSA1 Histéresis de Alarma 1 % de P4-P3 Porcentaje de rango de escala P4,P3 AL2 Punto de operación de Alarma 2 Según P14 En unidades de ingeniería P14

HSA2 Histéresis de Alarma 2 Según P15 Porcentaje de rango de escala P15 Pb Valor de Banda Proporcional 1% a 200% Porcentaje de rango P4-P3 Control PI,PID

hYS Histéresis para acción de control de APAGADO/ENCENDIDO % de P4-P3 Porcentaje de rango de escala -

ti Tiempo integral 00.01 a 20.00 Unidades mm.ss Control PI,PID

td Tiempo derivativo 00.01 a 10.00 Unidades mm.ss Control PID

0 a 100% Para una salida de control 0 a -100% Enfriamiento IP Pre carga integral 0 a 100% Calentamiento

Salidas utilizadas

CY2* Tiempo de ciclo de salida 2 Según P22 En segundos P22 CY3* Tiempo de ciclo de salida 3 Según P22 En segundos P22 rC* Ganancia de enfriamiento relativa N/A Ganancia salida 2 P9

OLAP Banda muerta / traslape entre

salidas de calentamiento / enfriamiento

Según Pb % de la banda proporcional Pb

rL Límite inferior del valor deseado -100% a 100% En unidades de ingeniería Según P3

rH Límite superior del valor deseado -100% a 100% En unidades de ingeniería Según P4

Grd1 Rampa aplicada a un cambio positivo en el valor deseado N/A En unidades por minuto -

Grd2 Rampa aplicada a un cambio negativo en el valor deseado N/A En unidades por minuto -

OLH Limite superior de la salida N/A En % de la salida - tOL Duración del límite de la salida N/A En minutos -

0.1% a 25% % de la salida por segundo rnP Razón de levantamiento máxima

de la salida de control. InF (>25%)

- No hay rampa aplicada

Nota

Estos valores no pueden modificarse si se está trabajando de forma remota.

212

Page 213: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

1.8.2 Modo de configuración

En este modo se tiene acceso a los valores de configuración del controlador Foxboro® 716C. La forma de navegar entre los parámetros y editarlos es idéntica al del modo de operación (ver sección 1.8.1).

El modo de configuración también tiene opciones de configuración avanzadas. Para ello se selecciona el código 262 con las teclas / y se presiona el botón FUNC.

En el Anexo A se presenta la lista completa y descripción de los parámetros de configuración (básica y avanzada).

Advertencia

Estos parámetros no deben ser modificados a menos que sea absolutamente necesario y debe hacerse bajo supervisión. Una configuración incorrecta de los parámetros (especialmente los marcados con asterisco en el Anexo A) puede resultar en una operación incorrecta del controlador o incluso puede causar que el programa de configuración y supervisión remota no funcione del todo. En las tablas A.1 y A.2 se indica en negrita cuáles son los parámetros recomendados por omisión.

1.9 Conexión de red para operación remota Además de las terminales ya mencionadas, el controlador posee otras (7) para poder comunicarse con una PC, y ser configurado y controlado remotamente desde esta por medio del puerto serial (RS 485).

FIGURA 1.5 Conexión de uno o varios controladores con una PC para la operación remota.

213

Page 214: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

La Figura 1.5 muestra la forma en que se conecta una PC al controlador. Para ello debe utilizarse un adaptador de puerto serial de 9 a 25 pines conectado a un convertidor RS232 a RS485 para poder convertir las señales de la computadora en señales que serán interpretadas por el controlador. En esta red, la computadora actuará como “maestro” y los controladores serán los “esclavos”:

El convertidor 232/485 tiene una salida RJ12 (6 pines) en donde se conecta el cable que se comunica con la caja de conexiones del controlador. La caja a su vez tiene dos terminales de red RJ11. Esto es para que en una entre el cable que proviene del convertidor, y la otra es utilizada en caso de que se conecten dos esclavos a la vez, ya que esta red utiliza una configuración de esclavos en serie (daisy chain).

La configuración y supervisión remota se realiza desde la PC utilizando el programa FoxView el cual será descrito en el capítulo 2 de este manual.

Notas

En el cable de conexión que va desde el convertidor RS-232/485 al primer controlador, el extremo del cable que va conectado al convertidor está marcado con color negro.

El cable para conectar de un controlador a otro (para la configuración daisy chain) es más corto que el cable mencionado anteriormente.

214

Page 215: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

Capítulo

2 Operación remota del controlador utilizando el programa FoxView Este capítulo explica cómo utilizar el programa de configuración y supervisión remota para dos o más controladores Foxboro® 716C conectados en red.

l programa FoxView es un programa escrito en Perl que tiene una interfaz gráfica que permite al usuario configurar, sintonizar y monitorear a uno o varios controladores Foxboro® 716C conectados en una red RS-485.

2.1 Requisitos para Instalación

E Los siguientes son los requisitos mínimos que debe tener una PC para poder correr el programa FoxView:

Sistema operativo Windows® XP o Windows 2000.

128MB de memoria RAM

Puerto serial RS-232 (9 o 25 pines)

100 MB de memoria libre en el disco duro*

Internet Explorer 5.5 o superior**

El programa también requiere que se tenga instalado Perl 5.8 (o superior) en la computadora donde va a utilizarse. En caso de que no se encuentre instalado, puede obtenerse de Internet (http://www.activestate.com/Products/ActivePerl/) o instalarse desde el disco de instalación del programa FoxView (D:\Instaladores\Perl).

* En caso de que sea necesario instalar el Activestate Perl

Page 216: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

2.2 Instrucciones de Instalación Ure

P

na vez que se haya terminado de instalar el ActiveState Perl debe ealizarse una instalación básica necesaria para que el programa se jecute adecuadamente.

ara ello, realice los siguientes pasos:

Asegúrese que no haya ningún otro programa abierto en ese momento

En el disco de instalación del programa abra la carpeta que se llama “Instaladores” y haga clic en el archivo denominado “Install.bat”.

Siga cualquier instrucción que le solicita el programa de instalación. Cuando la instalación haya terminado verá la leyenda “FIN DE LA INSTALACIÓN”. Cierre la ventana de comandos.

Para ejecutar el programa ábralo desde Inicio>Programas>Foxboro>FoxView.pl.

2.3 Operación del programa Al abrir el programa se observará la interfaz tal y como aparece en la Figura 2.1

1

2

3

4

5

216

Page 217: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

FIGURA 2.1 Interfaz gráfica del usuario del programa FoxView.

Los elementos que la componen son:

1. Control de conexión/desconexión

2. Tablero de operación y sintonización del controlador

3. Configuración de gráfico y registro

4. Gráfico de tendencias

5. Ventana de mensajes

2.3.1 Control de conexión/desconexión

Sus elementos son: casilla de selección de dirección del esclavo, botón de conexión y botón de desconexión.

Los esclavos se van conectando de uno en uno, seleccionando la dirección respectiva en la casilla de direcciones y enviando el comando de conectar. En caso de que la conexión sea exitosa, comenzará a parpadear la luz de “REM” en el panel frontal del

controlador (ver sección 1.4).

La casilla de selección también sirve para indicar a cuál esclavo se le enviarán los comandos a través del tablero de operación y sintonización (2). Si se selecciona la dirección de esclavo cero, entonces los comandos se enviarán en modo “broadcast”, es

decir, a todos los esclavos a la vez.

En el Modo “Broadcast” se envían comandos a todos los esclavos a la vez.

La desconexión de los esclavos se puede ir haciendo igualmente de uno a uno o todos a la vez, eligiendo la dirección de esclavo cero.

Notas

Si se envía el comando de “conectar” a un esclavo que no está físicamente conectado a la red, el programa desplegará un error en la ventaja de mensajes (5).

El botón de desconexión no se habilitará a menos de que el esclavo seleccionado se encuentre actualmente conectado.

2.3.2 Tablero de operación y sintonización del controlador

Este módulo es el que cuenta con mayor cantidad de elementos: interruptor de selección de modo automático/manual, casillas de parámetros de control, botón de

217

Page 218: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

configuración, botón de refrescamiento de parámetros de control, y botón de envío de parámetros.

FIGURA 2.2 Tablero de operación y sintonización del controlador

Después de establecerse una conexión exitosa con algún esclavo, todos los elementos del tablero se encuentran inicialmente deshabilitados, excepto el botón de “Refrescar”. Al presionar este botón se habilitan el resto de elementos del panel, se obtienen el

modo y los valores actuales del controlador y se colocan en las casillas correspondientes, además de ser desplegados en la ventana de mensajes (5).

En modo automático la casilla del valor de salida del controlador (“u(t)”) queda deshabilitada. El interruptor de selección de modo permite cambiar entre

modo de operación automático o manual.

Los valores de las casillas de parámetros de control pueden editarse utilizando las flechas al lado del cuadro, o editando directamente el texto que está en la casilla. En caso de ingresarse algún carácter no numérico se desplegará un mensaje de error (5).

Los campos correspondientes al tiempo integral y al tiempo derivativo contienen dos casillas cada uno: la primera es para el valor en minutos y la segunda para segundos.

Luego de ingresar nuevos valores en las casillas y presionar el botón de envío, el programa primero verificará que todos los valores de las casillas estén dentro del rango correcto. De lo contrario imprimirá un mensaje de error y sustituirá los valores incorrectos con el valor máximo o mínimo de la escala. Si los valores son correctos y el envío se concluye exitosamente, las variables se confirman en la ventana de mensajes.

Advertencia

Una vez que se ingresen nuevos valores en las casillas, estos no se actualizarán en el controlador sino hasta que se presione el botón de envío

218

Page 219: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

Una excepción de lo anterior es el caso de la casilla de u(t) en modo manual, ya que el valor de la salida del controlador sí se cambia directamente al editar el valor de la interfaz.

Como se dijo en la sección previa, el tablero del controlador envía comandos al esclavo cuya dirección aparezca en ese momento en la casilla de direcciones (1). En caso de que se cambie la dirección de esclavo nuevamente el tablero se deshabilita hasta que se haga un nuevo refrescamiento de valores. Si se elige la dirección cero (broadcast) la opción de refrescar se deshabilita, ya que en este modo ningún esclavo puede contestar, pero sí se pueden enviar valores a todos los esclavos al mismo tiempo.

El botón de configuración abre una nueva ventana (Figura 2.3) para modificar parámetros adicionales en el controlador cuya dirección aparece en ese momento en la casilla de direcciones (1), o en todos, si está en modo broadcast. Estos parámetros incluyen el valor de precarga integral y el valor deseado secundario (SP2), el tipo de control (PI ó PID), el tipo de acción de la salida (directa o inversa) y la habilitación del filtro en la variable realimentada.

FIGURA 2.3 Ventana del diálogo de configuración del controlador

Notas

Los dos primeros parámetros pueden leerse o escribirse, mientras que los últimos son únicamente de lectura, ya que el dispositivo no permite configurarlos de forma remota.

219

Page 220: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

Cuando se envían comandos para un solo controlador, los botones de envío se habilitan hasta después de leer el valor actual, mientras que en modo broadcast los botones de lectura no se encuentran deshabilitados, pero no así los de envío.

2.3.3 Configuración de gráfico y registro

Sus elementos son: botón de activación de registro, botón de desactivación de registro, botón de borrado de gráfico y archivo, campo de ruta de archivo de registro, botón de elección de nombre de archivo y botón para elección de ruta del mismo.

Notas

La ruta de archivo predeterminada es “c:\temp\graph” y el nombre de archivo predeterminado es “Foxboro_data.csv”.

Si el archivo anterior ya existe los nuevos datos se anexarán a los datos que se encuentren en el archivo, a menos que se presione el botón de [Borrar]

Inicialmente, los botones de [Registro], [Detener] y [Borrar] se encuentran desactivados, a menos que haya algún esclavo ya conectado.

Con los botones de ruta y nombre de archivo, [Ruta…] y [Archivo…] el usuario puede elegir la ubicación y el nombre del archivo de registro que desee.

Ya una vez qpuede iniciarseel botón de [Rcorrespondien

Una vez que

ue se ha logrado la comunicación con un esclavo, la graficación y el registro de los valores presionando egistro], con lo cual aparecerá el gráfico en la ventana te (4).

se tomen los valores necesarios, se detiene la graficación y el registro con el botón de [Detener]. Si se quieren ver los valores resultantes, debe abrirse el archivo que se encuentra en la ruta que se haya seleccionado anteriormente.

En caso de que se quieran tomar nuevos valores, si se quiere que estén en un archivo aparte debe seleccionarse un nuevo nombre o ruta de archivo y después presionar nuevamente el botón de [Registro]. Si se quiere que los nuevos valores se anexen al mismo archivo solamente se vuelve a presionar el botón de [Registro].

Advertencia

220

Page 221: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

Si se presiona el botón de [Borrar] se limpiará la ventana de gráfico, pero también se borrarán todos los datos anteriores en el archivo actual.

El programa dará un error si se intentan guardar datos en un archivo que se encuentre abierto desde otra aplicación.

2.3.4 Gráfico de tendencias

En esta ventana valor realimentado(r(t)), tanto para el

El esclavo “prin“secundario” el q

el gráfico de las variables principales de control: (y(t)), salida del controlador (u(t)) y valor deseado esclavo “principal”, como para un “secundario”.

cipal” será el que se conecte primero, y el ue lo siga. Las variables de los dos controladores

pueden distinguirse entre sí por su color, como muestra la Tabla 2.1:

TABLA 2.1 Código de colores utilizado en los gráficos de control del programa

Parámetro de control Principal Secundario

y(t) Rojo Café

u(t) Amarillo Blanco

r(t) Azul Naranja

Notas

Si se tienen conectados dos esclavos y se desconecta el “principal” durante el registro y graficación, entonces el “secundario” pasará a tomar el lugar de “principal”, tanto en el gráfico, como en el archivo de registro.

El gráfico despliega a la vez hasta 200 muestras tomadas, luego de eso se comenzará a desplazar hacia la izquierda, perdiendo de vista los valores anteriores.

221

Page 222: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

2.3.5 Ventana de mensajes

Tal y como se ha labor informativaoperación se realizque son leídos oocurren errores debarra de desplaza

mencionado, esta ventana cumple únicamente una , desplegando mensajes al usuario cuando una a satisfactoriamente, dando los valores de control escritos al controlador, o advirtiendo cuando rango, o de comunicación. La ventana tiene una miento vertical, por lo que puede observarse el

historial de todos los mensajes que se han desplegado desde el momento en que se inició la sesión del programa.

222

Page 223: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

2.4 Manejo de errores A continuación se presenta una lista de errores y fallas que pueden presentarse durante la ejecución del programa FoxView, así como las posibles causas y las soluciones sugeridas para corregirlo. En caso de que el error no se corrija, comuníquelo a su profesor o asistente de laboratorio.

TABLA 2.2 Posibles errores que pueden presentarse al usuario

Problema Causa Solución

No se encuentra instalado el ActiveState Perl o hubo un error de instalación del programa. El programa no puede iniciarse.

El código del programa ha sido modificado incorrectamente

Repita la instalación descrita en las secciones 2.1 y 2.2

La dirección de esclavo elegida no pertenece a un controlador que esté conectado en la red.

El cable de comunicación se ha desconectado.

El controlador se encuentra apagado o está en modo de configuración (COnf).

Revise que el controlador esté conectado a la red, encendido y en modo de operación. Se presenta el siguiente error:

ERROR DE COMUNICACION CON EL CONTROLADOR!! (Direccion: XX)

El código del programa ha sido modificado incorrectamente

Repita la instalación descrita en las secciones 2.1 y 2.2

No se han refrescado los valores actuales del controlador.

Enviar comando de “Refrescar”

El panel del controlador en la interfaz gráfica se encuentra deshabilitado. La dirección que aparece en la casilla de

direcciones no pertenece a la de algún controlador conectado en la red.

Conectar el esclavo o seleccionar una dirección válida.

Si el controlador se encuentra en modo Automático este valor no puede ser cambiado.

Cambie el modo a manual para cambiar u(t).

La casilla del parámetro de salida del controlador (u(t)) se encuentra deshabilitada.

Todos los controladores conectados actúan al mismo tiempo.

El botón de “refrescar” no se encuentra habilitado, aunque el controlador está conectado.

La comunicación está en modo Broadcast (la casilla de direcciones indica un cero)

Seleccionar sólo la dirección del controlador que se desea operar.

223

Page 224: Programa de supervisión y configuración para controladores

M A N U A L D E U S U A R I O C O N T R O L A D O R F O X B O R O ® 7 1 6 C Y P R O G R A M A F O X V I E W

Si se presiona el botón de BORRAR, no sólo se borra el gráfico de la pantalla, sino también el archivo de datos.

Cambie el nombre del archivo de datos antes de presionar el botón de borrar.

El archivo de datos se encuentra en blanco.

Ya no pueden enviarse comandos a un controlador previamente conectado

Si hay un error de comunicación, el programa desconecta automáticamente el controlador que da error.

Reconecte el controlador deseado.

Al iniciar la graficación, se presenta el siguiente mensaje:

“Error!!: El archivo se encuentra abierto en otra aplicación. Debe cerrarlo antes de poder iniciar el registro”

El archivo de registro (.csv) se encuentra abierto desde otra aplicación. (Excel, por ejemplo).

Cierre el archivo en la aplicación respectiva.

Al ingresar un valor en el panel del controlador, se presenta el mensaje:

“Error: solo puede introducir números”

En las casillas únicamente se puede ingresar números o puntos decimales. Si por error se ingresa otro carácter el programa dará el mensaje de error.

Corrija el valor ingresado.

Al ingresar y dar comando de envío, se presenta el siguiente mensaje:

“Error: El valor esta fuera del rango”

El valor ingresado está fuera del rango permitido para el parámetro. Corrija el valor ingresado.

Después de ingresar un valor en el panel del controlador y dar comando de envío, se presenta el mensaje:

“Error: Valor de (parámetro) no valido”

El valor ingresado está fuera del rango permitido para el parámetro. Corrija el valor ingresado.

Al enviar algún comando se recibe:

Error: Respuesta de Esclavo inesperado. Obtenida: xx Esperada: yy

Error de comunicación. Repita el comando enviado.

Al enviar algún comando se recibe: Error de comunicación. (Código de redundancia cíclica incorrecto) Repita el comando enviado.

Error de Marco

224

Page 225: Programa de supervisión y configuración para controladores

Capítulo

3 Ejemplo de utilización Este capítulo presenta un ejemplo paso a paso donde se utiliza el programa para obtener la curva de reacción de un proceso térmico.

3.1 Conexión de dispositivos Interconectar las salidas y entradas de la caja de conexiones del controlador con las de la

planta LabVolt® 3522 similar a como se muestra en la Figura 1.4. (Pero para el proceso térmico)

Conectar un controlador con la PC tal como se muestra en la Figura 1.5.

Conecte el cable de alimentación AC a la caja de conexiones y encienda el controlador. Asegúrse que el controlador esté en modo de operación.

Encienda la planta también. Asegúrese que la compuerta de perturbaciones esté completamente cerrada.

3.2 Inicio de Programa Abra el programa FoxView (ver sección 2.2)

Cambie el nombre del archivo de registro por “Curva_reaccion_temp”

3.3 Estableciendo conexión Elija la dirección correspondiente al esclavo (en este caso se utilizará el 1) en la casilla de

direcciones y presione el botón de “Conectar”.

225

Page 226: Programa de supervisión y configuración para controladores

Si la conexión fue satisfactoria, aparecerá el mensaje “Poniendo en modo remoto a esclavo 1” y comienza a parpadear la luz de REM en el panel frontal del controlador.

3.4 Sintonización del controlador 1. Seleccione la dirección 1 en la casilla de direcciones.

2. Presione el botón de “Refrescar” para obtener los valores actuales de los parámetros y habilitar el tablero de configuración.

3. Mover el interruptor de modo a “Manual”

4. Cambiar el valor de u(t) a 0 y presionar el botón de “Enviar”. Asegúrse de que el envío de valores es satisfactorio.

3.5 Registro de datos Se inicia el registro de los datos presionando el botón de “Registro”.

Si el registro inicia correctamente, comenzarán a aparecer valores en la ventana del gráfico de tendencias.

3.6 Cambio de valores en el controlador Después de 10 s de iniciar el registro, cambie la salida del controlador a 50%. (Antes puede

ser que deba seleccionar nuevamente la dirección 1 y refrescar los valores).

Espere que el proceso vuelva a estabilizarse y espere unos 10 s después de ello.

3.7 Finalización Presione el botón de “Detener” para detener el registro de valores.

Seleccione nuevamente la dirección 1 y envié el comando de “Desconectar”

226

Page 227: Programa de supervisión y configuración para controladores

Busque el archivo “Curva_reaccion_temp.csv” en la ruta que fue seleccionada inicialmente y ábralo con un programa de hojas electrónicas para ver los datos obtenidos y graficar la curva de reacción.

Imprima la curva obtenida (similar a la de la Figura 2.4) y utilice algún método de identificación manual de procesos para obtener el modelo del proceso.

0.00E+00

1.00E+01

2.00E+01

3.00E+01

4.00E+01

5.00E+01

6.00E+01

7.00E+01

8.00E+01

9.00E+01

0.00 50.00 100.00 150.00 200.00 250.00

y(t)

,u(t

)

y(t)

u(t)

FIGURA 2.4 Ejemplo de curva de reacción de un proceso térmico

227