Modbus Maestro-Esclavo

Modbus es uno de los protocolos de comunicación más utilizados. Es muy sencillo, rápido y seguro. Cuando se usa con un puerto serie, se denomina Modbus RTU, y cuando se usa con Ethernet, se denomina Modbus TCP/IP. Recientemente, Modbus UDP también se ha popularizado. En el pasado, también existía Modbus ASCII, pero ya no se usa ampliamente.

Haga clic aquí para obtener el código maestro Modbus para los PLC Fulmatic 7.

Tablas Modbus

Primero, debemos comprender la estructura de la tabla Modbus. El protocolo Modbus tiene cuatro tablas. Dos de ellas son analógicas (de 16 bits) y las otras dos son de bits. Cada tabla contiene 65 536 variables. En otras palabras, la tabla de retención analógica contiene 65 536 palabras y la tabla de bobina de salida discreta contiene 65 536 bits.

Rango de direccionesLectura y escrituraNombre de la tablaTip
0-65535Leer y escribirBobinas de salida discretasBit 1
0-65535Solo lecturaContactos de entrada discretosBit 1
0-65535Solo lecturaRegistros de entrada analógica16 bits
0-65535Leer y escribirRegistros de retención analógicosBit 16
Tabla Modbus

Si bien la tabla real es la que se muestra arriba, el uso más común se muestra en la tabla siguiente. En la tabla anterior, los usuarios deben especificar el nombre de la tabla y la dirección de la variable para un valor. Por ejemplo, debe expresarse como "Analog Holding 500. word". En la tabla siguiente, las direcciones también especifican la tabla a la que pertenece la variable. Por ejemplo, para la dirección "Analog Holding 500. word", basta con escribir "40501". Dado que el campo de dirección es Analog Holding, la dirección inicial es 40001 + dirección de palabra 500 = 40501. Si fuera "Analog Input 500. word", sería 30501.

Rango de direccionesLectura y escrituraNombre de la tablaTip
1-9999Leer y escribirBobinas de salida discretasBit 1
10001-19999Solo lecturaContactos de entrada discretosBit 1
30001-39999Solo lecturaRegistros de entrada analógicaBit 16
40001-49999Leer y escribirRegistros de retención analógicosBit 16
Tabla de usos comunes de Modbus

El segundo método permite acceder a un gran número de campos de datos, aunque restringe el acceso a algunas direcciones. Existe un tercer método que permite representar todos los campos de datos con un único número. Este método se denomina direccionamiento Modbus de 6 dígitos. El rango de direcciones consta de 6 dígitos.

Rango de direccionesLectura y escrituraNombre de la tablaTip
1-65536Leer y escribirBobinas de salida discretasBit 1
100001-165536Solo lecturaContactos de entrada discretosBit 1
300001-365536Solo lecturaRegistros de entrada analógicaBit 16
400001-465536Leer y escribirRegistros de retención analógicosBit 16
Direccionamiento Modbus de 6 dígitos

Nota: Programa SCADA WinTr, Focus HMI Este programa, y ​​muchos otros similares, admiten direcciones de 5 y 6 dígitos. Admitir ambos estilos de direccionamiento simultáneamente genera un problema. En el direccionamiento de 6 dígitos, las bobinas de salida discretas (1-65536) entran en conflicto con las direcciones en el direccionamiento de 5 dígitos. Por lo tanto, en el direccionamiento de 6 dígitos... Bobinas de salida discretas Para ello, se debe colocar un cero al principio.

Hemos visto tres estructuras de tabla diferentes. La primera es la tabla real; las otras dos son simplemente dos métodos distintos para acceder a ella. Los fabricantes de dispositivos compatibles con Modbus pueden proporcionar esta tabla de direcciones mediante uno de estos tres métodos. En ese caso, tendrás que realizar conversiones de direcciones entre las tablas. O bien, puedes optar por no aprender esto y pedir ayuda a otros constantemente. He preparado la siguiente tabla para ilustrar estas conversiones.

Notificación de dirección inicialNotificación de segunda direcciónNotificación de tercera dirección
Analógico con soporte para 040001400001
Analógico con soporte para 100041001401001
Entrada analógica 10030101300101
Entrada Discreto 1010011100011
Direccionamiento Modbus

Consultas Modbus

Para leer o escribir datos en las tablas descritas anteriormente, el dispositivo maestro envía una consulta. El dispositivo esclavo responde a esta consulta. Mientras la comunicación continúe, el maestro enviará consultas y el esclavo responderá. Para comprender las consultas y respuestas de Modbus, recomiendo el sitio web https://www.simplymodbus.ca/FC03.htm, que utilizo con frecuencia . Toda la comunicación está relacionada con los valores de los bytes enviados y recibidos. Continuaré la explicación a continuación con un ejemplo de consulta Modbus.

Ejemplo de consulta Modbus:

A continuación, puede ver la consulta creada para leer 3 palabras de datos a partir del Registro de Retención 107 de un dispositivo con dirección de estación 17.

11: Dirección de la estación (11 hexadecimal = 17 decimal)
03: Código de función 3 (Código de lectura para registros de retención)
006B: Primera dirección de lectura (006B hexadecimal = 107 decimal o 40001 + 107 = 40108)
0003: Número de palabras a leer (03 hexadecimal = 3 decimal)
7687: CRC16 (verificación de redundancia cíclica)

Como se observa en la consulta anterior, podemos leer un número determinado de veces desde una dirección específica. Se utilizó el código de función 3 para la operación de lectura. Esto corresponde al campo Registro de retención. Si quisiéramos leer desde el campo Registro de entrada, sería necesario el código de función 4. Esta consulta, enviada a través del puerto serie, es recibida por todos los receptores de la línea. Sin embargo, solo el dispositivo con la dirección de estación 17 responderá. Antes de responder, la estación 17 verifica la información CRC, que en nuestro ejemplo es 7687. El dispositivo esclavo sabe que los dos últimos bytes de todos los bytes que recibe son el CRC. Y calcula los bytes que no son el CRC utilizando la fórmula CRC. Compara el CRC que calcula con el CRC que recibe. Si son iguales, entiende que la consulta se recibió sin errores, y si la dirección de la estación también es la misma, responderá sin duda. Puede que no siempre dé la respuesta correcta. Por ejemplo, si se consulta un rango de direcciones que no tiene, enviará un mensaje de error. Puedes ver los mensajes de error en este enlace: https://www.simplymodbus.ca/exceptions.htm

Si todo sale según lo previsto, la respuesta será la siguiente:

11: Dirección de la estación (11 hexadecimal = 17 decimal)
03: Código de función 3 (Código de lectura para registros de retención)
06: Número de bytes leídos (3 registros x 2 bytes = 6 bytes)
AE41: Valor de lectura, dirección 40108
5652: El valor leído es la dirección 40109
4340: El valor leído es la dirección 40110
49AD: CRC16 (verificación de redundancia cíclica)

Al recibir la respuesta anterior, el dispositivo maestro realiza varias comprobaciones, entre ellas la dirección de la estación, el CRC y el número de bytes leídos. En función de estas comprobaciones, la respuesta se acepta o se rechaza.

Otra informacion

  • En la comunicación por puerto serie, la transmisión de datos puede no ser siempre correcta. Esta distorsión es más pronunciada, especialmente cuando hay muchos armónicos, líneas largas o varios dispositivos. La correlación correlacional (CRC) es la única prueba de que los datos se han leído correctamente.
  • Tras la verificación CRC, se comprueba la dirección de la estación. Aunque existan varios dispositivos con la misma dirección, no será posible comunicarse con ellos. Cada dispositivo debe tener una dirección única. Las direcciones pueden asignarse a los dispositivos entre 0 y 255. Muchos productos del Lejano Oriente no funcionarán aunque se les asigne una dirección de 0.
  • El número máximo de registros de 16 bits que se pueden leer en una sola consulta es 127. Esto se debe a que el número máximo de bytes que se pueden leer es 254. Cuando se trata de datos discretos, el máximo es 255 x 8 = 2040 bits.
  • Las tablas analógicas no siempre son de 16 bits; pueden ser de 32 o 64 bits. Toda la comunicación se realiza mediante bytes. Sin embargo, el maestro y el esclavo los combinan internamente. Por ejemplo, 40001 y 40002 pueden considerarse como una variable de 32 bits. En este caso, entra en juego el parámetro de "orden de palabras". Algunos dispositivos pueden usar la primera palabra como el valor más grande, mientras que otros pueden usar la segunda palabra como el valor más grande. El valor de 32 bits sería (40001 x 65536) + 40002 (primera palabra como el valor más grande) o 40001 + (40002 x 65536) = segunda palabra como el valor más grande.
  • El dispositivo maestro envía una consulta al dispositivo esclavo y espera una respuesta. Si no recibe respuesta, el maestro debe reenviar la consulta o pasar a la siguiente. Este período de espera se denomina tiempo de espera.
  • Cuando el maestro recibe una respuesta a su consulta, no envía inmediatamente la siguiente. Debe esperar un tiempo. Si no espera, la respuesta del dispositivo esclavo y la nueva consulta del maestro se combinarán y podrían no ser aceptadas por los dispositivos esclavos. Este período de espera se denomina retardo.
  • Las consultas Modbus RTU y TCP/IP son diferentes. En TCP/IP, se añaden 6 bytes antes de la consulta y se omite el CRC final. Consulte aquí para obtener más información. https://www.simplymodbus.ca/TCP.htm
  • Para el uso de otros códigos de función Modbus https://www.simplymodbus.ca/FC01.htm Por favor visita.

Mensajes similares

  • PID

    FÓRMULA PID Este artículo explicará cómo realizar el control PID con un PLC y el algoritmo PID. El PID se utiliza en el 80% de los proyectos de automatización. El PID es una fórmula; el resultado calculado se transfiere a la salida ejecutándola a intervalos de tiempo específicos. Para obtener más información sobre la fórmula, consulte Wikipedia. En la fórmula PID, los valores del proceso se procesan utilizando los parámetros definidos por el usuario: P (proporcional), I (integral) y D (derivativo)...

  • Uso del temporizador de bloque de funciones

    En los PLC Fulmatic 7, no se pueden usar comandos estáticos como Temporizador y Contador dentro de los bloques de función. Debe crear sus propios Temporizadores o Contadores para los bloques de función. Puede descargar el código de ejemplo aquí. El programa Speed ​​PLC tiene 256 temporizadores de 1 milisegundo. Esta cantidad es insuficiente para proyectos grandes. Puede aumentar la cantidad de temporizadores creando temporizadores por software. Los bloques de función realizan la misma tarea para varias direcciones diferentes…

  • ¿Qué es un PLC?

    PLC son las siglas de "Controlador Lógico Programable". En turco, se traduce como "Controlador Lógico Programable". Es fundamental para los sistemas de automatización industrial. Prácticamente no existe ningún proyecto de automatización que no involucre un PLC.

  • PLC SOFT

    PLC para Raspberry Pi. PLC para Orange Pi. PLC para Windows. PLC para ordenador. PLC para Windows. El software PLC funciona con alto rendimiento en todos los sistemas operativos modernos. Esto le permite transformar hardware como ordenadores, Raspberry Pi u Orange Pi en un PLC completamente funcional en segundos. Además, puede utilizar eficientemente los GPIO del dispositivo como entrada/salida digital, PWM, puerto serie y SPI. También puede conectar un puerto serie USB a su sistema…

un comentario

Escribe una respuesta