Les presento un programa para pruebas de comunicación entre MODBUS TCP a MOSBUS RTU. Lo que hace el programa es funcionar como esclavo MODBUS TCP y como maestro MODBUS RTU asi es como realiza la conversion de MODBUS TCP a MODBUS RTU, para lograr esto se ha utilizado un router TPlink TL-WR1043ND Ver 1.0 con OpenWrt Chaos Calmer 15.05 y la libreria de libmodbus 3.02.
El procedimiento para instalar el OpenWrt en el router lo pueden encontrar en internet. La compilación y depuración del programa lo realice en Linux UBUNTU 14.04 con ECLIPSE, la información la pueden encontrar en el siguiente link:
https://downloads.openwrt.org/docs/eclipse.pdf
Para la prueba del programa utilice el rectificador controlado (PIC18F2550) con comunicación MODBUS RTU y como maestro la aplicación de Android modbus-DROID.
http://www.bencatlin.com/sofware-projects/modbus-droid/
El http://www.jeperez.com/monitor-solar-instalacion-codigo-fuente/ esta una aplicación con la libreria libmodbus.
- Se requiere las siguientes librerias instaladas en el router:
libmodbus
libgcc
libstdcpp
gdbserver
opkg update
opkg install libmodbus
opkg install libgcc
opkg install libstdcpp
opkg install gdbserver "Solo es necesario para depuración"
- Para la comunicacion RS485 utilizo un conversor USB-SERIAL RS485 para lo cual instalo la siguiente libreria en el router.
opkg install kmod-usb-serial-pl2303
Deben tener el cross-compiler en UBUNTU para poder compilar e instalar la libreria libmodbus y asi poder compilar el archivo fuente del conversor TCP-RTU. pueden seguir los pasos del siguiente link
http://telecnatron.com/articles/Cross-Compiling-For-OpenWRT-On-Linux/
El archivo compilado lo envian al router:
scp modbus_converter root@192.168.43.5:/root
En mi caso lo envio al root.
En algunos casos se debe configurar el archivo como ejecutable con la siguiente instrucción.
chmod 777 modbus_converter
y ejecutamos el archivo
./modbus_converter
No olvidar de ejecutar el archivo antes de conectar el modbus droid.
En Modbus droid se configura el IP del router, el puerto de entrada y el registro del dispositivo
esclavo.
IP:depende del IP que tenga su router
port:1502
Point Type: Holding Register
Address:0 (corresponde al registro 40001)
Length: 1(solo se utiliza el registro 40001)
El siguiente es el link donde esta el programa fuente y compilado
Codigo
Espero que les sirva para hacer sus pruebas con MODBUS.
Saludos
Nestor