Modbus: el protocolo industrial invade tu casa

por Ricardo Vega el 30/10/2014

La semana pasada hablábamos de BACnet y anteriormente de otros protocolos como X10, KNX, Lonworks o una serie de protocolos inalámbricos, siempre orientándonos a la domótica. Hoy vamos a hablar de Modbus, uno de los protocolos más empleados en el entorno industrial que ha encontrado también su hueco en la domótica e inmótica.

Modbus: automatización industrial llevada al ámbito de la vivienda.

[Tweet]

Modbus es un protocolo de la capa de aplicación que proporciona comunicaciones maestro-esclavo entre recursos inteligentes. Fue desarrollado por Modicon (actualmente Schneider Automation) en 1979. Es una especificación abierta muy extendida en el mundo industrial debido a su simplicidad. Usado en dispositivos como PLC, HMI, drivers, sensores o actuadores remotos.

Logo
Modbus

Define una estructura de mensajes que puede ser reconocida por los diferentes dispositivos independientemente del tipo de red de comunicaciones utilizada. El protocolo describe el proceso para acceder a la información de un dispositivo, cómo debe responder éste y cómo se notifican las situaciones de error.

Es soportado por redes industriales Modbus y por redes estándar. Actualmente se implementa usando:

  • TCP/IP sobre Ethernet.
  • Transmisión serie asíncrona sobre una variedad de medios (cable, fibra, radio, etc.).
  • Modbus plus: red de alta velocidad de paso de testigo.

Arquitectura
Modbus

Formato de la trama Modbus

La comunicación siempre es iniciada por el maestro. El maestro puede direccionar esclavos individualmente o puede generar un mensaje en modo difusión a todos los esclavos. Las direcciones individuales permitidas se encuentran en el rango 1-247 y se reserva la dirección O para los mensajes de difusión.

Los dispositivos monitorizan la red continuamente para detectar el comienzo de una trama. Cuando se comienza a recibir una trama, el recurso descodifica el campo dirección para conocer si el destinatario del mensaje es él. Los esclavos devuelven un mensaje (llamado 'respuesta') a las peticiones que les son direccionadas individualmente y no devuelven respuestas a peticiones en modo difusión enviadas desde el maestro.

En una trama petición, el campo dirección permite identificar el dispositivo al que va dirigido el mensaje. Cuando se trata de una respuesta, el esclavo incluye en este campo su propia dirección para que el maestro reconozca el dispositivo que le está enviando la respuesta.

Si la trama es enviada por el maestro, el campo función contiene un código que representa la acción que debe ejecutar el esclavo. El dispositivo esclavo usa este campo para indicar si la respuesta es normal (libre de errores) o bien si es una respuesta de excepción. En el primer caso incluye el código de la función original y en el segundo, ese mismo código pero con su bit más significativo puesto a uno.

El campo datos puede no existir en algunos mensajes. En dicho campo, el maestro introduce información necesaria para que el receptor ejecute la acción determinada por el código de función. Cuando la trama es una respuesta, contendrá los datos solicitados o un código de excepción que la aplicación del maestro podrá usar para determinar la próxima acción a realizar.

Podemos diferenciar dos tipos de tramas:

  • PDU: unidad de datos de protocolo, conformado por el código de función y los datos.
  • ADU: unidad de datos de aplicación, conformado por la dirección, el código de función, los datos y un checksum.

Diferencias entre TDU y ADU -
Modbus

En cuanto a los tipos de datos existen:

  • Entradas digitales: 1 bit de lectura.
  • Salidas digitales: 1 bit de lectura/escritura.
  • Registros de entrada: 16 bits de lectura.
  • Registros de salida: 16 bits de lectura escritura.

Estos tipos de datos están dispuestos en memorias reservadas.

Sobre redes distintas a redes Modbus, los mensajes del protocolo Modbus están integrados en la trama o estructura de paquetes utilizadas sobre la red. Con software de aplicación asociado (drivers y librerías) se proporciona la conversión entre el mensaje de protocolo Modbus y las tramas específicas de los protocolos que esas redes utilizan para comunicar entre sus dispositivos nodo.

Esta conversión también alcanza a la resolución de direcciones de nodos, caminos de enrutamiento y métodos de comprobación de error específicos para cada tipo de red. Las direcciones de dispositivo contenidas en el protocolo Modbus serán convertidas en direcciones de nodo, previamente a la transmisión de los mensajes. Los campos de comprobación de error también serán aplicados a los paquetes del mensaje, de manera consistente con el protocolo de cada red.

Dentro de Modbus, podemos diferenciar entre Modbus Serie y Modbus TCP/IP:

Modbus Serie

Existen dos variantes en el formato de la trama:

  • ASCII: Cada byte se envía como dos caracteres ASCII. El inicio de la trama se identifica al recibir el carácter '':'' (ASCII 3A hex). Para la detección de errores, se aplica un LRC (Comprobación Longitudinal Redundante) al mensaje, excluyendo los campos comienzo y fin de trama. El mensaje finaliza con los caracteres retomo de carro y avance de línea (ASCII ODOA hex).

Trama Modbus
ASCII

  • Remote Terminal Unit: Cada byte contiene 2 dígitos hexadecimales de 4 bits. Los mensajes comienzan con un período silencioso de al menos 3,5 tiempos de carácter. La detección de errores se lleva a cabo mediante un CRC (Código de redundancia cíclico) aplicado a la trama. Este es el último campo que se transmite, siendo necesario un período de silencio de 3,5 tiempos de carácter para identificar el final de la trama.

Trama RTU
Modbus

Modbus TCP/IP

La especificación Modbus TCP/IP fue desarrollada en 1999 y proporciona simplicidad, bajo coste y facilidad de desarrollo bajo cualquier sistema operativo.

Cuando el protocolo Modbus se implementa sobre redes TCP/IP el formato de la unidad de datos de aplicación tiene esta forma:

Trama TCP-IP
Modbus

TCP/IP emplea la cabecera MBAP (ModBus Application Protocol). Esta cabecera consta de 7 bytes y permite identificar la unidad de datos de aplicación Modbus.

Si tienes experiencia en el mundo de la automatización estoy seguro que has empleado en alguna ocasión Modbus. Su sencillez lo convierte en un firme candidato a reinar en nuestra vivienda pero, desde mi punto de vista, existe un gran problema a solucionar, su seguridad.

Con esto acabo por ahora con los protocolos domóticos más conocidos (que no quita que salgan nuevos y por supuesto comentaré). A partir de ahora toca sacar conclusiones. Como conmemoración de este "final" voy a regalar una serie de libros a mis subscriptores así que si no lo has hecho ya, ahora es el momento. Recuerda que es totalmente gratuito y te esperan múltiples ventajas. También te recomiendo que me sigas en mis redes sociales ya que voy a sacar una promoción que seguro te interesa. Ah! y como siempre recuerda que este blog lo hacemos todos, no te olvides de compartirlo! Un saludo!

Apoya al blog


Si te ha gustado este artículo, valora apoyarme económicamente a través de Patreon, una plataforma de Micro-mecenazgo con la que puedes hacerme un donativo que ayude a la continuidad del blog. Una pequeña ayuda significa mucho. 😃

Permanezcamos en contacto!


¿Quieres enterarte de todas las novedades del sector? ¿Te gustaría trabajar conmigo? ¡Puedes contactar conmigo de forma muy sencilla!