Un Programmable Logic Controller ha sido y sigue siendo el componente básico en el mundo de la automatización industrial. La aplicación industrial hizo que los sistemas PLC fueran muy costosos, tanto para comprar como para reparar y también debido a las habilidades altamente específicas solicitadas a los diseñadores de software para extraer el máximo potencial de los PCL. Arduino es una especie de controlador programable universal, aunque sólo es el “núcleo” y en cualquier caso, se ha construido para aplicaciones generales; con un poco de hardware externo (esencialmente las interfaces capaces de transferir las señales de los sensores hacia los actuadores, protegiendo al uP de la señales electromagneticas que lo puede dañar) y un software adecuado puede, sin embargo, convertirse en algo muy similar a un PLC.
Existen dos librerias que pueden convertir un Arduino en un PLC: ladder.h en conjunto con el editor LDmicro (código escalera) y plcLIB en cual trabaja con un lenguaje similar a AWL. Para saber mas clic aqui.
Los componentes de un PLC básico son los siguientes:
Requiere de un software SCADA, que es la aplicación que instalada en una computadora y permite programar el PLC. Esta aplicación es un sistema SCADA-MMI (Man Machine Interface) osea el que interpreta y comunica los datos.
El problema de los PLC siempre fue que fueron propietarios, por lo que cada fabricante.
Algunas marcas: Entrelec, Exor, Fuj, GE-Fanuc, Hitachi, Koan, Mocrocom, Mitsubishi, Matsushita, Moeller, National, Hitech, Ibercomp, Omron, Pilz, Parker, Sici, Sprecher, Telemecanique (Schneider), Tri, Xycom, Yaskawa, Hitech, Ibercomp, Idec.
Un lenguaje de programación popular es el LADDER, también llamado de contactos o de escalera, es un lenguaje de programación gráfico muy popular dentro de los PLC debido a que esta basado en los esquemas eléctricos de control clásico.
El OpenPLC es el primer PLC de fuente abierta estandarizado completamente funcional, tanto en software como en hardware. El objetivo es proporcionar una solución industrial de bajo costo para automatización e investigación. OpenPLC se ha usado en muchos documentos de investigación como un marco para la investigación industrial de seguridad cibernética, dado que es el único controlador que proporciona el código fuente completo.
Incluye un entorno de desarrollo de programa, admite protocolos SCADA populares como Modbus, TCP y DNP3 y también incluye un editor de interfaz de máquina humana (HMI) de código abierto llamado ScadaBR. El proyecto OpenPLC se creó de acuerdo con el estándar IEC 61131-3, que define la arquitectura de software básica y los lenguajes de programación para PLC. Esto significa que OpenPLC se puede programar en cualquiera de los cinco lenguajes estandarizados: Diagrama de escalera (LD), Diagrama de bloques de funciones (FBD), Texto estructurado (ST), Lista de instrucciones (IL) y Diagrama de funciones secuenciales (SFC).
OpenPLC se usa principalmente en la automatización industrial y doméstica, internet de cosas (IoT) e investigación SCADA. OpenPLC cuenta con varias plataformas:
El OpenPLC aun no se ejecuta como una aplicación independiente en las placas Arduino. Depende de un sistema host ejecutar la lógica central. El sistema host puede ser: Windows, Linux o Raspberry Pi.
Debe primero instalar el firmware OpenPLC en el IDE de Arduino: UNO, NANO, MICRO, PRO, CERO o MEGA, ADK, Debino y cargarlo en su placa.
Instale OpenPLC en el host elegido, elije el controlador Arduino y matea las E/S con los pines de Arduino.
Tipo | Pin Arduino | OpenPLC |
---|---|---|
Entradas digitales | 2 | %IX0.0 |
3 | %IX0.1 | |
4 | %IX0.2 | |
5 | %IX0.3 | |
6 | %IX0.4 | |
Salidas digitales | 7 | %QX0.0 |
8 | %QX0.1 | |
12 | %QX0.2 | |
13 | %QX0.3 | |
Entradas analógicas | A0 | %IW0.0 |
A1 | %IW0.1 | |
A2 | %IW0.2 | |
A3 | %IW0.3 | |
A4 | %IW0.4 | |
A5 | %IW0.5 | |
Salidas analógicas | 9 | %QW0.0 |
10 | %QW0.1 | |
11 | %QW0.2 |
Cree un proyecto (o descargue el proyecto de ejemplo) y ábralo en el editor PLCopen. Haga clic en Archivo -> Generar programa para compilar el diagrama en un archivo ST. Luego suba el archivo ST al OpenPLC usando la interfaz web.
El OpenPLC aun no se ejecuta como una aplicación independiente en las placas ESP8266. Depende de un sistema host ejecutar la lógica central. El sistema host puede ser: Windows, Linux o Raspberry Pi.
Debe primero debe instalar el ESP8266 en el IDE de Arduino si aun lo lo hiso (Herramentas -> tableros -> Administracion http://arduino.esp8266.com/stable/package_esp8266com_index.json), luego instalar el firmware OpenPLC en el IDE: ESP8266 y cargarlo en su placa.
#define WIFI_NAME "__Mi SSID__" #define WIFI_PASSWORD "__clave__" #define OPENPLC_SERVER_IP "192.168.0.1" #define DEVICE_ID 0
La asignación de pin para el ESP8266 depende del DEVICE_ID que debe ser reemplazando en la n. Hay 4 entradas digitales, 4 salidas digitales, 1 entrada analógica y 1 salida analógica disponible en el ESP8266. Por lo tanto, si su DEVICE_ID es cero (n=0) y las entradas digitales son: %IX0.0~%IX0.3. Si su DEVICE_ID es 2 (n=2), entonces las entradas digitales son: %IX2.0~%IX2.3 y así sucesivamente.
Tipo | Pin ESP8266 | OpenPLC |
---|---|---|
Entradas digitales | D4 | %IXn.0 |
D5 | %IXn.1 | |
D6 | %IXn.2 | |
D7 | %IXn.3 | |
Salidas digitales | D0 | %QXn.0 |
D1 | %QXn.1 | |
D2 | %QXn.2 | |
D3 | %QXn.3 | |
Entrada analógica | A0 | %IWn |
Salida analógica | D8 | %QWn |
Tenga en cuenta que la entrada analógica para el ESP8266 es 0~1V solamente! Algunas placas como NodeMCU v1.0 tienen divisores de voltaje internos y aceptan una entrada analógica en el rango entre 0~3V3. Verifique los detalles de su placa antes de usar este pin. Además, la salida analógica proporcionada por %QWn es una salida PWM.
La RaspberryPi debe ejecutar Raspbian Jessie para poder instalar el OpenPLC. Si aún no lo ha actualizado, debe hacerlo antes de instalar este software. Siga las instrucciones en OpenPLC
Para mas información consulte el Referencias de lenguaje y el foro.