Cómo se comunican las máquinas: protocolo Modbus


El protocolo Modbus es el protocolo industrial más común para la comunicación M2M . Es un estándar de facto y es compatible con casi todos los fabricantes de equipos industriales.

Debido a su versatilidad y apertura, el estándar permite la integración de equipos de diferentes fabricantes. Modbus se utiliza para recopilar lecturas de sensores, controlar relés y controladores, monitorear, etc.

En el artículo analizaremos la implementación del protocolo Modbus, formatos de datos, software para trabajar con el protocolo. Intentemos leer datos del dispositivo en la práctica.

Historia de Modbus


Modbus fue introducido en 1979 por Modicon (ahora Schneider Electric). Era un estándar abierto que operaba en la interfaz RS-232. Más tarde, aparecieron implementaciones de protocolo para interfaces RS-485 y Modbus TCP. El protocolo rápidamente ganó popularidad, y muchos fabricantes comenzaron a implementarlo en sus dispositivos.

Más tarde, los derechos del protocolo se transfirieron a la organización sin fines de lucro Modbus Organization , que hasta hoy posee el estándar.

El estándar Modbus utiliza terminología derivada de la lógica de escalera . Entonces, por ejemplo, algunos registros se denominan bobinas (bobina inglesa).

Nivel fisico




  • RS-232/422/485 son interfaces seriales ampliamente utilizadas en la industria. Las interfaces RS-422/485 proporcionan un rango de señal de hasta 1200 metros. Protocolos Modbus RTU / ASCII utilizados
  • Redes TCP / IP : cualquier interfaz de Ethernet puede ser un canal físico de transmisión de datos. Usando el protocolo Modbus TCP

Nivel lógico



Diferencias de protocolo Modbus

Modbus ASCII


Los datos se codifican con caracteres de la tabla ASCII y se transmiten en formato hexadecimal. El comienzo de cada paquete se indica con dos puntos y el final con retorno de carro y avance de línea. Esto permite que el protocolo se use en líneas con demoras más largas y en equipos con temporizadores menos precisos.

Modbus RTU


En el protocolo Modbus RTU, los datos se codifican en formato binario y un intervalo de tiempo sirve como un separador de paquetes. Este protocolo es crítico para retrasos y no puede funcionar, por ejemplo, en líneas de módem. Al mismo tiempo, la sobrecarga para la transferencia de datos es menor que en Modbus ASCII, ya que la longitud del mensaje es menor.

Modbus TCP


La estructura del paquete es similar a Modbus RTU, los datos también se codifican en formato binario y se empaquetan en un paquete TCP normal para la transmisión a través de redes IP. La verificación de integridad utilizada en Modbus RTU no se aplica, ya que TCP ya tiene su propio mecanismo de control de integridad.

Formato del paquete



Formatos de paquete para diversas implementaciones de Modbus

Todos los dispositivos Modbus se comunican siguiendo el modelo maestro-esclavo. Las solicitudes solo pueden ser iniciadas por el dispositivo maestro, los esclavos solo pueden responder a las solicitudes y no pueden iniciar la transferencia de datos por sí mismos. Dependiendo de la implementación del protocolo, los encabezados de los paquetes son diferentes. Estos son los componentes principales del paquete que es importante saber:

ADU (Unidad de datos de aplicación) : el paquete Modbus completo, con todos los encabezados, PDU, suma de verificación, dirección y tokens. Difiere según la implementación del protocolo.

PDU (unidad de datos de protocolo) : la parte principal del paquete, la misma para todas las implementaciones del protocolo. Contiene la carga útil en sí.

Dirección del dispositivo : la dirección del destinatario, es decir, el dispositivo esclavo. Se pueden ubicar hasta 247 dispositivos en un segmento de una red Modbus. Solo los esclavos tienen direcciones diferentes, el maestro no tiene dirección. La dirección "0" se utiliza para las solicitudes de difusión del maestro, mientras que los esclavos no pueden responder a estos paquetes de difusión.

Suma de comprobación : algoritmos de integridad de paquetes. Modbus RTU y ASCII usan 2 bytes de suma de verificación. Modbus RTU usa el algoritmo CRC16, mientras que Modbus ASCII usa el LRC8 más simple y menos confiable. En Modbus TCP, la suma de verificación no se agrega a la ADU ya que la integridad se verifica a nivel TCP.

No analizaremos encabezados adicionales específicos para cada implementación de protocolo individual, ya que esto no es significativo cuando se trabaja con el protocolo a nivel de aplicación.

Registros y funciones Modbus


En una forma simplificada, la estructura de solicitud Modbus consta de un código de función (lectura / escritura) y datos que deben leerse o escribirse. Al mismo tiempo, los códigos de función difieren para los diferentes tipos de datos. Analizaremos qué son los registros y las funciones para trabajar con ellos.


  • Entradas discretas: las entradas discretas del dispositivo son de solo lectura. Rango de direcciones de registro: de 10001 a 19999. Tienen una función "02": lectura de un grupo de registros
  • Bobinas : salidas discretas del dispositivo o valores internos. Disponible para lectura y escritura. El rango de direcciones de registro es de 20001 a 29999. Tiene funciones: "01" - lee un grupo de registros, "05" - escribe un solo registro, "15" - escribe un grupo de registros
  • Registros de entrada : entradas de dispositivo de 16 bits. Solo lectura Rango de direcciones de registro: de 30001 a 39999. Tiene una función: "04" - lee un grupo de registros
  • Registros de retención : salidas de dispositivo de 16 bits o valores internos. Disponible para lectura y escritura. El rango de direcciones de registro: de 40001 a 49999. Tener

A pesar de los nombres, las entradas y salidas pueden ser variables internas, almacenar contadores, banderas o ser activadores de control. También hay otros rangos de registros, pero en la gran mayoría de los dispositivos no se usan, por lo que consideraremos cuatro tipos principales de registros. Diferentes dispositivos pueden usar diferentes rangos de registros, o todos a la vez.

Ejemplos de trabajo


Para un ejemplo de trabajo con el protocolo Modbus TCP, utilizaremos la utilidad de consola más simple modbus-cli , escrita en Ruby. Facilita la lectura y escritura de datos en registros Modbus.

Intentemos leer el estado de los contadores de paquetes transmitidos en un conmutador industrial Advantech EKI-5524SSI. Primero debe determinar las direcciones de los registros que almacenan la información necesaria; para esto, consulte la documentación del dispositivo. Las descripciones de los registros se encuentran en la sección Tabla de mapeo Modbus:


Descripción de los valores de registro en la documentación del conmutador EKI

Se puede ver que el valor de los paquetes transmitidos para un puerto se almacena en cuatro registros, y para el primer puerto estos son los registros 38193 a 38197. También se da una descripción del formato de almacenamiento de datos, de lo que se deduce que el número entero de paquetes transmitidos se almacena en formato hexadecimal, y el valor de 11223344 paquetes será escrito como 0xAB4130, de derecha a izquierda.

Haz una solicitud:

$ modbus read 192.168.0.17 38193 4 38193 0x0000 38194 0x0000 38195 0x0000 38196 0x3459 

leer es un comando de lectura . El programa en sí mismo entiende qué comando de lectura específico usar dependiendo de la dirección del registro, en nuestro caso el comando "04" se usará para leer registros de 16 bits.

192.168.0.17 : dirección IP del dispositivo.

38193 - La dirección de inicio del registro.

4 : desplazamiento relativo a la dirección de inicio. Leímos cuatro registros para el puerto 1, como sigue de la hoja de datos.

Obtenemos una respuesta que contiene los valores de cuatro registros. Vemos que el número de paquetes es pequeño: 0x3459, es decir, 13401, el interruptor se activó recientemente.

Desventajas del protocolo Modbus


Para ser justos, vale la pena mencionar las deficiencias del protocolo. Dado que se desarrolló hace más de 40 años, cuando el rendimiento del procesador fue significativamente menor y los protocolos se desarrollaron sin tener en cuenta la protección de datos, tiene una serie de desventajas:

  • El protocolo no proporciona autenticación y cifrado de datos transmitidos. Por lo tanto, cuando se usa Modbus TCP, se deben usar túneles VPN adicionales.
  • El esclavo no puede iniciar la transferencia de datos, por lo que el maestro debe sondear constantemente a los esclavos.
  • El dispositivo esclavo no puede detectar la pérdida de conexión con el maestro. Este problema se sigue directamente del anterior.

Sin embargo, a pesar de todas las deficiencias, Modbus sigue siendo el protocolo industrial más común y, gracias a su apertura, facilita la combinación de dispositivos de diferentes fabricantes. Los bajos requisitos de recursos permiten integrar el protocolo en los dispositivos de más bajo consumo.

Hardware habilitado para Modbus


Advantech ofrece una amplia gama de equipos industriales con soporte de protocolo Modbus para cualquier tarea: automatización, control, recopilación y transmisión de datos.

ADAM-6000 y WISE-4000 - Módulos de E / S remotas



Los módulos de las series ADAM-6000 y WISE-4000 le permiten controlar de forma remota las entradas / salidas digitales y analógicas utilizando el protocolo Modbus TCP. Se utiliza para controlar dispositivos periféricos y recopilar datos en modo esclavo. Se pueden combinar con un controlador lógico programable o conectarse directamente a un servidor SCADA. ⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀️

EKI-1200 - Pasarelas Modbus para conversión de interfaz



Para convertir los protocolos Modbus RTU / ASCII a Modbus TCP, se utilizan puertas de enlace Modbus. Los dispositivos de la serie EKI-1200 tienen incorporadas hasta cuatro interfaces seriales RS-232/422/485 y dos puertos Ethernet. Le permiten combinar dispositivos con diferentes protocolos en una sola red. Por ejemplo, conecte un dispositivo esclavo que solo sea compatible con Modbus RTU a través de la interfaz RS-485 a un segmento de red Modbus TCP.

APAX-5000, ADAM-3600, WISE-5000 - controladores de automatización


Los controladores admiten funciones Modbus RTU como esclavo / maestro y cliente / servidor Modbus TCP.



Ejemplos de aplicación


Sistema de monitoreo de invernadero


La solución de monitoreo Advantech integra el software TPC-1070H, ADAM-6024, ADAM-6050, ADAM-6060 y WebAccess en un gabinete de máquinas junto a tierras de cultivo. Al conectarse a varios dispositivos sensibles, los módulos ADAM-6000 pueden recibir datos ambientales en tiempo real y monitorear el cambio de equipos para garantizar que el invernadero se encuentre en el entorno óptimo para el crecimiento de las plantas. Gracias a la característica especial de Advantech, la lógica de condición gráfica (GCL), los usuarios pueden definir sus propias reglas de lógica de control y cargar estas reglas en los módulos de E / S Ethernet ADAM-6000, y luego los módulos ejecutan automáticamente reglas lógicas como módulos independientes. el controlador Otra característica: Peer-to-Peer (P2P) utiliza la red Ethernet más abierta y flexible para no solo simplificar el proceso de implementación sin un controlador, sino también ahorrar en costos de hardware.

Todos los datos recibidos se transmiten a través de Ethernet a una computadora con un panel táctil TPC-1070H. Con un sistema de enfriamiento sin ventilador y un panel frontal compatible con IP65, el TPC-1070H es un diseño robusto y compacto adecuado para un entorno operativo cambiante, y sus potentes capacidades informáticas pueden manejar grandes cantidades de datos. Para la administración de dispositivos, Advantech WebAccess permite a los ingenieros o gerentes ver, monitorear y configurar el sistema de monitoreo a través de una intranet o Internet usando un navegador web estándar desde cualquier dispositivo, incluidas tabletas y teléfonos inteligentes.



Monitoreo del sistema solar de calentamiento de agua.


La compañía de ingeniería debería haber podido controlar la cantidad de energía solar, temperatura y flujo de agua en un sistema de calentamiento de agua con energía solar para una piscina de tamaño olímpico proporcionada por su panel solar recientemente desarrollado. También deberían poder monitorear directamente estos valores y sus alarmas en los paneles LCD y almacenar estos valores para referencia futura.

Los módulos Adam de Advantech proporcionaron al cliente una solución que utilizaba módulos de adquisición de datos conectados a través de RS485 y un bus de dos hilos para transmitir datos desde todos los sensores. Esta arquitectura de sistema tiene dos ventajas principales: en primer lugar, le permite agregar más sensores a los módulos de recolección de datos en cualquier momento, y en segundo lugar, es muy fácil agregar etiquetas adicionales al software para monitorear y registrar estos valores en una PC.

Source: https://habr.com/ru/post/450234/


All Articles