Introducción a Modbus y análisis de protocolos

1. Introducción a Modbus

Modbus es un protocolo de comunicación, un lenguaje común utilizado principalmente en controladores electrónicos. Modbus admite una variedad de interfaces eléctricas, como RS232, RS485, TCP/IP, etc. La mayoría de las comunicaciones de dispositivos Modbus se realizan a través de conexiones seriales o TCP/IP.

Normalmente, Modbus es una arquitectura maestro-esclavo, es decir, el nodo de comunicación es el Maestro, y otros nodos que usan el protocolo Modbus para participar en la comunicación son nodos esclavos (hasta 247, el rango de direcciones es 1-247, y el nodo 0 es la dirección de transmisión). Cada dispositivo esclavo tiene una dirección única. Solo puede haber un nodo maestro en el bus.

El modo de transmisión Modbus se puede dividir en dos modos: ASCII y RTU.Todos los dispositivos en la misma red deben estar unificados, ya sea en modo ASCII o RTU, y los dos no pueden coexistir. En términos relativos, la eficiencia de transmisión del modo RTU es mayor.

En el modo ASCII, un mensaje comienza con un carácter de dos puntos y termina con un carácter de retorno de carro y salto de línea.

En el modo RTU, se utiliza como señal un intervalo de pausa de al menos 3,5 caracteres entre el envío y la recepción del mensaje.

Introducción a los registros Modbus

Todos los datos se almacenan en registros, que pueden referirse a registros físicos o un área de memoria. Según el tipo de datos y sus respectivas características de lectura y escritura, Modbus divide los registros en 4 partes, que son las siguientes.

Introducción de dirección Modbus, código de función y campo de datos

La dirección de la trama del mensaje Modbus, que contiene 2 caracteres en modo ASCII y 1 carácter en modo RTU. El rango real de una sola dirección de dispositivo está entre 1 y 247 valores. 0 es la dirección de transmisión y 248-255 son direcciones reservadas.

El código de función consta de 1 byte, por lo que el rango de valores es 1-255. Los códigos de función comúnmente utilizados son los siguientes:

01: leer el estado de la bobina

02: leer estado de entrada

03: Leer registro de espera

04: Leer registro de entrada

05: Bobina simple forzada

06: Registro único prefabricado

15: Bobina múltiple obligatoria

17: Informar ID de dispositivo esclavo

22: Registro de escritura de máscara

23: registro de lectura/escritura

El contenido de datos está estrechamente relacionado con el código de función. Almacena los datos específicos que el código de función necesita para operar. El campo de datos está en bytes y la longitud es variable. Para algunos códigos de función, este campo puede estar vacío.

Dos, análisis del protocolo Modbus

ModbusTCP generalmente usa el puerto 502 como puerto para recibir paquetes.

ModbusTCP contiene un encabezado de aplicación, que ocupa 7 bytes. La longitud máxima de la trama de datos del protocolo Modbus TCP/IP es de 260 bytes.

Identificador de transmisión: Identificador de transacción. Ocupa 2 bytes. Marca el proceso de transmisión de una consulta/respuesta Modbus, que se puede configurar a 0, más 1 por cada comunicación, es generada por el cliente (dispositivo maestro), y se copia el valor al responder.

Identificador de protocolo: Identificador de protocolo. Ocupa 2 bytes. El protocolo Modbus es 0x00. Generado por el cliente, copie este valor al responder.

Longitud de bytes: Longitud. Ocupa 2 bytes. Los 4 bits superiores se establecen en 0X00, por lo que los bytes posteriores deben estar dentro de los 256 bytes; el cuarto bit registra la cantidad de bytes posteriores; generados por el cliente (dispositivo maestro) y regenerados al responder.

Identificador de la unidad: Identificador de la unidad. Ocupa 1 byte. Se utiliza para identificar dispositivos esclavos. Generado por el cliente, copie este valor al responder.

0x01 Leer estado de salida de bobina

La siguiente figura muestra el mensaje de solicitud de consulta y el contenido de la transmisión Modbus es "05 91 00 00 00 06 ff 01 00 00 00 0a".

05 91 (hexadecimal) es la identificación de transmisión, es decir, 1425 (decimal);

00 00 es la identificación del protocolo;

00 06 es la longitud de bytes;

ff es el identificador de la unidad, que es 255 (decimal);

01 es el código de función, ocupando 1 byte;

00 es el bit alto de la dirección de inicio de Modbus;

00 es el bit bajo de la dirección de inicio de Modbus;

00 es el bit alto del registro;

0a es el bit inferior del registro.

La siguiente figura muestra el mensaje de respuesta después de la consulta, y el contenido de la transmisión Modbus es "05 91 00 00 00 05 ff 01 02 01 00".

05 91 (hexadecimal) es la identificación de transmisión, es decir, 1425 (decimal);

00 00 es la identificación del protocolo;

00 05 es la longitud de bytes;

ff es el identificador de la unidad, que es 255 (decimal);

01 es el código de función, ocupando 1 byte;

02 es el número de bytes en el campo de datos;

01 00 es el campo de datos. En el campo de datos del mensaje de respuesta, cada bobina ocupa 1 bit, 01=0000 0001, 00=0000 0000. 1=ON, 0=OFF. Si el último byte de datos no puede llenar el estado de 8 bobinas (1 byte), se llena con 0.

0x02 Leer valor de entrada discreta

La siguiente figura muestra el mensaje de solicitud de consulta y el contenido de la transmisión Modbus es "05 92 00 00 00 06 ff 02 00 00 00 0b".

05 92 (hexadecimal) es la identificación de transmisión, es decir, 1426 (decimal);

00 00 es la identificación del protocolo;

00 06 es la longitud de bytes;

ff es el identificador de la unidad, que es 255 (decimal);

02 es el código de función;

00 es el bit alto de la dirección de inicio de Modbus;

00 es el bit bajo de la dirección de inicio de Modbus;

00 es el bit alto del registro;

0b es el bit bajo del registro.

La siguiente figura muestra el mensaje de respuesta después de la consulta, y el contenido de la transmisión Modbus es "05 92 00 00 00 05 ff 02 02 02 00".

05 92 (hexadecimal) es la identificación de transmisión, es decir, 1426 (decimal);

00 00 es la identificación del protocolo;

00 06 es la longitud de bytes;

ff es el identificador de la unidad, que es 255 (decimal);

02 es el código de función;

02 es el número de bytes en el campo de datos

02 00 es el campo de datos. En el campo de datos del mensaje de respuesta, cada bobina ocupa 1 bit, 02=0000 00010, 00=0000 0000. 1=ON, 0=OFF. Si el último byte de datos no puede llenar el estado de 8 bobinas (1 byte), se llena con 0.

0x04 Leer valor de registro de entrada

La siguiente figura muestra el mensaje de solicitud de consulta y el contenido de la transmisión Modbus es "07 45 00 00 00 06 ff 04 01 8f 00 02". El significado general del mensaje de solicitud en la siguiente figura es: es necesario leer la dirección de registro de entrada 30144-30145, un total de 2 contenidos de registro. Es decir, lea el contenido de la dirección del protocolo Modbus 143 a 144.

07 45 (hexadecimal) es la identificación de transmisión, es decir, 1861 (decimal);

00 00 es la identificación del protocolo;

00 06 es la longitud de bytes;

ff es el identificador de la unidad, que es 255 (decimal);

04 es el código de función;

01 es el bit alto de la dirección de inicio de Modbus;

8f es el bit bajo de la dirección de inicio de Modbus, la dirección de inicio es 143.

00 es el bit alto del registro;

02 es el bit bajo del registro y la cantidad de lectura es 2.

La siguiente figura muestra el mensaje de respuesta después de la consulta, y el contenido de la transmisión Modbus es "07 45 00 00 00 07 ff 04 04 b6 00 47 7f".

07 45 (hexadecimal) es la identificación de transmisión, es decir, 1861 (decimal);

00 00 es la identificación del protocolo;

00 07 es la longitud de bytes;

ff es el identificador de la unidad, que es 255 (decimal);

04 es el código de función;

04 es el número de bytes en el campo de datos.

b6 00 47 7f es el campo de datos. En el campo de datos del mensaje de respuesta, cada bobina ocupa 1 bit, b6=1011 0110, 00=0000 0000, 47=1000 0111, 7f=1111111. 1=ON, 0=OFF. Si el último byte de datos no puede llenar el estado de 8 bobinas (1 byte), se llena con 0.

3. Acerca de la auditoría/protección de datos Modbus

El núcleo de la auditoría/protección de datos de Modbus es realizar una decodificación y análisis en profundidad de los mensajes de protocolo, registrar elementos clave como el tiempo de funcionamiento, la ubicación, el operador y el comportamiento operativo, y confiar en el almacenamiento efectivo y el control del comportamiento de los datos de comportamiento operativo para realizar el sistema Modbus El análisis de auditoría y el bloqueo de excepciones del registro de seguridad fortalecen la capacidad de gestión y control de la organización, y la capacidad de seguimiento, análisis y juicio retrospectivos después del evento.

Supongo que te gusta

Origin blog.csdn.net/a59a59/article/details/106493965
Recomendado
Clasificación