¿Buscas alguna otra cosa?

Tunnel – Master Modbus RTU y esclavos Modbus RTU. Cómo dotar de comunicaciones MQTT a este escenario.

Detalles del escenario:

  • Disponemos de un PLC con comunicaciones Modbus RTU RS485 que, actuando como master, realiza lecturas periódicas de 3 dispositivos esclavo también con comunicaciones Modbus RTU RS485
  • Se necesita replicar ese mismo escenario, con los mismos dispositivos RS485, pero con
    comunicaciones IP, ya que no es posible realizar un cableado al encontrarse los distintos
    elementos ubicados a distancias kilométricas entre ellos
  • Se utilizarán tarjetas SIM muy económicas, con IP dinámica y privada, por lo que no será posible comunicar directamente los equipos entre ellos. Se utilizará como intermediario un bróker MQTT. El master enviará las peticiones modbus al bróker MQTT, que reenviará a los esclavos vía MQTT. Las respuestas de los módems esclavos son reenviadas al bróker MQTT que a su vez son reenviardas al módem master

Solución: MTX-Tunnel firmware + MTX-Java-IoT/MTX-Java-T/MTX-Java-T2

Archivo de configuración config.txt (master):

Configuración Observaciones
COMM_baudrate: 9600
COMM_bitsperchar: 8
COMM_autorts: off
COMM_autocts: off
COMM_stopbits: 1
COMM_parity: none
GPRS_apn: movistar.es
GPRS_login: MOVISTAR
GPRS_password: MOVISTAR
GPRS_timeout: 0
MTX_PIN: 0000
MTX_mode: mqtt
MTX_model: 199801445
MTX_ping: 35
MTX_pingIP: 8.8.8.8
MTX_invertedCom: on
MTX_msToSend: 250
SMS_allPhones: on
SMS_sendIP: on
SMS_ATEnabled: on
SMS_ATResponse: on
FIREWALL_enabled: off
MQTT_enabled: on
MQTT_server: tcp://test.mosquitto.org:1883
MQTT_id: [IMEI]
MQTT_attopic1: [IMEI]/AT
MQTT_atrtopic: [IMEI]/ATR
MQTT_keepalive: 300
MQTT_commrxtopic: rxmaster
MQTT_commrxtopic: txmaster
Serial port baud rate
8 bit data
No flow control
No flow control
1 stop bit
No parity
GPRS APN from your network operator
GPRS Login
GPRS Password
MTX-Tunnel is always GPRS connected
If SIM card has no PIN security, use 0000 value
MQTT serial gateways will be used
MTX-Terminal modem model used
One ping every 35 min. without communications
Ping address
Gateway port RS485
No fragmented networks
Send SMS with commands from any phone
Modem responds with its IP to a missed call/SMS
Commands can be sent to the MTX by SMS
MTX responds with an SMS to a command SMS
Any incoming connection form any IP is allowed
MQTT service enabled
Broker IP/DNS specified, including identifying port
Identifier
MQTT topic to send AT commands
Topic to send replies to commands to
Connection keep alive (300 seconds)
Data received will be retransmitted via serial
Data received v/serial, retransmitted to this topic

Archivo de configuración config.txt (slave):

Configuración Observaciones
COMM_baudrate: 9600
COMM_bitsperchar: 8
COMM_autorts: off
COMM_autocts: off
COMM_stopbits: 1
COMM_parity: none
GPRS_apn: movistar.es
GPRS_login: MOVISTAR
GPRS_password: MOVISTAR
GPRS_timeout: 0
MTX_PIN: 0000
MTX_mode: mqtt
MTX_model: 199801445
MTX_ping: 35
MTX_pingIP: 8.8.8.8
MTX_invertedCom: on
MTX_msToSend: 250
SMS_allPhones: on
SMS_sendIP: on
SMS_ATEnabled: on
SMS_ATResponse: on
FIREWALL_enabled: off
MQTT_enabled: on
MQTT_server: tcp://test.mosquitto.org:1883
MQTT_id: [IMEI]
MQTT_attopic1: [IMEI]/AT
MQTT_atrtopic: [IMEI]/ATR
MQTT_keepalive: 300
MQTT_commrxtopic: txmaster
MQTT_commrxtopic: rxmaster
Serial port baud rate
8 bit data
No flow control
No flow control
1 stop bit
No parity
GPRS APN from your network operator
GPRS Login
GPRS Password
MTX-Tunnel is always GPRS connected
If SIM card has no PIN security, use 0000 value
MQTT serial gateways will be used
MTX-Terminal modem model used
One ping every 35 min. without communications
Ping address
Gateway port RS485
No fragmented networks
Send SMS with commands from any phone
Modem responds with its IP to a missed call/SMS
Commands can be sent to the MTX by SMS
MTX responds with an SMS to a command SMS
Any incoming connection form any IP is allowed
MQTT service enabled
Broker IP/DNS specified, including identifying port
Identifier
MQTT topic to send AT commands
Topic to send replies to commands to
Connection keep alive (300 seconds)
Data received will be retransmitted via serial
Data received v/serial, retransmitted to this topic

Detalles:

  • El resumen del escenario es el siguiente. El módem que actúa de master reenvía todas las peticiones modbus que recibe en su puerto serie RS485 al bróker MQTT, concretamente al topic “txmaster”. Los módems esclavos, como están subscritos al topic “txmaster” del bróker MQTT, reciben automáticamente dichas peticiones del master que, a su vez reenvían por su puerto serie RS485.
    Y al revés. Los módems esclavos reenvían todos los datos que reciben por su puerto serie
    RS485 (las respuestas modbus) al bróker mqtt, al tópic “rxmaster”. Como el módem
    que actúa de master está subscrito a dicho topic “rxmaster”, el bróker MQTT le envía
    inmediatamente dichas respuestas, que son reenviadas por su puerto serie RS485
  • Tenga presente que las latencias de las comunicaciones pueden ser algo mayores que con una comunicación directa (ya que hay un intermediario, el bróker mqtt, y la velocidad de las comunicaciones dependerán de la potencia de éste). Ajuste los tiempos de timeout en caso de ser necesario