{
 "manufacturer": "Grundfos",
 "manufacturer_slug": "grundfos",
 "model": "Booster systems (Hydro MPC, Hydro Multi-E, Multi-B) via CIM 200 / CIM 500",
 "model_slug": "booster-systems-cim-200-500",
 "short_model": "Hydro MPC & Multi-E (CIM 200/500)",
 "aliases": [
  "Hydro MPC",
  "Control MPC",
  "CU 352",
  "GENIECON MPC",
  "Hydro Multi-E",
  "Hydro Multi-B",
  "CU 323",
  "DDD",
  "CU 354",
  "TPED",
  "MAGNA3-D",
  "CIM 200",
  "CIM 500",
  "SoftCIM Modbus TCP"
 ],
 "equipment_type": "Pump (booster system / multi-pump controller)",
 "applies_to": "Grundfos booster systems: Hydro MPC / Control MPC (CU 352), GENIECON MPC, Hydro Multi-B (CU 323), DDD (CU 354), Hydro Multi-E, TPED and MAGNA3-D twin pumps, with CIM/CIU 200, CIM/CIU 500 or SoftCIM.",
 "summary": "Grundfos multi-pump booster sets and twin-head pumps share one Modbus functional profile, reached through a CIM 200 (RTU) or CIM 500 (Modbus TCP) module or the SoftCIM port on GENIECON and newer MGE pumps. The map covers system start/stop, control mode and setpoint, per-pump force start/stop, system status and alarm codes, system measurements and a status/data block for each of up to six pumps. Which registers are live depends on the booster type and installed sensors.",
 "transport": [
  "RTU",
  "TCP"
 ],
 "defaults": {
  "unit_id": null,
  "baud": 19200,
  "parity": "Even",
  "data_bits": 8,
  "stop_bits": 1,
  "tcp_port": 502
 },
 "addressing": {
  "convention": "1-based",
  "note": "Registers are printed as 5-digit register numbers; the manual states register X is addressed as X-1 in the telegram (setpoint 00104 is sent as 00103)."
 },
 "default_word_order": "ABCD",
 "firmware": null,
 "source": {
  "title": "Modbus for Grundfos boosters - SoftCIM Modbus RTU, SoftCIM Modbus TCP, CIM/CIU 200 Modbus RTU, CIM/CIU 500 Modbus TCP - Functional profile and user manual",
  "doc_number": "98393459",
  "revision_date": "2025-09",
  "url": "https://api.grundfos.com/literature/Grundfosliterature-6012934.pdf",
  "pages": "pp. 5 (products), 18-38 (register blocks incl. pump 1-6 and pump energy), 44-46 (alarm codes), 52-55 (telegram examples)"
 },
 "notes": [
  "All blocks can be read with function code 03 or 04; listed here as holding registers. Control and configuration registers are written with 06 or 16.",
  "32-bit values are HI/LO register pairs with HI at the lower address; the manual combines them as HI x 65536 + LO (ABCD).",
  "Temperatures are in 0.01 K (kelvin) except HeatDiffTemp (00369), which is published in 0.01 °C.",
  "A raw value of 0xFFFF means 'not available'. Many registers apply only to particular booster types or need a sensor; see the support columns in the manual.",
  "Pump blocks repeat every 10 registers: pump 1 at 00401, pump 2 at 00411 ... pump 6 at 00451. Pump power is in 10 W steps. Pilot and backup pump blocks (00461, 00471) and Pump-x energy for pilot/backup were left out.",
  "Left out: tank-filling limits (00111-00114, 00215-00219), DDD remote-sensor setpoints and fieldbus sensor block (00119-00128, 00146-00156), manual pump speeds (00136-00143), PI tuning registers 00144/00145 and 00231/00232 (offset/scaling not clear enough), FeedbackSensorMin/Max (00221/00222, no scaling given), analog input values/units (00224-00230, 00376-00382, scaling depends on an enum), flow measurements 1-3 and remote/differential pressures not listed above, and the DDD logged sensor data. Alarm simulation registers were also omitted.",
  "AlarmCode 00205 lists booster-system codes; when the alarm comes from an individual pump the pump's own Grundfos code is reported (see the E-pump code list)."
 ],
 "registers": [
  {
   "table": "holding_register",
   "address": 0,
   "documented": "00001",
   "name": "SlaveMinimumReplyDelay",
   "description": "Extra reply delay added by the CIM 200 (0-10000 ms).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "ms",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2,
   "documented": "00003",
   "name": "SoftwareDefinedModbusAddress",
   "description": "Slave address used only in software-defined mode (CIM 200).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3,
   "documented": "00004",
   "name": "SoftwareDefinedBitRate",
   "description": "Baud rate used only in software-defined mode (CIM 200).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "1200",
    "1": "2400",
    "2": "4800",
    "3": "9600",
    "4": "19200",
    "5": "38400"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4,
   "documented": "00005",
   "name": "AutoAckControlBits",
   "description": "1 = CIM lowers triggered control bits automatically.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Disabled",
    "1": "Enabled"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8,
   "documented": "00009",
   "name": "SoftwareDefinedParity",
   "description": "Parity used only in software-defined mode (CIM 200).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "None",
    "1": "Even",
    "2": "Odd"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 9,
   "documented": "00010",
   "name": "SoftwareDefinedStopBit",
   "description": "Stop bits used only in software-defined mode (CIM 200).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "No stop bit",
    "1": "1 stop bit",
    "2": "2 stop bits"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 11,
   "documented": "00012",
   "name": "Watchdog",
   "description": "Comm-loss timeout; 0 disables. On timeout the booster reverts to Local mode.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "s",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23,
   "documented": "00024",
   "name": "ActualModbusAddress",
   "description": "Slave address currently in use.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 29,
   "documented": "00030",
   "name": "UnitFamily",
   "description": "Product family code (e.g. 21 = Hydro/Control MPC).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "17": "Hydro Multi-E",
    "21": "Hydro/Control MPC",
    "38": "Circulator twin pump",
    "39": "Multi pump"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 30,
   "documented": "00031",
   "name": "UnitType",
   "description": "Product type within the family (see manual).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 100,
   "documented": "00101",
   "name": "ControlRegister",
   "description": "Remote/local, start/stop, reset and counter-reset command bits.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": {
    "0": "RemoteAccessReq (1 = remote)",
    "1": "OnOffReq (1 = start, 0 = stop)",
    "2": "ResetAlarm (rising edge)",
    "4": "CopyToLocal (Multi-E/TPED model H+, MAGNA3-D)",
    "5": "ResetAccCounters (volume and energy)"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 101,
   "documented": "00102",
   "name": "ControlMode",
   "description": "Requested control mode; support varies by booster type.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Constant speed",
    "1": "Constant frequency",
    "3": "Constant head",
    "4": "Constant pressure",
    "5": "Constant differential pressure",
    "6": "Proportional pressure",
    "7": "Constant flow",
    "8": "Constant temperature",
    "9": "Constant temp. difference",
    "10": "Constant level",
    "128": "AUTOadapt (automatic adaption for DDD)",
    "129": "FLOWadapt",
    "130": "Closed-loop sensor"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 102,
   "documented": "00103",
   "name": "OperationMode",
   "description": "Requested operating mode; only acts when OnOffReq is On.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Auto-control",
    "4": "OpenLoopMin",
    "6": "OpenLoopMax"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 103,
   "documented": "00104",
   "name": "Setpoint",
   "description": "Closed loop: % of sensor max or setpoint range; open loop: % of performance or nominal frequency.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 104,
   "documented": "00105",
   "name": "ControlPump1",
   "description": "Force pump 1 (Multi-B, MPC, GENIECON, DDD).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Auto-control (by booster system)",
    "1": "Forced start",
    "2": "Forced stop"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 105,
   "documented": "00106",
   "name": "ControlPump2",
   "description": "Force pump 2.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Auto-control (by booster system)",
    "1": "Forced start",
    "2": "Forced stop"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 106,
   "documented": "00107",
   "name": "ControlPump3",
   "description": "Force pump 3.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Auto-control (by booster system)",
    "1": "Forced start",
    "2": "Forced stop"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 107,
   "documented": "00108",
   "name": "ControlPump4",
   "description": "Force pump 4.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Auto-control (by booster system)",
    "1": "Forced start",
    "2": "Forced stop"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 108,
   "documented": "00109",
   "name": "ControlPump5",
   "description": "Force pump 5 (MPC, GENIECON, DDD).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Auto-control (by booster system)",
    "1": "Forced start",
    "2": "Forced stop"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 109,
   "documented": "00110",
   "name": "ControlPump6",
   "description": "Force pump 6 (MPC, GENIECON, DDD).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Auto-control (by booster system)",
    "1": "Forced start",
    "2": "Forced stop"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 114,
   "documented": "00115",
   "name": "SetPropControlReduction",
   "description": "Reduction in proportional-pressure mode.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 115,
   "documented": "00116",
   "name": "SetPropControlFlowMax",
   "description": "Manual max flow in proportional-pressure mode.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "m³/h",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 116,
   "documented": "00117",
   "name": "ControlPilotpump",
   "description": "Force the pilot pump (MPC, GENIECON).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Auto-control (by booster system)",
    "1": "Forced start",
    "2": "Forced stop"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 117,
   "documented": "00118",
   "name": "ControlBackuppump",
   "description": "Force the backup pump (MPC, GENIECON).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Auto-control (by booster system)",
    "1": "Forced start",
    "2": "Forced stop"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 129,
   "documented": "00130",
   "name": "Control.RemoteSensor1",
   "description": "Remote sensor 1 value written to MPC.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 130,
   "documented": "00131",
   "name": "Control.RemoteSensor2",
   "description": "Remote sensor 2 value written to MPC.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 200,
   "documented": "00201",
   "name": "SystemStatus",
   "description": "Booster mode and state flags.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "1": "CopyToLocal enabled",
    "2": "ResetAccCountersAck",
    "3": "ResetAlarmAck",
    "4": "SetpointInfluence active",
    "5": "AtMaxPower",
    "6": "Rotation (any pump running)",
    "8": "AccessMode (1 = remote)",
    "9": "OnOff (1 = on)",
    "10": "Alarm",
    "11": "Warning",
    "13": "AtMaxSpeed",
    "15": "AtMinSpeed"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 201,
   "documented": "00202",
   "name": "ProcessFeedback",
   "description": "Actual feedback, % of sensor max (closed loop) or of performance (open loop).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 202,
   "documented": "00203",
   "name": "ControlMode (actual)",
   "description": "Active control mode.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "Constant speed",
    "1": "Constant frequency",
    "3": "Constant head",
    "4": "Constant pressure",
    "5": "Constant differential pressure",
    "6": "Proportional pressure",
    "7": "Constant flow",
    "8": "Constant temperature",
    "9": "Constant temp. difference",
    "10": "Constant level",
    "128": "AUTOadapt (automatic adaption for DDD)",
    "129": "FLOWadapt",
    "130": "Closed-loop sensor"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 203,
   "documented": "00204",
   "name": "OperationMode (actual)",
   "description": "Active operating mode.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "Auto-control",
    "4": "OpenLoopMin",
    "6": "OpenLoopMax"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 204,
   "documented": "00205",
   "name": "AlarmCode",
   "description": "Active booster system alarm code; pump alarms are passed through from the device.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "3": "External fault signal",
    "10": "Communication fault, pump",
    "25": "Setup conflict",
    "28": "Battery low",
    "68": "Media temperature too high in pipe",
    "80": "Hardware fault, IO 351 pump module / I/O module",
    "83": "Verification error, EEPROM parameter area",
    "87": "Multi sensor value exceeds limit (min/max)",
    "88": "Sensor fault, general measuring sensor",
    "89": "Signal fault, closed-loop feedback sensor",
    "91": "Signal fault, temperature sensor 1",
    "93": "Fall-back sensor signal fault",
    "133": "Controlled I/O conflict",
    "143": "Multi sensor sensor signal fault",
    "157": "Real-time clock error",
    "159": "CIM module connection to product lost",
    "161": "Sensor supply fault, 5 V",
    "162": "Sensor supply fault, 24 V",
    "165": "Signal fault, analog input 1",
    "166": "Signal fault, analog input 2",
    "167": "Signal fault, analog input 3",
    "175": "Signal fault, temperature sensor 2",
    "190": "Limit exceeded, supervised item 1",
    "191": "Limit exceeded, supervised item 2",
    "193": "Sensor limit 4 exceeded / Low level",
    "203": "Alarm on all pumps",
    "204": "Inconsistency between sensors",
    "205": "Level/float switch sequence inconsistency",
    "208": "Operation outside performance range",
    "210": "Overpressure",
    "211": "Underpressure",
    "213": "VFD not ready",
    "214": "Water shortage",
    "215": "Soft pressure buildup time-out",
    "216": "Pilot pump alarm",
    "219": "Pressure relief not adequate",
    "231": "Ethernet: No IP address from DHCP server",
    "232": "Ethernet: Auto-disabled due to misuse",
    "236": "Pump fault",
    "248": "Fault, battery/UPS",
    "249": "User defined event 1 triggered",
    "250": "User defined event 2 triggered",
    "253": "SMS data not received within time",
    "254": "Water pipe system model data inconsistency"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 205,
   "documented": "00206",
   "name": "WarningCode",
   "description": "Active booster system warning code.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "3": "External fault signal",
    "10": "Communication fault, pump",
    "25": "Setup conflict",
    "28": "Battery low",
    "68": "Media temperature too high in pipe",
    "80": "Hardware fault, IO 351 pump module / I/O module",
    "83": "Verification error, EEPROM parameter area",
    "87": "Multi sensor value exceeds limit (min/max)",
    "88": "Sensor fault, general measuring sensor",
    "89": "Signal fault, closed-loop feedback sensor",
    "91": "Signal fault, temperature sensor 1",
    "93": "Fall-back sensor signal fault",
    "133": "Controlled I/O conflict",
    "143": "Multi sensor sensor signal fault",
    "157": "Real-time clock error",
    "159": "CIM module connection to product lost",
    "161": "Sensor supply fault, 5 V",
    "162": "Sensor supply fault, 24 V",
    "165": "Signal fault, analog input 1",
    "166": "Signal fault, analog input 2",
    "167": "Signal fault, analog input 3",
    "175": "Signal fault, temperature sensor 2",
    "190": "Limit exceeded, supervised item 1",
    "191": "Limit exceeded, supervised item 2",
    "193": "Sensor limit 4 exceeded / Low level",
    "203": "Alarm on all pumps",
    "204": "Inconsistency between sensors",
    "205": "Level/float switch sequence inconsistency",
    "208": "Operation outside performance range",
    "210": "Overpressure",
    "211": "Underpressure",
    "213": "VFD not ready",
    "214": "Water shortage",
    "215": "Soft pressure buildup time-out",
    "216": "Pilot pump alarm",
    "219": "Pressure relief not adequate",
    "231": "Ethernet: No IP address from DHCP server",
    "232": "Ethernet: Auto-disabled due to misuse",
    "236": "Pump fault",
    "248": "Fault, battery/UPS",
    "249": "User defined event 1 triggered",
    "250": "User defined event 2 triggered",
    "253": "SMS data not received within time",
    "254": "Water pipe system model data inconsistency"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 207,
   "documented": "00208",
   "name": "PumpsPresent",
   "description": "Which pumps are present.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Pump 1",
    "1": "Pump 2",
    "2": "Pump 3",
    "3": "Pump 4",
    "4": "Pump 5",
    "5": "Pump 6",
    "6": "Pilot pump",
    "7": "Backup pump"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 208,
   "documented": "00209",
   "name": "PumpsRunning",
   "description": "Which pumps are running.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Pump 1",
    "1": "Pump 2",
    "2": "Pump 3",
    "3": "Pump 4",
    "4": "Pump 5",
    "5": "Pump 6",
    "6": "Pilot pump",
    "7": "Backup pump"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 209,
   "documented": "00210",
   "name": "PumpsAlarm",
   "description": "Which pumps have an alarm.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Pump 1",
    "1": "Pump 2",
    "2": "Pump 3",
    "3": "Pump 4",
    "4": "Pump 5",
    "5": "Pump 6",
    "6": "Pilot pump",
    "7": "Backup pump"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 210,
   "documented": "00211",
   "name": "PumpsCommFault",
   "description": "Which pumps have lost communication.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Pump 1",
    "1": "Pump 2",
    "2": "Pump 3",
    "3": "Pump 4",
    "4": "Pump 5",
    "5": "Pump 6",
    "6": "Pilot pump",
    "7": "Backup pump"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 211,
   "documented": "00212",
   "name": "SystemActiveFunctions",
   "description": "Active system functions (MPC/GENIECON all bits; Multi-B bits 7 and 12).",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "1": "Emergency Run active",
    "2": "Standby pumps active",
    "3": "Pump test run active",
    "4": "Alternative setpoint active",
    "5": "Clock program active",
    "6": "Remote VNC active",
    "7": "Remote bus active",
    "8": "Remote service port active",
    "9": "Pressure relief function active",
    "10": "Soft pressure function active",
    "11": "Low-flow boost active",
    "12": "Low-flow stop active",
    "13": "Proportional pressure active"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 212,
   "documented": "00213",
   "name": "PumpsAutoMode",
   "description": "1 = pump in auto-control, 0 = forced start/stop.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Pump 1",
    "1": "Pump 2",
    "2": "Pump 3",
    "3": "Pump 4",
    "4": "Pump 5",
    "5": "Pump 6",
    "6": "Pilot pump",
    "7": "Backup pump"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 213,
   "documented": "00214",
   "name": "ApplicationType",
   "description": "Configured application (MPC, Multi-B).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "Unknown",
    "1": "Pressure boosting",
    "2": "Heating pumps on hot side",
    "3": "Heating pumps on cold side",
    "4": "AirCon pumps on hot side",
    "5": "AirCon pumps on cold side",
    "6": "MPC S2000 heating pumps on hot side",
    "7": "MPC S2000 heating pumps on cold side",
    "8": "MPC S2000 AirCon pumps on hot side",
    "9": "MPC S2000 AirCon pumps on cold side",
    "10": "Tank filling (level sensor)",
    "11": "Tank filling (float switches)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 219,
   "documented": "00220",
   "name": "FeedBackSensorUnit",
   "description": "Unit of the feedback sensor.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "bar",
    "1": "mbar",
    "2": "m",
    "3": "kPa",
    "4": "psi",
    "5": "ft",
    "6": "m³/h",
    "7": "m³/s",
    "8": "l/s",
    "9": "gpm",
    "10": "°C",
    "11": "°F",
    "12": "%",
    "13": "K",
    "14": "l/h",
    "255": "-"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 222,
   "documented": "00223",
   "name": "SystemFeedbackSensor",
   "description": "Feedback sensor type (MPC).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "3": "Flow sensor",
    "6": "Pressure sensor"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 300,
   "documented": "00301",
   "name": "Head",
   "description": "Actual system head/pressure (sensor required).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "scale_factor_ref": null,
   "units": "bar",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 301,
   "documented": "00302",
   "name": "VolumeFlow",
   "description": "Actual system flow (sensor required).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "m³/h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 302,
   "documented": "00303",
   "name": "RelativePerformance",
   "description": "Performance relative to maximum.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 305,
   "documented": "00306",
   "name": "DigitalInput",
   "description": "External digital input states, one bit per input.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 306,
   "documented": "00307",
   "name": "DigitalOutput",
   "description": "External digital output states, one bit per output.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 307,
   "documented": "00308",
   "name": "ActualSetpoint",
   "description": "Setpoint actually used, after limits; same scaling as 00104.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 308,
   "documented": "00309",
   "name": "MotorCurrent",
   "description": "Motor current (Hydro Multi-E model G only).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 311,
   "documented": "00312",
   "name": "Power",
   "description": "Total power consumption of the system (HI/LO pair).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 314,
   "documented": "00315",
   "name": "InletPressure",
   "description": "Inlet pressure relative to atmosphere; raw includes -1.000 bar offset.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "offset": -1,
   "scale_factor_ref": null,
   "units": "bar",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 315,
   "documented": "00316",
   "name": "RemotePressure1",
   "description": "External pressure sensor 1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "scale_factor_ref": null,
   "units": "bar",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 316,
   "documented": "00317",
   "name": "StorageTankLevel",
   "description": "Storage tank level; raw includes -100 m offset.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "offset": -100,
   "scale_factor_ref": null,
   "units": "m",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 319,
   "documented": "00320",
   "name": "RemoteTemp1",
   "description": "External temperature sensor 1 (kelvin).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "K",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 324,
   "documented": "00325",
   "name": "AuxSensorInput",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 326,
   "documented": "00327",
   "name": "OperationTime",
   "description": "Total operating hours (HI/LO pair).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 328,
   "documented": "00329",
   "name": "TotalPoweredTime",
   "description": "Total powered hours (Multi-E model G only).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 331,
   "documented": "00332",
   "name": "Energy",
   "description": "Total energy consumption (HI/LO pair).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 336,
   "documented": "00337",
   "name": "AmbientTemp",
   "description": "Ambient temperature (kelvin).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "K",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 337,
   "documented": "00338",
   "name": "InletTemp",
   "description": "Inlet water temperature (kelvin).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "K",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 338,
   "documented": "00339",
   "name": "OutletTemp",
   "description": "Outlet water temperature (kelvin).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "K",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 339,
   "documented": "00340",
   "name": "TempDifference",
   "description": "Differential temperature.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "K",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 340,
   "documented": "00341",
   "name": "OutletPressure",
   "description": "System outlet pressure.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "scale_factor_ref": null,
   "units": "bar",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 341,
   "documented": "00342",
   "name": "FeedTankLevel",
   "description": "Feed tank level; raw includes -100 m offset.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "offset": -100,
   "scale_factor_ref": null,
   "units": "m",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 342,
   "documented": "00343",
   "name": "UserSetpoint",
   "description": "Setpoint before modifications.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 343,
   "documented": "00344",
   "name": "AnalogueInfluence",
   "description": "Setpoint attenuator.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 344,
   "documented": "00345",
   "name": "NumberOfPowerOns",
   "description": "Number of times the system has been powered on.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 345,
   "documented": "00346",
   "name": "SpecificEnergy",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "Wh/m³",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 346,
   "documented": "00347",
   "name": "SpecificEnergyAverage",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "Wh/m³",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 350,
   "documented": "00351",
   "name": "PropControlReduction",
   "description": "Proportional control reduction.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 351,
   "documented": "00352",
   "name": "PropControlFlowMax",
   "description": "Proportional control maximum flow point.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "m³/h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 352,
   "documented": "00353",
   "name": "RemotePressure2",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "scale_factor_ref": null,
   "units": "bar",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 353,
   "documented": "00354",
   "name": "RemoteTemp2",
   "description": "External temperature sensor 2 (kelvin).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "K",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 354,
   "documented": "00355",
   "name": "MediumTemp",
   "description": "Medium temperature (kelvin).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "K",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 355,
   "documented": "00356",
   "name": "DifferentialPressure",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "scale_factor_ref": null,
   "units": "bar",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 359,
   "documented": "00360",
   "name": "RemoteFlow",
   "description": "Flow from a remote sensor.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "m³/h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 362,
   "documented": "00363",
   "name": "Volume",
   "description": "Pumped volume (HI/LO pair).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "m³",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 364,
   "documented": "00365",
   "name": "HeatingEnergyCounter",
   "description": "Lifetime heat energy (external temperature sensor required).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 366,
   "documented": "00367",
   "name": "HeatPower",
   "description": "Current heat power (external temperature sensor required).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 368,
   "documented": "00369",
   "name": "HeatDiffTemp",
   "description": "Forward/return delta-T (published in 0.01 °C).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 400,
   "documented": "00401",
   "name": "Pump1.Status",
   "description": "Pump 1 mode, on/off and alarm bits.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "AccessMode (1 = remote via booster)",
    "1": "OnOff",
    "2": "Alarm"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 401,
   "documented": "00402",
   "name": "Pump1.AlarmCode",
   "description": "Grundfos alarm code of pump 1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 402,
   "documented": "00403",
   "name": "Pump1.OperationTime",
   "description": "Operating hours of pump 1 (HI/LO pair).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 404,
   "documented": "00405",
   "name": "Pump1.Speed",
   "description": "Pump 1 motor speed.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 405,
   "documented": "00406",
   "name": "Pump1.LineCurrent",
   "description": "Average line current of pump 1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 406,
   "documented": "00407",
   "name": "Pump1.Power",
   "description": "Power consumption of pump 1 (10 W steps).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 10,
   "scale_factor_ref": null,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 407,
   "documented": "00408",
   "name": "Pump1.MotorTemperature",
   "description": "Motor temperature of pump 1 (kelvin).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "K",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 410,
   "documented": "00411",
   "name": "Pump2.Status",
   "description": "Pump 2 mode, on/off and alarm bits.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "AccessMode (1 = remote via booster)",
    "1": "OnOff",
    "2": "Alarm"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 411,
   "documented": "00412",
   "name": "Pump2.AlarmCode",
   "description": "Grundfos alarm code of pump 2.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 412,
   "documented": "00413",
   "name": "Pump2.OperationTime",
   "description": "Operating hours of pump 2 (HI/LO pair).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 414,
   "documented": "00415",
   "name": "Pump2.Speed",
   "description": "Pump 2 motor speed.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 415,
   "documented": "00416",
   "name": "Pump2.LineCurrent",
   "description": "Average line current of pump 2.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 416,
   "documented": "00417",
   "name": "Pump2.Power",
   "description": "Power consumption of pump 2 (10 W steps).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 10,
   "scale_factor_ref": null,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 417,
   "documented": "00418",
   "name": "Pump2.MotorTemperature",
   "description": "Motor temperature of pump 2 (kelvin).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "K",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 420,
   "documented": "00421",
   "name": "Pump3.Status",
   "description": "Pump 3 mode, on/off and alarm bits.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "AccessMode (1 = remote via booster)",
    "1": "OnOff",
    "2": "Alarm"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 421,
   "documented": "00422",
   "name": "Pump3.AlarmCode",
   "description": "Grundfos alarm code of pump 3.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 422,
   "documented": "00423",
   "name": "Pump3.OperationTime",
   "description": "Operating hours of pump 3 (HI/LO pair).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 424,
   "documented": "00425",
   "name": "Pump3.Speed",
   "description": "Pump 3 motor speed.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 425,
   "documented": "00426",
   "name": "Pump3.LineCurrent",
   "description": "Average line current of pump 3.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 426,
   "documented": "00427",
   "name": "Pump3.Power",
   "description": "Power consumption of pump 3 (10 W steps).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 10,
   "scale_factor_ref": null,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 427,
   "documented": "00428",
   "name": "Pump3.MotorTemperature",
   "description": "Motor temperature of pump 3 (kelvin).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "K",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 430,
   "documented": "00431",
   "name": "Pump4.Status",
   "description": "Pump 4 mode, on/off and alarm bits.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "AccessMode (1 = remote via booster)",
    "1": "OnOff",
    "2": "Alarm"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 431,
   "documented": "00432",
   "name": "Pump4.AlarmCode",
   "description": "Grundfos alarm code of pump 4.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 432,
   "documented": "00433",
   "name": "Pump4.OperationTime",
   "description": "Operating hours of pump 4 (HI/LO pair).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 434,
   "documented": "00435",
   "name": "Pump4.Speed",
   "description": "Pump 4 motor speed.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 435,
   "documented": "00436",
   "name": "Pump4.LineCurrent",
   "description": "Average line current of pump 4.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 436,
   "documented": "00437",
   "name": "Pump4.Power",
   "description": "Power consumption of pump 4 (10 W steps).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 10,
   "scale_factor_ref": null,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 437,
   "documented": "00438",
   "name": "Pump4.MotorTemperature",
   "description": "Motor temperature of pump 4 (kelvin).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "K",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 440,
   "documented": "00441",
   "name": "Pump5.Status",
   "description": "Pump 5 mode, on/off and alarm bits.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "AccessMode (1 = remote via booster)",
    "1": "OnOff",
    "2": "Alarm"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 441,
   "documented": "00442",
   "name": "Pump5.AlarmCode",
   "description": "Grundfos alarm code of pump 5.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 442,
   "documented": "00443",
   "name": "Pump5.OperationTime",
   "description": "Operating hours of pump 5 (HI/LO pair).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 444,
   "documented": "00445",
   "name": "Pump5.Speed",
   "description": "Pump 5 motor speed.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 445,
   "documented": "00446",
   "name": "Pump5.LineCurrent",
   "description": "Average line current of pump 5.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 446,
   "documented": "00447",
   "name": "Pump5.Power",
   "description": "Power consumption of pump 5 (10 W steps).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 10,
   "scale_factor_ref": null,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 447,
   "documented": "00448",
   "name": "Pump5.MotorTemperature",
   "description": "Motor temperature of pump 5 (kelvin).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "K",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 450,
   "documented": "00451",
   "name": "Pump6.Status",
   "description": "Pump 6 mode, on/off and alarm bits.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "AccessMode (1 = remote via booster)",
    "1": "OnOff",
    "2": "Alarm"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 451,
   "documented": "00452",
   "name": "Pump6.AlarmCode",
   "description": "Grundfos alarm code of pump 6.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 452,
   "documented": "00453",
   "name": "Pump6.OperationTime",
   "description": "Operating hours of pump 6 (HI/LO pair).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "h",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 454,
   "documented": "00455",
   "name": "Pump6.Speed",
   "description": "Pump 6 motor speed.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 455,
   "documented": "00456",
   "name": "Pump6.LineCurrent",
   "description": "Average line current of pump 6.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 456,
   "documented": "00457",
   "name": "Pump6.Power",
   "description": "Power consumption of pump 6 (10 W steps).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 10,
   "scale_factor_ref": null,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 457,
   "documented": "00458",
   "name": "Pump6.MotorTemperature",
   "description": "Motor temperature of pump 6 (kelvin).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "K",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 480,
   "documented": "00481",
   "name": "Pump1.Energy",
   "description": "Energy consumption of pump 1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 481,
   "documented": "00482",
   "name": "Pump2.Energy",
   "description": "Energy consumption of pump 2.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 482,
   "documented": "00483",
   "name": "Pump3.Energy",
   "description": "Energy consumption of pump 3.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 483,
   "documented": "00484",
   "name": "Pump4.Energy",
   "description": "Energy consumption of pump 4.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 484,
   "documented": "00485",
   "name": "Pump5.Energy",
   "description": "Energy consumption of pump 5.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 485,
   "documented": "00486",
   "name": "Pump6.Energy",
   "description": "Energy consumption of pump 6.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  }
 ],
 "integration": {
  "summary": "Address the CIM (rotary switches on the CIM 200, IP on the CIM 500), enable bus control in the controller if it is an MPC/GENIECON/DDD, then write 00101 = 3 to take remote control and start, and 00104 for the setpoint in 0.01 %. Poll 00201 for on/alarm/warning, 00205 for the alarm code, 00301/00302 for pressure and flow and 00209/00210 for per-pump running and alarm bits.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 100,
    "why": "Remote/start/stop/reset command word"
   },
   {
    "table": "holding_register",
    "address": 103,
    "why": "Setpoint, 0.01 %"
   },
   {
    "table": "holding_register",
    "address": 200,
    "why": "System status bits"
   },
   {
    "table": "holding_register",
    "address": 204,
    "why": "System alarm code"
   },
   {
    "table": "holding_register",
    "address": 208,
    "why": "Pumps running"
   },
   {
    "table": "holding_register",
    "address": 209,
    "why": "Pumps in alarm"
   },
   {
    "table": "holding_register",
    "address": 300,
    "why": "System head/pressure"
   },
   {
    "table": "holding_register",
    "address": 301,
    "why": "System flow"
   },
   {
    "table": "holding_register",
    "address": 311,
    "why": "System power (32-bit)"
   }
  ],
  "enable": "Set 00101 bit 0 (RemoteAccessReq) = 1 and bit 1 (OnOffReq) to start/stop. For Hydro MPC, GENIECON and DDD you must also set the controller's control source to 'From bus' (Settings > Secondary functions > Control source). With a CIM in more than one pump of a Multi-E/TPED, control registers must be written to every pump head.",
  "watchdog": "Register 00012 sets a comm-loss timeout of 5-3600 s (0 = disabled, default). On timeout the booster returns to Local mode.",
  "quirks": [
   "Register numbers are 1-based: 00104 is wire address 103.",
   "Temperatures are in 0.01 K; HeatDiffTemp is in 0.01 °C.",
   "Pump block power is scaled 10 W per count, unlike the system power register (1 W, 32-bit).",
   "ResetAlarm acts on a rising edge; if AutoAckControlBits (00005) = 0, clear the bit before the next reset."
  ],
  "setup": [
   "CIM 200: address on hex rotary switches SW6/SW7; baud on SW4/SW5 (default 19200); parity on SW3 (default even, 1 stop bit); termination via SW1/SW2.",
   "CIM 500: set the protocol rotary switch to Modbus TCP and configure the Modbus TCP IP address in the module web server.",
   "Hydro MPC / GENIECON / DDD: select 'From bus' as control source in the controller HMI before expecting Modbus commands to act."
  ],
  "gotchas": [
   "Many measurements return 0xFFFF on a given booster type because the sensor or function is not present.",
   "Hydro Multi-E model G can only run in auto-control and OpenLoopMax; several pump-block values are unavailable on model G."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/grundfos/booster-systems-cim-200-500",
 "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."
}
