DOCA0091ES-08

Tablas de registros Modbus

Descripción general

En los capítulos siguientes se describen los registros Modbus de la unidad de control MicroLogic y los registros Modbus de los módulos conectados a ella. Estos registros proporcionan información que se puede leer, como medidas eléctricas, sobre la configuración de protección y la supervisión. La interfaz de comandos permite al usuario modificar estos registros de forma controlada.

Las normas de presentación de los registros Modbus son:

Para localizar un registro, utilice la lista ordenada de los registros con una referencia cruzada a la página donde se describen estos registros.

Formato de tabla

Las tablas de registro tienen estas columnas:

Dirección

Registro

L/E

X

Unidad

Tipo

Rango

A/E

Descripción

                 
  • Dirección: una dirección de registro de 16 bits en formato hexadecimal. La dirección responde a los datos utilizados en la trama Modbus.

  • Registro: un número de registro de 16 bits en formato decimal (registro = dirección + 1).

  • LE: estado del registro de lectura-escritura

    • L: el registro puede leerse mediante las funciones Modbus

    • E: puede escribirse en el registro mediante las funciones Modbus

    • LE: el registro puede leerse y puede escribirse en él mediante las funciones Modbus

    • LC: el registro puede leerse por medio de la interfaz de comandos

    • EC: puede escribirse en el registro por medio de la interfaz de comandos

  • X: el factor de escala. Una escala de 10 significa que el registro contiene el valor multiplicado por 10. Por lo tanto, el valor real es el valor del registro dividido por 10.

    Ejemplo:

    El registro 1054 contiene la frecuencia del sistema. La unidad es Hz y el factor de escala es 10.

    Si el registro devuelve 503, esto significa que la frecuencia del sistema es

    503/10 = 50,3 Hz.

  • Unidad: la unidad en la que se expresa la información.

  • Tipo: tipo de datos de codificación (consulte la descripción de los tipos de datos a continuación).

  • Rango: los valores permitidos para esta variable, normalmente un subconjunto de lo que permite el formato.

  • A/E: tipo de medida de la unidad de control MicroLogic.

    • Tipo A (Amperímetro): medidas de corriente

    • Tipo E (Energía): medidas de corriente, tensión, alimentación y energía

  • Descripción: proporciona información sobre el registro y las restricciones que se aplican.

Tipos de datos

Tipos de datos

Descripción

Rango

INT16U

Entero sin signo de 16 bits

Entre 0 y 65535

INT16

Entero con signo de 16 bits

Entre -32768 y +32767

INT32U

Entero sin signo de 32 bits

De 0 a 4 294 967 295

INT32

Entero con signo de 32 bits

Entre –2 147 483 648 y +2 147 483 647

INT64

Entero con signo de 64 bits

Entre -9 223 372 036 854 775 808 y +9 223 372 036 854 775 807

FLOAT32

Entero con signo de 32 bits con un punto flotante

Entre 2-126 (1.0) y 2127 (2 - 2-23)

CADENA DE BYTES

Cadena de texto

1 byte por carácter

DATETIME

Fecha y hora en formato IEC 60870-5 Tipo de datos: DATETIME

ULP DATE

Fecha y hora en formato ULP DATE

Formato Big-Endian

Las variables INT32, INT32U, INT64 e INT64U se almacenan en formato big-endian: el registro más significativo se transmite en primer lugar y el menos significativo en último lugar.

Las variables INT32, INT32U, INT64 e INT64U están formadas por variables INT16U.

Las fórmulas para calcular el valor decimal de estas variables son:

  • INT32: (0-bit31)x231 + bit30x230 + bit29x229 + ...bit1x21 + bit0x20

  • INT32U: bit31x231 + bit30x230 + bit29x229 + ...bit1x21 + bit0x20

  • INT64: (0-bit63)x263 + bit62x262 + bit61x261 + ...bit1x21 + bit0x20

  • INT64U: bit63x263 + bit62x262 + bit61x261 + ...bit1x21 + bit0x20

Ejemplo 1:

La energía activa total del conjunto de datos estándar es una variable INT64 codificada en los registros 32096 a 32099.

Si los valores de los registros son:

  • Registro 32096 = 0

  • Registro 32097 = 0

  • Registro 32098 = 0x0017 o 23

  • Registro 32099 = 0x9692 o 38546 como variable INT16U y -26990 como variable INT16 (use el valor INT16U para calcular el valor de la energía activa total).

Entonces, la energía activa total es igual a 0x248 + 0x232 + 23x216 + 38546x20 = 1545874 Wh.

Ejemplo 2:

La energía reactiva del conjunto de datos heredado es una variable INT32 codificada en los registros 12052 a 12053.

Si los valores de los registros son:

  • registro 12052 = 0xFFF2 = 0x8000 + 0x7FF2 o 32754

  • registro 12053 = 0xA96E o 43374 como variable INT16U y -10606 como variable INT16 (use el valor INT16U para calcular el valor de la energía reactiva).

Entonces, la energía reactiva es igual a (0-1)x231 + 32754x216 + 43374x20 = -874130 kVARh.

Tipo de datos: FLOAT32

El tipo de datos FLOAT32 se representa en la precisión única IEEE 754 (estándar IEEE para la aritmética de coma flotante). Un valor N se calcula como se muestra a continuación:

N = (-1)S x 2E-127 x (1+M)

Coeficiente

Significa

Descripción

Número de bits

S

Señal

Define la señal del valor:

0 = positivo

1 = negativo

1 bit

E

Exponente

Entero binario 127 de exceso añadido.

Si 0 < E < 255, el exponente real es: e = E - 127.

8 bits

M

Mantisa

Significante binario normalizado de magnitud

23 bits

Ejemplo:

0 = 0 00000000 00000000000000000000000

-1.5 = 1 01111111 10000000000000000000000

con:

  • S = 1

  • E = 01111111 = 127

  • M = 10000000000000000000000 = 1x2-1 + 0x2-2 +...+ 0x2-23 = 0,5

  • N = (-1) x 20 x (1+0,5) = -1,5

Tipo de datos: DATETIME

DATETIME es un tipo de datos que permite codificar la fecha y hora definidas según el estándar IEC 60870-5.

Registro

Tipo

Bit

Rango

Descripción

1

INT16U

0-6

0x00–0x7F

Año:

Entre 0x00 (00) y 0x7F (127) corresponde a los años entre 2000 y 2127

Por ejemplo, 0x0D (13) corresponde al año 2013.

7-15

Reservado

2

INT16U

0-4

0x01–0x1F

Día

5-7

Reservado

8-11

0x00–0x0C

Mes

12-15

Reservado

3

INT16U

0-5

0x00–0x3B

Minutos

6-7

Reservado

8-12

0x00–0x17

Horas

13-15

Reservado

4

INT16U

0-15

0x0000–0xEA5F

Milisegundos

Calidad de marcas de tiempo DATETIME

La calidad de las marcas de tiempo codificadas con el tipo de datos DATETIME puede indicarse en el registro que sigue a los 4 registros de la marca de tiempo. En este caso, la calidad de la marca de tiempo se codifica de la siguiente forma:

Bit

Descripción

0-11

Reservado

12

Sincronización externa:

  • 0 = No válido

  • 1 = Válido

13

Sincronización:

  • 0 = No válido

  • 1 = Válido

14

Fecha y hora configuradas:

  • 0 = No válido

  • 1 = Válido

15

Reservado

Calidad de bits en registros

La calidad de cada bit de un registro codificado con el tipo de datos INT16U como una enumeración de bits puede indicarse en el registro precedente al registro en cuestión.

Ejemplo:

La calidad de cada bit del registro 32001, el estado del interruptor automático, se proporciona en el registro precedente, el 32000.

La calidad de los datos correspondientes al bit 0 del registro 32001, el contacto de señalización de estado OF, se proporciona en el bit 0 del registro 32000:

  • bit 0 del registro 32000 = calidad de la indicación de estado OF

  • bit 0 del registro 32001 = contacto de indicación de estado OF

Si

Entonces

Si el bit 0 del registro 32000 = 1 Y el bit 0 del registro 32001 = 0

El contacto OF indica que el dispositivo está abierto.

Si el bit 0 del registro 32000 = 1 Y el bit 0 del registro 32001 = 1

El contacto OF indica que el dispositivo está cerrado.

Si el bit 0 del registro 32000 = 0

La indicación del contacto OF no es válida.

Tipo de datos: ULP DATE

ULP DATE es un tipo de datos utilizado para codificar fechas y horas. En esta tabla se presenta el tipo de datos ULP DATE.

Registro

Tipo

Bit

Rango

Descripción

1

2

INT32U

0x00000000-0xFFFFFFFF

Número de segundos desde el 1 de enero de 2000

3

INT16U

Complemento en milisegundos

0-9

Codifica los milisegundos

10-11

No se utiliza

12

01

Estado de sincronización externa de la interfaz de comunicación IFM o IFE

0 = La interfaz de comunicación no se ha sincronizado externamente en las últimas 2 horas.

1 = La interfaz de comunicación se ha sincronizado externamente en las últimas 2 horas.

13

01

Estado de sincronización interna del módulo ULP

0 = El módulo ULP no se ha sincronizado internamente.

1 = El módulo ULP se ha sincronizado internamente.

14

01

La fecha absoluta se establece desde el último encendido.

0 = No

1 = Sí

15

Reservado

Contador de fecha ULP

La fecha en formato ULP DATE se cuenta en número de segundos desde el 1 de enero de 2000.

En caso de interrupción de la alimentación de un módulo IMU, el contador de hora se restablece y se iniciará el 1 de enero de 2000.

Si se produce una sincronización externa después de una interrupción de la alimentación, el contador de hora se actualiza y convierte la fecha de sincronización al número correspondiente de segundos desde el 1 de enero de 2000.

Principio de conversión de fecha ULP

Para convertir la fecha de número de segundos desde el 1 de enero de 2000 a la fecha actual, se aplican estas normas:

  • 1 año no bisiesto = 365 días

  • 1 año bisiesto = 366 días

    Los años 2000, 2004, 2008, 2012... (múltiplos de 4) son años bisiestos (excepto el año 2100).

  • 1 día = 86 400 segundos

  • 1 hora = 3600 segundos

  • 1 minuto = 60 segundos

En la tabla siguiente se describen los pasos que se deben seguir para convertir la fecha a partir del número de segundos desde el 1 de enero de 2000 a la fecha actual:

Paso

Acción

1

Calcule el número de segundos desde el 1 de enero de 2000: S = (contenido del registro 1 x 65536) + (contenido del registro 2)

2

Calcule el número de días desde el 1 de enero de 2000: D = valor entero del cociente de S / 86 400

Calcular el número restante de segundos: s = S - (D x 86 400)

3

Calcular el número de días transcurridos del presente año: d = D - (NL x 365) - (L x 366)

con NL = número de años no bisiestos desde el año 2000 y L = número de años bisiestos desde el año 2000

4

Calcular el número de horas: h = valor entero del cociente de s / 3600

Calcular el número restante de segundos: s’ = s - (h x 3600)

5

Calcular el número de minutos: m = valor entero del cociente de s’ / 60

Calcular el número restante de segundos: s’’ = s’ - (m x 60)

6

Calcular el número de milisegundos: ms = (contenido del registro 3) Y 0x03FF

7

Resultado:

  • La fecha actual es la fecha = d + 1.

    Por ejemplo, si d = 303, la fecha actual corresponde al 304.º día del año, que corresponde al 31 de octubre de 2007.

  • La hora actual es h:m:s’’:ms

Ejemplo de conversión de fecha ULP

Los registros 2900 y 2901 devuelven la fecha en número de segundos desde el 1 de enero de 2000. El registro 2902 devuelve el complemento en ms con la calidad de la fecha.

Notas

  • La columna Tipo indica cuántos registros se deben leer para obtener la variable. Por ejemplo, INT16U requiere la lectura de un registro, mientras que INT32 requiere la lectura de 2 registros.

  • Algunas variables deben leerse como un bloque de múltiples registros, como las medidas de energía. Si se lee el bloque parcialmente, se producirá un error.

  • Si se lee desde un registro no documentado, da como resultado una excepción de Modbus .

  • Los valores numéricos se indican en decimales. Cuando resulte útil tener el valor correspondiente en formato hexadecimal, se mostrará como una constante de tipo de lenguaje C: 0xdddd. Por ejemplo, el valor decimal 123 se representa en formato hexadecimal como: 0x007B.

  • Para medidas que dependen de la presencia de neutros tal como se identifica con el registro 3314, la lectura del valor devolverá 32768 (0x8000) si no es aplicable. Para cada tabla donde sucede, se explica en una nota de pie de página.

  • Los valores no aplicables y fuera de servicio dependen del tipo de datos.

    NOTA: En función de la implementación de registros heredados, es posible que algunos registros muestren valores diferentes y desordenados que no se corresponden. Por ejemplo, los registros INT16U podrían devolver 32768 (0x8000) e INT32U podría mostrar 0x80000000.

Tipo de datos

Valores no aplicables y fuera de servicio

INT16U

65535 (0xFFFF)

INT16

-32768 (0x8000)

INT32U

4294967295 (0xFFFFFFFF)

INT32

0x80000000

INT64U

0xFFFFFFFFFFFFFFFF

INT64

0x8000000000000000

FLOAT32

0xFFC00000