{
  "spec_version": 1,
  "slug": "schneider-powerlogic-pm5300-pm5500",
  "manufacturer": "Schneider Electric",
  "model": "PowerLogic PM5300 / PM5500 series (PM5340, PM5560, PM5760)",
  "category": "Energy meter",
  "supplier_url": "https://www.schneider-electric.ca/en/faqs/FA234017/",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "one_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst"
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 30,
      "count": 20,
      "name": "Meter name",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "20 registers of UTF-8 text; factory default \"Power Meter\"."
    },
    {
      "address": 50,
      "count": 20,
      "name": "Meter model",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 70,
      "count": 20,
      "name": "Manufacturer",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 130,
      "count": 2,
      "name": "Serial number",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 1637,
      "count": 1,
      "name": "Present firmware version",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "DLF format: major, minor, quality and internal evolution nibbles."
    },
    {
      "address": 2700,
      "count": 2,
      "name": "Active energy delivered",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Energy into the load (import). The same counter also exists as a 64-bit integer at 3204."
    },
    {
      "address": 2702,
      "count": 2,
      "name": "Active energy received",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Energy out of the load (export)."
    },
    {
      "address": 2704,
      "count": 2,
      "name": "Active energy delivered + received",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 2706,
      "count": 2,
      "name": "Active energy delivered - received",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Net active energy; the counter used for net metering."
    },
    {
      "address": 2708,
      "count": 2,
      "name": "Reactive energy delivered",
      "data_type": "Float32",
      "units": "kVARh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 2710,
      "count": 2,
      "name": "Reactive energy received",
      "data_type": "Float32",
      "units": "kVARh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 2716,
      "count": 2,
      "name": "Apparent energy delivered",
      "data_type": "Float32",
      "units": "kVAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 2718,
      "count": 2,
      "name": "Apparent energy received",
      "data_type": "Float32",
      "units": "kVAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3000,
      "count": 2,
      "name": "Current phase A",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3002,
      "count": 2,
      "name": "Current phase B",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3004,
      "count": 2,
      "name": "Current phase C",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3006,
      "count": 2,
      "name": "Neutral current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3008,
      "count": 2,
      "name": "Ground current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3010,
      "count": 2,
      "name": "Average current",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3012,
      "count": 2,
      "name": "Current unbalance phase A",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3014,
      "count": 2,
      "name": "Current unbalance phase B",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3016,
      "count": 2,
      "name": "Current unbalance phase C",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3018,
      "count": 2,
      "name": "Worst current unbalance",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3020,
      "count": 2,
      "name": "Voltage A-B",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3022,
      "count": 2,
      "name": "Voltage B-C",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3024,
      "count": 2,
      "name": "Voltage C-A",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3026,
      "count": 2,
      "name": "Average voltage L-L",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3028,
      "count": 2,
      "name": "Voltage A-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3030,
      "count": 2,
      "name": "Voltage B-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3032,
      "count": 2,
      "name": "Voltage C-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3036,
      "count": 2,
      "name": "Average voltage L-N",
      "data_type": "Float32",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3044,
      "count": 2,
      "name": "Worst voltage unbalance L-L",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3052,
      "count": 2,
      "name": "Worst voltage unbalance L-N",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3054,
      "count": 2,
      "name": "Active power phase A",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3056,
      "count": 2,
      "name": "Active power phase B",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3058,
      "count": 2,
      "name": "Active power phase C",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3060,
      "count": 2,
      "name": "Total active power",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Positive = delivered (import), negative = received (export)."
    },
    {
      "address": 3062,
      "count": 2,
      "name": "Reactive power phase A",
      "data_type": "Float32",
      "units": "kVAR",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3064,
      "count": 2,
      "name": "Reactive power phase B",
      "data_type": "Float32",
      "units": "kVAR",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3066,
      "count": 2,
      "name": "Reactive power phase C",
      "data_type": "Float32",
      "units": "kVAR",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3068,
      "count": 2,
      "name": "Total reactive power",
      "data_type": "Float32",
      "units": "kVAR",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3070,
      "count": 2,
      "name": "Apparent power phase A",
      "data_type": "Float32",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3072,
      "count": 2,
      "name": "Apparent power phase B",
      "data_type": "Float32",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3074,
      "count": 2,
      "name": "Apparent power phase C",
      "data_type": "Float32",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3076,
      "count": 2,
      "name": "Total apparent power",
      "data_type": "Float32",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3078,
      "count": 2,
      "name": "Power factor phase A",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Four-quadrant floating point power factor (data type 4Q_FP_PF) in the range -1 to 1."
    },
    {
      "address": 3080,
      "count": 2,
      "name": "Power factor phase B",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3082,
      "count": 2,
      "name": "Power factor phase C",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3084,
      "count": 2,
      "name": "Total power factor",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3086,
      "count": 2,
      "name": "Displacement power factor phase A",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3088,
      "count": 2,
      "name": "Displacement power factor phase B",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3090,
      "count": 2,
      "name": "Displacement power factor phase C",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3092,
      "count": 2,
      "name": "Total displacement power factor",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3100,
      "count": 2,
      "name": "RCM current I5",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Residual current input I5; PM5500 / PM5600 / PM5700 only."
    },
    {
      "address": 3102,
      "count": 2,
      "name": "RCM current I6",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Residual current input I6; PM5500 / PM5600 / PM5700 only."
    },
    {
      "address": 3110,
      "count": 2,
      "name": "Frequency",
      "data_type": "Float32",
      "units": "Hz",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3702,
      "count": 1,
      "name": "Power demand interval duration",
      "data_type": "UInt16",
      "units": "min",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Readable here; changed through the meter's demand setup command, not by writing this register."
    },
    {
      "address": 3764,
      "count": 2,
      "name": "Demand, active power last interval",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3766,
      "count": 2,
      "name": "Demand, active power present interval",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3768,
      "count": 2,
      "name": "Demand, active power predicted",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3770,
      "count": 2,
      "name": "Demand, active power peak",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3798,
      "count": 2,
      "name": "Demand, apparent power present interval",
      "data_type": "Float32",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 3878,
      "count": 2,
      "name": "Demand, current present interval",
      "data_type": "Float32",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    }
  ],
  "combined_registers": [
    {
      "id": "active-power-a-b",
      "label": "Active power A + B (calculated)",
      "operator": "+",
      "operand_a": {
        "register_type": "holding_registers",
        "register_address": 3054
      },
      "operand_b": {
        "register_type": "holding_registers",
        "register_address": 3056
      },
      "units": "kW",
      "scale_factor": 1,
      "offset": 0
    },
    {
      "id": "active-power-total-calculated",
      "label": "Active power, all phases (calculated)",
      "operator": "+",
      "operand_a": {
        "combined_id": "active-power-a-b"
      },
      "operand_b": {
        "register_type": "holding_registers",
        "register_address": 3058
      },
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "description": "Sum of the three phases, next to the device's own total at 3060."
    },
    {
      "id": "active-energy-net-calculated",
      "label": "Net active energy (calculated)",
      "operator": "-",
      "operand_a": {
        "register_type": "holding_registers",
        "register_address": 2700
      },
      "operand_b": {
        "register_type": "holding_registers",
        "register_address": 2702
      },
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "description": "Delivered minus received, compare with the meter's own net counter at 2706."
    }
  ],
  "notes": "Register numbers are the one-based register numbers of Schneider's PM5000 series Modbus register lists (the wire address is the number minus one); this block is identical for the PM5100/PM5300 list and the PM5500/PM5600/PM5700 list, which is why one file covers both families. All measurement values are Float32, with power in kW/kVAR/kVA; power factor registers use Schneider's four-quadrant floating point format (4Q_FP_PF) which is transmitted like a Float32. Energy counters exist twice: as Float32 in kWh/kVARh/kVAh at 2700-2722 (listed here) and as 64-bit integers in Wh/VARh/VAh at 3204-3248 (not listed, because this format has no 64-bit integer type). Setup values such as the demand interval, the nominal values and the multi-tariff configuration are marked RWC in the register list: they are readable but are changed with the meter's command interface (function code 16 to a command register), so they are listed as read-only here. Only the Ethernet models of the family (PM5340, PM5560, PM5570, PM5760) speak Modbus TCP natively; a PM5100 or PM5310 needs an Ethernet-to-RS-485 gateway. Unit ID 1 is the factory default, but installations sometimes use 255. Source: Schneider FAQ FA234017, which hosts the PM51xx/PM53xx and PM556x register lists, linked on the supplier page."
}
