Informacién Detallada sobre el Protocolo Modbus.
‘islon General
Modbus es un protocolo industrial que fue desarrotlado en 1979 para hacer posible la comunicacién entre dispositvos de
‘automatizacién. Originalmente implementado como un protocolo al nivel de la aplcacién con la finalidad de transfer datos
por una capa serial, Modbus se ha expandido para inclur implamentaciones a través da protocolo serial, TCP/IP y el User
Datagram Protocol (UDP). Este documento offece una perspectiva detallada de la implementacién del protocol.
Contenido
1. ZQué es el Protocolo Modbus?
2. Unidad de Datas do Protocolo
3. Unidad de Datos de Aplcacién
4. Nuevos Cédigos de Funcién
5, Capas de Red
6, Modiicaciones de ADU
Modbus 0s un protocole de solictud-respuesta implementado usando una relacién maestro-esclavo. En una relacién maestro-
clavo, la comunicacién siempre se produce en pares, un dispositivo debe iniciar una solicitud y luego esperar una respuesta
¥ el dispositvo de inicio (el maestro) es responsable de iniciar cada interaccién, Por lo general, el maestro es una interfaz
humano-maquina (HMI) 0 sistema SCADA y el esclavo es un sensor, controlador logico 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 envian estos mensajes, son definidas por las diferentes capas del protocol.
Send Request
z
ead Response
Master Slave
Figura 1. Una Relacién de Red Maestro-Esclavo
Capas del Protocolo Modbus
Ena implementacién inicial, Modbus era un solo protocolo construdo en base a serial, por lo que no posta ser diva en
‘liples capas. Con el tiempo, diferentes unidades de datos de aplicacién fueron introducidas ya sea para cambiar el formato
‘el paquete utlizado a través de sera o para permitirel uso de redes TCPIIP y UDP (User Datagram Protocol) Esto llevé a
tuna separacisn del protocole principal, el cual define la unidad de datos de protocolo (POU) y la capa de red, que define la
Unidad de datos de aplicacién (ADU),
La PDU y el eédigo que la manela consist en el nucleo de la Especiicacién del Protocolo de Aplicacién Modbus
(bttp:wuw.modbus orgidocs/Modous_ Application Protocol_V1_1b.pd). Esta especificacién define al formato de la PDU, los
diversos conceptos de datos utlizados por el protocolo, el uso dé los cédigos de funcién para tener acceso a esos datos y la
implementacion especiica y restricciones de cada cédigo de funcién.
El formato de Modbus PDU esti definido como un cédiga de funcién seguido por un conjunto de datos asociado. Eltamafio y
el contenido de estos datos son definidas por el cédigo de funcién y la PDU completa (cddigo de funcién y datos) no puede
exceder de 253 bytes de tamafio. Cada cédigo de funcién tiene un comportamieanto espectice que los esclaves pueden
implementar de manera ‘lexble en base al comportamiento dela aplcacién deseada, La especifcacién de la POU define
conceptos basicos para el acceso y manipulacién de datos; sin embargo, un esclavo puede manejar datos de una manera
que no est definida explicitamente en la especitcacion
Los datos disponibles por medio de Modbus san almacenados, en general, en uno de los cuatro bancos de datos o rangos de
direccién: bobinas, entradas discretas, registros de retencién y regisros de entrada. Al igual que con gran parte de la
‘especificacién, os nombres pueden variar dependiondo de la industria 0 de la apicacién. Por ejamplo, los registros de
retencién pueden denominarse como registros de salida y las bobinas pueden denominarse como salidas digiales o
aiscretas, Estos bancos de datos definen el tipo y os derechos de acceso de los datos contenidos, Los dispositivos esclavos
tienen acceso directo a estos datos, los cuales son alojados localmente en los dispositvos. Los datos disponibles por medio
{de Modbus generalmente son un subconjunto de la memoria principal del cisposiivo. En contraste, los maestros Modbus
eben solctar el acceso a estos datos a través de diversos cédigos de funcién. El comportamiento de cada blogue se
describe en la Tabla %
[Ploaue de Memoria [Tipo de Datos [Acceso demesne [Aszaso de Eeclave
|posinas | ooeano | ecoratesonua |Lecorreserra
Jemrade Dict | Boolane |store [Leconte
|Reaistos de Retncion |Past Sm Sqno | Lacerta |tecurareseta
|Recistos detnirada |PattraSmSono | SobLectra [Leora
Tabla 1. Bloques de Modelo de Datos de Modbus
Estas bloques le brindan la hablldad de restringir 0 permit el acceso alos diferentes elementos de datos y también de
proporcionar mecanismos simpliicados en la capa de aplicacién para tener acceso a diferentes tipos de datos.
ep nwatomitacanedLos bloques son completamente conceptuales. Pueden existr como direcciones de memoria separadas en un s'stoma
eterminado, pero también pueden traslaparse. Por ejemplo, la bobina uno puede existr en la misma ubicacién en memoria
como el primer bit de la palabra representada par el registro de retencién uno. El esquema de direccién se define
completamente por el dispositive esclavo y su interpretacién de cada bloque de memoria es una parte importante del modelo
de dalos del dispositive.
Direccién de Modelo de Datos
La especticacién define que cada bloque contione un espacio de direccién de un maximo de 85,536 (2°) elementos. Dentro
do la defricidn dela PDU, Modbus define la direccién de cada elemento de datos que va desde 0 a 65,535. Sin embargo,
cada elemento de datos esté numerado de + a n, donde n tiene un valor maximo de 65,596. Es deci, la bobina 1 esta en el
bloque de bobina en a direccién 0, mientras que el rgisio de retencién 54 esté en la direccién 53 de la seccién de la
‘memoria que el esclavo ha definido como registros de retencisn,
No se requiore que los rangos completos parmitidos por la especiicacién sean implemantados por un determinado
ispositvo. Por ejemplo, un dispositive puede optar por no implementar bobinas, entradas discretas 0 registros de entrada y
en su lugar solamente usar los regisros de retencion 150 al 175 y 200 al 225. Esto es perfectamente aceptable y ls intentos
de acceso no validos pueden manejarse a través de excepciones.
Rangos de Direccién de Datos
‘Aunque la especiticacién define los diferentes tipos de datos que existen en diferentes bloques y asigna un rango de direccién
local para cada tipo, esto no se traduce necesariamente en un esquema intutivo de direccién para fines de documentacién 0
para comprender la memoria disponible a través de Modbus de un dispositive determinado. Para simplifcar la discusion de
Ujeaciones del bloque de memoria, se introdujo un esquema de numeracién, el cual afiade prefijos a la direccién de los datos
en cusstion
Por ejemplo, en lugar de referra un elemento como registro de retencién 14 en la dreccién 13, un manual de dispositvo se
referiia 8 un elemento de datos en la direccién 4,014, 40,014 0 400,014. En cada caso, el primer niimero especificado es 4
para representarregistos de retencisn y la direccién es especicada usando los nimeros restantes. La diferencia entre
XXX, AXXXX y 4XXXXX depende del espacio de dreccion usado por el dispositvo, Si todos los 65536 registros estan en
Uso, 1a anotacién 4xXXXX debe ser usada, ya que permite un rango de 400,001 a 485,536, Si solamente algunos registros
son usadas, una préctica comin es usar el rango de 4,001 al 4,999,
En este esquema de direccién, a cada tipo de datos se le asigna un prefijo como se muestra en la Tabla 2.
[Bloque de baton ]Proie
|Bobines lo
|envadas Dscetas h
|Reistros de Eniraa fs
|Resistos de Retencén Ie
Tabla 2. Profios de Rangos de Datos
Existen bobinas con un prefio 0. Esto significa que una referencia de 4001 podria refeirse al registro de retencién uno 0
bobina de 4001. Por esta razén, se recomienda que todas las nuevas implementaciones usen direccién de 6 digitos con ceros,
a la zquierda y se espectique esto en la dacumentacién, Por lo tanto, el registro de retencién uno es referenciada coma
400,001 y la bobina de 4001 es referenciada como 004,001
Valores de Inicio de Direccién de Datos
La diferencia entre las drecciones de memoria y los nimeros de referencia es ain mas complicada por el indice seleccionado
por una aplicacisn determinada. Coma se mencioné anteriormente, el registro de retencién uno esta en la direccion cero.
Tipicamente los nimeros de referencia son indexados en base a uno, lo que significa que el valor de inicio de un intervalo
determinado es uno. Por lo tanto, 400,001 se traduce Iteralmente al registro de retencién 00001, el cual esté en la direccién
0, Algunas implementaciones eligeninicar sus rangos en cera, lo que signifiea que 400,000 te traduce en el registra de
detencién en la direccién cero. La Tabla 3 muestra este concepto,
Dreesen WnemdeRegite Nin (he enh [Niner (nie aera
Jo h |-oo00 |so0000
h |so0002 |scoo0
ke hp |so0003 |soc002
‘Tabla 3. Esquemas de Incice de Registro
Los rangos indexados a 1 gon comunes yallamente recomendades. En cualquier eas, e valor de inicio para cada rango
debe ser anolado en la dacumentacin
El esténdar Mocbus proporciona un modelo de datos rlativamente simple que no incluye los tipos de datos adicionales fuera
« una palabra sin signo y valor debit, Aunque esto es suricento para algunos sistemas, donde los valores de bts
cortespanden a los solenoides y res y os valores de palabra cortesponden a os valores de ADC sin escalar, no es
Suricionte para los sistemas més avanzados. Como resultado, muchas implementaciones Modbus incluyen tpos de datos que
eruzan os limites de rogistros. El Médulo NI LabVIEW Datalogging and Supervisory Contol (SC)
{hntp:f2one.n. comieferencelen-XXMhlp/3716184.01/vmweldse_modbus_using) y KEPServerEX
{htptheva kepware.com/Suppor_CenterISupperDocumens/Helpimadbus_elhemet pd) definen un numero de ips de
referencia. Por ejemplo, las secuencias almacenadas en un registro de retenciinsiguon la forma estandar (400,001) pero son
seguidas de un decimal la longitu y el orden de bytes dela secuencis (400,001.2H, una Secuencia de dos caracteres en el
registro de retencién donde el by ato corespande al primar caracter de la sacuencia), Esto es necesariodebido a que cada
solictud tiene un tamafolmitado, por lo que un maesto Modbus debe conacer ls limites exactos dela Secuencia en lugar
do buscar una longtud 0 deimitador como NULL
ep inwaomitara Se w‘Ademés de permite! acceso a los datos que cruza un limite de registro, algunos maestros Modbus soportan referencias para
bits individuales dentro de un registro. Esto 6s bensfico ya que permite que los dispostivos combinen datos de cada tipo en 6!
‘mismo rango de memoria sin tener que divi los datos binarios en entre bobinas y rangos de entrada discretos. Esto
normalmente es referenciado como un punto decimal y el indice de bits o nimero, dependiendo de laimplementacion. Es