DOCA0091ES-08

Funciones de Modbus

Descripción general

El protocolo Modbus ofrece varias funciones que se utilizan para leer o escribir datos sobre la red Modbus. El protocolo Modbus también ofrece funciones de diagnóstico y de gestión de red.

En esta sección sólo se describen las funciones Modbus gestionadas por el interruptor automático.

Funciones de lectura

Están disponibles las siguientes funciones de lectura:

Código de función

Código de subfunción

Nombre

Descripción

3 (0x03)

Leer registros de mantenimiento

Leer n registros de salida o internos

4 (0x04)

Leer registros de entrada

Leer n registros de entrada

43 (0x2B)

14 (0x0E)

Leer identificación del dispositivo

Leer los datos de identificación del esclavo

43 (0x2B)

15 (0x0F)

Obtener fecha y hora

Leer la fecha y hora del esclavo

NOTA: El número de registros n está limitado a 52 con la unidad de control MasterPact MicroLogic E.

Ejemplo de lectura de registro

En la tabla siguiente se muestra cómo leer la corriente en fase 1 (I1) eficaz en el registro 1016. La dirección del registro 1016 es 1016 - 1 = 1015 = 0x03F7. La dirección Modbus del esclavo Modbus es 47 = 0x2F.

Solicitud del maestro

Respuesta del esclavo

Nombre del campo

Ejemplo

Nombre del campo

Ejemplo

Dirección del esclavo Modbus

0x2F

Dirección del esclavo Modbus

0x2F

Código de función

0x03

Código de función

0x03

Dirección del registro a leer (MSB)

0x03

Longitud de datos en bytes

0x02

Dirección del registro a leer (LSB)

0xF7

Valor del registro (MSB)

0x02

Número de registros (MSB)

0x00

Valor del registro (LSB)

0x2B

Número de registros (LSB)

0x01

CRC (MSB)

0xXX

CRC (MSB)

0xXX

CRC (LSB)

0xXX

CRC (LSB)

0xXX

El contenido del registro 1016 (dirección 0x03F7) es 0x022B = 555. Por lo tanto, la corriente de fase 1 (I1) eficaz es 555 A.

Ejemplo de obtención de fecha y hora

La siguiente tabla muestra cómo obtener la fecha y hora de un esclavo Modbus. La dirección Modbus del esclavo Modbus es 47 = 0x2F.

Solicitud del maestro

Respuesta del esclavo

Nombre del campo

Ejemplo

Nombre del campo

Ejemplo

Dirección del esclavo Modbus

0x2F

Dirección del esclavo Modbus

0x2F

Código de función

0x2B

Código de función

0x2B

Código de subfunción

0x0F

Código de subfunción

0x0F

Reservado

0x00

Reservado

0x00

Fecha y hora

Consulte el tipo de datos DATETIME

Ejemplo de ajuste de fecha y hora

En la siguiente tabla se muestra cómo ajustar la fecha y hora de un esclavo Modbus. La dirección Modbus del esclavo Modbus es 47 = 0x2F, la nueva fecha es Octubre 2, 2014, y la nueva hora es 2:32:03:500 p.m.

NOTA: Use el modo de difusión (con dirección del esclavo Modbus = 0) para ajustar la fecha y hora de todos los esclavos Modbus.

Solicitud del maestro

Respuesta del esclavo

Nombre del campo

Ejemplo

Nombre del campo

Ejemplo

Dirección del esclavo Modbus

0x2F

Dirección del esclavo Modbus

0x2F

Código de función

0x2B

Código de función

0x2B

Código de subfunción

0x10

Código de subfunción

0x10

Reservado 1

0x00

Reservado 1

0x00

No se utiliza

0x00

No se utiliza

0x00

Año = 2014

0x0E

Año = 2014

0x0E

Mes = Octubre

0x0A

Mes = Octubre

0x0A

Día del mes = 2

0x02

Día del mes = 2

0x02

Hora = 14

0x0E

Hora = 14

0x0E

Minutos = 32

0x20

Minutos = 32

0x20

3 seg. 500 ms

0x0DAC

3 seg. 502 ms

0x0DAE

La respuesta normal es un eco de la solicitud, devuelto después de que se hayan actualizado la fecha y la hora en el dispositivo a distancia. Si el contenido de la estructura de fecha y hora no es coherente con la fecha y hora verdaderas (esto es, una fecha y hora no válida), el dispositivo ajusta a 0 el valor retornado en el campo de Fecha-Hora.

En caso de pérdida de alimentación eléctrica de 24 V CC, la fecha y hora de los esclavos Modbus sin batería dejará de actualizarse. Por lo tanto es obligatorio ajustar fecha y hora de todos los esclavos Modbus después de recuperar la fuente de alimentación de 24 V CC.

Además, debido a la deriva del reloj de cada esclavo Modbus, se debe ajustar periódicamente la fecha y hora de todos los esclavos Modbus. El periodo recomendado es al menos cada 15 minutos.

Función de lectura de registro de mantenimiento disperso

Está disponible la función de lectura de registro de mantenimiento disperso:

Código de función

Código de subfunción

Nombre

Descripción

100 (0x64)

4 (0x04)

Leer registro de mantenimiento disperso

Leer n registros no contiguos

El valor máximo para n es 100, pero cuando se usa una unidad de control MasterPact MicroLogic A o E, es recomendable que n sea menor o igual que 21.

La función de lectura del registro de mantenimiento disperso permite al usuario lo siguiente:

  • evitar leer un gran bloque de registros contiguos cuando sólo se necesitan pocos registros

  • evitar la utilización múltiple de las funciones 3 y 4 para leer registros no contiguos

Ejemplo de lectura de registro de mantenimiento disperso

La siguiente tabla muestra cómo leer las direcciones del registro 664 (dirección 0x0297) y del registro 666 (dirección 0x0299) de un esclavo Modbus. La dirección Modbus del esclavo Modbus es 47 = 0x2F.

Solicitud del maestro

Respuesta del esclavo

Nombre del campo

Ejemplo

Nombre del campo

Ejemplo

Dirección del esclavo Modbus

0x2F

Dirección del esclavo Modbus

0x2F

Código de función

0x64

Código de función

0x64

Longitud de datos en bytes

0x06

Longitud de datos en bytes

0x06

Código de subfunción

0x04

Código de subfunción

0x04

Número de transmisión(1)

0xXX

Número de transmisión(1)

0xXX

Dirección del primer registro a leer (MSB)

0x02

Valor del primer registro leído (MSB)

0x12

Dirección del primer registro a leer (LSB)

0x97

Valor del primer registro leído (LSB)

0x0A

Dirección del segundo registro a leer (MSB)

0x02

Valor del segundo registro leído (MSB)

0x74

Dirección del segundo registro a leer (LSB)

0x99

Valor del segundo registro leído (LSB)

0x0C

CRC (MSB)

0xXX

CRC (MSB)

0xXX

CRC (LSB)

0xXX

CRC (LSB)

0xXX

(1) El maestro proporciona el número de transmisión en la solicitud. El esclavo devuelve el mismo número en la respuesta.

Funciones de escritura

Están disponibles las siguientes funciones de escritura:

Código de función

Código de subfunción

Nombre

Descripción

6 (0x06)

Preestablecer un único registro

Escribir 1 registro

16 (0x10)

Preestablecer varios registros

Escribir n registros

43 (0x2B)

16 (0x10)

Ajustar fecha y hora

Escribir la fecha y hora del esclavo

NOTA: El número de registros n está limitado a 52 con unidades de control MasterPact MicroLogic E.

Funciones de diagnóstico

Están disponibles las siguientes funciones de diagnóstico:

Código de función

Código de subfunción

Nombre

Descripción

8 (0x08)

Diagnóstico

Gestiona contadores de diagnóstico

8 (0x08)

10 (0x0A)

Limpiar contadores y registro de diagnóstico

Pone a cero todos los contadores de diagnóstico

8 (0x08)

11 (0x0B)

Devolver contador de mensajes del bus

Lee el contador de mensajes correctos del bus gestionados por el esclavo

8 (0x08)

12 (0x0C)

Devolver contador de errores de comunicaciones del bus

Lee el contador de mensajes incorrectos del bus gestionados por el esclavo

8 (0x08)

13 (0x0D)

Devolver contador de errores de excepciones del bus

Lee el contador de respuestas de excepción gestionadas por el esclavo

8 (0x08)

14 (0x0E)

Devolver contador de mensajes del esclavo

Lee el contador de mensajes enviados al esclavo

8 (0x08)

15 (0x0F)

Devolver contador de esclavos sin respuesta

Lee el contador de mensajes de difusión

8 (0x08)

16 (0x10)

Devolver contador de confirmaciones de esclavo negativas

Lee el contador de mensajes enviados al esclavo pero no respondidos debido al código de excepción 07 de acuse negativo

8 (0x08)

17 (0x11)

Devolver contador de esclavos ocupados

Lee el contador de mensajes enviados al esclavo pero no respondidos debido al código de excepción 06 de dispositivo esclavo ocupado

8 (0x08)

18 (0x12)

Devolver contador de rebasamiento del bus

Lee el contador de mensajes del bus incorrectos debido a errores de rebasamiento

11 (0x0B)

Obtener contador de eventos de comunicación

Leer el contador de eventos de Modbus

Contadores de diagnóstico

Modbus utiliza contadores de diagnóstico para permitir la gestión de errores y del rendimiento. Se puede acceder a los contadores usando las funciones de diagnóstico Modbus (códigos de función 8 y 11). Los contadores de diagnóstico de Modbus y el contador de eventos de Modbus se describen en la siguiente tabla:

Número de contador

Nombre del contador

Descripción

1

Contador de mensajes del bus

Contador de mensajes correctos del bus gestionados por el esclavo

2

Contador de errores de comunicación del bus

Contador de mensajes incorrectos del bus gestionados por el esclavo

3

Contador de errores de excepción del esclavo

Contador de respuestas de excepción gestionadas por el esclavo y mensajes de difusión incorrectos

4

Contador de mensajes del esclavo

Contador de mensajes enviados al esclavo

5

Contador de ausencia de respuesta de esclavo

Contador de mensajes de difusión

6

Contador de acuses negativos del esclavo

Contador de mensajes enviados al esclavo pero no respondidos debido al código de excepción 07 de acuse negativo

7

Recuento de esclavos ocupados

Contador de mensajes enviados al esclavo pero no respondidos debido al código de excepción 06 de dispositivo esclavo ocupado

8

Contador de rebasamiento de caracteres del bus

Contador de mensajes del bus incorrectos debido a errores de rebasamiento

9

Contador de eventos de comunicación

Contador de eventos de Modbus (este contador se lee con el código de función 11)

Puesta a cero de contadores

Los contadores de diagnóstico se ponen a 0 cuando:

  • se alcanza el valor máximo 65535,

  • son reiniciados por un comando Modbus (código de función 8, código de subfunción 10),

  • se ha perdido la fuente de alimentación,

  • se modifican los parámetros de comunicación.