Articles

MODBUS RTU

Introducción al direccionamiento Modbus RTU, códigos de función y visión general de la red Modbus RTU

Modbus RTU es un protocolo serie abierto derivado de la arquitectura Maestro/Esclavo desarrollada originalmente por Modicon (ahora Schneider Electric). Es un protocolo de nivel serie ampliamente aceptado debido a su facilidad de uso y fiabilidad. Modbus RTU se utiliza ampliamente dentro de los Sistemas de Gestión de Edificios (BMS) y los Sistemas de Automatización Industrial (IAS).

Los mensajes de Modbus RTU son una estructura simple de 16 bits con un CRC (Cyclic-Redundant Checksum). La simplicidad de estos mensajes es para garantizar la fiabilidad. Debido a esta simplicidad, la estructura básica de registro de 16 bits de Modbus RTU se puede utilizar para empaquetar punto flotante, tablas, texto ASCII, colas y otros datos no relacionados.

Este protocolo utiliza principalmente una interfaz serie RS-232 o RS-485 para las comunicaciones y es compatible con casi todos los programas comerciales de software SCADA, HMI, OPC Server y de adquisición de datos del mercado. Esto hace que sea muy fácil integrar equipos compatibles con Modbus en aplicaciones de supervisión y control nuevas o existentes.

Un poco de historia de Modbus RTU

Podría llamarse al protocolo Modbus el abuelo de las redes industriales. Realmente es tan antiguo como las colinas y tiene los bigotes para demostrarlo. En la era actual de la conectividad a Internet y los servicios web, el mensaje sin conexión de Modbus y la sencilla estructura de comunicación solicitud-respuesta son casi pintorescos. Casi tan antiguo como el primer controlador lógico programable, el Modicon 084, que en aquella época se llamaba PC para controlador programable.

Modbus RTU es un estándar abierto, lo que significa que los fabricantes pueden incorporarlo a sus equipos sin tener que pagar derechos de autor. Es el protocolo de comunicaciones más extendido en la automatización industrial y es ahora el medio más comúnmente disponible para conectar dispositivos electrónicos industriales.

Modbus es utilizado ampliamente por muchos fabricantes en muchas industrias. Modbus se utiliza normalmente para transmitir datos de la instrumentación de control a un controlador lógico o a un sistema de archivo de datos. En la automatización de edificios, por ejemplo, la temperatura y la humedad se comunican a menudo a un ordenador para su almacenamiento a largo plazo. Modbus se utiliza a menudo para conectar un ordenador de supervisión con una unidad terminal remota (RTU) en sistemas de control de supervisión y adquisición de datos (SCADA).

¿Por qué es tan popular Modbus?

La simplicidad es la razón por la que Modbus está tan extendido. Tampoco ha hecho daño el hecho de que Modbus haya sido creado por uno de los mayores fabricantes de PLCs de la época y lo haya hecho abierto y ampliamente disponible. Modbus también requiere muy poco espacio en el código del procesador o en la memoria RAM. Aunque esto no es tan importante hoy en día dados los potentes procesadores y la tecnología de que disponemos, era muy importante en los primeros años de la automatización industrial, cuando los procesadores utilizaban tecnología de 8 bits y recursos como la RAM y la ROM eran extremadamente caros y escasos.

La comprobación de mensajes es otra razón por la que Modbus ha sido tan popular. La comprobación CRC y LRC significa que los errores de transmisión se comprueban con una precisión del 99%.

Comunicación Modbus

El protocolo Modbus RTU utiliza una técnica Maestro/Esclavo para comunicarse entre dispositivos. Esto significa que cualquier aplicación que utilice el protocolo Modbus RTU tendrá un Maestro Modbus y al menos un Esclavo Modbus. Un Maestro Modbus es típicamente una computadora supervisora anfitriona que ejecuta un software que se comunicará con uno o más dispositivos Esclavos Modbus.

diagrama_modbusrtu

Modbus permite la comunicación Maestro/Esclavo entre dispositivos conectados a través de buses o redes. En el modelo OSI, Modbus se sitúa en el nivel 7. Modbus pretende ser un protocolo de petición/respuesta y ofrece servicios especificados por códigos de función. Los códigos de función de Modbus son elementos de las PDUs de solicitud/respuesta de Modbus (Unidad de Datos de Protocolo).

Para construir la unidad de datos de la aplicación Modbus, el cliente debe iniciar una transacción Modbus. Es la función que informa al servidor sobre qué tipo de acción debe realizar. El formato de una solicitud iniciada por un Maestro es establecido por el protocolo de aplicación Modbus. El campo de código de función se codifica en un byte. Sólo se consideran válidos los códigos comprendidos en el rango de 1 a 255, reservándose de 128 a 255 para las respuestas de excepción. Cuando el Maestro envía un mensaje al Esclavo, es el campo de código de función el que informa al servidor de qué tipo de acción debe realizar.

¿Te gusta lo que estás leyendo?

Suscríbete a nuestra serie de correos electrónicos de Educación en Automatización para aprender los entresijos de los principales protocolos industriales en un formato semanal de tamaño byte!

Para definir múltiples acciones, algunas funciones tendrán códigos de subfunción añadidos. Por ejemplo, el Maestro puede leer los estados ON/OFF de un grupo de salidas o entradas discretas. También puede leer/escribir el contenido de los datos de un grupo de registros MODBUS. Cuando el Maestro recibe la respuesta del Esclavo, el campo de código de función es utilizado por el Esclavo para indicar una respuesta sin errores o una respuesta de excepción. El Esclavo se hace eco a la solicitud del código de función inicial en el caso de una respuesta normal.

Representación de datos MODBUS RTU

Como todo lo relacionado con Modbus, la representación de datos es simple. De hecho, los datos se representan de forma más sencilla en Modbus que en cualquier otro protocolo industrial que puedas encontrar. El bit de menor importancia se envía y recibe primero. Todos los dispositivos dentro de la red deben interpretar cada byte transmitido análogamente de esta manera.

No hay métodos para el reconocimiento automático de las tasas de baudios. La misma tasa de baudios debe ser utilizada por el (los) Esclavo(s) y el Maestro conectados al bus. El Modbus no especifica ninguna tasa de baudios específica: las tasas de baudios típicas son 9600 o 19200.

Un Byte transmitido se codifica como: Valor binario de 8 Bit, hexadecimal 0 - 9 y A - F. El Bit menos significativo se envía y recibe primero
Un Byte transmitido se codifica como valor binario de 8 Bit, hexadecimal 0 – 9 y A – F. El Bit menos significativo se envía y recibe primero.

Sólo hay dos tipos de datos en Modbus: bobinas y registros. Las bobinas son simplemente bits simples. Los bits pueden estar en ON (1) o pueden estar en OFF (0). Algunas bobinas representan entradas, lo que significa que contienen el estado de alguna entrada física discreta. O representan salidas, lo que significa que contienen el estado de alguna señal física de salida discreta. Los registros son simplemente datos de registro sin signo de 16 bits. Los registros pueden tener un valor de 0 a 65535 (0 a FFFF hexadecimal). No hay representación para valores negativos, ni para valores mayores de 65535, ni para datos reales como 200,125.

Los registros se agrupan en Registros de Entrada y Registros de Retención. Al igual que las bobinas de entrada, los registros de entrada informan del estado de alguna entrada externa como un valor entre 0 y 65535. La intención original de un Registro de Entrada era reflejar el valor de alguna entrada analógica. Es una representación digital de una señal analógica como un voltaje o una corriente. La mayoría de los dispositivos Modbus hoy en día no son dispositivos de E/S, y los Input Registers simplemente funcionan de forma idéntica a los Holding Registers.

Los Holding Registers fueron diseñados originalmente como almacenamiento temporal de programas para dispositivos como los controladores Modbus. Hoy en día, los Registros de Retención funcionan como almacenamiento de datos para los dispositivos.

Los paquetes RTU de Modbus sólo están destinados a enviar datos; no tienen la capacidad de enviar parámetros como el nombre del punto, la resolución, las unidades, etc. Si se necesita la capacidad de enviar tales parámetros, se debe investigar un BACnet, EtherNet/IP u otros protocolos modernos.

Requisitos de dirección de Modbus RTU e identificación de la estación

Las direcciones de nodo estándar de Modbus RTU son 1-255, siendo el 0 reservado para mensajes de difusión y sólo de escritura. Sin embargo, la dirección 0 rara vez se utiliza ya que no hay confirmación de que el mensaje fue recibido correctamente en el nodo esclavo. Esto no tiene mucho efecto si su capa física es RS-232, ya que sólo se puede implementar un nodo de todos modos. RS-485 limita el número de nodos a 32, aunque algunos controladores le permitirán ampliar la cantidad.

Los dispositivos Modbus Esclavo Serial se identifican por un número de estación que precede a la estructura general del mensaje. Por lo general, se admiten hasta 32 estaciones, ya que ese es el límite impuesto por la mayoría de los controladores serie RS485. No hay límite de software para el número de estaciones que pueden ser soportadas. Las direcciones válidas de los Esclavos se asignan en el rango de 1 a 255 con el número de estación 0 reservado para los mensajes de difusión, mensajes procesados por todos los Esclavos.

Capas de transporte

Hay varios transportes estándar utilizados para mover los mensajes del protocolo Modbus: RS232 y RS485. Se pueden utilizar otros, pero estos son los más comunes.

RS485 es un sucesor de RS232. Funciona de forma similar en cuanto a los bits de sincronización que sincronizan la transferencia de bits de una estación emisora a una estación receptora. Sin embargo, hay dos características que definen la diferencia entre RS485 y RS232. La primera es la capacidad de manejar múltiples destinos. Los transmisores RS485 pueden señalar eléctricamente hasta 32 dispositivos de destino. Esto hace que RS485 sea la forma preferida de transportar en serie los mensajes Modbus.

La otra característica que define a RS485 es la mayor inmunidad al ruido. RS485 no utiliza el común eléctrico como referencia para su señal eléctrica. En su lugar, RS485 utiliza un par de cables y conduce una señal estableciendo un potencial de tensión a través del par. Al hacer esto, cualquier ruido eléctrico ambiental afecta a ambos cables por igual y el potencial a través de los dos cables no se cambia.

Codificación de datos Modbus RTU

Un mecanismo de codificación describe cómo se forman los patrones de bits de los valores de control y datos que se codifican en el paquete. Tanto el emisor como el receptor deben utilizar la misma codificación para entender correctamente el contenido de los datos. Hay dos mecanismos para codificar los mensajes Modbus: ASCII y RTU.

La codificación RTU es el mecanismo de codificación mucho más común utilizado en Modbus. RTU significa simplemente que los valores se codifican como binario estándar big-endian. Esto significa que en el caso de los valores de 16 bits, el byte más significativo (MSB) se codifica antes del byte menos significativo (LSB). Un valor de 8 bits como el decimal 41 (29 hex) se codifica simplemente como 0010 1001. Mientras que un valor de 16 bits como el decimal 300 (12C hex) se codifica como 0000 0001 0010 1100. El MSB de 01 se codifica y se transmite antes del LSB de 2C.

Mapa de memoria de MODBUS RTU

Registros Modbus

Modbus RTU
Datos Tipo
Nombre común Dirección inicial
Bobinas Modbus Bits, valores binarios, flags 00001
Entradas digitales Entradas binarias 10001
Entradas analógicas Entradas binarias 30001
Valores analógicos, variables 40001

La diferencia entre Modbus RTU y Modbus TCP

La diferencia más básica entre Modbus RTU y Modbus TCP (También conocido como Modbus IP, Modbus EtherNet, y Modbus TCP/IP) es que Modbus TCP se ejecuta en una capa física de Ethernet y Modbus RTU es un protocolo de nivel serial. Modbus TCP también utiliza una cabecera de 6 bytes para permitir el enrutamiento.

Un maestro Modbus RTU es un bus maestro único. Envía un mensaje a un dispositivo esclavo RTU y obtiene una respuesta. Modbus RTU está limitado a un solo maestro. Sólo un conjunto de señales puede estar en el enlace RS485 en cualquier momento. O bien el único maestro RTU está transmitiendo o uno de los dispositivos cliente RTU está transmitiendo.

Con la introducción de Modbus TCP, todo se simplificó y facilitó. Con Modbus TCP, los controladores pueden utilizar de forma mucho más eficiente el ancho de banda de Ethernet para ser el Maestro de cientos de dispositivos Modbus TCP. Modbus TCP permite múltiples clientes. Mientras que RS485 tenía una limitación eléctrica de 32 dispositivos, Ethernet es ilimitada. La RAM operativa es la única limitación práctica. Con Modbus TCP, existe la posibilidad de que el diseñador de la red utilice múltiples Clientes/Maestros si así lo desea.

Con Modbus TCP (Ethernet), es necesario involucrar un costoso conmutador. Con Modbus RTU (serie), puede simplemente conectar en cadena todos los dispositivos. Los dispositivos con viejos procesadores de 8 bits y un poco de memoria pueden hacer fácilmente Modbus serie, pero necesitará una plataforma más cara para hacer Ethernet.

¿Sabía usted?

El fundador de la Automatización en Tiempo Real, John S. Rinaldi, escribió un libro entero sobre Modbus? Consulte The Everyman’s Guide to Modbus, disponible ahora en Amazon!

Para más información sobre nuestros productos y servicios Modbus RTU llame al 1-800-249-1612 o envíenos un correo electrónico a [email protected].

¿Quiere añadir Modbus RTU a su proyecto?

Vea las soluciones Modbus RTU

¿Quiere esta página en formato PDF? Haga clic aquí

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *