¿Buscas alguna otra cosa?

Tunnel – Lectura y envío periódico a un servidor web de los registros de 5 contadores eléctricos con protocolo Modbus RTU y mapa de memoria de registros distintos.

Detalles del escenario:

  • Disponemos de 5 contadores eléctricos con protocolo modbus rtu. Estos contadores disponen en su memoria interna de una serie de variables/registros (por ejemplo, consumo acumulado y consumo medio) las cuales deben leerse y enviarse periódicamente a un servidor web
  • Por ello, el MTX-Tunnel debe interrogar periódicamente, cada 15 minutos, por un puerto serie, a los 5 contadores para leer dichos registros. Los registros a leer son diferentes para cada contador:
    Contador 1: registros 20 a 21 y registros 100 a 105
    Contador 2 y 3: registros 30 a 35
    Contador 4 y 5: registros 40 a 60
    Los contadores 1, 2 y 3 usarán el comando de lectura modbus 0x03 (el más habitual), los
    contadores 4 y 5 usarán el comando de lectura modbus 0x04
  • El MTX-Tunnel debe enviar tras cada lectura el valor de los registros a un servidor web vía HTTP GET usando un objeto JSON, pero debe ser capaz, en caso de fallo de comunicaciones 3G, de almacenar en memoria flash hasta 1500 lecturas que enviará cuando se restauren las comunicaciones. Para cada contador enviará una trama JSON, donde se indica con un identificador (la dirección modbus) el contador leído

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

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_timeout: 0
MTX_PIN: 0000
MTX_mode: none
MTX_model: MTX-4G-JAVA-IOT-STD-N
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
SMS_allPhones: on
SMS_sendIP: on
SMS_sendIP: on
SMS_ATEnabled: on
SMS_ATResponse: on
FIREWALL_enabled: off
TELNET_enabled: on
TELNET_login: user
TELNET_password: 1234
TELNET_port: 20023
LOGGER_enabled: on
LOGGER_password: ID00001
LOGGER_server: www.miservidorWeb.com/json.asp?data=
LOGGER_registerSize: 300
LOGGER_numRegistersFlash: 1500
LOGGER_httpMode: jsonget
MODBUS_address: 1;1;2;3;4;5
MODBUS_start: 20;100;30;30;40;40
MODBUS_numwords: 2;6;6;6;21;21
MODBUS_period: 900
MODBUS_readCommand: 3;3;3;3;4;4
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
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
All phone numbers are authorized
IP sent to phone which called or “on” SM
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
Telnet is activated
Telnet login
Telnet password
Telnet port 20023
We enable the MTX Logger, to store the records
Password field can be used as ID device
Server URL, will receive JSON data
Register size
Maximum number of records in MTX
HTTP GET (JSON) mode
ModBus equipment address
ModBus register address to be read
Number of registers read
Timing -seconds- read is repeated
Reading command

Detalles:

  • El resumen de este ejemplo es el siguiente: el módem va leyendo periódicamente, cada 15 minutos los registros ModBus de cada contador y va enviando mediante un objeto JSON a un servidor web (a la url especificada en el parámetro LOGGER_server). En caso de no poder enviar el registro (por no haber cobertura gprs en ese momento o estar el servidor caído) almacena los datos en memoria para enviarlos posteriormente. Mediante Telnet 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)
  • Desde la versión MTX-Tunnel v7.18 es posible leer un mapa de memoria diferente para cada equipo, para ello fíjese en lo siguiente:
    MODBUS_address: 1;1;2;3;4;5
    Aquí se ha especificado la dirección de cada contador separado por ; (punto y coma). Note que el contador 1 se ha duplicado. La razón es que es tratado como 2 dispositivos diferentes (se harán dos lecturas del mismo) porque deben de leerse 2 rangos de registros diferentes, del 20-21 y 100-105.
    MODBUS_start: 20;100;30;30;40;40
    Para cada contador, se indica el registro inicial de lectura. Fíjese que como en el caso anterior, para el contador 1, que es tratado como dos contadores diferentes, y se indica el registro inicial de cada rango de registros a leer (20 y 100).
    MODBUS_numwords: 2;6;6;6;21;21
    Para cada contador, se indica cuantos registros se van a leer. Análogamente, para el contador 1 se indica la cantidad para el primer rango de registros a leer (2 registros) y para el segundo (6 registros).
  • El objeto JSON enviado a la URL especificada en LOGGER_server está codificado de la siguiente manera, a modo de ejemplo:
{“IMEI”:353234028103206,”P”:”ID00001”,”TYPE”:”MODB”,”A”:1,”TS”:”20/04/13 08:31:44”,”ST”:20, “V1”:23,”V2”:275}

Es decir, el servidor web recibe un objeto JSON con el IMEI (IMEI) del módem, un campo password (P) que también puede utilizarse para identificar el equipo (si no se quiere usar el IMEI), la dirección modbus del contador (A) que servirá para distinguir el contador al que se refiere la lectura, el time stamp (TS) de cuando se han leído los datos modbus de cada contador, y V1,V2 con cada uno de los registros leídos.
Fíjese que a partir de la versión MTX-Tunnel 7.18 se introduce en el JSON el campo ST (start) en él se devuelve el número de registro inicial de lectura. Con ello podrá distinguir, en caso de hacer 2 lecturas de un mismo dispositivo (por tener rangos diferentes de registros a leer) de qué registros se tratan.
Puede conocer rápidamente el número de registro leído. Si usted quiere saber a qué registro pertenece Vx, NumReg= ST+x-1. Por ejemplo V2, el caso del JSON anterior: numReg=20+2-1= 21.

  • Al final del manual encontrará cómo configurar el microswitch interno para activar el bus
    RS485 de este modelo de módem