¿Buscas alguna otra cosa?

Titan – NA8: Cómo implementar una pasarela Modbus RTUTCP-SNMP

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 dorar dotar de conectividad SNMP(v2) a cualquier dispositivo Modbus RTU o Modbus TCP. Podrá realizar operaciones SET, GET así como enviar TRAPS ante cambios de valores en registros y otros estados.

En esta nota de aplicación se describirá, mediante un ejemplo, cómo configurar el router Titan para dotar de capacidad SNMP a un dispositivo Modbus RTU.

Descripción del ejemplo

Se dispone de un equipo que dispone de un protocolo de comunicación Modbus RTU a través un puerto RS232 a 9600,8,N,1. El dispositivo modbus tiene como dirección modbus la @1 y consta de 33 registros modbus, de lectura/escritura, que van desde los registros 0 al registro 32, ambos incluidos.

Por otro lado, disponemos de un servidor SNMPv2. Desde este servidor SNMP se necesita poder enviar en cualquier momento un comando GET SNMP para leer cualquier de los registros Modbus RTU del dispositivo. Así mismo también se debe poder usar el comando SET SNMP para cambiar el valor de cualquier registro modbus del dispositivo. Por último, se necesita que cuando el registro modbus 2 ó 10 cambien de estado (representan registros de alarmas) se envíe un TRAP al servidor SNMP para indicar dicha situación.

Para ello se usará un router MTX-Router-Titan-3G-mini, que permite realizar la conversión de protocolos SNMP – Modbus.

Configuración SNMP

Lo primero que haremos es la configuración de la sección SNMP del router Titan. Para ello accedemos al menú “Other > SNMP” donde habilitaremos el servicio SNMP así como especificaremos el puerto UDP y community para los comandos SET y GET SNMP y lo mismo para el envío de TRAPS, en donde adicionalmente tendremos que especificar la dirección IP de envío.

En esta misma pantalla se muestra un enlace con el texto “Click here for download MIB”. Si hace click sobre él se descargará la base de datos MIB con información sobre los OIDs, TRAPS…

Configurar el puerto serie COM1 del router Titan

Vamos a utilizar el puerto COM1 del router Titan para el acceso al dispositivo modbus que tiene un puerto RS232. Para ello tendremos que acceder a la siguiente pantalla de configuración: “Serial Settings > Serial Port1-232/485” y configurar la pantalla como se muestra a continuación.

Es decir, configuramos el puerto COM1 del Titan en modo RS232 y con la misma configuración de puerto que tiene el dispositivo Modbus a interrogar (9600,8,n,1). Seleccionamos también el modo “Function: nothing or Used by External Device” ya que precisamente este puerto será usado por el dispositivo externo Modbus.

Configurar el modbus del router Titan

Esta configuración se realiza desde el menú “External Devices > Modbus Devices”. En la zona principal de la pantalla únicamente deberemos activar ”Enabled” así como indicar que se va a usar, para la lectura Modbus, el puerto serie COM1 que hemos configurado en la sección anterior.

La pasarela Modbus-SNMP se configura realmente en la zona inferior de esta pantalla. Activaremos “Enabled”, indicaremos la dirección modbus del dispositivo a interrogar (en el presente ejemplo la @1) , después la dirección del primer registro a interrogar (en este ejemplo la @0), el número de registros a interrogar (33 en este ejemplo) y los registros para los que queremos que el Router Titan, en caso de cambiar de estado, no envíe un TRAP de notificación (en este caso los registros 2 y 10 (registros separados por comas y sin espacios). Los registros configurados serán leídos por el router Titan cada 5 segundos, utilizando para ello el comando modbus 0x03. Únicamente leerá registros de tipo word.

Nótese que el máximo número de registros a mapear entre modbus RTU y SNMP son 500. Si da un vistazo a la base de datos de los MIBs encontrará la relación entre cada uno de los 500 registros modbus y los OIDs y TRAPS. No es necesario leer 500 registros de forma consecutiva. Por ejemplo, si sólo le interesara leer los registros del 1 al 5 y del 100 al 200, podría especificar en el campo “Number Words” los intervalos 1-5;100-200.

Una vez configurado el equipo basta con realizar un reboot (reset) y tras arrancar, todo debe funcionar correctamente.

Probar la configuración

Aunque podemos probar directamente la configuración creada conectando directamente con los equipos reales, si surgiese algún tipo de problema puede resultar interesante realizar pruebas con emuladores con el fin de acotar los posibles problemas. Eso es lo que se realizará en esta sección. Lo primero que haremos será conectar el puerto serie del Router Titan con el puerto serie RS232 de nuestro PC.

Como dispositivo modbus a interrogar utilizaremos un software de PC llamada “Modbus Slave”. Crearemos un dispositivo slave con dirección Modbus @1, Función de lectura 03, dirección inicial de registro 0 y número de registros 33.

Configuraremos el puerto serie del PC con la misma velocidad que el dispositivo real (9600,8,n,1).

Entonces, tras pulsar OK y establecer la conexión, iremos al menú del programa “Displa > Communication” para activar el visor de las tramas de comunicación entre el router Titan y el emulador.

Si todo es correcto, veremos tramas RX, que son las preguntas que envía el router Titan al emulador, y las respuestas TX, que son las respuestas que envía el emulador al router Titán.

Si todo lo anterior es correcto (es decir, la comunicación y lectura por el puerto serie de los registros modbus del emulador funcionan correctamente) podemos pasar a la sección SNMP. Para ello utilizaremos algún software MIB Browser. Para este ejemplo se ha usado el software gratuito “ManageEngine MibBrowser5”. Arrancamos dicho software y configuramos la dirección local de red del Router Titan (por defecto tiene la 192.168.1.2) el puerto UDP 161 y en los campos community especificamos “public”.

A continuación copiaremos el fichero MIB del Titan en la carpeta “mibs”, ubicada donde hayamos instalado el software “ManageEngina MibBrowser” (normalmente “C:Archivos de programa (x86)Manage EngineMibBrowser Free Toolmibs”. El fichero MIB se puede descargar desde el propio Router Titán, tal y como se comentó en el punto 3 de esta nota de aplicación. Una vez copiado el MIB en el directorio ya podemos cargarlo desde el menú “File > Load MIB”. Escogeremos el fichero TITAN-MIB.

Veremos como ya aparecerá en el menú de la izquierda el dispositivo TITAN-MIB y podemos ver los diferentes OIDs, en concreto nos interesan los OIDs modbus0…, modbus32. Ahora, por último, debemos especificar que vamos a usar la versión SNMP v2c.

Hecho ya todo lo anterior, ahora sí estamos en disposición de realizar tanto lecturas como escrituras SNMP y observar cómo afectan éstas sobre los registros Modbus de nuestro emulador. Por ejemplo, si con el botón derecho del ratón realizamos un “GET” en el OID modbus3, veremos como resultado de la lectura (derecha de la pantalla) un valor 3, que corresponde al valor 3 que tiene el registro modbus3 de nuestro emulador.

Para probar un comando SET SNMP, pues por ejemplo aplicando en valor 33 en el mismo OID, escribiremos dicho valor 33 en el campo “Set Value” y con el botón derecho del ratón ejecutamos el comando SET. Inmediatamente deberíamos ver reflejado el cambio en el registro modbus 3 de nuestro emulador:

Ahora nos falta probar los TRAPS. Si recordamos, en el punto 4 de esta nota de aplicación, indicamos que debería enviarse un TRAP en caso de que hubiera un cambio en los registro modbus 2 y 10. Para ver los traps básicamente basta con ir al menú “View > Trap Viewer”, especificar los campos “Port 162” y Community “public” y pulsar el botón “Start”.

Si ahora sobre el registro modbus 2 de nuestro emulador modbus hacemos doble click y cambiamos el valor de registro por, por ejemplo, un valor 20, veremos que en nuestro visor de TRAPs aparece a los pocos segundos un nuevo TRAP, que indica que se ha producir un cambio en dicho registro:

FAQs

  • En la presente nota de aplicación se ha indicado cómo dar conectividad SNMP a cualquier dispositivo Modbus RTU, pero, ¿sería posible hacer lo mismo con un dispositivo Modus TCP?
    Sí. Bastaría con indicar en el campo dirección modbus su dirección IP. Es decir, en el caso del presente ejemplo bastaría con substituir el “1” del campo de dirección modbus rtu por el valor “192.168.1.100:502” si la dirección IP del equipo modbus a interrogar fuera la 192.168.1.100 y el puerto TCP de escucha el 502. Es decir, como indica la siguiente figura.

  • En este ejemplo se envía un TRAP cuando uno de los registros configurados cambia de valor. Eso es útil para registros modbus que indican que hay algún tipo de alarma. ¿Pero sería posible enviar un TRAP cuando un determinado registro, por ejemplo, superase un cierto valor?
    Sí, aunque la configuración es algo más compleja y hay que realizarla desde la sección “Titan Scripts”. Por ejemplo, vamos a suponer que queremos lo siguiente. Queremos que:
    1. Cuando el registro modbus 10 (del dispositivo modbus RTU con dirección @1) queremos que el router Titan envíe un TRAP ([.1.3.6.1.4.1.45711.12.1.1) con la severity “1”
    2. Cuando la suma de los registros modbus 10 y 11 (del dispositivo modbus RTU con dirección @1) sea 50, queremos que el router Titan envíe un TRAP [.1.3.6.1.4.1.45711.14.1.1) on la severity “2”
    3. Cuando el registro modbus 12 (del dispositivo modbus RTU con dirección @1) sea mayor de 50, queremos que el router Titan envía un SMS al número de teléfono +34123456 con el texto “Alarma temperatura”. (Obviamente para esta tercera opción el router Titán tiene que tener insertada una tarjeta SIM)

Las tres opciones anteriores se pueden realizar desde la sección “Other > Titan Scripts”, usando los comandos ST (Send Trap) y SS (Send SMS).

  • En este ejemplo se leen los 33 registros modbus consecutivos. ¿Cómo se haría en el caso de que quisiéramos leer, por ejemplo, los registros 200, 210 y los intervalos 400-410, 430-600?
    Es posible hacerlo. El registro “Number Words” indica por defecto el número de registros que se pretenden leer desde el campo “Start”, pero permite introducir intervalos. Para leer los registros 200, 210 y los intervalos 400-410 y 430-600 configuraríamos el Titan como indica la siguiente figura:

Ahí indicamos en el campo “Start” el registro 200 (e Offset) e indicaríamos el registro “0” (200+0=200), el registro “10” (200+10=210), y los intervalos “200-210” y “230-400”. Los diferentes registros e intervalos están separados por ; (punto y coma).

  • Necesito dar conectividad SNMP a un PLC Modbus TCP tal y como se ha indicado en este manual, pero no deseo que sea el router Titan quien envíe los TRAPS. Quiero que sea el PLC quien envíe TRAPS y SMS a voluntad. ¿Es posible?
    Es posible. El router Titan funciona como Modbus TCP master para interrogar de forma periódica al PLC consultando los registros modbus, pero también puede funcionar, de forma simultánea, como Modbus TCP Slave. Cuando el router Titan trabaja en modo TCP Slave permite que se le manden AT commands a través de Modbus. Con dichos comandos AT a través de modbus es posible enviar SMS, EMAILs, TRAPS snmp, conmutar relés del Titán, consultar coberturas…
    Para consultar cómo enviar comandos AT a través de Modbus TCP, se recomienda la lectura de la nota de aplicación “AN10-Sending SMSs, EMAILs, TRAPs snmp using Modbus TCP)”.

Para cualquier consulta contacte con nosotros en iotsupport@mtxm2m.com.