¿Buscas alguna otra cosa?

Titan – NA27: Router Titan para lectura de modbus con envíos a la nube

Detalles del escenario

Los router Titan disponen de todas las funcionalidades típicas de un router 2G/3G/4G pero además cuentan con una serie de prestaciones adicionales que lo convierten en uno de los routers con más prestaciones del mercado.

Una de las prestaciones adicionales es la capacidad de interrogar de forma autónoma a dispositivos Modbus RTU o TCP, con el posterior envío de los datos a un servidor WEB, FTP o MQTT.

Como siempre, se ilustrará esta capacidad con un ejemplo sencillo.

Descripción del ejemplo

En este ejemplo se va a configurar un router Titan para recoger, almacenar y enviar por HTTP los registros Modbus de 2 PLCs. Dichas lecturas se realizarán cada 10 minutos.

Del PLC1 deben leerse los registros Modbus:

1;10;11;12;55;56;69;70;72;73;74;75;76;77;78;79;80;100;101;102;103;104;105;106;107;108;109;120;121;122;123;124;130;131;132;133;152;153;154;160;161;162;163;164;165;166;170

Del PLC2 deben leerse los registros:

10;11;12;13;14

Es decir, del PLC1 se necesitan obtener un mapa de registros variado, no siempre registros consecutivos. El PLC2 es más sencillo y únicamente necesitamos 5 registros consecutivos

Los PLCs son dispositivos RS485, por lo que se utilizará Modbus RTU, pero el escenario podría ser perféctamente válido para equipos Modbus TCP (con Ethernet) o una mezcla de ambos (modbus TCP y Modbus RTU).

Configuración del puerto del router donde se conectarán los modbus

Imaginemos que los PLCs, que disponen de puerto RS485, tienen una configuración de puerto serie: 9600,8,N,1 Pues la primera tarea a realizar es configurar el puerto serie COM1 del router TITAN, pues este puerto puede configurarse como puerto RS232 o puerto RS485. Configuraremos el puerto COM1 tal y como se muestra en la siguiente figura.

No debemos olvidar que para activar el BUS RS485 del MTX-Router-Titan-3G-mini deben activarse los microswitches que se indican en el manual de usuario. (nº 3 y 4 a “on” para RS485).

Configuración del Titan para la lectura de dispositivos modbus

Hacemos click en el link: “External Devices > Modbus Devices” y lo configuramos la pantalla como se muestra a continuación:

Es decir, del PLC 2 queremos leer los registros 10,11,12,13,14. Pues simplemente es necesario indicar en el campo “Start” el registro 10 y en el “Number Words” 5 (pues queremos leer 5 registros, del 10 al 14). El PLC1 es más complejo, ya que disponemos de un mapa de registro no consecutivo. Por ello, los diferentes bloques de registros a leer los pondemos separados por “;” (punto y coma). Es decir, si queremos leer los registros:

1;10;11;12;55;56;69;70;72;73;74;75;76;77;78;79;80;100;101;102;103;104;105;106;107;108;109;120;121;122;123;124;130;131;132;133;152;153;154;160;161;162;163;164;165;166;170

Tendremos que poner en el campo Start (el registro inicial de cada bloque)

1;10;55;69;72;100;120;130;152;160;170

Y en el campo “Number Words” (el nº de registros a leer de cada bloque)

1;3;2;2;9;10;5;4;3;7;1

Consideraciones

Tras la configuración del router Titan es necesario realizar un reset para coger la nueva configuración y empiecen las lecturas y envíos.

Cada vez que el router Titan envía una medida a un servidor HTTP lo hace mediante un objeto JSON del siguiente tipo.

Ejemplo JSON PLC2:

{TYPE:MODB,ID:2,TS:17/06/2017 17:01:05,IMEI:357044060009633,P:12345678,A:2,ST:10,N:5,V:[10,11,12,0,0]}

Ejemplo JSON PLC1:

{TYPE:MODB,ID:1,TS:17/06/2017 17:01:04,IMEI:357044060009633,P:12345678,A:1,STX:[1,10,55,69,72,100,120,130,152,160,170],NX:[1,3,2,2,9,10,5,4,3,7,1], PX:[0,1,4,6,8,17,27,32,36,39,46],V:[1,10,11,12,55,56,69,70,72,73,74,75,76,77,78,79,80,100,101,102,103,104,105,106,107,108,109,120,121,122,123,124,130,131,132,133,152,153,154,160,161,162,163,164,165,166,170]}

Donde:
TYPE: indica el tipo de dato (MODB = lectura modbus)
TS: indica que Timestamp (es decir, la hora de lectura de la medida)
IMEI: indica un identificador único para el módem
P: en caso de HTTP indicaría el campo ID configurado
ST: indica la dirección del primero registro modbus leído
STX: array que indica la dirección de los primeros registros modbus en caso de leer grupos de registros
N: indica el número de words leídos
NX: array que indica el número de words leídos en caso de leer grupos de registros
PX: array que indica la posición del registro inicial de cada bloque dentro de V
V: array con los datos leídos

Nótese que hay una diferencia significativa entre los datos enviados por PLC1 y PLC2. PLC1 dispone de grupos, por tanto el campo ST y N se substityen en el JSON por STX y NX , arrays donde están almacenados los registros iniciales y número de registtos de cada bloque. También aparece el registro PX que indica la posición inicial del grupo dentro del array V (realmente PX no es necesario, puesto que se puede calcular, pero se incluye para facilitar la operación de decodificación en el servidor.