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 cada módulo, los registros se agrupan en tablas de información lógicamente relacionada, en función del módulo con el que están relacionados:
-
En algunos módulos, los archivos se describen por separado:
-
Para cada módulo, se describen los comandos por separado:
Formato de tabla
Las tablas de registro tienen estas columnas:
Dirección |
Registro |
L/E |
X |
Unidad |
Tipo |
Rango |
A/E/P/H |
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, 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/P/H: 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
-
tipo P (Potencia): medidas de corriente, tensión, alimentación y energía, y protección avanzada
-
tipo H (Armónicos): medidas de corriente, tensión, alimentación, energía y calidad energética, y protección avanzada
-
-
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 |
INT64U |
Entero sin signo de 64 bits |
Entre 0 y 18 446 744 073 709 600 000 |
INT64 |
Entero con signo de 64 bits |
Entre -9 223 372 036 854 775 808 y +9 223 372 036 854 775 807 |
SFIXPT |
Entre -32768 y +32767 |
|
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 |
MOD 10000 |
– |
|
DATE |
– |
|
XDATE |
Igual que DATE con un cuarto registro INT16U para información de milisegundos |
– |
DATETIME |
Fecha y hora en formato IEC 60870-5. Tipo de datos: DATETIME |
– |
ULP DATE |
Fecha y hora en formato ULP DATE. Tipo de datos: 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: SFIXPT
El valor de rango de este tipo de datos depende del factor de escala.
En la tabla siguiente se presentan ejemplos de la evolución del valor de rango del registro SFIXPT según el factor de escala:
Si el Factor de escala es igual a... |
Entonces, el Valor de rango es igual a... |
---|---|
1 |
Entre -32768 y +32767 |
100 |
Entre -327,68 y +327,67 |
1000 |
Entre -32,768 y +32,767 |
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: MOD 10000
MOD10000 corresponde a n + 1 registros en formato INT16. Cada registro contiene un número entero entre -9999 y 9999. El valor V que representa n + 1 registros en formato MOD10000 se calcula como se indica a continuación:
V = sum(R[x] + R[x+1] x 10000 +...+ R[x+n] x 10000n), si R[x] es el valor del número x registrado.
Por ejemplo, para calcular la energía activa Ep codificada en 4 registros:
-
Registro 2000 = 123 so R[x = 2000] = 123
-
Registro 2001 = 4567
-
Registro 2002 = 89
-
Registro 2003 = 0
Por lo tanto, Ep = R[2000] + R[2001] x 100001 + R[2002] x 100002 + R[2003] x 100003
= 123 + 4567 x 10000 + 89 x 100002 + 0
= 8 945 670 123 kWh
Tipos de datos: DATE y XDATE
En esta tabla se presentan los tipos de datos DATE (registros 1 a 3) y XDATE (registros 1 a 4):
Registro |
Tipo |
Bit |
Rango |
Descripción |
---|---|---|---|---|
1 |
INT16U |
0-7 |
0x01–0x1F |
Día |
8-14 |
0x01-0x0C |
Mes |
||
15 |
0-1 |
Calidad de la fecha y la hora Si se ha establecido el bit 15, la fecha y la hora pueden ser incorrectas. Existen 2 posibilidades:
|
||
2 |
INT16U |
0-7 |
0x00–0x17 |
Horas |
8-15 |
0x50-0xC7 |
Año
Por ejemplo, 0x70 (112) corresponde al año 2012. |
||
3 |
INT16U |
0-7 |
0x00–0x3B |
Segundos |
8-15 |
0x00–0x3B |
Minutos |
||
4 |
INT16U |
0-15 |
0x0000-0x03E7 |
Complemento en milisegundos (solo disponible para el formato XDATE) |
Por ejemplo, si la fecha actual de BCM ULP codificada en 4 registros es:
-
registro 679 = 0x0513
-
registro 680 = 0x700A
-
registro 681 = 0x222E
-
registro 682 = 0x0358
Entonces, la fecha y hora actuales de BCM ULP es 19/05/2012 (19 de mayo de 2012) a las 10 horas, 34 minutos, 46 segundos y 856 milisegundos.
Porque:
-
0x0513
-
0x05 = 5 (meses)
-
0x13 = 19 (días)
-
-
0x700A
-
0x70 = 112 (años)
-
0x0A = 10 (horas)
-
-
0x222E
-
0x22 = 34 (minutos)
-
0x2E = 46 (segundos)
-
-
0x0358 = 856 (milisegundos)
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:
|
13 |
Sincronización:
|
14 |
Fecha y hora configuradas:
|
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 |
0–1 |
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 |
0–1 |
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 |
0–1 |
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:
|
Ejemplo de conversión de fecha ULP
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 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 |