Wiesemann & Theis GmbH

Tecnología de redes, sensores e interfaces para la industria, la oficina y la informática

Información básica:

Modbus-TCP

Protocolo estándar para técnicas de automatización



Originalmente Modbus fue desarrollado por la empresa Modicon (hoy Schneider Electric) como bus de campo serial para la comunicación entre sus unidades de control.


La clara y sencilla estructura del protocolo Modbus ha llevado a que también otros fabricantes hayan integrado Modbus en sus equipos. De ese modo, Modbus se ha convertido en un estándar establecido hasta hoy.


El principio maestro/esclavo

Modbus trabaja según el principio de maestro/esclavo. Esto significa que hay al menos un maestro y al menos un esclavo.

Los esclavos en Modbus son, por ejemplo, los controles por PLC, Web-IO u otros módulos IO descentralizados para señales digitales y analógicas.

El maestro (o master ) es siempre el interlocutor que toma la iniciativa, es decir que envía a un esclavo una solicitud o la activación de la función deseada. Cada esclavo tiene una dirección unívoca. Normalmente el esclavo es pasivo y solo responde cuando recibe una solicitud en su dirección.

Comunicación Modbus-TCP

Maestro/esclavo - cliente/servidor

Con la creciente importancia del Ethernet TCP/IP como opción de transmisión se ha adaptado el protocolo Modbus prácticamente 1:1 de la transmisión serial de datos a TCP.

Modbus TCP trabaja según el principio de cliente/servidor, donde el maestro asume la función de cliente y los esclavos la de servidores. Por lo tanto, el maestro de Modbus tiene que establecer una conexión TCP explícita para cada esclavo de Modbus. Esa conexión se mantiene el tiempo que dure la comunicación. No se establece una nueva conexión para cada solicitud.

El puerto servidor de TCP estándar para Modbus TCP es el 502.

Registros y variables

Direcciones de memoria o también registros a través del maestro de Modbus, es decir el cliente.

Uno se lo puede imaginar como si el esclavo de Modbus, es decir el servidor, tuviese un armario con muchos cajones perfectamente numerados. Cada cajón tiene asignada una función.

Si el maestro de Modbus requiere determinada información, indica en su solicitud el número del cajón correspondiente y el esclavo le envía ese contenido.

Cuando el maestro de Modbus desea activar una acción en el esclavo, por ejemplo una salida de conmutación, entonces deposita la información necesaria en el cajón con el número correspondiente.

Como ya se ha indicado al principio, esto se ejecuta en realidad a través de las correspondientes direcciones de memoria (direcciones de registros). Se dispone de un máximo de 65536 direcciones. Las funciones asignadas a las direcciones no están unificadas, no es algo predeterminado.

Por regla general la memoria está ordenada por funciones en secciones.

Nombre Tipo de datos Acceso Descripción
Discrete 1 bit Solo lectura Entrada digital o estado de conmutación
Coil 1 bit Lectura o escritura Salida digital o estado de conmutación
Input Register 16 bit Solo lectura Valor entre 0 y 65535 o valor analógico o valor de contador
Holding Register 16 bit Lectura o escritura Valor entre 0 y 65535 o valor analógico o valor de contador


Function Codes

Los Function Codes sirven para determinar el modo de acceso a cada tipo de datos dentro del protocolo Modbus. A continuación les ofrecemos una lista de los Function Codes más habituales.

FC (dec.) FC (hex.) Descripción
01 0x01

Read Coils
Lectura salidas o estados de conmutación digitales

02 0x02

Read Discrete Inputs
Lectura entradas o estados de conmutación digitales

03 0x03

Read Holding Registers
Lectura de registros (de salida) de 16 bit

04 0x04

Read Input Registers
Lectura de registros (de entrada ) de 16 bit

05 0x05

Write Single Coil
Escritura de una salida única o salida de conmutación

06 0x06

Write Single Register
Escritura de un único registro de 16 bit

15 0x0F

Write Multiple Coils
Escritura de varias salidas o salida de conmutación

16 0x10

Write Multiple Registers
Escritura de varios registros (de salida) de 16 bit

07 0x07

Read Exeption Status
Solicitar estado de errores


Estructura del protocolo Modbus

El marco del protocolo para Modbus TCP presenta la siguiente estructura:

Estructura del paquete Modbus-TCP


Transaction ID
El Transaction ID es algo así como un número de solicitud y el maestro lo asigna añadiendo una unidad con cada solicitud. El cliente responde con el mismo Transaction ID.

Protocol ID
En Modbus TCP siempre 0.

Length
Longitud de los datos Modbus en byte más dos.

Unit ID
En el protocolo serial de Modbus era la dirección del esclavo. Este campo se ha mantenido por razones de compatibilidad. Sin embargo, en Modbus TCP el direccionamiento unívoco se efectúa a través de la dirección de IP del esclavo.

Function Code
El protocolo Modbus define a través de los Function Codes numerados la función que debe activar la solicitud enviada por el maestro.

Modbus Data
El contenido de la sección Modbus Data depende del Function Code utilizado y por eso su tamaño puede variar. También la dirección de los datos desempeña un papel en la estructura de la sección Modbus Data.

Cuando los datos se dirigen del maestro al esclavo, los dos primeros bytes contienen siempre la dirección de la memoria a consultar.

Estructura del paquete Modbus-TCP


El siguiente ejemplo muestra el aspecto de un paquete Modbus TCP para abrir dos registros con Function Code 3 a partir de la dirección de memoria 0x1020.

Estructura del paquete Modbus-TCP FC03


El paquete de respuesta tiene una estructura distinta. Aquí en los primeros byte del Modbus Data está codificada la cantidad de bytes del registro transmitidos. En los siguientes 4 bytes se encuentran los contenidos de los registros solicitados.

Estructura del paquete Modbus-TCP FC03


A pesar de la reducida estructura del protocolo, Modbus TCP ofrece una gran flexibilidad para la comunicación industrial.

Consejo: compruebe si el fabricante del equipo ha expresado la descripción de las direcciones de memoria en decimales o hexadecimales.


Fundamentos básicos sobre los protocolos industriales más habituales

Productos para aplicaciones industriales con protocolos estándar

^