¿Buscas alguna otra cosa?
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