You are on page 1of 95

Universidad de Costa Rica Facultad de Ingeniera Escuela de Ingeniera Elctrica

IE 0502 Proyecto Elctrico

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

Por: Alexnder Barrantes Muoz

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

ii

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

Por: Alexnder Barrantes Muoz

Sometido a la Escuela de Ingeniera Elctrica de la Facultad de Ingeniera de la Universidad de Costa Rica como requisito parcial para optar por el grado de: BACHILLER EN INGENIERA ELCTRICA Aprobado por el Tribunal:

___________________ M.Sc. Geovanny Delgado Cascante Profesor Gua ___________________ Ing. Roberto Rodrguez Rodrguez Profesor Lector __________________ Dr. Jorge Arturo Romero Chacn Profesor Lector

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs 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 admiracin y modelo a seguir. A Ftima 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-Mquina para la familia de PLCs Unitronics.

iv

RECONOCIMIENTOS

Carlos Manuel Calvo Muoz 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-Mquina para la familia de PLCs Unitronics.

NDICE GENERAL
NDICE DE FIGURAS......................................................................................... vii NDICE DE TABLAS.......................................................................................... viii NOMENCLATURA............................................................................................... ix LSTA DE MARCAS REGISTRADAS ................................................................ xi RESUMEN............................................................................................................. xii CAPTULO 1: Introduccin .................................................................................. 1
1.1 1.1.1 1.2 Objetivo General..............................................................................................................2 Objetivos especficos .............................................................................................. 2 Metodologa .....................................................................................................................2

CAPTULO 2: Generalidades de una Aplicacin HMI ...................................... 5


2.1 Generalidades de un PLC. .........................................................................................................5 2.1.1 Concepto ........................................................................................................................ 5 2.1.2 Funciones ....................................................................................................................... 6 Las funciones bsicas que posee un PLC comn 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 Comunicacin ...................................................................................................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 Grfico Delphi. ....................................................................................................23

CAPTULO 3: Desarrollo de una Interfaz HMI ............................................... 25


3.1 Breve resea de la compaa Unitronics..................................................................................25 3.1.1 Misin .......................................................................................................................... 26 3.1.2 Historia de sus productos............................................................................................. 26
Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

vi

3.1.3 Breve Organigrama de la compaa............................................................................. 27 3.1.4 Puntos Claves............................................................................................................... 27 3.1.5 Productos ..................................................................................................................... 27 3.2 La familia de productos de Unitronics.....................................................................................28 3.2.1 Caractersticas generales de los productos................................................................... 29 3.2.1.1 El modo de informacin ........................................................................................... 30 3.2.1.2 La estructura de memoria de la serie M90 ................................................................ 30 3.2.1.3 Variables ................................................................................................................... 31 3.2.1.4 Comunicacin ........................................................................................................... 32 Puerto Serial.......................................................................................................................... 32 3.3 Caractersticas Generales del M90 OPLC............................................................................33 3.3.1 Tipos de datos del sistema ........................................................................................... 35 3.3.2 Especificaciones Tcnicas ........................................................................................... 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

CAPTULO 4: Conclusiones y Recomendaciones ............................................. 50


4.1 Conclusiones............................................................................................................................50 4.2 Recomendaciones ....................................................................................................................51

BIBLIOGRAFA................................................................................................... 52 ANEXOS ................................................................................................................ 53

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

vii

NDICE DE FIGURAS
Figura N2.1 Funcionamiento e Interfaces de OPC ................................................................. 21 Figura N2.2 Modelo de Objetos del Servidor de Automatizacin OPC ................................. 21 Figura N3.1 Organigrama de la Co. Unitronics ...................................................................... 27 Figura N3.2 Familia de PLCs de Unitronics ........................................................................... 29 Figura N3.3 Conectando la PC con un Controlador................................................................ 34 Figura N3.4 PLC M90 ............................................................................................................. 39 Figura N3.5 Pantalla de Conexin de UniScada ..................................................................... 49 Figura N3.6 Pantalla de Conexin de UniHMI....................................................................... 49

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

viii

NDICE DE TABLAS
Tabla 2.1 Descripcin de la coleccin de objetos de la especificacin OPC ........................... 22 Tabla 3.1 Descripcin de registros internos del M90 ............................................................... 33 Tabla 3.2 Distribucin de pines del puerto RS232 ................................................................... 33 Tabla 3.3 Descripcin de conexin para el puerto CANbus.................................................... 34 Tabla 3.4 Categoras de informacin que se pueden alcanzar en el modo de Informacin...... 35 Tabla 3.5 La funcin 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 Descripcin de los tipos de tems del M90 ............................................................. 41

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

ix

NOMENCLATURA
ActiveX ADO Baud rate BDE CCFL COM CORBA CPU DCOM DDE DLL DSR DTR HMI ID NetDDE Ladder LCD OCX OLE OPC OPLC PC Pcom PID PLC PWM Tecnologa de Acceso a Datos Objetos de Base de Datos ActiveX Tasa de transmisin de datos en bps Motor de Base de Datos de Borland Lmpara fluorescente Modelo Componente del Objeto Arquitectura Comn del Corredor de la Peticin del Objeto Unidad Central de Proceso Distribucin COM Protocolo de Intercambio de datos dinmico Librera de Enlace Dinmico Entrada Datos preparados, listo para iniciar dilogo Patilla de terminal de listo datos del puerto RS232 Interfaz Humano-Mquina Identificacin Red de DDE Programa de configuracin de PLCs en lenguaje escalera Pantalla de cristal lquido Librera de programacin Enlace e inclusin de objetos OLE para Control de Procesos Serie de PLCs Unitronics Computadora Personal Protocolo propietario de Unitronics Proporcional Integral Derivativo Controlador Lgico Programable Modulacin de Anchura de Pulso

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

QVGA RAD RAM RxD RS232 RJ-11 SCADA STL Tag TxD UCR VCA VCD VisiLogic WebPLC I/O

Clase de tecnologa Desarrollo Rpido de Aplicaciones Memoria de acceso lectura Patilla de recepcin de datos del puerto RS232 Puerto Serial de la PC Cable para conexin del mdem a la base de la red telefnica Supervisor de Control y Adquisicin de Datos Librera estndar de plantillas Conjunto de caracteres que se aade a un elemento de los datos para identificarlo Patilla de transmisin de datos del puerto RS232 Universidad de Costa Rica Voltaje de Corriente Alterna Voltaje de Corriente Directa Programa para PLCs Unitronics Serie de PLCs Unitronics basados en comunicacin por web Entradas/Salidas

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

xi

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 Software Siemens C++, Visual Basic, VBScrip, JavaScript DeviceNet Intuitiv

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

xii

RESUMEN
El objetivo principal es una aplicacin HMI, Interfaz Humano Mquina, para el modelo de PLCs de Unitronics M90, por medio de la implementacin de un programa SCADA en la plataforma de programacin Delphi Enterprise 5.0, con lenguaje Borland Pascal. Se empez por estudiar dicha plataforma, que utiliza programacin orientada a objetos. Despus se estudi la estructura interna del PLC M90, se estableci comunicacin con el PLC en pequeas pruebas de manipulacin de registros internos en Excel por medio del protocolo de comunicacin DDE. Seguidamente se trasladaron estas pruebas a desarrollos con Delphi y poco a poco se fueron solventando problemas que aparecan en el transcurso de la implementacin. Las fuentes de informacin 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 diseadas especialmente para la creacin de sistemas SCADA. Los resultados fueron: Se Desarroll una Interfaz Humano-Mquina (HMI) para la familia de PLCs Unitronics con la creacin de las aplicaciones UniScada y Uni_HMI, Se practic en el desarrollo de aplicaciones en Borland Delphi, Se estudi la arquitectura de los PLCs Unitronics, Se Desarroll una aplicacin de comunicacin entre Delphi y el OPC Server de Unitronics, Se Realiz una aplicacin de lectura de registros del PLC, Se Desarroll la aplicacin HMI de despliegue de registros, pues se obtuvo un prototipo de lo que hoy en da es materia de mercado, asimismo, se elimin el desconocimiento en dicho tema, haciendo ms familiar futuras experiencias con programas SCADA comerciales en el campo laboral.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

CAPTULO 1: Introduccin
Lo que se pretendi en este trabajo fue la creacin de un programa bsico de monitoreo estilo SCADA, como es mencionado comercialmente, implementndolo en una plataforma de programacin grfica, Delphi 5.0, en donde se estableci una comunicacin entre un PLC y la PC, de manera que el usuario pueda tener una cmoda interaccin con el dispositivo. Se seleccion el controlador lgico programable de la familia de Unitronics, enfatizando en el modelo M90, a pesar de que toda la lnea de PLCs de dicha familia (Unitronics) posee caractersticas extremadamente similares, en donde es posible que sus diferencias significativas no sean ms que sus capacidades de memoria, pero su estructura interna es muy parecida y para efectos de este proyecto la comunicacin y manipulacin de datos son idnticas, pues hasta los registros internos poseen los mismos nombres. Este dispositivo (M90) fue seleccionado por su simple estructura interna y su fcil manipulacin, como ms adelante se mencionar. La plataforma de programacin Borland Pascal de Delphi fue seleccionada por sus caractersticas grficas 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 da, con el objetivo de actualizar al estudiante con materia de mercado en el rea de control automtico. Un objetivo futurista de este trabajo pretende utilizar las bases creadas para la realizacin 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 creacin de este tipo de softwares.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

1.1

Objetivo General
Desarrollar una Interfaz Humano-Mquina (HMI) para la familia de PLCs Unitronics. M90.

1.1.1

Objetivos especficos Entrenamiento en el desarrollo de aplicaciones en Borland Delphi. Estudiar la arquitectura de los PLCs Unitronics M90. Desarrollar una aplicacin de comunicacin entre Delphi y el OPC Server de Unitronics. Realizar una aplicacin de lectura de registros del PLC.

Desarrollar la aplicacin HMI de despliegue de registros.

1.2

Metodologa
La metodologa utilizada para la realizacin de este proyecto, comenz con una

distribucin del tiempo secuencial para cada objetivo especfico 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 dependa y a su vez se limitaba a ser desarrollado en un lapso de cuatro meses, dictado por la divisin de los periodos lectivos establecidos por la UCR. Como parte del procedimiento se tuvieron que realizar constantes y aleatorias reuniones profesor gua-estudiante, segn la necesidad de respaldo e informacin que el estudiante necesitara en el proceso tanto de elaboracin como en el de investigacin del trabajo. En dichas reuniones se definieron en primer lugar el tema a realizar, el procedimiento a seguir, las fuentes de informacin necesarias y consultora. Conforme pas el tiempo se tuvo que acudir a asesoras con personas expertas o familiarizadas con los temas, en donde si no precisamente fue funcin total del profesor gua, el mismo brindaba las dichas fuentes asesoras. El estudiante por su parte tambin acudi a asesores segn su comodidad, debe entenderse que los asesores encontrados no posean en su totalidad conocimiento de aplicaciones similares a la realizada y que su conocimiento comprenda desde control-

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

automtico solamente hasta simple programacin, por lo que la base terica obtenida fue compuesta por informacin de fuentes diversas. El primer apartado del cronograma correspondi al a) Entrenamiento en el desarrollo de aplicaciones en Borland Delphi. Ntese que la Escuela de Ingeniera Elctrica carece de cursos obligatorios de introduccin a la programacin 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 dems objetivos. Una vez emprendido el trayecto con los conocimientos bsicos de la plataforma Delphi y de programacin orientada a objetos, se procedi al siguiente paso b) Estudiar la arquitectura de los PLCs Unitronics M90. Es necesario citar que la familia de PLCs Unitronics poseen caractersticas muy parecidas, me refiero al mbito de sus registros internos, que adems son relativamente simples y de fcil comprensin; por lo que el tiempo destinado a esta etapa no fue excesivo; por el contrario, este puede que fuese el ms fcil de los objetivos, como se refiere en el captulo 3, basta ms que leer ese captulo del informe para darse por enterado y comprendido todo lo referente a este tipo de PLCs. Se debe recalcar que el mayor asesor sobre este tema fue el profesor gua, pues adems de que posee vasta experiencia en el rea de automatizacin, es un experto de la familia de PLCs Unitronics. El tercer apartado fue: c) Desarrollar una aplicacin de comunicacin entre Delphi y el OPC Server de Unitronics, d) Realizar una aplicacin de lectura de registros del PLC e) Desarrollar la aplicacin HMI de despliegue de registros. Estas aplicaciones (puntos c, d y e) se realizaron por primera vez en la hoja de clculo Excel , por su gran comodidad, facilidad y documentacin, pues en la ayuda del driver OPC Server existe informacin de comunicacin Excel -Servidor OPC; se estableci comunicacin entre el PLC y la PC, en donde se probaron los registros internos, de manera que se comprob las diferentes utilidades de cada registro, conocindolas ms profundamente. Este paso fue muy fcil gracias a los protocolos de comunicacin tipo

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

DDE que posee Windows , pues con este protocolo se pudo comunicar Excel con el OPC Server. Se prosigui con una pequea implementacin de comunicacin en la plataforma Delphi. Este objetivo puede que fuese el ms difcil 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 versin del Delphi Enterprise (5.0). Todava se desconoce si de verdad esta fue la razn 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 creacin 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 aplicacin HMI de forma grfica. Este objetivo necesit mucha creatividad e informacin, pues es aqu donde se empez a desarrollar la interfaz grfica. Se trabaj con archivos, entre muchos elementos de programacin, lo cual implic gran cantidad de consultas acerca de informacin sobre la implementacin de determinados elementos, realizadas en Internet.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

CAPTULO 2: Generalidades de una Aplicacin HMI


Para iniciar en el desarrollo de este proyecto, se especifican algunas conceptos de relevancia con respecto a los PLCs, en trminos generales, y sobre nuestra aplicacin se especifican su definicin, funciones, estructura fsica Hardware o componentes, aplicaciones, debilidades y fortalezas. Seguido a esto procede definir conceptos como definiciones de un sistema SCADA y sus funciones, protocolos de comunicacin, protocolo DDE, OLE para Windows y Servidor OPC , adems la utilidad del compilador Delphi en el proyecto, entre otras cosas de conocimiento imprescindible. Esta es la teora que se debe tener muy clara antes de empezar a desarrollar una aplicacin HMI. Se espera que cualquier persona que lea el informe puede iniciarse en el tema, conociendo los principios bsicos para desarrollar una aplicacin HMI.

2.1 Generalidades de un PLC.


2.1.1 Concepto Las siglas PLC significan Programmable Logic Controller, lo que en espaol sera Controlador Lgico Programable. Resulta ser simplemente a grandes rasgos un equipo que se puede programar en un lenguaje simblico, y est diseado para controlar procesos industriales e implementar mquinas. Cuando se refiere a programar en un lenguaje no informtico, se habla de que estos aparatos se programan en un lenguaje denominado Escalera, un tipo de programacin muy simple, fcil y amigable de manera que no hace falta escudriar en profundidad las notaciones que poseen generalmente los compiladores comerciales, donde es necesario estar familiarizado con algn lenguaje para entenderlo. Este lenguaje se basa en una notacin grfica de bloques (en algunos casos, tales son los PLCs marca SIEMENS), o con figuras simples como esquemticos de contactores, bobinas y otros. Al no estar este tema en nuestro marco de anlisis, pues la aplicacin est directamente relacionada con la manipulacin de los registros internos del PLC, se retoma este tema en el Captulo 3. Un PLC recibe por sus entradas o captadores, informacin que ser procesada por un programa lgico interno determinado, que ejecutar acciones especficas sobre sus
Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs 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 produccin peridicamente cambiante Procesos secunciales Maquinaria de procesos variables Instalaciones de procesos complejos y amplios Chequeo de programacin centralizada de las partes del proceso.

2.1.2 Funciones Las funciones bsicas que posee un PLC comn son2: Deteccin: Lectura de la seal de las entradas distribuidos por el sistema de fabricacin. Mando: Elaborar y enviar las acciones al sistema mediante las salidas y preaccionadores. Dilogo hombre mquina: Mantener un dilogo con los operarios de produccin, obedeciendo sus consignas e informando del estado del proceso. Programacin: Para introducir, elaborar y cambiar el programa de aplicacin del autmata. El dilogo de programacin debe permitir modificar el programa incluso con el autmata controlando la mquina. Hoy en da los PLCs poseen nuevas funciones tales como: Redes de comunicacin: Permiten establecer comunicacin con otras partes de control. Las redes industriales permiten la comunicacin y el intercambio de datos entre autmatas en tiempo real. Sistemas de supervisin: Tambin los autmatas permiten comunicarse con ordenadores provistos de programas de supervisin industrial. Esta comunicacin se
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.
1

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

realiza por una red industrial o por medio de una conexin por el puerto serie del ordenador. Control de procesos continuos: Adems de dedicarse al control de sistemas de eventos discretos los autmatas llevan integradas funciones que permiten el control de procesos continuos. Disponen de mdulos de entrada y salida analgicas y la posibilidad de ejecutar reguladores PID que estn programados en el autmata. Entradas- Salidas distribuidas: Los mdulos de entrada salida pueden estar distribuidos por la instalacin y se comunican con la unidad central del autmata mediante un cable de red. Buses de campo: Mediante un solo cable de comunicacin se pueden conectar al bus de entradas y salidas, reemplazando al cableado tradicional. El autmata consulta cclicamente el estado de las entradas y actualiza el estado de las salidas. 2.1.3 Componentes Entre los principales componentes de un PLC bsico 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 nmero finito de elementos dependiendo del fabricante y conectarse a otros gabinetes similares mediante un gabinete de expansin. Fuente de Alimentacin: La tensin 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 (segn el fabricante) que se programan mediante un software propio. La mayora de ellos ofrecen varias formas de programacin (lenguaje de contactos, neumnico o instrucciones, de funciones, etc.). Normalmente trabajan con buses de 16 bits, aunque algunos modernos trabajan con buses de 32 bits. Hoy en da la potencia de clculo de estos PLC's es grandsima, sobre todo si se trabaja con nmeros reales o coma flotante, dando unas resoluciones ms que deseables. Trabajando con programas digitales puede alcanzarse un ciclo de exploracin de 10 ms.
3

Informacin tomada de:

http://www.euskalnet.net/m.ubiria/ARTICULOS.htm#Articulos_2001_01

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

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 exploracin y hay un temporizador interno que vigila que este programa se ejecute de principio a fin, llamado perro guardin o watchdog. Si este temporizador finaliza y el programa no ha ejecutado la instruccin END, el PLC pasar a estado de STOP. Tarjetas entradas/salidas digitales: Se enchufan o conectan al gabinete y comunican con la CPU a travs de la citada conexin. 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 ejecucin del programa y las activa o desactiva en consecuencia. Normalmente se utilizan tarjetas de entradas de 24 VCD y salidas de 24 VCD, aunque tambin 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 analgicas: Se enchufan o conectan al gabinete de igual manera que las anteriores, pero teniendo en cuenta que en algunos modelos de PLCs han de estar situadas lo ms cerca posible de la CPU (por problemas de cada de tensin). Estas tarjetas leen un valor analgico e internamente lo convierten en un valor digital para su procesamiento en la CPU. Esta conversin la realizan los convertidores analgico-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 seales analgicas es mucho ms rpido que en el otro. Estas tarjetas son normalmente de 2, 4, 8 16 entradas/salidas analgicas, llamndose a cada una de ellas canal. Los rangos de entrada estn normalizados siendo lo ms frecuente el rango de 4-20 mA (miliamperios) y 0-10 VCD, aunque tambin existen de 0-20 mA, 1-5V, 0-5V, etc. Tarjetas especiales: Se enchufan o conectan al gabinete y comunican con la CPU a travs de la citada conexin. Se utilizan normalmente para control o monitorizacin de variables o movimientos crticos 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

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

Tarjetas de regulacin.

2.1.4 Aplicaciones Entre las aplicaciones ms comunes que puede tener un PLC podemos mencionar algunos ejemplos tales como4: Maniobra de mquinas Maquinaria industrial de plstico Maquinaria de embalajes Maniobra de instalaciones: Instalacin de aire acondicionado, calefaccin, etc. Instalaciones de seguridad Chequeo de programas Sealizacin del estado de procesos

Sealizacin y control:

2.1.5 Fortalezas y Debilidades Las principales virtudes del uso de un PLC son5: Menor tiempo empleado en la elaboracin de proyectos debido a que: No es necesario dibujar el esquema de contactos No es necesario simplificar las ecuaciones lgicas, ya que, por lo general almacenamiento del mdulo de memoria es lo

la capacidad de

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 distintos plazos de entrega.
4

proveedores,

Posibilidad de introducir modificaciones sin cambiar el cableado ni aadir aparatos. Mnimo espacio de ocupacin. Menor costo de mano de obra de la instalacin.

Ejemplos tomados de: http://www.grupo-maser.com/PAG_Cursos/Auto/auto2/auto2/PAGINA%20PRINCIPAL/PLC/plc.htm. Informacin tomada de:

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

10

Economa de mantenimiento. Adems de aumentar la fiabilidad del sistema, al eliminar contactos mviles, los mismos autmatas pueden indicar y detectar averas. Posibilidad de gobernar varias mquinas con un mismo autmata. Menor tiempo para la puesta en funcionamiento del proceso al quedar reducido el tiempo de cableado. Si por alguna razn la mquina queda fuera de servicio, el autmata sigue siendo til para otra mquina o sistema de produccin. En contraposicin a sus cualidades se puede citar algunas de sus inconvenientes:

Es necesario un programador, lo que obliga a adiestrar a uno de los tcnicos 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 ingls Human Machine Interface, lo que en espaol es Interfaz Humano Mquina. 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 comunicacin y transmisin de datos con el PLC. Antes de seguir refirindose 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 inters. Las siglas SCADA provienen del ingls: Supervisory Control and Data Adquisition, lo que traducido al espaol y de forma ms explcita, es un software supervisor que realiza la adquisicin de datos desde PLC hacia una PC comnmente, y el envo de datos en sentido contrario. El carcter 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, grfico y amigable
http://www.grupo-maser.com/PAG_Cursos/Auto/auto2/auto2/PAGINA%20PRINCIPAL/PLC/plc.htm

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

11

simule los procesos que se realizan en una planta (como control de calidad, supervisin, 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 tambin, que enve instrucciones que acten directamente sobre los diferentes dispositivos, de tal manera que sea tan cmodo como el presionar una tecla del computador. De una manera ms personal, agregando a la definicin anterior, un programa SCADA es un software creador de aplicaciones programadas especficas de un proceso determinado. Un ejemplo es el de monitorear alarmas de un Banco. Los procesos que se realizan son: recoger la informacin de los censores en las entradas de un PLC y visualizar las entradas en la PC (el PLC ya posee una programacin que realizar con una entrada especfica 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 ms que esta aplicacin en el programa de monitoreo. Pero si es el vendedor de PLCs y cada cliente necesita una aplicacin distinta o actualizar la que ya tiene, ocupa tener un programa que cree los distintos softwares para cada aplicacin, a este programa padre o creador le denomino SCADA. Continuando con las caractersticas generales de las HMI, cada uno tiene su software propio y la comunicacin generalmente se da a travs del puerto serial RS232. Una descripcin general propuesta de cmo deben ser los mdulos que componen un software SCADA es la siguiente6: Configuracin: permite al usuario definir el entorno de trabajo de su SCADA, adaptndolo a la aplicacin particular que se desea desarrollar. Interfaz grfico del operador: proporciona al operador las funciones de control y supervisin de la planta. El proceso se representa mediante sinpticos grficos almacenados en el ordenador de proceso y generados desde el editor incorporado en el SCADA o importados desde otra aplicacin durante la configuracin del paquete.
6

Tomado de http://personal.redestb.es/efigueras/

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

12

Mdulo de proceso: ejecuta las acciones de mando preprogramadas a partir de los valores actuales de variables ledas. Gestin y archivo de datos: se encarga del almacenamiento y procesado ordenado de los datos, de forma que otra aplicacin o dispositivo pueda tener acceso a ellos. Comunicaciones: se encarga de la transferencia de informacin entre la planta y la arquitectura hardware que soporta el SCADA, y entre sta y el resto de elementos informticos de gestin. 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 segn 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 gestin). Deben ser programas sencillos de instalar, sin excesivas exigencias de hardware, y fciles 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) Gestin de alarmas del proceso, con textos de ayuda al operario para la resolucin de las mismas Recopilacin de alarmas sucedidas en el tiempo (histrico de alarmas) Impresin de las citadas alarmas
8

Ejecucin de programas, que modifican la ley de control, o incluso anular o

modificar las tareas asociadas al autmata, bajo ciertas condiciones. Posibilidad de programacin numrica, que permite realizar clculos aritmticos de elevada resolucin sobre la CPU del ordenador. 2.2.3 Elementos necesarios para un sistema SCADA
7 8

Informacin tomada de http://personal.redestb.es/efigueras/ Tomado de http://personal.redestb.es/efigueras/

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

13

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 comunicacin PC-PLC Driver de comunicacin: programa que realiza la traduccin entre el sistema SCADA-HMI y el PLC. PC

2.3 Protocolos de Comunicacin


2.3.1 Concepto Un protocolo de comunicacin, son las reglas de comunicacin que autorizan la transmisin de datos entre diferentes dispositivos que hablan sus propios idiomas. Cuando se requiere establecer comunicacin entre dispositivos, se deben establecer algunos puntos elementales entre ellos tales como la sincronizacin y los procedimientos para el intercambio de datos o Protocolos.
9

Los protocolos son implementados va procesos (son los programas que se ejecutan Un proceso se ejecuta en un procesador virtual o lgico. Un proceso es auto contenido No se da cuenta (y no le interesa), que un procesador real comparta sus recursos entre varios procesos activos.

en un hardware).

Los procesos existen en: Equipos de una red. Sistema multiprocesador, para controlar interaccin de procesos paralelos. Aplicaciones en tiempo real para el control de dispositivos.

La entrada a los procesos ocurre por puertas lgicas 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-Mquina para la familia de PLCs Unitronics.

14

Un conjunto de datos privados definen el estado actual de un proceso y determinan la accin a tomar por el receptor de un mensaje. El resultado de la computacin ejecutada por el proceso se enva por una puerta lgica de salida. Cmo opera un protocolo como DDE? Un proceso recibe un mensaje, lo procesa y enva una respuesta, sin que exista relacin entre este evento y otro anterior o posterior. El proceso origen, conocer la direccin del proceso destino y la incluir en el mensaje. Esta direccin, 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 funcin especificada en el mensaje, construye la respuesta (con resultados y direccin del origen) y enva 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 comunicacin DDE (siglas derivadas del ingls Dynamic Data Exchange), es un protocolo de intercambio de datos de Microsoft para aplicaciones Windows.
10

El intercambio de datos dinmico (DDE) permite enviar/recibir datos e

instrucciones hacia/desde una a otra aplicacin. Esto implementa una relacin clienteservidor entre dos aplicaciones en ejecucin al mismo tiempo. El uso del servidor proporciona los datos y acepta peticiones de cualquier otra aplicacin interesada en sus datos. Las aplicaciones que solicitan se llaman clientes. Algunas aplicaciones tales como Microsoft Excel pueden simultneamente ser cliente y servidor. NetDDE ampla la
10

Traducido del manual de ayuda del OPC Server de la compaa Unitronics

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

15

funcionalidad estndar del DDE de Windows para incluir comunicacin sobre redes de rea local a travs de puertos seriales. Las extensiones de red estn disponibles para permitir enlaces DDE entre las aplicaciones corriendo en diversas computadoras conectadas va redes o mdems.
11

El protocolo DDE est basado en el sistema de mensajera construido por

Windows . As, dos programas de aplicacin bajo Windows realizan una "conversacin DDE" envindose mensajes entre ellos. Una conversacin DDE se inicia con el programa que acta como cliente. Este transfiere un mensaje a todos los programas que se estn ejecutando en ese momento en Windows . Dicho mensaje indica una categora general de datos que el cliente necesita. Un servidor DDE que posee dichos datos puede responder a este mensaje. En este instante comienza la conversacin. 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 mltiples clientes y un cliente puede obtener datos desde mltiples servidores, pero esto requiere mltiples conversaciones DDE. Un programa implicado en una conversacin DDE no necesita codificarse especficamente para trabajar con otro programa DDE. Generalmente el diseador de un servidor DDE hace pblico cmo se identifican los datos. Como DDE utiliza el sistema de mensajera incluido en Windows, el programa se integra perfectamente en el entorno Windows. En DDE ambas aplicaciones deben estar ejecutndose y las dos deben dar a Windows una direccin a sus funciones de llamada antes de que la comunicacin de DDE pueda comenzar. La funcin de llamada acepta cualquier mensaje de DDE que Windows enva a la aplicacin. Un cliente de DDE comienza una conversacin con otra aplicacin (un servidor de DDE) enviando un mensaje de conexin. Despus de establecer una conexin, el cliente puede enviar rdenes o datos al servidor y a cambio puede pedir el valor de datos que el servidor maneja. Cuando la comunicacin DDE para una conversacin es completada, el cliente enva un mensaje de cerrar la conversacin al servidor.
11

Tomado de http://www.ing.ula.ve/~jesusc/labvid.htm

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

16

Un cliente estndar DDE soporta cinco operaciones bsicas: 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, funcionarn igual a como se describieron. Ahora, para poder habilitar el uso de esas cinco funciones, se tiene que conocer algunas cosas acerca de la aplicacin Servidora. Por ejemplo, es muy difcil abrir un enlace a la aplicacin servidora sin conocer el nombre de la aplicacin. Para desarrollar una comunicacin DDE o una conversacin en trminos de DDE, se tiene que ser capaz de identificar el tipo de dato que se desea. Esta operacin se realiza con las tres cadenas de caracteres con informacin acerca de la aplicacin Servidora: Application name /service | Justamente el nombre de la aplicacin: servicio Data topic ! Define el elemento de inters en la aplicacin: tema Data item ! El actual elemento de intercambio: elemento Por tanto, se necesita el nombre de la aplicacin o servicio (generalmente es el nombre del archivo ejecutable de la aplicacin) que especifica el nombre del servidor de aplicacin al cual, el cliente est enlazando; el tpico de datos (a menudo es el nombre de un archivo, pero esta definicin puede variar) para abrir el enlace a la aplicacin 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 convencin. El tema es el segundo nivel en las tres cadenas de caracteres y define el objeto de una conversacin DDE, y es usualmente significativo tanto para la aplicacin servidor y cliente. El elemento identifica el dato o valor que se est pasando durante la conversacin DDE entre el servidor y el cliente. De acuerdo con los mensajes utilizados del entorno Windows hay tres tipos de conversaciones DDE: enlace fro (cold-link), enlace caliente (hot-link) y enlace templado (warm-link).

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

17

2.4 Enlaces OLE para Windows


Las siglas OLE provienen del ingls Object Linking and Embedding, lo que traducido al espaol sera enlace e inclusin de objetos.
12

Es una especificacin de

Microsoft creada para trabajar en Windows haciendo posible la integracin de objetos entre aplicaciones, lo que permite crear documentos con entidades provenientes de distintas aplicaciones. Los objetos pueden ser casi cualquier tipo de informacin, incluyendo texto, imgenes de mapa de puntos, grficos vectoriales e incluso anotaciones de sonido y vdeo. A travs de OLE es posible que los programas se comuniquen entre s e intercambien informacin sin prdida de detalle, independientemente de su origen. Pero el proceso no se produce de forma automtica, de modo que es preciso conocer su funcionamiento para poder aprovechar sus posibilidades. OLE fue introducido en 1991 como una extensin del protocolo DDE, que fue creado para pasar datos entre aplicaciones, y en especial, desde la hoja de clculo 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 versin ms moderna (1993) y eficaz que la primera, permitiendo entre otras cosas el paso de datos mediante la tcnica drag and drop (arrastrar y soltar) y la edicin 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 grfico trabajan en OLE, ya que es preciso que las aplicaciones hayan sido diseadas para soportar sus funciones. La especificacin OLE permite incorporar enlaces entre determinadas partes de los programas, y as, es posible controlar desde una aplicacin lo que se est realizando en otra. Una aplicacin 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

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

18

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 inclusin, tambin conocidas como vinculacin e incrustacin, posibilitando la creacin de documentos compuestos, o sea, documentos formados por varios objetos de datos provenientes de mltiples aplicaciones. Un objeto incluido est totalmente contenido dentro de la aplicacin cliente. Un objeto enlazado tiene una conexin en la aplicacin cliente y slo es accesible a travs de la aplicacin 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 edicin de los datos.
13

Podemos considerar que OLE es un subconjunto de la tecnologa ActiveX,

encargada de la vinculacin e incrustacin de objetos, y ambas se sustentan sobre COM (Component Object Model). COM proporciona un mecanismo para permitir la comunicacin entre los objetos de una aplicacin o entre distintos procesos, proporcionando mecanismos para que un objeto pueda mostrar su funcionalidad a travs de una interfaz. Por tanto, COM nos proporciona las conexiones y los interfaces que sern utilizadas desde OLE para conseguir la automatizacin, para que una aplicacin pueda ofrecer una interfaz programable. Las aplicaciones que vienen con Microsoft Office (Word, Excel, Access), el propio Microsoft Internet Explorer, entre otros, soportan la automatizacin OLE. OLE no es soportado por Windows de forma directa, lo que quiere decir que no todos los programas de este entorno grfico trabajan en OLE, ya que es preciso que las aplicaciones hayan sido diseadas para soportar sus funciones. La especificacin OLE permite incorporar enlaces entre determinadas partes de los programas, y as, es posible controlar desde una aplicacin lo que se est realizando en otra. Una aplicacin 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

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

19

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 ingls OLE for Process Control), o en espaol OLE para control de

procesos, es una especificacin tcnica no propietaria definida por la Entidad OPC Foundation (OPC Foundation es una entidad sin fines de lucro, encargada de administrar la especificacin OPC) y consiste bsicamente en un Sistema de Interfaces Estndar basado en OLE/COM y DCOM de Microsoft. Con OPC es posible nter operar dispositivos industriales con sistemas de informacin o aplicativos de escritorio. En otras palabras, el OPC permite desarrollar de una manera muy prctica y eficiente aplicaciones que pretendan comunicarse con equipos industriales controlados por PLCs.
15

Desde un punto de vista general muchos aspectos de OPC son similares al

DDE, pero la diferencia principal est en la puesta en prctica usando la tecnologa de COM de Microsoft (modelo componente del objeto). Permite intercambio rpido con datos de proceso de la automatizacin y el interfaz abierto de OPC, permite el acceso a los datos del servidor de OPC de la misma manera estndar de los usos del cliente de OPC.
16

OPC es un conjunto de protocolos para interfaces OLE/COM estndar a estimular una mayor interaccin entre las aplicaciones de

destinados

control/automatizacin, los dispositivos/sistemas de campo y las aplicaciones de ofimtica/gestin en la industria de control de procesos. En cooperacin 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 programacin de aplicaciones estndar 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 15

Tomado de http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art123.asp Traducido del manual de ayuda del OPC Server de la compaa Unitronics 16 Tomado de https://www.software.omron.es/software/cx/pages/cx_comun.jsp?id=6

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

20

El OPC elimin problemas de duplicacin de esfuerzo, inconsistencias entre vendedores de drivers, soporte para cambios en caractersticas de hardware, conflictos de Acceso, estableciendo una interfaz de comunicacin comn, 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 caractersticas o adiciones en un hardware. Los clientes tendrn ms opciones con las cuales puedan desarrollar diversos sistemas de aplicacin a nivel industrial. Posibilidades con el OPC: Acceder a datos en lnea: La lectura y la escritura eficiente de datos entre una estacin 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 histricos: El OPC permite la lectura, procesamiento y correccin de datos histricos con un eficiente motor de acceso. Con la arquitectura OPC se aprovechan las ventajas de la interfaz COM para ampliar su funcionalidad. La especificacin OPC incluye lo siguiente: Interfaz COM/DCOM para ser usada por clientes Locales o Remotos. Referencias a la Interfaz de Automatizacin 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

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

21

La especificacin 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 versin de Services Pack correspondiente. La Figura siguiente representa el funcionamiento del OPC con las interfaces

personalizada y automatizada.

Figura N2.1 Funcionamiento e Interfaces de OPC17 El modelo jerrquico de objetos definido por OPC Foundation se representa en la siguiente figura:

Figura N2.2 Modelo de Objetos del Servidor de Automatizacin OPC La descripcin 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

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

22

Tabla 2.1 Descripcin de la coleccin de objetos de la especificacin OPC OBJETO Servidor OPC DESCRIPCIN Es una instancia de un servidor OPC. Se debe crear un objeto Servidor OPC antes de poder referenciar los otros objetos. coleccin Grupos OPC y el objeto Buscador OPC. Grupos OPC Grupo OPC Es una coleccin de los objetos Grupo OPC que el cliente ha creado. El propsito de este objeto es mantener la informacin de estado y proveer el mecanismo para ofrecer los servicios de adquisicin de datos por la coleccin de objetos tem OPC. tems OPC tem OPC Buscador OPC Es una coleccin que contiene todos los objetos tem OPC que el cliente ha creado. Es un objeto que mantiene la definicin de los tems, sus valores, estados y datos de la ltima actualizacin. 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 informacin sobre el Este contiene la

servidor y sirve como un contenedor de grupos de objetos OPC. El grupo de objetos OPC mantiene informacin acerca de s mismo y proporciona los mecanismos para contener y organizar lgicamente los elementos OPC; los grupos OPC proporcionan una forma para organizar los datos de los clientes; por ejemplo, el grupo podra representar los elementos en una pantalla particular del operador o a travs de un informe; los datos pueden ser ledos 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 segn sea necesario; un cliente OPC puede configurar el porcentaje de los datos que deben ser cambiados antes de la actualizacin. Hay dos tipos de grupos, pblicos y locales (o privados); los pblicos se realizan para ser compartidos entre varios clientes, mientras que los locales son privados para el

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

23

cliente en cuestin. Existen interfaces especficas opcionales para los grupos pblicos; dentro de cada grupo, el cliente puede definir uno o ms 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 travs 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, slo son conexiones a ellas; el elemento OPC debe ser entendido como la direccin de los datos, no como la fuente fsica actual de los datos a los que la direccin referencia, puesto que la fuente real de los datos es el dispositivo controlador, regularmente un PLC.

2.6 Compilador Grfico Delphi.


18

Borland Delphi es un ambiente de Desarrollo Rpido 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 estn orientados a facilitar la productividad en el desarrollo de software, a las velocidades de procesamiento que brinda actualmente el hardware. Algunas de las caractersticas 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 grficas. Fcil integracin de informes y grficos de gestin. Lenguaje de programacin 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 jerarqua muy extensa de Clases de Objetos reusables y extensibles, con recursos de computacin visuales y de procesamiento.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

24

En las versiones Professional y Enterprise, Delphi ofrece clases para el desarrollo de aplicaciones en Internet soportadas por TCP/IP, para aplicaciones distribuidas. Tambin con soporte a los modelos de distribucin de objetos COM, DCOM y CORBA.

Componentes integrados dentro del lenguaje, lo que reduce considerablemente la utilizacin de libreras 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, tecnologa 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 distribucin de aplicaciones con el InstallShield Express. Bsicamente, estas descripciones tcnicas, lo que quieren decir para esta

aplicacin es que esta herramienta (Delphi), permite extraer la informacin de un servidor OPC que se comunica con PLC con un protocolo determinado y por medio de los enlaces OLE de Windows, realiza una aplicacin grfica 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 tecnologa de acceso a datos), tanto como funciones (eventos) drag and drop, entre otros. Este tipo de aplicaciones son una buena muestra de tecnologa 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.
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 Automatizacin para obtener acceso a datos. ADO utiliza la interfaz de OLE DB para tener acceso a un amplio conjunto de orgenes de datos, incluyendo pero no limitndose a los datos proporcionados mediante ODBC. Tomado de http://www.sqlmax.com/ado.asp
18

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

25

CAPTULO 3: Desarrollo de una Interfaz HMI


Debido a que todos los PLCs son diferentes tanto en caractersticas de Hardware como de Software este captulo es dedicado al conocimiento y descripcin del modelo de PLCs M90, empezando desde una resea de la compaa desarrolladora de este tipo de controladores, hasta el propsito del proyecto, la implementacin de la aplicacin SCADA para este PLC. Por lo que se tratarn temas tales como especificaciones tcnicas elctricas en su mayora, hasta la descripcin de los registros internos de este aparato.

3.1 Breve resea de la compaa Unitronics


20

Unitronics Ltd. es una compaa de tecnologa avanzada, cuya especializacin

particular es en el rea de produccin de Controladores Lgicos Programables (PLC), cerebros de la computacin que hacen posibles las lneas de produccin automatizadas. Su personal abarca a cuarenta personas de gran conocimiento, del sector de alta tecnologa israel. Entre los aspectos ms destacados es el departamento R y D, esta compaa se ha sostenido en el filo de la investigacin tcnica y el desarrollo. Desde 1989, Unitronics ha introducido muchos productos innovadores que han revolucionado el acercamiento a la produccin de las lneas de automatizacin. Entre sus productos destacados estn el WebPLC. Este dispositivo basado en Internet transform el acercamiento de la industria a las comunicaciones de datos. Unitronics entrega sus productos a travs de distribuidores en Europa, Amrica del sur, Asia, y su subsidiaria surafricana. Los productos han estado en servicio de plantas de compaas importantes tales como: Coca Cola, Dannone, Elf Lub N.V., Campia Melkuni Mona, Agfa, ColgatePalmolive, Avena Quaker, Industrias Aeronuticas de Israel, Granja Frites, Heinz, Las minas de oro de Klooftmine, y Nestl.

20

Tomado de www.unitronics.com y traducido al espaol por Alexander Barrantes Muoz.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

26

3.1.1 Misin Su misin es hacer la automatizacin eficiente, comprable, y alcanzable. El principal propsito de la produccin de la cadena producir mercancas sin la intervencin humana. El equipo del R y D crea los nuevos dispositivos de la automatizacin (PLC) combinando un conocimiento profundo de requisitos industriales y de la maestra tcnica con el nico objetivo de la utilidad. Los resultados son PLCs que cumplen constantemente el estndar para la industria de la automatizacin. Los productos de Unitronics se utilizan en petroqumica, automovilismo, procesamiento de alimentos, plsticos y textiles, energa 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 compaa dentro de sus grandes talentos destacan: la capacidad de desarrollar nuevas tecnologas y de utilizarlas para construir dispositivos rentables que ofrecen funcionalidad excepcional. Unitronics irrumpi en el campo de la automatizacin industrial en 1989 con el revolucionario ADP86. Este dispositivo (PLC) era ms rpido que cualquier producto de la competencia. comunicaciones Tambin tena otras dos caractersticas importantes: protocolos de flexibles y habilidades programables de trabajos mltiples. de automatizacin es

Increblemente el ADP86 posea un precio de $5.000, donde los productos de competencia con menor funcionalidad valan $15.000 o ms. En 1992, Unitronics hizo una brecha pica en tecnologa de la automatizacin. Se cre el ltimo PLC de uso fcil, el OPLC. Las series de OPLC combinan paneles de operacin y PLCs en un solo dispositivo unificado, fcil de programar y operar. El OPLC sobresali y cambi radicalmente la automatizacin. mercado especfico en el mundo de la automatizacin. El M90, lanzado en 1999, es el pinculo del desarrollo de OPLC, un paquete minsculo que incluye grandes caractersticas. Unitronics refin y desarroll una gama completa de dispositivos OPLC, apuntando a un lugar de

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

27

El ao 2000 trajo el WebPLC basado en Internet. WebPLC de Unitronics estuvo conducido por la onda del Internet, la revolucin de las comunicaciones, en donde el Internet entr en cada faceta de la vida pblica y privada. El WebPLC, en las etapas finales del desarrollo, culmina al integrar lo mejor de la nueva tecnologa en los productos. 3.1.3 Breve Organigrama de la compaa Abajo se muestra un pequeo grfico del organigrama de la compaa Unitronics.

Figura N3.1 Organigrama de la Co. Unitronics 3.1.4 Puntos Claves La materia prima ms importante es la gente. La llave a la automatizacin acertada es la comunicacin. El personal trabajador del R y D abarca las disciplinas de la ingeniera, programacin, y comunicaciones. 3.1.5 Productos Creacin de PLCs con interfaz integrado del operador. Las series del Controlador OPLC combinan paneles de operacin y PLCs en un solo dispositivo unificado, fcil de programar y operar. Los paneles de Operacin contienen una pantalla y un teclado de visualizacin. La pantalla de

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

28

visualizacin 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 informacin 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. PLCs con configuraciones I/O internas. PLC tradicionales .Tarjetas de entrada-salida para el proceso de datos, para uso de aplicaciones de automatizacin. La familia de Controladores Unitronics, poseen los siguientes modelos: Los Controladores con HMI son: M310 M228 M218 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 M216 M190 M90

Abajo se muestran tres de sus modelos.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

29

Figura N3.2 Familia de PLCs de Unitronics 3.2.1 Caractersticas generales de los productos La familia de PLCs Unitronics poseen caractersticas generales comunes entre cada modelo, abajo se describen las principales: R.T.C. Reloj en tiempo real. Este reloj permite funciones especficas del reloj. El RTC tiene un respaldo de la batera de 7 aos. Tamao del programa de 16K palabras. La cuenta de la palabra se hace segn la traduccin del programa de STL. Tiempo de ejecucin. El tiempo de la exploracin es 0,5 microsegundos por un bit de operacin Teclado. La tecla del modo de informacin (< i >) se utiliza solamente para mostrar a travs de las pantallas, la informacin de los sistemas de operacin. Para el Vision 260 se tienen 33 teclas. Pantalla. La serie Vision tiene una pantalla grfica. Se puede crear hasta 100 diferentes exhibiciones que acomodan hasta 60K de datos. Cada exhibicin puede contener el texto libre, bmp (mapa de bits) y variables. En cada exhibicin 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

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

30

del tiempo y la fecha, y de los valores de los contadores. VisiLogic permite al programador: Construir la aplicacin del PLC usando elementos y funciones click-and-drop en el VisiLogic. 3.2.1.1 El modo de informacin El modo de informacin (Info.) es una ventana dentro del controlador. Permite que un operador compruebe y cambie los valores especficos 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 lgico. SB, Bit del Sistema. MI, Enteros de Memoria. Registro de 16 bits (15 + signo) que puede ser cualquier nmero entero dentro de la gama -32768 a +32767. SI, Enteros del Sistema. Registro de 15 bits controlado por el sistema que puede ser cualquier nmero entero dentro de la gama -32768 a +32767. El SI y el SB son una clase de interfaz entre el sistema de operacin y el programador (o una aplicacin). Toda la memoria de la serie Vision es respaldada por una batera. Otros operandos que participan en la estructura de memoria son: I, Entradas . O, Salidas. T, Temporalizadores. #, Nmeros directos. MB y MI - un total de 256 de cada uno. Los primeros 16 MBs y MIs estn bajo respaldo de bateria. Temporalizadores - un total de 64.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

31

Entradas y Salidas - segn la configuracin de hardware.

La serie M90 trabaja con memoria flash. La memoria flash es ms estable porque no es dependiente en una fuente de alimentacin. Un procedimiento de la transferencia directa consiste en: Ladder HMI Temporalizadores Variables Configuracin del Hardware Configuracin 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 mquina todava funciona. Solamente una descarga de un cambio en la configuracin del hardware o un bloque de la funcin 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 segn el estado de cierto bit. Este bit puede ser un MB, SB, I, O un contador de tiempo. Para evitar problemas de memoria slo se puede introducir 6 caracteres por cada opcin. La variable Entera permite que el usuario pueda leer o escribir el valor de cierto registro desde la memoria del controlador, estos enteros de slo lectura pueden ser un MI o un SI. Los lmites de la linearizacin y de la entrada son parte del trabajo que el sistema de operacin hace para el usuario. Este nmero entero puede ser cualquier tipo de datos, construido con la ayuda de una contrasea para pantallas que llevan a cabo informacin sensible.
Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

32

3.2.1.4 Comunicacin La serie M90 tiene 2 puertos de comunicacin 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 comunicacin 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 documentacin de modo que cualquier persona pueda ponerla en ejecucin en una aplicacin 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 aplicacin en la PC. Usar una aplicacin de un servidor DDE. Usar una aplicacin de un servidor OPC.

El M90 no puede inicializar la comunicacin en una comunicacin serial. El puerto serial es tambin un puerto de acceso remoto y un dispositivo de conexin. Puerto de CANbus La Serie M90 tiene un puerto CANbus. El Unitronics CANbus corre en la misma capa fsica 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

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

33

Para conectar una red de hasta 64 unidades entre s. El puerto CANbus est situado al lado del controlador.

3.3 Caractersticas Generales del M90 OPLC


21

El M90 Es un PLC compacto con I/Os integrados e interfaz grfica de operador.

La siguiente tabla describe brevemente, la cantidad, simbologa y otras caractersticas de los registros internos del M90. Tabla 3.1 Descripcin de registros internos del M90 Smbolo 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 Smbolo Smbolo del tipo de Dato MB Contadores: 64, 16 bit MI Entradas: 512 SB Salidas: 512 SI Smbolo 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 estn disponibles. La interfaz RS232 est va los puertos seriales del tipo RJ-11. La siguiente tabla muestra la distribucin de sus pines. Tabla 3.2 Distribucin de pines del puerto RS232 Diagrama Nmero de Pin 1 2 3 4 5 6 Funcin Desconectado Referencia 0V Seal TxD Seal RxD Referencia 0V Desconectado

21

Traducido de la gua del usuario del OPLC Vision 230 Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

34

La conexin PC-PLC se muestra en el siguiente grfico:

Figura N3.3 Conectando la PC con un Controlador Anlogamente, la descripcin de conexin para el puerto CANbus, sigue la descripcin de la siguiente tabla: Tabla 3.3 Descripcin de conexin para el puerto CANbus -V Fuente comn de 24V para CANbus L CAN low PE Tierra H CAN high +V Fuente de 24V para CANbus.

Con respecto al modo de informacin, una descripcin ms detallada de las categoras que se pueden acceder por medio de l, se describe en la siguiente tabla.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

35

Tabla 3.4 Categoras de informacin que se pueden alcanzar en el modo de Informacin


Categora Tipos de Datos Tema Entradas 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 condicin 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 opcin de R.T. Revisar el nmero de modelo del controlador y la versin 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 excepcin de esos protegidos por el respaldo de memoria con la batera 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 estn basados en funciones de tiempo. Cambiar los ajustes del RTC va el teclado del controlador. El nmero de ID de la unidad identifica la posicin en la red del controlador. Cambiar el nmero de ID. El nuevo nmero de ID ser recordado en efecto hasta que el controlador sea reiniciado. Quemar el nmero de ID dentro de la memoria FLASH del controlador. Esto es un cambio permanente. Ver y editar los ajustes de comunicacin. Seleccionar cambiar o quemar los nuevos ajustes. Cambiar el baud rate del CANbus. Seguir la instrucciones de la pantalla. Ajustar una nueva clave

Salidas

Bits de Memoria Bits del Sistema Contadores Sistema Modelo y Versin O/S Modo de Trabajo

Tiempo y Fecha ID de la Unidad

Puerto Serial 1 CANbus Baud Rate Ajuste de la Pantalla Sensible al Tacto Nuevo

Clave

3.3.1 Tipos de datos del sistema Los tipos de datos especficos se ligan a los parmetros 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 estn 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 categora.
Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

36

Tabla 3.5 La funcin 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 Funcin Siempre 0 Siempre 1 Bit de encendido Pulso de un segundo Divide por cero Salida(s) de corto circuito Teclado activo Pulso de 100ms Batera baja Entradas del teclado numrico HMI completo Refrescar lo mostrado actualmente en la Pantalla LCD Entradas del teclado numrico HMI en progreso Teclas del teclado numrico Operadores de red Error de comunicacin de red Red desactivada Entrada del teclado numrico dentro de los lmites Entrada del teclado numrico excede los lmites

Tabla 3.6 Funciones de Bits del Sistema del teclado Bits del Sistema (SB) SB 40 SB 41 SB 42 SB 43 SB 44 SB 45 SB 46 Tecla del Teclado Bits del Sistema (SB) SB 47 SB 48 SB 49 SB 50 SB 51 SB 52 SB 53 Tecla del Teclado

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

37

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 Funcin Tiempo de exploracin Tecla actual presionada Contraste del LDC (solo V280) ID de la unidad Intensidad de las luces del LDC Segundos actuales, segn RTC Tiempo actual, segn RTC Fecha actual, segn RTC Ao actual, segn RTC Da actual, segn RTC Estado del Modem: COM1 Cdigo de error del Modem: COM1 Estado del Modem: COM2 Cdigo de error del Modem: COM2 Operadores de red Cdigo de Comunicacin de red Red: falla del ID de la unidad

3.3.2 Especificaciones Tcnicas I/Os: integrados, se integran en el sistema va mdulos 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 Analgicas: 10 bits, multi-rango de entrada de: 0-5V, 0-10V,0-20mA, 420mA. Mtodo de conversin aproximacin 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 mxima 5A a carga resistiva o 1A a carga inductiva. Frecuencia mxima 10Hz Dimensiones: 96.5 x 96.5 x 65 mm. Montaje: Panel montado va soportes Fuente de Alimentacin: Voltaje de entrada 24VCD. Rango Permitido de 20.4VCD a 28.8VCD con menos de un 10% de rizado.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

38

Consumo mximo de corriente 140mA a 24VCD. Consumo tpico de energa: 3.2W Pantalla Grfica: LCD, tipo STN, Iluminacin por leds, amarilla-verde lmpara trasera. Tamao de 1 lnea de caracteres largos. Tamao de carcter matriz de 5x7, 3.07 x 5.73mm.

Teclado: 15 teclas, Incluye teclas suaves y teclado alfanumrico. Tecla de metal de tipo domo, selladas por membrana Programa del PLC: 1024 palabras. Tiempo de ejecucin por bit de operacin: 12s por bit de operacin, 256 bits, 256 registros de enteros, 64 temporizadores. 80 pantallas para el usuario, 50 variables HMI.

Comunicacin: 1 puerto RS485/ RS232 va convertidor, 1 puerto CANbus. Programa del PLC: 1024 palabras. Tiempo de ejecucin por bit de operacin: 12s por bit de operacin, 256 bits, 256 registros de enteros, 64 temporizadores. 80 pantallas para el usuario, 50 variables HMI.

Reloj (RTC) para fecha, tiempo y ao con respaldo de batera de 7 aos. Peso: 280g (9.8 oz). Ambiente: dentro de gabinete IP20 / NEMA1, panel montado IP65 / NEMA4X (frente al panel), temperatura de Operacin 0 a 50C (32 a 122F), temperatura de almacenamiento -20 a 60C (-4 a 140F), humedad relativa (RH) 5% a 95% (no-condensada).

Accesorios: cable de programacin, conector de fuente de alimentacin y entradas, CD del Software U90Ladder.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

39

Los grficos del M90 se muestran a continuacin.

Figura N3.4 PLC M90 3.3.3 Acceso de datos


22

El servidor OPC de Unitronics es un programa de aplicacin de 32 bits de Microsoft

Windows, que acta como servidor del protocolo de comunicacin y permite que otros programas de Windows tengan acceso a los datos de los controladores lgicos programables de UNITRONICS (PLCs) siguientes que usan el interfaz de programacin (RS232): M90, M200, Vision 230.

22

Traducido del manual de ayuda del OPC Server de la compaa Unitronics

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

40

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 seccin 2.3.2., el protocolo de comunicacin direcciona un elemento de datos en una conversacin que utilice a convencin de nombramiento de tres partes que incluye el nombre de la aplicacin, el nombre del tpico (asunto) y el nombre del tem (artculo). Lo que sigue describe brevemente a cada porcin de esta convencin de nombramiento: Nombre de la Aplicacin 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 va este servidor, la porcin de la aplicacin de la direccin es UNITRONICS. Nombre del Tpico Los nombres significativos se configuran en el servidor para identificar los dispositivos especficos. Estos nombres entonces se utilizan como el nombre del tpico en todas las conversaciones a ese dispositivo. Por ejemplo, Unit1. Se puede definir mltiples nombres del tpico para el mismo dispositivo (PLC) para usar diferentes tems en diferentes rangos. Nombre del Item Un elemento de datos especfico dentro de un tpico especfico. Por ejemplo, al usar este servidor, los tems pueden ser nmeros 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 exploracin (TS), Reloj de Tiempo

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

41

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 descripcin de los tipos de tems del M90. Tabla 3.10 Descripcin de los tipos de tems del M90
Nombre del Item MBn MIn INPnn,b Bit Entero (16bits) Bit Descripcin Tipo de Tag Discreto Entero Discreto 0,1 -32768...32767 0,1 n = 0 a 1023 n = 0 a 255 n = 00 a 63 b=0a7 OUTnn,b Bit Discreto 0,1 n = 00 a 63 b=0a7 SBn SIn TCn Bit Entero (16bits) Entero sin signo (16bits) TPn Entero sin signo (16bits) TSn PS Bit Entero sin signo (16bits) SK Entero sin signo (16bits) ID Entero sin signo (16bits) RTC Entero sin signo (16bits) CLOCK C. de Caracteres C. de Caracteres Entero 1, 2, 3 Entero 0255 Entero 0255 Discreto Entero 0,1 1, 2, 3, 4, 5 n = 0 a 63 Entero 0... 65535 n = 0 a 63 Discreto Entero Entero 0,1 -32768...32767 0... 65535 n = 0 a 255 n = 0 a 255 n = 0 a 63 Rango de Valores Rango

Notas: 1. Tambin las letras minsculas mi, mb, inp, out, si y sb pueden ser usadas como primeros caracteres de los nombres de tems. 2. Toda direccin es decimal.
Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

42

3. Para los tems discretos INP y OUT, el ltimo digito (b) representa el bit de posicin dentro del byte. EL bit de posicin 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 Exploracin (TSn) son de slo lectura. Los bits del Sistema (SBn), Enteros del Sistema (Sin) son de Lectura y Escritura dependiendo de cmo 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 slo escritura. 5. El tem de Reloj (CLOCK) tiene el siguiente formato: HH:mm:ss ddd DD/MM/AA, donde HH hora (023); mm minutos (059); ss segundos (059); ddd da de la semana (Lun, Mar, Mier, Jue, Vier, Sab, Dom); DD da del mes (131); MM mes (112); AA 2 ltimos dgitos del ao. 6. Los tems RTC y CLOCK no actan como tems generales. RTC es un tem de slo escritura que provee el control de lectura-escritura de tem CLOCK. Los siguientes valores del RTC son: 0 Posicin 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 Posicin neutral; 1 Ejecucin; 2 Alto ; 3 Inicio de Memoria y Reajuste; 4 Reajuste ;
Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

43

5 Switch el BootStrap . Ejemplos de llamadas de Items Los siguientes ejemplos son nombres de tems vlidos: MB0 MB109 mb1104 MI0 MI9 MI615 Bits de Memoria 0, 109 y 1104 Enteros de Memoria 0, 9 y 615

INP00,0 INP03,1 INP21,7 Entradas OUT00,0 OUT10,3 OUT63,7 Salidas SB2 TS2 TP2 TC5 SK PS RTC ID id sk ps rtc si10 Bit del Sistema 2 y Entero del Sistema 10 Bits de Tiempo de Exploracin 2 Valor del Temporizador Preestablecido 2 Valor del Temporizador Actual 2 Tecla de Ajuste Estado del PLC Item del Control del Reloj de Tiempo Real ID de la Unidad Item de exhibicin del Reloj de Tiempo Real

CLOCK

Los siguientes ejemplos son nombres de tems invlidos: MI MB inp8,1 out08 MI602400 MN22 m001 Muy pocos dgitos para Direccin o Posicin del Bit Direccin fuera del Rango Tipo de Item Invlido

Monitoreo y Control de la Comunicacin con el PLC Los siguientes son tems adicionales ofrecidos por el servidor UNITRONICS para monitorear y controlar la comunicacin con el PLC. STATUS Es un tem discreto built-in, que indica el estado de la comunicacin con el PLC. El tem discreto (STATUS) es ajustado a 0 cuando la comunicacin falla y ajustado a 1 cuando la comunicacin
Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

44

es exitosa. El valor del ESTADO es ajustado a 0 despus de 3 intentos fallidos consecutivos de comunicacin con el PLC. Desde Excel, el estado de la comunicacin puede ser ledo entrando la siguiente formula en una celda: =UNITRONICS|tpico!STATUS, donde el tpico es el nombre del tpico 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 peticin actual del intervalo a actualizar (en milisegundos). El valor de este tem puede ser ledo por el OPC DDE. El cliente puede insertar nuevos valores a este tem. El rango de valores vlidos es desde 10 a 2147483647 milisegundos. El valor cero indica que no hay tems actualizados en este tpico. Los comandos de escritura son todava ejecutados (nuevos valores escribindose 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 actualizacin en el tpico correspondiente sin tener tems desactivos. MAXINTERVAL El tem MAXINTERVAL es un tem entero tipo slo lectura usado para accesar el intervalo actualizado mximo medido (en milisegundos) de todos los tems del tpico correspondiente para el ltimo ciclo completo del sondeo. El rango de valores vlidos es desde 0 a 2147483647 milisegundos. Los tems UPDATEINTERVAL y MAXINTERVAL pueden ser usados para sintonizar el funcionamiento de comunicacin. ITEMCOUNT El tem ITEMCOUNT es un tem entero de slo lectura usado para accesar el nmero de tems activos de un tpico correspondiente. El rango de valores vlidos es desde 0 a 2147483647. ERRORCOUNT

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

45

El tem ERRORCOUNT es un tem entero de slo lectura usado para accesar el nmero de tems activos con errores en un tpico correspondiente. El rango de valores vlidos es desde 0 a 2147483647. ERRORITEMS El tem ERRORITEMS es un tem entero de slo lectura y escritura (nico por cada tpico) usado para accesar el total de nmeros de tems con nombre invlidos (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 vlidos es desde 0 a 2147483647. WRITECOUNT El tem WRITECOUNT es un tem entero de slo lectura usado para accesar el nmero de comandos escritos (mensajes) esperando la ejecucin. El rango de valores vlidos 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 introduccin de un nuevo valor) slo 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 comunicacin con un tpico separado. Si la aplicacin cambia el valor de SUSPEND de 0 a 1, entonces la comunicacin con el tpico es suspendida. Si el valor de SUSPEND es cambiado de nuevo a 0 la comunicacin con el tpico es reasumida. Nota: Si el tpico es suspendido ajustando el valor de SUSPEND a 1, entonces el servidor vuelve a expulsar todo nuevo valor escrito a este tpico; ningn nuevo mensaje escrito es creado despus de que SUSPEND ha cambiado de 0 a 1.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

46

3.4 Desarrollo del programa SCADA para la interfaz HMI


Este programa SCADA fue desarrollado en la plataforma de programacin Delphi Enterprise 5.0, utilizando leguaje Borland Pascal. Ya se mencion un poco de las cualidades de esta plataforma en la seccin 2.6, por lo que simplemente se discute slo caractersticas propias del programa como tal. Como uno de los primeros problemas que dio la utilizacin de esta plataforma de programacin fue que la versin no es la ms actual en el mercado y los softwares de servidores OPC siguen actualizndose de manera no paralela con esta plataforma de programacin, por lo que no se garantiza que Delphi importe todas las libreras de enlace dinmico (DLL) que existen. Debido a esta problemtica la importacin 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 comunicacin 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 descripcin del programa. Primeramente el programa entra a una pantalla de conexin en donde por medio de objetos llamados TEdits, el usuario puede entrar cambiar la direccin en donde se encuentra el ejecutable del Servidor OPC de Unitronics y la unidad o tpico en que est configurado este; cuando el usuario se ha complacido, presiona un botn de OK y carga sus datos. El usuario puede seleccionar las modalidades de Nuevo, Abrir o Salvar que aparecen con los smbolos respectivos, o bien en la barra de herramientas, en Archivo. Un icono de un PLC aparece en rojo si no hay conexin 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 botn con un smbolo de hojas, sirve para crear lo que se conoce como TTabSheet, simplemente es una hoja vaca igual a la de conexin, que se crea dinmicamente, seguidamente aparece una ventana en donde solicita al usuario el nombre del proceso, si no es introducido

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

47

escribe Proceso_# y un nmero de contador por defecto, esto con el fin de crear varios carpetas con diferentes estructuras emulando los departamentos o secciones de una planta. Despus se selecciona un botn con un smbolo ?, 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 botn de probar y habilita un botn de crear. Otro TEdit es destinado para la etiqueta del registro, que es introducida por el usuario o aparece Registro_# y un nmero de contador por defecto, esto con el fin de identificar la relacin de cada registro con el elemento de la planta. Cuando el usuario ha seleccionado el registro a crear, simplemente presiona el botn 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 funcin seguir las coordenadas del mouse e introducirlas a variables, cuando el motn de mouse es presionado entra en accin el evento OnMouseDown que tiene como funcin capturar en las variables la posicin en el instante respectivo. Seguidamente se da la creacin dinmica 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 ms 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 carcter dinmico y ocupan ser actualizados, lo que hace necesitar mucha memoria en la ejecucin 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

Mtodo de programacin grfica, que se designa como propiedad a algn objeto. Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

48

Al no poseer un evento dinmico de seleccin las etiquetas con el nombre y el contenido del registro, pues es un defecto del evento OnMouseDown, no se puede borrar en tiempo de ejecucin, pero para compensar este defecto, se ha agregado un botn de deshacer, que libera la memoria ocupada por el ltimo objeto dinmico creado, que en este caso puede ser una TTabSheet o un TLabel. De hecho el procedimiento de Nuevo Programa es iteracin de liberacin de memoria de todos los objetos dinmicos creados hasta el momento. Un arreglo de registros ha sido creado para almacenar la informacin, de todos los tems dinmicos creados durante el programa, donde cada uno posee variables que guardan: el nmero de pgina, el nombre de la pgina en donde se encuentran (TTabSheet), el contenido de la etiqueta del registro, la frmula en Excel asociada y las coordenadas X y Y de su posicin. Con respecto a la funcin Salvar, ejecuta un procedimiento que escribe en un archivo de texto, designado con la extensin *.usd (proveniente de UniScada, el nombre del programa), escribe el contenido de los registros, complementariamente la funcin de Cargar o Abrir, lee del archivo de texto la informacin de los registros y empieza a crear dinmicamente TTabSheet y TLabel, asignndole a cada uno la informacin 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 informacin configurada con el programa UniScada. Su propsito es simplemente mostrar una aplicacin especfica 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 continuacin se muestran unos grficos de las pantallas de cada aplicacin.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

49

Figura N3.5 Pantalla de Conexin de UniScada

Figura N3.6 Pantalla de Conexin de UniHMI

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

50

CAPTULO 4: Conclusiones y Recomendaciones


4.1 Conclusiones
Se Desarroll una Interfaz Humano-Mquina (HMI) para la familia de PLCs Unitronics con la creacin de las aplicaciones UniScada y Uni_HMI. Se practic en el desarrollo de aplicaciones en Borland Delphi. La plataforma de programacin Delphi Enterprise 5.0, con lenguaje Borlad Pascal, es muy verstil y til para el desarrollo de aplicaciones HMI. Se estudi la arquitectura de los PLCs Unitronics. Son mquinas de alta facilidad de manipulacin y acceso de datos en la comunicacin PC-PLC, protocolos de comunicaciones flexibles y habilidades programables de trabajos mltiples, pero sobre por tener estructuras abiertas al desarrollo de aplicaciones HMI. Adems de sus funciones de amigables de hardware, entre otras. Se Desarroll una aplicacin de comunicacin entre Delphi y el OPC Server de Unitronics. Va Excel primeramente. Se Realiz una aplicacin de lectura de registros del PLC. Se Desarroll la aplicacin HMI de despliegue de registros.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

51

4.2 Recomendaciones
Establecer una comunicacin DDE utilizando a Delphi como Cliente y no a Excel. Establecer una comunicacin con los dispositivos de la serie Vision. Desarrollar una aplicacin de escritura a registros. Crear variables en archivos para procesamientos de histricos. Crear un manejador de alarmas. Desarrollar una aplicacin de graficacin de tendencia de variables. Implementar grficos para animacin de la aplicacin HMI.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

52

BIBLIOGRAFA
Pginas 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 Concepcin. Protocolos. http://inf.udec.cl/~yfarran/webredes/protocolos/redes03.htm. 5. Caldern, J. LABORATORIO VIRTUAL PARA LA ENSEANZA DE AUTOMATIZACIN E INSTRUMENTACIN 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 Espaa. OLE en Windows. http://www.iespana.es/perl-es/OLE.htm. 8. Martnez, M. Cliente OPC realizado en Visual Basic .NET . http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art123.asp. 9. Omron Espaa. 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

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

53

ANEXOS

UniScada y Uni_HMI
Manual del Usuario
Elaborado por: Alexander Barrantes Muoz

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

54

Tabla de Contenidos Introduccin.......3 Requerimientos Mnimos..........3 Instalacin..........4 Descripcin del Ambiente Grfico de UniScada..........5
Descripcin de los iconos de la barra de herramientas....5 Descripcin de la pantalla de Conexin......6

Ejecucin Offline de UniScada.........7 Ejecucin Online de UniScada........11 Ejecucin Uni_HMI....13

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

55

Introduccin
Este programa tiene como objetivo servir de interfaz HMI (Humano-maquina), es una aproximacin y un ejemplo de los programas que existen en el mercado denominados SCADA (software supervisor que realiza la adquisicin de datos desde PLC hacia una PC comnmente). Este software esta dirigido nicamente a los modelos M90 y Vision 230 de la familia de PLCs (Controladores Lgicos Programables) de la compaa Unitronics. Su funcionamiento se basa en la utilizacin de enlaces OLE (enlace e inclusin de objetos) de Windows, estableciendo una comunicacin entre un servidor OPC (OLE para control de procesos) de la compaa Unitronics y como cliente Excel, que es controlado por debajo por esta aplicacin. Por lo que por medio del protocolo de comunicacin DDE (intercambio de datos dinmico), es posible que se puedan leer y escribir los registros internos del PLC. Esta clase de programas (HMI) permiten una forma confortable, amigable y grfica 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 configuracin y creacin, en donde se determina el modelo de PLC a usar en la aplicacin 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 Mnimos
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 Comunicacin: MJ10-22-CS25 de Unitronics.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

56

Instalacin
Antes de ejecutar el programa, se debe instalar el Servidor OPC de Unitronics, en donde despus de colocar el disco y dar un click en OPC Server Install, automticamente se dan los pasos para su instalacin. Recuerde definir los trminos en el Servidor OPC, tal como se indica en la seccin 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 segn su comodidad y se da un click en los iconos UniScada o en Uni_HMI, segn se desee, para su ejecucin (ver figura N 1).

Figura N 1. Iconos de Aplicaciones UniScada y Uni_HMI.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

57

Descripcin del Ambiente Grfico de UniScada


Descripcin de los iconos de la barra de herramientas El Programa se inicia en una pantalla de Conexin, el cual posee una barra de herramientas, que esta compuesto por 6 botones, a continuacin se hace una descripcin pequea de cada uno de ellos, empezando de izquierda a derecha, algunos son muy familiares a los que comnmente se utilizan:
Icono Descripcin Nuevo Proyecto*, Inicializa la aplicacin, borrando todo lo que ha sido confeccionado hasta el momento, tiene sentido su ejecucin cuando ya otra aplicacin ha sido creada y se desea empezar otra nueva, o cuando est abierta una aplicacin guardada, inicialmente aparece deshabilitado. Abrir Archivo*, Abre la informacin de un proyecto ya creado con la aplicacin 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 algn elemento con la aplicacin UniScada, su funcin es la de guardar en un archivo con extensin .usd, (UniHMI_1.usd por defecto), lo confeccionado con la aplicacin 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 Pgina, Su funcin es crear una pgina 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 seleccin 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 nmero de pgina que han sido creadas hasta el momento. La ltima pgina creada se selecciona automticamente por defecto. Nuevo Registro, Su funcin es seleccionar el registro del PLC a insertar en la pgina seleccionada. Si no ha sido creada alguna pgina, ejecuta la funcin Nueva Pgina y solo servir hasta que este procedimiento se realice. Activa una pantalla de seleccin de registro**, seguido a esto activa una pantalla indicando que se haga un click en el lugar dentro de la pgina seleccionada que se quiere insertar (ver figura N 4). La posicin 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 pgina o un registro. Se puede ejecutar cuantas veces se desee pero se limitar hasta que no aparezca ningn elemento creado en el proyecto. *Estos procedimientos tambin aparecen con sus respectivos nombres en la seccin de Archivo en la barra de men principal (ver figura N 2). **Nota: Se especificar con detalle en las secciones Ejecucin Offline y Online de UniScada.

El programa posee algunas restricciones por seguridad a que este no presente errores en tiempo de ejecucin, tales como la deshabilitacin de la operacin de abrir, si se ha empezado ya a trabajar (si ya hay por lo menos una pgina creada), entre otras.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

58

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 Pgina y de Advertencia de seleccin de posicin de los registros de UniScada

Descripcin de la pantalla de Conexin La pantalla de conexin aparece en una pgina igual a las que se crean para la insercin de los registros del PLC, con la diferencia que la cejilla que la identifica viene con la etiqueta Conexin (Ver figura N 5). Adems posee los siguientes elementos que se utilizan para la conexin entre el PLC y el servidor OPC : 1) Direccin del Ejecutable (Servidor OPC de Unitronics): Aqu se selecciona la ubicacin en la PC en donde se ha instalado el servidor OPC de Unitronics, la cual trae la direccin que posee el OPC Server por defecto a la hora de instalarse, en caso de que en su instalacin se haya modificado esta direccin, se necesita cambiar. No es relevante esta seccin si se trabaja en offline. 2) Nombre del Tpico: En esta seccin se selecciona el nombre del tpico que establece la conversacin DDE, o el que ha sido configurado en la seccin definicin del Tpico (topic definition) en el OPC Server de Unitronics. Aparece la definicin del tpico que tiene el OPC Server de Unitronics por defecto (unit1). Esta seccin es de mucha importancia para trabajar en offline o en online.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

59

3) Modelo del PLC: En esta seccin 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, ntese que se debe dar un click a la opcin que se desea, en caso contrario se trabajar con el Vision 230 por defecto. Despus de que se eligieron los puntos anteriores, se puede elegir el modo de ejecucin del programa de forma simple, si se quiere trabajar online se presiona el botn 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 grficamente 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 Pgina y se comienza la configuracin de los diferentes registros, como se explica ms adelante. Para trabajar offline se obvian los pasos anteriores y se empiezan a trabajar simplemente dando un click al botn de Nueva Pgina, al igual que en modo online, se comienza la configuracin de los diferentes registros. Para evitar conflictos entre estos modos de operacin, cuando se empieza a trabajar offline se deshabilita el botn de conexin (OK) y as no poderse pasar a trabajar online, o de igual manera el programa restringe la operacin en offline si se empieza a trabajar online.

Figura N 5 Pantalla de Conexin de UniScada.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

60

Ejecucin 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 aplicacin UniScada (ver figura N 1). 2) Digite el nombre del tpico 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 Pgina y digite el nombre del Proceso (etiqueta que identifica la cejilla de la subseccin del proyecto), generalmente tiene como objetivo identificar el proceso de control asociado con los registros que se desean monitorear en una seccin especfica, Si no digita ninguna el programa lo identificar como Proceso_1. 5) Seleccione el icono de Nuevo Registro. Esto har aparecer una pantalla de configuracin en donde define el registro a monitorear que ser insertado en la pgina seleccionada (La pgina se selecciona dando un click a la cejilla con una etiqueta asociada, o si no es automticamente selecciona la ltima pgina 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 accin aparece el rango de valores permitidos para dicho registro, tenga cuidado de no digitar un valor fuera del rango respectivo, pues causara errores. Inclusive an digitando un valor permitido dentro del rango que aparece, podra haber algn error, pues este rango representa los valores posibles pero no los habilitados.

Figura N 6 Ejemplo #1 de la Pantalla de Configuracin de Registros de UniScada.

Ntese que segn 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 conexin del PLC, solo es necesario marcar el nombre STATUS sin necesidad de agregar otra indicacin. Tambin se da el caso de la habilitacin o deshabilitacin de estos espacios segn si son pertenecientes o carentes del modelo del PLC seleccionado. La Tabla siguiente especfica las opciones de los diferentes registros que se pueden elegir, adems del modelo del PLC para el que estn activos.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

61

Nombre del Item MB MI ML MD INP OUT SB SI SL SD TC TP TS CC CP CS ID STATUS UPDATEINTERVAL MAXINTERVAL ITEMCOUNT ERRORITEMS WRITECOUNT SUSPEND Bit de Memoria Entero de Memoria

Descripcin

Modelo de PLC M90 X X Vision 230 X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X

Entero Largo de Memoria Entero Doble de Memoria Entrada* Salida* Bit del Sistema Entero del Sistema Entero Largo del Sistema Entero Doble del Sistema Temporizador Actual Temporizador Preestablecido Bit de Tiempo de exploracin Contador Actual Contador Preestablecido Bit del contador de Exploracin ID de la Unidad Estado de la conexin Ajuste actual del intervalo a actualizar Intervalo actualizado mximo medido Items activos Nmeros de tems con nombre invlidos Nmero de comandos escritos esperando la ejecucin Suspencin de la comunicacin

*Para el caso del M90, estos registros se direccionan de manera diferente que con el Vision 230 y todos los dems registros (ver figura N 7).

Adems de lo ya descrito esta pantalla de configuracin posee una etiqueta que se le designar al registro seleccionado, si no es digitada el programa seleccionar automticamente una etiqueta con el nombre Registro_#, en donde # es el nmeros de registros creados hasta el momento.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

62

Figura N 7 Ejemplo #2 de la Pantalla de Configuracin de Registros de UniScada.

Finalmente cuando se ha terminado toda la configuracin del registro respectivo, se le selecciona el botn de crear aceptando lo anteriormente definido. Seguidamente se indica que esta listo para seleccionar la posicin 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. Ntese 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 extensin .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 aplicacin, borrando todo lo que ha sido confeccionado hasta el momento, seleccione Nuevo Proyecto. 9) Para Abrir un proyecto ya creado, seleccione la opcin 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 opcin 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

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

63

Ejecucin 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 aplicacin UniScada (ver figura N 1). 2) Digite la direccin 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 instalacin se haya modificado esta direccin, se necesita cambiar. 3) Digite el nombre del tpico 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 botn OK de la pantalla de conexin y se espera a que UniScada abra el OPC Server de Unitronics, por lo que mientras que este paso se realiza se mostrar grficamente 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 Pgina y digite el nombre del Proceso (etiqueta que identifica la cejilla de la subseccin del proyecto), generalmente tiene como objetivo identificar el proceso de control asociado con los registros que se desean monitorear en una seccin especfica, Si no digita ninguna el programa lo identificar como Proceso_1. 7) Seleccione el icono de Nuevo Registro. Esto har aparecer una pantalla de configuracin en donde define el registro a monitorear que ser insertado en la pgina seleccionada (La pgina se selecciona dando un click a la cejilla con una etiqueta asociada, o si no es automticamente selecciona la ltima pgina 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 accin aparece el rango de valores permitidos para dicho registro, tenga cuidado de no digitar un valor fuera del rango respectivo, pues causara errores. Inclusive an digitando un valor permitido dentro del rango que aparece, podra haber algn error, pues este rango representa los valores posibles pero no los habilitados.

Figura N 9 Ejemplo #3 de la Pantalla de Configuracin de Registros de UniScada.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

64

Ntese que segn 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 conexin del PLC, solo es necesario marcar el nombre STATUS sin necesidad de agregar otra indicacin. Tambin se da el caso de la habilitacin o deshabilitacin de estos espacios segn si son pertenecientes o carentes del modelo del PLC seleccionado. La Tabla de la seccin de Ejecucin offline de UniScada especfica las opciones de los diferentes registros que se pueden elegir, adems del modelo del PLC para el que estn activos. Tambin se muestra en la figura N 8 un botn con , el cual tiene como funcin probar los registros antes de insertarlos, no se puede insertar ningn registro si no ha sido antes probado en modo online, pues no se habilita el botn de crear, su contenido se refresca automticamente en la ventana contigua izquierda, segn su seleccin. Adems de lo ya descrito esta pantalla de configuracin posee una etiqueta que se le designar al registro seleccionado, si no es digitada el programa seleccionar automticamente una etiqueta con el nombre Registro_#, en donde # es el nmeros de registros creados hasta el momento. Finalmente cuando se ha terminado toda la configuracin del registro respectivo, se le selecciona el botn de crear aceptando lo anteriormente definido. Seguidamente se indica que esta listo para seleccionar la posicin 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. Ntese 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 extensin .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 aplicacin, borrando todo lo que ha sido confeccionado hasta el momento, seleccione Nuevo Proyecto. 11) Para Abrir un proyecto ya creado, seleccione la opcin 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 opcin de Salir del men principal para salir del programa y cerrar todas las aplicaciones complementarias al mismo

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

65

Ejecucin de Uni_HMI
Los pasos para trabajar con el programa Uni_HMI se citan en forma puntal de forma siguiente: 1) Ejecute la aplicacin Uni_HMI (ver figura N 1). 2) Digite la direccin 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 instalacin se haya modificado esta direccin, se necesita cambiar. 3) Digite el nombre del tpico que configur o quiere configurar en el Servidor OPC de Unitronics. 4) Presionar el botn OK de la pantalla de conexin y se espera a que Uni_HMI abra el OPC Server de Unitronics, por lo que mientras que este paso se realiza se mostrar grficamente 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 opcin de Abrir Archivo. 5) Para Abrir un proyecto ya creado, presione el botn 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 opcin de Salir dando un click en el botn 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 Conexin de Uni_HMI.

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs 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

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

67

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; { }

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 Pgina} 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

Interfaz Humano-Mquina para la familia de PLCs Unitronics. 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.

68

} 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; {Deteccin 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 Configuracin 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

Diciembre del 2004

IE-0502 unit vpal; interface

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

69

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 pgina} 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; { Direccin Fsica 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-Mquina para la familia de PLCs Unitronics.

70

begin numpag := 1; Direc := Addr(Direccion.Text[1]); { Cargar el nombre de la apliucacin} Unid := Unidad.text; { Cargar la unidad a ejecutar} ShellExecute(V_ppal.Handle,'open',Direc,nil,nil,SW_ SHOWMINIMIZED); { Ejecutar el metodo de conexin} 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

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

Interfaz Humano-Mquina para la familia de PLCs Unitronics. 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;

71

end else activado := true; end; end; procedure TV_ppal.NuevaPgina1Click(Sender: TObject); begin // Crear una pgina 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;

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics. end. unit configuracion; interface

72

ListBox.Items.InsertObject(0,Self.Name,Self as TObject); end; end; Procedure TV_ppal.CargarNuevoElemento(X,Y :integer; Nom : string); var hoja : TTabSheet; 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; 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;

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, OleServer, Excel97, StdCtrls, Comctrls; 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; 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 {$R *.DFM} uses vpal, Main;

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

73

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-Mquina para la familia de PLCs Unitronics.

74

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

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-Mquina para la familia de PLCs Unitronics.

75

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]; {Generacin 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

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

Interfaz Humano-Mquina para la familia de PLCs 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;

76

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

begin if (vpal.V_ppal.PageCPpal.ActivePageIndex = 0) then begin if (Application.messagebox( 'Favor Crear una Pgina','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', 'Atencin!!',MB_OK + MB_DEFBUTTON1); Close; end; end; procedure TConfig.FormShow(Sender: TObject); Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

77

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;

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

Interfaz Humano-Mquina para la familia de PLCs Unitronics. 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;

78

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]; {Generacin 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}

Diciembre del 2004

IE-0502 end;

Interfaz Humano-Mquina para la familia de PLCs Unitronics. 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

79

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; var Nombre_Proceso: TNombre_Proceso; implementation uses vpal; {$R *.DFM} procedure TNombre_Proceso.OKClick(Sender: TObject); begin

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; end. nit UniHMI; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, Excel97, ComCtrls, StdCtrls, OleServer, ShellApi, ExtCtrls, jpeg, syncobjs;

Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics. end;

80

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 pgina} 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; { Direccin Fsica 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 apliucacin} Unid := Unidad.text; { Cargar la unidad a ejecutar} ShellExecute(V_ppal.Handle,'open',Direc,nil,nil,SW_ SHOWMINIMIZED); { Ejecutar el metodo de conexin} While (activo = false) do Diciembre del 2004

IE-0502

Interfaz Humano-Mquina para la familia de PLCs Unitronics.

81

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 pgina nueva Diciembre del 2004

IE-0502 end;

Interfaz Humano-Mquina para la familia de PLCs Unitronics. hoja : TTabSheet;

82

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

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-Mquina para la familia de PLCs Unitronics.

83

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;

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

You might also like