Wago 750_652_24 fbMbMasterSerial read with Eaton NZM 2

Hello,

I’m trying to access an Eaton NZM2 circuit breaker using a 750-652 module via the Modbus RTU interface of the Eaton device, and I want to read values from 1001 to 1032. However, I’m not seeing any values in the array utResponse.awData.

The Eaton has terminals A, B, and COM. These are connected to the WAGO 750-652 module as follows:

  • A to D3 (bridged to D1)

  • B to D2 (bridged to D0)

  • COM to the WAGO module’s “ground” terminal.

Description from the Eaton NZM2 manual:

9.3.1 Input Status (Discrete Inputs)

The input status bits 101001 to 101032 are available via Function Code 02 (FC2). The status information is defined in Table 24.

The first 16 bits (1001 to 1016) show the current status, while the last 16 bits (1017 to 1032) indicate whether the corresponding status is valid.

Table 24: Input Status

  • 1001: The switch is in the closed position.

  • 1017: The switch is in the closed position and valid.

  • 1002: Unacknowledged trip condition

  • 1018: Unacknowledged trip condition is valid.

  • 1003: Active or unacknowledged alarm

  • 1019: Active or unacknowledged alarm is valid.

  • 1004: 0

  • 1020: 0

  • 1005: Maintenance mode is active.

  • 1021: Maintenance mode is active and valid.

  • 1006: Test mode is active.

  • 1022: Test mode is active and valid.

  • 1007: 0

  • 1023: 0

  • 1008: 0

  • 1024: 0

  • 1009: Phase sequence is clockwise (L1, L2, L3)

  • 1025: Phase sequence is clockwise (L1, L2, L3) and valid.

  • 1010: Overload mode is active (an overload is present)

  • 1026: Overload mode is active (an overload is present) and valid.

  • 1011: Zone Selective Interlocking (ZSI) is active

  • 1027: Zone Selective Interlocking (ZSI) is active and valid

Bits 1012 to 1016 and 1028 to 1032 are not further described or are empty.

The program and declaration (CODESYS 3.5 V19 Patch 4) look like this, but I’m unsure whether I’ve entered the correct uiReadAddress.

Settings of the EATON NZM2:

  • Slave ID = 1

  • Baud rate = 9600 bits/s

  • Parity = None

  • Stop bit = 1

Thank you.

Best regards.

Do you get any error code from the function code?

Try changing wiring by switching line A and B. How long ist the cable between the two devices and do you use terminating resistors (120 Ohm) on both ends?

Address 1001 is 16#03E9, you have 16#0029 = 41. Try also 16#03E8, probably you have to subtract 100001 from the address.

Good Morning Thruser,

so I switched the wires and used 16#03E8 for ReadAdress. Instantly it worked. Thank you!

1 Like

Hello again,

When I access a hex address that is 2 registers long, it works perfectly. But when I try to access an address with 4 registers, the module returns error code 2: not supported adress. But when I change the register read quantity to 2 and use exectly the same adress like 18A0 (witch uses 4 registers), I get some values, but it seems like the values are rounded. In the manuel is written 0x18A0 and its unsigned 64. So it must be a value with 4 registers? My code is like this:

For information in the manual is written: “Each data object occupies two registers (4 bytes). Exceptions are certain energy objects. These energy objects occupy four registers (8 bytes), which are specified as Signed 64 or Unsigned 64 (see format column). Since these objects can change in real time, a complete data object must be retrieved in a single transaction to avoid ‘data tearing’. Attempting to access a partial data object will result in exception code 04.”

Thanks a lot

Best regards Marco

Hello Marco,
Have you tested the 4 register address with a +1 / -1 at the address.
I know some devices start at address 0 other at address 1 (PLC vs Memory Address i think).
I would recommend to test to read the 4 register at the address 189F and 18A1 and see if one of the 2 work fine.