Está en la página 1de 17

MODBUS

¿QUÉ ES EL PROTOCOLO MODBUS?


El Controlador Lógico Programable, son los equipos empleados en el sector
industrial para llevar el control de máquinas, líneas de producción y en general
todo lo relacionado con los procesos propios de la Industria. Antes de aparecer
el primer PLC todo trabajaba bajo un modelo conocido como lógica cableada,
empleando temporizadores, relés y otros cuantos elementos se controlaba la
secuencia de funcionamiento de las máquinas. Muchos cables…realizar un
cambio, ajuste, reconfiguración o mantenimiento no era imposible, el tema no
radica allí el problema es el tiempo que tardas para realizar los ajustes, además
este tipo de sistemas con poco escalables.

El primer PLC aparece aproximadamente a finales de los años 60, se propone


un sistema conocido en su momento como Modular Digital Controller el
acrónimo que aún ronda en la actualidad, padre de los PLC´s el histórico
MODICON cuyo modelo exacto era Modicon 084. El ingeniero que lideró todo
este proceso fué Dick Morley.

En 1973 con el Modicon penetrando el sector industrial surge la necesidad de


comunicar los equipos y es allí donde nace Modicon Bus (Modbus) el protocolo
creado para comunicar los equipos Modicon. Muchos se estarán preguntando
cómo es posible que algo tan antiguo se nombre en la actualidad, pues tanto el
Modicon como Modbus son tan vigentes que el protocolo podría estar
implementado en tu Nevera. Esta es la razón, Schneider Electric multinacional
que en la actualidad es líder en el campo de la electricidad y la automatización
absorbe a Modicon en 1997 lo que ha permitido la evolución y mejora tanto en
el Hardware como en el Protocolo Modbus.

El mundo de los protocolos podríamos decir que existen dos grandes


clasificaciones: protocolos abiertos y protocolos propietarios. Modbus es un
protocolo abierto, tenemos a nuestra disposición toda la información y
precisamente gran parte del material compartido en este artículo proviene de
Modbus Organization les comparto la misión en español.

La Organización Modbus es un grupo de usuarios independientes y


proveedores de dispositivos de automatización que busca impulsar la adopción
del conjunto de protocolos de comunicación Modbus y la evolución para
abordar arquitecturas para sistemas de automatización distribuidos en múltiples
segmentos del mercado. La organización Modbus también proporcionará la
infraestructura para obtener y compartir información sobre los protocolos, su
aplicación y certificación para simplificar la implementación por los usuarios, lo
que resulta en una reducción de costos.

Modbus es un protocolo de solicitud-respuesta implementado usando una


relación maestro-esclavo. En una relación maestro-esclavo, la comunicación
siempre se produce en pares, un dispositivo debe iniciar una solicitud y luego
esperar una respuesta y el dispositivo de inicio (el maestro) es responsable de
iniciar cada interacción. Por lo general, el maestro es una interfaz humano-
máquina (HMI) o sistema SCADA y el esclavo es un sensor, controlador lógico
programable (PLC) o controlador de automatización programable (PAC). El
contenido de estas solicitudes y respuestas, y las capas de la red a través de
las cuales se envían estos mensajes, son definidas por las diferentes capas del
protocolo.

Figura 1. Una Relación de Red Maestro-Esclavo

PROTOCOLO MODBUS | Características

En Modbus existen dos tipos de perfiles que pueden tomar los equipos
dependiendo la variación del protocolo: maestro o esclavo| cliente o servidor.
Un fabricante puede habilitar las siguientes posibilidades en su hardware,
especialmente para las variaciones con trabajan sobre estándares seriales:

 El equipo sólo puede ser esclavo


 El equipo sólo puede ser maestro
 El equipo puede configurarse como maestro o como esclavo

Podremos encontrarnos con cualquiera de estas opciones, por ejemplo es


habitual que una pantalla o HMI tenga de fábrica un perfil de maestro, un
controlador de temperatura de fábrica viene con el perfil de esclavo.

Especificaciones relacionadas con el perfil de un equipo Modbus


Referencias de algunos equipos que tienen perfil de esclavo

MODBUS y el Modelo OSI

Todos los protocolos están desarrollados bajo el marco de referencia conocido


como el Modelo OSI (Open System Interconnection) que tiene 7 niveles o
capas.

 Capa Física
 Capa de Enlace
 Capa de Red
 Capa de Transporte
 Capa de Sesión
 Capa de Presentación
 Capa de Aplicación

Por ejemplo Modbus RTU tiene implementada la capa física, la capa de enlace
y la capa de aplicación, vamos a analizar un poco lo que se encuentra en cada
nivel para ésta variante.

Capa Física

El Protocolo Modbus RTU puede trabajar sobre las siguientes


recomendaciones en la capa física:

 RS 232
 RS 422
 RS 485

Teniendo en cuenta el número de equipos y los perfiles en RS232 se tienen 2


elementos solamente, evidentemente uno es el esclavo y el otro es el maestro.
En RS 422 se pueden tener hasta 32 equipos pero sólo puede existir un
maestro, por consiguiente los 31 restantes son esclavos. En RS 485 se tiene el
mismo número de equipos que en RS 422, se podrían tener varios maestros,
pero para el Protocolo Modbus RTU no aplica tener varios maestros en la red,
la variación Modbus Plus (+) muestra algunas alternativas frente a las
topologías.

1) La capa física se encarga de la transmisión de bits al canal de comunicación.

2) Define los niveles de la señal eléctrica con la que se trabajará.

3) Controla la velocidad de transmisión(duración de un bit).

Al igual que hay una red telefónica unida por cables de unas características y se envían
unas señales eléctricas de una forma determinada que permite que hablemos entre
nosotros, el protocolo MODBUS en su capa física establece tres subniveles:

–MEDIO como es el canal de transmisión (cable, F.O. , radio,..)

–MAU (Media attachment Unit).Contiene la electrónica (donde se generan o donde se


reciben los niveles eléctricos).

–PLS (Physical Logical Signal ).Codificación en la emisión de la información binaria a


señales eléctricas y decodificación en la recepción.

Capa de Enlace

En la capa de enlace, se definen los ID’s de los equipos (números enteros


1,2,3…255), los perfiles (maestro – esclavo) y la técnica para detectar la
integridad de la información enviada en la Trama entre otros aspectos. En
Modbus RTU se emplea el CRC (chequeo de redundancia cíclica).
Modelo OSI y Capas de Modbus RTU, Imagen tomada de Modbus
Organization

Como lo muestra la figura anterior la capa de enlace de OSI se llama Modbus


Master/Slave frente a las capas del Protocolo Modbus RTU.

1) Se encarga de establecer una comunicación libre de errores entre dos equipos.

2) Forma la trama organizándola información binaria y la pasa a la capa física.

Esta capa tiene dos subniveles:

–MAC (Media Acces Control).Controla cuando el canal de transmisión está libre para
poder enviar la información.

–LLC (Logical Link Control). Controla y recupera los errores, también codifica y
decodifica la información a HEXADECIMAL o ASCII.

Capa de Aplicación

La capa de aplicación de Modbus trabaja bajo la abstracción Cliente /Servidor,


para el caso de Modbus RTU el rol de cliente lo desempeña el Maestro y el rol
de servidor lo toman los esclavos.

Trama del Protocolo Modbus

La trama es una estructura definida en el protocolo en donde los equipos


intercambian información cumpliendo este formato. En la trama se definen los
campos y el tamaño asignado para cada uno.

[ID][FUNCIÓN][DATO][CRC]
La estructura anterior muestra de forma genérica la trama del protocolo, vamos
a ver cada campo.

ID: Dirección del esclavo, número enteros normalmente desde 1, hasta 255.

FUNCIÓN: Tipo de solicitud que se le realiza al esclavo, codificada de manera


numérica, normalmente números que inician en 1,2,3,4, etc.

DATO: Este campo se emplea para enviar información complementaria a la


solicitud realizada al esclavo, o se emplea para responder a la solicitud, por la
tanto el campo de dato tiene una estructura diferente cuando el mensaje lo
envía el maestro o cuando es la respuesta de un esclavo. Miremos esta
situación con más detalle.

Trama Maestro

[ID][FUNCIÓN][DATO][CRC]

Para el maestro el campo dato está integrado por dos subcampos, la dirección
y la longitud. En la dirección se indica al esclavo en que dirección debe buscar
lo que se ha solicitado a través de la función y la longitud indica a partir de esa
dirección cuantos elementos se deben tomar.

Estructura de la trama de un maestro Modbus


Trama esclavo | Trama slave

[ID][FUNCIÓN][DATO][CRC]

La estructura se mantiene para el esclavo pero nuevamente el cambio está en


el campo de Dato, pues aparecen dos subcampos que son: Número de bytes
para dar la respuesta y la respuesta en sí.

Estructura de la trama del Esclavo

Tamaño de la Trama

Ahora vamos a analizar cada campo cuantos bits, Bytes o Words ocupan, para
el caso del Protocolo Modbus se organizan bloques de tamaño mínimo de
Bytes como lo muestra la siguiente estructura.

[1 Byte][1 Byte][nxByte][1 Byte][1 Byte]

Recuerda el primer corchete es la dirección del esclavo (slave), con un Byte se


pueden tener valores entre 0 y 255 para colocar la dirección (ID) del equipo. El
segundo corchete es la función y con un Byte se tiene también la posibilidad de
colocar valores entre 0 y 255 pero se debe tener en cuenta que no existen 256
funciones en el protocolo, son menos ya lo veremos más adelante. El tercer
corchete es el campo de dato y es flexible dependiendo de si es un maestro o
un esclavo. Y finalmente los últimos dos corchetes son dedicados al CRC
(Chequeo de Redundancia Cíclica).
Tamaño de cada campo de la trama del Protocolo Modbus

Funciones del Protocolo

Recuerda la forma de hacer solicitudes al esclavo es por medio de la función la


cual tiene asignado un Byte, realmente las funciones del protocolo Modbus van
desde el #1 hasta el #127 y se clasifican en tres grupos: funciones públicas,
funciones definidas por el usuario y funciones reservadas. Nos interesa
estudiar las que emplean todos los equipos que tienen implementado el
Protocolo y son aquellos códigos que son públicos. Vamos a estudiar los
códigos disponibles según la Modbus Organization.

Funciones Públicas Disponibles en Modbus, tomado de Modbus Organization


Antes de comenzar a explicar esta tabla voy a seleccionar los códigos más
comunes implementados en los equipos, recuerden, a pesar de tener
disponibles muchas funciones en el Protocolo los fabricantes de los equipos
implementan aquellos códigos que son claves de acuerdo a la funcionalidad
que tiene el hardware.

Funciones más comunes del Protocolo Modbus

01 ->Read Coils

02->Read Discrete Inputs

03->Read Holding Register

04->Read Input Register

05->Write Single Coil

06->Write Single Register

15->Write Multiple Coils

16->Write Multiple Registers

Estas 8 funciones son muy habituales, pero no quiere decir que los fabricantes
las implementan todas en un equipo, se puede dar el caso que de las
mencionadas anteriormente sólo se implemente dos o tres, lo explico mejor con
un ejemplo.

Módulo Protocolo Modbus para Equipo Zelio


El módulo SR3 MBU le permite al equipo Zelio de Schneider Electric
comunicarse por medio del Protocolo Modbus se utiliza como interfaz mecánica
un conector RJ-45. Una vez resuelto todo lo relacionado con la capa física
revisamos los funciones que soporta empleando el módulo.

Funciones del Protocolo Modbus en Zelio

Sólo vienen disponibles 4 funciones del Protocolo Modbus la 03, 06, 16 (10
Hex) y 43 (2B Hex). Las funciones del equipo Zelio están expresadas en
formato Hexadecimal, el código 43 es ¨Read Device Indentification¨.

Vamos entonces a analizar como interpretar los códigos en el campo de


función de la trama.

Código [01] Read Coils

La interpretación literal es leer bobinas, suena raro la verdad para aquellos que
no conocen un PLC, pero es importante anotar que los equipos tienen
diferentes tipos de salidas entre las que se encuentran las Relé y de allí el
nombre de bobinas ya que el elemento que se debe energizar para activar una
salida es la bobina. Este nombre del código viene de los primero PLC´s ya que
este tipo de salida es típica y apareció en los primeros Modicon.

Cómo funciona entonces, el maestro cuando solicita a un esclavo la función


[01] le está pidiendo información del estado de sus salidas, no importa si son
tipo digital, tipo relé, etc.

Código [02] Read Discrete Inputs

Leer entradas discretas, con este código el maestro le solicita al esclavo


información del estado de sus entradas, no importa el tipo de entrada que
tenga. Un ejemplo de respuesta del esclavo puede ser “tengo encendida la
entrada 1, la entrada 4, la entrada 5, etc.”

Código [03] Read Holding Register

Leer registros de retención, el maestro le indica al esclavo por medio de este


código que entregue información de una posición de memoria, este tipo de
memorias son de lectura y escritura. Es quizá la función más importante del
Protocolo Modbus pues por medio de estos registros se puede obtener
información de todo lo que ocurre en el equipo, es solamente mover la
información que se quiere compartir al registro de retención.

Código [04] Read Input Register

Leer registros de entrada, el maestro le indica al esclavo por medio de este


código que entregue información de una posición de memoria, este tipo de
memorias son de sólo lectura. Muchos equipos los utilizan para compartir
información de sus entradas analógicas en caso de que las posean.

MODBUS RS 485

Se le denomina Modbus RS 485 al ya estudiado Protocolo Modbus, pero la


capa física está manejada por la recomendación RS 485. Todo lo estudiado
aplica, entre las especificaciones de RS 485 se pueden resaltar:

 Rango de Voltajes -> -6V DC a 6 V DC


 Se pueden interconectar hasta 32 equipos
 Recepción de las señales de forma diferencial, es decir, el voltaje a
interpretar se obtiene luego de restar las dos señales que llegan al
amplificador operacional (entrada no inversora y entrada inversora)
 Distancia máxima 1,2 Km

Recuerden que Modbus es un Protocolo monomestro, es decir que a pesar de


tener 32 equipos solo puede estar un maestro al tiempo estableciendo la
comunicación con el esclavo que él seleccione.

MODBUS TCP/IP

Es una evolución natural de las comunicaciones seriales como Modus RTU y


Modbus ASCII. En Modbus sobre TCP/IP como lo nombra la Modbus
Organization toda la estructura de la trama se mantiene como lo que se ha
estudiado hasta el momento, pero se hacen algunos ajustes propios de las
nuevas capas del modelo OSI que se están incluyendo.

Empezamos nombrando algunos cambios, los perfiles de los equipos son


ahora Cliente y Servidor. Se puede trazar un paralelo para entender el
comportamiento de los equipos con el tradicional Modbus RTU, los maestros
son ahora clientes y los esclavos son servidores.

Vamos a ver dentro del Modelo OSI que nuevas capas se han agregado:

1. Capa física
2. Capa de enlace
3. Capa de red
4. Capa de transporte
5. Capa de Aplicación

Este es un buen ejemplo de integraciones de recomendaciones y protocolos


para que pueda trabajar Modbus TCP IP como lo conocemos.

1. Capa física -> 10/100 Base T


2. Capa de enlace->Ethernet
3. Capa de Red -> IP
4. Capa de Transporte -> TCP

Capa física
Comenzamos con recomendaciones que nos van a definir las interfaces
mecánicas, pin outs y señalización entre otras especificaciones. En Modbus
TCP en la capa física se estandariza con la norma EIA/TIA 568, que define
entre otros aspectos el código de colores del cable, se emplea un conector
RJ45 que interconecta 8 señales, en donde 4 son dedicadas exclusivamente a
la transmisión y recepción de datos (TX+, TX-, RX+, RX-).

Pregunta: ¿Es posible conectar un PLC que soporta Modbus RTU en el


hardware y conexiones de computadores tradicionales?

Respuesta: Por supuesto que sí, cumple con las mismas normas que emplean
lo computadores, pero sólo podrán intercambiar información bajo el protocolo
aquellos equipos que tengan implementado Modbus TCP, es decir, un cliente y
un servidor.

Cable de red cruzado empleado para Modbus TCP


En la imagen anterior les comparto el cable que empleo para comunicarme
directamente con los equipos, al ser cruzado el cable no es necesario el switch
para interconectar las señales.

PLC’s que soportan Modbus TCP

En la imagen les presento un PLC S7-1200 de Siemens y un PLC Twido de


Schneider Electric, ambos equipos soportan Modbus TCP, y la capa física
comienza definida por el conector RJ45 que se puede observar en los equipos.

Capa de enlace

En la capa de enlace es importante tener en cuenta que aquí es donde aparece


la dirección física del Equipo, que popularmente se le llama la dirección MAC,
se compone de 6 bytes (6 octetos), cada equipo tiene una dirección unívoca en
el mundo (no existen dos iguales).

Dirección MAC en equipo S7-1200

Si observan detenidamente la fotografía podrán identificar los 6 octetos


expresados en Hexadecimal, cada dígito abarca entonces 4 bits (dos dígitos
unidos son entonces un byte).
Capa de Red

Esta capa es importante pues aparece el protocolo IP, al cual le debemos la


estandarización de todo lo relacionado con la direcciones IP, por lo tanto
nuestros equipos en Modbus TCP deben tener asignada su dirección IP. Para
hacer pruebas y redes de tamaño mediano se usan direcciones clase C, por
eso es muy habitual encontrar direcciones IP como: 192.168.X.X configuradas
en los equipos.

Capa de Transporte

El protocolo empleado en esta capa normalmente es TCP, y en esta parte es


importante resaltar un parámetro de configuración definido para Modbus TCP y
es el puerto que se va a emplear, por defecto es el 502.

Vamos a revisar entonces como queda toda la estructura de protocolos que


necesita Modbus TCP para poder funcionar.

Protocolos que permiten que MODBUS TCP IP funcione correctamente,


tomado de Modbus Organization

Trama Protocolo Modbus TCP IP

Se ha definido una estructura genérica para la trama del protocolo conocida


como PDU (Simple Protocolo Data Unit) que permite independizar todo de las
capas inferiores.

Estructura general de la trama de MODBUS, tomado de Modbus Organization


En el caso de MODBUS sobre TCP/IP se encapsula la PDU en una red TCP/IP
como lo muestra el siguiente esquema de la trama.

PDU sobre TCP/IP, tomado de Modbus Organization

Al encapsularse sobre TCP/IP aparece en la trama un campo nuevo MBAP


Header (MODBUS Aplication Protocolo header). El header tiene un tamaño de
7 bytes con el siguiente contenido:

[Transaction Identifier][Protocol Identifier][Length][Unit Identifier]

[ 2 Bytes ][ 2 Bytes ][2 Bytes][ 1 Byte ]

Transaction Identifier: Identificación de una petición o respuesta de Modbus

Protocolo Indentifier: Es igual a 0 (cero) para el protocolo Modbus

Length: Número de Bytes

Unit Identifier: Identificación del esclavo (En caso de pasar a redes Modbus
RTU)

Entonces la configuración inicial básica que debe realizar un usuario cuando


usa Modbus TCP es asignar la dirección IP del equipo y adicional la dirección
del esclavo con el que se va a a comunicar.
Configurando Modbus TCP y Modbus RTU en un equipo Gateway

En la anterior configuración se puede ver la relación entre la dirección IP y el ID


propio del esclavo para emplear Modbus RTU, entonces es habitual que en la
configuración de Modbus TCP se siga asignando el ID del esclavo (número
entero normalmente entre 1 y 255).
MODBUS Tools | MODBUS Aplicaciones

Existen distintas herramientas que te permiten emular un maestro o esclavo en


el caso de Modbus RTU o un cliente o servidor en el caso de Modbus TCP.
Estas herramientas son super potentes pues se pueden usar para comunicarse
con equipos reales y probar las respectivas funciones que tiene
implementadas, un listado válido de hardware con el que se pueden comunicar
estas herramientas son:

 Controladores de temperatura
 Controladores
 Programadores Lógicos Programables (PLC’s)
 HMI’s
 Variadores de Velocidad
 Scadas

Conclusión

Un apunte final antes de dar las conclusiones, mas o menos en 12 años que
llevo de estar trabajando con distintos equipos de industria siempre me he
encontrado con algún hardware que tiene disponible el protocolo Modbus, en
cualquiera de sus sabores (RTU, PLUS, TCP, ASCII, JBUS). Agradezco tu
atención hasta este punto y espero que puedas dominar al 100% el Protocolo,
te dejo entonces mis conclusiones.

 Modbus lleva mucho tiempo desde su creación y ha sufrido una


evolución evidente hasta tener una versión basada en Ethernet, es tan
popular en el ambiente industrial que no creo que pierda su posición
dominante en un futuro.
 Es un Protocolo abierto con el cual se pueden obtener competencias
genéricas acerca del funcionamiento de las redes industriales y lo
considero un camino obligado de transitar, para entender el mágico
mundo de las comunicaciones propias de equipos de industria.
 Se pueden identificar elementos claves que son críticos a la hora de
establecer una comunicación empleando el protocolo Modbus, los
nombro a continuación: resolver la capa física (pin out y construcción de
cables), asignar adecuadamente los ID´s en los equipos (direcciones
únicas), conocer el mapeo de memoria frente a las direcciones propias
del protocolo Modbus, elegir la longitud de acuerdo a la información
disponible habitualmente en el esclavo.

También podría gustarte