General

Recursos

Infraestructura

Introducción

Para esta pasarela hemos creado nuestros propios conceptos, que no están inspirados en ningún producto en particular aunque si son el resultado de haber estudiado y utilizado múltiples sistemas existentes en el mercado.

Un elemento fundamental para el diseño de esta pasarela ha sido la utilización de un solo protocolo de comunicaciones que es soportado por prácticamente todos los fabricantes y para el que además existen todo tipo de pasarelas.

Este protocolo es el Modbus en su variante de transporte sobre TCP.

Un protocolo único

Hay que tener en cuenta que esta pasarela está diseñada para obtener todo tipo de datos de nuestras instalaciones pero no para participar en un bucle de control o regulación.

Es decir, si tenemos una instalación inmótica o domótica, nuestro objetivo será obtener datos de interés de esta instalación pero será el propio equipamiento que forma parte de la instalación el responsable de ejecutar los bucles de regulación o control.

Eso no significa que no podamos influenciar sobre estos blucles de regulación o control ya que además de leer datos desde la instalación también podremos escribirlos sobre ella.

Podríamos utilizar esta pasarela para facilitar la integración entre varios sistemas. Por ejemplo, imaginemos que un usuario sólo pueda activar determinados servicios de una ubicación (clima, complementos multimedia, alumbrado completo, etc.) cuando éste se haya identificado correctamente mediante un control de accesos y además tenga asignada esa ubicación para ese momento concreto según un calendario que forma parte de nuestro sistema de reservas.

Modbus

Éste es un protocolo que a pesar de tener mas de 30 años, cada vez es más utilizado. Es un protocolo clásico mono-maestro/multi-esclavo, el cual nos permite acceder a varios dispositivos de tipo modbus que se encuentran en un mismo bus. Cada comando que se envía tiene que indicar el identificador del dispositivo al que va dirigido. A su vez, cada comando va dirigido a uno de los cuatro bancos de memoria de los que puede estar compuesto el dispositivo. Para todos los bancos de memoria podremos enviar órdenes de lectura, y sólo para algunos, órdenes de escritura. También dependiendo del banco al que se dirijan las órdenes, los valores a los que se accederán serán de 1 bit o un registro de 16 bits.

Resumen de los bancos de memoria de un dispositivo modbus.

 Nombre de banco Lectura Escritura Rango de direcciones
 Almacenamiento
 COIL_STATUS           XX
 0x0000 : 0xFFFF 1 bit
 INPUT_STATUS X  0x0000 : 0xFFFF 1 bit
 HOLDING_REGISTER XX
 0x0000 : 0xFFFFregistro de 16 bits
 INPUT_REGISTER X  0x0000 : 0xFFFFregistro de 16 bits

Modbus TCP

Intencionadamente no se ha dicho nada referente a cual es el mecanismo de transporte necesario para enviar los comandos a un dispositivo Modbus, ya que sólo nos interesa el transporte más moderno que es el tipo ModbusTcp.

Normalmente a los dispositivos modbus con transporte tcp se les da el nombre de pasarelas. Este nombre no es del todo correcto, ya que aunque en ocasiones la función de ese dispositivo si que es la de hacer de pasarela entre las red tcp y un bus de tipo serie, en otras ocasiones no es así.

Veamos algunos ejemplos de estos tipos de dispositivos:
  • Entradas/salidas de tipo binario/analógico remotas.
  • Contadores de impulsos.
  • Analizadores de redes eléctricas.
  • Contadores de consumos eléctricos.
  • Contadores de agua.
  • Contadores de gas.
  • Variadores de frecuencia
  • Pasarelas de ModbusTCP a ModbusRTU/ModbusASCII
  • Pasarelas de Modbus a EIB (Sistema domótico KNX)
  • Pasarelas de Modbus a LONWORKS
  • Pasarelas de Modbus a BACNET
  • PLCs con soporte de Modbus esclavo.
  • HMI (Pantallas) con soporte de Modbus esclavo.
  • Pasarelas a varios tipos de centralitas de incendios.
  • Pasarelas a varios tipos de centralitas de seguridad.
  • Pasarelas a varios tipos de unidades de control de clima.
De las descritas anteriormente es muy habitual la pasarela de ModbusTCP a ModbusRTU, ya que hay mucho equipamiento antiguo basado en comunicaciones ModbusRTU.

A un equipamiento con soporte modbusTCP le llamaremos desde ahora una pasarela y accederemos a él mediante una dirección IP. Una vez accedamos a él podremos enviar comandos modbus que tendrán que ir dirigidos a un dispositivo del bus (como hemos indicado anteriormente en la descripción del protocolo).

Si estamos accediendo a un equipo que gestiona entradas/salidas remotas, este equipo solo tendrá un bus virtual en él y este bus tendrá normalmente la dirección de bus 0.

Sin embargo, si estamos accediendo a un equipo que es una pasarela ModbusTCP a ModbusRTU y desde este equipo sale un bus RS485 donde tenemos conectados 3 analizadores de red, los comandos modbus que se le envíen a este equipo deberán indicar a que analizador de los tres quieren acceder (este caso correspondería a una pasarela pura).

Modelo de memoria global

En el servidor, a cada pasarela que incorporemos le daremos un nombre y este nombre será la forma en la que se referenciará desde el resto de componentes del servidor.

Una vez desplegadas nuestras pasarelas en nuestra instalación y correctamente configuradas en nuestro servidor, podemos representar todos los puntos de interés de nuestra instalación dentro de un mapa global y distribuido donde cada uno de los puntos puede ser direccionado de forma inequívoca.

Un punto de interés será por tanto direccionado por el nombre de la pasarela, el número de dispositivo dentro de la pasarela, el banco de datos dentro del modelo de su memoria y finalmente la dirección dentro de ese banco de memoria (si el banco es de tipo registro de 16 bits también el número de registros que ocupa el valor).

Un ejemplo:

 Pasarela    Dispositivo Banco    Dirección Punto
 contador1
 (ip=192.168.1.4)
 0
 (virtual)
 INPUT_REGISTERS    0x0004:0x0004 Metros cúbicos agua potable.
  0
 (virtual)
 INPUT_REGISTERS 0x0005:0x0005 Metros cúbicos agua riego.
 analizador1
 (ip=192.168.1.5)
 1
 (en un bus 485)
 INPUT_REGISTERS 0x0023:0x0023 KW/h zona norte
  2
 (en un bus 485)
 INPUT_REGISTERS 0x0023:0x0023 KW/h zona sur
  3
 (en un bus 485)
 INPUT_REGISTERS 0x0023:0x0023 KW/h zona central
 salidas1
 (ip=192.168.1.7)
 0
 (virtual)
 COIL_STATUS 0x0001:0x0001 Activación / Desactivación alarmas