¿Buscas alguna otra cosa?
Detalles del escenario:
- Disponemos de un PLC Modbus RTU. Este PLC dispone en su memoria interna de una serie de variables/registros (por ejemplo, una temperatura y 3 contadores, …) las cuales deben leerse y enviarse periódicamente a un bróker MQTT.
- Por ello, el MTX-Tunnel debe interrogar periódicamente cada 15 minutos por un puerto serie al PLC para leer dichos registros. Los registros a leer son: para la temperatura el registro nº20, y los contadores están en los registros 21,22 y 23 respectivamente.
- El MTX-Tunnel debe enviar tras cada lectura el valor de los registros a un bróker MQTT usando un objeto JSON, pero debe ser capaz, en caso de fallo de comunicaciones 2g/3g/4g, de almacenar en memoria flash hasta 1500 lecturas que enviará cuando se restauren las comunicaciones.
- Para más seguridad en las comunicaciones, del módem debe contar con DUAL SIM. Es decir, el módem debe contar con 2 tarjetas SIM de 2 operadores de telefonía diferentes. El módem deberá cambiar de SIM siempre que no consiga obtener una dirección IP durante más de 120 segundos.
Solución: MTX-Tunnel firmware + MTX-IOT-S [4-N]
Archivo de configuración config.txt:
Configuración | Observaciones |
COMM2_baudrate: 9600 COMM2_bitsperchar: 8 COMM2_autorts: off COMM2_autocts: off COMM2_stopbits: 1 COMM2_parity: none GPRS_apn: movistar.es GPRS_login: MOVISTAR GPRS_password: MOVISTAR GPRS_apn2: airtelnet.es GPRS_login2: vodafone GPRS_password2: vodafone GPRS_timeout: 0 MTX_PIN: 0000 MTX_mode: none MTX_model: 199802407 MTX_portAux: modbusmaster MTX_TPProtocol: ntp MTX_TPServer: ntp.roa.es MTX_TPServer2: es.pool.ntp.org MTX_ping: 35 MTX_pingIP: 8.8.8.8 MTX_rssiLevel: 10 SMS_allPhones: on SMS_sendIP: on SMS_ATEnabled: on SMS_ATResponse: on FIREWALL_enabled: off LOGGER_enabled: on LOGGER_mode: mqtt LOGGER_mqttTopic: /LOGGER LOGGER_registerSize: 300 LOGGER_numRegistersFlash: 1500 MODBUS_address: 1 MODBUS_start: 20 MODBUS_numwords: 4 MODBUS_period: 900 MODBUS_readCommand: 3 DUALSIM_select: dual DUALSIM_mode: ip DUALSIM_timeout: 120 MQTT_enabled: on MQTT_server: tcp://test.mosquitto.org:1883 MQTT_id: [IMEI] MQTT_login: MQTT_password: MQTT_attopic1: [IMEI]/AT MQTT_atrtopic: [IMEI]/ATR MQTT_qos: 1 MQTT_keepalive: 60 |
Serial port baud rate Number of bits No flow control No flow control 1 stop bit No parity APN GPRS from your network operator GPRS Login GPRS Password GSM operator GPRS APN. Secondary SIM GSM operator GPRS login. Secondary SIM GSM operator GPRS password. Secondary SIM Modem is always GPRS connected SIM Card PIN MTX-Tunnel mode MTX modem model AUXILIAR COM port used as master modbus Time synch. protocol Time server Backup time server Ping every 35 minutes without comms IP address to ping We activate the coverage LED All phone numbers are authorized IP sent to phone which called or “on” SM Remote AT commands by SMS enabled Modem response to AT command with SMS Any IP will be able to connect to the modem We enable the MTX Logger, to store the records Shipping mode by MQTT Sending topic to MQTT broker to send counter data Register size Maximum number of records in MTX ModBus addresses of devices to be read Initial addresses of each device Number of records read from each device Frequency of readings in seconds Read command DUAL SIM mode activated with external initial SIM SIM change mode Timeout for SIM change in case of problems MQTT service enabled Broker IP/DNS specified, including identifying port Identifier Username Password MQTT topic to send AT commands Topic to send replies to commands to QoS established Connection keep alive (60 seconds) |
Detalles:
- En este ejemplo se utiliza un módem usando el puerto RS485, pero podría usarse el puerto RS232 sin problemas (para usar el puerto RS232 debería introducirse el parámetro MTX_invertedCom: on).
- El resumen de este ejemplo es el siguiente: el módem va leyendo periódicamente, cada 15 minutos, una serie de registros ModBus del PLC y los va enviando mediante un objeto JSON a un bróker MQTT (al topic especificado en el parámetro LOGGER_mqttTopic). En caso de no poder enviar el registro (por no haber cobertura en ese momento o estar el servidor caído) almacena los datos en memoria para enviarlos posteriormente. Mediante comandos MQTT también es posible conectarse al equipo directamente y consultar/cambiar en tiempo real los registros del PLC (para ello buscar en este manual los comandos AT^MTXTunnel=getmodbus y AT^MTXTUNNEL=setmodbus)
- El objeto JSON enviado al broker MQTT está codificado de la siguiente manera, a modo de ejemplo: {«IMEI»:353234028103206,»P»:»ID00001″,»TYPE»:»MODB»,»A»:1,»TS»:»20/08/12 08:31:44″,»ST»:20,»V1″:23,»V2″:275,»V3″:274,»V4″:32765}
- El módem tiene configurado DUAL SIM (DUALSIM_mode: dual). Esto hará que el módem arranque usando la tarjeta SIM principal, que en el caso del módem MTX-IOT-S [4-N] es la tarjeta SIM externa. En caso de que la cobertura se pierda y no sea posible realizar el registro en la red del operador durante 60 segundos (DUALSIM_timeout), el módem cambiará a la tarjeta SIM secundaria.