{
 "manufacturer": "DENT Instruments",
 "manufacturer_slug": "dent-instruments",
 "model": "PowerScout 3037 Power Meter",
 "model_slug": "powerscout-3037",
 "short_model": "PowerScout 3037",
 "aliases": [
  "PS3037",
  "PowerScout 3037 Ethernet",
  "PS3037-E",
  "PowerScout 3037 Serial"
 ],
 "equipment_type": "Power meter",
 "applies_to": "PowerScout 3037 serial (RS-485) and Ethernet meters in Modbus mode, per the November 9, 2017 PS3037 Operator's Guide.",
 "summary": "The PowerScout 3037 is a compact three-phase submeter with CT inputs, an RS-485 port (Modbus RTU or BACnet MS/TP) and an optional Ethernet port. In Modbus mode everything is a holding register read with function 03. Readings are 16-bit unsigned integers whose scaling depends on a user-set data scalar (44602). This map covers identification, the main system and per-phase readings, line frequency, and the CT, scaling, wiring, pulse-output and comms settings.",
 "transport": [
  "RTU",
  "TCP"
 ],
 "defaults": {
  "unit_id": 1,
  "baud": 9600,
  "parity": "None",
  "data_bits": 8,
  "stop_bits": 1,
  "tcp_port": null
 },
 "addressing": {
  "convention": "Modicon",
  "note": "The tables print 4xxxx register numbers next to an 'Offset' column, and the guide states the offset is relative to 40001 and that the address sent on the wire is the register minus 40001 (its examples: 40025 is sent as 0024, 44062 as 4061). So wire address = printed register - 40001, which equals the printed offset."
 },
 "default_word_order": "CDAB",
 "firmware": null,
 "source": {
  "title": "Operator's Guide: PowerScout 3037 Power Meter and ViewPoint Software",
  "doc_number": null,
  "revision_date": "2017-11-09",
  "url": "https://www.dentinstruments.com/wp-content/uploads/2022/04/PS3037_Manual.pdf",
  "pages": "Address switches pp. 23-24, data scalar p. 34 (Table 7), two-register values p. 36, serial defaults p. 38 (Table 9), mode switching pp. 39-40, All Things Modbus pp. 64-84, Veris emulation pp. 97-103"
 },
 "notes": [
  "Scaling: the guide's scalar table (p. 34, Table 7) applies to registers 44001-44061. Those integer readings are listed here raw (scale 1, no unit); multiply by the factor for the current Data Scalar (44602, values 0-6, see its value list) in the column named in each register's description: kW/kWh/Demand, kVAR/kVARh, kVA/kVAh, Amps or Volts. Power factor is x0.01 at every scalar, so the PF registers carry that fixed scale.",
  "Two-register integers (energy, time since reset) put the LSW at the lower register and the MSW at the next one; the guide's worked example (p. 36) computes MSW x 65536 + LSW, then applies the scalar. They are listed as UINT32 with CDAB word order.",
  "The guide says every register is a 16-bit unsigned value (p. 81), yet its positive/negative PF register descriptions refer to the system and phase PF values in 44014/44015/44050-44055 being negative. How a negative PF is encoded there is not stated; they are listed as unsigned here.",
  "Left out: the positive (46xxx), negative (47xxx) and NET (44150-44157, 46150-46157, 47150-47157) power and energy blocks. The guide's scalar table names only registers 44001-44061 and does not say which factor applies to these blocks. The exception is 46022, which the guide documents as 10 x Hz.",
  "Left out: the Veris H8035/H8036 floating-point block 40257-40310 (Table 27). The guide labels each value MSW/LSW but never states the float format, gives units only by name, and does not say whether the block answers when 44526 is not set to 1 (Veris identity).",
  "Left out: the Veris integer block 40001-40027. Its multipliers depend on the CT rating band (Table 26) rather than a fixed scale.",
  "Left out: 44022 Line Frequency (the absolute block gives no scale); use 46022.",
  "Left out: per-CT settings 50100-50399, the CT phase-shift registers, the snap-to-zero thresholds and the synchronize register 40129, as their encodings are not fully stated.",
  "Left out for size: the per-phase energy, kVAR, kVA and displacement-PF registers and the extra demand registers 44080-44084 (see pp. 67-70).",
  "DENT's one-page 'Interpreting the PowerScout Registers - Data Scaling' sheet (https://www.dentinstruments.com/wp-content/uploads/2022/09/Interpreting_PowerScout_Registers_Data_Scaling.pdf) gives the same scalar table, but its worked examples name registers 44302 and 44064 as the scalar register; in the guide 44064 is the Data Tick Counter. The guide's 44602 is followed here."
 ],
 "registers": [
  {
   "table": "holding_register",
   "address": 4000,
   "documented": "44001-44002",
   "name": "kWh System",
   "description": "LSW 44001, MSW 44002. Raw; multiply by the kW/kWh/Demand column of the 44602 scalar.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4002,
   "documented": "44003",
   "name": "kW System",
   "description": "Sum of absolute phase kW. Raw; multiply by the kW/kWh/Demand column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4003,
   "documented": "44004",
   "name": "kW Demand System Max",
   "description": "Peak demand. Raw; multiply by the kW/kWh/Demand column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4004,
   "documented": "44005",
   "name": "kW Demand System Now",
   "description": "Average kW, latest demand window. Raw; x kW/kWh/Demand column of the 44602 scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4007,
   "documented": "44008-44009",
   "name": "kVARh System",
   "description": "LSW 44008, MSW 44009. Raw; multiply by the kVAR/kVARh column of the 44602 scalar.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4009,
   "documented": "44010",
   "name": "kVAR System",
   "description": "Sum of absolute phase kVAR. Raw; multiply by the kVAR/kVARh column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4010,
   "documented": "44011-44012",
   "name": "kVAh System",
   "description": "LSW 44011, MSW 44012. Raw; multiply by the kVA/kVAh column of the 44602 scalar.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4012,
   "documented": "44013",
   "name": "kVA System",
   "description": "Raw; multiply by the kVA/kVAh column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4013,
   "documented": "44014",
   "name": "Displacement PF System",
   "description": "Register is 100 x the power factor at every data scalar setting.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4014,
   "documented": "44015",
   "name": "Apparent PF System",
   "description": "Register is 100 x the power factor at every data scalar setting.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4015,
   "documented": "44016",
   "name": "Amps System Avg",
   "description": "Average of the three phases. Raw; multiply by the Amps column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4016,
   "documented": "44017",
   "name": "Volts Line to Line Avg",
   "description": "Raw; multiply by the Volts column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4017,
   "documented": "44018",
   "name": "Volts Line to Neutral Avg",
   "description": "Raw; multiply by the Volts column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4018,
   "documented": "44019",
   "name": "Volts L1 to L2",
   "description": "Raw; multiply by the Volts column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4019,
   "documented": "44020",
   "name": "Volts L2 to L3",
   "description": "Raw; multiply by the Volts column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4020,
   "documented": "44021",
   "name": "Volts L1 to L3",
   "description": "Raw; multiply by the Volts column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4028,
   "documented": "44029",
   "name": "kW L1",
   "description": "Raw; multiply by the kW/kWh/Demand column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4029,
   "documented": "44030",
   "name": "kW L2",
   "description": "Raw; multiply by the kW/kWh/Demand column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4030,
   "documented": "44031",
   "name": "kW L3",
   "description": "Raw; multiply by the kW/kWh/Demand column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4052,
   "documented": "44053",
   "name": "Apparent PF L1",
   "description": "Register is 100 x the power factor at every data scalar setting.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4053,
   "documented": "44054",
   "name": "Apparent PF L2",
   "description": "Register is 100 x the power factor at every data scalar setting.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4054,
   "documented": "44055",
   "name": "Apparent PF L3",
   "description": "Register is 100 x the power factor at every data scalar setting.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4055,
   "documented": "44056",
   "name": "Amps L1",
   "description": "Raw; multiply by the Amps column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4056,
   "documented": "44057",
   "name": "Amps L2",
   "description": "Raw; multiply by the Amps column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4057,
   "documented": "44058",
   "name": "Amps L3",
   "description": "Raw; multiply by the Amps column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4058,
   "documented": "44059",
   "name": "Volts L1 to Neutral",
   "description": "Raw; multiply by the Volts column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4059,
   "documented": "44060",
   "name": "Volts L2 to Neutral",
   "description": "Raw; multiply by the Volts column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4060,
   "documented": "44061",
   "name": "Volts L3 to Neutral",
   "description": "Raw; multiply by the Volts column of the 44602 data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4061,
   "documented": "44062-44063",
   "name": "Time Since Reset",
   "description": "Seconds since the kWh registers were reset; LSW first.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "CDAB",
   "scale": 1,
   "units": "s",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4063,
   "documented": "44064",
   "name": "Data Tick Counter",
   "description": "Sample count, cleared every minute; shows whether a reading is new.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4065,
   "documented": "44066",
   "name": "Clear Accumulated Measurements",
   "description": "Write 1234 to reset kWh and other accumulated values.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4068,
   "documented": "44069",
   "name": "Firmware Major Revision",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4069,
   "documented": "44070",
   "name": "Firmware Minor Revision",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4200,
   "documented": "44201-44205",
   "name": "Model Number",
   "description": "10 ASCII characters, two per register.",
   "data_type": "STRING",
   "length": 5,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4205,
   "documented": "44206-44210",
   "name": "Serial Number",
   "description": "10 ASCII characters, two per register.",
   "data_type": "STRING",
   "length": 5,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4401,
   "documented": "44402",
   "name": "Port 1 Output Control",
   "description": "Drives the port as a switch; needs 45110 = 0.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Output low (closed)",
    "1": "Output high (open), default"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4510,
   "documented": "44511",
   "name": "Hardware ID",
   "description": "Hardware revision code.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4524,
   "documented": "44525",
   "name": "CT Type All",
   "description": "Sets the CT type for all three inputs.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Millivolt CT",
    "2": "Rogowski coil"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4525,
   "documented": "44526",
   "name": "Slave ID",
   "description": "1 = Veris H8035/H8036 identity; any other value = DENT.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Veris"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4599,
   "documented": "44600",
   "name": "CT Integer All",
   "description": "Integer part of the CT rating, written to all three CTs.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4600,
   "documented": "44601",
   "name": "CT Decimal All",
   "description": "Fractional part of the CT rating, written to all three CTs.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4601,
   "documented": "44602",
   "name": "Data Scalar",
   "description": "Scaling of readings 44001-44061 (0-6); factors per column of the guide's table. PF always x0.01.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "kW/kWh/Demand x0.00001, kVAR/kVARh x0.00001, kVA/kVAh x0.00001, A x0.01, V x0.1",
    "1": "kW/kWh/Demand x0.001, kVAR/kVARh x0.001, kVA/kVAh x0.001, A x0.1, V x0.1",
    "2": "kW/kWh/Demand x0.01, kVAR/kVARh x0.01, kVA/kVAh x0.01, A x0.1, V x0.1",
    "3": "kW/kWh/Demand x0.1, kVAR/kVARh x0.1, kVA/kVAh x0.1, A x0.1, V x0.1",
    "4": "kW/kWh/Demand x1, kVAR/kVARh x1, kVA/kVAh x1, A x1, V x1",
    "5": "kW/kWh/Demand x10, kVAR/kVARh x10, kVA/kVAh x10, A x1, V x1",
    "6": "kW/kWh/Demand x100, kVAR/kVARh x100, kVA/kVAh x100, A x1, V x1 (same for any value above 6)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4602,
   "documented": "44603",
   "name": "Demand Window Size",
   "description": "Demand interval; default 15.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "min",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4603,
   "documented": "44604",
   "name": "Volts Multiplier Integer",
   "description": "Integer part of the step-down transformer voltage multiplier.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4604,
   "documented": "44605",
   "name": "Amps Multiplier",
   "description": "Current multiplier, e.g. for x:5 A CTs.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4605,
   "documented": "44606",
   "name": "Communication Setting",
   "description": "Coded baud + parity + stop bits; e.g. 901 = 9600, no parity, 1 stop.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4606,
   "documented": "44607",
   "name": "Service Type",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Wye",
    "1": "Delta"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4608,
   "documented": "44609",
   "name": "Set Line Frequency",
   "description": "Nominal line frequency used for metering.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "Hz",
   "access": "RW",
   "values": {
    "50": "50 Hz",
    "60": "60 Hz"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4611,
   "documented": "44612",
   "name": "Communications Mode",
   "description": "Write 1833 to switch the meter to BACnet MS/TP.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4615,
   "documented": "44616",
   "name": "Volts Multiplier Decimal",
   "description": "Fractional part of the voltage multiplier, in thousandths.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 5109,
   "documented": "45110",
   "name": "Digital Port 1 Configuration",
   "description": "Selects pulse source, or 0 to use the port as an on/off output.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "No pulses (on/off output)",
    "44001": "System kWh pulses",
    "44008": "System kVARh pulses",
    "44011": "System kVAh pulses"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 5110,
   "documented": "45111",
   "name": "Port 1 Pulse Output Relay Type",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Normally open (high)",
    "1": "Normally closed (low)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6021,
   "documented": "46022",
   "name": "Measured Line Frequency",
   "description": "Register is 10 x frequency (602 = 60.2 Hz); not affected by the data scalar.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  }
 ],
 "integration": {
  "summary": "Read 44602 first to learn the data scalar, then poll the system block from 44001 (wire 4000) with function 03 and apply the matching factor per quantity. Writes use function 06 (single register) only.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 4601,
    "why": "Data scalar that sets the integer scaling"
   },
   {
    "table": "holding_register",
    "address": 4000,
    "why": "System kWh (raw, LSW first)"
   },
   {
    "table": "holding_register",
    "address": 4002,
    "why": "System kW (raw)"
   },
   {
    "table": "holding_register",
    "address": 4014,
    "why": "System apparent power factor"
   },
   {
    "table": "holding_register",
    "address": 4055,
    "why": "Phase 1 current (raw)"
   },
   {
    "table": "holding_register",
    "address": 4058,
    "why": "Phase 1-N voltage (raw)"
   }
  ],
  "enable": "Modbus is the factory protocol on RS-485. To return from BACnet to Modbus, write 375 to BACnet object 10190 in ViewPoint, or power up with the address switches at FF, set LSB = 1 (Modbus) and MSB to the baud code within 10 seconds. Switches at 00 force Modbus at 9600 8N1. Writing 1833 to 44612 changes the meter to BACnet.",
  "watchdog": null,
  "quirks": [
   "Wire address = printed register - 40001 (the printed Offset column).",
   "Integer readings 44001-44061 need the data-scalar factor from 44602; amps and volts use different factors from power and energy.",
   "Two-register integers are LSW first (CDAB).",
   "Only function codes 03, 06 and 11 (Report Slave ID) are supported; there is no multi-register write.",
   "Report Slave ID returns a text string including the serial number, firmware and the current scalar."
  ],
  "setup": [
   "Set the Modbus address on the two hex rotary switches (MSB, LSB); the switch value is hexadecimal, e.g. 6 and 4 = address 100. Factory setting is 01; 00 and FF are reserved.",
   "Serial defaults in Modbus mode are 9600 baud, 8 data bits, no parity, 1 stop bit; 9600 to 115200 baud are supported. Baud, parity and stop bits are coded into 44606.",
   "Ethernet units ship with static IP 192.168.1.10. The guide does not state the Modbus TCP port; ViewPoint lets you enter it.",
   "Set CT type and rating (44525, 44600/44601) and the service type (44607, wye or delta) before trusting readings.",
   "Choose a data scalar large enough that the biggest expected value stays under 65535 counts; the guide's selection table suggests scalars 1 to 3 depending on CT size and voltage."
  ],
  "gotchas": [
   "When the Ethernet cable is connected the RS-485 port is disabled; power-cycle with Ethernet unplugged to use RS-485.",
   "USB always talks Modbus, even when the meter is set to BACnet on RS-485.",
   "Too small a data scalar makes large readings wrap past 65535 and read wrong; too large a scalar drops decimal places.",
   "Demand registers show a default value until one full demand window has elapsed after a reset."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/dent-instruments/powerscout-3037",
 "address_note": "address = 0-based Modbus wire (PDU) address; documented = as printed in the source.",
 "note": "Re-typed from the manufacturer's public documentation (see source) and verified against it. Registers vary by firmware and options; verify against the live device before writing."
}
