¿Buscas alguna otra cosa?
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 ejecutar AT commands a través de Modbus TCP o RTU. Desde un dispositivo que pueda actuar como Modbus TCP Master o Modbus RTU Master, es posible mandar comandos, De esa manera, desde un dispositivo Modbus TCP Master o Modbus RTU Master, es posible tanto leer como recibir SMS, enviar EMAILS, enviar TRAPS snmp, consultar la hora real, la cobertura GSM, la posición GPS…
Descripción del ejemplo
Para este ejemplo vamos a suponer que disponemos de un dispositivo Modbus TCP Master (un PLC) y se necesita poder enviar/recibir SMSs y enviar traps SNMP a través de modbus TCP. Adicionalmente disponemos de un dispositivo Modbus RTU Master (otro PLC) que necesita realizar las mismas operaciones pero mediante Modbus RTU usando un bus RS485.
(Imagen: Envío / Recepción de mensajes SMS; dispositivo MODBUS TCP (IP) con un puerto Ethernet)
Configuración de modbus slave en el router Titan
Lo primero que haremos es la configuración del Titan para hacer que se comporte, como un Slave modbus TCP. Para ello basta con hacer click en el menú “Other > Modbus TCP Slave” y seleccionar la casilla “Enabled” y especificar el puerto TCP (por defecto el TCP 502). Para que también se comporte como un Slave Modbus RTU activamos la casilla Enabled correspondiente y seleccionamos el puerto serie que se desea utilizar así como la dirección Modbus RTU que se desea que tenga el Titan como Slave.
Además de activar el servicio Modbus RTU Slave, debemos configurar el puerto serie seleccionado. En este caso el puerto serie COM1. Para ello vamos al menú “Serial Settings > Serial Port1 -232/485” y lo configuramos de la manera apropiada.
En caso de utilizar el COM1 como RS485, además de selecciona la casilla “Mode RS485”, recordemos que debe configurarse los microswitchs 3 y 4 a “on”.
Es interesante dar un vistazo a la zona baja de la pantalla, pues aparece resumido el mapa de registros modbus TCP del router Titan. Una vez configurado el router, lo reiniciamos para que tome la nueva configuración.
Enviando un SMS vía modbus TCP o RTU
Ahora lo siguiente es enviar un SMS. Como dijimos anteriormente es posible hacerlo desde cualquier equipo o simulador Modbus TCP ó RTU Master.
Vamos a enviar el mensaje SMS con texto “ALARMA” al número de teléfono 681319891. El comando AT para enviar un SMS desde el router Titán sería:
AT^MTXTUNNEL=SMS,681319891,ALARMA
Lo que en modo ASCII sería, en 33 caracteres:
100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 |
A | T | ^ | M | T | X | T | U | N | N | E | L | = | S | M | S |
65 | 84 | 94 | 77 | 84 | 88 | 84 | 85 | 78 | 78 | 69 | 76 | 61 | 83 | 77 | 83 |
116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 |
, | 6 | 8 | 1 | 3 | 1 | 9 | 8 | 9 | 1 | , | A | L | A | R | M |
44 | 54 | 56 | 49 | 51 | 49 | 57 | 56 | 57 | 49 | 44 | 65 | 76 | 65 | 82 | 77 |
132 |
A |
65 |
Escribimos todo ese comando (los 33 registros) a partir del registro 100 del router Titan, es decir, en la zona de memoria (o buzón) donde hay que volcar dicho comando AT para que sea ejecutado.
Una vez escritos dichos registros modbus, hay que ejecutar el comando AT. Para ello, hay que escribir en el registro Modbus 98 un valor igual a la longitud del comando AT a ejecutar, en este caso 33.
En cuanto escribamos el valor 33 en el registro 98 el comando AT se ejecutará. Debemos recibir el SMS en cuestión de segundos. Para comprobar la respuesta a dicho comando AT basta con leer el registro 99. En dicho registro tendremos la longitud de la respuesta. En nuestro caso leemos 21. Para obtener la respuesta, basta con leer 21 registros desde la posición 500, que es donde se almacena la respuesta a la ejecución de un comando AT. Si leemos los registros obtenemos:
500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 |
[Cr] | [Lf] | [Cr] | [Lf] | + | C | M | G | S | : |
13 | 10 | 13 | 10 | 43 | 67 | 77 | 71 | 83 | 58 |
510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 |
9 | 4 | [Cr] | [Lf] | [Cr] | [Lf] | O | K | [Cr] | [Lf] | |
32 | 57 | 52 | 13 | 10 | 13 | 10 | 79 | 75 | 13 | 10 |
Bastará con buscar un OK cualquier respuesta AT para saber que la ejecución de un comando AT fue correcta.
Recibiendo un SMS vía Modbus TCP o RTU
Recibir un SMS a través de Modbus TCP ó RTU también es un proceso sencillo. Tanto el PLC que actúa como master Modbus TCP como el que actúa como Modbus RTU master deben hacer un polling al registro 1000 del router Titan de forma periódica. Si el registro 1000 indica un “1” es porque hay un SMS pendiente de leer.
Lo siguiente será el leer el registro 1001, donde se indica la longitud del teléfono que ha enviado el SMS. Si nos interesa conocer el nº de teléfono que envió el SMS bastará con leerlo desde las posiciones 1002 a 1019.
Para leer el cuerpo del mensaje SMS lo primero es leer la longitud del mismo, que estará contenido en el registro 1020. Con dicha longitud ya podremos leer el texto del mensaje, que está ubicado en las posiciones 1021 a 1180.
Una vez leído el SMS, debemos escribir un “0” en el registro 1000. Cuando dicho registro valga “1” de nuevo, indicará que un nuevo SMS ha llegado.
Enviando un TRAP vía Modbus TCP o RTU
El procedimiento para enviar un TRAP snmp es exactamente igual que el envío de un SMS, pero en lugar de ejecutar un comando como:
AT^MTXTUNNEL=SMS,681319891,ALARMA
Tendremos que ejecutar un comando como se realizó anteriormente (transformandolo a ASCII), pero concebido para ello, como por ejemplo:
AT^MTXTUNNEL=TRAP,.1.3.6.1.4.1.45711.1.1.11.1.1;myMessage;5
Es decir, basta con especificar el OID (en este ejemplo “.1.3.6.1.4.1.45711.1.1.11.1.1”), un campo para el mensaje de texto y un campo para la Severity (en este ejemplo “5”).
100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 |
A | T | ^ | M | T | X | T | U | N | N | E | L | = | T | R | A |
65 | 84 | 94 | 77 | 84 | 88 | 84 | 85 | 78 | 78 | 69 | 76 | 61 | 84 | 82 | 65 |
116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 |
P | , | . | 1 | . | 3 | . | 6 | . | 1 | . | 4 | . | 1 | . | 4 |
80 | 44 | 46 | 49 | 46 | 51 | 46 | 54 | 46 | 49 | 46 | 52 | 46 | 49 | 46 | 52 |
132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 |
5 | 7 | 1 | 1 | . | 1 | . | 1 | . | 1 | 1 | . | 1 | . | 1 | ; |
53 | 55 | 49 | 49 | 46 | 49 | 46 | 49 | 46 | 49 | 49 | 46 | 49 | 46 | 49 | 59 |
148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 |
m | y | M | e | s | s | a | g | e | ; | 5 |
109 | 121 | 77 | 101 | 115 | 115 | 97 | 103 | 101 | 59 | 53 |
La respuesta al comando debe ser tratada igual que en el caso del SMS que se ha tratado en esta nota de aplicación. De encontrarse un OK en la respuesta implica una ejecución correcta.
¿Y a qué IP se envía el TRAP?
El TRAP se envía a la dirección IP:puerto especificados en la configuración “External Devices > Modbus RTU/TCP”.
Enviando un email vía Modbus TCP o RTU
El procedimiento para enviar un email es exactamente igual que el envío de un SMS o de un TRAP, pero utilizando un comando AT como:
AT^MTXTUNNEL=EMAIL,jgallego@matrix.es,ALARMA
En la versión actual de firmware del Titan (v3.07) únicamente puede enviarse un EMAIL especificando la dirección destino y el asunto del email. Recuerde que antes de enviar ningún mensaje debe configurar el rotuer Titan con los parámetros adecuados al servidos SMTP a utilizar, en la sección “Other > Email Configuration”.
Para cualquier consulta contacte con nosotros en iotsupport@mtxm2m.com.