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.
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 |