13/9/2019 ▷ ¿Qué es MODBUS? ◁ 【Modbus TCP, RTU, RS485】【2019】 ¿Qué es MODBUS? ¿Cómo funciona? Mar 7, 2019 10 minutos de lectura « CD4511 decodificador para display 7 segmentos Protocolo Modbus: Fundamentos y aplicaciones El protocolo Modbus es un protocolo abierto, es una estructura de mensajes desarrollada por Modicon en la decada de los 70, utilizada para comunicaciones entre dispositivos maestro-esclavo/cliente-servidor. Modicon fue posteriormente adquirida por Schneider y los derechos sobre el protocolo fueron liberados por la Organización Modbus. Muchos equipamientos industriales utilizan Modbus como protocolo de comunicación, y gracias a sus características: Protocolo abierto Simplicidad. Facilidad. Es el protocolo más utilizado en la automatización industrial. Indice de contenido ¿Qué es el protocolo Modbus? ¿Cómo funciona MODBUS? Capa física Modbus RS232 Modbus RS485 Modbus TCP Direccionamiento Modelo de datos Código de las funciones Modos de transmisión MODBUS ASCII MODBUS RTU (Remote Terminal Unit) https://blog.ars-electronica.com.ar/que-es-modbus-funcionamiento 1/6 13/9/2019 ▷ ¿Qué es MODBUS? ◁ 【Modbus TCP, RTU, RS485】【2019】 MODBUS TCP ¿Qué es el protocolo Modbus? Modbus es un protocolo de comunicación situado en los niveles 1, 2 y 7 del Modelo OSI, basado en la arquitectura maestro/esclavo(o cliente/servidor si hablamos de su versión Ethernet) es uno de los protocolos mas utilizados en automatización industrial, gracias a que es un protocolo abierto, a su simplicidad y facilidad de implementación. ¿Cómo funciona MODBUS? En la figura de abajo vemos un ejemplo de red con el protocolo Modbus, con una gateway haciendo la conexión entre los dos tipos de Modbus, el serial sobre RS-485 y el TCP/IP en ethernet. En el mercado existe la opción de gateway Modbus Wireless. El maestro de la red, que en este caso es un PLC enviá y recibe datos de los esclavos, que son un inversor de frecuencia, una HMI, un controlador de temperatura y una interfaces de I/O remota Modbus. La estación maestro inicia la comunicación solicitando que los esclavos envíen sus datos. Los esclavos, por su parte, reciben el pedido del maestro y devuelven los datos solicitados. Los datos transmitidos pueden ser discretos o números, es decir, es posible enviar un bit para encender o apagar un motor o enviar valores numéricos como temperatura y presión. Capa física Es importante no confundir protocolo de comunicación con estándares físicos. Algunos protocolos posen un estándar físico definido como el caso de la red ASI y de la red CAN, siendo que en esos casos el estándar fisico esta definido junto al protocolo y no es posible alterarlo. MODBUS no especifica cuál es la capa física, pudiendo ser utilizado en diversos estándares de capa física como: RS-232 RS-485 Ethernet TCP/IP (MODBUS TCP) https://blog.ars-electronica.com.ar/que-es-modbus-funcionamiento 2/6 13/9/2019 ▷ ¿Qué es MODBUS? ◁ 【Modbus TCP, RTU, RS485】【2019】 La velocidad de comunicación varia en cada uno de estos estándares, así como la longitud máxima de la red y el numero de dispositivos máximos conectados. RS-232 El estándar RS-232 (Recommendad Standart-232) o EIA-232(Electronic Industries Alliance-232) es utilizado solamente en comunicaciones del tipo punto a punto, es decir, solo admite dos dispositivos en la red, que en el caso del protocolo Modbus representan un maestro y un esclavo. La velocidad máxima de este estándar esta en torno a los 115Kbps, pero en algunos casos pueden ser encontradas tasas un poco mayores, la distancia máxima entre los dispositivos de la red es de unos 30m. RS-485 El estándar RS-485(Recommendad Standart-485) o EIA-485(Electronic Industries Alliance-485) es muy utilizado en la industria y sin dudas es uno de los estándares mas utilizados por el protocolo Modbus. La gran diferencia con RS232, es que permite mas de dos dispositivos por lo que se pueden tener varios esclavos en la red. Ademas, este estándar permite trabajar con tasas de comunicación que pueden llegar hasta 12Mbps y en algunos casos hasta 50Mbps, vale la pena recordar que cuando mayor es la longitud de la red menor sera la velocidad de comunicación, la distancia máxima de la red es de 1200m, y el numero máximo de dispositivos en la red es de 32. Ethernet El estándar Ethernet en el protocolo Modbus posee algunas variaciones, pudiendo llegar a 100Mbps y hasta 10Gbps. La distancia máxima puede varias de 100m hasta los 200m dependiendo del tipo de cable utilizado y de las condiciones de instalación del mismo. En algunos casos es posible utilizar redes de fibra óptica, lo que permite alcanzar mayores distancias y mejores tasas de comunicación, así como utilizar comunicación wireless. Al utilizar el medio físico Ethernet el protocolo MODBUS opera con el mecanismo de control de acceso CSMA-CD, que es propio de la red Ethernet, con mensajes en el modelo cliente-servidor. Direccionamiento El protocolo Modbus tiene 256 direcciones donde: 0(cero) es la dirección de Broadcast, cuando el maestro enviá un mensaje a la dirección 0, todos los esclavos reciben el mensaje. 1 a 247 son direcciones de dispositivos para los esclavos. 248 hasta 255 son direcciones reservadas. El maestro no posee dirección, solamente los esclavos deben poseer una dirección definida. Modelo de datos En el modelo de datos Modbus se distinguen 4 tipos de objetos diferentes los cuales tienen un tamaño diferente. En la siguiente table se observan cuáles son estos tipos de objetos y sus tamaños respectivos. Tipo de objeto Acceso Tamaño Direcciones Coil Leer/Escribir 1 bit(Bool) 00001 - 09999 Discrete input Solo leer 1 bit(Bool) 10001 - 19999 Input register Solo leer 16 bits(Int) 40001 - 49999 Holding register Leer/escribir 16 bits(Int) 40001 - 49999 No hay definido tipos de objetos para datos flotantes o dobles enteros, debido a la época en la que fue desarrollado el protocolo los PLC no contaban con estos tipos de datos. Pero podemos usar el ingenio para lograrlo, por ejemplo https://blog.ars-electronica.com.ar/que-es-modbus-funcionamiento 3/6 13/9/2019 ▷ ¿Qué es MODBUS? ◁ 【Modbus TCP, RTU, RS485】【2019】 usando dos registros, ya que para un flotante o doble entero necesitamos 32 bits. De la tabla podes ver que tenemos disponibles hasta 9999 variables por tipo de dato. Código de las funciones El código de la función es con lo que el maestro especifica el tipo de servicio o función solicitada al esclavo(lectura, escritura, etc). En el protocolo Modbus, cada función es utilizada para acceder a un tipo especifico de dato. Código de función Descripción 1 Lectura en bloque de bits del tipo bobina(salida discreta) 2 Lectura de bloque de bits del tipo entradas discretas 3 Lectura de bloque de registros del tipo holding 4 Lectura de bloque del tipo input 5 Escritura de un único bit del tipo bobina 6 Escritura en un único registro del tipo holding 7 Leer el contenido de 8 estados de excepción 8 Proveer una serie de test para verificación de la comunicación y errores internos 11 Obtener el contador de eventos 12 Obtener un informe de eventos 15 Escritura en bloque de bits del tipo bobina 16 Escritura en bloque de registros del tipo holding 17 Leer algunas informaciones del dispositivo 20 Leer informaciones de un archivo 21 Escribir información en un archivo 22 Modificar el contenido de registros de espera a través de operaciones lógicas 23 Combina leer y escribir en registros en una única transacción 24 Leer el contenido de la fila FIFO de registros. 43 Identificación del modelo de dispositivo Modos de transmisión En las especificaciones del protocolo están definidos dos modos de transmisión: ASCII RTU Sin embargo existen numerosas variantes del protocolo MODBUS, qué vamos a nombrar las más utilizadas: MODBUS ASCII MOBBUS RTU MODBUS TCP/IP Los modos definen la forma en como son transmitidos los bytes del mensaje, y como la información del mensaje sera empaquetada en el mensaje y desempaquetada. No es posible utilizar los dos modos de transmisión en la misma red. El modo de transmisión puede ser seleccionado junto con otros parámetros del puerto de comunicación serial, aunque existen equipamientos que no permiten esa selección, pues poseen modo de transmisión fijo, como por ejemplo algunos PLC e inversores de frecuencia que utilizan el modo RTU por defecto. MODBUS ASCII Cuando los equipos son configurados para que se comuniquen en una red Modbus usando ASCII, cada byte en un mensaje es enviado como dos caracteres ASCII. A pesar generar mensajes legibles por la tabla ASCII este modo consume mas recursos de la red. La principal ventaja de esta modalidad es que permite intervalos de tiempo cercanos a un segundo entre dos caracteres sin causar error. https://blog.ars-electronica.com.ar/que-es-modbus-funcionamiento 4/6 13/9/2019 ▷ ¿Qué es MODBUS? ◁ 【Modbus TCP, RTU, RS485】【2019】 Los dispositivos monitorean constantemente la rede para determinar el inicio de un mensaje. El inicio de un mensaje es reconocido por el carácter ‘:’(dos puntos), mientras que los del final de la trama son el “retorno de carro”(CR) y el “salto de línea” (LF). El formato de la trama es el siguiente: Nombre Longitud (Bytes) Función Inicio 1 Comienza con el carácter ‘:’ Dirección 2 Dirección del esclavo Función 2 indica el código de la función Datos nx2 Datos + La longitud se rellena dependiendo del tipo de mensaje LRC 2 Verificación de redundancia longitudinal (LCR) Fin 2 Retorno de Carro + Avance de linea(CR y LF) Intervalos de hasta un segundo son permitidos entre caracteres de un mensaje, se ocurre un intervalo mayor, el dispositivo receptor asume que ocurrió un error. MODBUS RTU En el modo RTU(Remote Terminal Unit), cada mensaje de 8 bits contiene dos caracteres hexadecimales de 4 bits. La principal ventaja de este modo es que su mayor densidad de caracteres permite un mejor procesamiento de datos que el modo ASCII para un mismo baudrate, ya que usa menos bits por cada dato a enviar. Cada mensaje debe ser transmitido en un flujo continuo de caracteres. En el modo RTU no existe un carácter especifico que indique el inicio o fin de la trama. La indicación de cuando un nuevo mensaje comienza o cuando termina es por la ausencia de transmisión de datos en la red, por un tiempo mínimo de 3,5 veces el tiempo de transmisión de un byte de datos. Siendo asi, si un telegrama se inició después de que se produjo ese tiempo mínimo, los elementos de la red asumen que el primer caracter recibido representa el inicio de un nuevo telegrama. Y de la misma forma, los elementos de la red asumen que finalizado la entrega del telegrama, cuando este tiempo se cumple. Si durante la transmisión de un mensaje el tiempo entre los bytes es mayor que este tiempo mínimo, el mensaje se considerará inválido, el controlador descartará los bytes recibidos y montará un nuevo mensaje con los bytes que se están transmitiendo. https://blog.ars-electronica.com.ar/que-es-modbus-funcionamiento 5/6 13/9/2019 ▷ ¿Qué es MODBUS? ◁ 【Modbus TCP, RTU, RS485】【2019】 La trama tiene el siguiente formato: Nombre Longitud (bytes) Función Dirección 2 Dirección del esclavo Función 2 indica el código de la función Datos n Datos dependiendo del tipo de mensaje CRC 2 Verificación de redundancia cíclica (CRC) MODBUS TCP/IP con MBAP MDBUS TCP es una implementación del protocolo Modbus basado en TCP/IP, Utiliza la pila TCP/IP para la comunicación y adiciona un encabezado especifico llamado MBAP(MODBUS Application Protocol). El modelo de mensaje de MODBUS TCP/IP tiene la siguiente forma: El encabezado MBAP tiene un tamaño de 7 bytes, y esta compuesto por los siguientes campos Nombre Longitud (bytes) Función Transaction identifier 2 Sincronización de mensajes entre cliente y servidor Protocol 2 El valor 0(cero) indica Modbus/TCP Lenght 2 Cantidad de bytes en la trama Unit Identifier 1 Utilizado para identificar al esclavo remoto en una red Modbus RTU Para completar la trama: Nombre Longitud (bytes) Función Función 2 indica el código de la función Datos n Datos dependiendo del tipo de mensaje Notar que la trama completa es similar a la del MODBUS RTU, pero se reemplaza Dirección y CRC por el MBAP. La gestión de errores recae sobre el protocolo Ethernet. El identificador de unidad(Unit Identifier) se utiliza con dispositivos que están detrás de una pasarela Modbus/TCP a Modbus RTU. Al principio cuando a uno le hablan de Modbus, y piensa en industrias, PLC, automatismo, piensa en que puede ser algo complejo y difícil de implementar. Pero es como pudimos ver es un protocolo sencillo, liviano y simple. Con la particularidad y gran ventaja de que es abierto. Es por todo esto que también existen librerías para poder implementar Modbus en Arduino y en casi cualquier placa electrónica actual. https://blog.ars-electronica.com.ar/que-es-modbus-funcionamiento 6/6