Modbus es un popular protocolo de comunicación serie de baja velocidad ampliamente utilizado en la industria de la automatización. El protocolo fue desarrollado por Modicon (ahora adquirido por Schneider Electric) en 1979 para sus propios controladores lógicos programables. El protocolo sirvió como enlace entre los PLC y los dispositivos de automatización inteligentes. Modbus, ahora un protocolo abierto mantenido por la Organización Modbus, ha sido muy popular entre los ingenieros de automatización desde sus inicios. El protocolo es ampliamente utilizado para monitoreo y control industrial, principalmente con PLC.
El protocolo serie se basa en configuración maestro-esclavo y es capaz de configurar la comunicación desde un cliente Modbus con hasta 247 servidores Modbus. La interfaz física en los dispositivos se facilita mediante puertos estándar RS-485 o RS-232. El bus es un cable de par trenzado blindado o no blindado terminado a 150 ohmios en ambos extremos. El cable se puede conectar fácilmente a dispositivos mediante una carcasa D de 9 pines, terminales de tornillo o conectores RJ-45.
Modbus es una red punto a punto o multipunto que utiliza una conexión en serie o derivaciones. Todas las comunicaciones en una red Modbus son controladas y gestionadas por el maestro (es decir, el cliente Modbus). Modbus se usa ampliamente para conectar dispositivos de instrumentación y control a un controlador o dispositivos de recopilación de datos. Normalmente, el dispositivo de recopilación de datos o cliente Modbus es una computadora supervisora dentro de una interfaz hombre-máquina (HMI) o un sistema de control de supervisión y adquisición de datos (SCADA). Las unidades terminales remotas (RTU), incluidos los módulos de sensores, el controlador lógico programable (PLC) o el controlador de automatización programable (PAC), son servidores Modbus. Modbus es compatible con casi todos los software comerciales HMI, SCADA, OPC y de adquisición de datos, lo que permite una integración sin problemas de equipos compatibles con Modbus con cualquier sistema de automatización industrial (IAS) o sistema de gestión de edificios (BMS).
Por qué Modbus es tan popular
Modbus es utilizado por fabricantes en una variedad de industrias y se ha vuelto bastante popular debido, en parte, a su simplicidad. Es un estándar abierto; por lo tanto, los fabricantes pueden incorporar la versión RTU de Modbus a sus equipos sin pagar regalías. El protocolo se puede implementar incluso en placas de creación de prototipos como Arduino. De hecho, el protocolo de comunicación se puede implementar fácilmente en cualquier microcontrolador o computadora. La comunicación de datos se realiza mediante solicitud-respuesta y los mensajes tienen un formato de marco fijo.
Inicialmente desarrollado como un protocolo de capa de aplicación para la transferencia de datos a través de la capa serie, actualmente existen tres versiones del protocolo Modbus: dos para líneas serie: Modbus RTU y Modbus ASCII; y uno para Ethernet (TCP/IP y UDP): Modbus TCP. Aunque es relativamente simplista, el protocolo aún permite la verificación de mensajes con una precisión superior al 99%. Modbus RTU tiene sumas de comprobación redundantes cíclicas (CRC) y Modbus ASCII tiene comprobaciones de redundancia longitudinal (LRC) para comprobar errores.
A pesar de sus inicios en la década de 1970, la implementación del protocolo requirió RAM y recursos de memoria mínimos. En la década de 1970, cuando la tecnología informática y las tecnologías integradas no eran tan avanzadas como lo son hoy, un protocolo ligero como Modbus era especialmente atractivo. La popularidad de Modbus nunca ha disminuido.
Alcance y velocidad de datos
La velocidad de datos Modbus predeterminada es 9600 b/s o 19,2 kb/s. Normalmente, 19,2 kb/s es la velocidad estándar. La velocidad de datos se puede reducir a 4800 b/s, 2400 b/s, etc. La velocidad de datos máxima es 115,2 kb/s. A una velocidad de datos estándar de 9.600 b/s, Modbus puede tener un alcance máximo de 1.000 metros. Si la velocidad de datos aumenta, el alcance se reducirá. La longitud del grifo debe ser siempre inferior a 20 metros.
Niveles lógicos
En un Modbus, un 0 binario está representado por un nivel de voltaje de +2 a +6V. El binario 1 está representado por un nivel de voltaje de -2 a -6 V.
Capas
Inicialmente, Modbus era un protocolo único implementado en la capa serie. Se introdujeron unidades de datos de aplicación para permitir la implementación en redes seriales, así como en redes TCP/IP y UDP cuando el protocolo se implementó para Ethernet. El protocolo ahora está dividido en dos capas: la capa central y la capa de red. La capa central define la Unidad de datos de protocolo (PDU), mientras que la capa de red define la Unidad de datos de aplicación (ADU). La PDU se puede transmitir a través de la red UDP incluso sin definir ninguna unidad de datos de aplicación.
Las versiones seriales de Modbus (es decir, Modbus RTU y Modbus ASCII) solo requieren PDU, mientras que la versión Ethernet (es decir, Modbus TCP) requiere PDU y ADU.
Red y comunicación
Modbus es un protocolo de solicitud-respuesta implementado en una configuración maestro-esclavo. Hay dos tipos de dispositivos: Cliente Modbus y Servidor Modbus. El Cliente Modbus es el maestro y suele ser una computadora supervisora dentro de un sistema SCADA o HMI. Los servidores Modbus son esclavos y suelen ser unidades terminales remotas, como módulos de sensores, PLC y PAC.
Las versiones seriales de Modbus admiten la comunicación desde un solo cliente con hasta 247 servidores Modbus. Dado que los puertos RS-485 y RS-232 son comunes para la implementación de Modbus, si se utiliza el puerto RS-232, el número máximo de servidores Modbus puede ser hasta 247, pero si se utilizan puertos RS-485, el número máximo de servidores Modbus están limitados a 32 debido a limitaciones prácticas del estándar RS-485. Puede haber múltiples clientes y servidores ilimitados ya que la versión Ethernet de Modbus tiene un encabezado adicional de 6 bytes para enrutamiento de Internet.
Toda la comunicación de datos está controlada por el cliente Modbus mediante solicitud-respuesta. En Modbus, los datos se transfieren en bytes. En la versión RTU, cada byte está codificado en una trama asíncrona de 11 bits que consta de un bit de inicio, un byte de datos, paridad par y un bit de parada. En la versión ASCII, cada byte está codificado en una trama de 10 bits que consta de un bit de inicio, datos de 7 bits, 1 bit de paridad par o impar, o ningún bit si no hay paridad, y 1 bit de parada si se utiliza paridad. , de lo contrario, me detengo por un tiempo.
Un mensaje comunicado entre el maestro/cliente y el esclavo/servidor se denomina Unidad de datos de protocolo (PDU). La PDU consta de la dirección del esclavo, el código de función (comando), los datos y la suma de comprobación (CRC o LRC).
El maestro envía una solicitud a uno de los esclavos identificados por la dirección del esclavo. La dirección esclava tiene una longitud de un byte y puede tener un valor entre 0 y 255. Según el protocolo, la dirección esclava 0 está reservada para mensajes de difusión y las direcciones esclavas que identifican dispositivos esclavos no pueden exceder 247. El código de función nuevamente tiene una longitud de un byte y le dice al dispositivo esclavo direccionado qué tipo de acción tomar. Los códigos de función en el rango de 1 a 255 son válidos, de los cuales 128 a 255 están reservados para respuestas de excepción. Una acción es una operación de lectura o escritura en la que los datos de una solicitud proporcionan información adicional necesaria para realizar la acción. Por ejemplo, puede especificar dónde comenzar a leer y cuántos datos se deben leer. CRC se aplica para la verificación de errores en la versión RTU, mientras que LRC se aplica para la verificación de errores en la versión ASCII.
Cuando el maestro realiza una solicitud a un esclavo direccionado, devuelve una respuesta. La dirección del esclavo y el código de función se repiten en la misma respuesta. Los datos contienen los valores solicitados por el maestro. Si se produce un error al realizar la acción solicitada, el código de función se modifica y los datos contienen un código que describe el error. Nuevamente, se utilizan CRC o LRC, dependiendo de la trama RTU o ASCII respectivamente, para garantizar la integridad del mensaje o PDU.
En la trama RTU, cada byte representa dos caracteres hexadecimales de 4 bits en una trama de 11 bits. La PDU consta de una dirección esclava de 1 byte, un código de función de 1 byte, datos de 0 a 252 bytes y un CRC de 2 bytes.
En la trama ASCII, cada byte representa dos caracteres ASCII en una trama de 10 bits. La PDU consta de un carácter inicial de 1 carácter, una dirección esclava de 2 caracteres, un código de función de 2 caracteres, datos de 0 a 504 caracteres, un LRC de 2 caracteres y un carácter final de 2 caracteres. El carácter inicial es siempre dos puntos (:) o ASCII 3A hexadecimal. El carácter final es siempre un retorno de carro con avance de línea (ASCII 0D y 0A hexadecimal). Cada PDU en la RTU así como en la versión ASCII está separada por 28 bits o 3,5 caracteres.
Tanto la versión RTU como la ASCII de Modbus son casi similares excepto algunas diferencias. En el marco RTU, los bytes se presentan en formato binario, mientras que en el marco ASCII, los bytes se presentan como caracteres ASCII de 4 bits legibles. La trama ASCII tiene caracteres de inicio y fin de texto, mientras que en la trama RTU la separación de 28 bits entre PDU/mensajes se interpreta para detectar el inicio y el final de la trama. Debido a que el marco RTU utiliza mensajes más cortos, es más rápido que la versión ASCII. La versión ASCII tiene la ventaja de que entre caracteres de mensaje pueden transcurrir intervalos de hasta un segundo. Si el intervalo supera el segundo, el equipo lo considera un error de transmisión.
La PDU en la versión TCP de Modbus consta de un ID de transacción de 2 bytes, un campo de protocolo de 2 bytes, un campo de longitud de 2 bytes, una dirección esclava de 1 byte y una dirección esclava de 1 a 252 bytes. campo de mensaje.
El ID de transacción identifica la transacción y el protocolo siempre se establece en 0 para indicar Modbus. La longitud indica el número de bytes siguientes. A esto le sigue una dirección esclava de 1 byte. El campo de mensaje es una versión RTU similar a la trama Modbus que consta del código de función y los datos. El tamaño máximo del campo de mensaje puede ser de 253 bytes (es decir, 1 byte para el código de función y un máximo de 252 bytes para datos como en la trama RTU).
El bit menos significativo se envía primero en todas las versiones: RTU, ASCII y TCP. Los equipos compatibles con Modbus no pueden detectar automáticamente la velocidad en baudios, por lo que es necesario establecer explícitamente la misma velocidad en baudios en los extremos del bus del cliente y del servidor. La PDU Modbus admite un formato que solo puede enviar datos, sin capacidad para enviar parámetros entre dispositivos de comunicación.
Tipos de datos
Hay dos tipos de datos en Modbus: bobinas y registros. Las bobinas son bits individuales que pueden ser 0 (OFF) o 1 (ON). Las bobinas pueden ser bobinas de salida discreta o contactos de entrada discretos. Los contactos de entrada discreta son el estado de una entrada discreta física como ENCENDIDO o APAGADO. Las bobinas de salida discreta tienen el estado físico de la señal de salida discreta como ENCENDIDO o APAGADO.
Los registros son registros sin firmar de 16 bits que pueden contener un valor que representa un número de punto flotante, texto ASCII, una cola o una tabla. Un registro por sí solo almacena sólo valores positivos en el rango de 0 a 65535, es decir, de 0x0000 a 0xFFFF hexadecimal. Los datos de 16 bits almacenados en registros se pueden interpretar como un entero sin signo de 16 bits, un entero con signo de 16 bits, una cadena ASCII de 2 caracteres o un valor de encendido/apagado discreto por parte del cliente Modbus. Los datos de 32 bits almacenados en registros se pueden interpretar como un entero sin signo de 32 bits, un entero con signo de 32 bits, una cadena ASCII de 4 caracteres o un número de coma flotante de doble precisión de 32 bits por parte del cliente Modbus.
Hay dos tipos de registros: registros de entrada analógica y registros de retención de salida analógica. Al igual que los contactos de entrada discreta (bobinas), los registros de entrada almacenan el estado de una entrada externa como un valor entre 0 y 65535 (0x0000 y 0xFFFF). En el pasado, los registros de entrada se usaban generalmente para almacenar representaciones digitales del valor de las entradas analógicas que podían ser señales de voltaje o corriente. Los registros de retención de salida se utilizan para almacenar datos en el dispositivo. Ahora bien, dado que la mayoría de los equipos compatibles con Modbus no son dispositivos de entrada/salida, los registros de entrada también se utilizan para almacenar datos.
Cómo el servidor almacena los datos
En un servidor Modbus, como un módulo de sensor, PLC o PAC, los datos se organizan en cuatro tablas o bases de datos. Hay dos bases de datos para almacenar valores discretos de encendido/apagado o bobinas. Estas bases de datos almacenan bobinas de salida discreta y contactos de entrada discretos por separado. Entonces, hay dos bases de datos para almacenar valores numéricos o registros que almacenan registros de entrada analógica y registros de retención de salida analógica por separado.
Cada base de datos puede almacenar 9.999 valores. Por ejemplo, las bases de datos para bobinas de salida discreta y contactos de entrada discreta pueden almacenar 9999 bits cada una, en el rango de 0000 a 270E. Las bases de datos para registros de entrada analógica y registros de retención de salida analógica pueden almacenar 9999 palabras cada una, en el rango de 0000 a 270E, donde cada palabra tiene 16 bits de longitud.
Las bases de datos para bobinas de salida discreta y registros de retención de salida analógica son del tipo lectura-escritura, mientras que las bases de datos para contactos de entrada discreta y registros de entrada analógica son del tipo de solo lectura.
Se accede a los valores de las bases de datos mediante nombres locales. La base de datos para bobinas de salida discreta, contactos de entrada discreta, registros de entrada analógica y registros de retención de salida analógica tienen ubicaciones en el rango 1~9999, 10001~19999, 30001~39999 y 40001~49999, respectivamente. La estructura y naturaleza de cuatro bases de datos en un servidor Modbus se resumen en la siguiente tabla.
Conclusión
Modbus es un protocolo de comunicaciones industriales ampliamente utilizado con PLC. El protocolo tiene tres versiones: RTU, ASCII y Modbus. La versión RTU, al ser estándar abierto y más rápida, es la más utilizada por los fabricantes. Con mensajes más cortos, los mensajes Modbus enmarcados en RTU se pueden actualizar en un intervalo de 100 milisegundos. Modbus es compatible con casi todos los software comerciales HMI, SCADA, OPC y de adquisición de datos, lo que facilita la integración de equipos compatibles con Modbus en cualquier sistema de automatización industrial o sistema de gestión de edificios.
(tagsToTranslate)Arduino