Comprenda el protocolo Modbus en un artículo
Modbus ha permitido que miles de dispositivos de automatización se comuniquen desde su aparición en 1979 como el estándar de facto para enlaces serie industriales. Modbus™ es un protocolo de mensajería de capa de aplicación en la capa 7 del modelo OSI que proporciona comunicación cliente/servidor entre dispositivos conectados a diferentes tipos de buses o redes. Los protocolos de capa de aplicación Modbus y las especificaciones de servicio incluyen principalmente dos categorías: una es Modbus en el enlace serie (el enlace serie Modbus depende de los estándares TIA/EIA: 232-F y 485-A), y la otra es TCP/Modbus sobre IP (Modbus ?TCP/IP depende de los estándares IETF: RFC793 y RFC791 relacionados). A continuación se muestra un diagrama esquemático de la pila de comunicación Modbus:
El protocolo Modbus permite una comunicación simple dentro de una variedad de arquitecturas de red para cada dispositivo (PLC, HMI, panel de control, controlador, control de movimiento, entrada/salida dispositivo) puede utilizar el protocolo Modbus para iniciar la operación remota. La misma comunicación es posible a través de Modbus a través de enlaces serie y redes Ethernet TCP/IP, y algunas puertas de enlace permiten la comunicación entre varios buses o redes utilizando el protocolo Modbus. Un ejemplo de la arquitectura de red Modbus es el siguiente:
El protocolo Modbus es esencialmente el mismo que nuestro protocolo personalizado habitual. Es un formato de transmisión de datos y también consta de una trama de inicio, una trama de datos y un. marco de verificación, etc. Composición, pero el protocolo Modbus está más estandarizado.
El protocolo Modbus define una unidad de datos de protocolo (PDU) simple que es independiente de la capa de comunicación subyacente. El mapeo del protocolo Modbus en un bus o red específico puede introducir algunos campos adicionales en la unidad de datos de la aplicación (ADU). El protocolo de trama Modbus general se muestra en la siguiente figura:
El análisis específico es el siguiente:
Campo de dirección: información de dirección de los nodos secundarios;
Código de función: indica la acción que debe realizar el servidor. El rango de código válido es decimal 1-255 (128-255 es). reservado para respuestas de excepción). Al recibir datos del cliente. Cuando la máquina envía un mensaje al dispositivo servidor, el campo del código de función informa al servidor qué operación realizar (el código de función tiene mucho contenido, se recomienda consultar el). Manual de instrucciones del protocolo Modbus, que es muy claro).
Datos: el contenido de los datos transmitidos en una determinada solicitud, los datos pueden no existir (longitud 0, en este caso el servidor no necesita ninguna información adicional). El código de función sólo describe la operación.
Comprobación de errores: Verifica si los datos recibidos y enviados son correctos.
Si no se produjeron errores relacionados con la funcionalidad Modbus solicitada en un ModbusADU recibido correctamente, el campo de datos de respuesta de servidor a cliente incluye los datos de la solicitud. Si se produce un error relacionado con la solicitud de la funcionalidad Modbus, el campo contiene un código de excepción que la aplicación del servidor puede utilizar para determinar la siguiente operación a realizar. El diagrama de estado para el procesamiento de transacciones Modbus es el siguiente:
Una vez que el servidor procesa la solicitud, se establece una respuesta Modbus utilizando la transacción del servidor Modbus adecuada. Dependiendo de los resultados del procesamiento, se pueden establecer dos tipos de respuestas. :
Una respuesta Modbus correcta: código de función de respuesta = código de función de solicitud;
Una respuesta de excepción Modbus: se utiliza para proporcionar al cliente información relacionada con los errores encontrados durante el procesamiento y proporcionar una código de excepción para indicar el motivo del error. Código de función de respuesta = código de función de solicitud 0x80.
Desglose el diagrama anterior y comprendalo. Por ejemplo, el cliente y el servidor ejecutan el protocolo de comunicación Modbus. Cuando el servidor responde al cliente, utiliza códigos de función para indicar un estado normal (sin errores). ) respuesta o algún tipo de error (llamado respuesta de excepción).
Para una respuesta normal, el servidor solo responde al código de función original. El procesamiento de transacciones Modbus (sin errores) se muestra en la siguiente figura:
Para una respuesta anormal, el El servidor devuelve un código de función que es el mismo que el código de función original. Para códigos equivalentes a códigos de función, establezca el bit más significativo del código de función original en lógica 1. El procesamiento de transacciones Modbus (respuesta de excepción) es como se muestra en la siguiente figura. :
Modbus utiliza un Big-Endian para representar direcciones y elementos de datos. Esto significa que cuando se transmiten varios bytes, el bit más significativo se envía primero. Por ejemplo:
Datos de registro
0x4001?0x1234
El primer byte enviado es 0x12 y el primer byte es 0x34.
Modbus se basa en un modelo de datos basado en una serie de tablas con diferentes características. Las cuatro tablas básicas son las que se muestran en la siguiente tabla:
Para cualquier elemento de la tabla básica. , el protocolo permite que se seleccionen un solo 65536 elementos de datos de forma independiente, y las operaciones de lectura y escritura de esos elementos están diseñadas para abarcar múltiples elementos de datos consecutivos hasta el límite de especificación de tamaño de datos. Este límite de especificación de tamaño de datos está relacionado con el código de función de procesamiento de transacciones. .
El concepto de modelo de datos es limitado y abstracto. Profundicemos nuestra comprensión a través de los siguientes dos ejemplos.
Ejemplo 1: Dispositivo con 4 bloques independientes
Descripción del ejemplo: Estructura de datos en un dispositivo, que contiene cantidades digitales y analógicas, cantidades de entrada y cantidades de salida. Dado que los datos de diferentes bloques no están relacionados, cada bloque es independiente entre sí. Utilizando el modelo de datos Modbus, se accede a cada bloque de acuerdo con diferentes códigos de función Modbus. El principio de implementación es el siguiente:
Ejemplo 2: Dispositivo con solo 1 bloque
Descripción del ejemplo: Uno. dispositivo Solo hay 1 bloque de datos Usando el modelo de datos Modbus, es posible obtener los mismos datos a través de varios códigos de función Modbus, o mediante acceso de 16 bits o 1 bit de acceso. El principio de implementación es el siguiente: