DOCA0214ES–04

Funciones de Modbus

Descripción general

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

Solo se describen las funciones Modbus gestionadas por el ATSE.

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

43 (0x2B)

14 (0x0E)

Leer identificación del dispositivo

Leer los datos de identificación del servidor

43 (0x2B)

15 (0x0F)

Obtener fecha y hora

Leer la fecha y hora del servidor

Ejemplo de lectura de registro

En la tabla siguiente se muestra cómo leer la tensión de SI en el registro 2000. La dirección del registro 2000 es 2000-1 = 1999 = 0x07CF. La dirección Modbus del servidor Modbus es 47 = 0x2F.

Solicitud del cliente

Respuesta del servidor

Nombre del campo

Ejemplo

Nombre del campo

Ejemplo

Dirección del servidor Modbus

0x2F

Dirección del servidor Modbus

0x2F

Código de función

0x03

Código de función

0x03

Dirección del registro a leer (MSB)

0x07

Longitud de datos en bytes

0x02

Dirección del registro a leer (LSB)

0xCF

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

Ejemplo de obtención de fecha y hora

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

Solicitud de cliente

Respuesta del servidor

Nombre del campo

Ejemplo

Nombre del campo

Ejemplo

Dirección del servidor Modbus

0x2F

Dirección del servidor 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 tabla siguiente se muestra cómo establecer la fecha y la hora de un servidor Modbus. La dirección Modbus del servidor Modbus es 47 = 0x2F, la nueva fecha es el 2 de octubre de 2014 y la nueva hora las 2:32:03:500 p.m.

NOTA: Utilice el modo de difusión (con la dirección del servidor Modbus = 0) para establecer la fecha y la hora de todos los servidores Modbus.

Solicitud de cliente

Respuesta del servidor

Nombre del campo

Ejemplo

Nombre del campo

Ejemplo

Dirección del servidor Modbus

0x2F

Dirección del servidor 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 utilizado

0x00

No utilizado

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 s 500 ms

0x0DAC

3 s 502 ms

0x0DAE

La respuesta normal es un eco de la solicitud, devuelto después de que la fecha-hora ha sido actualizada en el dispositivo a distancia. Si el contenido de la estructura de fecha-hora no es coherente con la fecha-hora verdaderas (esto es, una fecha-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 servidores Modbus sin batería dejará de actualizarse. Por lo tanto, es obligatorio fijar la fecha y la hora para todos los servidores Modbus después de recuperar la fuente de alimentación de 24 V CC.

Además, debido a la deriva del reloj de cada servidor Modbus, se debe ajustar periódicamente la fecha y hora de todos los servidores Modbus. El periodo recomendado es de 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:

Función

Código de subfunción

Nombre

Descripción

100 (0x64)

4 (0x04)

Leer registro de mantenimiento disperso

Leer n registros no contiguos

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

  • evitar leer un gran bloque de registros contiguos cuando solo 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

En la tabla siguiente se muestra cómo leer las direcciones del registro 1022 (dirección 0x03FD) y del registro 1100 (dirección 0x044B) de un servidor Modbus. La dirección Modbus del servidor Modbus es 47 = 0x2F.

Solicitud del cliente

Respuesta del servidor

Nombre del campo

Ejemplo

Nombre del campo

Ejemplo

Dirección del servidor Modbus

0x2F

Dirección del servidor 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)

0x03

Valor del primer registro leído (MSB)

0x12

Dirección del primer registro a leer (LSB)

0xFD

Valor del primer registro leído (LSB)

0x0A

Dirección del segundo registro a leer (MSB)

0x04

Valor del segundo registro leído (MSB)

0x74

Dirección del segundo registro a leer (LSB)

0x4B

Valor del segundo registro leído (LSB)

0x0C

CRC (MSB)

0xXX

CRC (MSB)

0xXX

CRC (LSB)

0xXX

CRC (LSB)

0xXX

(1) El cliente proporciona el número de transmisión en la solicitud. El servidor 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)

Preajustar un único registro

Escribir 1 registro

16 (0x10)

Preajustar varios registros

Escribir n registros

43 (0x2B)

16 (0x10)

Ajustar fecha y hora

Escribir la fecha y hora del servidor

QR Code is a registered trademark of DENSO WAVE INCORPORATED in Japan and other countries.

¿Le ha resultado útil?