Hemos realizado varias pruebas de referentes a Arduino integrando Arduino- PLC y Arduino-HMI Panasonic para aplicaciones Industriales, en esta oportunidad hemos encontrado otras librerias para Arduino como Maestro Modbus RTU, las cuales utilizaremos solo en los Modulos ESP8266, ventajas principal de la libreria tiene mayor facilidad referente a configuración de lectura y escritura de registros.
Inicialmente las librerías solo funcionaban para Arduino, Se le han realizado una serie de modificaciones para ser compiladas en Arduino IDE y funcionen correctamente con el modulo ESP8266.
cooking-hacks : www.cooking-hacks.com
libelium : www.libelium.com
La libreria ModbusMaster232.h esta bajo licencia GNU (General Public License), en esta pagina existen 2 versiones disponibles de esta libreria RS232 y RS485, en este caso utilizaremos la version RS232, dado que la otra fue creada para un modulo con un hardware diferente al comun Max485.
Documentación Api ModbusMaster232 : classModbusMaster232.
Arduino IDE
La estrategia de prueba realiza la comunicación bidireccional de registros Holding Registers.
ESP8266 Simulador Esclavo
Holding Register[4] <- 00005 (Control diodo led -GPIO 04)
Holding Register[5] 00006 -> int random (1 a 999 )
Holding Register[6] 00007 -> Valor ADC0 (LDR- Fotoresistor)
Nota: ADC0 valido en versiones ESP con este pin disponible.
Materiales y donde Compralos Baratos!!
Otros Recomendados
– ESP32
– ESP32 + 0.96″ Oled
– Arduino Nano V3 Clone
– Arduino Mega 2560 R3 Clone
– Raspberry pi 3
– Raspberry pi zero w
– Meter PZEM-004 with Display
– Meter PZEM-004T Module
-LoRa RFM95, 915.0 MHz
– Meter PZEM-016 + CT (0-100A)
– PLC LE3U FK3U FX3U 14MR
– Power Supply 5v (rail)
Tutorial
El siguiente video tutorial explicara las modificaciones realizadas para funcionar en ESP8266 y una pequeña prueba de Comunicación Maestro (ESP8266) – Esclavo (Sim ModbusRTU).
Video Tutorial NodeMCU ESP8266 12E Modbus RTU Master
ESP8266 Maestro Modbus RTU (RS232)
Modificaciones
Inicialmente al realizar la compilación los ejemplos disponibles libreria ModbusMaster232.c para descargar en el modulo ESP8266 desde Arduino IDE, se generaban errores en 2 funciones nativas de las arquitectura de los Microcontroladores AVR Atmega (Atmel).
Nota: parte inferior Descargas, librerias Modificadas.
Vistas editor Notepad++.
Funcion CRC16
1- Funcion creada _crc16_update2 en remplazo de libreria crc16.h funcion _crc16_update encargada del realizar checksum modbus, fuente AVR Libc Reference Manual <util/crc16.h>
-Implementacion
Funcion makeWord
2- Se ha eliminado la funcion makeWord la cual construye 1 word apartir de 2 byte, se ha implementado la funcion equivalente en código en cada sitio requerido.
Funciones disponibles
- node.readHoldingRegisters(,)
- node.writeSingleRegister(,)
- node.readInputRegisters(,)
- node.writeSingleCoil(,)
- node.readWriteMultipleRegisters(,,,)
Acondicionamiento de Señal ADC(0)
Se debe tener mucho cuidado al utilizar pin ADC (0) del modulo ESP8266 12E ,TOUT, ADC(0) o pin 6 son algunos nombres por los cuales se identificara esta entrada, su resolución es de 10 bits de 0 a 1.0V maximo, se ha creado un circuito basado en un divisor de tensión y un diodo para limitar el voltage de entrada en paralelo a Nuestro sensor de luz, Fotoresistencia o LDR.
Conexiones
Descargas Github
- Libreria ModbusMaster232 Arduino/ESP8266(Modificada)
- Codigo Arduino IDE
- Libreria ModbusMaster232 Arduino (Original)
Referencias
- Pruebas Modbus RTU Maestro con Arduino via RS232 y PLC Panasonic FPX C14R
- Pruebas Modbus RTU Maestro con Arduino via RS232 y Pantalla Panasonic GT01
- ESP8266 Scada SVG Modbus RTU Display Oled PLC Panasonic FPX C14R