miércoles, 2 de noviembre de 2016

Actualmente la tarjeta Arduino se ha convertido en uno de los sistemas de adquisición de datos y señalización digital más populares, no sólo entre la comunidad estudiantil sino también entre aficionados, técnicos e ingenieros en electrónica, mecatrónica y otras áreas afines. El lenguaje nativo para programar esta tarjeta es una versión de C++ que se llama Processing y en ocasiones, para los que se inician en el estudio de la programación y de las aplicaciones de Arduino, el aprender a programar en este lenguaje puede resultar todo un reto, sobre todo para aquellos que no tienen experiencia previa en la realización de programas utilizando algún otro lenguaje de programación textual.

Por otro lado, para una gran mayoría de nosotros la programación de cualquier dispositivo programable se vuelve más comprensible cuando se utiliza un lenguaje gráfico de programación. Por ejemplo, los lenguajes  KOP (Kontaktplan - Esquema de Contactos) y GRAFCET son dos de los lenguajes gráficos que más se utilizan para programar los PLC (Programmable Logic Controller - Controlador Lógico Programable). Estos dispositivos son autómatas programables que se utilizan comúnmente para controlar prácticamente cualquier tipo de proceso en la industria. En particular, el lenguaje KOP o ladder (escalera) es un lenguaje gráfico que es muy similar a los esquemas de la lógica cableada que se utilizan a nivel industrial para representar la conexión eléctrica de dispositivos electro mecánicos que se conectan entre sí para crear automatismos. De hecho estos esquemas han facilitado desde hace algunas décadas a la fecha, a técnicos e ingenieros, la realización de estrategias de control que se utilizan en la automatización industrial. Incluso, mucho antes de la llegada de los lenguajes de alto nivel de nuestros días.

El sistema PLCmDuino
Para facilitar la programación de la tarjeta Arduino a aquellas personas que no tienen experiencia previa de programación en C++ pero que tienen conocimientos de los lenguajes que se utilizan para programar los PLC, se ha desarrollado un sistema de programación al que he denominado como PLCmDuino el cual permite programar la tarjeta Arduino en lenguaje KOP o AWL, sin requerir el uso del IDE (Integrated Development Environment - Entorno de Desarrollo Integrado) original de Arduino que utiliza el lenguaje C++ como plataforma de programación. El sistema consta básicamente de tres componentes:

Software de escritorio MikroPLAN 

Es una aplicación escrita en Borland C++ con el propósito de que un usuario pueda programar la tarjeta Arduino utilizando diagramas de escalera o de lógica cableada. Incorpora un editor para diagramas en KOP y un compilador que primeramente traduce el esquema realizado por el usuario a instrucciones AWL similares a las que se utilizan en los PLC S7-200 de Siemens. Después, a partir de la lista de instrucciones, se genera una secuencia de códigos numéricos (bytecode) que posteriormente se envían y almacenan en el chip de Arduino. Básicamente esta acción es similar a  la interfaz de Python

La programación del chip puede realizarse desde MikroPLAN de forma alámbrica o bien inalámbrica utilizando un enlace Bluetooth. En este caso, la tarjeta Arduino deberá tener conectado un módulo HC-06 o HC-05 para comunicación Bluetooth. En la figura siguiente se muestra una captura de pantalla del editor KOP de MikroPLAN



Software embebido PLCmDuino UNO

Es el BIOS (Basic Input Output System - Sistema Básico de Entrada y Salida)  que se graba en el chip ATMEGA de la tarjeta Arduino UNO R3 y que permite cargar programas en KOP o AWL desde MikroPLAN. Su código fuente está escrito en Processing y una vez alojado en el chip, PLCmDuino recibe de MikroPLAN la secuencia de códigos que este software generó durante la compilación del diagrama de escalera de la estrategia de control del usuario.  El BIOS se comunica con MikroPLAN utilizando el puerto serial con el que se instaló el IDE de Arduino por primera vez en la computadora del usuario. Una vez que todos los códigos se han recibido, PLCmDuino los almacena en una área de la memoria no volátil del chip. Cada uno de estos códigos representan instrucciones en lenguaje AWL compatibles con algunas del juego de instrucciones para los PLC S7-200 de Siemens y están integradas en el mismo código del BIOS. Cuando se corre un programa, PLCmDuino lee cada uno de estos códigos de su memoria; los decodifica y los relaciona con una alguna rutina específica que emula la acción equivalente en AWL.

Básicamente, el dúo MikroPLAN y PLCmDuino funciona de manera similar a Python y una JVM (Java Virtual Machine - Máquina Virtual de Java) la cual interpreta el "bytecode" generado por el primero y luego lo ejecuta en una PC. Esto se describe en el artículo "¿Por que hay tantos Pythons?". Para saber más sobre otros temas de programación puedes consultar Toptal Engineering blog.”


MobilePorts

Es una aplicación móvil para Android desarrollada exclusivamente para interactuar con el BIOS PLCmDuino cuando una estrategia de control en KOP programada por el usuario está corriendo en Arduino. La aplicación utiliza un enlace Bluetooth para comunicarse con el autómata el cual deberá tener conectado el módulo de comunicación mencionado anteriormente. En la siguiente figura se muestra una captura de pantalla de esta aplicación




Señalización y Adquisición de Datos con PLCmDuino
La versión actual de PLCmDuino (8.70) también puede utilizarse como medio para realizar adquisición de datos y señalización digital con Arduino desde STEP7 MicroWin y FluidSIM


ACCESO DESDE STEP7

STEPDuino es una aplicación de escritorio a través de la cual se puede acceder a los puertos de entrada y salida de PLCmDuino desde el simulador de STEP7 MicroWin 5.5


Para trabajar con STEPduino se requiere de una licencia de activación del software además de la licencia de activación de PLCmDuino


ACCESO DESDE FluidSIM

FluidDuino DACQS es un módulo software integrado en MikroPLAN a través del cual se puede acceder a PLCmDuino desde las versiones 3.6 a 4.2 de FluidSIM


Para acceder a FluidDuino se requiere únicamente de la licencia de activación de PLCmDuino


ACCESO DESDE LabVIEW, Visual Basic NET y VB6

Para acceder a PLCmDuino desde estas aplicaciones, no se requiere licencia alguna


¡ AHORA PUEDES PROBAR PLCmDuino TOTALMENTE GRATIS !

Desde septiembre del 2016, puedes programar PLCmDuino en modo de evaluación. Esto te permitirá probar la funcionalidad del sistema sin necesidad de una licencia de activación. Por tanto, todo aquel interesado en programar la tarjeta Arduino mediante KOP y AWL, puede grabar libremente el BIOS PLCmDuino en la cantidad de tarjetas Arduino UNO que desee y programarlo desde MikroPLAN en modo evaluación. En este modo, todas las funciones del BIOS están habilitadas pero al cargar un programa en Arduino, únicamente se almacenará en su RAM. Esto quiere decir que si el usuario desenergiza la tarjeta Arduino, el programa se perderá. Para eliminar esta restricción, se requiere de una licencia de activación del BIOS por cada tarjeta Arduino UNO en donde éste se encuentre alojado. Esta licencia proporciona acceso permanente a las prestaciones de PLCmDuino como autómata programable.
  Además, la versión actual del software MikroPLAN, también permite programar los microcontroladores PIC 18F2550 y 18F4550 pero por el momento, únicamente se incluye en el área de descargas el archivo HEX del BIOS para la tarjeta Arduino UNO R3.

Licencia de activación del BIOS
Para obtener la licencia de activación se requiere crear una solicitud electrónica de licencia cuyo proceso de generación se describe en el documento "Manual de MikroPLAN para Arduino.PDF". La generación de la solicitud de licencia es gratuita y no requiere conexión a Internet. Únicamente cuando ya tengas la solicitud electrónica para la licencia de activación envíala a:

jogatech@hotmail.com

En respuesta te enviaré el precio de la licencia de activación y cómo realizar el pago


Descargas
ProyexDuino 20170313.zip. Es una carpeta comprimida que contiene el software de programación MikroPLAN (versión 9.00), la aplicación móvil MobilePorts y el archivo HEX del BIOS PLCmDuino (versión 4.00) que permite programar la tarjeta Arduino UNO R3 mediante KOP. En esta versión de MikroPLAN, puedes programar PLCmDuino en modo de evaluación. Además, se incluye el BIOS AlarmDuino que es la primera de una serie de aplicaciones embebidas que se ha denominado "Hazlo Tu Mismo Con Arduino" las cual se irán agregando a esta carpeta y que también puedes probar en modo evaluación. Consulta la sección "Actualizaciones y Depuración" para saber más de esta aplicación.
  Al descargar la carpeta, descomprime su contenido en la unidad C, de tal manera que en tu PC la carpeta quede como:

C:\ProyexDuino

Todas las aplicaciones que se incluyen son gratuitas y no hay restricción alguna en su uso y distribución

IMPORTANTE


Al actualizar una nueva versión del software y del BIOS sigue los siguientes cuatro pasos:

1. Si ya tienes una licencia de activación, realiza un respaldo del archivo de licencias "JOGATECHLicencias.dll" antes de que descargues una nueva versión. Recuerda que este archivo se encuentra en "C:\ProyexDuino\DLL"

2. Borra cualquier programa que se haya cargado en PLCmDuino con la versión antigua. Esto es debido a que los códigos numéricos que se generan durante la compilación de los programas que se cargan en PLCmDuino pueden variar entre una versión anterior y una actual. Sin embargo, a menos que se especifique lo contrario, los archivos KOP y AWL mantienen su compatibilidad entre ambas versiones

3. Borra completamente la carpeta "C:\ProyexDuino" y a continuación descomprime el contenido de la carpeta con la versión más reciente a la unidad C, de tal manera que aparezca nuevamente esa carpeta

4. Actualiza el archivo de licencias "JOGATECHLicencias.dll" con la copia de respaldo que hiciste de ese archivo


Actualizaciones y Depuración
13/03/2017
MikroPLAN 9.00 y PLCmDuino 4.00
- Se implementó en MikroPLAN una máquina virtual de PLCmDuino por lo que la ejecución del programa durante la simulación o la emulación en la PC mostrará el funcionamiento que tendrá la estrategia de control con PLCmDuino en la tarjeta Arduino. Por supuesto, la única diferencia será la velocidad en la que se ejecuten los programas tanto en la PC como en la tarjeta Arduino
- Se realizó la inclusión del modo de simulación de KOP y dos modos de emulación de código en AWL y en KOP con conectividad con PLCmDuino para la adquisición y señalización digital en tiempo real desde MikroPLAN. Se espera que estas características puedan utilizarse por el usuario de PLCmDuino como medio para la depuración de sus programas
- Se mejoró la interfaz de MikroPLAN con el servidor DDE de FluidSIM para dar mayor flexibilidad al seleccionar los puertos I0, I1, Q0, y Q1 para la adquisición y señalización digital en tiempo real desde FluidSIM

10/02/2017
MikroPLAN 8.85 y PLCmDuino 3.55
Se realizó la depuración del servidor DDE para FuidSIM debido a que PLCmDuino no reconocía correctamente los comandos que eran enviados desde MikroPLAN cuando se realizaba el enlace con FluidSIM. Esto se originó por la adaptación de las rutinas de comunicación en la versión anterior para soportar la programación de AlarmDuino. Gracias a Ariane Mena Huerta de la Universidad Politécnica de Puebla, México por hacer notar esta oportunidad de mejora

26/01/2017
MikroPLAN 8.80 y PLCmDuino 3.51
Se adaptó el programa de gestión de licencias para activar una serie de aplicaciones embebidas que se ha denominado "Házlo Tu Mismo con Arduino" que a partir de esta entrega se irán incluyendo junto con PLCmDuino. El primer proyecto de esta serie se ha denominado "AlarmDuino". Se trata de una alarma vecinal o comunitaria totalmente funcional cuyas sirena y lámpara de emergencia pueden activarse hasta por 200 usuarios vía SMS o bien mediante llamadas telefónicas desde un número fijo o móvil. La alarma funciona con una tarjeta Arduino MEGA 2560 cuyo BIOS se incluye también en el mismo archivo ZIP y un módulo GSM Shield. Al igual que PLCmDuino, también puedes probar "AlarmDuino" en modo evaluación sin requerir el módulo GSM y, posteriormente si te es de utilidad, solicitar y recibir una licencia de activación del mismo. Esta licencia además te permitirá acceder a toda la información técnica que necesitas para hacer este proyecto tu mismo. Para mayores detalles del proyecto, visita el blog


Por otro parte, para el caso del BIOS PLCmDuino, su código se adaptó para hacerlo compatible con los requerimientos de la nueva versión del gestor de licencias.

04/01/2017
MikroPLAN 8.70 y PLCmDuino 3.50
Debido al desarrollo de proyectos futuros con Arduino, se eliminó el gestor de solicitudes de licencia de MikroPLAN y se encapsuló en una aplicación independiente. Además, se realizó la depuración de la rutina de despliegue de datos para el LCD. Gracias al Ing. Alberto Valdés, dueño de la empresa Minibotics ubicada en la Cd. de León, Guanajuato, México por hacer notar esta oportunidad de mejora

20/11/2016
MikroPLAN 8.65 y PLCmDuino 3.45
Se modificaron los esquemas de captura de licencias y de seguridad para permitir el acceso a PLCmDuino desde STEPDuino y MikroPLAN. Gracias a José Ángel Ramírez, alumno de la División de Mecatrónica de la Universidad Tecnológica de Puebla, México por hacer notar una oportunidad de mejora en el sistema de manejo de licencias de PLCmDuino

8/11/2016
MikroPLAN 8.60
a. El editor KOP de MikroPLAN permite la inclusión de etiquetas
b. La configuración de los pines se incorpora en los archivos KOP y AWL
c. Se introdujeron mejoras de despliegue de datos en los elementos gráficos de los programas en KOP

PLCmDuino 3.40
a. Se permite la configuración de los pines de entrada analógicos A0 a A5 como terminales digitales
b. Se añadieron rutinas para el acceso individual a los bits de los puertos de entrada y salida desde LabVIEW y Visual Basic

2/11/2016
MikroPLAN 8.51 y PLCmDuino 3.31
Había un candado que impedía acceder de forma correcta al modo de evaluación del BIOS. Muchas gracias al Profesor Pedro David Domingo Fernández del Colegio de Formación Profesional de Salamanca, España por hacer notar este aspecto


Contacto
Para cualquier duda, comentario, reporte de algún "bicho" de software o sugerencia adicional pueden escribirme también a la cuenta que ya había mencionado:

jogatech@hotmail.com



3 comentarios:

  1. Hola buenas! Estoy comenzando en esto de la programación con Arduino y me ha parecido muy interesante poder utilizar el lenguaje de contactos. Pero tengo una duda que os dejo por aquí a ver si me la podéis solucionar, ya que, mi desconocimiento es amplio jaja.

    En esencia me preguntaba si estas placas pueden llegar( hoy por hoy) a ofrecer la estabilidad y seguridad que ofrece un PLC de grandes marcas a la hora de programar una máquina cualquiera. Hasta donde yo entiendo, en teoría si, pero seguramente me podáis dar más información.

    Gracias

    ResponderEliminar
    Respuestas
    1. Hola AdrienBref

      Por sí misma, la arquitectura de la tarjeta Arduino carece de varios elementos que los PLC's sí tienen y que son indispensables cuando un controlador programable de estas características desea utilizarse como elemento de control en sistemas automatizados. Por citar algunos:
      1. Los PLC's tienen optoacopladores tanto en sus entradas como en sus salidas que protegen las terminales del microcontrolador de eventuales sobrecargas que podrían no sólo afectar el desempeño del micro sino podrían llegar incluso a destruirlo

      2. Según el fabricante, no se recomienda alimentar a la tarjeta Arduino con un voltaje de CD más allá de 12 VCD. Por tanto, si esto llegara a ocurrir, la tarjeta Arduino también podría dañarse

      3. No tiene blindaje ante interferencias electromagnéticas que pudieran afectar el desempeño del micro

      Además, para el caso del proyecto PLCmDuino, el juego de instrucciones aún no es tan amplio como el que tiene un PLC de las serie S7-200. Ni qué decir en comparación con el que tiene un S7-300. Por lo que esto también podría ser una limitante a la hora de elegir la tarjeta Arduino para implementar tu aplicación

      Sin embargo, desde mi punto de vista y de acuerdo a mi experiencia, puedo decirte que si llegas a resolver los problemas que menciono, adaptando a la tarjeta Arduino los elementos de circuito necesarios (que de hecho no son críticos de conseguir ni extremadamente caros), sobre todo para reforzar la estabilidad del voltaje en el riel de alimentación, seguramente podrás utilizarla como un autómata programable de bajo costo

      Eliminar
  2. Muy buenas! Me encanta la idea de poder programar un arduino mediante lenguaje KOP ya que llevo años con ese idioma y programar en C se me hacia cuesta arriba, el unico problema que tengo es que al intentar instalarlo me sale que no se puede abrir o no se encuentra el archivo "JOGATECHTools.dll" cuando en realidad lo tengo en la carpeta ¿Que podria estar haciendo mal?
    Muchas gracias de antemano y un abrazo!

    ResponderEliminar