DOCA0091EN-08

Modbus Registers Tables

General Description

The following chapters describe the Modbus registers of the MicroLogic trip unit and the Modbus registers of the modules connected to it. These registers provide information that can be read, like electrical measures, protection configuration, and monitoring information. The command interface enables the user to modify these registers in a controlled way.

The presentation rules of the Modbus registers are as follows:

To find a register, use the ordered list of the registers with a cross reference to the page where these registers are described.

Table Format

Register tables have the following columns:

Address

Register

RW

X

Unit

Type

Range

A/E

Description

                 
  • Address: a 16-bit register address in hexadecimal. The address is data used in the Modbus frame.

  • Register: a 16-bit register number in decimal (register = address + 1).

  • RW: register read-write status

    • R: the register can be read by using Modbus functions

    • W: the register can be written by using Modbus functions

    • RW: the register can be read and written by using Modbus functions

    • RC: the register can be read by using the command interface

    • WC: the register can be written by using the command interface

  • X: the scale factor. A scale of 10 means that the register contains the value multiplied by 10. So, the real value is the value in the register divided by 10.

    Example:

    Register 1054 contains the system frequency. The unit is Hz and the scale factor is 10.

    If the register returns 503, this means that the system frequency is

    503/10 = 50.3 Hz.

  • Unit: the unit the information is expressed in.

  • Type: the encoding data type (see data type description below).

  • Range: the permitted values for this variable, usually a subset of what the format allows.

  • A/E: the metering type of the MicroLogic trip unit.

    • type A (Ammeter): current measurements

    • type E (Energy): current, voltage, power, and energy measurements

  • Description: provides information about the register and restrictions that apply.

Data Types

Data Types

Description

Range

INT16U

16-bit unsigned integer

0 to 65535

INT16

16-bit signed integer

-32768 to +32767

INT32U

32-bit unsigned integer

0 to 4 294 967 295

INT32

32-bit signed integer

-2 147 483 648 to +2 147 483 647

INT64

64-bit signed integer

-9 223 372 036 854 775 808 to +9 223 372 036 854 775 807

FLOAT32

32-bit signed integer with a floating point

2-126 (1.0) to 2127 (2 - 2-23)

OCTET STRING

Text string

1 byte per character

DATETIME

Date and time in the IEC 60870-5 format Data Type: DATETIME

ULP DATE

Date and time in ULP DATE format

Big-Endian Format

INT32, INT32U, INT64, and INT64U variables are stored in big-endian format: the most significant register is transmitted first, the least significant register is transmitted at last place.

INT32, INT32U, INT64, and INT64U variables are made of INT16U variables.

The formulas to calculate the decimal value of these variables are:

  • 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

Example 1:

The total active energy in the standard dataset is an INT64 variable coded in registers 32096 to 32099.

If the values in the registers are:

  • register 32096 = 0

  • register 32097 = 0

  • register 32098 = 0x0017 or 23

  • register 32099 = 0x9692 or 38546 as INT16U variable and -26990 as INT16 variable (use the INT16U value to calculate the value of the total active energy).

Then the total active energy is equal to 0x248 + 0x232 + 23x216 + 38546x20 = 1545874 Wh.

Example 2:

The reactive energy in the legacy dataset is an INT32 variable coded in registers 12052 to 12053.

If the values in the registers are:

  • register 12052 = 0xFFF2 = 0x8000 + 0x7FF2 or 32754

  • register 12053 = 0xA96E or 43374 as INT16U variable and -10606 as INT16 variable (use the INT16U value to calculate the value of the reactive energy).

Then the reactive energy is equal to (0-1)x231 + 32754x216 + 43374x20 = -874130 kVARh.

Data Type: FLOAT32

Data type FLOAT32 is represented in the single precision IEEE 754 (IEEE standard for floating-point arithmetic). A value N is calculated as indicated below:

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

Coefficient

Stands for

Description

Number of Bits

S

Sign

Defines the sign of the value:

0 = positive

1 = negative

1 bit

E

Exponent

Excess 127 binary integer added.

When 0 < E < 255, the actual exponent is: e = E - 127.

8 bits

M

Mantissa

Magnitude, normalized binary significant

23 bits

Example:

0 = 0 00000000 00000000000000000000000

-1.5 = 1 01111111 10000000000000000000000

with:

  • 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

Data Type: DATETIME

DATETIME is a data type used to code date and time defined by the IEC 60870-5 standard.

Register

Type

Bit

Range

Description

1

INT16U

0–6

0x00–0x7F

Year:

0x00 (00) to 0x7F (127) correspond to years 2000 to 2127

For example, 0x0D (13) corresponds to year 2013.

7–15

Reserved

2

INT16U

0–4

0x01–0x1F

Day

5–7

Reserved

8–11

0x00–0x0C

Month

12–15

Reserved

3

INT16U

0–5

0x00–0x3B

Minutes

6–7

Reserved

8–12

0x00–0x17

Hours

13–15

Reserved

4

INT16U

0–15

0x0000–0xEA5F

Milliseconds

Quality of DATETIME Timestamps

The quality of timestamps coded with the DATETIME data type can be indicated in the register following the 4 registers of the timestamp. In this case, the timestamp quality is coded as follows:

Bit

Description

0–11

Reserved

12

Externally synchronized:

  • 0 = Invalid

  • 1 = Valid

13

Synchronized:

  • 0 = Invalid

  • 1 = Valid

14

Date and time is set:

  • 0 = Invalid

  • 1 = Valid

15

Reserved

Quality of Bits in Registers

The quality of each bit of a register coded as INT16U data type as an enumeration of bits can be indicated in the register preceding the register.

Example:

The quality of each bit of the register 32001, circuit breaker status, is given in the preceding register, 32000.

The quality of the data corresponding to the bit 0 of register 32001, OF status indication contact, is given in the bit 0 of register 32000:

  • bit 0 of register 32000 = quality of OF status indication

  • bit 0 of register 32001 = OF status indication contact

If

Then

If bit 0 of register 32000 = 1 AND bit 0 of register 32001 = 0

The OF contact indicates that the device is open

If bit 0 of register 32000 = 1 AND bit 0 of register 32001 = 1

The OF contact indicates that the device is closed

If bit 0 of register 32000 = 0

The OF contact indication is invalid

Data Type: ULP DATE

ULP DATE is a data type used to code date and time. This table presents the ULP DATE data type.

Register

Type

Bit

Range

Description

1

2

INT32U

0x00000000–0xFFFFFFFF

Number of seconds since January 1 2000

3

INT16U

Complement in milliseconds

0–9

Encodes the milliseconds

10–11

Not used

12

01

IFM or IFE communication interface external synchronization status

0 = The communication interface has not been externally synchronized within the last 2 hours.

1 = The communication interface has been externally synchronized within the last 2 hours.

13

01

ULP module internal synchronization status

0 = The ULP module has not been internally synchronized.

1 = The ULP module has been internally synchronized.

14

01

Absolute date is set since last power on

0 = No

1 = Yes

15

Reserved

ULP Date Counter

The date in ULP DATE format is counted in number of seconds since January 1 2000.

In case of a power loss for an IMU module, the time counter is reset and will restart at January 1 2000.

If an external synchronization occurs after a power loss, the time counter is updated and converts the synchronization date to the corresponding number of seconds since January 1 2000.

ULP Date Conversion Principle

To convert the date from number of seconds since January 1 2000 to current date, the following rules apply:

  • 1 non-leap year = 365 days

  • 1 leap year = 366 days

    Years 2000, 2004, 2008, 2012,...(multiple of 4) are leap years (except year 2100).

  • 1 day = 86,400 seconds

  • 1 hour = 3,600 seconds

  • 1 minute = 60 seconds

The following table describes the steps to follow to convert the date from number of seconds since January 1 2000 to current date:

Step

Action

1

Calculate the number of seconds since January 1 2000: S = (content of register 1 x 65536) + (content of register 2)

2

Calculate the number of days since January 1 2000: D = integer value of the quotient of S / 86,400

Calculate the remaining number of seconds: s = S - (D x 86,400)

3

Calculate the number of days elapsed for the current year: d = D - (NL x 365) - (L x 366)

with NL = number of non-leap years since year 2000 and L = number of leap years since year 2000

4

Calculate the number of hours: h = integer value of the quotient of s / 3600

Calculate the remaining number of seconds: s’ = s - (h x 3600)

5

Calculate the number of minutes: m = integer value of the quotient of s’ / 60

Calculate the remaining number of seconds: s’’ = s’ - (m x 60)

6

Calculate the number of milliseconds: ms = (content of register 3) AND 0x03FF

7

Result:

  • The current date is date = d + 1.

    For example, if d = 303, the current date corresponds to the 304th day of the year, which corresponds to October 31 2007.

  • The current time is h:m:s’’:ms

ULP Date Conversion Example

Registers 2900 and 2901 return the date in number of seconds since January 1 2000. Register 2902 returns the complement in ms with the quality of the date.

Notes

  • The Type column tells how many registers to read to get the variable. For instance INT16U requires reading one register, whereas INT32 requires reading 2 registers.

  • Some variables must be read as a block of multiple registers, like the energy measurements. Reading the block partially results in an error.

  • Reading from an undocumented register results in a Modbus exception.

  • Numerical values are given in decimal. When it is useful to have the corresponding value in hexadecimal, it is shown as a C language type constant: 0xdddd. For example, the decimal value 123 is represented in hexadecimal as: 0x007B.

  • For measures that depend on the presence of neutral as identified by register 3314, reading the value returns 32768 (0x8000) if not applicable. For each table where it occurs, it is explained in a footnote.

  • Out of order and not applicable values depend on the data type.

    NOTE: As per legacy register implementation, some registers may display different out of order and not applicable values. For example, INT16U registers may return 32768 (0x8000) and INT32U may display 0x80000000.

Data Type

Out of Order and Not Applicable Values

INT16U

65535 (0xFFFF)

INT16

-32768 (0x8000)

INT32U

4294967295 (0xFFFFFFFF)

INT32

0x80000000

INT64U

0xFFFFFFFFFFFFFFFF

INT64

0x8000000000000000

FLOAT32

0xFFC00000