SciELO - Scientific Electronic Library Online

 
vol.17 número4Dispositivo para la Evaluación y Diagnóstico del Estado del Cabezal en Centros de Mecanizado de Alta VelocidadSintonización de un Lazo Proporcional Integral y Derivativo del Control de una Tolva de Compensación índice de autoresíndice de materiabúsqueda de artículos
Home Pagelista alfabética de revistas  

Servicios Personalizados

Revista

Articulo

Indicadores

Links relacionados

Compartir


Información tecnológica

versión On-line ISSN 0718-0764

Inf. tecnol. v.17 n.4 La Serena  2006

http://dx.doi.org/10.4067/S0718-07642006000400006 

 

Información Tecnológica-Vol. 17 N°4-2006, pág.: 29-34

AUTOMATIZACION Y CONTROL

Entorno para la Emulación de Autómatas Programables

A New Application for the Emulation of Programmable Logic Controllers

Xoán C. Pardo (1), José C. Díaz (1) y Ramón Ferreiro (2)
(1) Universidad de A Coruña, Facultad de Informática, Campus de Elviña, s/n, 15071 A Coruña-España (email: pardo@udc.es)
(2) Universidad de A Coruña, E.S. Marina Civil, Paseo de Ronda, 51, 15011 A Coruña-España (email: ferreiro@udc.es)


Resumen

En este artículo se describen las principales funcionalidades y aspectos destacados del diseño y desarrollo de un entorno para la emulación de autómatas programables. El objetivo de este trabajo ha sido disponer de un emulador que, siendo compatible con las especificaciones del estándar IEC 61131-3, proporcionase características adicionales como el acceso remoto, la definición de conjuntos diferentes de instrucciones mediante el uso de catálogos, y la configuración de diferentes arquitecturas hardware. En su implementación se han aplicado tecnologías software abiertas y se ha diseñado una interfaz gráfica de usuario para navegadores web. Esto garantiza la portabilidad y accesibilidad del emulador.

Palabras clave: controlador lógico programable, emulación, IEC 61131-3 estándar, código abierto


Abstract

The main functionalities and characteristics of a new application for the emulation of Programmable Logic Controllers are described in this paper. The objective of this work has been to design and implement an emulator including among others the following characteristics: to comply with the IEC 61131-3 standard, to allow remote access, to allow configuration of different instruction sets based on the use of catalogs, and to allow configuration of different hardware architectures. Open source technologies have been used for the implementation of the emulator and a graphic interface to be used by web browsers has been incorporated. This guaranties the portability and accessibility of the emulator.

Keywords: programmable logic controller, emulation, IEC 61131-3 standard, open source


INTRODUCCIÓN

La aplicación de tecnologías abiertas y la adopción de nuevos estándares en la industria es un proceso lento si se compara con lo que sucede en el mundo del software. Los fabricantes exigen estar seguros de los beneficios obtenidos (no solo económicos) al adoptar una nueva tecnología que además debe cumplir exigencias rigurosas en cuanto a aspectos como la fiabilidad, seguridad y robustez (Lewis, 1998). En numerosas ocasiones podría afirmarse que los estándares se adoptan porque el no hacerlo supondría una desventaja competitiva. Este es el caso en lo que respecta a la automatización de procesos mediante Autómatas Programables (PLCs) y el estándar IEC 61131-3. Si bien su propuesta abrió grandes expectativas entre los usuarios debido a las ventajas en cuanto a interoperabilidad, portabilidad, reutilización, reducción de costes, etc. Los fabricantes han ido incorporando el estándar lentamente y una década después de su aparición aún hay muchas cuestiones no resueltas en cuanto a la portabilidad de los programas o la semántica de los lenguajes estandarizados.

Aunque la adopción en la industria está siendo desigual y menor de lo que las expectativas iniciales auguraban (Pollard, 1997), un efecto positivo de la aparición del estándar ha sido la disponibilidad de un conjunto de lenguajes cuyo conocimiento y utilización reducen los problemas que habitualmente se plantean en instalaciones industriales debidos a la utilización de equipos de diferentes fabricantes: costes de formación y mantenimiento, dificultad para la reutilización de aplicaciones, complejidad en la integración entre equipos, etc. A diferencia de lo que ocurría hace unos años, hoy en día es posible encontrar en el mercado entornos de desarrollo de aplicaciones para PLCs que permiten crear programas siguiendo las recomendaciones IEC, simularlos en un PC y hacer automáticamente las conversiones necesarias para ejecutarlos en equipos de diferentes fabricantes. Sin embargo aún no se ha llegado a una situación en la que se disponga de un entorno realmente abierto, que pueda ser utilizado tanto para la docencia como a nivel industrial, que tenga la facilidad de uso de los entornos comerciales y que no requiera de grandes desembolsos económicos.

El trabajo descrito en este artículo es parte de un proyecto que tiene como objetivo la aplicación de tecnologías abiertas para el desarrollo de herramientas que puedan ser utilizadas conjuntamente con otras existentes para dar soporte al proceso de desarrollo de software en sistemas de control. En este sentido está relacionado con aproximaciones como las agrupadas bajo la denominación MatPLC (De Sousa y Carballo, 2003), el desarrollo de PLCs empotrados sobre Linux (Plaza y Medrano, 2004; Sheu et al., 2006), el desarrollo de entornos para el diseno de software de control asistido por computador (Yen et al, 2003; Ramos-Hernández et al., 2005) o con propuestas anteriores de los autores como SFC++ (Pardo y Ferreiro, 1999). Los primeros resultados de este proyecto están orientados principalmente a su uso académico y han sido validados mediante simulaciones, aunque se pretenda ir mejorando sus características para su posible futura aplicación en entornos reales.

Interés de un emulador de PLCs

Existen diferentes razones que motivan el interés por disponer de un emulador de PLCs. Como es obvio su función básica será la de permitir simular la ejecución de programas sin disponer físicamente del equipo necesario, pero además mediante la inclusión de ciertas características adicionales, se abren otras posibilidades como: 1) la simulación de entornos de ejecución distribuidos y heterogéneos; 2) la simulación de diferentes arquitecturas y configuraciones de E/S; 3) la definición del juego de instrucciones a utilizar durante la emulación; 4) el acceso remoto al emulador; y 5) la integración con aplicaciones externas, por ejemplo sistemas SCADA o HMI.

Estas características lo convierten en una herramienta adecuada para su utilización en entornos de desarrollo en los que se aplique una aproximación que integre técnicas provenientes de diferentes disciplinas como la Ingeniería del Software, la Ingeniería de Control o el Control de Procesos. En estos entornos es deseable disponer de algún medio que permita probar diferentes prototipos de la aplicación para ayudar en la toma de decisiones sobre su arquitectura software y el refinamiento de su diseño, así como la posibilidad de simular diferentes configuraciones físicas del sistema para analizar la idoneidad de una solución determinada. Es en este contexto, por tanto, donde tiene verdadero interés disponer de un emulador con funcionalidades avanzadas como las citadas anteriormente.

Características del emulador

En su versión actual el entorno propuesto tiene las características siguientes:

1) Se ha elegido una solución de compromiso entre la emulación de la arquitectura hardware del autómata y su respuesta desde el punto de vista externo. En este sentido se ha decidido simular únicamente aquellas componentes de la arquitectura necesarias para que la respuesta del emulador sea equivalente desde el punto de vista lógico a la del sistema real, pero sin reproducir fielmente su estructura interna.

2) Se ha implementado un analizador sintáctico para la mayor parte de la gramática del estándar IEC 61161-3: tipos de datos y variables, unidades de organización del programa (POUs) y lenguaje de lista de instrucciones (IL).

3) Se ha incluido un intérprete de instrucciones basado en el uso de catálogos. Esta característica del intérprete es la que permite utilizar el entorno para emular PLCs con diferentes conjuntos de instrucciones y permitirá añadir, en futuras versiones, nuevos lenguajes.

Cada catálogo es un fichero XML que contiene la lista de instrucciones del lenguaje que esté siendo interpretado y la información necesaria para ejecutar cada una de ellas. El ejemplo siguiente muestra como se define la instrucción LD en el catálogo IEC:

<catalogos>
<catalogo>
<nombre>IEC</nombre>
<instrucciones>
…
<instruccion>
<nombre>LD</nombre>
<clase>LD</clase>
</instruccion>
…
</instrucciones>
</catalogo>
</catalogos>

En este caso la instrucción está implementada por medio de una clase Java que tiene el mismo nombre que la instrucción. Cada nueva instrucción definida de esta manera debe implementar la interfaz abstracta Funcion. Esta interfaz define un método execute que contiene los detalles de implementación de cada instrucción. El código siguiente muestra una versión simplificada de como se implementaría la instrucción LD:

/* Class LD */
public class LD extends Funcion
{
/* Constructor vacío */
public LD() {}
/* Método execute */
public void execute(
/* Operandos de la instrucción */
ArrayList operandos,
/* Estado del procesador */
Estado estado
) throws PLCException
{
/* Obtener operandos */
Iterator iter=operandos.iterator();
Tipo a=(Tipo) iter.next();
if(a.esTipo("ANY")) {
/* Cargar valor en el acumulador */
estado.acumulador = (Tipo) a;
} else
throw new ParameterException("");
}
}

Los catálogos pueden incluir instrucciones nuevas implementadas desde cero o reutilizando las ya existentes. Para cada nueva instrucción debe proporcionarse su clase Java, que el emulador se encargará de cargar dinámicamente a partir de las definiciones del catálogo.

Otra característica de los catálogos es que permiten reutilizar las instrucciones existentes renombrándolas. Esto es aplicable en casos en los que coincida la semántica de las instrucciones pero no su sintaxis. El ejemplo siguiente muestra como se definiría un sinónimo para la operación LD en un nuevo catálogo:

<instruccion>
<nombre>Sinonimo_LD</nombre>
<clase>LD</clase>
</instruccion>

4) También se ha utilizado la técnica basada en el uso de catálogos para la gestión de los Bloques Función (FBs) y funciones. Se han implementado los definidos por el estándar IEC 61131-3 y además se ha incluido soporte a la definición de nuevos bloques y funciones, ya sea utilizando clases Java de manera similar a como se ha explicado para las instrucciones, o bien directamente en los programas IL interpretados por el emulador.

5) El manejo del emulador se realiza a través de una interfaz gráfica (Fig. 1) a la que puede accederse a través de un navegador web.

Arquitectura software

La arquitectura software del entorno está formada por dos subsistemas:

La interfaz de usuario (Fig. 1), que incluye la funcionalidad necesaria para cargar un programa en el emulador, ejecutarlo en modo continuo o ciclo a ciclo, modificar el tamaño de la memoria de datos y el de la imagen de E/S, elegir el catálogo de instrucciones a utilizar, ver los catálogos de instrucciones, tipos de datos, FBs y funciones, simular la configuración de E/S y depurar el programa.

La información de depuración consiste en un visualizador de los valores de las variables almacenadas en memoria y un mecanismo de traza que proporciona información sobre cada instrucción ejecutada por el intérprete (nombre, valores de los parámetros, estado del procesador y resultado).

El emulador propiamente dicho, formado a su vez por:

El analizador sintáctico, que es invocado al cargar un programa en el emulador. Su función es la de comprobar la corrección sintáctica de los programas analizando al mismo tiempo su estructura para obtener dos clases de información: i) los tipos de datos, variables y POUs declarados en el programa, esta información es utilizada para reservar memoria para las variables y añadir automáticamente al catálogo las nuevas definiciones de tipos de datos, FBs y funciones; y ii) las instrucciones a ejecutar por el intérprete, almacenándose para cada instrucción del programa su nombre y parámetros.

Fig. 1: Interfaz gráfica del entorno de emulación.

El intérprete de instrucciones, cuya función es la de obtener el código para la ejecución de cada instrucción a partir de la información almacenada en los catálogos. El mecanismo utilizado es el mismo independientemente de que se trate de una instrucción simple, un FB o una función y en cualquier caso se puede utilizar IL o Java para su implementación.

La arquitectura virtual, que simula parte de la arquitectura hardware de un PLC, en concreto la memoria de datos, la de programa, las imágenes de E/S y el estado del procesador (contador del programa, acumulador, flags auxiliares).

La versión actual del emulador únicamente permite configurar los tamaños de los distintos tipos de memorias, aunque se pretende incorporar en futuras versiones un mecanismo que permita definir diferentes arquitecturas de forma flexible mediante ficheros XML.

El gestor de catálogos, que proporciona la funcionalidad necesaria para el almacenamiento, consulta y recuperación de los conjuntos de instrucciones y las declaraciones de tipos de datos, FBs y funciones. Por defecto siempre se dispone como mínimo de los definidos en el estándar IEC 61131-3.

En lo referente a las tecnologías aplicadas se ha utilizado Java como lenguaje de programación, la interfaz ha sido implementada como un ‘applet’ formando parte de una página HTML, en el acceso remoto al emulador se ha aplicado JavaRMI, para el analizador sintáctico se ha utilizado JavaCC (2004) y los catálogos han sido almacenados en XML y procesados usando DOM (McLaughlin, 2001).

USO DEL EMULADOR

La utilización del entorno por parte del usuario se realiza en dos fases:

Fase de edición, en la que el usuario edita el programa y lo carga en el emulador. Este comprueba su corrección sintáctica, reserva memoria para las variables y actualiza los catálogos. De esta manera el usuario puede editar los catálogos modificados antes de pasar a la segunda fase.

En esta fase el usuario también define la configuración de E/S a utilizar. Esto puede hacerse manualmente, asignando variables de diferentes tipos al espacio simulado de direcciones de E/S, o bien por programa, asignando la dirección a utilizar (mediante AT) en las declaraciones de variables. En la Fig. 2 puede verse un ejemplo de asignación de variables en el espacio de direcciones de E/S.

Fig. 2: Definición de la configuración de E/S.

Fase de depuración, en la que se puede ejecutar el programa de forma continua o ciclo a ciclo. Durante la depuración se muestra una traza de la ejecución de cada instrucción y el usuario puede, además, simular las entradas y ver los cambios producidos en los valores de salidas y variables internas.

CONCLUSIONES

Se han descrito las características principales de un entorno 'abierto' para la emulación de PLCs. Las más destacables son la conformidad con el estándar IEC 61131-3, la accesibilidad remota, la posibilidad de escoger entre diferentes catálogos de instrucciones, tipos de datos, FBs y funciones, la configuración de ciertos aspectos de la arquitectura hardware emulada (tamaño de las memorias) y la disponibilidad de una interfaz gráfica para la consulta y depuración de los programas. La aplicación de Java y XML como tecnologías de implementación garantizan su portabilidad y facilitarán la adaptación a las especificaciones XML para el estándar IEC que puedan realizarse en el futuro (en el momento de escribir este artículo ya está disponible la primera versión de la especificación XML de la PLCOpen (2005)).

En la actualidad el entorno está en fase de pruebas para su aplicación a la docencia en automatización con PLCs, con la intención de implantar en el futuro un laboratorio virtual (Saygin y Kahraman, 2004; Hsieh y Hsieh, 2004). Se ha decidido no incluir en esta primera versión algunas funcionalidades importantes mientras su funcionamiento no esté suficientemente validado. La más destacable es la que se refiere al modelo software del estándar IEC 61131-3, puesto que el emulador simula la configuración más simple posible, formada por un único recurso en el que se ejecuta una única tarea. Futuras versiones deberán incorporar nuevas funcionalidades, entre las que se han identificado:

1) La utilización de configuraciones más complejas (multirecurso y multitarea).

2) El soporte a aplicaciones distribuidas entre varios emuladores y al intercambio de información entre ellos, de acuerdo a lo definido en el modelo software del estándar IEC 61131-3.

3) La integración con diferentes drivers de E/S, lo que posibilitaría entre otras cosas el control de dispositivos externos o la integración con aplicaciones SCADA, por ejemplo.

4) El soporte al lenguaje ST y la integración con editores para los lenguajes gráficos del estándar: diagramas de contactos (LD), bloques función (FB) y diagramas de secuencia (SFC).

REFERENCIAS

De Sousa, M. y A. Carballo. “An IEC 61131-3 compiler for the MatPLC”. Actas de la IEEE Int. Conf. on Emerging Technologies and Factory Automation, 485-490, Lisboa, Portugal, Septiembre 16-19 (2003).        [ Links ]

Hsieh, S.J. y P.Y. Hsieh. “Integrated virtual learning system for programmable logic controller”. Journal of Engineering Education, 93(2), 169-178 (2004).        [ Links ]

JavaCC [en linea], Java Compiler Compiler, The Java Parser Generator [fecha de consulta: Marzo 2004] https://javacc.dev.java.net (2004).        [ Links ]

Lewis, R., “Programming Industrial Control Systems using IEC1131-3”, IEE Control Engineering Series, 50. IEE Publishing, Londres, Reino Unido (1998). McLaughlin, B., “Java and XML”. O'Reilly, Reino Unido  (2001).        [ Links ]

Pardo, X.C. y R. Ferreiro. “SFC++: a tool for developing distributed real-time control software”. Microprocessors and Microsystems Journal, 23(2), 75-84 (1999).        [ Links ]

Plaza, I. y C. Medrano. “A specific implementation of IEC 61131-3 software model”. Actas del IEEE World Automation Congress, vol. 16, 223-230, Sevilla, España, Junio 28 – Julio 1 (2004).        [ Links ]

PLCOpen, XML Formats for IEC 61131-3, Version 1.01 (2005).        [ Links ]

Pollard, J. “IEC 61131-3: the toolbet is on, but it´s not very full”. Control Engineering Magazine, Febrero (1997).        [ Links ]

Ramos-Hernández, D.N., P.J. Flemming y J.M. Bass. “A novel object-oriented environment for distributed process control systems”. Control Engineering Practice, 13, 213-230 (2005).        [ Links ]

Saygin, C. y F. Kahraman. “A web-based programmable logic controller laboratory for manufacturing engineering education”. The Int. J.  Advanced Manufacturing Technology, 24, 590-598 (2004).        [ Links ]

Sheu, Y.H., W.J. Li, Y.C. Chen y J.Y. Yang. “A web-based embedded sequential controller with USB1-N wireless I/O modules”. Actas de la Int. Conf. on Advanced Manufacture, vols. 505-507, 535-540, Taipei, Taiwan, Noviembre 28 - Diciembre 2 (2006).        [ Links ]

Yen, B.C., W.J. Li y J.C. Lin. “A web-based, collaborative, computer-aided sequential control design tool”. IEEE Control Systems Magazine, 23(2), 14-19 (2003).        [ Links ]

Creative Commons License Todo el contenido de esta revista, excepto dónde está identificado, está bajo una Licencia Creative Commons