Informe - Escuela de Ingeniería Eléctrica

Anuncio
Universidad de Costa Rica
Facultad de Ingeniería
Escuela de Ingeniería Eléctrica
IE – 0502 Proyecto Eléctrico
Interfaz Humano-Máquina para la familia de PLC’s
Unitronics.
Por:
Alexánder Barrantes Muñoz
Diciembre del 2004
IE-0502
ii
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Interfaz Humano-Máquina para la familia de PLC’s
Unitronics.
Por:
Alexánder Barrantes Muñoz
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:
___________________
M.Sc. Geovanny Delgado Cascante
Profesor Guía
___________________
Ing. Roberto Rodríguez Rodríguez
Profesor Lector
__________________
Dr. Jorge Arturo Romero Chacón
Profesor Lector
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
iii
DEDICATORIA
A mi mamá por estar siempre incondicional, cuando la ocupé,
por brindarme la oportunidad de estudiar y porque
su muerte no culminó con su deseo, el hacerme una persona de bien.
A mis hermanas por ayudarme en mi carrera,
por ser mi admiración y modelo a seguir.
A Fátima por estar siempre a mi lado,
y por dar de sí misma algo que no tiene valor, amor.
A mis amigos por hacerme sentir especial.
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
iv
RECONOCIMIENTOS
Carlos Manuel Calvo Muñoz
Por su constante ayuda en este proyecto
A mis Profesores
Por compartir con tanto gusto su
experiencia y conocimiento
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
v
ÍNDICE GENERAL
ÍNDICE DE FIGURAS......................................................................................... vii
ÍNDICE DE TABLAS.......................................................................................... viii
NOMENCLATURA............................................................................................... ix
LSTA DE MARCAS REGISTRADAS ................................................................ xi
RESUMEN............................................................................................................. xii
CAPÍTULO 1: Introducción .................................................................................. 1
1.1
Objetivo General..............................................................................................................2
Objetivos específicos .............................................................................................. 2
Metodología .....................................................................................................................2
1.1.1
1.2
CAPÍTULO 2: Generalidades de una Aplicación HMI ...................................... 5
2.1 Generalidades de un PLC. .........................................................................................................5
2.1.1 Concepto ........................................................................................................................ 5
2.1.2 Funciones ....................................................................................................................... 6
Las funciones básicas que posee un PLC común son:............................................................ 6
2.1.3 Componentes ................................................................................................................ 7
2.1.4 Aplicaciones.................................................................................................................. 9
2.1.5 Fortalezas y Debilidades............................................................................................... 9
2.2 Generalidades de los Sistemas SCADA. .................................................................................10
2.2.1 Concepto ...................................................................................................................... 10
2.2.2 Funciones de un Sistema SCADA ............................................................................... 12
2.2.3 Elementos necesarios para un sistema SCADA .......................................................... 12
2.3 Protocolos de Comunicación ...................................................................................................13
2.3.1 Concepto ...................................................................................................................... 13
2.3.2 Protocolo DDE............................................................................................................. 14
2.4 Enlaces OLE para Windows ....................................................................................................17
2.5 Generalidades de un Servidor OPC .........................................................................................19
2.6 Compilador Gráfico Delphi. ....................................................................................................23
CAPÍTULO 3: Desarrollo de una Interfaz HMI ............................................... 25
3.1 Breve reseña de la compañía Unitronics..................................................................................25
3.1.1 Misión .......................................................................................................................... 26
3.1.2 Historia de sus productos............................................................................................. 26
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
vi
3.1.3 Breve Organigrama de la compañía............................................................................. 27
3.1.4 Puntos Claves............................................................................................................... 27
3.1.5 Productos ..................................................................................................................... 27
3.2 La familia de productos de Unitronics.....................................................................................28
3.2.1 Características generales de los productos................................................................... 29
3.2.1.1 El modo de información ........................................................................................... 30
3.2.1.2 La estructura de memoria de la serie M90................................................................ 30
3.2.1.3 Variables ................................................................................................................... 31
3.2.1.4 Comunicación ........................................................................................................... 32
Puerto Serial.......................................................................................................................... 32
3.3 Características Generales del M90 OPLC™............................................................................33
3.3.1 Tipos de datos del sistema ........................................................................................... 35
3.3.2 Especificaciones Técnicas ........................................................................................... 37
3.3.3 Acceso de datos ........................................................................................................... 39
3.3.3.1 Nombre de los Ítems ................................................................................................. 40
3.4 Desarrollo del programa SCADA para la interfaz HMI ..........................................................46
CAPÍTULO 4: Conclusiones y Recomendaciones ............................................. 50
4.1 Conclusiones............................................................................................................................50
4.2 Recomendaciones ....................................................................................................................51
BIBLIOGRAFÍA................................................................................................... 52
ANEXOS ................................................................................................................ 53
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
vii
ÍNDICE DE FIGURAS
Figura N°2.1 Funcionamiento e Interfaces de OPC ................................................................. 21
Figura N°2.2 Modelo de Objetos del Servidor de Automatización OPC ................................. 21
Figura N°3.1 Organigrama de la Co. Unitronics ...................................................................... 27
Figura N°3.2 Familia de PLCs de Unitronics ........................................................................... 29
Figura N°3.3 Conectando la PC con un Controlador................................................................ 34
Figura N°3.4 PLC M90............................................................................................................. 39
Figura N°3.5 Pantalla de Conexión de UniScada ..................................................................... 49
Figura N°3.6 Pantalla de Conexión de UniHMI....................................................................... 49
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
viii
ÍNDICE DE TABLAS
Tabla 2.1 Descripción de la colección de objetos de la especificación OPC ........................... 22
Tabla 3.1 Descripción de registros internos del M90 ............................................................... 33
Tabla 3.2 Distribución de pines del puerto RS232 ................................................................... 33
Tabla 3.3 Descripción de conexión para el puerto CANbus.................................................... 34
Tabla 3.4 Categorías de información que se pueden alcanzar en el modo de Información...... 35
Tabla 3.5 La función de los bits del sistema............................................................................. 36
Tabla 3.6 Funciones de Bits del Sistema del teclado................................................................ 36
Tabla 3.7 Funciones de los Enteros del Sistema....................................................................... 37
Tabla 3.10 Descripción de los tipos de ítems del M90 ............................................................. 41
Diciembre del 2004
IE-0502
ix
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
NOMENCLATURA
ActiveX
Tecnología de Acceso a Datos
ADO
Objetos de Base de Datos ActiveX
Baud rate
Tasa de transmisión de datos en bps
BDE
Motor de Base de Datos de Borland
CCFL
Lámpara fluorescente
COM
Modelo Componente del Objeto
CORBA
Arquitectura Común del Corredor de la Petición del Objeto
CPU
Unidad Central de Proceso
DCOM
Distribución COM
DDE
Protocolo de Intercambio de datos dinámico
DLL
Librería de Enlace Dinámico
DSR
Entrada Datos preparados, listo para iniciar diálogo
DTR
Patilla de terminal de listo datos del puerto RS232
HMI
Interfaz Humano-Máquina
ID
Identificación
NetDDE
Red de DDE
Ladder
Programa de configuración de PLCs en lenguaje escalera
LCD
Pantalla de cristal líquido
OCX
Librería de programación
OLE
Enlace e inclusión de objetos
OPC
OLE para Control de Procesos
OPLC
Serie de PLCs Unitronics
PC
Computadora Personal
Pcom
Protocolo propietario de Unitronics
PID
Proporcional Integral Derivativo
PLC
Controlador Lógico Programable
PWM
Modulación de Anchura de Pulso
Diciembre del 2004
IE-0502
x
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
QVGA
Clase de tecnología
RAD
Desarrollo Rápido de Aplicaciones
RAM
Memoria de acceso lectura
RxD
Patilla de recepción de datos del puerto RS232
RS232
Puerto Serial de la PC
RJ-11
Cable para conexión del módem a la base de la red telefónica
SCADA
Supervisor de Control y Adquisición de Datos
STL
Librería estándar de plantillas
Tag
Conjunto de caracteres que se añade a un elemento de los datos
para identificarlo
TxD
Patilla de transmisión de datos del puerto RS232
UCR
Universidad de Costa Rica
VCA
Voltaje de Corriente Alterna
VCD
Voltaje de Corriente Directa
VisiLogic
Programa para PLC’s Unitronics
WebPLC
Serie de PLCs Unitronics basados en comunicación por web
I/O
Entradas/Salidas
Diciembre del 2004
IE-0502
xi
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
LSTA DE MARCAS REGISTRADAS
Delphi Enterprise 5.0: Borland Pascal
Unitronics: M90, OPC Server
Microsoft: Windows, Office(Word, Excel, Access), Internet Explorer, NetDDE, DDE, OLE,
DCOM, ADO, BDE, InterBase, InstallShield
OPC Foundation: Intellution, Opto-22, Fisher-Rosemount, Rockwell Software y
Intuitiv
Software
Siemens
C++, Visual Basic, VBScrip, JavaScript
DeviceNet
Diciembre del 2004
IE-0502
xii
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
RESUMEN
El objetivo principal es una aplicación HMI, Interfaz Humano Máquina, para el modelo
de PLCs de Unitronics M90, por medio de la implementación de un programa SCADA en la
plataforma de programación Delphi Enterprise 5.0, con lenguaje Borland Pascal. Se empezó por
estudiar dicha plataforma, que utiliza programación orientada a objetos. Después se estudió la
estructura interna del PLC M90, se estableció comunicación con el PLC en pequeñas pruebas de
manipulación de registros internos en Excel ® por medio del protocolo de comunicación DDE.
Seguidamente se trasladaron estas pruebas a desarrollos con Delphi y poco a poco se fueron
solventando problemas que aparecían en el transcurso de la implementación. Las fuentes de
información fueron obtenidas en su gran parte de Internet.
Se utilizaron variables tales como el servidor OPC de Unitronics, los enlaces OLE de
Windows y el protocolo DDE, entre otros.
Se han podido experimentar las ventajas de utilizar herramientas diseñadas especialmente
para la creación de sistemas SCADA.
Los resultados fueron: Se Desarrolló una Interfaz Humano-Máquina (HMI) para la
familia de PLC’s Unitronics con la creación de las aplicaciones UniScada y Uni_HMI, Se
practicó en el desarrollo de aplicaciones en Borland Delphi, Se estudió la arquitectura de los
PLC’s Unitronics, Se Desarrolló una aplicación de comunicación entre Delphi y el OPC Server
de Unitronics, Se Realizó una aplicación de lectura de registros del PLC, Se Desarrolló la
aplicación HMI de despliegue de registros, pues se obtuvo un prototipo de lo que hoy en día es
materia de mercado, asimismo, se eliminó el desconocimiento en dicho tema, haciendo más
familiar futuras experiencias con programas SCADA comerciales en el campo laboral.
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
1
CAPÍTULO 1: Introducción
Lo que se pretendió en este trabajo fue la creación de un programa básico de
monitoreo estilo SCADA, como es mencionado comercialmente, implementándolo en
una plataforma de programación gráfica, Delphi 5.0, en donde se estableció una
comunicación entre un PLC y la PC, de manera que el usuario pueda tener una cómoda
interacción con el dispositivo.
Se seleccionó el controlador lógico programable de la familia de Unitronics,
enfatizando en el modelo M90, a pesar de que toda la línea de PLC’s de dicha familia
(Unitronics) posee características extremadamente similares, en donde es posible que sus
diferencias significativas no sean más que sus capacidades de memoria, pero su
estructura interna es muy parecida y para efectos de este proyecto la comunicación y
manipulación de datos son idénticas, pues hasta los registros internos poseen los mismos
nombres.
Este dispositivo (M90) fue seleccionado por su simple estructura interna y su fácil
manipulación, como más adelante se mencionará. La plataforma de programación
Borland Pascal de Delphi fue seleccionada por sus características gráficas y de
compatibilidad con los sistemas OPC.
El fin que posee este proyecto fue desarrollar una interfaz HMI, para adentrar al
estudiante en aplicaciones industriales muy usadas hoy en día, con el objetivo de
actualizar al estudiante con materia de mercado en el área de control automático. Un
objetivo futurista de este trabajo pretende utilizar las bases creadas para la realización de
un software competitivo en el mercado industrial, de manera que se optimice y se
produzcan nuevas implementaciones con mayor detalle y versatilidad, dejando un
software abierto. Este legado pretende motivar al estudiante en la creación de este tipo de
softwares.
Diciembre del 2004
IE-0502
1.1
2
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Objetivo General
Desarrollar una Interfaz Humano-Máquina (HMI) para la familia de PLC’s
Unitronics. M90.
1.1.1
Objetivos específicos
Entrenamiento en el desarrollo de aplicaciones en Borland Delphi.
Estudiar la arquitectura de los PLC’s Unitronics M90.
Desarrollar una aplicación de comunicación entre Delphi y el OPC Server de
Unitronics.
Realizar una aplicación de lectura de registros del PLC.
Desarrollar la aplicación HMI de despliegue de registros.
1.2
Metodología
La metodología utilizada para la realización de este proyecto, comenzó con una
distribución del tiempo secuencial para cada objetivo específico antes mencionado. El
cronograma de las actividades realizadas inició con el establecimiento de rangos de
tiempo determinados por la dificultad del objetivo.
En primer lugar se dependía y a su vez se limitaba a ser desarrollado en un lapso
de cuatro meses, dictado por la división de los periodos lectivos establecidos por la UCR.
Como parte del procedimiento se tuvieron que realizar constantes y aleatorias reuniones
profesor guía-estudiante, según la necesidad de respaldo e información que el estudiante
necesitara en el proceso tanto de elaboración como en el de investigación del trabajo.
En dichas reuniones se definieron en primer lugar el tema a realizar, el
procedimiento a seguir, las fuentes de información necesarias y consultoría. Conforme
pasó el tiempo se tuvo que acudir a asesorías con personas expertas o familiarizadas con
los temas, en donde si no precisamente fue función total del profesor guía, el mismo
brindaba las dichas fuentes asesoras.
El estudiante por su parte también acudió a asesores según su comodidad, debe
entenderse que los asesores encontrados no poseían en su totalidad conocimiento de
aplicaciones similares a la realizada y que su conocimiento comprendía desde control-
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
3
automático solamente hasta simple programación, por lo que la base teórica obtenida fue
compuesta por información de fuentes diversas.
El primer apartado del cronograma correspondió al a) Entrenamiento en el
desarrollo de aplicaciones en Borland Delphi. Nótese que la Escuela de Ingeniería
Eléctrica carece de cursos obligatorios de introducción a la programación orientada a
objetos en su plan de estudios, por lo que se debió familiarizar con dicho tema, y se debe
recalcar que esta es la base de este proyecto, por lo que se destinó, al ser este uno de los
objetivos de mayor dificultad, un periodo de un mes y medio. El resto del tiempo fue
destinado para los demás objetivos.
Una vez emprendido el trayecto con los conocimientos básicos de la plataforma
Delphi y de programación orientada a objetos, se procedió al siguiente paso b) Estudiar
la arquitectura de los PLC’s Unitronics M90. Es necesario citar que la familia de
PLC’s Unitronics poseen características muy parecidas, me refiero al ámbito de sus
registros internos, que además son relativamente simples y de fácil comprensión; por lo
que el tiempo destinado a esta etapa no fue excesivo; por el contrario, este puede que
fuese el más fácil de los objetivos, como se refiere en el capítulo 3, basta más que leer ese
capítulo del informe para darse por enterado y comprendido todo lo referente a este tipo
de PLC’s. Se debe recalcar que el mayor asesor sobre este tema fue el profesor guía, pues
además de que posee vasta experiencia en el área de automatización, es un experto de la
familia de PLC’s Unitronics.
El tercer apartado fue: c) Desarrollar una aplicación de comunicación entre
Delphi y el OPC Server de Unitronics, d) Realizar una aplicación de lectura de
registros del PLC e) Desarrollar la aplicación HMI de despliegue de registros. Estas
aplicaciones (puntos c, d y e) se realizaron por primera vez en la hoja de cálculo Excel ®,
por su gran comodidad, facilidad y documentación, pues en la ayuda del driver OPC
Server existe información de comunicación Excel ®-Servidor OPC; se estableció
comunicación entre el PLC y la PC, en donde se probaron los registros internos, de
manera que se comprobó las diferentes utilidades de cada registro, conociéndolas más
profundamente. Este paso fue muy fácil gracias a los protocolos de comunicación tipo
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
4
DDE que posee Windows ®, pues con este protocolo se pudo comunicar Excel ® con el
OPC Server.
Se prosiguió con una pequeña implementación de comunicación en la plataforma
Delphi. Este objetivo puede que fuese el más difícil de todos, y el que tomó mayor
tiempo, pues fue imposible importar el DLL del OPC Server al compilador Delphi 5.0,
problema que se atribuye a la incompatibilidad de este OPC Server (de Unitronics Co)
con la versión del Delphi Enterprise (5.0). Todavía se desconoce si de verdad esta fue la
razón o simple desconocimiento. Al no tener mucho tiempo para determinar el motivo, se
decidió tomar una medida paralela y alterna, la cual correspondió a la creación de una
clase Excel ® (Excel ® Application), que se puede hacer en Delphi Enterprise 5.0, que
permite emular partes de la hoja de Excel ®, tales como una celda.
El último objetivo fue f) Completar la aplicación HMI de forma gráfica. Este
objetivo necesitó mucha creatividad e información, pues es aquí donde se empezó a
desarrollar la interfaz gráfica. Se trabajó con archivos, entre muchos elementos de
programación, lo cual implicó gran cantidad de consultas acerca de información sobre la
implementación de determinados elementos, realizadas en Internet.
Diciembre del 2004
IE-0502
5
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
CAPÍTULO 2: Generalidades de una Aplicación HMI
Para iniciar en el desarrollo de este proyecto, se especifican algunas conceptos de
relevancia con respecto a los PLC’s, en términos generales, y sobre nuestra aplicación se
especifican su definición, funciones, estructura física Hardware o componentes,
aplicaciones, debilidades y fortalezas. Seguido a esto procede definir conceptos como
definiciones de un sistema SCADA y sus
funciones, protocolos de comunicación,
protocolo DDE, OLE para Windows y Servidor OPC , además la utilidad del compilador
Delphi en el proyecto, entre otras cosas de conocimiento imprescindible. Esta es la
teoría que se debe tener muy clara antes de empezar a desarrollar una aplicación HMI.
Se espera que cualquier persona que lea el informe puede iniciarse en el tema,
conociendo los principios básicos para desarrollar una aplicación HMI.
2.1 Generalidades de un PLC.
2.1.1 Concepto
Las siglas PLC significan Programmable Logic Controller, lo que en español
sería Controlador Lógico Programable. Resulta ser simplemente a grandes rasgos un
equipo que se puede programar en un lenguaje simbólico, y está diseñado para controlar
procesos industriales e implementar máquinas.
Cuando se refiere a programar en un lenguaje no informático, se habla de que
estos aparatos se programan en un lenguaje denominado “Escalera”, un tipo de
programación muy simple, fácil y amigable de manera que no hace falta escudriñar en
profundidad las notaciones que poseen generalmente los compiladores comerciales,
donde es necesario estar familiarizado con algún lenguaje para entenderlo.
Este lenguaje se basa en una notación gráfica de bloques (en algunos casos, tales
son los PLC’s marca SIEMENS), o con figuras simples como esquemáticos de
contactores, bobinas y otros. Al no estar este tema en nuestro marco de análisis, pues la
aplicación está directamente relacionada con la manipulación de los registros internos del
PLC, se retoma este tema en el Capítulo 3.
Un PLC recibe por sus entradas o captadores, información que será procesada por
un programa lógico interno determinado, que ejecutará acciones específicas sobre sus
Diciembre del 2004
IE-0502
6
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
accionadores en sus salidas. Por lo que los PLC son funcionales en sistemas que poseen
procesos de monitorear, control, entre otros.
Es necesario utilizar PLC en el caso que se presenten situaciones tales como1:
•
Espacio reducido
•
Procesos de producción periódicamente cambiante
•
Procesos secuénciales
•
Maquinaria de procesos variables
•
Instalaciones de procesos complejos y amplios
•
Chequeo de programación centralizada de las partes del proceso.
2.1.2 Funciones
Las funciones básicas que posee un PLC común son2:
Detección: Lectura de la señal de las entradas distribuidos por el sistema de
fabricación.
Mando: Elaborar y enviar las acciones al sistema mediante las salidas y
preaccionadores.
Diálogo hombre máquina: Mantener un diálogo con los operarios de producción,
obedeciendo sus consignas e informando del estado del proceso.
Programación: Para introducir, elaborar y cambiar el programa de aplicación del
autómata. El diálogo de programación debe permitir modificar el programa incluso con el
autómata controlando la máquina.
Hoy en día los PLC’s poseen nuevas funciones tales como:
Redes de comunicación: Permiten establecer comunicación con otras partes de
control. Las redes industriales permiten la comunicación y el intercambio de datos entre
autómatas en tiempo real.
Sistemas de supervisión: También los autómatas permiten comunicarse con
ordenadores provistos de programas de supervisión industrial. Esta comunicación se
1
Puntos tomados de
http://www.grupo-maser.com/PAG_Cursos/Auto/auto2/auto2/PAGINA%20PRINCIPAL/PLC/plc.htm.
2
Funciones tomadas de:
http://www.grupo-maser.com/PAG_Cursos/Auto/auto2/auto2/PAGINA%20PRINCIPAL/PLC/plc.htm.
Diciembre del 2004
IE-0502
7
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
realiza por una red industrial o por medio de una conexión por el puerto serie del
ordenador.
Control de procesos continuos: Además de dedicarse al control de sistemas de
eventos discretos los autómatas llevan integradas funciones que permiten el control de
procesos continuos. Disponen de módulos de entrada y salida analógicas y la posibilidad
de ejecutar reguladores PID que están programados en el autómata.
Entradas- Salidas distribuidas: Los módulos de entrada salida pueden estar
distribuidos por la instalación y se comunican con la unidad central del autómata
mediante un cable de red.
Buses de campo: Mediante un solo cable de comunicación se pueden conectar al
bus de entradas y salidas, reemplazando al cableado tradicional. El autómata consulta
cíclicamente el estado de las entradas y actualiza el estado de las salidas.
2.1.3 Componentes
Entre los principales componentes de un PLC básico se encuentran los
siguientes3:
Gabinete Principal: Este elemento es sobre el que se "enchufan" o conectan el
resto de los elementos. Puede alojar a un número finito de elementos dependiendo del
fabricante y conectarse a otros gabinetes similares mediante un gabinete de expansión.
Fuente de Alimentación: La tensión de entrada es normalmente de 110/220VCA
de entrada y 24 VCD de salida que es con la que se alimenta a la CPU.
CPU: Es el cerebro del PLC. Consta de uno o varios microprocesadores (según el
fabricante) que se programan mediante un software propio. La mayoría de ellos ofrecen
varias formas de programación (lenguaje de contactos, neumónico o instrucciones, de
funciones, etc.).
Normalmente trabajan con buses de 16 bits, aunque algunos modernos trabajan
con buses de 32 bits. Hoy en día la potencia de cálculo de estos PLC's es grandísima,
sobre todo si se trabaja con números reales o coma flotante, dando unas resoluciones más
que deseables. Trabajando con programas digitales puede alcanzarse un ciclo de
exploración de 10 ms.
3
Información tomada de:
http://www.euskalnet.net/m.ubiria/ARTICULOS.htm#Articulos_2001_01
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
8
El programa alojado en la CPU va escrito en un lenguaje propio de la misma, se
ejecuta en una secuencia programable y tiene un principio y un final. El tiempo que
transcurre entre los dos se llama ciclo de exploración y hay un temporizador interno que
vigila que este programa se ejecute de principio a fin, llamado perro guardián o
watchdog. Si este temporizador finaliza y el programa no ha ejecutado la instrucción
END, el PLC pasará a estado de STOP.
Tarjetas entradas/salidas digitales: Se enchufan o conectan al gabinete y
comunican con la CPU a través de la citada conexión. En el caso de las entradas digitales
transmiten los estados 0 ó 1 del proceso a la CPU. En el caso de las salidas, la CPU
determina el estado de las mismas tras la ejecución del programa y las activa o desactiva
en consecuencia.
Normalmente se utilizan tarjetas de entradas de 24 VCD y salidas de 24 VCD,
aunque también las hay de 110 y 220 VCA, depende de las preferencias y normativas
locales. Las hay de 8, 16 y 32 entradas o salidas o mezclas de ambas.
Tarjetas entradas/salidas analógicas: Se enchufan o conectan al gabinete de igual
manera que las anteriores, pero teniendo en cuenta que en algunos modelos de PLC’s han
de estar situadas lo más cerca posible de la CPU (por problemas de caída de tensión).
Estas tarjetas leen un valor analógico e internamente lo convierten en un valor digital
para su procesamiento en la CPU. Esta conversión la realizan los convertidores
analógico-digitales internos de las tarjetas que en algunos casos es uno para todos los
canales de entrada o salida aunque actualmente se tiene uno por cada canal de entrada o
salida. En este último caso el procesamiento de las señales analógicas es mucho más
rápido que en el otro. Estas tarjetas son normalmente de 2, 4, 8 ó 16 entradas/salidas
analógicas, llamándose a cada una de ellas canal. Los rangos de entrada están
normalizados siendo lo más frecuente el rango de 4-20 mA (miliamperios) y 0-10 VCD,
aunque también existen de 0-20 mA, 1-5V, 0-5V, etc.
Tarjetas especiales: Se enchufan o conectan al gabinete y comunican con la CPU
a través de la citada conexión. Se utilizan normalmente para control o monitorización de
variables o movimientos críticos en el tiempo, ya que usualmente realizan esta labor
independientemente de la CPU. Son algunas muestras las siguientes:
•
Tarjetas de posicionamiento de motores
Diciembre del 2004
IE-0502
9
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
•
Tarjetas de regulación.
2.1.4 Aplicaciones
Entre las aplicaciones más comunes que puede tener un PLC podemos mencionar
algunos ejemplos tales como4:
•
Maniobra de máquinas
•
Maquinaria industrial de plástico
•
Maquinaria de embalajes
•
Maniobra de instalaciones:
•
ƒ
Instalación de aire acondicionado, calefacción, etc.
ƒ
Instalaciones de seguridad
Señalización y control:
ƒ
Chequeo de programas
ƒ
Señalización del estado de procesos
2.1.5 Fortalezas y Debilidades
Las principales virtudes del uso de un PLC son5:
•
Menor tiempo empleado en la elaboración de proyectos debido a que:
ƒ
No es necesario dibujar el esquema de contactos
ƒ
No es necesario simplificar las ecuaciones lógicas, ya que, por lo general
la capacidad de
almacenamiento del módulo de memoria es lo
suficientemente grande.
•
La lista de materiales queda sensiblemente reducida, ya que un PLC es un equipo
con muchos elementos integrados, y al elaborar el presupuesto correspondiente se
elimina parte del problema que supone el contar con diferentes
proveedores,
distintos plazos de entrega.
•
Posibilidad de introducir modificaciones sin cambiar el cableado ni añadir aparatos.
•
Mínimo espacio de ocupación.
•
Menor costo de mano de obra de la instalación.
4
Ejemplos tomados de:
http://www.grupo-maser.com/PAG_Cursos/Auto/auto2/auto2/PAGINA%20PRINCIPAL/PLC/plc.htm.
5
Información tomada de:
Diciembre del 2004
IE-0502
•
10
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Economía de mantenimiento. Además de aumentar la fiabilidad del sistema, al
eliminar contactos móviles, los mismos autómatas pueden indicar y detectar averías.
•
Posibilidad de gobernar varias máquinas con un mismo autómata.
•
Menor tiempo para la puesta en funcionamiento del proceso al quedar reducido el
tiempo de cableado.
•
Si por alguna razón la máquina queda fuera de servicio, el autómata sigue siendo útil
para otra máquina o sistema de producción.
En contraposición a sus cualidades se puede citar algunas de sus inconvenientes:
•
Es necesario un programador, lo que obliga a adiestrar a uno de los técnicos en tal
sentido.
•
El costo inicial es alto.
2.2 Generalidades de los Sistemas SCADA.
2.2.1 Concepto
Las siglas HMI son provenientes del inglés Human Machine Interface, lo que en
español es Interfaz Humano Máquina. Esto se refiere a un programa interfaz, que suele
correr en un computador tipo PC, el cual es utilizado por el operario del proceso
industrial para monitorear y/o controlar un sistema determinado. Este programa interfaz
está en constante comunicación y transmisión de datos con el PLC.
Antes de seguir refiriéndose al tema es importante definir otro concepto
elemental, el de sistema SCADA. Cuando se hable de sistemas SCADA se refiere
exclusivamente al software, en este apartado, pero es necesario aclarar que no es lo único
que comprende el sistema como tal, pero se hace para efectos de interés. Las siglas
SCADA provienen del inglés: Supervisory Control and Data Adquisition, lo que
traducido al español y de forma más explícita, es un software supervisor que realiza la
adquisición de datos desde PLC hacia una PC comúnmente, y el envío de datos en
sentido contrario. El carácter de los datos a transferir en ambos sentidos es de control
(pueden ser simple monitorear, instrucciones, etc.), generalmente de tipo industrial. El
objetivo primordial es que por medio de un programa interactivo, gráfico y amigable
http://www.grupo-maser.com/PAG_Cursos/Auto/auto2/auto2/PAGINA%20PRINCIPAL/PLC/plc.htm
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
11
simule los procesos que se realizan en una planta (como control de calidad, supervisión,
mantenimiento, etc.), de tal manera que realice un sensado en tiempo real y los
despliegue en la pantalla del PC que utiliza el operador, o también, que envíe
instrucciones que actúen directamente sobre los diferentes dispositivos, de tal manera que
sea tan cómodo como el presionar una tecla del computador.
De una manera más personal, agregando a la definición anterior, un programa
SCADA es un software creador de aplicaciones programadas específicas de un proceso
determinado.
Un ejemplo es el de monitorear alarmas de un Banco. Los procesos que se
realizan son: recoger la información de los censores en las entradas de un PLC y
visualizar las entradas en la PC (el PLC ya posee una programación que realizará con
una entrada específica programado a lenguaje escalera). El programa SCADA está
basado en los iconos necesarios para comunicar el estado de las alarmas, por lo que no se
necesita más que esta aplicación en el programa de monitoreo. Pero si es el vendedor de
PLC’s y cada cliente necesita una aplicación distinta o actualizar la que ya tiene, ocupa
tener un programa que cree los distintos softwares para cada aplicación, a este programa
padre o creador le denomino SCADA.
Continuando con las características generales de las HMI, cada uno tiene su
software propio y la comunicación generalmente se da a través del puerto serial RS232.
Una descripción general propuesta de cómo deben ser los módulos que componen
un software SCADA es la siguiente6:
•
Configuración: permite al usuario definir el entorno de trabajo de su SCADA,
adaptándolo a la aplicación particular que se desea desarrollar.
•
Interfaz gráfico del operador: proporciona al operador las funciones de control y
supervisión de la planta. El proceso se representa mediante sinópticos gráficos
almacenados en el ordenador de proceso y generados desde el editor incorporado
en el SCADA o importados desde otra aplicación durante la configuración del
paquete.
6
Tomado de http://personal.redestb.es/efigueras/
Diciembre del 2004
IE-0502
•
12
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Módulo de proceso: ejecuta las acciones de mando preprogramadas a partir de los
valores actuales de variables leídas.
•
Gestión y archivo de datos: se encarga del almacenamiento y procesado ordenado
de los datos, de forma que otra aplicación o dispositivo pueda tener acceso a ellos.
•
Comunicaciones: se encarga de la transferencia de información entre la planta y la
arquitectura hardware que soporta el SCADA, y entre ésta y el resto de elementos
informáticos de gestión.
Algunos requisitos importantes sugeridos, sobre las cualidades que debe poseer
un programa SCADA son los siguientes:
•
Deben ser sistemas de arquitectura abierta, capaces de crecer o adaptarse según
las necesidades cambiantes de la empresa.
•
Deben comunicarse con total facilidad y de forma transparente al usuario con el
equipo de planta y con el resto de la empresa (redes locales y de gestión).
•
Deben ser programas sencillos de instalar, sin excesivas exigencias de hardware,
y fáciles de utilizar, con interfaces amigables con el usuario.
2.2.2 Funciones de un Sistema SCADA
Las principales funciones de un sistema SCADA son las siguientes7:
•
Visualizar y parametrizar datos del proceso (lectura y/o escritura de variables)
•
Gestión de alarmas del proceso, con textos de ayuda al operario para la resolución de
las mismas
•
Recopilación de alarmas sucedidas en el tiempo (histórico de alarmas)
•
Impresión de las citadas alarmas
•
8
Ejecución de programas, que modifican la ley de control, o incluso anular o
modificar las tareas asociadas al autómata, bajo ciertas condiciones.
•
Posibilidad de programación numérica, que permite realizar cálculos aritméticos de
elevada resolución sobre la CPU del ordenador.
2.2.3 Elementos necesarios para un sistema SCADA
7
8
Información tomada de http://personal.redestb.es/efigueras/
Tomado de http://personal.redestb.es/efigueras/
Diciembre del 2004
IE-0502
13
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Como en el apartado 2.2.1 se refirió a un sistema SCADA solamente en su
software, ahora se mencionará un poco de los elementos necesarios para el sistema
SCADA como tal, los cuales son los siguientes:
•
Software SCADA
•
Tarjeta de comunicación PC-PLC
•
Driver de comunicación: programa que realiza la traducción entre el sistema
SCADA-HMI y el PLC.
•
PC
2.3 Protocolos de Comunicación
2.3.1 Concepto
Un protocolo de comunicación, son las reglas de comunicación que autorizan la
transmisión de datos entre diferentes dispositivos que hablan sus propios idiomas.
Cuando se requiere establecer comunicación entre dispositivos, se deben
establecer algunos puntos elementales entre ellos tales como la sincronización y los
procedimientos para el intercambio de datos o Protocolos.
9
Los protocolos son implementados vía procesos (son los programas que se ejecutan
en un hardware).
•
Un proceso se ejecuta en un procesador virtual o lógico.
•
Un proceso es auto contenido
•
No se da cuenta (y no le interesa), que un procesador real comparta sus recursos
entre varios procesos activos.
Los procesos existen en:
•
Equipos de una red.
•
Sistema multiprocesador, para controlar interacción de procesos paralelos.
•
Aplicaciones en tiempo real para el control de dispositivos.
La entrada a los procesos ocurre por puertas lógicas de software, por donde el proceso
recibe mensajes desde procesos residentes en el mismo o en otro procesador.
9
Tomado de http://inf.udec.cl/~yfarran/web-redes/protocolos/redes03.htm
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
14
Un conjunto de datos privados definen el estado actual de un proceso y determinan la
acción a tomar por el receptor de un mensaje.
El resultado de la computación ejecutada por el proceso se envía por una puerta
lógica de salida.
¿Cómo opera un protocolo como DDE?
•
Un proceso recibe un mensaje, lo procesa y envía una respuesta, sin que exista
relación entre este evento y otro anterior o posterior.
•
El proceso origen, conocerá la dirección del proceso destino y la incluirá en el
mensaje.
•
Esta dirección, identificará únicamente a un procesador, quien conocerá al
proceso destino.
•
El originador cuando despacha un mensaje, entra a un estado de espera de la
respuesta en una de sus puertas.
•
El proceso destino ejecuta la función especificada en el mensaje, construye la
respuesta (con resultados y dirección del origen) y envía el mensaje respuesta por
una puerta de salida, (quedando libre para aceptar otro mensaje).
•
La respuesta llega al originador, quien realiza un chequeo para asegurarse que
viene del lugar correcto antes de aceptarla, luego, pasa al estado no espera
respuesta en esa puerta de entrada.
2.3.2 Protocolo DDE
El protocolo de comunicación DDE (siglas derivadas del inglés Dynamic Data
Exchange), es un protocolo de intercambio de datos de Microsoft para aplicaciones
Windows.
10
El intercambio de datos dinámico (DDE) permite enviar/recibir datos e
instrucciones hacia/desde una a otra aplicación. Esto implementa una relación clienteservidor entre dos aplicaciones en ejecución al mismo tiempo. El uso del servidor
proporciona los datos y acepta peticiones de cualquier otra aplicación interesada en sus
datos. Las aplicaciones que solicitan se llaman clientes. Algunas aplicaciones tales como
Microsoft Excel ® pueden simultáneamente ser cliente y servidor. NetDDE amplía la
10
Traducido del manual de ayuda del OPC Server de la compañía Unitronics
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
15
funcionalidad estándar del DDE de Windows ® para incluir comunicación sobre redes de
área local a través de puertos seriales. Las extensiones de red están disponibles para
permitir enlaces DDE entre las aplicaciones corriendo en diversas computadoras
conectadas vía redes o módems.
11
El protocolo DDE está basado en el sistema de mensajería construido por
Windows ®. Así, dos programas de aplicación bajo Windows ® realizan una
"conversación DDE" enviándose mensajes entre ellos.
Una conversación DDE se inicia con el programa que actúa como cliente. Este
transfiere un mensaje a todos los programas que se están ejecutando en ese momento en
Windows ®. Dicho mensaje indica una categoría general de datos que el cliente necesita.
Un servidor DDE que posee dichos datos puede responder a este mensaje. En este
instante comienza la conversación. Un único programa puede ser cliente para un
programa, y servidor para otro, pero esto requiere dos conversaciones DDE distintas. Un
servidor puede entregar datos a múltiples clientes y un cliente puede obtener datos desde
múltiples servidores, pero esto requiere múltiples conversaciones DDE.
Un programa implicado en una conversación DDE no necesita codificarse
específicamente para trabajar con otro programa DDE. Generalmente el diseñador de un
servidor DDE hace público cómo se identifican los datos. Como DDE utiliza el sistema
de mensajería incluido en Windows, el programa se integra perfectamente en el entorno
Windows.
En DDE ambas aplicaciones deben estar ejecutándose y las dos deben dar a
Windows una dirección a sus funciones de llamada antes de que la comunicación de DDE
pueda comenzar. La función de llamada acepta cualquier mensaje de DDE que Windows
® envía a la aplicación.
Un cliente de DDE comienza una conversación con otra aplicación (un servidor
de DDE) enviando un mensaje de conexión. Después de establecer una conexión, el
cliente puede enviar órdenes o datos al servidor y a cambio puede pedir el valor de datos
que el servidor maneja.
Cuando la comunicación DDE para una conversación es completada, el cliente
envía un mensaje de cerrar la conversación al servidor.
11
Tomado de http://www.ing.ula.ve/~jesusc/labvid.htm
Diciembre del 2004
IE-0502
16
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Un cliente estándar DDE soporta cinco operaciones básicas:
•
Open: Abrir enlace al servidor.
•
Execute: Enviar comandos para ser ejecutados por el servidor.
•
Peek (Request): Leer un elemento de datos desde el servidor.
•
Poke: Enviar un elemento de datos al servidor.
•
Close: Cerrar el enlace al servidor.
Las diferentes aplicaciones clientes pueden tener nombres diferentes para estas
funciones, sin embargo, funcionarán igual a como se describieron.
Ahora, para poder habilitar el uso de esas cinco funciones, se tiene que conocer
algunas cosas acerca de la aplicación Servidora. Por ejemplo, es muy difícil abrir un
enlace a la aplicación servidora sin conocer el nombre de la aplicación.
Para desarrollar una comunicación DDE o una conversación en términos de DDE,
se tiene que ser capaz de identificar el tipo de dato que se desea. Esta operación se realiza
con las tres cadenas de caracteres con información acerca de la aplicación Servidora:
•
Application name /service | Justamente el nombre de la aplicación: servicio
•
Data topic ! Define el elemento de interés en la aplicación: tema
•
Data item ! El actual elemento de intercambio: elemento
Por tanto, se necesita el nombre de la aplicación o servicio (generalmente es el
nombre del archivo ejecutable de la aplicación) que especifica el nombre del servidor de
aplicación al cual, el cliente está enlazando; el tópico de datos (a menudo es el nombre de
un archivo, pero esta definición puede variar) para abrir el enlace a la aplicación
servidora, por último, necesitará el elemento de dato (el cual, es frecuentemente el
nombre de una variable). Los Datos y comandos son transferidos en formato texto por
convención.
El tema es el segundo nivel en las tres cadenas de caracteres y define el objeto de
una conversación DDE, y es usualmente significativo tanto para la aplicación servidor y
cliente. El elemento identifica el dato o valor que se está pasando durante la conversación
DDE entre el servidor y el cliente.
De acuerdo con los mensajes utilizados del entorno Windows ® hay tres tipos de
conversaciones DDE: enlace frío (cold-link), enlace caliente (hot-link) y enlace templado
(warm-link).
Diciembre del 2004
IE-0502
17
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
2.4 Enlaces OLE para Windows
Las siglas OLE provienen del inglés Object Linking and Embedding, lo que
traducido al español sería enlace e inclusión de objetos.
12
Es una especificación de
Microsoft creada para trabajar en Windows haciendo posible la integración de objetos
entre aplicaciones, lo que permite crear documentos con entidades provenientes de
distintas aplicaciones.
Los objetos pueden ser casi cualquier tipo de información, incluyendo texto,
imágenes de mapa de puntos, gráficos vectoriales e incluso anotaciones de sonido y
vídeo.
A través de OLE es posible que los programas se comuniquen entre sí e
intercambien información sin pérdida de detalle, independientemente de su origen. Pero
el proceso no se produce de forma automática, de modo que es preciso conocer su
funcionamiento para poder aprovechar sus posibilidades.
OLE fue introducido en 1991 como una extensión del protocolo DDE, que fue
creado para pasar datos entre aplicaciones, y en especial, desde la hoja de cálculo Excel.
Los programas que en la actualidad admiten el uso de OLE, lo hacen conforme a las
normas de OLE1 u OLE2, siendo esta última versión más moderna (1993) y eficaz que la
primera, permitiendo entre otras cosas el paso de datos mediante la técnica drag and drop
(arrastrar y soltar) y la edición in situ de los datos.
OLE no es soportado por Windows de forma directa, lo que quiere decir que no
todos los programas de este entorno gráfico trabajan en OLE, ya que es preciso que las
aplicaciones hayan sido diseñadas para soportar sus funciones.
La especificación OLE permite incorporar enlaces entre determinadas partes de
los programas, y así, es posible controlar desde una aplicación lo que se está realizando
en otra.
Una aplicación que trabaja con OLE puede actuar como servidor, como cliente o como
las dos cosas.
12
http://personales.unican.es/togoresr/r40p64.htm
Diciembre del 2004
IE-0502
18
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Para que se puedan pasar los datos entre aplicaciones, se requiere que existan
copias completas de los datos en la memoria, para permitir controlar qué datos van siendo
pasados.
OLE permite el intercambio de datos de dos formas: enlace e inclusión, también
conocidas como vinculación e incrustación, posibilitando la creación de documentos
compuestos, o sea, documentos formados por varios objetos de datos provenientes de
múltiples aplicaciones. Un objeto incluido está totalmente contenido dentro de la
aplicación cliente. Un objeto enlazado tiene una conexión en la aplicación cliente y sólo
es accesible a través de la aplicación que contiene los datos originales. En cualquiera de
los dos casos, si se pulsa dos veces seguidas sobre el objeto, se activa el programa
servidor para permitir la edición de los datos.
13
Podemos considerar que OLE es un subconjunto de la tecnología ActiveX,
encargada de la vinculación e incrustación de objetos, y ambas se sustentan sobre COM
(Component Object Model). COM proporciona un mecanismo para permitir la
comunicación entre los objetos de una aplicación o entre distintos procesos,
proporcionando mecanismos para que un objeto pueda mostrar su funcionalidad a través
de una interfaz.
Por tanto, COM nos proporciona las conexiones y los interfaces que serán
utilizadas desde OLE para conseguir la automatización, para que una aplicación pueda
ofrecer una interfaz programable.
Las aplicaciones que vienen con Microsoft Office (Word, Excel, Access), el
propio Microsoft Internet Explorer, entre otros, soportan la automatización OLE.
OLE no es soportado por Windows de forma directa, lo que quiere decir que no
todos los programas de este entorno gráfico trabajan en OLE, ya que es preciso que las
aplicaciones hayan sido diseñadas para soportar sus funciones.
La especificación OLE permite incorporar enlaces entre determinadas partes de
los programas, y así, es posible controlar desde una aplicación lo que se está realizando
en otra.
Una aplicación que trabaja con OLE puede actuar como servidor, como cliente o como
las dos cosas.
13
Tomado http://www.iespana.es/perl-es/OLE.htm
Diciembre del 2004
IE-0502
19
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Para que se puedan pasar los datos entre aplicaciones, se requiere que existan
copias completas de los datos en la memoria, para permitir controlar qué datos van siendo
pasados.
2.5 Generalidades de un Servidor OPC
14
El OPC (en inglés OLE for Process Control), o en español OLE para control de
procesos, es una especificación técnica no propietaria definida por la Entidad OPC
Foundation (OPC Foundation es una entidad sin fines de lucro, encargada de administrar
la especificación OPC) y consiste básicamente en un Sistema de Interfaces Estándar
basado en OLE/COM y DCOM de Microsoft. Con OPC es posible ínter operar
dispositivos industriales con sistemas de información o aplicativos de escritorio. En otras
palabras, el OPC permite desarrollar de una manera muy práctica y eficiente aplicaciones
que pretendan comunicarse con equipos industriales controlados por PLC’s.
15
Desde un punto de vista general muchos aspectos de OPC son similares al
DDE, pero la diferencia principal está en la puesta en práctica usando la tecnología de
COM de Microsoft (modelo componente del objeto). Permite intercambio rápido con
datos de proceso de la automatización y el interfaz abierto de OPC, permite el acceso a
los datos del servidor de OPC de la misma manera estándar de los usos del cliente de
OPC.
16
OPC es un conjunto de protocolos para interfaces OLE/COM estándar
destinados
a
estimular
una
mayor
interacción
entre
las
aplicaciones
de
control/automatización, los dispositivos/sistemas de campo y las aplicaciones de
ofimática/gestión en la industria de control de procesos.
En cooperación con Microsoft, cinco empresas, Intellution, Opto-22, FisherRosemount, Rockwell Software y Intuitiv Software, se unen para crear OPC Foundation
en Mayo de 1995. El objetivo del comité conformado fue proporcionar una interfaz de
programación de aplicaciones estándar para el intercambio de datos que pudiese
simplificar el desarrollo de drivers de I/O y mejorar el rendimiento de los sistemas de
interfaz.
14
Tomado de http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art123.asp
Traducido del manual de ayuda del OPC Server de la compañía Unitronics
16
Tomado de https://www.software.omron.es/software/cx/pages/cx_comun.jsp?id=6
15
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
20
El OPC eliminó problemas de duplicación de esfuerzo, inconsistencias entre
vendedores de drivers, soporte para cambios en características de hardware, conflictos de
Acceso, estableciendo una interfaz de comunicación común, lo cual ha beneficiado
enormemente el desarrollo de aplicaciones HMI y sistemas SCADA.
El OPC ofrece varias ventajas entre las cuales destacan las siguientes:
•
Los fabricantes de hardware tienen que hacer solamente un conjunto de componentes
de software para que los clientes los utilicen en sus aplicaciones.
•
Los desarrolladores de software no tienen que rescribir drivers debido a cambios en
características o adiciones en un hardware.
•
Los clientes tendrán más opciones con las cuales puedan desarrollar diversos sistemas
de aplicación a nivel industrial.
Posibilidades con el OPC:
•
Acceder a datos en línea: La lectura y la escritura eficiente de datos entre una estación
central y un dispositivo de control de procesos se puede realizar de forma flexible y
eficiente.
•
Control de alarmas: El OPC provee mecanismos para que sus clientes sean
notificados de la ocurrencia de acontecimientos y de condiciones de alarmas
especificadas.
•
Acceso a datos históricos: El OPC permite la lectura, procesamiento y corrección de
datos históricos con un eficiente motor de acceso.
Con la arquitectura OPC se aprovechan las ventajas de la interfaz COM para
ampliar su funcionalidad.
La especificación OPC incluye lo siguiente:
•
Interfaz COM/DCOM para ser usada por clientes Locales o Remotos.
•
Referencias a la Interfaz de Automatización OLE.
Requerimientos de Funcionalidad:
•
OPC es respaldado completamente por C++, Visual Basic y Delphi.
•
Cualquier cliente con interfaz OLE.
•
No respalda el uso con VBScript o JavaScript.
Diciembre del 2004
IE-0502
•
21
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
La especificación OPC requiere como Sistema Operativo Windows 95/98 (con
DCOM), Windows NT 4.0 o Superior. En todos los casos es recomendable instalar la
última versión de Services Pack correspondiente.
La Figura siguiente representa el funcionamiento del OPC con las interfaces
personalizada y automatizada.
Figura N°2.1 Funcionamiento e Interfaces de OPC17
El modelo jerárquico de objetos definido por OPC Foundation se representa en la
siguiente figura:
Figura N°2.2 Modelo de Objetos del Servidor de Automatización OPC
La descripción de cada uno de los objetos del modelo anterior, se presenta en la
siguiente tabla:
17
Tomado http://www.iespana.es/perl-es/OLE.htm
Diciembre del 2004
IE-0502
22
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Tabla 2.1 Descripción de la colección de objetos de la especificación OPC
OBJETO
DESCRIPCIÓN
Servidor OPC
Es una instancia de un servidor OPC. Se debe crear un objeto Servidor
OPC antes de poder referenciar los otros objetos.
Este contiene la
colección Grupos OPC y el objeto Buscador OPC.
Grupos OPC
Es una colección de los objetos Grupo OPC que el cliente ha creado.
Grupo OPC
El propósito de este objeto es mantener la información de estado y
proveer el mecanismo para ofrecer los servicios de adquisición de datos
por la colección de objetos Ítem OPC.
Ítems OPC
Es una colección que contiene todos los objetos Ítem OPC que el cliente
ha creado.
Ítem OPC
Es un objeto que mantiene la definición de los ítems, sus valores, estados
y datos de la última actualización.
Buscador OPC
Es un objeto que permite buscar nombres de ítems en un servidor
configurado.
Un servidor de acceso a datos OPC está formado por varios objetos: el servidor, el
grupo y el elemento.
El servidor de objetos OPC ofrece información sobre el
servidor y sirve como un contenedor de grupos de objetos OPC. El grupo de objetos
OPC mantiene información acerca de sí mismo y proporciona los mecanismos para
contener y organizar lógicamente los elementos OPC; los grupos OPC proporcionan
una forma para organizar los datos de los clientes; por ejemplo, el grupo podría
representar los elementos en una pantalla particular del operador o a través de un
informe; los datos pueden ser leídos y escritos, y las conexiones basadas en excepciones,
pueden ser creadas entre el cliente y los elementos en el grupo y pueden ser activadas y
desactivadas según sea necesario; un cliente OPC puede configurar el porcentaje de los
datos que deben ser cambiados antes de la actualización.
Hay dos tipos de grupos, públicos y locales (o privados); los públicos se realizan
para ser compartidos entre varios clientes, mientras que los locales son privados para el
Diciembre del 2004
IE-0502
23
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
cliente en cuestión. Existen interfaces específicas opcionales para los grupos públicos;
dentro de cada grupo, el cliente puede definir uno o más elementos OPC
Los elementos OPC representan conexiones a fuentes de datos dentro del
servidor; un elemento OPC, no es accesible por el cliente como un objeto. Así pues, no
hay una interfaz externa definida para un elemento OPC; todos los accesos al elemento
OPC se realizan a través del objeto grupo OPC que contiene el elemento OPC, o
simplemente el grupo en el que el elemento ha sido definido.
Asociado a cada elemento existe un valor, calidad y valor temporal.
Los
elementos no son las fuentes de datos, sólo son conexiones a ellas; el elemento OPC debe
ser entendido como la dirección de los datos, no como la fuente física actual de los datos
a los que la dirección referencia, puesto que la fuente real de los datos es el dispositivo
controlador, regularmente un PLC.
2.6 Compilador Gráfico Delphi.
18
Borland Delphi es un ambiente de Desarrollo Rápido de Aplicaciones (RAD:
Rapid Application Development) para el lenguaje ObjectPascal en el sistema operativo
Windows 95/98/NT/2000 es producto de BORLAND Corporation. Los sistemas RAD
están orientados a facilitar la productividad en el desarrollo de software, a las velocidades
de procesamiento que brinda actualmente el hardware.
Algunas de las características que hacen de Delphi un sistema de alta
productividad y excelencia son:
•
Ambiente visual de desarrollo para aplicaciones controladas por intervenciones o
eventos de usuario sobre interfaces gráficas. Fácil integración de informes y
gráficos de gestión.
•
Lenguaje de programación de excelencia en estilo y expresividad: ObjectPascal.
ObjectPascal de Delphi es un Pascal Orientado a Objetos (OO), completamente
comprometido con el modelado de objetos.
•
Proporciona una jerarquía muy extensa de Clases de Objetos reusables y
extensibles, con recursos de computación visuales y de procesamiento.
Diciembre del 2004
IE-0502
•
24
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
En las versiones Professional y Enterprise, Delphi ofrece clases para el desarrollo
de aplicaciones en Internet soportadas por TCP/IP, para aplicaciones distribuidas.
También con soporte a los modelos de distribución de objetos COM, DCOM y
CORBA.
•
Componentes integrados dentro del lenguaje, lo que reduce considerablemente la
utilización de librerías y controles externos, por lo tanto menos problemas para el
usuario.
•
Tratamiento de errores mediante excepciones.
•
Soporte avanzado de Bases de Datos mediante BDE (Borland Database Engine),
ADO (ActiveX Database Objects, tecnología de Microsoft de acceso a Bases de
Datos e Internet) , finalmente InterBase Express, acceso nativo a InterBase, para
desarrollo Cliente/Servidor off-line.
•
Componentes compatibles con Microsoft Office.
•
Facilidad en la distribución de aplicaciones con el InstallShield Express.
Básicamente, estas descripciones técnicas, lo que quieren decir para esta
aplicación es que esta herramienta (Delphi), permite extraer la información de un
servidor OPC que se comunica con PLC con un protocolo determinado y por medio de
los enlaces OLE de Windows, realiza una aplicación gráfica de monitoreo estilo SCADA
en donde refresca constantemente los datos transmitidos, creando así una interfaz HMI.
Los elementos utilizados para este tipo de aplicaciones (las anteriormente
citadas), dependen de herramientas tales como OLE y ActiveX Database Objects 19
(nueva tecnología de acceso a datos), tanto como funciones (eventos) drag and drop,
entre otros.
Este tipo de aplicaciones son una buena muestra de tecnología y hace uso de
innumerables elementos, por lo que una plataforma como Delphi es de gran utilidad al
poseer todo este tipo de operaciones de avanzada.
18
Tomado de http://afrodita.faces.ula.ve/MartaSananes/Cursos/Delphi/ y
http://leo.worldonline.es/acanudas/pdf/dp5intro.pdf
19
Microsoft ActiveX Data Objects (ADO) es una interfaz basada en Automatización para obtener acceso a
datos. ADO utiliza la interfaz de OLE DB para tener acceso a un amplio conjunto de orígenes de datos,
incluyendo pero no limitándose a los datos proporcionados mediante ODBC. Tomado de
http://www.sqlmax.com/ado.asp
Diciembre del 2004
IE-0502
25
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
CAPÍTULO 3: Desarrollo de una Interfaz HMI
Debido a que todos los PLCs son diferentes tanto en características de Hardware
como de Software este capítulo es dedicado al conocimiento y descripción del modelo de
PLCs M90, empezando desde una reseña de la compañía desarrolladora de este tipo de
controladores, hasta el propósito del proyecto, la implementación de la aplicación
SCADA para este PLC. Por lo que se tratarán temas tales como especificaciones técnicas
eléctricas en su mayoría, hasta la descripción de los registros internos de este aparato.
3.1 Breve reseña de la compañía Unitronics
20
Unitronics Ltd. es una compañía de tecnología avanzada, cuya especialización
particular es en el área de producción de Controladores Lógicos Programables (PLC),
cerebros de la computación que hacen posibles las líneas de producción automatizadas.
Su personal abarca a cuarenta personas de gran conocimiento, del sector de alta
tecnología israelí. Entre los aspectos más destacados es el departamento R y D, esta
compañía se ha sostenido en el filo de la investigación técnica y el desarrollo. Desde
1989, Unitronics ha introducido muchos productos innovadores que han revolucionado el
acercamiento a la producción de las líneas de automatización.
Entre sus productos destacados están el WebPLC™. Este dispositivo basado en
Internet transformó el acercamiento de la industria a las comunicaciones de datos.
Unitronics entrega sus productos a través de distribuidores en Europa, América del sur,
Asia, y su subsidiaria surafricana.
Los productos han estado en servicio de plantas de compañías importantes tales
como: Coca Cola, Dannone, Elf Lub N.V., Campiña Melkuni Mona, Agfa, ColgatePalmolive, Avena Quaker, Industrias Aeronáuticas de Israel, Granja Frites, Heinz, Las
minas de oro de Klooftmine, y Nestlé.
20
Tomado de www.unitronics.com y traducido al español por Alexander Barrantes Muñoz.
Diciembre del 2004
IE-0502
26
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
3.1.1 Misión
Su misión es hacer la automatización eficiente, comprable, y alcanzable.
El principal propósito de la producción de la cadena
de automatización es
producir mercancías sin la intervención humana.
El equipo del R y D crea los nuevos dispositivos de la automatización (PLC)
combinando un conocimiento profundo de requisitos industriales y de la maestría técnica
con el único objetivo de la utilidad.
Los resultados son PLCs que cumplen constantemente el estándar para la industria
de la automatización.
Los productos de Unitronics se utilizan en petroquímica,
automovilismo, procesamiento de alimentos, plásticos y textiles, energía y ambiente, del
agua y de aguas residuales, en cualquier campo donde se requieren procesos
automatizados.
3.1.2 Historia de sus productos
En esta compañía dentro de sus grandes talentos destacan: la capacidad de
desarrollar nuevas tecnologías y de utilizarlas para construir dispositivos rentables que
ofrecen funcionalidad excepcional.
Unitronics irrumpió en el campo de la automatización industrial en 1989 con el
revolucionario ADP86. Este dispositivo (PLC) era más rápido que cualquier producto de
la competencia.
También tenía otras dos características importantes: protocolos de
comunicaciones
flexibles
y
habilidades
programables
de
trabajos
múltiples.
Increíblemente el ADP86 poseía un precio de $5.000, donde los productos de
competencia con menor funcionalidad valían $15.000 o más.
En 1992, Unitronics hizo una brecha épica en tecnología de la automatización. Se
creó el último PLC de uso fácil, el OPLC™. Las series de OPLC™ combinan paneles de
operación y PLC’s en un solo dispositivo unificado, fácil de programar y operar.
El OPLC™ sobresalió y cambió radicalmente la automatización.
Unitronics
refinó y desarrolló una gama completa de dispositivos OPLC™, apuntando a un lugar de
mercado específico en el mundo de la automatización.
El M90, lanzado en 1999, es el pináculo del desarrollo de OPLC™, un paquete
minúsculo que incluye grandes características.
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
27
El año 2000 trajo el WebPLC™ basado en Internet. WebPLC™ de Unitronics
estuvo conducido por la onda del Internet, la revolución de las comunicaciones, en donde
el Internet entró en cada faceta de la vida pública y privada.
El WebPLC™, en las etapas finales del desarrollo, culmina al integrar lo mejor
de la nueva tecnología en los productos.
3.1.3 Breve Organigrama de la compañía
Abajo se muestra un pequeño gráfico del organigrama de la compañía Unitronics.
Figura N°3.1 Organigrama de la Co. Unitronics
3.1.4 Puntos Claves
•
La materia prima más importante es la gente.
•
La llave a la automatización acertada es la comunicación.
•
El personal trabajador del R y D abarca las disciplinas de la ingeniería,
programación, y comunicaciones.
3.1.5 Productos
•
Creación de PLC’s con interfaz integrado del operador.
•
Las series del Controlador OPLC™ combinan paneles de operación y PLC’s en
un solo dispositivo unificado, fácil de programar y operar.
Los paneles de
Operación contienen una pantalla y un teclado de visualización. La pantalla de
Diciembre del 2004
IE-0502
28
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
visualización se utiliza para exhibir mensajes, de modo que el PLC pueda
comunicarse con el operador que supervisa el proceso automatizado. El teclado
se utiliza para incorporar la información en el sistema y para iniciar funciones, de
modo que el operador pueda comunicarse con el PLC corriendo el proceso
automatizado.
3.2 La familia de productos de Unitronics
Los dispositivos campo-endurecido son utilizados para condiciones exigentes que
existen en industria pesada o ligera. Los productos de Unitronics son para satisfacer
cualquier proceso automatizado.
• Controladores OPLC™ para los usos que requieren un interfaz del operador.
• PLC’s con configuraciones I/O internas.
• PLC tradicionales
•.Tarjetas de entrada-salida para el proceso de datos, para uso de aplicaciones de
automatización.
La familia de Controladores Unitronics, poseen los siguientes modelos:
Los Controladores con HMI son:
• M310
• M216
• M228
• M190
• M218
• M90
• M210
Seguido del M90, Unitronics introduce una nueva serie de controladores, llamada Vision.
Hay tres tipos de controladores en esta serie:
•
Vision 230
•
Vision 260
•
Vision 280
Abajo se muestran tres de sus modelos.
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
29
Figura N°3.2 Familia de PLCs de Unitronics
3.2.1 Características generales de los productos
La familia de PLCs Unitronics poseen características generales comunes entre cada
modelo, abajo se describen las principales:
•
R.T.C. Reloj en tiempo real. Este reloj permite funciones específicas del reloj. El RTC
tiene un respaldo de la batería de 7 años.
•
Tamaño del programa de 16K palabras. La cuenta de la palabra se hace según la
traducción del programa de STL.
•
Tiempo de ejecución. El tiempo de la exploración es 0,5 microsegundos por un bit de
operación
•
Teclado. La tecla del modo de información (< i >) se utiliza solamente para mostrar a
través de las pantallas, la información de los sistemas de operación. Para el Vision 260 se
tienen 33 teclas.
•
Pantalla. La serie Vision tiene una pantalla gráfica. Se puede crear hasta 100 diferentes
exhibiciones que acomodan hasta 60K de datos. Cada exhibición puede contener el
texto libre, bmp (mapa de bits) y variables.
•
En cada exhibición se puede agregar hasta 16 variables. Las variables pueden venir en
forma de texto o representado por una imagen del valor del bit del estado, de las listas,
Diciembre del 2004
IE-0502
30
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
del tiempo y la fecha, y de los valores de los contadores.
•
VisiLogic permite al programador: Construir la aplicación del PLC usando elementos y
funciones click-and-drop en el VisiLogic.
3.2.1.1 El modo de información
•
El modo de información (Info.) es una ventana dentro del controlador.
•
Permite que un operador compruebe y cambie los valores específicos almacenados dentro
de un controlador sin la necesidad de una PC o del software U90.
•
El modo del Info. es seleccionado presionando la tecla < i > por varios segundos.
3.2.1.2 La estructura de memoria de la serie M90
La estructura de memoria de la serie M90 es constituida por 4 elementos:
•
MB, Bit de Memoria. Puede ser 1 o 0 lógico.
•
SB, Bit del Sistema.
•
MI, Enteros de Memoria. Registro de 16 bits (15 + signo) que puede ser cualquier
número entero dentro de la gama -32768 a +32767.
•
SI, Enteros del Sistema. Registro de 15 bits controlado por el sistema que puede ser
cualquier número entero dentro de la gama -32768 a +32767.
El SI y el SB son una clase de interfaz entre el sistema de operación y el programador (o
una aplicación).
Toda la memoria de la serie Vision es respaldada por una batería.
Otros operandos que participan en la estructura de memoria son:
•
I, Entradas .
•
O, Salidas.
•
T, Temporalizadores.
•
#, Números directos.
•
MB y MI - un total de 256 de cada uno. Los primeros 16 MBs y MIs están bajo
respaldo de bateria.
•
Temporalizadores - un total de 64.
Diciembre del 2004
IE-0502
31
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
•
Entradas y Salidas - según la configuración de hardware.
La serie M90 trabaja con memoria flash. La memoria flash es más estable porque no es
dependiente en una fuente de alimentación.
Un procedimiento de la transferencia directa consiste en:
•
“Ladder”
•
HMI
•
Temporalizadores
•
Variables
•
Configuración del Hardware
•
Configuración del Modem
•
SMS
La serie M90 permite la descarga en marcha .
Los procesos de descarga en los controladores de Unitronics ocurren en una memoria
RAM y desde ella van al flash mientras que la máquina todavía funciona.
Solamente una descarga de un cambio en la configuración del hardware o un bloque de la
función conducirá a la parada y al reajuste del controlador.
3.2.1.3 Variables
El M90 tiene 50 variables diferentes. Las mismas variables pueden ir en muchas
pantallas diferentes y cadenas de caracteres SMS. Las variables binarias permiten que el usuario
agregue el texto a la pantalla de la serie M90 según el estado de cierto bit. Este bit puede ser un
MB, SB, I, O ó un contador de tiempo. Para evitar problemas de memoria sólo se puede
introducir 6 caracteres por cada opción.
La variable Entera permite que el usuario pueda leer o escribir el valor de cierto registro
desde la memoria del controlador, estos enteros de sólo lectura pueden ser un MI o un SI.
Los límites de la linearización y de la entrada son parte del trabajo que el sistema de
operación hace para el usuario.
Este número entero puede ser cualquier tipo de datos, construido con la ayuda de una
contraseña para pantallas que llevan a cabo información sensible.
Diciembre del 2004
IE-0502
32
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
3.2.1.4 Comunicación
La serie M90 tiene 2 puertos de comunicación posibles:
1 puerto serial RS232
1 CANbus
Puerto Serial
Se utiliza el puerto serial para descargar aplicaciones en el PLC M90. El puerto serial
trabaja con:
•
RS232
•
RS485 + convertidor
El M90 es un esclavo en una red de comunicación serial.
El puerto serial se comunica con el PLC M90 usando el protocolo Pcom de Unitronics.
El Pcom es un protocolo cerrado, lo que significa que no se puede agregar funciones a él. Sin
embargo, se da libremente como OCX con toda la documentación de modo que cualquier
persona pueda ponerla en ejecución en una aplicación en su PC.
Uso del protocolo Pcom
Una PC puede hablar con un PLC M90 en una de dos maneras:
•
Implementando un protocolo en una aplicación en la PC.
•
Usar una aplicación de un servidor DDE.
•
Usar una aplicación de un servidor OPC.
El M90 no puede inicializar la comunicación en una comunicación serial. El puerto serial es
también un puerto de acceso remoto y un dispositivo de conexión.
Puerto de CANbus
La Serie M90 tiene un puerto CANbus.
El Unitronics CANbus corre en la misma capa física que el A.B. DeviceNet pero en un
diferente protocolo.
El puerto de CANbus se puede utilizar de 3 maneras:
•
Para conectar 32 unidades con uno de los grandes controladores Unitronics.
•
Para conectar una red de hasta 63 unidades con una PC.
Diciembre del 2004
IE-0502
•
33
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Para conectar una red de hasta 64 unidades entre sí.
El puerto CANbus está situado al lado del controlador.
3.3 Características Generales del M90 OPLC™
21
El M90 Es un PLC compacto con I/Os integrados e interfaz gráfica de operador.
La siguiente tabla describe brevemente, la cantidad, simbología y otras características de
los registros internos del M90.
Tabla 3.1 Descripción de registros internos del M90
Símbolo del tipo de Dato
Bits de Memoria
(bobinas): 1024
Enteros de Memoria
(registros): 256, 16 bit
Bits del sistema:
256
Enteros del sistema:
256, 16 bit
Símbolo Símbolo del tipo de Dato
MB
Contadores:
64, 16 bit
MI
Entradas:
512
SB
Salidas:
512
SI
Símbolo
T
I
O
Los tipos de datos del sistema, mencionados abajo, se ligan a ciertos valores o funciones
del controlador y son reservados para uso por el sistema. Algunos de ellos están disponibles.
La interfaz RS232 está vía los puertos seriales del tipo RJ-11. La siguiente tabla muestra
la distribución de sus pines.
Tabla 3.2 Distribución de pines del puerto RS232
Diagrama
21
Número de Pin
1
2
3
4
5
6
Función
Desconectado
Referencia 0V
Señal TxD
Señal RxD
Referencia 0V
Desconectado
Traducido de la guía del usuario del OPLC Vision 230
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
34
La conexión PC-PLC se muestra en el siguiente gráfico:
Figura N°3.3 Conectando la PC con un Controlador
Análogamente, la descripción de conexión para el puerto CANbus, sigue la descripción
de la siguiente tabla:
Tabla 3.3 Descripción de conexión para el puerto CANbus
-V Fuente común de 24V para CANbus
L CAN low
PE Tierra
H CAN high
+V Fuente de 24V para CANbus.
Con respecto al modo de información, una descripción más detallada de las categorías
que se pueden acceder por medio de él, se describe en la siguiente tabla.
Diciembre del 2004
IE-0502
35
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Tabla 3.4 Categorías de información que se pueden alcanzar en el modo de Información
Categoría
Tipos de
Datos
Tema
Entradas
Salidas
Bits de Memoria
Bits del Sistema
Contadores
Sistema
Modelo
y
Versión O/S
Modo de Trabajo
Tiempo y Fecha
ID de la Unidad
Puerto Serial 1
Clave
CANbus Baud
Rate
Ajuste de la
Pantalla Sensible
al Tacto
Nuevo
Acciones Posibles
• Ver estado de las entradas
• Forzar el estado de las entradas a 1 (FR1) o 0 (FR0). Los valores forzados permanecen en
efecto hasta que se selecciona el modo normal (NRM), o hasta el controlador se inicializa o
reajuste. Los valores forzados de las entradas no afectan su programa. Esto puede ser útil en la
prueba del efecto de una condición de la entrada en un estado de la salida
• Ver estado de las salidas
• Forzar el estado de las salidas a 1 (FR1) o 0 (FR0). Los valores forzados de las salidas no
afectan su programa.
• Set/Reset el estado de la salida
• Ver el estado de los bits.
• Cambiar el estado de los bits (Set/Reset).
• Entrar el valor del tiempo preestablecido
• Ver el valor y el estado actuales del contador de tiempo seleccionando la opción de R.T.
• Revisar el número de modelo del controlador y la versión del sistema operativo
• Revisar si el controlador está en modo de funcionamiento o de parada
• Revisar si el controlador está en modo de funcionamiento o de parada
• Reajustar el controlador. Esto reinicia el programa; restaurando valores de encendido y
todos los tipos de datos a excepción de esos protegidos por el respaldo de memoria con la
batería
• Inicializar el controlador. Esto recomienza el programa e inicializa todos los valores,
restaurando los valores a 0 a todos los tipos de datos
• Ver los ajustes del reloj en tiempo real (RTC). Observe que todos los ajustes del control del
RTC están basados en funciones de tiempo.
• Cambiar los ajustes del RTC vía el teclado del controlador.
El número de ID de la unidad identifica la posición en la red del controlador.
• Cambiar el número de ID. El nuevo número de ID será recordado en efecto hasta que el
controlador sea reiniciado.
• Quemar el número de ID dentro de la memoria FLASH del controlador. Esto es un cambio
permanente.
• Ver y editar los ajustes de comunicación.
• Seleccionar cambiar o quemar los nuevos ajustes.
• Cambiar el baud rate del CANbus.
• Seguir la instrucciones de la pantalla.
• Ajustar una nueva clave
3.3.1 Tipos de datos del sistema
Los tipos de datos específicos se ligan a los parámetros fijos y son inalterables por el
programa de usuario, tal como Bit de encendido SB 2. Se puede escribir en ciertos tipos de
datos. Éstos están marcados con un asterisco (*), por ejemplo el ID de la unidad (SI 8). Todos
los SBs y SIs no listados son reservados para uso por el sistema.
Las siguientes tablas, muestran los registros del sistema y sus respectivas funciones y
han sido divididos por grupos de cada categoría.
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
36
Tabla 3.5 La función de los bits del sistema
Bits del sistema (SB)
0
1
2
3
4
5
5
7
8
30
31*
32
40-63
200*-215*
236
237*
250
251
Función
Siempre 0
Siempre 1
Bit de encendido
Pulso de un segundo
Divide por cero
Salida(s) de corto circuito
Teclado activo
Pulso de 100ms
Batería baja
Entradas del teclado numérico HMI completo
Refrescar lo mostrado actualmente en la Pantalla LCD
Entradas del teclado numérico HMI en progreso
Teclas del teclado numérico
Operadores de red
Error de comunicación de red
Red desactivada
Entrada del teclado numérico dentro de los límites
Entrada del teclado numérico excede los límites
Tabla 3.6 Funciones de Bits del Sistema del teclado
Bits del
Sistema
(SB)
SB 40
Tecla
del
Teclado
Bits del
Sistema
(SB)
SB 47
SB 41
SB 48
SB 42
SB 49
SB 43
SB 50
SB 44
SB 51
SB 45
SB 52
SB 46
SB 53
Tecla
del
Teclado
Diciembre del 2004
IE-0502
37
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Tabla 3.7 Funciones de los Enteros del Sistema
Enteros del Sistema
0
6
7*
8*
9*
30*
31*
32
33
34
80
81
82
83
200*-201*
236
237
Función
Tiempo de exploración
Tecla actual presionada
Contraste del LDC (solo V280)
ID de la unidad
Intensidad de las luces del LDC
Segundos actuales, según RTC
Tiempo actual, según RTC
Fecha actual, según RTC
Año actual, según RTC
Día actual, según RTC
Estado del Modem: COM1
Código de error del Modem: COM1
Estado del Modem: COM2
Código de error del Modem: COM2
Operadores de red
Código de Comunicación de red
Red: falla del ID de la unidad
3.3.2 Especificaciones Técnicas
•
I/Os: integrados, se integran en el sistema vía módulos snap-in.
o Entradas Digitales: 10 entradas PNP, voltaje nominal 24VCD con 3mA,
impedancia 8.4kΩ, longitud del cable mayor a 100 metros.
o Entradas Analógicas: 10 bits, multi-rango de entrada de: 0-5V, 0-10V,0-20mA, 420mA. Método de conversión aproximación sucesiva. Impedancia mayor a
100kΩ a voltaje constante y 250Ω a corriente constante.
o Salidas Digitales: 6 salidas de relee a 230VCA/24VCD tipo SPST-NO. Corriente
máxima 5A a carga resistiva o 1A a carga inductiva. Frecuencia máxima 10Hz
•
Dimensiones: 96.5 x 96.5 x 65 mm.
•
Montaje: Panel montado vía soportes
•
Fuente de Alimentación: Voltaje de entrada 24VCD. Rango Permitido de 20.4VCD a
28.8VCD con menos de un 10% de rizado.
Diciembre del 2004
IE-0502
38
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
•
Consumo máximo de corriente 140mA a 24VCD.
•
Consumo típico de energía: 3.2W
•
Pantalla Gráfica: LCD, tipo STN, Iluminación por leds, amarilla-verde lámpara trasera.
Tamaño de 1 línea de caracteres largos. Tamaño de carácter matriz de 5x7, 3.07 x
5.73mm.
•
Teclado: 15 teclas, Incluye teclas suaves y teclado alfanumérico. Tecla de metal de tipo
domo, selladas por membrana
•
Programa del PLC: 1024 palabras. Tiempo de ejecución por bit de operación: 12µs por
bit de operación, 256 bits, 256 registros de enteros, 64 temporizadores. 80 pantallas para
el usuario, 50 variables HMI.
•
Comunicación: 1 puerto RS485/ RS232 vía convertidor, 1 puerto CANbus. Programa del
PLC: 1024 palabras. Tiempo de ejecución por bit de operación: 12µs por bit de
operación, 256 bits, 256 registros de enteros, 64 temporizadores. 80 pantallas para el
usuario, 50 variables HMI.
•
Reloj (RTC) para fecha, tiempo y año con respaldo de batería de 7 años.
•
Peso: 280g (9.8 oz).
•
Ambiente: dentro de gabinete IP20 / NEMA1, panel montado IP65 / NEMA4X (frente al
panel), temperatura de Operación 0 a 50ºC (32 a 122ºF), temperatura de almacenamiento
-20 a 60ºC (-4 a 140ºF), humedad relativa (RH) 5% a 95% (no-condensada).
•
Accesorios: cable de programación, conector de fuente de alimentación y entradas, CD
del Software U90Ladder.
Diciembre del 2004
IE-0502
39
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Los gráficos del M90 se muestran a continuación.
Figura N°3.4 PLC M90
3.3.3 Acceso de datos
22
El servidor OPC de Unitronics es un programa de aplicación de 32 bits de Microsoft
Windows, que actúa como servidor del protocolo de comunicación y permite que otros
programas de Windows tengan acceso a los datos de los controladores lógicos programables de
UNITRONICS (PLCs) siguientes que usan el interfaz de programación (RS232):
22
-
M90,
-
M200,
-
Vision 230.
Traducido del manual de ayuda del OPC Server de la compañía Unitronics
Diciembre del 2004
IE-0502
40
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Cualquier programa que sea capaz de actuar como un cliente de OPC o del DDE puede
utilizar el servidor de UNITRONICS, es decir el servidor de Microsoft Windows apoya
protocolos de OPC y del DDE. Retomando lo expuesto en la sección 2.3.2., el protocolo de
comunicación direcciona un elemento de datos en una conversación que utilice a convención de
nombramiento de tres partes que incluye el nombre de la aplicación, el nombre del tópico
(asunto) y el nombre del Ítem (artículo). Lo que sigue describe brevemente a cada porción de
esta convención de nombramiento:
•
Nombre de la Aplicación
Nombre del programa de Windows (servidor) que tendrá acceso al elemento de datos. En
el caso de los datos que vienen o que van al PLC Unitronics M90, M200 o Vision 230 vía este
servidor, la porción de la aplicación de la dirección es UNITRONICS.
•
Nombre del Tópico
Los nombres significativos se configuran en el servidor para identificar los dispositivos
específicos.
Estos nombres entonces se utilizan como el nombre del tópico en todas las
conversaciones a ese dispositivo. Por ejemplo, Unit1. Se puede definir múltiples nombres del
tópico para el mismo dispositivo (PLC) para usar diferentes ítems en diferentes rangos.
•
Nombre del Item
Un elemento de datos específico dentro de un tópico específico. Por ejemplo, al usar este
servidor, los ítems pueden ser números enteros individuales de la memoria, entradas, salidas en
el PLC.
3.3.3.1 Nombre de los Ítems
El servidor Unitronics puede accesar las siguientes tipos de áreas de memoria: Enteros de
Memoria (MI), Bits de Memoria (MB), Entradas (INP), Salidas (OUT), Enteros del Sistema
(SI), Bits del Sistema (SB), Valor del Temporizador actual (TC), Valor del Temporizador
preestablecido (TP), Bit del Temporizador del tiempo de exploración (TS), Reloj de Tiempo
Diciembre del 2004
IE-0502
41
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Real, ID de la Unidad y Estado del PLC, entre otras. El tipo de ítems soportados son discretos,
Enteros y cadenas de caracteres.
La siguiente tabla muestra una descripción de los tipos de ítems del M90.
Tabla 3.10 Descripción de los tipos de ítems del M90
Nombre
Descripción
del Item
Tipo de
Rango de Valores
Rango
Tag
MBn
Bit
Discreto
0,1
n = 0 a 1023
MIn
Entero (16bits)
Entero
-32768...32767
n = 0 a 255
INPnn,b
Bit
Discreto
0,1
n = 00 a 63
b=0a7
OUTnn,b
Bit
Discreto
0,1
n = 00 a 63
b=0a7
SBn
Bit
Discreto
0,1
n = 0 a 255
SIn
Entero (16bits)
Entero
-32768...32767
n = 0 a 255
TCn
Entero sin
Entero
0... 65535
n = 0 a 63
Entero
0... 65535
n = 0 a 63
n = 0 a 63
signo (16bits)
TPn
Entero sin
signo (16bits)
TSn
Bit
Discreto
0,1
PS
Entero sin
Entero
1, 2, 3, 4, 5
Entero
0…255
Entero
0…255
Entero
1, 2, 3
signo (16bits)
SK
Entero sin
signo (16bits)
ID
Entero sin
signo (16bits)
RTC
Entero sin
signo (16bits)
CLOCK
C. de Caracteres
C. de Caracteres
Notas:
1. También las letras minúsculas mi, mb, inp, out, si y sb pueden ser usadas como primeros
caracteres de los nombres de ítems.
2. Toda dirección es decimal.
Diciembre del 2004
IE-0502
42
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
3. Para los ítems discretos INP y OUT, el último digito (b) representa el bit de posición dentro
del byte. EL bit de posición puede estar del 0 al 7.
4. Los ítems Entradas (INPnn,b), Valor del Temporizador Actual (TCn), Valor del Temporizador
Preestablecido (TPn), Bit del Tiempo de Exploración (TSn) son de sólo lectura. Los bits del
Sistema (SBn), Enteros del Sistema (Sin) son de Lectura y Escritura dependiendo de cómo son
usados en el PLC. Los ítems de Tecla de Ajuste (SK), Estado de PLC (PS) y El Reloj de Tiempo
Real (RTC) son de sólo escritura.
5. El ítem de Reloj (CLOCK) tiene el siguiente formato:
HH:mm:ss ddd DD/MM/AA, donde
HH hora (0…23);
mm minutos (0…59);
ss segundos (0…59);
ddd día de la semana (Lun, Mar, Mier, Jue, Vier, Sab, Dom);
DD día del mes (1…31);
MM mes (1…12);
AA 2 últimos dígitos del año.
6. Los ítems RTC y CLOCK no actúan como ítems generales. RTC es un ítem de sólo escritura
que provee el control de lectura-escritura de ítem CLOCK. Los siguientes valores del RTC son:
0 Posición neutral;
1 El servidor UNITRONICS lee el reloj del PLC y extrae los valores dentro del ítem CLOCK
(el ítem CLOCK puede ser activado);
2 El servidor escribe el contenido del ítem CLOCK al PLC;
3 El servidor escribe del tiempo de la PC al PLC (sincroniza los relojes de la PC y el PLC);
7. Los siguientes valores del ítem de Estado del PLC (PS) son:
0 Posición neutral;
1 Ejecución;
2 Alto ;
3 Inicio de Memoria y Reajuste;
4 Reajuste ;
Diciembre del 2004
IE-0502
43
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
5 Switch el BootStrap .
Ejemplos de llamadas de Items
Los siguientes ejemplos son nombres de ítems válidos:
MB0 MB109 mb1104
Bits de Memoria 0, 109 y 1104
MI0 MI9 MI615
Enteros de Memoria 0, 9 y 615
INP00,0 INP03,1 INP21,7 Entradas
OUT00,0 OUT10,3 OUT63,7 Salidas
SB2
si10
Bit del Sistema 2 y Entero del Sistema 10
TS2
Bits de Tiempo de Exploración 2
TP2
Valor del Temporizador Preestablecido 2
TC5
Valor del Temporizador Actual 2
SK
sk
Tecla de Ajuste
PS
ps
Estado del PLC
RTC
ID
rtc
id
CLOCK
Item del Control del Reloj de Tiempo Real
ID de la Unidad
Item de exhibición del Reloj de Tiempo Real
Los siguientes ejemplos son nombres de ítems inválidos:
MI MB inp8,1 out08
Muy pocos dígitos para Dirección o Posición del Bit
MI602400
Dirección fuera del Rango
MN22 m001
Tipo de Item Inválido
Monitoreo y Control de la Comunicación con el PLC
Los siguientes son ítems adicionales ofrecidos por el servidor UNITRONICS para monitorear y
controlar la comunicación con el PLC.
STATUS
Es un ítem discreto built-in, que indica el estado de la comunicación con el PLC. El ítem discreto
(STATUS) es ajustado a 0 cuando la comunicación falla y ajustado a 1 cuando la comunicación
Diciembre del 2004
IE-0502
44
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
es exitosa. El valor del ESTADO es ajustado a 0 después de 3 intentos fallidos consecutivos de
comunicación con el PLC.
Desde Excel, el estado de la comunicación puede ser leído entrando la siguiente formula en una
celda:
=UNITRONICS|tópico!STATUS, donde el tópico es el nombre del tópico configurado para el
PLC.
UPDATEINTERVAL
El ítem UPDATEINTERVAL es un ítem entero tipo Lectura/Escritura usado para accesar el
ajuste actual del intervalo a actualizar. Esto indica la petición actual del intervalo a actualizar (en
milisegundos). El valor de este ítem puede ser leído por el OPC ó DDE. El cliente puede insertar
nuevos valores a este ítem. El rango de valores válidos es desde 10 a 2147483647 milisegundos.
El valor cero indica que no hay ítems actualizados en este tópico. Los comandos de escritura son
todavía ejecutados (nuevos valores escribiéndose en el PLC) si el valor de UPDATEINTERVAL
es 0.
Nota: Por un valor de cero inserto al ítem UPDATEINTERVAL, un cliente puede parar todas las
actividades de actualización en el tópico correspondiente sin tener ítems desactivos.
MAXINTERVAL
El ítem MAXINTERVAL es un ítem entero tipo sólo lectura usado para accesar el intervalo
actualizado máximo medido (en milisegundos) de todos los ítems del tópico correspondiente
para el último ciclo completo del sondeo. El rango de valores válidos es desde 0 a 2147483647
milisegundos.
Los ítems UPDATEINTERVAL y MAXINTERVAL pueden ser usados para sintonizar el
funcionamiento de comunicación.
ITEMCOUNT
El ítem ITEMCOUNT es un ítem entero de sólo lectura usado para accesar el número de ítems
activos de un tópico correspondiente. El rango de valores válidos es desde 0 a 2147483647.
ERRORCOUNT
Diciembre del 2004
IE-0502
45
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
El ítem ERRORCOUNT es un ítem entero de sólo lectura usado para accesar el número de ítems
activos con errores en un tópico correspondiente. El rango de valores válidos es desde 0 a
2147483647.
ERRORITEMS
El ítem ERRORITEMS es un ítem entero de sólo lectura y escritura (único por cada tópico)
usado para accesar el total de números de ítems con nombre inválidos (estos ítems son
reexpulsados por el servidor). El valor de los ERRORITEMS puede ser reajustado por la
escritura de 0 a este ítem. El rango de valores válidos es desde 0 a 2147483647.
WRITECOUNT
El ítem WRITECOUNT es un ítem entero de sólo lectura usado para accesar el número de
comandos escritos (mensajes) esperando la ejecución. El rango de valores válidos es desde 0 a
2147483647.
Por ejemplo, en la siguiente manera, el ítem WRITECOUNT puede ser usado para evitar el
incremento de memoria ocupada por comandos de escritura no ejecutados.
activar el hot link con el ítem WRITECOUNT e iniciar a monitorear;
activar el nuevo comando de escritura (por la introducción de un nuevo valor) sólo si el valor de
WRITECOUNT viene a ser igual a 0, todos los comandos de escritura ejecutados y la memoria
ocupada por ellos es liberada.
SUSPEND
Item discreto especial que puede ser usado para controlar la comunicación con un tópico
separado. Si la aplicación cambia el valor de SUSPEND de 0 a 1, entonces la comunicación con
el tópico es suspendida. Si el valor de SUSPEND es cambiado de nuevo a 0 la comunicación con
el tópico es reasumida.
Nota: Si el tópico es suspendido ajustando el valor de SUSPEND a 1, entonces el servidor vuelve
a expulsar todo nuevo valor escrito a este tópico; ningún nuevo mensaje escrito es creado
después de que SUSPEND ha cambiado de 0 a 1.
Diciembre del 2004
IE-0502
46
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
3.4 Desarrollo del programa SCADA para la interfaz HMI
Este programa SCADA fue desarrollado en la plataforma de programación Delphi
Enterprise 5.0, utilizando leguaje Borland Pascal. Ya se mencionó un poco de las cualidades de
esta plataforma en la sección 2.6, por lo que simplemente se discute sólo características propias
del programa como tal.
Como uno de los primeros problemas que dio la utilización de esta plataforma de
programación fue que la versión no es la más actual en el mercado y los softwares de servidores
OPC siguen actualizándose de manera no paralela con esta plataforma de programación, por lo
que no se garantiza que Delphi importe todas las librerías de enlace dinámico (DLL) que existen.
Debido a esta problemática la importación del DLL del servidor OPC de Unitronics no se pudo
realizar, cuando mostró el primer intento fallido se optó por utilizar como cliente Excel por
medio del protocolo de comunicación DDE, donde sus accesos de datos son muy conocidos y
simples.
Delphi posee la cualidad de crear aplicaciones Excel por debajo (se refiere a no ser
percibido por el usuario), por lo que puede simular una celda, entre muchas otras cosas.
Brevemente se da una descripción del programa. Primeramente el programa entra a una
pantalla de conexión en donde por medio de objetos llamados TEdits, el usuario puede entrar ó
cambiar la dirección en donde se encuentra el ejecutable del Servidor OPC de Unitronics y la
unidad o tópico en que está configurado este; cuando el usuario se ha complacido, presiona un
botón de OK y carga sus datos. El usuario puede seleccionar las modalidades de Nuevo, Abrir o
Salvar que aparecen con los símbolos respectivos, o bien en la barra de herramientas, en
Archivo. Un icono de un PLC aparece en rojo si no hay conexión con el PLC y el puerto RS232
por medio del bit de STATUS; en caso contrario, este icono aparecerá en color verde, y una
barra de progreso se ejecuta mientras logra abrir Unitronics.exe (programa ejecutable del OPC
Server).
Un botón con un símbolo de hojas, sirve para crear lo que se conoce como TTabSheet,
simplemente es una hoja vacía igual a la de conexión, que se crea dinámicamente, seguidamente
aparece una ventana en donde solicita al usuario el nombre del proceso, si no es introducido
Diciembre del 2004
IE-0502
47
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
escribe Proceso_# y un número de contador por defecto, esto con el fin de crear varios carpetas
con diferentes estructuras emulando los departamentos o secciones de una planta.
Después se selecciona un botón con un símbolo ?, el cual hace aparecer una ventana en
donde muestra los diferentes nombres de los ítems del M90, que está compuesto por una lista
denominada TListBox que contiene las iniciales de los nombres (MB, SI, etc), y un TEdit en
donde solicita las direcciones respectivas. Aparece el rango de valores permitidos de cada
elemento de la lista, al seleccionar el elemento. Otro TEdit muestra el contenido del registro al
presionar el botón de probar y habilita un botón de crear. Otro TEdit es destinado para la etiqueta
del registro, que es introducida por el usuario o aparece Registro_# y un número de contador por
defecto, esto con el fin de identificar la relación de cada registro con el elemento de la planta.
Cuando el usuario ha seleccionado el registro a crear, simplemente presiona el botón de
crear y una ventana se abrirá con el mensaje de dar click al lugar donde desea el registro, en ese
momento se activa el evento 23
OnMouseClick que ha sido heredado a la TTabSheet
seleccionada en este instante, y este evento tiene como función seguir las coordenadas del mouse
e introducirlas a variables, cuando el motón de mouse es presionado entra en acción el evento
OnMouseDown que tiene como función capturar en las variables la posición en el instante
respectivo. Seguidamente se da la creación dinámica de una etiqueta denominada TLabel, en
donde su padre es la TTabSheet seleccionada o mejor dicho la que tiene el Foco, con las
coordenadas seleccionadas anteriormente.
Visualmente no hay nada más allá que lo que se acaba de mencionar, pero internamente
el programa posee un procedimiento de un refrescador de datos denominado Timer que está
constantemente cargando datos del servidor OPC por medio del DDE en Excel, pues estos datos
son de carácter dinámico y ocupan ser actualizados, lo que hace necesitar mucha memoria en la
ejecución del programa, que es incrementada con la cantidad de registros creados, por lo que
dependiendo de la PC, pueden tener limitaciones con la cantidad de registros a crear. Otro
aspecto que cabe mencionar es que por cada registro se necesita simular una celda de Excel.
23
Método de programación gráfica, que se designa como propiedad a algún objeto.
Diciembre del 2004
IE-0502
48
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Al no poseer un evento dinámico de selección las etiquetas con el nombre y el contenido
del registro, pues es un defecto del evento OnMouseDown, no se puede borrar en tiempo de
ejecución, pero para compensar este defecto, se ha agregado un botón de deshacer, que libera la
memoria ocupada por el último objeto dinámico creado, que en este caso puede ser una
TTabSheet o un TLabel. De hecho el procedimiento de “Nuevo Programa” es iteración de
liberación de memoria de todos los objetos dinámicos creados hasta el momento.
Un arreglo de registros ha sido creado para almacenar la información, de todos los ítems
dinámicos creados durante el programa, donde cada uno posee variables que guardan: el número
de página, el nombre de la página en donde se encuentran (TTabSheet), el contenido de la
etiqueta del registro, la fórmula en Excel asociada y las coordenadas X y Y de su posición.
Con respecto a la función “Salvar”, ejecuta un procedimiento que escribe en un archivo
de texto, designado con la extensión *.usd (proveniente de UniScada, el nombre del programa),
escribe el contenido de los registros, complementariamente la función de Cargar o Abrir, lee del
archivo de texto la información de los registros y empieza a crear dinámicamente TTabSheet y
TLabel, asignándole a cada uno la información contenida en el archivo.
Un programa por aparte ha sido creado, el cual se ha llamado UniHMI, con el fin de
servir únicamente para cargar la información configurada con el programa UniScada. Su
propósito es simplemente mostrar una aplicación específica para una planta determinada, por lo
que no existe en el procedimiento de “Salvar”, “Nuevo Programa”, “Crear Registros” o
“Procedimientos”, “Deshacer”, ni los anteriormente mencionados.
A continuación se muestran unos gráficos de las pantallas de cada aplicación.
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
49
Figura N°3.5 Pantalla de Conexión de UniScada
Figura N°3.6 Pantalla de Conexión de UniHMI
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
50
CAPÍTULO 4: Conclusiones y Recomendaciones
4.1 Conclusiones
•
Se Desarrolló una Interfaz Humano-Máquina (HMI) para la familia de PLC’s Unitronics
con la creación de las aplicaciones UniScada y Uni_HMI.
•
Se practicó en el desarrollo de aplicaciones en Borland Delphi. La plataforma de
programación Delphi Enterprise 5.0, con lenguaje Borlad Pascal, es muy versátil y útil
para el desarrollo de aplicaciones HMI.
•
Se estudió la arquitectura de los PLC’s Unitronics. Son máquinas de alta facilidad de
manipulación
y
acceso de datos en la comunicación PC-PLC, protocolos de
comunicaciones flexibles y habilidades programables de trabajos múltiples, pero sobre
por tener estructuras abiertas al desarrollo de aplicaciones HMI. Además de sus funciones
de amigables de hardware, entre otras.
•
Se Desarrolló una aplicación de comunicación entre Delphi y el OPC Server de
Unitronics. Vía Excel primeramente.
•
Se Realizó una aplicación de lectura de registros del PLC.
•
Se Desarrolló la aplicación HMI de despliegue de registros.
Diciembre del 2004
IE-0502
51
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
4.2 Recomendaciones
•
Establecer una comunicación DDE utilizando a Delphi como Cliente y no a Excel.
•
Establecer una comunicación con los dispositivos de la serie Vision.
•
Desarrollar una aplicación de escritura a registros.
•
Crear variables en archivos para procesamientos de históricos.
•
Crear un manejador de alarmas.
•
Desarrollar una aplicación de graficación de tendencia de variables.
•
Implementar gráficos para animación de la aplicación HMI.
Diciembre del 2004
IE-0502
52
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
BIBLIOGRAFÍA
Páginas web:
1. Grupo Master. “El PLC”. http://www.grupomaser.com/PAG_Cursos/Auto/auto2/auto2/PAGINA%20PRINCIPAL/PLC/plc.htm.
2. Ubiria, M. “Que es un PLC”.
http://www.euskalnet.net/m.ubiria/ARTICULOS.htm#Articulos_2001_01.
3. Figueras, E. “SCADA”. http://personal.redestb.es/efigueras/.
4. Universidad de Concepción. “Protocolos”. http://inf.udec.cl/~yfarran/webredes/protocolos/redes03.htm.
5. Calderón, J. “LABORATORIO VIRTUAL PARA LA ENSEÑANZA DE
AUTOMATIZACIÓN E INSTRUMENTACIÓN INDUSTRIAL”.
http://www.ing.ula.ve/~jesusc/labvid.htm.
6. Montero, R. “AUTOCAD 13 para Windows soporta OLE”.
http://personales.unican.es/togoresr/r40p64.htm.
7. I España. “OLE en Windows”. http://www.iespana.es/perl-es/OLE.htm.
8. Martínez, M. “Cliente OPC realizado en Visual Basic .NET “.
http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art123.asp.
9. Omron España. “servidor OPC”.
https://www.software.omron.es/software/cx/pages/cx_comun.jsp?id=6.
10. Sananes, M. “Delphi”. http://afrodita.faces.ula.ve/MartaSananes/Cursos/Delphi/..
11. Aulaware. “Delphi 5”. http://leo.worldonline.es/acanudas/pdf/dp5intro.pdf.
12. SQLMax Connections. “ActiveX”. http://www.sqlmax.com/ado.asp.
13. Unitronics. “Productos Unitronics”. http://www.unitronics.com.
Manuales:
14. Unitronics Co. “Vision 230 OPLC User Guide”, 2002. Traducido por Barrantes, A.
15. Unitronics Co. “OPC Server Help”, 2002. Traducido por Barrantes, A.
Diciembre del 2004
IE-0502
53
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
ANEXOS
UniScada y
Uni_HMI
Manual del
Usuario
Elaborado por:
Alexander Barrantes Muñoz
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
54
Tabla de Contenidos
Introducción...……………...…………………………………….…………………3
Requerimientos Mínimos...………………...……………..………………………..3
Instalación…….………………………..……...………………....…………………4
Descripción del Ambiente Gráfico de UniScada...…………..…..………………...5
Descripción de los iconos de la barra de herramientas………………..…..………………5
Descripción de la pantalla de Conexión……………………..………..…………………..6
Ejecución Offline de UniScada...…...……………………..……………………….7
Ejecución Online de UniScada.……...………….….……………………………..11
Ejecución Uni_HMI………………………………..……………………………..13
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
55
Introducción
Este programa tiene como objetivo servir de interfaz HMI (Humano-maquina), es una
aproximación y un ejemplo de los programas que existen en el mercado denominados “SCADA”
(software supervisor que realiza la adquisición de datos desde PLC hacia una PC comúnmente).
Este software esta dirigido únicamente a los modelos M90 y Vision 230 de la familia de
PLC’s (Controladores Lógicos Programables) de la compañía Unitronics.
Su funcionamiento se basa en la utilización de enlaces OLE (enlace e inclusión de
objetos) de Windows, estableciendo una comunicación entre un servidor OPC (OLE para control
de procesos) de la compañía Unitronics y como cliente Excel, que es controlado por debajo por
esta aplicación. Por lo que por medio del protocolo de comunicación DDE (intercambio de datos
dinámico), es posible que se puedan leer y escribir los registros internos del PLC.
Esta clase de programas (HMI) permiten una forma confortable, amigable y gráfica de
monitorear los procesos industriales controlados por un PLC, desde la comodidad de su PC, lo
que ahorra trabajo, tiempo y dinero. En particular este programa posee una fase de configuración
y creación, en donde se determina el modelo de PLC a usar en la aplicación HMI, los registros a
visualizar y otros aspectos importantes, y una segunda fase solo de monitorear que tiene como
objetivo utilizar online lo creado en la primera fase.
Requerimientos Mínimos
•
•
•
•
•
Sistema Operativo: Windows 95 en adelante.
Programas Complementarios:
o Excel 97 en adelante
o Servidor OPC de Unitronics
PLCs: M90 o Vision 230 de Unitronics.
Puertos de la PC: RS232.
Cable de Comunicación: MJ10-22-CS25 de Unitronics.
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
56
Instalación
Antes de ejecutar el programa, se debe instalar el Servidor OPC de Unitronics, en donde
después de colocar el disco y dar un click en “OPC Server Install”, automáticamente se dan
los pasos para su instalación. Recuerde definir los términos en el Servidor OPC, tal como se
indica en la sección de la ayuda llamada “Configuring the UNITRONICS Server”.
Para instalar tanto el programa UniScada, como Uni_HMI, simplemente se copian las
carpetas del disco que contienen dichos nombres en un lugar en la PC, seleccionado según su
comodidad y se da un click en los iconos UniScada o en Uni_HMI, según se desee, para su
ejecución (ver figura Nº 1).
Figura Nº 1. Iconos de Aplicaciones UniScada y Uni_HMI.
Diciembre del 2004
IE-0502
57
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Descripción del Ambiente Gráfico de UniScada
Descripción de los iconos de la barra de herramientas
El Programa se inicia en una pantalla de Conexión, el cual posee una barra de
herramientas, que esta compuesto por 6 botones, a continuación se hace una descripción pequeña
de cada uno de ellos, empezando de izquierda a derecha, algunos son muy familiares a los que
comúnmente se utilizan:
Icono
Descripción
“Nuevo Proyecto*”, Inicializa la aplicación, borrando todo lo que ha sido confeccionado hasta el
momento, tiene sentido su ejecución cuando ya otra aplicación ha sido creada y se desea empezar otra
nueva, o cuando está abierta una aplicación guardada, inicialmente aparece deshabilitado.
“Abrir Archivo*”, Abre la información de un proyecto ya creado con la aplicación UniScada, los
cuales se guardan en archivos cuyas extensiones son “.usd”. Activa una pantalla buscadora (ver figura
Nº 3) para poder seleccionar la carpeta en donde se guardo el archivo en la PC. Solo visualiza los
archivos cuyas extensiones son usd.
“Guardar Archivo*”, Inicialmente aparece deshabilitado y cambia su estado cuando se crea algún
elemento con la aplicación UniScada, su función es la de guardar en un archivo con extensión “.usd”,
(“UniHMI_1.usd” por defecto), lo confeccionado con la aplicación UniScada. Activa una pantalla
buscadora (ver figura Nº 3) para poder seleccionar la carpeta en donde se quiere guardar el archivo en
la PC.
“Nueva Página”, Su función es crear una página en blanco, a modo de carpeta en donde se pueda
insertar los registros del PLC, de manera que sea la estructura que los contiene, se pueden crear las
que se desee y van a estar identificadas con una cejilla cuyo nombre se relaciona con el conjunto de
registros contenidos en ella. En donde su manera de selección es dar click en la cejilla respectiva.
Activa una pantalla que le pide al usuario el nombre del proceso (ver figura Nº 4), identificador
asignado a la cejilla que se va a crear, en donde si este no es digitado aparecerá por defecto con
“Proceso_#”, el signo “#” representa el número de página que han sido creadas hasta el momento. La
última página creada se selecciona automáticamente por defecto.
“Nuevo Registro”, Su función es seleccionar el registro del PLC a insertar en la página seleccionada.
Si no ha sido creada alguna página, ejecuta la función “Nueva Página” y solo servirá hasta que este
procedimiento se realice. Activa una pantalla de selección de registro**, seguido a esto activa una
pantalla indicando que se haga un click en el lugar dentro de la página seleccionada que se quiere
insertar (ver figura Nº 4). La posición en donde se hace click es justificada vertical y horizontalmente
en un rango de aproximadamente 1cm2.
“Deshacer”, deshace o borra el último elemento que se ha creado, puede ser una página o un registro.
Se puede ejecutar cuantas veces se desee pero se limitará hasta que no aparezca ningún elemento
creado en el proyecto.
*Estos procedimientos también aparecen con sus respectivos nombres en la sección de Archivo en la barra de
menú principal (ver figura Nº 2).
**Nota: Se especificará con detalle en las secciones Ejecución Offline y Online de UniScada.
El programa posee algunas restricciones por seguridad a que este no presente errores en
tiempo de ejecución, tales como la deshabilitación de la operación de abrir, si se ha empezado ya
a trabajar (si ya hay por lo menos una página creada), entre otras.
Diciembre del 2004
IE-0502
58
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Figura Nº 2 Barra de Menú Principal de UniScada
Figura Nº 3 Pantallas de Abrir y Guardar de UniScada
Figura Nº 4 Pantalla de Nueva Página y de Advertencia de selección de posición de los registros de UniScada
Descripción de la pantalla de Conexión
La pantalla de conexión aparece en una página igual a las que se crean para la inserción
de los registros del PLC, con la diferencia que la cejilla que la identifica viene con la etiqueta
“Conexión” (Ver figura Nº 5). Además posee los siguientes elementos que se utilizan para la
conexión entre el PLC y el servidor OPC :
1) Dirección del Ejecutable (Servidor OPC de Unitronics): Aquí se selecciona la ubicación en la
PC en donde se ha instalado el servidor OPC de Unitronics, la cual trae la dirección que
posee el OPC Server por defecto a la hora de instalarse, en caso de que en su instalación se
haya modificado esta dirección, se necesita cambiar. No es relevante esta sección si se
trabaja en offline.
2) Nombre del Tópico: En esta sección se selecciona el nombre del tópico que establece la
conversación DDE, o el que ha sido configurado en la sección “definición del Tópico” (topic
definition) en el OPC Server de Unitronics. Aparece la definición del tópico que tiene el
OPC Server de Unitronics por defecto (unit1). Esta sección es de mucha importancia para
trabajar en offline o en online.
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
59
3) Modelo del PLC: En esta sección se escoge el tipo de PLC con que se quiere trabajar, como
UniScada esta dirigido a los PLC de Unitronics, M90 y Vision 230, estas son las dos
opciones en que se puede utilizar el programa, nótese que se debe dar un click a la opción
que se desea, en caso contrario se trabajará con el Vision 230 por defecto.
Después de que se eligieron los puntos anteriores, se puede elegir el modo de ejecución del
programa de forma simple, si se quiere trabajar online se presiona el botón OK, aceptando las
disposiciones seleccionadas y se espera a que UniScada abra el OPC Server de Unitronics, por lo
que mientras que este paso se realiza se mostrará gráficamente una barra de progreso que lleva
de encabezado lo siguiente “Conectando...”, cuando este paso termina, aparece un icono
minimizado del OPC Server y el icono de un PLC que esta en la esquina superior derecha
cambiará de color de roja a verde (ver figura Nº 5). Seguidamente se crea una Nueva Página y se
comienza la configuración de los diferentes registros, como se explica más adelante.
Para trabajar offline se obvian los pasos anteriores y se empiezan a trabajar simplemente
dando un click al botón de Nueva Página, al igual que en modo online, se comienza la
configuración de los diferentes registros.
Para evitar conflictos entre estos modos de operación, cuando se empieza a trabajar offline se
deshabilita el botón de conexión (OK) y así no poderse pasar a trabajar online, o de igual manera
el programa restringe la operación en offline si se empieza a trabajar online.
Figura Nº 5 Pantalla de Conexión de UniScada.
Diciembre del 2004
IE-0502
60
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Ejecución Offline de UniScada
Los pasos para trabajar en modo offline en un Nuevo Proyecto se citan en forma puntal
de forma siguiente:
1) Ejecute la aplicación UniScada (ver figura Nº 1).
2) Digite el nombre del tópico que configuró o quiere configurar en el Servidor OPC de
Unitronics.
3) Elija el modelo del PLC Unitronics, dando un click al nombre del PLC que va a utilizar
(M90 ó Vision 230). De no hacer esto el programa entenderá que se trabaja con el Vision
230.
4) Seleccione el icono de “Nueva Página” y digite el nombre del Proceso (etiqueta que
identifica la cejilla de la subsección del proyecto), generalmente tiene como objetivo
identificar el proceso de control asociado con los registros que se desean monitorear en
una sección específica, Si no digita ninguna el programa lo identificará como Proceso_1.
5) Seleccione el icono de “Nuevo Registro”. Esto hará aparecer una pantalla de
configuración en donde define el registro a monitorear que será insertado en la página
seleccionada (La página se selecciona dando un click a la cejilla con una etiqueta
asociada, o si no es automáticamente selecciona la última página creada por defecto).
Como se muestra en la figura Nº 6 se puede elegir entre una lista diferentes registros
dando un click en el nombre del ítem del registro, una vez realizado esta acción aparece
el rango de valores permitidos para dicho registro, tenga cuidado de no digitar un valor
fuera del rango respectivo, pues causaría errores. Inclusive aún digitando un valor
permitido dentro del rango que aparece, podría haber algún error, pues este rango
representa los valores posibles pero no los habilitados.
Figura Nº 6 Ejemplo #1 de la Pantalla de Configuración de Registros de UniScada.
Nótese que según la forma de direccionamiento del Ítem de un registro
determinado, habilita o deshabilita los espacios para su direccionamiento correcto. Por
ejemplo si se quiere saber el estado de la conexión del PLC, solo es necesario marcar el
nombre STATUS sin necesidad de agregar otra indicación. También se da el caso de la
habilitación o deshabilitación de estos espacios según si son pertenecientes o carentes del
modelo del PLC seleccionado.
La Tabla siguiente específica las opciones de los diferentes registros que se
pueden elegir, además del modelo del PLC para el que están activos.
Diciembre del 2004
IE-0502
61
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Nombre
Descripción
del Item
Modelo de PLC
M90
Vision
230
MB
Bit de Memoria
X
X
MI
Entero de Memoria
X
X
ML
Entero Largo de Memoria
X
MD
Entero Doble de Memoria
X
INP
Entrada*
X
X
OUT
Salida*
X
X
SB
Bit del Sistema
X
X
SI
Entero del Sistema
X
X
SL
Entero Largo del Sistema
X
SD
Entero Doble del Sistema
X
TC
Temporizador Actual
X
X
TP
Temporizador Preestablecido
X
X
TS
Bit de Tiempo de exploración
X
X
CC
Contador Actual
X
CP
Contador Preestablecido
X
CS
Bit del contador de Exploración
X
ID
ID de la Unidad
X
X
STATUS
Estado de la conexión
X
X
UPDATEINTERVAL
Ajuste actual del intervalo a actualizar
X
X
MAXINTERVAL
Intervalo actualizado máximo medido
X
X
ITEMCOUNT
Items activos
X
X
ERRORITEMS
Números de ítems con nombre inválidos
X
X
WRITECOUNT
Número de comandos escritos esperando la ejecución
X
X
SUSPEND
Suspención de la comunicación
X
X
*Para el caso del M90, estos registros se direccionan de manera diferente que con el Vision 230 y todos los
demás registros (ver figura Nº 7).
Además de lo ya descrito esta pantalla de configuración posee una etiqueta que se
le designará al registro seleccionado, si no es digitada el programa seleccionará
automáticamente una etiqueta con el nombre “Registro_#”, en donde # es el números de
registros creados hasta el momento.
Diciembre del 2004
IE-0502
62
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Figura Nº 7 Ejemplo #2 de la Pantalla de Configuración de Registros de UniScada.
Finalmente cuando se ha terminado toda la configuración del registro respectivo,
se le selecciona el botón de crear aceptando lo anteriormente definido. Seguidamente se
indica que esta listo para seleccionar la posición en donde se insertará el registro y se da
un click en donde se quiere la misma.
6) Repetir pasos 4) y 5) a su preferencia. Nótese que cada etiqueta de los distintos registros
aparecen en las posiciones elegidas (ver figura Nº 8).
7) Para Guardar los cambios creados y el nuevo proyecto realizado seleccione el icono de
“Guardar Archvo “, en donde guarda en un archivo con extensión “.usd”. Activa una
pantalla buscadora (ver figura Nº 3) para poder seleccionar la carpeta en donde se quiere
guardar el archivo en la PC, en donde se digita el nombre que se le quiere dar al archivo
(si no es digitado se guarda con el nombre de “UniHMI_1.usd”).
8) Para Inicializar la aplicación, borrando todo lo que ha sido confeccionado hasta el
momento, seleccione “Nuevo Proyecto”.
9) Para Abrir un proyecto ya creado, seleccione la opción “Abrir Archivo”. Activa una
pantalla buscadora (ver figura Nº 3) para poder seleccionar la carpeta en donde se guardo
el archivo en la PC. Solo visualiza los archivos cuyas extensiones son usd.
10) Seleccione la opción de “Salir” del menú principal para salir del programa y cerrar todas
las aplicaciones complementarias al mismo.
Figura Nº 8 Ejemplo #1 de un Proyecto de UniScada.
Diciembre del 2004
IE-0502
63
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
Ejecución Online de UniScada
Los pasos para trabajar en modo online en un Nuevo Proyecto se citan en forma puntal de
forma siguiente:
1) Ejecute la aplicación UniScada (ver figura Nº 1).
2) Digite la dirección en la PC del ejecutable (OPC Server de Unitronics), o el programa
elegirá la que posee el OPC Server por defecto a la hora de instalarse, en caso de que en
su instalación se haya modificado esta dirección, se necesita cambiar.
3) Digite el nombre del tópico que configuró o quiere configurar en el Servidor OPC de
Unitronics.
4) Elija el modelo del PLC Unitronics, dando un click al nombre del PLC que va a utilizar
(M90 ó Vision 230). De no hacer esto el programa entenderá que se trabaja con el Vision
230.
5) Presionar el botón OK de la pantalla de conexión y se espera a que UniScada abra el OPC
Server de Unitronics, por lo que mientras que este paso se realiza se mostrará
gráficamente una barra de progreso que lleva de encabezado lo siguiente “Conectando...”,
cuando este paso termina, aparece un icono minimizado del OPC Server y el icono de un
PLC que esta en la esquina superior derecha cambiará de color de roja a verde (ver figura
Nº 5).
6) Seleccione el icono de “Nueva Página” y digite el nombre del Proceso (etiqueta que
identifica la cejilla de la subsección del proyecto), generalmente tiene como objetivo
identificar el proceso de control asociado con los registros que se desean monitorear en
una sección específica, Si no digita ninguna el programa lo identificará como Proceso_1.
7) Seleccione el icono de “Nuevo Registro”. Esto hará aparecer una pantalla de
configuración en donde define el registro a monitorear que será insertado en la página
seleccionada (La página se selecciona dando un click a la cejilla con una etiqueta
asociada, o si no es automáticamente selecciona la última página creada por defecto).
Como se muestra en la figura Nº 9 se puede elegir entre una lista diferentes registros
dando un click en el nombre del ítem del registro, una vez realizado esta acción aparece
el rango de valores permitidos para dicho registro, tenga cuidado de no digitar un valor
fuera del rango respectivo, pues causaría errores. Inclusive aún digitando un valor
permitido dentro del rango que aparece, podría haber algún error, pues este rango
representa los valores posibles pero no los habilitados.
Figura Nº 9 Ejemplo #3 de la Pantalla de Configuración de Registros de UniScada.
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
64
Nótese que según la forma de direccionamiento del Ítem de un registro
determinado, habilita o deshabilita los espacios para su direccionamiento correcto. Por
ejemplo si se quiere saber el estado de la conexión del PLC, solo es necesario marcar el
nombre STATUS sin necesidad de agregar otra indicación. También se da el caso de la
habilitación o deshabilitación de estos espacios según si son pertenecientes o carentes del
modelo del PLC seleccionado.
La Tabla de la sección de Ejecución offline de UniScada específica las opciones
de los diferentes registros que se pueden elegir, además del modelo del PLC para el que
están activos.
También se muestra en la figura Nº 8 un botón con “…”, el cual tiene como
función probar los registros antes de insertarlos, no se puede insertar ningún registro si no
ha sido antes probado en modo online, pues no se habilita el botón de crear, su contenido
se refresca automáticamente en la ventana contigua izquierda, según su selección.
Además de lo ya descrito esta pantalla de configuración posee una etiqueta que se
le designará al registro seleccionado, si no es digitada el programa seleccionará
automáticamente una etiqueta con el nombre “Registro_#”, en donde # es el números de
registros creados hasta el momento.
Finalmente cuando se ha terminado toda la configuración del registro respectivo,
se le selecciona el botón de crear aceptando lo anteriormente definido. Seguidamente se
indica que esta listo para seleccionar la posición en donde se insertará el registro y se da
un click en donde se quiere la misma.
8) Repetir pasos 4) y 5) a su preferencia. Nótese que cada etiqueta de los distintos registros
aparecen con sus respectivos contenidos en las posiciones elegidas.
9) Para Guardar los cambios creados y el nuevo proyecto realizado seleccione el icono de
“Guardar Archvo “, en donde guarda en un archivo con extensión “.usd”. Activa una
pantalla buscadora (ver figura Nº 3) para poder seleccionar la carpeta en donde se quiere
guardar el archivo en la PC, en donde se digita el nombre que se le quiere dar al archivo
(si no es digitado se guarda con el nombre de “UniHMI_1.usd”).
10) Para Inicializar la aplicación, borrando todo lo que ha sido confeccionado hasta el
momento, seleccione “Nuevo Proyecto”.
11) Para Abrir un proyecto ya creado, seleccione la opción “Abrir Archivo”. Activa una
pantalla buscadora (ver figura Nº 3) para poder seleccionar la carpeta en donde se guardo
el archivo en la PC. Solo visualiza los archivos cuyas extensiones son usd.
12) Seleccione la opción de “Salir” del menú principal para salir del programa y cerrar todas
las aplicaciones complementarias al mismo
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
65
Ejecución de Uni_HMI
Los pasos para trabajar con el programa Uni_HMI se citan en forma puntal de forma
siguiente:
1) Ejecute la aplicación Uni_HMI (ver figura Nº 1).
2) Digite la dirección en la PC del ejecutable (OPC Server de Unitronics), o el programa
elegirá la que posee el OPC Server por defecto a la hora de instalarse, en caso de que en
su instalación se haya modificado esta dirección, se necesita cambiar.
3) Digite el nombre del tópico que configuró o quiere configurar en el Servidor OPC de
Unitronics.
4) Presionar el botón OK de la pantalla de conexión y se espera a que Uni_HMI abra el
OPC Server de Unitronics, por lo que mientras que este paso se realiza se mostrará
gráficamente una barra de progreso que lleva de encabezado lo siguiente “Conectando...”,
cuando este paso termina, aparece un icono minimizado del OPC Server y el icono de un
PLC que esta en la esquina superior derecha cambiará de color de roja a verde (ver figura
Nº 10). Solamente finalizado este paso podrá seleccionarse la opción de “Abrir Archivo”.
5) Para Abrir un proyecto ya creado, presione el botón de “Abrir”. Activa una pantalla
buscadora (ver figura Nº 3) para poder seleccionar la carpeta en donde se guardo el
archivo en la PC. Solo visualiza los archivos cuyas extensiones son usd.
6) Seleccione la opción de “Salir” dando un click en el botón de salir en la esquina superior
derecha de la pantalla para salir del programa y cerrar todas las aplicaciones
complementarias al mismo
Figura Nº 10 Pantalla de Conexión de Uni_HMI.
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
66
CODIGO FUENTE
ToolButton5: TToolButton;
SaveDialog: TSaveDialog;
N_Pag: TToolButton;
interface
ToolButton6: TToolButton;
procedure FileNew1Execute(Sender: TObject);
uses Windows, SysUtils, Classes, Graphics, Forms,
procedure FileOpen1Execute(Sender: TObject);
Controls, Menus,
procedure HelpAbout1Execute(Sender: TObject);
StdCtrls, Dialogs, Buttons, Messages, ExtCtrls,
procedure FileExit1Execute(Sender: TObject);
ComCtrls, StdActns,
procedure Nueva_PaginaClick(Sender: TObject);
ActnList, ToolWin, ImgList, isapiapp;
procedure N_PagClick(Sender: TObject);
procedure DeshacerClick(Sender: TObject);
type
procedure Registros_GralClick(Sender: TObject);
TMainForm = class(TForm)
procedure abilitar(modificado :boolean);
MainMenu1: TMainMenu;
procedure FileSaveItemClick(Sender: TObject);
File1: TMenuItem;
procedure ToolButton2Click(Sender: TObject);
FileNewItem: TMenuItem;
procedure FormCreate(Sender: TObject);
FileOpenItem: TMenuItem;
private
Help1: TMenuItem;
{ Private declarations }
N1: TMenuItem;
public
FileExitItem: TMenuItem;
{ Public declarations }
HelpAboutItem: TMenuItem;
end;
OpenDialog: TOpenDialog;
FileSaveItem: TMenuItem;
var
StatusBar: TStatusBar;
MainForm: TMainForm;
ActionList1: TActionList;
Contaetiq, contnew : integer;
EditCut1: TEditCut;
EditCopy1: TEditCopy;
implementation
EditPaste1: TEditPaste;
FileNew1: TAction;
{$R *.DFM}
FileSave1: TAction;
FileExit1: TAction;
uses ChildWin, About, vpal, configuracion, procesos;
FileOpen1: TAction;
{
FileSaveAs1: TAction;
WindowCascade1: TWindowCascade;
}
WindowTileHorizontal1: TWindowTileHorizontal;
procedure TMainForm.FileNew1Execute(Sender:
WindowArrangeAll1: TWindowArrange;
TObject);
WindowMinimizeAll1: TWindowMinimizeAll;
var
HelpAbout1: TAction;
i : integer;
FileClose1: TWindowClose;
WindowTileVertical1: TWindowTileVertical;
begin
ToolBar2: TToolBar;
for i:= (V_Ppal.ComponentCount - 1) downto 15
ToolButton1: TToolButton;
do
ToolButton2: TToolButton;
begin
ToolButton3: TToolButton;
DeshacerClick(Sender);
ToolButton9: TToolButton;
end;
ToolButton7: TToolButton;
abilitar(false);
ImageList1: TImageList;
ToolButton1.Enabled := true;
Deshacer: TToolButton;
FileOpenItem.Enabled := true;
Registros_Gral: TToolButton;
unit Main;
Diciembre del 2004
IE-0502
ToolButton9.Enabled := false;
FileNewItem.Enabled := false;
contnew := 0;
end;
{
}
procedure TMainForm.FileOpen1Execute(Sender:
TObject);
var
Arch : TextFile;
temp, auxi : integer;
begin
OpenDialog.Execute;
AssignFile(Arch,(Opendialog.FileName));
Reset(Arch);
temp := 1;
while (not(EOF(Arch))) do
begin
Readln(Arch,reg[temp].numpag);
Readln(Arch,reg[temp].pagina);
Readln(Arch,reg[temp].nombre);
Readln(Arch,reg[temp].Contenido);
Readln(Arch,reg[temp].posx);
Readln(Arch,reg[temp].posy);
Readln(Arch);
if (reg[temp].numpag > auxi) then
begin
auxi := reg[temp].numpag;
V_ppal.CargarNuevaPag(reg[temp].pagina);
end;
V_ppal.CargarNuevoElemento(reg[temp].posx,reg[te
mp].posy,reg[temp].nombre);
if (vpal.activado = true) then
vpal.WorkSt.Cells.Item[temp,reg[temp].numpag
+1] := reg[temp].contenido;
temp := temp +1;
end;
closefile(Arch);
ToolButton1.Enabled := false;
FileOpenItem.Enabled := false;
ToolButton9.Enabled := true;
FileNewItem.Enabled := true;
end;
{
}
67
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
procedure TMainForm.HelpAbout1Execute(Sender:
TObject);
begin
AboutBox.ShowModal;
end;
{
}
procedure TMainForm.FileExit1Execute(Sender:
TObject);
var
cerrar:integer;
begin
cerrar:=FindWindow(nil,'UNITRONICS');
if (cerrar = 0) then
else
SendMessage(cerrar,WM_CLOSE,0,0);
if (Vpal.activado = true) then
V_Ppal.EA1.Disconnect;
Close;
end;
{
}
procedure TMainForm.Nueva_PaginaClick(Sender:
TObject);
begin
V_Ppal.show;
end;
{
}
procedure TMainForm.N_PagClick(Sender:
TObject);
begin
if (contnew = 0) then
begin
ToolButton1.Enabled := false;
FileOpenItem.Enabled := false;
end;
contnew := contnew + 1;
{Crear una nueva Página}
if (vpal.activado = false) then
V_Ppal.OK.Enabled := false;
V_Ppal.NuevaPgina1Click(self);
ToolButton9.Enabled := true;
FileNewItem.Enabled := true;
end;
{
Diciembre del 2004
IE-0502
68
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
}
procedure TMainForm.DeshacerClick(Sender:
TObject);
var
i : integer;
objeto : TObject;
begin
{Proceso para Undo}
if ((V_Ppal.ComponentCount - 1) > 15) then
begin
i:= V_Ppal.ComponentCount-1;
{Detección de tipo de elemento a borrar}
{Si es un Hoja}
if ((V_Ppal.Components[i] is TTabSheet) and
(vpal.numpag > 0)) then
vpal.numpag := vpal.numpag -1
else
{Si es un Label}
if ((V_Ppal.Components[i] is TLabel) and
(vpal.contreg > 0)) then
begin
vpal.reg[contreg].numpag := 0;
vpal.contreg := vpal.contreg - 1;
end;
{Eliminar el elemento}
objeto := (V_Ppal.Components[i] as Tobject);
objeto.Free;
end;
end;
{
Reliza: Llama a el dialogo de Configuración
Recibe: ninguno
Evia: ninguno
}
procedure TMainForm.Registros_GralClick(Sender:
TObject);
begin
if (vpal.activado = false) then
V_Ppal.OK.Enabled := false;
Config.Show;
end;
procedure TMainForm.abilitar(modificado :
boolean);
begin
if (modificado = true) then
begin
FileSave1.Enabled := true;
FileSaveItem.Enabled := true;
ToolButton2.Enabled := true;
end
else
begin
FileSave1.Enabled := false;
FileSaveItem.Enabled := false;
ToolButton2.Enabled := false;
end;
end;
{Fin del programa}
procedure TMainForm.FileSaveItemClick(Sender:
TObject);
var
Arch : TextFile;
temp : integer;
begin
SaveDialog.Execute;
assignfile(Arch,(SaveDialog.FileName)+'.usd');
rewrite(Arch);
for temp := 1 to vpal.contreg do
begin
writeln(Arch,vpal.reg[temp].numpag);
writeln(Arch,vpal.reg[temp].pagina);
writeln(Arch,vpal.reg[temp].nombre);
writeln(Arch,vpal.reg[temp].contenido);
writeln(Arch,vpal.reg[temp].posx);
writeln(Arch,vpal.reg[temp].posy);
writeln(Arch);
end;
closefile(Arch);
end;
procedure TMainForm.ToolButton2Click(Sender:
TObject);
begin
FileSaveItemClick(Sender);
end;
procedure TMainForm.FormCreate(Sender:
TObject);
begin
contnew := 0;
end;
end.
Diciembre del 2004
IE-0502
69
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
unit vpal;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs,
Menus, Excel97, ComCtrls, StdCtrls, OleServer,
ShellApi, ExtCtrls, jpeg,
syncobjs;
type
TV_ppal = class(TForm)
PageCPpal: TPageControl;
Conexion: TTabSheet;
OK: TButton;
Direccion: TEdit;
Unidad: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
EA1: TExcelApplication;
GroupBox1: TGroupBox;
PBar: TProgressBar;
Image2: TImage;
Temporizador: TTimer;
ListBox: TListBox;
ImagenDes: TImage;
ImagenCon: TImage;
LModelo: TLabel;
Modelo: TListBox;
procedure Salir1Click(Sender: TObject);
procedure OKClick(Sender: TObject);
procedure CancelClick(Sender: TObject);
procedure TemporizadorTimer(Sender: TObject);
procedure NuevaPgina1Click(Sender: TObject);
procedure CrearNuevaPag();
procedure Press_Clic(Sender: TObject; Button:
TMouseButton;
Shift: TShiftState; X, Y: Integer);
Procedure CargarNuevaPag(nombre : string);
Procedure CargarNuevoElemento(X,Y :integer;
Nom : string);
Function NuevaCorde(cord :integer): integer;
private
{ Private declarations }
public
{ Public declarations }
end;
type
registro = record
numpag : integer; {Contiene el numero de página}
pagina : string; {Contiene el nombre de la pagina}
nombre : string; {lleva el nombre del item}
contenido : string; {lleva la funcion para
conexion}
posx, posy : integer; {coordenadas del item}
end;
var
V_ppal: TV_ppal;
{Conexion}
WorkBk : _WorkBook;
WorkSt : _WorkSheet;
IIndex : OleVariant;
{Datos de Usuario}
Direc : Pchar; { Dirección Física del Archivo}
Unid, nombrepag, nomlabel, formula : String; {
Unidad a la cual se va a conectar}
cont, Suspencion, Estado : integer; { Estado de la
conecxion}
est, activo, activado: boolean; {estados del reloj para
OPC Server}
numpag: Integer; {almacena el numero de pagina}
reg : array [1..100] of registro; {}
nuevo, contreg : integer;
posx, posy : integer;
implementation
uses procesos, main;
{$R *.DFM}
procedure TV_ppal.Salir1Click(Sender: TObject);
begin
V_ppal.Close; {Cerrar el sistema}
end;
procedure TV_ppal.OKClick(Sender: TObject);
var
buscar : Integer;
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
begin
numpag := 1;
Direc := Addr(Direccion.Text[1]); { Cargar el
nombre de la apliucación}
Unid := Unidad.text; { Cargar la unidad a ejecutar}
ShellExecute(V_ppal.Handle,'open',Direc,nil,nil,SW_
SHOWMINIMIZED);
{ Ejecutar el metodo de conexión}
While (activo = false) do
begin
{ Metodo para optener los datos del PLC}
buscar:=FindWindow(nil,'UNITRONICS');
if (activo <> true) then
begin
if ((cont mod 10000) = 0) then
PBar.StepIT;
cont := cont + 1;
end;
If (buscar<>0) then
begin
activo := true;
cont := 0;
contreg := 0;
EA1.Connect;
EA1.Workbooks.Add(xlWBatWorkSheet,0);
WorkBk := EA1.Workbooks.Item[1];
WorkSt := WorkBk.WorkSheets.Get_Item(1) as
_Worksheet;
end;
end;
{ Si esta desconectado muesta desconectado, pero si
lo esta muesta Conectado}
end;
procedure TV_ppal.CancelClick(Sender: TObject);
begin
V_ppal.Close;
end;
procedure TV_ppal.TemporizadorTimer(Sender:
TObject);
var
pag, I, aux, contador : integer;
Selec : TLabel;
begin
70
if (activo = true) then
begin
if (activado = true) then
begin
WorkSt.Cells.Item[1,1] :=
'=Unitronics|'+Unid+'!STATUS';
if (est = True) then
begin
Estado := integer(WorkSt.Cells.Item[1,1]);
if (Estado = 0) then
begin
ImagenDes.Visible := True;
ImagenCon.Visible := False;
end
else
begin
ImagenDes.Visible := False;
ImagenCon.Visible := True;
end;
{Parte del timer para jalar la info de los Labels}
aux := 1;
Listbox.Items.Clear;
for I := V_Ppal.ComponentCount-1 downto 15
do
begin
if (V_Ppal.Components[I] is TLabel) then
ListBox.Items.InsertObject(0,
V_Ppal.Components[I].Name,
V_Ppal.Components[I] as
TObject);
end;
pag := PageCPpal.ActivePageIndex;
for contador := 0 to ListBox.Items.Count - 1 do
begin
if (ListBox.Items.Objects[contador] is TLabel)
then
begin
Selec := (ListBox.Items.Objects[contador] as
TLabel);
Selec.Caption :=
reg[aux].nombre+#13+string(WorkSt.Cells.Item[aux,
pag+1]);
Selec.Alignment :=tacenter;
aux := aux + 1;
end;
end;
end
else
est := true;
Diciembre del 2004
IE-0502
71
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
end
else
activado := true;
end;
end;
procedure TV_ppal.NuevaPgina1Click(Sender:
TObject);
begin
// Crear una página nueva
Nombre_proceso.Show;
end;
Procedure TV_ppal.CrearNuevaPag();
begin
main.MainForm.abilitar(true);
with PageCPpal do
with TTabSheet.Create(Self) do
begin
PageControl := PageCPpal;
Name := 'Proceso_' +
IntToStr(Pages[numpag].PageIndex);
Caption := nombrepag;
numpag := numpag + 1;
OnMouseDown := Press_Clic;
end;
if (activo = true) then
PageCPpal.ActivePageIndex:=
(PageCPpal.Pages[numpag-1].PageIndex)
else
PageCPpal.ActivePageIndex:=
(PageCPpal.Pages[numpag].PageIndex)
end;
Procedure TV_ppal.CargarNuevaPag(nombre :
string);
begin
main.MainForm.abilitar(true);
with PageCPpal do
with TTabSheet.Create(Self) do
begin
PageControl := PageCPpal;
Name := 'Proceso_' +
IntToStr(Pages[numpag].PageIndex);
Caption := nombre;
OnMouseDown := Press_Clic;
end;
PageCPpal.ActivePageIndex:=
(PageCPpal.Pages[numpag].PageIndex);
numpag := numpag + 1;
end;
{
Realiza: Captura los datos de la coordenadas del
mouse en
el lugar en que se dio el clic, muestra un
mensage
de la localizacion del puntero del muose.
Envia: nada.
Recibe: Un objeto, el boton precionado, las
coordenadas X Y y el estado.
}
procedure TV_ppal.Press_Clic(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
hoja : TTabSheet;
begin
posy := Y;
posx := X;
if (nuevo = 1) then
begin
nuevo := 0;
contreg := contreg + 1;
reg[contreg].nombre := nomlabel;
Self.Name := 'Label_'+IntToStr(cont);
with TLabel.Create(Self) do
begin
Caption := nomlabel;
hoja := TTabSheet(PageCPpal.ActivePage);
Parent:= hoja;
with hoja do
begin
reg[contreg].pagina := Caption;
end;
reg[contreg].numpag :=
PageCPpal.ActivePageIndex;
Left:=NuevaCorde(posx);
reg[contreg].posx := Left;
Top:=NuevaCorde(posy);
reg[contreg].posy := Top;
Autosize := True;
reg[contreg].contenido := formula;
end;
Diciembre del 2004
IE-0502
72
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
end.
ListBox.Items.InsertObject(0,Self.Name,Self as
TObject);
end;
end;
unit configuracion;
Procedure TV_ppal.CargarNuevoElemento(X,Y
:integer; Nom : string);
var
hoja : TTabSheet;
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs,
ExtCtrls, OleServer, Excel97, StdCtrls, Comctrls;
begin
contreg := contreg + 1;
Self.Name := 'Label_'+IntToStr(contreg);
with TLabel.Create(Self) do
begin
PageCPpal.ActivePageindex :=
PageCPpal.PageCount -1;
hoja := TTabSheet(PageCPpal.ActivePage);
Parent:= hoja;
Left:= X;
Top:= Y;
Autosize := True;
Caption := Nom;
end;
ListBox.Items.InsertObject(0,Self.Name,Self as
TObject);
end;
type
TConfig = class(TForm)
LBRegistro: TListBox;
AEvaluar: TEdit;
Rango2: TEdit;
Valor: TEdit;
Probar: TButton;
Crear: TButton;
Rango: TLabel;
LRang: TLabel;
EA1: TExcelApplication;
Timer1: TTimer;
Label1: TLabel;
Etiqueta: TEdit;
procedure LBRegistroClick(Sender: TObject);
procedure ProbarClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure CrearClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Formula();
private
{ Private declarations }
public
{ Public declarations }
end;
Function TV_PPAL.NuevaCorde(cord :
integer):integer;
begin
while (cord mod 20 <> 0) do
cord := cord - 1;
NuevaCorde := cord;
end;
end. // Fin de programa
program PFinal;
uses
Forms,
VPal in 'D:\Proyecto\VPal.pas' {V_ppal};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TV_ppal, V_ppal);
Application.Run;
interface
var
Config: TConfig;
activac, activado: boolean;
Selec, Unid : String;
WorkBk : _WorkBook;
WorkSt : _WorkSheet;
IIndex : OleVariant;
modelo, a, contaetiq : integer;
implementation
Diciembre del 2004
IE-0502
73
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
{$R *.DFM}
uses vpal, Main;
Procedure TConfig.Formula();
var
val, val2 : string;
begin
if V_ppal.Modelo.Selected[0]then
modelo := 0
else
modelo := 1;
if (Selec = 'STATUS') then
begin
{Jale el dato tipo estatus}
vpal.formula :=
'=Unitronics|'+string(V_ppal.Unidad.Text)+'!STATU
S';
end;
{Si el dato es tipo ID}
if (Selec = 'ID') then
begin
{Jale el dato tipo ID}
vpal.formula :=
'=Unitronics|'+string(V_ppal.Unidad.Text)+'!ID';
end;
{Si el dato es tipo Suspend}
if (Selec = 'SUSPEND') then
begin
{Jale el dato tipo suspend}
vpal.formula :=
'=Unitronics|'+string(V_ppal.Unidad.Text)+'!SUSPE
ND';
end;
if ((Selec = 'INP')and(modelo = 0)) then
if ((integer(AEvaluar.text) > 0) and
(integer(AEvaluar.text) < 10 )) then
begin
val2 := string(Rango2.text);
val := string(Aevaluar.text);
vpal.formula :=
'=Unitronics|'+string(V_ppal.Unidad.Text)+'!'+#39+'I
NP0'+val+','+val2+#39;
end
else
begin
val2 := string(Rango2.text);
val := string(Aevaluar.text);
vpal.formula :=
'=Unitronics|'+string(V_ppal.Unidad.Text)+'!'+#39+'I
NP'+val+','+val2+#39;
end
else
if ((Selec = 'OUT')and(modelo = 0)) then
if ((integer(AEvaluar.text) > 0) and
(integer(AEvaluar.text) < 10 )) then
begin
val2 := string(Rango2.text);
val := string(Aevaluar.text);
vpal.formula :=
'=Unitronics|'+string(V_ppal.Unidad.Text)+'!'+#39+'
OUT0'+val+','+val2+#39;
end
else
begin
val2 := string(Rango2.text);
val := string(Aevaluar.text);
vpal.formula :=
'=Unitronics|'+string(V_ppal.Unidad.Text)+'!'+#39+'
OUT'+val+','+val2+#39;
end
else
begin
val := string(Aevaluar.text);
vpal.formula :=
'=Unitronics|'+string(V_ppal.Unidad.Text)+'!'+Selec
+val;
end;
end;
procedure TConfig.LBRegistroClick(Sender:
TObject);
var
i : integer;
begin
if V_ppal.Modelo.Selected[0]then
modelo := 0
else
modelo := 1;
{ Poner en invisible las edits Rango2 y Aevaluar, y
el label LRang}
Rango2.Visible := False;
LRang. Visible := False;
AEvaluar.Visible := True;
{ Obtiene el objeto selecionado en el list box}
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
for i := 0 to (LBRegistro.Items.Count - 1) do
begin
if LBRegistro.Selected[i] then
Selec := LBRegistro.Items[i]
end;
{si se selecciona MB}
if (modelo = 0) then
begin
if ((Selec = 'ML') or (Selec = 'MD')or (Selec =
'SL')or (Selec = 'SD')or (Selec = 'CC')or (Selec =
'CP')or (Selec = 'CS')) then
begin
Rango.Caption := 'No Disponible';
AEvaluar.Visible := false;
end;
if (Selec = 'MB') then
begin
Rango.Caption := '(0 - 1023)'; {Delimitrar
el rango}
AEvaluar.SetFocus; {Envirle el foco al
edit}
end;
{Si se selecciona MI, SI, SB}
if ((Selec = 'MI') or (Selec = 'SI') or (Selec =
'SB')) then
begin
Rango.Caption := '(0 - 255)'; {Rango}
AEvaluar.SetFocus; {Foco}
end;
{ Si se selecciona INP, OUT}
if ((Selec = 'INP') or (Selec = 'OUT')) then
begin
Rango.Caption := '(00 - 63)'; {Rango
inicial}
AEvaluar.SetFocus; {Foco}
{ Alteraciones en stado de las cosas}
Rango2.Visible := True;
LRang. Visible := True;
end;
{ Si se selecciona TC, TP, TS}
if ((Selec = 'TC') or (Selec = 'TP') or (Selec =
'TS')) then
begin
Rango.Caption := '(0 - 63)'; {Rango}
AEvaluar.SetFocus; {Foco}
end
end
else
begin
74
if (modelo = 1) then
begin
if ((Selec = 'MB') or (Selec = 'MI')) then
begin
Rango.Caption := '(0 - 1023)'; {Delimitrar
el rango}
AEvaluar.SetFocus; {Envirle el foco al
edit}
end;
{Si se selecciona MI, SI, SB}
if (Selec = 'ML') then
begin
Rango.Caption := '(0 - 255)'; {Rango}
AEvaluar.SetFocus; {Foco}
end;
if ((Selec = 'MD') or (Selec = 'SL') or (Selec =
'SD')) then
begin
Rango.Caption := '(0 - 63)'; {Delimitrar el
rango}
AEvaluar.SetFocus; {Envirle el foco al
edit}
end;
{ Si se selecciona INP, OUT}
if ((Selec = 'INP') or (Selec = 'OUT')) then
begin
Rango.Caption := '(00 - 543)'; {Rango
inicial}
AEvaluar.SetFocus; {Foco}
end;
if ((Selec = 'SB') or (Selec = 'SI')) then
begin
Rango.Caption := '(0 - 511)'; {Delimitrar el
rango}
AEvaluar.SetFocus; {Envirle el foco al
edit}
end;
{ Si se selecciona TC, TP, TS}
if ((Selec = 'TC') or (Selec = 'TP') or (Selec =
'TS')) then
begin
Rango.Caption := '(0 - 127)'; {Rango}
AEvaluar.SetFocus; {Foco}
end;
if ((Selec = 'CC') or (Selec = 'CP') or (Selec =
'CS')) then
begin
Rango.Caption := '(0 - 31)'; {Rango}
AEvaluar.SetFocus; {Foco}
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
end;
end;
end;
{Si se selecciona Status, Suspend, ID}
if ((Selec = 'STATUS') or (Selec = 'SUSPEND') or
(Selec = 'ID')) then
begin
Rango.Visible := False;
AEvaluar.Visible := False; {desactivar la
visibilidad ya que son 1 ó 0}
end;
{Si se selecciona Updateinterval}
if (Selec = 'UPDATEINTERVAL') then
begin
Rango.Caption := '(10 - 2147983647)'; {Rango}
AEvaluar.SetFocus; {foco}
end;
{Si se selecciona Maxinterval, itemcount,
errorcount, erroitems, writecount}
if ((Selec = 'MAXINTERVAL') or (Selec =
'INTEMCOUNT') or (Selec = 'ERRORCOUNT')or
(Selec = 'ERRORITEMS') or (Selec =
'WRITECOUNT')) then
begin
Rango.Caption := '(0 - 2147983647)'; {rango}
AEvaluar.SetFocus; {foco}
end;
end;
procedure TConfig.ProbarClick(Sender: TObject);
var
val, val2 : string;
begin
{Generacion del workbook}
WorkBk := EA1.Workbooks.Item[1];
{Generación del worksheet}
WorkSt := WorkBk.WorkSheets.Get_Item(1) as
_Worksheet;
{Si el campo es tipo estatus}
if (Selec = 'STATUS') then
begin
{Jale el dato tipo estatus}
WorkSt.Cells.Item[2,1] :=
'=Unitronics|'+vpal.Unid+'!STATUS';
vpal.formula :=
'=Unitronics|'+vpal.Unid+'!STATUS';
end;
{Si el dato es tipo ID}
if (Selec = 'ID') then
75
begin
{Jale el dato tipo ID}
WorkSt.Cells.Item[2,1] :=
'=Unitronics|'+vpal.Unid+'!ID';
vpal.formula := '=Unitronics|'+vpal.Unid+'!ID';
end;
{Si el dato es tipo Suspend}
if (Selec = 'SUSPEND') then
begin
{Jale el dato tipo suspend}
WorkSt.Cells.Item[2,1] :=
'=Unitronics|'+vpal.Unid+'!SUSPEND';
vpal.formula :=
'=Unitronics|'+vpal.Unid+'!SUSPEND';
end;
if ((Selec = 'INP') and (modelo = 0)) then
if ((integer(AEvaluar.text) > 0) and
(integer(AEvaluar.text) < 10 )) then
begin
val2 := string(Rango2.text);
val := string(Aevaluar.text);
WorkSt.Cells.Item[2,1] :=
'=Unitronics|'+vpal.Unid+'!'+#39+'INP0'+val+','+val2
+#39;
vpal.formula :=
'=Unitronics|'+vpal.Unid+'!'+#39+'INP0'+val+','+val2
+#39;
end
else
begin
val2 := string(Rango2.text);
val := string(Aevaluar.text);
WorkSt.Cells.Item[2,1] :=
'=Unitronics|'+vpal.Unid+'!'+#39+'INP'+val+','+val2+
#39;
vpal.formula :=
'=Unitronics|'+vpal.Unid+'!'+#39+'INP'+val+','+val2+
#39;
end
else
if ((Selec = 'OUT') and (modelo = 0)) then
if ((integer(AEvaluar.text) > 0) and
(integer(AEvaluar.text) < 10 )) then
begin
val2 := string(Rango2.text);
val := string(Aevaluar.text);
WorkSt.Cells.Item[2,1] :=
'=Unitronics|'+vpal.Unid+'!'+#39+'OUT0'+val+','+val
2+#39;
Diciembre del 2004
IE-0502
vpal.formula :=
'=Unitronics|'+vpal.Unid+'!'+#39+'OUT0'+val+','+val
2+#39;
end
else
begin
val2 := string(Rango2.text);
val := string(Aevaluar.text);
WorkSt.Cells.Item[2,1] :=
'=Unitronics|'+vpal.Unid+'!'+#39+'OUT'+val+','+val2
+#39;
vpal.formula :=
'=Unitronics|'+vpal.Unid+'!'+#39+'OUT'+val+','+val2
+#39;
end
else
begin
val := string(Aevaluar.text);
WorkSt.Cells.Item[2,1] :=
'=Unitronics|'+vpal.Unid+'!'+Selec+val;
vpal.formula :=
'=Unitronics|'+vpal.Unid+'!'+Selec+val;
end;
activado := true;
activac := true;
a := 1;
end;
procedure TConfig.Timer1Timer(Sender: TObject);
begin
if (activac = true) then
activac := false
else
if (activado = true) then
begin
WorkSt := WorkBk.WorkSheets.Get_Item(1)
as _Worksheet;
Valor.Text := WorkSt.Cells.Item[2,1];
Crear.Enabled := True;
end;
end;
procedure TConfig.FormCreate(Sender: TObject);
var
buffer : string;
cont : integer;
begin
with V_Ppal do
76
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
begin
buffer := Unid;
end;
Unid := buffer;
EA1.Connect;
EA1.Workbooks.Add(xlWBatWorkSheet,0);
WorkBk := EA1.Workbooks.Item[1];
contaetiq := 1;
end;
procedure TConfig.CrearClick(Sender: TObject);
var
fila, columna : integer;
begin
if (vpal.V_ppal.PageCPpal.ActivePageIndex = 0)
then
begin
if (Application.messagebox( 'Favor Crear una
Página','Error',MB_OK + MB_DEFBUTTON1)) =
IDOK then
Config.Close;
end
else
begin
if (vpal.V_ppal.PageCPpal.ActivePageIndex = 0)
then
begin
V_Ppal.NuevaPgina1Click(self);
end;
nuevo := 1;
columna :=
vpal.V_ppal.PageCPpal.ActivePageIndex;
fila := vpal.contreg;
vpal.nomlabel := Etiqueta.Text;
if Vpal.activado = true then
WorkSt.Cells.Item[fila+1,columna+1] :=
vpal.formula
else
Formula();
contaetiq := contaetiq + 1;
Application.MessageBox('Favor dar clic en donde
quiera que esté el objeto',
'Atención!!',MB_OK + MB_DEFBUTTON1);
Close;
end;
end;
procedure TConfig.FormShow(Sender: TObject);
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
begin
AEvaluar.Text := '';
Valor.Text := '';
Etiqueta.Text := 'Registro_'+inttostr(contaetiq);
if vpal.activado = true then
begin
Crear.Enabled := False;
Probar.Visible := True;
Valor.Visible := True;
end
else
begin
Crear.Enabled := True;
Probar.Visible := False;
Valor.Visible := False;
end;
activado := false;
end;
end. // Fin del programa
unit cionfiguracion;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs,
ExtCtrls, OleServer, Excel97, StdCtrls;
type
TForm1 = class(TForm)
LBRegistro: TListBox;
AEvaluar: TEdit;
Rango2: TEdit;
Valor: TEdit;
Probar: TButton;
Button1: TButton;
Rango: TLabel;
Label1: TLabel;
EA1: TExcelApplication;
Timer1: TTimer;
procedure LBRegistroClick(Sender: TObject);
procedure ProbarClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
77
var
Form1: TForm1;
activado: integer;
implementation
{$R *.DFM}
procedure TForm1.LBRegistroClick(Sender:
TObject);
begin
{ Poner en invisible las edits Rango2 y Aevaluar, y
el label LRang}
Rango2.Visible := False;
LRang. Visible := False;
AEvaluar.Visible := True;
{ Obtiene el objeto selecionado en el list box}
for i := 0 to (LBRegistro.Items.Count - 1) do
begin
if LBRegistro.Selected[i] then
Selec := LBRegistro.Items[i]
end;
{si se selecciona MB}
if (Selec = 'MB') then
begin
Rango.Caption := '(0 - 1023)'; {Delimitrar el
rango}
AEvaluar.SetFocus; {Envirle el foco al edit}
end;
{Si se selecciona MI, SI, SB}
if ((Selec = 'MI') or (Selec = 'SI') or (Selec = 'SB'))
then
begin
Rango.Caption := '(0 - 225)'; {Rango}
AEvaluar.SetFocus; {Foco}
end;
{ Si se selecciona INP, OUT}
if ((Selec = 'INP') or (Selec = 'OUT')) then
begin
Rango.Caption := '(00 - 63)'; {Rango inicial}
AEvaluar.SetFocus; {Foco}
{ Alteraciones en stado de las cosas}
Rango2.Visible := True;
LRang. Visible := True;
end;
{ Si se selecciona TC, TP, TS}
if ((Selec = 'TC') or (Selec = 'TP') or (Selec = 'TS'))
then
Diciembre del 2004
IE-0502
78
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
begin
Rango.Caption := '(0 - 63)'; {Rango}
AEvaluar.SetFocus; {Foco}
end;
{Si se selecciona Status, Suspend, ID}
if ((Selec = 'STATUS') or (Selec = 'SUSPEND') or
(Selec = 'ID')) then
begin
AEvaluar.Visible := False; {desactivar la
visibilidad ya que son 1 ó 0}
end;
{Si se selecciona Updateinterval}
if (Selec = 'UPDATEINTERVAL') then
begin
Rango.Caption := '(10 - 2147983647)'; {Rango}
AEvaluar.SetFocus; {foco}
end;
{Si se selecciona Maxinterval, itemcount,
errorcount, erroitems, writecount}
if ((Selec = 'MAXINTERVAL') or (Selec =
'INTEMCOUNT') or (Selec = 'ERRORCOUNT')or
(Selec = 'ERRORITEMS') or (Selec =
'WRITECOUNT')) then
begin
Rango.Caption := '(0 - 2147983647)'; {rango}
AEvaluar.SetFocus; {foco}
end;
end;
procedure TForm1.ProbarClick(Sender: TObject);
var
val, val2 : string;
begin
{Generacion del workbook}
WorkBk := EA1.Workbooks.Item[1];
{Generación del worksheet}
WorkSt := WorkBk.WorkSheets.Get_Item(1) as
_Worksheet;
{Si el campo es tipo estatus}
if (Selec = 'STATUS') then
begin
{Jale el dato tipo estatus}
WorkSt.Cells.Item[1,2] :=
'=Unitronics|'+Unid+'!STATUS';
end;
{Si el dato es tipo ID}
if (Selec = 'ID') then
begin
{Jale el dato tipo ID}
WorkSt.Cells.Item[1,2] :=
'=Unitronics|'+Unid+'!ID';
end;
{Si el dato es tipo Suspend}
if (Selec = 'SUSPEND') then
begin
{Jale el dato tipo suspend}
WorkSt.Cells.Item[1,2] :=
'=Unitronics|'+Unid+'!SUSPEND';
end;
if (Selec = 'INP') then
if ((integer(AEvaluar.text) > 0) and
(integer(AEvaluar.text) < 10 )) then
begin
val2 := string(Rango2.text);
val := string(Aevaluar.text);
WorkSt.Cells.Item[1,2] :=
'=Unitronics|'+Unid+'!INP0'+val+','+val2;
end
else
begin
val2 := string(Rango2.text);
val := string(Aevaluar.text);
WorkSt.Cells.Item[1,2] :=
'=Unitronics|'+Unid+'!INP'+val+','+val2;
end;
if (Selec = 'OUT') then
if ((integer(AEvaluar.text) > 0) and
(integer(AEvaluar.text) < 10 )) then
begin
val2 := string(Rango2.text);
val := string(Aevaluar.text);
WorkSt.Cells.Item[1,2] :=
'=Unitronics|'+Unid+'!OUT0'+val+','+val2;
end
else
begin
val2 := string(Rango2.text);
val := string(Aevaluar.text);
WorkSt.Cells.Item[1,2] :=
'=Unitronics|'+Unid+'!OUT'+val+','+val2;
end
else
begin
val := string(Aevaluar.text);
WorkSt.Cells.Item[1,2] :=
'=Unitronics|'+Unid+'!'+Selec+val;
end;
activado := true;
Diciembre del 2004
IE-0502
79
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if (activado = true) then
begin
WorkBk := EA1.Workbooks.Item[1];
WorkSt := WorkBk.WorkSheets.Get_Item(1)
as _Worksheet;
Valor.Text := WorkSt.Cells.Item[1,2];
//Valor.Text := 'OUT RANGE!!';
//activado := False;
end;
end;
end.
unit procesos;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs,
StdCtrls;
type
TNombre_Proceso = class(TForm)
Label1: TLabel;
Nombre: TEdit;
OK: TButton;
procedure OKClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
if (Nombre.text = '') then
Nombre.Text := 'Proceso_'+
inttostr(V_ppal.PageCPpal.ActivePageIndex+1);
vpal.nombrepag := Nombre.text;
V_Ppal.CrearNuevaPag();
Close;
end;
end.
unit Childwin;
interface
uses Windows, Classes, Graphics, Forms, Controls,
StdCtrls;
type
TMDIChild = class(TForm)
Memo1: TMemo;
procedure FormClose(Sender: TObject; var
Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.DFM}
procedure TMDIChild.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;
var
Nombre_Proceso: TNombre_Proceso;
end.
implementation
interface
uses vpal;
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs,
Menus, Excel97, ComCtrls, StdCtrls, OleServer,
ShellApi, ExtCtrls, jpeg,
syncobjs;
{$R *.DFM}
procedure TNombre_Proceso.OKClick(Sender:
TObject);
begin
nit UniHMI;
Diciembre del 2004
IE-0502
80
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
end;
type
TV_ppal = class(TForm)
PageCPpal: TPageControl;
Conexion: TTabSheet;
OK: TButton;
Direccion: TEdit;
Unidad: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
EA1: TExcelApplication;
GroupBox1: TGroupBox;
PBar: TProgressBar;
Image2: TImage;
Temporizador: TTimer;
ListBox: TListBox;
ImagenDes: TImage;
ImagenCon: TImage;
Abrir: TButton;
OpenDialog: TOpenDialog;
procedure Salir1Click(Sender: TObject);
procedure OKClick(Sender: TObject);
procedure CancelClick(Sender: TObject);
procedure TemporizadorTimer(Sender: TObject);
procedure NuevaPgina1Click(Sender: TObject);
procedure CrearNuevaPag();
procedure Press_Clic(Sender: TObject; Button:
TMouseButton;
Shift: TShiftState; X, Y: Integer);
Procedure CargarNuevaPag(nombre : string);
Procedure CargarNuevoElemento(X,Y :integer);
procedure AbrirClick(Sender: TObject);
procedure FormClose(Sender: TObject; var
Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
type
registro = record
numpag : integer; {Contiene el numero de página}
pagina : string; {Contiene el nombre de la pagina}
nombre : string; {lleva el nombre del item}
contenido : string; {lleva la funcion para
conexion}
posx, posy : integer; {coordenadas del item}
var
V_ppal: TV_ppal;
{Conexion}
WorkBk : _WorkBook;
WorkSt : _WorkSheet;
IIndex : OleVariant;
{Datos de Usuario}
Direc : Pchar; { Dirección Física del Archivo}
Unid, nombrepag, nomlabel, formula : String; {
Unidad a la cual se va a conectar}
cont, Suspencion, Estado : integer; { Estado de la
conecxion}
est, activo, activado: boolean; {estados del reloj para
OPC Server}
numpag: Integer; {almacena el numero de pagina}
reg : array [1..100] of registro; {}
nuevo, contreg : integer;
posx, posy : integer;
implementation
{$R *.DFM}
procedure TV_ppal.Salir1Click(Sender: TObject);
begin
V_ppal.Close; {Cerrar el sistema}
end;
procedure TV_ppal.OKClick(Sender: TObject);
var
buscar : Integer;
begin
numpag := 1;
Direc := Addr(Direccion.Text[1]); { Cargar el
nombre de la apliucación}
Unid := Unidad.text; { Cargar la unidad a ejecutar}
ShellExecute(V_ppal.Handle,'open',Direc,nil,nil,SW_
SHOWMINIMIZED);
{ Ejecutar el metodo de conexión}
While (activo = false) do
Diciembre del 2004
IE-0502
81
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
begin
{ Metodo para optener los datos del PLC}
buscar:=FindWindow(nil,'UNITRONICS');
if (activo <> true) then
begin
if ((cont mod 10000) = 0) then
PBar.StepIT;
cont := cont + 1;
end;
If (buscar<>0) then
begin
activo := true;
cont := 0;
contreg := 0;
EA1.Connect;
EA1.Workbooks.Add(xlWBatWorkSheet,0);
WorkBk := EA1.Workbooks.Item[1];
WorkSt := WorkBk.WorkSheets.Get_Item(1) as
_Worksheet;
end;
end;
{ Si esta desconectado muesta desconectado, pero si
lo esta muesta Conectado}
end;
procedure TV_ppal.CancelClick(Sender: TObject);
begin
V_ppal.Close;
end;
procedure TV_ppal.TemporizadorTimer(Sender:
TObject);
var
pag, I, aux, contador : integer;
Selec : TLabel;
begin
if (activo = true) then
begin
if (activado = true) then
begin
WorkSt.Cells.Item[1,1] :=
'=Unitronics|'+Unid+'!STATUS';
if (est = true) then
begin
Estado := integer(WorkSt.Cells.Item[1,1]);
if (Estado = 0) then
begin
ImagenDes.Visible := True;
ImagenCon.Visible := False;
end
else
begin
ImagenDes.Visible := False;
ImagenCon.Visible := True;
end;
{Parte del timer para jalar la info de los Labels}
aux := 1;
Listbox.Items.Clear;
for I := V_Ppal.ComponentCount-1 downto 15
do
begin
if (V_Ppal.Components[I] is TLabel) then
ListBox.Items.InsertObject(0,
V_Ppal.Components[I].Name,
V_Ppal.Components[I] as
TObject);
end;
pag := PageCPpal.ActivePageIndex;
for contador := 0 to ListBox.Items.Count - 1 do
begin
if (ListBox.Items.Objects[contador] is TLabel)
then
begin
Selec := (ListBox.Items.Objects[contador] as
TLabel);
Selec.Caption :=
reg[aux].nombre+#13+string(WorkSt.Cells.Item[aux,
pag+1]);
Selec.Alignment :=tacenter;
aux := aux + 1;
end;
end;
end
else
est := true;
end
else
activado := true;
end;
end;
procedure TV_ppal.NuevaPgina1Click(Sender:
TObject);
begin
// Crear una página nueva
Diciembre del 2004
IE-0502
end;
Procedure TV_ppal.CrearNuevaPag();
begin
with PageCPpal do
with TTabSheet.Create(Self) do
begin
PageControl := PageCPpal;
Name := 'Proceso_' +
IntToStr(Pages[numpag].PageIndex);
Caption := nombrepag;
numpag := numpag + 1;
OnMouseDown := Press_Clic;
end;
PageCPpal.ActivePageIndex:=
(PageCPpal.Pages[numpag - 1].PageIndex)
end;
Procedure TV_ppal.CargarNuevaPag(nombre :
string);
begin
with PageCPpal do
with TTabSheet.Create(Self) do
begin
PageControl := PageCPpal;
Name := 'Proceso_' +
IntToStr(Pages[numpag].PageIndex);
Caption := nombre;
OnMouseDown := Press_Clic;
end;
PageCPpal.ActivePageIndex:=
(PageCPpal.Pages[numpag].PageIndex);
numpag := numpag + 1;
end;
{
Realiza: Captura los datos de la coordenadas del
mouse en
el lugar en que se dio el clic, muestra un
mensage
de la localizacion del puntero del muose.
Envia: nada.
Recibe: Un objeto, el boton precionado, las
coordenadas X Y y el estado.
}
procedure TV_ppal.Press_Clic(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
82
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
hoja : TTabSheet;
begin
posy := Y;
posx := X;
if (nuevo = 1) then
begin
nuevo := 0;
contreg := contreg + 1;
reg[contreg].nombre := nomlabel;
Self.Name := 'Label_'+IntToStr(cont);
with TLabel.Create(Self) do
begin
hoja := TTabSheet(PageCPpal.ActivePage);
Parent:= hoja;
with hoja do
begin
reg[contreg].pagina := Caption;
end;
reg[contreg].numpag :=
PageCPpal.ActivePageIndex;
Left:=posx;
reg[contreg].posx := posx;
Top:=posy;
reg[contreg].posy := posy;
Autosize := True;
reg[contreg].contenido := formula;
end;
ListBox.Items.InsertObject(0,Self.Name,Self as
TObject);
end;
end;
Procedure TV_ppal.CargarNuevoElemento(X,Y
:integer);
var
hoja : TTabSheet;
begin
contreg := contreg + 1;
Self.Name := 'Label_'+IntToStr(contreg);
with TLabel.Create(Self) do
begin
hoja := TTabSheet(PageCPpal.ActivePage);
Parent:= hoja;
Left:=X;
Top:=Y;
Autosize := True;
end;
Diciembre del 2004
IE-0502
Interfaz Humano-Máquina para la familia de PLC’s Unitronics.
ListBox.Items.InsertObject(0,Self.Name,Self as
TObject);
end;
procedure TV_ppal.AbrirClick(Sender: TObject);
var
Arch : TextFile;
temp, auxi : integer;
begin
if (activado = true) then
begin
OpenDialog.Execute;
AssignFile(Arch,(Opendialog.FileName));
Reset(Arch);
temp := 1;
while (not(EOF(Arch))) do
begin
Readln(Arch,reg[temp].numpag);
Readln(Arch,reg[temp].pagina);
Readln(Arch,reg[temp].nombre);
Readln(Arch,reg[temp].Contenido);
Readln(Arch,reg[temp].posx);
Readln(Arch,reg[temp].posy);
Readln(Arch);
if (reg[temp].numpag > auxi) then
begin
auxi := reg[temp].numpag;
CargarNuevaPag(reg[temp].pagina);
end;
83
CargarNuevoElemento(reg[temp].posx,reg[temp].pos
y);
WorkSt.Cells.Item[temp,reg[temp].numpag +1] :=
reg[temp].contenido;
temp := temp +1;
end;
closefile(Arch);
abrir.Enabled := false;
end
else
ShowMessage('Favor conectarse Primero');
end;
procedure TV_ppal.FormClose(Sender: TObject; var
Action: TCloseAction);
var
cerrar:integer;
begin
cerrar:=FindWindow(nil,'UNITRONICS');
if (cerrar = 0) then
ShowMessage('No encuentro el servidor
Unitronics Ejecutandose')
else
SendMessage(cerrar,WM_CLOSE,0,0);
EA1.Workbooks.Close(0);
EA1.Disconnect;
end;
end. // Fin de programa
Diciembre del 2004
Descargar