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 e información de supervisión. La interfaz de comandos permite la modificación de 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:
Para localizar un registro, utilice la lista ordenada de los registros con una referencia cruzada a la página donde se describen dichos registros.
Formato de tabla
Las tablas de registro tienen estas columnas:
Dirección |
Registro |
LE |
Unidad |
Tipo |
Rango |
Bit |
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).
-
RW: 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
-
-
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.
-
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 4294967295 |
INT32 |
Entero con signo de 32 bits |
Entre –2147483648 y +2147483647 |
INT64U |
Entero sin signo de 64 bits |
Entre 0 a 18 446 744 073 709 600 000 |
INT64 |
Entero con signo de 64 bits |
De –9 223 372 036 854 775 808 a +9 223 372 036 854 775 807 |
FLOAT32 |
Entero con signo de 32 bits con un punto flotante |
2-126 (1.0) y 2127 (2 - 2-23) |
OCTET STRING |
Cadena de texto |
1 byte por carácter |
XDATE |
Fecha y hora de los módulos ULP |
– |
DATETIME |
Fecha y hora en formato IEC 60870-5 |
– |
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 dato FLOAT32 se representa en la precisión única IEEE 754 (IEEE estándar 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: XDATE
XDATE es un tipo de datos que permite codificar la fecha y hora definidas por los módulos ULP.
Registro |
Tipo |
Bit |
Rango |
Descripción |
---|---|---|---|---|
1 |
INT16U |
0-7 |
0x01-0x1F |
Día |
8-15 |
0x01-0x0C |
Mes |
||
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 |
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 |
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 dan en decimales. Cuando es útil disponer del valor correspondiente en hexadecimal, se muestra como una constante de tipo de lenguaje C: 0xdddd. Por ejemplo, el valor decimal 123 se representa en hexadecimal como 0x007B.
-
Para medidas que dependen de la presencia de un neutro 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.
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 |
Note for TechPub writer: see D-SE-33693 (Compact NSX MB) for similar content and wording consistency.