Tabla de contenido:

Arduino PLC 32 I / O + State Machine + SCADA o HMI: 8 pasos
Arduino PLC 32 I / O + State Machine + SCADA o HMI: 8 pasos

Video: Arduino PLC 32 I / O + State Machine + SCADA o HMI: 8 pasos

Video: Arduino PLC 32 I / O + State Machine + SCADA o HMI: 8 pasos
Video: OpenPLC Part 4 - How to Connect Arduino to an HMI (SCADABR) 2024, Noviembre
Anonim
Arduino PLC 32 I / O + State Machine + SCADA o HMI
Arduino PLC 32 I / O + State Machine + SCADA o HMI

Muchas formas de programar, controlar y supervisar un sistema industrial con arduino.

Paso 1: Introducción

Introducción
Introducción

En este instructable me ocuparé de:

2 métodos para programar un arduino vinculado a una especie de máquina que incluye pulsadores, interruptores y LED

1- El primer método con el IDE arduino 1.6.x usando la biblioteca SM (State Machine)

2-El segundo método usando Yakindu, un proyecto de editor de digram de estado creado con el entorno de eclipse: dibuja su máquina de estado y genera el código para transferir a la placa Arduino.

En asociación con

2 formas de supervisar la máquina con un SCADA o HMI virtual en ejecución:

1- bajo Android 4.4: Unigo Evolution, una aplicación gratuita sin código, solo elementos para colocar en una pantalla y modbus TCP

2-en Windows 8: un proyecto gratuito AdvancedHMI que necesita Visual Studio 2013, sin código ni elementos para colocar en una pantalla y modbus TCP

Entonces dibujas tus secuencias funcionales con un SFC (en automatización: Sequential Function Chart), lo traduces en un diagrama de estado (mucho más cercano), lo programas (Yakindu o Arduino SM lib) y luego lo supervisas con un SCADA (Unigo Android o AdvancedHMI Windows).

Paso 2: Descripción del tablero real:

Descripción del tablero real
Descripción del tablero real
Descripción del tablero real
Descripción del tablero real

El esquema:

Usé una placa Arduino UNO, no un clon porque Yakindu no puede enviar ningún programa a ningún clon, solo una placa UNO y Mega.

Podría tener 32 E / S digitales con 2 expansores SPI como MCP23S17 (2x16 E / S) y 2 salidas analógicas más de 12 bits (analógicas reales sin filtrado PWM) con 2 SPI DAC como MCP4921.

No dibujé el escudo de Ethernet, pero lo necesita para supervisar su sistema: por lo que los pines 4, 10, 11, 12 y 13 no deben usarse para nada más y obviamente los pines 0 y 1 solo para RX TX.

Las fotos reales del tablero:

Son necesarios 8 pulsadores:

  • 4 para el modo manual: uno para la luz en cada led
  • 1 para parada de emergencia: si lo presiona, está en modo normal, suelte: emergencia
  • 1 para modo automático que enciende y apaga la luz secuencial de cada led, si se suelta: modo manual, para controlar cada led sin secuencia
  • 1 para RUN en modo automático
  • 1 para STOP en modo automático

4 led para simular lo que quieras (relé, válvula…)

Doy el nombre de cada uno de los botones y leds que utilicé en los programas.

Paso 3: ¿Qué secuencia programar? Diagrama de estado y SFC

¿Qué secuencia programar? Diagrama de estado y SFC
¿Qué secuencia programar? Diagrama de estado y SFC
¿Qué secuencia programar? Diagrama de estado y SFC
¿Qué secuencia programar? Diagrama de estado y SFC

Hice un SFC muy simple para describir lo que se supone que debe hacer el sistema.

Se necesitan 3 SFC:

  • SFCsecu para activar o desactivar el modo de emergencia, es el SFC maestro el que inicia los demás
  • SFC auto manual lanzado por SFCsecu, puede alcanzar el modo automático o el modo manual
  • SFC ejecutar detener, escanear y memorizar si alguien presionó DCY (RUN) o FCY (STOP)

Estos SFC se ejecutan en pseudo-multiestaca.

Luego los traduzco en un diagrama de estado:

  • una máquina maestra (emergencia) que lanza a otros 2 esclavos
  • un esclavo para escanear y memorizar DCY y FCY
  • un esclavo para alcanzar el modo automático o manual

Otra cosa: cuando presionas DCY puedes pilotar la salida analógica con un trimer virtual en un scada, cuando presionas FCY las salidas analógicas caen a 0V.

El diagrama de estado le ayuda a programar el arduino.

Paso 4: Programación con Arduino IDE 1.6. X

Programación con Arduino IDE 1.6. X
Programación con Arduino IDE 1.6. X
Programación con Arduino IDE 1.6. X
Programación con Arduino IDE 1.6. X

Te doy el código para traducir los diagramas anteriores. Necesitaba 3 bibliotecas adicionales que les doy también.

También necesitará la tabla de direcciones para comprender qué pines usa para qué y el modbus registra las direcciones correspondientes.

Paso 5: Programar con YAKINDU

Programando con YAKINDU
Programando con YAKINDU
Programando con YAKINDU
Programando con YAKINDU
Programando con YAKINDU
Programando con YAKINDU

Primero descargue la versión 2.9 (no pro) del proyecto gratuito en:

www.itemis.com/en/yakindu/state-machine/

Luego siga el tutorial provisto: hay algunas modificaciones en comparación con la última vez que descargué el programa, solo para completar los nombres de las diferentes partes del archivo "xxxconnector.cpp".

Las fotos: el dibujo de la máquina de estado, la vista de la carpeta en el proyecto y sus bibliotecas importadas de arduino, la vista de "xxxconnector.cpp" para hacer un enlace entre las transiciones / estados y las entradas / salidas reales del tablero o de los SCADA.

Te doy el proyecto que solo tendrás que importar en tu espacio de trabajo creado automáticamente.

También se proporcionan: las librerías necesarias para importar a Yakindu y algunos cambios que se describen en el tutorial.

Paso 6: Supervisarlo con AdvancedHMI

Supervisarlo con AdvancedHMI
Supervisarlo con AdvancedHMI

Primero descargue Visual Studio Express 2013 o más en:

www.microsoft.com/fr-fr/download/details.a…

Luego descargue el proyecto AdvancedHMI en:

sourceforge.net/projects/advancedhmi/?SetF…

Os dejo las fotos del SCADA que dibujé (con las correspondientes direcciones de registros modbus) y programé sin código, el proyecto modificado y un breve tutorial.

Paso 7: Supervisarlo con Unigo Evolution

Supervisarlo con Unigo Evolution
Supervisarlo con Unigo Evolution

Necesita un dispositivo Android con Android 4.4 (Kit Kat) y una pantalla de 7 pulgadas.

Te doy las fotos del SCADA que dibujé (y las direcciones de registros modbus correspondientes) y un breve tutorial para usar Unigo, no se necesita código, una carpeta que contiene imágenes de luces industriales y botones para poner en la carpeta UniGOPictures creada en tu interior. SD por la aplicación y el proyecto.

Paso 8: Conclusión

Fue una tarea enorme reunir 2 formas diferentes de programación y 2 formas diferentes de supervisión. Es difícil al principio estar acostumbrado a las habilidades de ambos sentidos. Pero ahora funciona y una vez entendido, ahora puede controlar sistemas más complicados.

Muchas gracias a una gran cantidad de tutoriales en todo el mundo, a Archie (AdvancedHMI), a RenéB2 (Yakindu) y a Mikael Andersson (Unigo Evolution) ya los desarrolladores de bibliotecas arduino que me permiten hacer un proyecto de "asalto tecnológico".

Sans eux j'aurais peut être souffert d'un sentiment d'incomplétude infinie pour l'éternité. J'exagère un peu.

Instructables felices.