{
  "spec_version": 1,
  "slug": "dent-powerscout-3037",
  "manufacturer": "DENT Instruments",
  "model": "PowerScout 3037",
  "category": "Power analyzer",
  "supplier_url": "https://www.dentinstruments.com/tech-support-landing-page/powerscout/",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "LowFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "None",
      "baud_rate": 9600,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 4000,
      "count": 2,
      "name": "System total true energy (kWh)",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter, low word at 4000 (LowFirst)."
    },
    {
      "address": 4002,
      "count": 1,
      "name": "System total true power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Unsigned absolute value of |kW L1| + |kW L2| + |kW L3|."
    },
    {
      "address": 4003,
      "count": 1,
      "name": "System maximum demand (peak demand)",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4004,
      "count": 1,
      "name": "System average power, most recent demand window",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4005,
      "count": 1,
      "name": "System maximum instantaneous power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Highest kW sample measured."
    },
    {
      "address": 4006,
      "count": 1,
      "name": "System minimum instantaneous power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Lowest kW sample measured."
    },
    {
      "address": 4007,
      "count": 2,
      "name": "System total reactive energy",
      "data_type": "UInt32",
      "units": "kVARh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter, low word at 4007 (LowFirst)."
    },
    {
      "address": 4009,
      "count": 1,
      "name": "System total reactive power",
      "data_type": "UInt16",
      "units": "kVAR",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Unsigned absolute value of |kVAR L1| + |kVAR L2| + |kVAR L3|."
    },
    {
      "address": 4010,
      "count": 2,
      "name": "System total apparent energy",
      "data_type": "UInt32",
      "units": "kVAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter, low word at 4010 (LowFirst)."
    },
    {
      "address": 4012,
      "count": 1,
      "name": "System total apparent power",
      "data_type": "UInt16",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4013,
      "count": 1,
      "name": "System displacement power factor",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Register is 100x the actual value."
    },
    {
      "address": 4014,
      "count": 1,
      "name": "System apparent power factor",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Register is 100x the actual value."
    },
    {
      "address": 4015,
      "count": 1,
      "name": "System average current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4016,
      "count": 1,
      "name": "Average line-to-line voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4017,
      "count": 1,
      "name": "Average line-to-neutral voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4018,
      "count": 1,
      "name": "Voltage L1 to L2",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4019,
      "count": 1,
      "name": "Voltage L2 to L3",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4020,
      "count": 1,
      "name": "Voltage L1 to L3",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4021,
      "count": 1,
      "name": "Line frequency",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4022,
      "count": 2,
      "name": "Phase 1 true energy",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter, low word at 4022 (LowFirst)."
    },
    {
      "address": 4024,
      "count": 2,
      "name": "Phase 2 true energy",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter, low word at 4024 (LowFirst)."
    },
    {
      "address": 4026,
      "count": 2,
      "name": "Phase 3 true energy",
      "data_type": "UInt32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter, low word at 4026 (LowFirst)."
    },
    {
      "address": 4028,
      "count": 1,
      "name": "Phase 1 true power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4029,
      "count": 1,
      "name": "Phase 2 true power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4030,
      "count": 1,
      "name": "Phase 3 true power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4031,
      "count": 2,
      "name": "Phase 1 reactive energy",
      "data_type": "UInt32",
      "units": "kVARh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter, low word at 4031 (LowFirst)."
    },
    {
      "address": 4033,
      "count": 2,
      "name": "Phase 2 reactive energy",
      "data_type": "UInt32",
      "units": "kVARh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter, low word at 4033 (LowFirst)."
    },
    {
      "address": 4035,
      "count": 2,
      "name": "Phase 3 reactive energy",
      "data_type": "UInt32",
      "units": "kVARh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter, low word at 4035 (LowFirst)."
    },
    {
      "address": 4037,
      "count": 1,
      "name": "Phase 1 reactive power",
      "data_type": "UInt16",
      "units": "kVAR",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4038,
      "count": 1,
      "name": "Phase 2 reactive power",
      "data_type": "UInt16",
      "units": "kVAR",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4039,
      "count": 1,
      "name": "Phase 3 reactive power",
      "data_type": "UInt16",
      "units": "kVAR",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4040,
      "count": 2,
      "name": "Phase 1 apparent energy",
      "data_type": "UInt32",
      "units": "kVAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter, low word at 4040 (LowFirst)."
    },
    {
      "address": 4042,
      "count": 2,
      "name": "Phase 2 apparent energy",
      "data_type": "UInt32",
      "units": "kVAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter, low word at 4042 (LowFirst)."
    },
    {
      "address": 4044,
      "count": 2,
      "name": "Phase 3 apparent energy",
      "data_type": "UInt32",
      "units": "kVAh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter, low word at 4044 (LowFirst)."
    },
    {
      "address": 4046,
      "count": 1,
      "name": "Phase 1 apparent power",
      "data_type": "UInt16",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4047,
      "count": 1,
      "name": "Phase 2 apparent power",
      "data_type": "UInt16",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4048,
      "count": 1,
      "name": "Phase 3 apparent power",
      "data_type": "UInt16",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4049,
      "count": 1,
      "name": "Phase 1 displacement power factor",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Register is 100x the actual value."
    },
    {
      "address": 4050,
      "count": 1,
      "name": "Phase 2 displacement power factor",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Register is 100x the actual value."
    },
    {
      "address": 4051,
      "count": 1,
      "name": "Phase 3 displacement power factor",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Register is 100x the actual value."
    },
    {
      "address": 4052,
      "count": 1,
      "name": "Phase 1 apparent power factor",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Register is 100x the actual value."
    },
    {
      "address": 4053,
      "count": 1,
      "name": "Phase 2 apparent power factor",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Register is 100x the actual value."
    },
    {
      "address": 4054,
      "count": 1,
      "name": "Phase 3 apparent power factor",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Register is 100x the actual value."
    },
    {
      "address": 4055,
      "count": 1,
      "name": "Phase 1 current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4056,
      "count": 1,
      "name": "Phase 2 current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4057,
      "count": 1,
      "name": "Phase 3 current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4058,
      "count": 1,
      "name": "Voltage L1 to neutral",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4059,
      "count": 1,
      "name": "Voltage L2 to neutral",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4060,
      "count": 1,
      "name": "Voltage L3 to neutral",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4063,
      "count": 1,
      "name": "Data tick counter",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Internal sample count, cleared every minute; a fresh sample is one whose counter moved."
    },
    {
      "address": 4079,
      "count": 1,
      "name": "System average power (demand window)",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4080,
      "count": 1,
      "name": "System minimum demand",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4081,
      "count": 1,
      "name": "System maximum instantaneous kVA demand",
      "data_type": "UInt16",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4082,
      "count": 1,
      "name": "System kVA demand, now",
      "data_type": "UInt16",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 4083,
      "count": 1,
      "name": "System maximum kVAR demand",
      "data_type": "UInt16",
      "units": "kVAR",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    }
  ],
  "combined_registers": [],
  "notes": "Source: DENT Instruments 'PowerScout 3037 Power Meter and ViewPoint Software - Operator's Guide', November 9, 2017, chapter 'All Things Modbus', table 'ABSOLUTE MEASUREMENT REGISTERS' (headed 'Offset refers to a base of 40001') plus the scaling notes for registers 44001-44061 in the same chapter - https://www.dentinstruments.com/wp-content/uploads/2022/04/PS3037_Manual.pdf . Each row's wire address is the manual's offset column (44001 -> 4000). PF rows are '100x actual value', so they carry a 0.01 factor; the other rows are unscaled 16-bit values in the units the manual prints. Energy counters are 32-bit with the low word first - the manual's own worked example reads 5013 as 44001 (LSW) = 13 and 44002 (MSW) = 5013 - so the file declares word order LowFirst. The factory serial settings are from the same manual, section 'Setting the Network Address Switches': the rotary switches' 'default factory setting is hex 01', and 'Data Bits is 8N1 and the Baud Rate is 9600'. Deliberate omissions: the CT scaling registers, the configuration/reset registers, the BACnet object tables, the pulse/digital output registers, the time-since-reset pair (4061/4062) and the model-dependent register-assignment tables - all commissioning rather than measurement rows."
}
