REPRESENTACIÓN DE DATOS

Versión para imprimirVersión para imprimir

El protocolo MODBUS usa el concepto de tablas de datos para almacenar la información en un esclavo, una tabla de datos no es más que un bloque de memoria usado para almacenar datos en el esclavo, las tablas de datos que usa en MODUS son cuatro y se muestran en la siguiente tabla:

 

 

Observe que hay dos direcciones, una es usada para diferenciar entre las tablas de datos, la llamamos dirección MODBUS y la otra es la dirección usada en la comunicación entre el maestro y el esclavo, está es la dirección usada en la trama o paquetes de datos enviados entre maestros y esclavos.

Codificación de datos

La codificación de datos dentro de la trama puede hacerse en modo ASCII o puramente binario, según el estándar RTU (Remote Transmission Unit). En cualquiera de los dos casos, cada mensaje obedece a una trama que contiene cuatro campos principales, según se muestra en la figura 1. La única diferencia estriba en que la trama ASCII incluye un carácter de encabezamiento («:»=3AH) y los caracteres CR y LF al final del mensaje. Pueden existir también diferencias en la forma de calcular el CRC, puesto que el formato RTU emplea una fórmula polinómica en vez de la simple suma en módulo 16.
Con independencia de estos pequeños detalles, a continuación se da una breve descripción de cada uno de los campos del mensaje:

 

 

 

Número de esclavo (1 byte):
Permite direccionar un máximo de 63 esclavos con direcciones que van del 01H hasta 3FH. El número 00H se reserva para los mensajes difundidos.

Código de operación o función (1 byte):
Cada función permite transmitir datos u órdenes al esclavo. Existen dos tipos básicos de órdenes:

    • Ordenes de lectura/escritura de datos en los registros o en la memoria del esclavo.
    • Ordenes de control del esclavo y el propio sistema de comunicaciones (RUN/STOP, carga y descarga de programas, verificación de              contadores de intercambio, etc.)

La tabla 1 muestra la lista de funciones disponibles en el protocolo MODBUS con sus correspondientes códigos de operación.

Campo de subfunciones/datos (n bytes):
Este campo suele contener, en primer lugar, los parámetros necesarios para ejecutar la función indicada por el byte anterior. Estos parámetros podrán ser códigos de subfunciones en el caso de órdenes de control (función 00H) o direcciones del primer bit o byte, número de bits o palabras a leer o escribir, valor del bit o palabra en caso de escritura, etc.

Palabra de control de errores (2 bytes):
En código ASCII, esta palabra es simplemente la suma de comprobación (‘checksum’) del mensaje en módulo 16 expresado en ASCII. En el caso de codificación RTU el CRC se calcula con una fórmula polinómica según el algoritmo mostrado en la figura 2.