Início / Documentación / Autómatas / PLC sobre Linux

PLC sobre Linux

  • Publicado: 26 Junio 2011
  • Leído Visto: 8679 veces

Fuente: Mario Alberto Piz / 27 de noviembre de 2008 / http://mariopiz.blogspot.com/
--------------------------------------------------------------------------------------------------- 

Esta info fue recopilada con la ayuda de Oscar Brites

Controlador lógico programable

Los PLC (Programmable Logic Controller en sus siglas en inglés) son dispositivos electrónicos muy usados en Automatización Industrial.

Su historia se remonta a finales de la década de 1960 cuando la industria buscó en las nuevas tecnologías electrónicas una solución más eficiente para reemplazar los sistemas de control basados en circuitos eléctricos con relés, interruptores y otros componentes comúnmente utilizados para el control de los sistemas de lógica combinacional.

Los PLC actuales pueden comunicarse con otros controladores y computadoras en redes de área local, y son una parte fundamental de los modernos sistemas de control distribuido.

Los PLC con forma de rack tienen módulos con procesadores y con módulos de E/S separados y opcionales, que pueden llegar a ocupar varios racks. Entre ellos podemos destacar:

· Entradas Digitales

· Salidas Digitales

· Entradas Analógicas

· Salidas Analógicas

· Módulos de Aplicación Específicas:

Reguladores PID

Enconders

Buses de campo. Comunicaciones industriales

Las docenas de líneas de productos de idéntica funcionalidad pero incompatibles entre ellos, limitan a los clientes a la solución propietaria de determinado vendedor.

1019

PC Industriales

Son sistemas electrónicos constituidos por un computador de propósito general adecuadamente diseñado y montado para poder trabajar en un entorno de un proceso industrial continuo o discreto y soportar las condiciones ambientales adversas (polvo, temperaturas, interferencias electromagnéticas, vibraciones, etc.).

Sistemas Operativos de Tiempo Real

Es un sistema operativo que ha sido desarrollado para aplicaciones de tiempo real. Como tal, se le exige corrección en sus respuestas bajo ciertas restricciones de tiempo. Si no las respeta, se dirá que el sistema ha fallado. Para garantizar el comportamiento correcto en el tiempo requerido se necesita que el sistema sea predecible (determinista), algunas características son:

No utiliza mucha memoria

Cualquier evento en el soporte físico puede hacer que se ejecute una tarea

Multi-arquitectura (puertos de código para otro tipo de UCP)

Muchos tienen tiempos de respuesta predecibles para eventos electrónicos.

SOFT - PLC

La limitada utilización del PC industrial como un sistema de control de proceso está relaciona, en buena medida, con la tradicional resistencia al cambio, con cierta "fama" de inestabilidad de ciertos sistemas operativos del ámbito oficinista en el contexto empresarial y con la falta de conocimiento que el personal de automatización tiene de lenguajes de programación de alto nivel.

Para paliar este problema, algunos fabricantes proponen la combinación de un Sistema Operativo de Tiempo Real (RTOS) con programas Soft-PLC que emulan por software el comportamiento de un PLC. Este SOFT-PLC es una arquitectura abierta que respeta el estándar IEC 61131 – 3, dicho software permite transformar una PC, tanto industrial como común, en un PLC.

Generalidades del proyecto PLC Linux

Cuando hablamos de PLC en Linux, nos referimos típicamente al autómata entero: componentes de hardware, sistemas, y software de uso corriente. En general, el hardware consiste en una CPU, puertos de entrada/salida y algún dispositivo de entrada/salida analógico o digital directo.

El soporte lógico garantiza que, una vez corriendo, el PLC repite eternamente una secuencia de instrucciones de control (software de uso), que puede ser modificado en línea o fuera de ella por un sistema de programación al que está conectado. Desde el punto de vista del programador, un PLC tradicional es visto como un solo proceso que corre en la PC.

En el contexto que nos ocupa, destacamos la existencia de la versión en tiempo real denominada RTLinux. Este se sitúa entre el hardware y el propio sistema operativo, creando una máquina virtual para que Linux pueda seguir funcionando. RTLinux es el encargado de gestionar las interrupciones y del acceso al hardware.

Las tareas de tiempo real comparten el mismo espacio de memoria que el núcleo y se ejecutan con todos los privilegios; es decir, pueden ejecutar cualquier instrucción del procesador y tienen acceso a las entradas/salidas. Las tareas tienen prioridades fijas y pueden hacerse periódicas, compartir recursos mediante FIFOs o memoria compartida, sincronizarse etc, lo que representa una serie de capacidades típicas de los sistemas operativos de tiempo real. De forma sucinta, podemos considerar que Linux es la tarea de más baja prioridad, que sólo se ejecutará cuando no haya una tarea de tiempo real preparada. De esta forma, podemos mantener todas las aplicaciones típicas de Linux en una capa superior.

Implementación

En la primera versión, la aplicación se ejecuta desde la línea de comandos. El usuario introduce introduce la información acerca de los siguientes aspectos:

La configuración SW

La configuración HW

Los programas en la lista en la lista de instrucciones asociadas a cada tarea.

Las características de las tareas.

Esta información se almacena en un fichero de configuración, utilizado por el gestor de la aplicación. También se posibilita la edición directa de dicho fichero.

A partir de este fichero de configuración, el gestor comprueba la coherencia (por ejemplo, que no intentamos acceder a un bit de entrada que no está presente en el hardware escogido), y compila los programas asociados en lista de instrucciones. La salida son programas en código C que contienen las funciones a realizar dentro de cada ciclo de una tarea del autómata y el fichero necesario en el paso final de compilación habitual en Linux (Makefile). Este fichero Makefile hace referencia a una serie de ficheros patrón, predefinidos, así como a los ficheros específicos generados por el gestor.

Se ha decidido que el compilador de lista de instrucciones obtenga como salida directamente código C, de similar manera a como se ha realizado en casos precedentes encontrados en la literatura. Esta es la solución que proporciona una ejecución posterior más rápida. No obstante, uno de los ficheros intermedios de la compilación contiene códigos de operación y operandos, que podrían ser llevados a memoria e interpretados en tiempo de ejecución si se prefiere esta alternativa.

El programa final para RTLinux es en realidad un módulo insertable en el kernel de Linux. En el inicio del módulo se crean los hilos (cada uno asociado a una tarea periódica del autómata), se solicitan las interrupciones (tareas por eventos) y puertos de E/S dependiendo del hardware, y se asignan las zonas de memoria para los objetos del lenguaje (imagen de entrada/salida, memoria y bloques funcionales). Al terminar el módulo, se liberan todos los recursos.

Por ejemplo, la estructura de una tarea periódica, que se encuentra en un fichero patrón, es sencilla:

void *task1 (void *arg)

{

struct sched_param p;

p.sched_priority = 2;

pthread_setschedparam (pthread_self(), \

SCHED_FIFO, &p);

pthread_make_periodic_np (pthread_self(),\

gethrtime(), \

PERIOD1);

while (1)

{

pthread_wait_np ();

/* Read physical inputs */

update_input_image();

/* Execute user program */

do_plc_program[0]();

/* Set physical outputs */

update_output();

}

return 0;

}

La tarea se marca a sí misma como de prioridad 2 en este ejemplo, (en nuestra implementación, la tarea de menor periodo sería la más prioritaria), y con la política del planificador SCHED_FIFO, la única posible en RTLinux. Después se hace periódica, con periodo denominado PERIOD1, a través de pthread_make_periodic_np, una función no definida en POSIX. Con pthread_wait_np, se suspende la ejecución del thread hasta el próximo periodo.

En cada periodo se ejecuta el clásico ciclo del autómata. Las funciones update_input_image y update_output dependen del hardware y están definidas en un fichero externo, realizado a priori. La primera actualiza la imagen de entradas, mientras que la segunda copia la imagen de las salidas en la salida física. El gestor de la aplicación las hará visibles a través del Makefile. La función do_plc_program[0] está definida en un fichero externo generado tras la compilación de los programas de lista de instrucciones, y es el que ejecutará realmente el programa introducido por el usuario, accediendo a la imagen de entradas, salidas, bits de memoria internos y bloques funcionales, cada uno con su espacio de memoria compartida. El Makefile generado por el gestor permite compilar todos los ficheros adecuados conjuntamente.

Una aplicación en Linux (baja prioridad) permite obtener información de las tareas, objetos del sistema (entradas, salidas, etc) a través de la memoria compartida, para realizar una supervisión del trabajo del autómata.

OpenPCS

El entorno de programación OpenPCS es un framework abierto basado en el Active Document Server Technology(una versión especial del active X controls).Esto permite una fácil integración con cualquier herramienta especifica de un fabricante(OEM)

OpenPCS es un producto, que sigue el concepto moderno de software de código abierto.

Se compra el software de Infoteam una vez y entonces se puede vender junto con el hardware de forma gratuita.

SmartPLC

El smartPlc es el runtime de OpenPCS, es un SoftPLC compatible con IEC 61131-3

Esta maquina vitual se ejecuta en UCODE, un codigo universal, independiente que emula un PLC. Dado que existe una amplia gama de distintos sistemas, el objetivo fue implementar un kernel runtime portable, el cual puede ser fácilmente adaptable a cualquier controlador y sistema operativo.Esta escrito en ANSI c,permitiendo de esta manera una alta portabilidad.

Corre en forma nativa para WinCE , MS C.NET y XP Embedded en procesadores de 8 a 64 bit.

Pero como esta escrito en ansi c ,puede correr en linux con pequeñas modificaciones.

http://www.infoteam.de/

CoDeSys

CoDeSys es un entorno de desarrollo para la programación de controladores conforme con el estándar industrial internacional IEC 61131-3. El término CoDeSys es un acrónimo y significa Sistema de Desarrollo de Controladores. Más 200 fabricantes de dispositivos de diferentes sectores industriales ofrecen sus dispositivos de automatización inteligente programable con la interfaz de programación CoDeSys. En consecuencia, miles de usuarios finales en todo el mundo emplean CoDeSys para su trabajo diario en todo tipo de tareas de automatización. Hoy en día, CoDeSys es la herramienta de desarrollo basada en IEC 61131-3 más extendida en Europa. Codesys sp run time system

El run time convierte cualquier sistema embebido o basado en pc en un dispositivo considerado por el estándar IEC 61131-3 como un PLC.

La aplicación del run time es realizada por el fabricante del dispositivo de automatización que es asistida por el 3S-Smart Software Solutions. El usuario final no participa en este proceso. Entre las familias de cpu que soportan al Codesy sp run time se encuentran:

Infineon SAB80C167 family

Infineon TriCore

ARM based CPU

Renesas SH 2/3/4

Motorola ColdFire

PowerPC

Intel 80186/80x86/Pentium x

MIPS

Analog Devices BlackFin

Altera NiosII

http://www.3s-software.com/

CoDeSys Automation Alliance (CAA)

La CoDeSys Automation Alliance (CAA) es una alianza internacional de fabricantes que ofrecen dispositivos de automatización programables con CoDeSys. El Principal objetivo de la CAA es ofrecer un conjunto de dispositivos para diferentes tareas industriales con un único instrumento de programación, CoDeSys. La plena interoperabilidad y el intercambio de datos a nivel de aplicación están garantizados por las empresas del CAA que se reúnen en talleres periódicos para seguir el proceso de normalización.

http://www.automation-alliance.com/

 

Fuente: Mario Alberto Piz / 27 de noviembre de 2008 / http://mariopiz.blogspot.com/