Páginas

sábado, 14 de mayo de 2016

ESP8266 - 01 Esclavo Modbus TCP IP (Ethernet) para Aplicaciones Industriales



Introduccion a Modbus TCP IP
Modbus TCP IP  protocolo de comunicaciones basado en  aquitectura (TCP/IP) cliente/servidor diseñado para comunicación  Ethernet de controladores Industriales PLCs.
Ventajas sobre otros Protocolos Industriales
  1. Es público.
  2. Su implementación es fácil y requiere poco desarrollo.
  3. Maneja bloques de datos sin suponer restricciones.
Mas Informacion Modbus ..  Wikipedia.



Existen una gran cantidad de implementaciones de este protocolo en la gran variedad de lenguajes de programacion Java, Python, C, etc.
Se diria que una gran cantidad de los controladores Industriales, OPC, HMI  y Scada Utilizan Modbus TCP IP.

Importante:
Para realizar correctamente todo el proyecto que es de Gran alcance referente a su interacción con scada HMI OPC y PLC  deberias ver Antes este Post:

Arduino Mega 2560 Display Oled I2C Modbus Maestro RTU Conexion Scada Industrial


Aplicación  de Proyecto
He realizado la búsqueda de ejemplos o aplicaciones funcionales de el Modulo ESP8266 - 01
en el campo industrial, Luego de realizar pruebas con controladores PLC via Modbus RTU serial,
Realice la  implementacion del Modulo ESP8266 como esclavo TCP IP   y Arduino con un SCADA Industrial.



Explicacion de Proyecto
Se realiza la configuracion del Modulo ESP8266 como esclavo Modbus TCP/IP, se Utiliza un simulador Modbus TCP IP como Maestro de red.
1 El modulo ESP8266 enviara en el Holding Register [0] un valor Random generado internamente por el modulo, este se visualizara desde el Simulador Maestro Modbus.
2 Se utiliza el puerto serial del ESP8266 con el FTDI Serial usb para visualizar el valor Random



Video de Prueba  ESP8266 como esclavo Modbus TCP IP via Wifi


Materiales 

1  1 ESP8266
2  1  Convertidor FTDI Serial USB
3  1 Regulador de 5 a 3.3v para alimentacion de ESP8266

Conexiones


Descargas:

Parte 1

Parte 3
ESP8266 Modo Puente Modbus RTU Esclavo - Modbus TCP IP Esclavo

Mas Información:


9 comentarios:
Write comentarios
  1. hola, quisiera saber que firmware utilizaste, si el firware ATE de fábrica u otro diferente

    ResponderEliminar
    Respuestas
    1. La rutina se creo en Arduino IDE y se descarga a ESP, Mas arriba esta la descarga del codigo fuente y la libreria Modbus TCP.
      Aqui un tutorial de como programar el ESP desde cero.
      http://pdacontrol.blogspot.com.co/2016/06/programar-esp8266-con-arduino-ide-en-5.html
      Saludos

      Eliminar
  2. Hola,
    para este ejemplo usas una libreria llamada ESP8266.h donde puedo descargarla?

    Gracias! fantástico aporte!

    ResponderEliminar
    Respuestas
    1. Hola Cristian
      La libreria ESP8266.h se incluye en Arduino IDE cuando lo configuras para programar los ESP8266, la librerias se agregan automaticamente al agregar el URL de boards que se une a Github, este tutorial te lo explicara http://pdacontrol.blogspot.com.co/2016/06/programar-esp8266-con-arduino-ide-en-5.html

      Saludos.

      Eliminar
  3. Hola!
    Estoy utilizando el ejemplo "ESP8266ModbusTCPSlave.ino" en ESP8266-12e.
    Funciona muy bien, pero tengo enviar el comando de lectura o escritura dos veces para recibir el mensaje "OK" en mi simulador (Modbus pool master).
    Creo que es debido a que la conexión se cierra (no keep_alive).
    ¿Cómo hago la conexión a mantener en "Keep-Alive"?

    Gracias.

    ResponderEliminar
    Respuestas
    1. Hola
      La libreria Original tenia un inconveniente, el Maestro debia cerrar y abrir conexion para actualizar, a corto plazo lo solucione, modificando la libreria y haciendo que el esclavo cierre la conexion y el maestro solicitara conexion, muchas personas me han consultado sobre este tema y estoy probando con la libreria original sin la desconexion e implementando la libreria , pronto subire la documentacion completa
      Saludos

      Eliminar
  4. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
    Respuestas
    1. Entiendo.
      Si yo pudiera colaborar con alguna prueba, Voy a estar disponible.

      Hice algunas pruebas en el código, dentro del ficheiro "ModbusTCPSlave.cpp", comentando el "client.stop();", contenido dentro del bloque "case MB_FC_READ_REGISTERS:".

      La conexión permanece activa, pero no actualiza el valor del registro "Mb.MBHoldingRegister[0] = (random(1, 100));", declarada en el fichero "ModbusESP8266Slave.ino".

      Saludos.

      Eliminar
    2. Hola Jose
      Estas son las pruebas que te mencione anteriormente https://goo.gl/sWOqK4,con las pruebas realizadas ya no se debe detener la conexion, admiro tu interes en integrar ESP con modbus TCP, saludos

      Eliminar