NCD RS-485 (Type 539) + Schneider PM8000 - Reads INT16 (0x03) but Fails on FLOAT32 (0x03)

Hi NCD Team,

We’re setting up our first RS-485 Wireless Transmitter (Type 539) and are having trouble reading data from a Schneider PM8000 power meter. We’ve managed to get a simple register to read, but we’re failing on all complex registers (like FLOAT32) and are hoping for some expert advice.

Here is a complete summary of our setup and everything we’ve tried.


1. Hardware & Software Setup

  • Sensor: NCD RS-485 Wireless Transmitter (Type 539)
  • Meter: Schneider PM8000 Power Meter
  • Gateway: Robustel Edge Gateway running Node-RED

2. What We Have Confirmed

We are confident that our wiring (A/B) and the Schneider meter’s base configuration are correct.

  • Meter Settings:

    • Slave ID: 1
    • Baud Rate: 9600 (8N1)
    • Timeout: ~3-8 seconds
  • ModScan (TCP/IP) Test:

    • We can successfully connect to the PM8000 using ModScan over Modbus TCP/IP.
    • Using ModScan, we can poll all registers (both “Year” and “Voltage”, etc) using Function Code 0x03 (Read Holding Registers).
    • We get the correct HEX values and can convert them to decimal (e.g., 2025 for the year, ~600 for voltage).
    • This proves the meter is online, the Slave ID is correct, and the registers exist where we expect them.

3. What Works (The NCD Success Case)

We configured the NCD sensor to read a single, simple register:

  • NCD Config:
    • Function Code: 0x03 - Read Holding Registers
    • Slave ID: 1
    • Baud Rate: 9600
    • Registers to Read: 1
    • Register 1: 1836 (This is “Year”, which is 1837 on the Schneider map. We’ve adjusted for the 0-based indexing).
  • Result: SUCCESS.
    • The NCD sensor payload in Node-RED shows data: [7, 233].
    • Our Node-RED parser correctly converts this to 2025.
    • This test proves our Wiring, Slave ID, and Baud Rate are all correct.

4. What Fails (The Problem)

The failure happens when we try to add a FLOAT32 register (which spans 2 Modbus registers).

  • NCD Config:
    • Function Code: 0x03 - Read Holding Registers (Kept the same)
    • Slave ID: 1
    • Baud Rate: 9600
    • Registers to Read: 3
    • Register 1: 1836 (Year)
    • Register 2: 3025 (Start of “Voltage L-L Avg”)
    • Register 3: 3026 (End of “Voltage L-L Avg”)
  • Result: FAILURE.
    • The “Year” register (1836) still reads correctly, but the voltage registers return error bytes.
    • The payload in Node-RED is: data: [7, 233, 128, 0, 128, 0]
    • Our parser correctly gets Year: 2025 from [7, 233], but the [128, 0, 128, 0] bytes are parsed as 0.

5. Our Core Assumption & Question

This is where we are stuck. We are confident we should be using Function Code 0x03 (Holding Registers) because ModScan works with 0x03 for all registers (Year and Voltage).

However, maybe “Year” (1836) is a config register, while “Voltage” (3025) is a live measurement?

Why ModScan can get everything with 0x03 is confusing, but this is our best guess for the NCD failure.


6. Other Settings We’ve Tried (No Change)

  • Stay On Mode: Tried Enabled and Disabled. No change.
  • RX Timeout: Tried 2, 3, and 10 seconds (with the PM8000 timeout set lower). No change.
  • Read Retries: Tried 1 and 3. No change.
  • Sub Device Type: Set to 1 (don’t think this matters).

Our Specific Questions

  1. Are there any other NCD settings (Boot Time, RX Timeout, etc.) that are known to cause this specific “partial read” failure with Schneider meters?

Thanks for any help you can provide. We have several of these to set up and are stuck on this final step.

Latest setup:

and

{“topic”:“sensor_data”,“data”:{“nodeId”:0,“firmware”:4,“battery”:“1.83”,“battery_percent”:“-64.25”,“counter”:152,“sensor_type”:539,“sensor_data”:{“subdevice_type”:1,“number_of_registers”:5,“status_24_31”:0,“status_16_23”:0,“status_8_15”:0,“status_0_7”:31,“data”:[128,0,128,0,128,0,128,0,7,233]},“sensor_name”:“RS485 Modbus Wireless Converter”,“type”:“sensor_data”,“addr”:“00:13:a2:00:42:3d:03:91”,“received”:1763159646319,“original”:{“mac”:“00:13:a2:00:42:3d:03:91”,“receive_options”:{“ack”:0,“broadcast”:0,“type”:“”},“data”:[127,0,4,2,57,152,2,27,0,1,5,0,0,0,31,128,0,128,0,128,0,128,0,7,233],“rssi”:{},“type”:“receive_packet”},“rssi”:81,“modem_mac”:“00:13:A2:00:42:3B:1B:B0”},“payload”:{“subdevice_type”:1,“number_of_registers”:5,“status_24_31”:0,“status_16_23”:0,“status_8_15”:0,“status_0_7”:31,“data”:[128,0,128,0,128,0,128,0,7,233]},“time”:1763159646324,“_msgid”:“da0fef7b86c8e833”}

@Bhaskar hoping you can help!

the status byte value is 31 which means it failed to read reg 2,3,4 and was able to read reg 1,5,6

  1. set RX time out to 1
  2. Set Number of Read Retries to 3

Hi @Bhaskar , I did what you said.

Here coniig results payload:

{“topic”:“Config Results”,“payload”:{“rx_timeout_539”:{“res”:“Bad Response”,“result”:10,“sent”:[244,34,0,0,23,1]},“bootup_time_539”:true,“number_of_read_retries_539”:true},“time”:1763219486427,“addr”:“00:13:a2:00:42:3d:03:91”,“_msgid”:“cbc5a7538aa41900”}

I keep getting a Bad Response on the RX timeout, despite trying multiple times.

Here is the payload for a reading after config:

{“topic”:“sensor_data”,“data”:{“nodeId”:0,“firmware”:4,“battery”:“2.19”,“battery_percent”:“-24.18”,“counter”:167,“sensor_type”:539,“sensor_data”:{“subdevice_type”:1,“number_of_registers”:5,“status_24_31”:0,“status_16_23”:0,“status_8_15”:0,“status_0_7”:31,“data”:[128,0,128,0,128,0,128,0,7,233]},“sensor_name”:“RS485 Modbus Wireless Converter”,“type”:“sensor_data”,“addr”:“00:13:a2:00:42:3d:03:91”,“received”:1763219580730,“original”:{“mac”:“00:13:a2:00:42:3d:03:91”,“receive_options”:{“ack”:0,“broadcast”:0,“type”:“”},“data”:[127,0,4,2,168,167,2,27,0,1,5,0,0,0,31,128,0,128,0,128,0,128,0,7,233],“rssi”:{},“type”:“receive_packet”},“rssi”:40,“modem_mac”:“00:13:A2:00:42:37:87:BB”},“payload”:{“subdevice_type”:1,“number_of_registers”:5,“status_24_31”:0,“status_16_23”:0,“status_8_15”:0,“status_0_7”:31,“data”:[128,0,128,0,128,0,128,0,7,233]},“time”:1763219580735,“_msgid”:“7dbf679b87def9fb”}

Any other ideas? Maybe we can chat over the phone today?

Hi again @Bhaskar , Can we please have some support for this product? We have 6 of these sensors, and not sure what to do with them… Please advise if we can have a phone call ASAP to discuss what the issue could be. Thank you Kindly.

Tom,
Sorry i was traveling. Yes we can meet today.