Schneider PM5560 Modbus Register Map and Simulator
The Schneider Electric PowerLogic PM5560 is a power meter used in commercial and industrial facilities. If you are building a monitoring system, integrating power data into a SCADA platform, or developing energy management software, you need to read data from the PM5560 over Modbus. And for that, you need the register map.
This reference lists the PM5560's electrical measurement registers from Schneider's public PM556x Modbus register list, explains how the data is encoded, and shows how to test your integration without a physical meter on your desk.
Overview: Schneider PowerLogic PM5560
The PM5560 is a multi-function power meter from Schneider Electric's PowerLogic PM5500 series. It provides electrical measurements for three-phase power distribution systems: voltage, current, power (active, reactive, apparent), power factor, frequency, and energy accumulation.
The meter communicates via Modbus RTU (RS485) or Modbus TCP (Ethernet), making it accessible from virtually any SCADA system, BMS (Building Management System), or custom monitoring application.
Communication Setup
Before reading registers, the communication parameters must match between the master and the PM5560. According to Schneider's PM556x register list (registers 6500 to 6503), the serial port factory values are:
- Modbus RTU (RS485): protocol Modbus, slave address 1 (valid range 1 to 247), baud rate 19200, even parity (code 0 in register 6503). Set the master to 8-E-1 to match; a master set to 8-N-1 against the factory parity will time out.
- Modbus TCP: TCP port 502. IP settings are configured in the meter's communications setup; see the PM5500 user manual (HRB1684301-18) for the menu path.
Measurement registers are read with function code 0x03 (Read Holding Registers). Setup registers marked as command-interface registers in Schneider's list are not written directly; see Schneider FAQ FA241856 for the command method.
PM5560 Register Map: Electrical Measurements
The table lists the most commonly accessed measurement registers from the PM556x public register list (PM5560 column). Register is the number as printed in Schneider's list. Schneider's list and the PM5500 user manual do not say whether these numbers are one-based or zero-based. Schneider's PM3200 and iEM3000 manuals state that register = wire address + 1 and the PM5500 list uses the same numbering style, so the Wire address column assumes one-based numbering (wire address = register - 1). Confirm on your meter: read printed register 3000 (wire address 2999) as a float32 and check that it is a plausible current; if it is not, shift every address by one. Float32 values occupy two consecutive 16-bit registers and Int64 values occupy four.
Notes: the power factor registers use a four-quadrant encoding with values between -2 and 2; the register list's Data Types sheet gives the decode steps. Energy is a signed 64-bit integer in Wh, so divide by 1,000 for kWh; a 32-bit float cannot hold a large energy counter without losing resolution. Source: Schneider PM556x Public Modbus Register List (revision 1.4, PM5560 firmware 4.1.8), cross-checked against the Voltrus register library entry for the PM5560.
IEEE 754 Encoding: How 32-Bit Floats Are Stored in Registers
Understanding the register encoding is essential for correctly interpreting PM5560 data. Modbus uses 16-bit registers, but the PM5560 stores most measurement values as 32-bit IEEE 754 floating-point numbers. This means each measurement occupies two consecutive registers. For a general explanation of how Modbus register types, addressing, and data encoding work, see our Modbus register types guide, and for word-order troubleshooting see Modbus floating point byte order.
Here is how a value like 230.5 is stored (a worked example of the encoding, not a reading from a meter):
- The float value
230.5is encoded as a 32-bit IEEE 754 value:0x43668000in hexadecimal. - Split into two 16-bit registers: The 32-bit value is split into high and low words:
0x4366(high word) and0x8000(low word). - Stored in consecutive registers: with high word first (ABCD), the first register holds
0x4366and the second holds0x8000.
The word order matters. Schneider's PM556x register list does not state the word order for 32-bit values. With high word first (also written ABCD) the pair above decodes to 230.5; with low word first (CDAB) the same two registers read as 0x80004366, which decodes to a tiny negative number. Check against a value you can see on the meter's display, and set your master's word order to match.
A quick verification: if you read the first pair of a voltage and get 0x4366 then 0x8000, combining them as 0x43668000 and interpreting as an IEEE 754 float gives you 230.5. If you get nonsense values, the word order is probably swapped.
0x03 (Read Holding Registers), always read a whole number of values: an even number of registers for Float32 and a multiple of four for Int64 energy. A read that ends in the middle of a value leaves you with half of it.
Testing Without Hardware: PM5560 Simulator
You might be building monitoring software while the meters are still being installed on site. For that, you can point your master at a simulator and test your reads.
Options for testing without hardware:
- Generic Modbus slave simulator: manually set the registers from the table above to float values. This requires you to encode IEEE 754 floats into register pairs by hand.
- MacTools PM5560 template: select the PM5560 device template in MacTools Modbus Poll and start the simulator. The template is a simplified layout: it exposes a short block of Float32 values starting at address 2999 (three line-to-neutral voltages, three currents, active, reactive and apparent power, power factor, frequency, THD, temperature) followed by two Float64 energy values. It does not reproduce the real PM5560 register map above, so addresses and types in the template differ from a physical meter. Use it to exercise your polling and decoding logic, and use the table above for the register addresses on real hardware.
Quick Start: Reading PM5560 Data
To get started reading PM5560 measurements:
- Start the PM5560 simulator. In MacTools Modbus Poll, select the PM5560 template and click Start. The simulator listens on port 502 by default.
- Connect your master. Use MacTools Modbus Poll, a Python script with
pymodbus, or your own application. Connect tolocalhost:502, slave address 1. - Read a voltage pair. Send a Read Holding Registers request (function code 0x03) for 2 registers at address 2999 and decode them as a Float32. On the simulator this is the first line-to-neutral voltage; on a real PM5560 wire address 2999 is phase A current.
If you are reading from a physical PM5560, use the wire addresses in the register table, set the connection target to the meter's IP address (Modbus TCP) or its RS485 serial port (Modbus RTU), and confirm the word order against the meter's display.
Try the PM5560 Simulator
MacTools Modbus Poll includes a PM5560 power meter simulator template. Native macOS app. $19.99 one-time.
Get MacTools Modbus PollRelated: Full SCADA System
Need continuous monitoring with dashboards, alarms, and trending across all your devices? Voltrus SCADA supports Modbus, OPC-UA, Siemens S7, Allen-Bradley, DNP3, BACnet, MQTT, and more. Free open source core (AGPL-3.0).