¿Buscas alguna otra cosa?
Detalles del escenario:
- Disponemos de un PLC Modbus RTU. Este PLC dispone en su memoria interna de una serie de variables/registros (por ejemplo, una temperatura y 3 contadores…) 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, al PLC para leer dichos registros. Los registros a leer son, para la temperatura el registro nº20, y los contadores están en los registros 21,22 y 23 respectivamente
- 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 2G/3G/4G, de almacenar en memoria flash hasta 1500 lecturas que enviará cuando se restauren las comunicaciones
- Debe poderse establecer en cualquier momento una pasarela IP-RS485 para poder acceder directamente a los registros Modbus del PLC. Así mismo esta misma pasarela servirá para actualizar el software del PLC cuando sea necesario
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: server 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 MTX_rssiLevel: 10 MTX_serverTimeout: 300 TCP_port: 0 TCP_port2: 20011 SMS_allPhones: 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: getjson MODBUS_address: 1 MODBUS_start: 20 MODBUS_numwords: 4 MODBUS_readCommand: 3 MODBUS_period: 900 |
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 Gateway created 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 Coverage LED activated Socket closes if there’s no traffic in 300 secs. Disabled gateway Secondary serial port gateway active in 20011 SMS with commands can be sent from any phone Modem replies with its IP to a missed call or SMS 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 We enable MTX logger to store the records Field to identify the origin of the frames URL to send the JSON with data The size of internal registry of MTX Maximum number of records in MTX Sending mode HTTP GET (JSON) Modbus address to be read Initial modbus register address to be read N. of records read from each device Reading command Period in seconds within which a reading is done |
Detalles:
- Este escenario sólo es recomendable usarlo a partir del firmware MTX-Tunnelv 9.18
- El funcionamiento es el que sigue: el módem MTX está de forma autónoma leyendo los registros modbus del PLC cada 900 segundos a través del puerto RS485. Dichos registros, tras ser leídos, son almacenados en la memoria interna del módem MTX. En caso de haber cobertura 2G/3G/4G el módem MTX enviará los registros al servidor Web configurado, en caso contrario, serán enviados posteriormente cuando vuelva a haber cobertura 2G/3G/4G
- Desde un PC de control se puede realizar una lectura en tiempo real de los registros modbus del PLC o bien una actualización del software del PLC. Para ello se ha configurado una pasarela transparente IP-RS485 a través del puerto TCP20011. Cuando se establece una conexión a dicho puerto TCP20011 (y por tanto la pasarela IP-RS485 está establecida), el proceso interno del módem MTX encargado de la lectura periódica (cada 900 segundos) de los registros Modbus del PLC se suspende temporalmente (para evitar colisiones en el bus RS485). De esa manera ya es posible acceder directamente al puerto RS485 del PLC para la lectura de registros en tiempo real del PLC o bien para actualizar el software del mismo. Una vez cerrada la pasarela IP-RS485 establecida en el puerto TCP 20011, se reanuda el proceso interno del módem MTX que permite la lectura autónoma de los registros del PLC cada 900 segundos
- Con el parámetro TCP_port2: 20011 está abriendo un socket server en el puerto TCP 20011 para poder establecer una pasarela IP-Serie sobre el puerto serie secundario del módem MTX, en este caso el puerto RS485. El parámetro TCP_port: 0 hace que no se configure ningún socket server asociado al puerto serie principal, ya que no lo necesitamos. Si va a utilizar este ejemplo con una versión de firmware anterior a 9.17, el valor “0” no está permitido
- Para este ejemplo es altamente recomendable establecer un valor en el parámetro de
configuración MTX_serverTimeout. En caso contrario, si se establece una pasarela en el
puerto TCP 20011 y al finalizar ésta no se cierra bien la conexión (por ejemplo, debido a una desconexión inesperada por falta de alimentación del PC de Control, una extracción del cable Ethernet, …) el módem no retomará el proceso de lectura autónoma cada 900 segundos. El timeout establecido en el parámetro MTX_serverTimeout a 300 hace que, en el caso de un fallo a la hora de desconectar la pasarela en el puerto TCP20011, al cabo de 300 segundos (5 minutos) sin tráfico, el módem cerrará automáticamente la conexión en el puerto TCP20011 y el proceso de lectura autónoma será reanudado - Si desde el PC de control quiere realizar una pasarela Modbus TCP a Modbus RTU (en lugar de la pasarela Modbus RTU sobre TCP configurada en este ejemplo), puede añadir el parámetro MTX_gatewayModbus: on
- El objeto JSON enviado a la URL especificada en LOGGER_server está codificado así:
{“IMEI”:353234028103206,”P”:”ID00001”,”TYPE”:”MODB”,”A”:1,”TS”:”20/08/12 08:31:44”,”ST”:20,”V1”:23,”V2”:275,”V3”:274,”V4”:32765}
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 equipo (A), el time stamp (TS) de cuando se han leído los datos modbus, la dirección inicial leída (ST) y V1,V2… con cada una de las variables leídas
- Recuerde que el modelo de módem utilizado en este ejemplo dispone de 2 puertos serie. El puerto principal (RS232) y el puerto secundario (RS232 ó RS485) utilizado en este ejemplo. Para configurar el puerto secundario como RS485 debe poner a “ON” el microswitch 2, tal y como se indica en el Anexo A del presente manual