{
 "manufacturer": "Grundfos",
 "manufacturer_slug": "grundfos",
 "model": "E-pumps (MAGNA3, TPE, CRE, CUE) via CIM 200 / CIM 500",
 "model_slug": "e-pumps-cim-200-500",
 "short_model": "MAGNA3, TPE & CRE (CIM 200/500)",
 "aliases": [
  "MAGNA3",
  "TPE",
  "TPE Series 2000",
  "CRE",
  "CRNE",
  "CRIE",
  "MTRE",
  "CHIE",
  "CME",
  "NBE",
  "NKE",
  "CUE",
  "MGE",
  "CIM 200",
  "CIU 200",
  "CIM 500",
  "CIU 500",
  "SoftCIM Modbus RTU"
 ],
 "equipment_type": "Pump (circulator / E-pump / pump drive)",
 "applies_to": "Grundfos E-pumps (CRE/CRNE/CRIE, MTRE, CHIE, CME, TPE, TPE Series 2000, NBE/NKE), CUE drives and MAGNA3 with a CIM/CIU 200, CIM/CIU 500 or built-in SoftCIM.",
 "summary": "Grundfos exposes its electronically controlled pumps over Modbus through a plug-in CIM 200 (RTU) or CIM 500 (Modbus TCP) module, a CIU box, or the SoftCIM port on newer MGE motors. All pump types share one functional profile: a control block (remote/start/stop, control mode, setpoint), a status block and a measurement block. This map covers the module configuration and watchdog, control and status words, alarm/warning codes and the live measurements; many measurements exist only on certain motor generations or with an extra sensor.",
 "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 (00104 = Setpoint). The manual's telegram examples address register X as X-1 on the wire, e.g. Setpoint 00104 is written at address 0x0067 (103)."
 },
 "default_word_order": "ABCD",
 "firmware": null,
 "source": {
  "title": "Modbus for Grundfos pumps - SoftCIM Modbus RTU, CIM/CIU 200 Modbus RTU, CIM/CIU 500 Ethernet for Modbus TCP - Functional profile and user manual",
  "doc_number": "98367081",
  "revision_date": "2025-05",
  "url": "https://api.grundfos.com/literature/Grundfosliterature-6012947.pdf",
  "pages": "pp. 9-10 (RTU setup), 15-26 (register blocks), 27-29 (control modes, alarm codes), 31-36 (telegram examples), 46 (Modbus TCP)"
 },
 "notes": [
  "All blocks can be read with function code 03 or 04; this map lists them as holding registers. Configuration and control registers are written with 06 or 16.",
  "32-bit values are split into HI and LO registers with HI at the lower address; the manual gives value = HI x 65536 + LO, so word order is ABCD.",
  "Temperatures are published in 0.01 K (kelvin); subtract 273.15 to get degrees C.",
  "InletPressure (00315) carries a -1.000 bar offset; FeedTankLevel (00317) and StorageTankLevel (00350) carry a -100 m offset. These are applied via offset.",
  "A raw value of 0xFFFF in the measurement block means 'not available' (sensor missing or pump type does not support it). Many measurements need MGE model G/H/K, CUE or an external sensor; see the availability table on pp. 23-24.",
  "Left out: FeedbackSensorMin/Max (00210/00211) because the manual gives no scaling; Conductivity, pH and Turbidity (00363-00365) because the published units look inconsistent; user registers 00751-00800 (free storage). Also left out: SetMaxFlowLimit (00106), because the manual says it is written in 0.01 m³/h while its read-back register MaxFlowLimit (00345) is listed in 0.1 m³/h; the write scale is not certain.",
  "SoftCIM Modbus RTU and CIM 200 support the same registers unless noted. In the configuration block, 00001, 00003, 00004, 00009 and 00010 apply to the CIM 200 only (not CIM 500), and 00001 is not supported by SoftCIM; 00005 and 00012 apply to both CIM 200 and CIM 500.",
  "Alarm and warning code lists are shared; not every code applies to every pump type."
 ],
 "registers": [
  {
   "table": "holding_register",
   "address": 0,
   "documented": "00001",
   "name": "SlaveMinimumReplyDelay",
   "description": "Extra reply delay added by the CIM 200 (0-10000 ms). Not on CIM 500 or SoftCIM.",
   "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 when SW4/SW5 select software-defined settings (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 (e.g. ResetAlarm) 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 pump 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": 20,
   "documented": "00021",
   "name": "GENIbusCRCErrorCnt",
   "description": "CRC errors on the internal GENIbus link to the pump.",
   "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": 21,
   "documented": "00022",
   "name": "GENIbusDataErrorCnt",
   "description": "Data errors on the internal GENIbus link to the pump.",
   "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": 22,
   "documented": "00023",
   "name": "VersionNumber",
   "description": "Grundfos version number, BCD coded.",
   "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": 23,
   "documented": "00024",
   "name": "ActualModbusAddress",
   "description": "Slave address currently in use (1-247).",
   "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": 24,
   "documented": "00025",
   "name": "GENIbusTXcount",
   "description": "Telegrams sent to the pump on GENIbus (HI/LO pair).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 26,
   "documented": "00027",
   "name": "GENIbusRXcount",
   "description": "Telegrams received from the pump on GENIbus (HI/LO pair).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "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.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "1": "Circulator pumps",
    "2": "E-pump",
    "7": "Motor Protector",
    "17": "Hydro Multi-E",
    "21": "Hydro/Control MPC",
    "26": "Dedicated Controls",
    "28": "CIU xx2 SEG AutoAdapt",
    "30": "Smart Digital Dosing, DDA",
    "38": "Circulator twin pump",
    "39": "Multi pump",
    "46": "LC Controller, water supply",
    "48": "LC Controller, waste water",
    "65": "SQ Controller"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 30,
   "documented": "00031",
   "name": "UnitType",
   "description": "Product type within the family; see manual table (e.g. family 1 type 10 = MAGNA3).",
   "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": 31,
   "documented": "00032",
   "name": "UnitVersion",
   "description": "Product version.",
   "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": 33,
   "documented": "00034",
   "name": "ProductSoftwareVersion",
   "description": "Product software version, BCD digits aa.bb.cc.dd (HI/LO pair).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 35,
   "documented": "00036",
   "name": "ProductSoftwareDayMonth",
   "description": "Product software date, BCD ddmm.",
   "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": 36,
   "documented": "00037",
   "name": "ProductSoftwareYear",
   "description": "Product software date, BCD yyyy.",
   "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, alarm reset and related 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, Modbus master controls)",
    "1": "OnOffReq (1 = start, 0 = stop)",
    "2": "ResetAlarm (rising edge)",
    "4": "CopyToLocal (MAGNA3, CUE, MGE model H+)",
    "5": "EnableMaxFlowLimit (MAGNA3, MGE model H+)"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 101,
   "documented": "00102",
   "name": "ControlMode",
   "description": "Requested control mode; not every mode is supported by every pump.",
   "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 differential temperature",
    "10": "Constant level",
    "128": "AUTOadapt",
    "129": "FLOWadapt",
    "130": "Closed-loop sensor",
    "131": "AUTOadapt (CP)"
   },
   "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 (setpoint)",
    "4": "OpenLoopMin",
    "6": "OpenLoopMax"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 103,
   "documented": "00104",
   "name": "Setpoint",
   "description": "Closed loop: % of setpoint range. Open loop: % of 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": "RelayControl",
   "description": "Relay outputs when configured for bus control (0 = closed, 1 = open).",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": {
    "0": "Relay1Control (E-pumps and CUE)",
    "1": "Relay2Control (CUE, large MGE, MGE model H+)",
    "2": "Relay3Control (MGE model H+)",
    "3": "Relay4Control (MGE model H+)"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 106,
   "documented": "00107",
   "name": "SetPumpUnixRtc",
   "description": "Sets pump clock, seconds since 1970-01-01 (MAGNA3 / MGE model H+).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "s",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 108,
   "documented": "00109",
   "name": "SensorFeedback",
   "description": "Closed-loop sensor feedback written via Modbus.",
   "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": 109,
   "documented": "00110",
   "name": "SetKp",
   "description": "Controller proportional gain (MAGNA3 / MGE model H+).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 110,
   "documented": "00111",
   "name": "SetTi",
   "description": "Controller integral time (MAGNA3 / MGE model H+).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "s",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 111,
   "documented": "00112",
   "name": "SetDirectCtr",
   "description": "Direct or inverse control (MAGNA3 / MGE model H+).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Inverse control",
    "1": "Direct control"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 200,
   "documented": "00201",
   "name": "PumpStatus",
   "description": "Pump mode and state flags.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "LowFlowStop active (MGE model H+)",
    "1": "CopyToLocal enabled",
    "2": "MaxFlowLimit enabled",
    "3": "ResetAlarmAck",
    "4": "Setpoint influence active",
    "5": "AtMaxPower",
    "6": "Rotation (running)",
    "7": "Direction (1 = counterclockwise)",
    "8": "AccessMode (1 = remote)",
    "9": "OnOff (1 = on/started)",
    "10": "Alarm",
    "11": "Warning",
    "12": "ForcedToLocal",
    "13": "AtMaxSpeed",
    "15": "AtMinSpeed"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 201,
   "documented": "00202",
   "name": "ProcessFeedback",
   "description": "Closed loop: % of sensor range. Open loop: % of pump performance.",
   "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 differential temperature",
    "10": "Constant level",
    "128": "AUTOadapt",
    "129": "FLOWadapt",
    "130": "Closed-loop sensor",
    "131": "AUTOadapt (CP)"
   },
   "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",
    "7": "UserCurve",
    "8": "StopButton",
    "9": "HandMode"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 204,
   "documented": "00205",
   "name": "AlarmCode",
   "description": "Active Grundfos alarm code; 0 = none.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "1": "Leakage current",
    "2": "Missing phase",
    "3": "External fault signal",
    "4": "Too many restarts",
    "7": "Too many hardware shutdowns",
    "14": "Electronic DC-link protection activated (ERP)",
    "16": "Other",
    "29": "Turbine operation, impellers forced backwards",
    "30": "Change bearings",
    "31": "Change varistor(s)",
    "32": "Overvoltage",
    "40": "Undervoltage",
    "41": "Undervoltage transient",
    "42": "Cut-in fault (dV/dt)",
    "45": "Voltage asymmetry",
    "48": "Overload",
    "49": "Overcurrent (i_line, i_dc, i_mo)",
    "50": "Motor protection function, general shutdown (MPF)",
    "51": "Blocked motor or pump",
    "54": "Motor protection function, 3-second limit",
    "55": "Motor current protection activated (MCP)",
    "56": "Underload",
    "57": "Dry-running",
    "60": "Low input power",
    "62": "Safe Torque Off activated",
    "64": "Overtemperature",
    "65": "Motor temperature 1 (t_m or t_mo or t_mo1)",
    "66": "Control electronics temperature high",
    "67": "Temperature too high, internal frequency converter module (t_m)",
    "68": "Water temperature high",
    "70": "Thermal relay 2 in motor, for example thermistor",
    "72": "Hardware fault, type 1",
    "73": "Hardware shutdown (HSD)",
    "76": "Internal communication fault",
    "77": "Communication fault, twin-head pump",
    "80": "Hardware fault, type 2",
    "83": "Verification error, FE parameter area (EEPROM)",
    "84": "Memory access error",
    "85": "Verification error, BE parameter area (EEPROM)",
    "88": "Sensor fault",
    "89": "Signal fault, (feedback) sensor 1",
    "91": "Signal fault, temperature 1 sensor",
    "93": "Signal fault, sensor 2",
    "96": "Setpoint signal outside range",
    "105": "Electronic rectifier protection activated (ERP)",
    "106": "Electronic inverter protection activated (EIP)",
    "135": "Signal fault, GDS sensor",
    "148": "Motor bearing temperature high (Pt100) in drive end (DE)",
    "149": "Motor bearing temperature high (Pt100) in non-drive end (NDE)",
    "155": "Inrush fault",
    "156": "Communication fault, internal frequency converter module",
    "157": "Real time clock error",
    "159": "The CIM module has lost connection to the product",
    "161": "Sensor supply fault, 5 V",
    "162": "Sensor supply fault, 24 V",
    "163": "Measurement fault, motor protection",
    "164": "Signal fault, LiqTec sensor",
    "165": "Signal fault, analog input 1",
    "166": "Signal fault, analog input 2",
    "167": "Signal fault, analog input 3",
    "175": "Signal fault, temperature sensor 2",
    "176": "Signal fault, temperature sensor 3",
    "190": "Limit exceeded, sensor 1",
    "191": "Limit exceeded, sensor 2",
    "209": "Non-return valve fault",
    "215": "Soft pressure buildup timeout",
    "240": "Lubricate bearings",
    "241": "Motor phase failure",
    "242": "Automatic motor model recognition failed"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 205,
   "documented": "00206",
   "name": "WarningCode",
   "description": "Active Grundfos warning code; same code list as alarms.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "1": "Leakage current",
    "2": "Missing phase",
    "3": "External fault signal",
    "4": "Too many restarts",
    "7": "Too many hardware shutdowns",
    "14": "Electronic DC-link protection activated (ERP)",
    "16": "Other",
    "29": "Turbine operation, impellers forced backwards",
    "30": "Change bearings",
    "31": "Change varistor(s)",
    "32": "Overvoltage",
    "40": "Undervoltage",
    "41": "Undervoltage transient",
    "42": "Cut-in fault (dV/dt)",
    "45": "Voltage asymmetry",
    "48": "Overload",
    "49": "Overcurrent (i_line, i_dc, i_mo)",
    "50": "Motor protection function, general shutdown (MPF)",
    "51": "Blocked motor or pump",
    "54": "Motor protection function, 3-second limit",
    "55": "Motor current protection activated (MCP)",
    "56": "Underload",
    "57": "Dry-running",
    "60": "Low input power",
    "62": "Safe Torque Off activated",
    "64": "Overtemperature",
    "65": "Motor temperature 1 (t_m or t_mo or t_mo1)",
    "66": "Control electronics temperature high",
    "67": "Temperature too high, internal frequency converter module (t_m)",
    "68": "Water temperature high",
    "70": "Thermal relay 2 in motor, for example thermistor",
    "72": "Hardware fault, type 1",
    "73": "Hardware shutdown (HSD)",
    "76": "Internal communication fault",
    "77": "Communication fault, twin-head pump",
    "80": "Hardware fault, type 2",
    "83": "Verification error, FE parameter area (EEPROM)",
    "84": "Memory access error",
    "85": "Verification error, BE parameter area (EEPROM)",
    "88": "Sensor fault",
    "89": "Signal fault, (feedback) sensor 1",
    "91": "Signal fault, temperature 1 sensor",
    "93": "Signal fault, sensor 2",
    "96": "Setpoint signal outside range",
    "105": "Electronic rectifier protection activated (ERP)",
    "106": "Electronic inverter protection activated (EIP)",
    "135": "Signal fault, GDS sensor",
    "148": "Motor bearing temperature high (Pt100) in drive end (DE)",
    "149": "Motor bearing temperature high (Pt100) in non-drive end (NDE)",
    "155": "Inrush fault",
    "156": "Communication fault, internal frequency converter module",
    "157": "Real time clock error",
    "159": "The CIM module has lost connection to the product",
    "161": "Sensor supply fault, 5 V",
    "162": "Sensor supply fault, 24 V",
    "163": "Measurement fault, motor protection",
    "164": "Signal fault, LiqTec sensor",
    "165": "Signal fault, analog input 1",
    "166": "Signal fault, analog input 2",
    "167": "Signal fault, analog input 3",
    "175": "Signal fault, temperature sensor 2",
    "176": "Signal fault, temperature sensor 3",
    "190": "Limit exceeded, sensor 1",
    "191": "Limit exceeded, sensor 2",
    "209": "Non-return valve fault",
    "215": "Soft pressure buildup timeout",
    "240": "Lubricate bearings",
    "241": "Motor phase failure",
    "242": "Automatic motor model recognition failed"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 206,
   "documented": "00207",
   "name": "BearingService",
   "description": "Bits 0-7: months to next bearing service (0xFF = n/a). Bit 8: service type.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "8": "BearingServiceType (0 = lubricate, 1 = change bearings)"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 207,
   "documented": "00208",
   "name": "DriveState",
   "description": "Drive state (MGE motors and CUE only).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "Stopped",
    "1": "Accelerating",
    "2": "Decelerating",
    "3": "Steady state/closed loop",
    "5": "Accelerating halt",
    "6": "Decelerating halt",
    "7": "Start on the run (flying cut-in)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 208,
   "documented": "00209",
   "name": "FeedbackSensorUnit",
   "description": "Engineering 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": "W"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 211,
   "documented": "00212",
   "name": "NomFrequency",
   "description": "Nominal pump frequency (MAGNA3 / MGE model H+).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 212,
   "documented": "00213",
   "name": "MinFrequency",
   "description": "Minimum frequency, % of nominal (MAGNA3 / MGE model H+).",
   "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": 213,
   "documented": "00214",
   "name": "MaxFrequency",
   "description": "Maximum frequency, % of nominal (MAGNA3 / MGE model H+).",
   "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": 214,
   "documented": "00215",
   "name": "SetpointRangeMin",
   "description": "Setpoint range minimum, % of sensor maximum (MAGNA3 / MGE model H+).",
   "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": 215,
   "documented": "00216",
   "name": "SetpointRangeMax",
   "description": "Setpoint range maximum, % of sensor maximum (MAGNA3 / MGE model H+).",
   "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": 220,
   "documented": "00221",
   "name": "FlowEstimationState",
   "description": "Whether the flow estimate is within range.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "Within range",
    "1": "Below range",
    "2": "Above range"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 221,
   "documented": "00222",
   "name": "Kp",
   "description": "Actual proportional gain (MAGNA3 / MGE model H+).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 222,
   "documented": "00223",
   "name": "Ti",
   "description": "Actual integral time (MAGNA3 / MGE model H+).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "s",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 223,
   "documented": "00224",
   "name": "DirectControl",
   "description": "Actual direct/inverse selection.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "Inverse control",
    "1": "Direct control"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 224,
   "documented": "00225",
   "name": "ControlSource",
   "description": "Source currently controlling the pump.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "1": "Display",
    "2": "Bus",
    "3": "GO app",
    "4": "Digital input",
    "5": "OFF button"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 300,
   "documented": "00301",
   "name": "Head",
   "description": "Actual system head/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": 301,
   "documented": "00302",
   "name": "VolumeFlow",
   "description": "Actual system flow (estimated on MAGNA3 and TPE Series 2000).",
   "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": 303,
   "documented": "00304",
   "name": "Speed",
   "description": "Motor speed.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "rpm",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 304,
   "documented": "00305",
   "name": "Frequency",
   "description": "Control signal applied to the motor.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 305,
   "documented": "00306",
   "name": "DigitalInput",
   "description": "External digital input states.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "DI1",
    "1": "DI2",
    "2": "DI3",
    "3": "DI4"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 306,
   "documented": "00307",
   "name": "DigitalOutput",
   "description": "External digital output states.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "DO1",
    "1": "DO2",
    "2": "DO3",
    "3": "DO4"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 307,
   "documented": "00308",
   "name": "ActualSetpoint",
   "description": "Open loop: % of nominal frequency. Closed loop: % of sensor 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": 308,
   "documented": "00309",
   "name": "MotorCurrent",
   "description": "",
   "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": 309,
   "documented": "00310",
   "name": "DCLinkVoltage",
   "description": "Frequency converter DC-link voltage.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 310,
   "documented": "00311",
   "name": "MotorVoltage",
   "description": "Motor voltage. 0.25-7.5 kW pumps: MGE model G only; not on MAGNA3.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 311,
   "documented": "00312",
   "name": "Power",
   "description": "Total power consumption (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": 313,
   "documented": "00314",
   "name": "RemoteFlow",
   "description": "Flow from an external 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": 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": "Pressure at external 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": "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": 317,
   "documented": "00318",
   "name": "PowerElectronicTemp",
   "description": "Frequency converter 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": 318,
   "documented": "00319",
   "name": "MotorTemp",
   "description": "Motor winding temperature (kelvin). CUE with sensor.",
   "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": 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": 320,
   "documented": "00321",
   "name": "ElectronicTemp",
   "description": "Pump electronics 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": 321,
   "documented": "00322",
   "name": "PumpLiquidTemp",
   "description": "Pumped-liquid 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": 322,
   "documented": "00323",
   "name": "BearingTempDE",
   "description": "Drive-end bearing 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": 323,
   "documented": "00324",
   "name": "BearingTempNDE",
   "description": "Non-drive-end bearing 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": 324,
   "documented": "00325",
   "name": "AuxSensorInput",
   "description": "Auxiliary sensor input.",
   "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": 325,
   "documented": "00326",
   "name": "SpecificEnergyConsumption",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "Wh/m³",
   "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-on 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": 330,
   "documented": "00331",
   "name": "Torque",
   "description": "Motor torque (11-22 kW and CUE).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "scale_factor_ref": null,
   "units": "Nm",
   "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": 333,
   "documented": "00334",
   "name": "NumberOfStarts",
   "description": "Number of pump starts (HI/LO pair).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 336,
   "documented": "00337",
   "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": 337,
   "documented": "00338",
   "name": "UserSetpoint",
   "description": "User-selected setpoint (open loop % of nominal frequency, closed loop % of range).",
   "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": 338,
   "documented": "00339",
   "name": "DiffPressure",
   "description": "Pressure across the pump flanges.",
   "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": 339,
   "documented": "00340",
   "name": "OutletPressure",
   "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": 340,
   "documented": "00341",
   "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": 341,
   "documented": "00342",
   "name": "LoadPercent",
   "description": "Motor current as % of rated current.",
   "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": 342,
   "documented": "00343",
   "name": "PumpUnixRtc",
   "description": "Pump clock, seconds since 1970-01-01 (HI/LO pair).",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "scale_factor_ref": null,
   "units": "s",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 344,
   "documented": "00345",
   "name": "MaxFlowLimit",
   "description": "Actual maximum flow limit.",
   "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": 345,
   "documented": "00346",
   "name": "RemoteDiffTemp",
   "description": "Remote 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": 346,
   "documented": "00347",
   "name": "InletDiffPressure",
   "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": 347,
   "documented": "00348",
   "name": "OutletDiffPressure",
   "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": 348,
   "documented": "00349",
   "name": "RemoteDiffPressure",
   "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": 349,
   "documented": "00350",
   "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": 350,
   "documented": "00351",
   "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": 351,
   "documented": "00352",
   "name": "HeatEnergyCounter1",
   "description": "Heat energy, direction 1 (needs flow and delta-T).",
   "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": 353,
   "documented": "00354",
   "name": "HeatPower",
   "description": "Actual heat power (needs flow and delta-T).",
   "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": 355,
   "documented": "00356",
   "name": "HeatDiffTemp",
   "description": "Forward/return delta-T used for heat calculation.",
   "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": 356,
   "documented": "00357",
   "name": "Volume1",
   "description": "Total pumped volume, direction 1.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "m³",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 358,
   "documented": "00359",
   "name": "HeatEnergyCounter2",
   "description": "Heat energy, direction 2.",
   "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": 360,
   "documented": "00361",
   "name": "Volume2",
   "description": "Total pumped volume, direction 2.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "scale_factor_ref": null,
   "units": "m³",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 700,
   "documented": "00701",
   "name": "Simulation.AlarmCode",
   "description": "Alarm code to simulate (not CUE).",
   "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": 701,
   "documented": "00702",
   "name": "Simulation.WarningCode",
   "description": "Warning code to simulate (not CUE).",
   "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": 707,
   "documented": "00708",
   "name": "Simulation.Activate",
   "description": "Starts/stops alarm simulation.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Deactivate",
    "1": "Activate"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 708,
   "documented": "00709",
   "name": "Simulation.Active",
   "description": "Alarm simulation status.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "Not active",
    "1": "Active"
   },
   "bits": null,
   "offset": 0
  }
 ],
 "integration": {
  "summary": "Set the CIM 200 address on the two hex rotary switches (or the CIM 500 to Modbus TCP), then write control register 00101 = 3 (remote + start) and the setpoint to 00104 in 0.01 % steps. Poll 00201 for on/alarm/warning bits, 00205/00206 for codes and 00301 onwards for head, flow, speed and power.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 100,
    "why": "Remote/start/stop/reset command word"
   },
   {
    "table": "holding_register",
    "address": 101,
    "why": "Control mode"
   },
   {
    "table": "holding_register",
    "address": 103,
    "why": "Setpoint, 0.01 %"
   },
   {
    "table": "holding_register",
    "address": 200,
    "why": "Status bits (on, running, alarm, warning, remote)"
   },
   {
    "table": "holding_register",
    "address": 204,
    "why": "Alarm code"
   },
   {
    "table": "holding_register",
    "address": 300,
    "why": "Head"
   },
   {
    "table": "holding_register",
    "address": 301,
    "why": "Flow"
   },
   {
    "table": "holding_register",
    "address": 303,
    "why": "Speed"
   },
   {
    "table": "holding_register",
    "address": 311,
    "why": "Power (32-bit)"
   },
   {
    "table": "holding_register",
    "address": 11,
    "why": "Comm watchdog timeout"
   }
  ],
  "enable": "Bus control requires bit 0 (RemoteAccessReq) of 00101 = 1; then bit 1 starts (1) or stops (0) the pump. OperationMode 00103 only takes effect while the pump is commanded on (OnOffReq = 1).",
  "watchdog": "Register 00012 sets a comm-loss timeout of 5-3600 s (0 = disabled, the default). Any valid telegram feeds it; on timeout the pump returns to Local mode.",
  "quirks": [
   "Register numbers are 1-based: 00104 is wire address 103.",
   "Temperatures are in 0.01 K, not degrees C.",
   "ResetAlarm (00101 bit 2) acts on a rising edge; with AutoAckControlBits (00005) = 0 you must clear the bit yourself before the next reset.",
   "The setpoint is a percentage of the configured sensor range (closed loop) or of nominal frequency (open loop), not an engineering value.",
   "The manual's 'stop' telegram example shows value 0x03 in the frame but 0x0001 in the text; 0x0001 (remote, off) is the stop command per the bit definitions."
  ],
  "setup": [
   "CIM 200: set the slave address (1-247) on hex rotary switches SW6 (high nibble) and SW7 (low nibble).",
   "CIM 200 baud via SW4/SW5: OFF/ON = 9600, OFF/OFF = 19200 (default), ON/OFF = 38400, ON/ON = software-defined (registers 00003/00004/00009/00010).",
   "CIM 200 parity via SW3: OFF = even parity, 1 stop bit (default); ON = no parity, 2 stop bits.",
   "CIM 200 line termination (120 ohm) via SW1 and SW2, both ON = terminated; default is not terminated. Switch changes take effect immediately.",
   "CIM 500: set the protocol rotary switch to the Modbus TCP position, then set the Modbus TCP IP address in the web server (default web server 192.168.1.100, user admin). The Modbus TCP IP must differ from the web server IP; port 502 is always active.",
   "SoftCIM (MGE with FM310/311/110): configure address, baud, parity, stop bits and watchdog in Grundfos GO under Settings > Communication > RS485 AYB."
  ],
  "gotchas": [
   "Register 00002 is shown as RESERVED in the table but returns 'RegisterOffset' in the manual's example; leave it at 0.",
   "SoftCIM cannot be used while a CIM module is fitted in the same MGE motor; set the AYB port to GENIbus in that case.",
   "Restart the CIM/CIU after changing the pump's sensor configuration so measurement scaling is updated.",
   "Unit ID is ignored by the CIM 500 on Modbus TCP."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/grundfos/e-pumps-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."
}
