Modbus RTU es un protocolo ampliamente empleado para la automatización industrial. Este permite el intercambio de información entre dispositivos maestro-esclavo. Para ello, Modbus hace uso de un esquema de direccionamiento el cuál engloba el protocolo de unidad de datos o PDU y la dirección lógica. En este blog explicaremos cómo se ha trabajado los flujos de datos de PDU y la conversión entre direcciones PDU y direcciones lógicas.
Presentación del Protocolo de unidad de datos (PDU):
El protocolo PDU es una parte esencial para el intercambio de datos entre dispositivos maestros y esclavos. este protocolo se encuentra estructurado de la siguiente manera:
Función (1 byte): Este sirve como un comando que le indica al esclavo la acción que el maestro quiere que realice. Es un valor de un solo byte que le indica al dispositivo si va a leer datos, escribir datos o solicitar información de diagnóstico.
Dirección de registro (2 bytes): El campo de la dirección del registro especifica el punto de inicio del registro en la memoria del esclavo. Este valor provee al maestro con la ubicación de los datos que van a ser manipulados o leídos. Cabe mencionar que Modbus define la dirección de memoria de cada dato en un rango entre 0 y 65535.
Campos adicionales (hasta 250 bytes): Dependiendo de la acción a realizar, esta sección puede llegar a tener longitudes de hasta 250 bytes dado que contiene las instrucciones e información necesaria para llevar a cabo una acción. Por ejemplo, cuando la acción consiste en la lectura de datos, este campo incluirá el número de los registros que será leídos, mientras que al escribir datos el campo contendría los valores que serán escritos en los registros del dispositivo.
Con estos tres bloques en el protocolo PDU, Modbus RTU garantiza un flujo eficiente y confiable de información entre dispositivos.
Modbus RTU define 4 tipos de registros lógicos, cada uno sirve un propósito específico en la automatización industrial
- Coils (Salidas discretas): Representa las salidas binarias que pueden ser controladas por el dispositivo maestro . Estas solo tienen dos estados 1 y 0. Este tipo de registros son leídos y editados por el maestro permitiendo el control de procesos industriales
- Entradas discretas: Proveen una entrada de datos binarios al dispositivo maestro. Estos registros son de lectura únicamente y usualmente representan los estados de sensores y switches.
- Registros de entrada: Estos registros almacenan datos analógicos que son capturados por los sensores . Los registros son de solo lectura por el maestro y le proveen de información referente al ambiente.
- Registros de holding. Este tipo de registros sirven como canales de comunicación de dos vías permitiendo la lectura y escritura de operaciones. Estos son empleados para el control de dispositivos esclavos y el almacenamiento de datos.
Calculando las direcciones lógicas de direcciones PDU
En el protocolo Modbus cada dato es asignado con una dirección entre el 0 a 65535. Para convertir las direcciones PDU a direcciones lógicas como: Coils, Entradas discretas y Registros de Hold. Se aplica una compensación o Offset. La fórmula de dicha conversión conversión se expresa como:
Logical address = Register address + Offset
ó
Register address = Logical address – Offset
Los Offset empleados pueden variar y son específicos según el modelo y el dispositivo empleado por lo que un valor de Offset útil para un dispositivo no funcionará en otros modelos. Para ello los fabricantes definen los valores a utilizar en el manual de cada dispositivo en cuestión.
Por ejemplo, para referir un dato a un registro hold 14 en una dirección PDU 12, el manual de un dispositivo podría emplear la siguiente representación. 4014 ó 400014. En cada caso, el primer número, 4, indica los registros de hold. La elección entre una notación 4XXX, 4XXXX y 4XXXXX depende del espacio de memoria disponible en el dispositivo: Por ende, si todos los 65536 registros están en uso, la notación 4XXXXX es empleada. Si solo unos cuantos registros son empleados la práctica más común es emplear el rango 4001 a 4999.
La dirección de cada registro puede ser representada de forma distinta según el fabricante., lo cuál puede llevar a cierta confusión. He aquí algunas diferentes posibles representaciones:
- PDU address 13
- Logical address 4014 (aquí el offset es 4001)
- Logical address 40014 (aquí el offset es 40001)
- Logical address 400014 (aqui el offset es 400001)
A pesar de que las direcciones definidas por cada fabricante son diferentes, la aplicación de un Offset permite que se respete siempre la dirección PDU. Por ejemplo:
- Para direcciones lógicas 4014 y offset 4001 -> Dirección PDU = 4014-4001 = 13
- Para dirección lógica 40014 y offset 40001 -> Dirección PDU = 40014-40001 = 13
Es así que al usar el offset, el protocolo asegura que se emplee la dirección PDU de forma consistente para todos los dispositivos independientemente de la representación que haya definido el fabricante.
Lo opuesto puede ocurrir también en registros de entrada donde la dirección PDU es 33. Sin embargo el Software de SCADA trabaja con un formato 3XXXXXX por ende el offset empleado en este caso deberá tomar un valor de 300001 para los registros de entrada tal que la dirección PDU sea igual a 33.
Contáctanos
ventas@logicbus.com | soporte@logicbus.com | 55-5431-67-18 | Iniciar conversación