¿Cómo podemos ayudar?
Direccionamiento Modbus / Cadena de datos Modbus estándar / Códigos de función Modbus

En pocas palabras
- 0x01 Bobinas de lectura: lee el estado de los relés o las salidas digitales
- 0x02 Lectura de entradas discretas: lee señales de entrada digitales, como botones pulsadores
- 0x03 Lectura de registros de retención: lee los parámetros de proceso o los puntos de ajuste almacenados en los registros de retención
- 0x04 Leer registros de entrada: lee valores de entrada analógicos, como lecturas de sensores de un PLC
- 0x05 Escribir bobina única: establecer el estado de una salida digital única (ENCENDIDO/APAGADO), como activar un relé
- 0x0F Escribir bobinas múltiples: establecer los estados de múltiples salidas digitales (ENCENDIDO/APAGADO) en una sola solicitud
- 0x06 Escribir un solo registro de retención: escribe un solo valor de 16 bits en un registro de retención, como establecer un parámetro o comando
- 0x10 Escribir varios registros de retención: escribe varios valores de 16 bits en registros de retención consecutivos, como varios puntos de ajuste a la vez o la actualización de una cadena
0x, 1x, 3x, 4x y FC01, FC02, FCxx,… ¡Estoy perdido!
0x 1x 3x 4x no definen el código de función Modbus. Solo indican el tipo de área de datos: bobinas, entradas discretas, registro de retención…
El código de función (FCxx) define la operación realizada en esa área de datos.
Asignación lógica común entre 0x, 1x,.. y FC01, FC02,..
0x Bobinas
Leer con FC01
Escribir con FC05 o FC15
1x Entradas discretas
Leer con FC02
3x Registros de entrada
Leer con FC04
4x Registros de retención
Leer con FC03
Escribir con FC06 o FC16
Punto importante: en una trama Modbus, nunca hay 0x, 1x, 3x o 4x. La trama solo contiene el código de función, la dirección de inicio y la cantidad.
Los prefijos 0x, 1x, 3x y 4x son una convención de documentación y software, no una regla del protocolo.
Detalles
Bobinas = salidas digitales equivalentes a una bobina en un esquema de relé.
El tipo de datos Modbus es 0.
A menudo se indica como 0x, lo que facilita el direccionamiento.
El tipo de datos 0x está disponible para lectura y escritura.
Para la lectura, se utiliza el código de función 1 (FC01 y 01h en hexadecimal).
Para escribir dichos datos, se utiliza el código de función 5 (FC05 y 05h).
Para escribir varios datos consecutivos, se utiliza el código de función 15 (0Fh).
Este tipo de datos se indica de diferentes maneras:
%M1, 00001, 000001 (para la primera variable)…
Según la interpretación de la norma, la notación debe ser 0x0000 (hasta 0xFFFF), en hexadecimal.
Estado de entrada = entradas digitales equivalentes a un contacto en un esquema de relé.
El tipo de datos Modbus es 1.
A menudo se denomina 1x, lo que facilita el direccionamiento.
El tipo de datos 1x solo está disponible para lectura.
Para la lectura, se utiliza el código de función 2 (FC02 y 02h).
Este tipo de datos se anota de diferentes maneras:
%i1, 10001, 100001..,
La notación debe ser 1×0000 (hasta 1xFFFF).
Registros de entrada = entradas digitales equivalentes a un registro (de ahí el nombre) o un valor no binario (una palabra de 16 bits).
En aquel momento, la elección no era como hoy en día…
El tipo de datos Modbus es 3.
A menudo se denomina 3x, lo que facilita el direccionamiento.
El tipo de datos 3x solo está disponible para lectura.
Para la lectura, se utiliza el código de función 4 (FC04 y 04h).
Este tipo de datos se indica de diferentes maneras:
%IW1, 30001, 300001..,
La notación debe ser 3×0000 (hasta 3xFFFF).
Registros de retención = salidas digitales equivalentes a un registro (de ahí el nombre) o un valor no binario (una palabra de 16 bits).
El tipo de datos Modbus es 4.
A menudo se denomina 4x, lo que facilita el direccionamiento.
El tipo de datos 4x está disponible para lectura y escritura.
Para la lectura, se utiliza el código de función 3 (FC03 y 03h).
Para escribir datos de este tipo, se utiliza el código de función 6 (FC06 y 06h).
Para escribir varios datos consecutivos, se utiliza el código de función 16 (10h).
Este tipo de datos se indica de diferentes maneras:
%MW1, 40001, 400001..,
La notación debe ser 4×0000 (hasta 4xFFFF).
A menudo existe confusión entre la notación (que es virtual) y la dirección.
El hecho de utilizar la dirección en hexadecimal permite eliminar las diferentes notaciones descritas anteriormente.
De hecho, para aplicaciones pequeñas, no habrá ningún problema, ya que el valor decimal de la dirección no es superior a 9999.
Pero cuando se trata de bases de datos más grandes, es un lío
49999 es, por ejemplo, la palabra número 10000 del tipo 4, ¿qué pasa si se debe utilizar la palabra número 10001? En general, esto se anota como 410000 (pero se cambia la escala, lo que no es práctico), a menudo se escribe 50000 (pero esto no es muy lógico, el tipo es 4, no 5).
Algunas personas también lo escriben como 4×9999, luego 4×10000…
Al escribir en hexadecimal, se pueden utilizar todas las direcciones disponibles y la notación es más legible.
La palabra número 10000 es 4×2710, la siguiente será 4×2711… La conversión es fácil con la calculadora de Windows o en el propio PLC.