You are on page 1of 7
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 nwatomitacaned Los 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

You might also like