{
  "spec_version": 1,
  "slug": "guentner-gmm",
  "manufacturer": "Güntner",
  "model": "GMM EC / GMM sincon / GMM step / GMM phase cut motor management with GCM MOD bus module",
  "category": "Dry cooler",
  "supplier_url": "https://myguntner.com/public/Guentner_Modbus_GMM_Specification_V3-2_EN.PDF",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "None",
      "baud_rate": 9600,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [
    {
      "address": 53504,
      "count": 1,
      "name": "Number of motors, steps, VFD's, output stage",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: 0-16 (GMM EC)"
    },
    {
      "address": 53505,
      "count": 1,
      "name": "Status of the digital inputs of the Controller",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: 0-7"
    },
    {
      "address": 53506,
      "count": 1,
      "name": "Function current input AI1",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: 0-7"
    },
    {
      "address": 53507,
      "count": 1,
      "name": "Raw value AI1",
      "data_type": "UInt16",
      "units": "mA",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: 0-230"
    },
    {
      "address": 53508,
      "count": 1,
      "name": "Scaled value AI1",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: -500 - 1000"
    },
    {
      "address": 53509,
      "count": 1,
      "name": "Function current input AI2",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: 0-9"
    },
    {
      "address": 53510,
      "count": 1,
      "name": "Raw value AI2",
      "data_type": "UInt16",
      "units": "mA",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: 0-230"
    },
    {
      "address": 53511,
      "count": 1,
      "name": "Scaled value AI2",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: -500 - 1000"
    },
    {
      "address": 53512,
      "count": 1,
      "name": "Function Resistor Input AI3",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: 0-9"
    },
    {
      "address": 53513,
      "count": 1,
      "name": "Scaled value AI3",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: -580 - 2120"
    },
    {
      "address": 53514,
      "count": 1,
      "name": "Function Voltage Input AI4",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: 0-6"
    },
    {
      "address": 53515,
      "count": 1,
      "name": "Raw value / Voltage input AI4",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: 0-120"
    },
    {
      "address": 53516,
      "count": 1,
      "name": "Scaled value AI4",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: depending on sensor type"
    },
    {
      "address": 53517,
      "count": 1,
      "name": "Status manual mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: 0-1"
    },
    {
      "address": 53518,
      "count": 1,
      "name": "Control value manual mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: 0-100"
    },
    {
      "address": 53519,
      "count": 1,
      "name": "Type of motorcontrol",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: 0-255"
    },
    {
      "address": 53616,
      "count": 1,
      "name": "Faults / alarms from GMM",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": ""
    },
    {
      "address": 53760,
      "count": 1,
      "name": "Current air volume as a percentage of the maximum air volume",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: 0-100"
    },
    {
      "address": 53761,
      "count": 1,
      "name": "Status of digital outputs of GMM",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: bitwise"
    },
    {
      "address": 53762,
      "count": 1,
      "name": "Status of steps of step controller",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: bitwise"
    },
    {
      "address": 53763,
      "count": 1,
      "name": "Number of error messages of GMM",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: 0-9"
    },
    {
      "address": 53764,
      "count": 1,
      "name": "Status of digital outputs of GIOD",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: bitwise"
    },
    {
      "address": 53765,
      "count": 1,
      "name": "Status of the digital inputs of GIOD",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: 0h-FFFFh"
    },
    {
      "address": 53766,
      "count": 1,
      "name": "Status Info GMM",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Vendor range/enumeration: 0h-FFFFh"
    },
    {
      "address": 53777,
      "count": 1,
      "name": "Controller software version",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": ""
    },
    {
      "address": 53778,
      "count": 1,
      "name": "Power unit software version",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": ""
    }
  ],
  "holding_registers": [
    {
      "address": 53248,
      "count": 1,
      "name": "Control Value",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 0-100"
    },
    {
      "address": 53249,
      "count": 1,
      "name": "Operating mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 0-4"
    },
    {
      "address": 53250,
      "count": 1,
      "name": "Control Parameter Kp1",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 0-1000"
    },
    {
      "address": 53251,
      "count": 1,
      "name": "Control Parameter Ti1",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 0-1000"
    },
    {
      "address": 53252,
      "count": 1,
      "name": "Control parameter Td1",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": ""
    },
    {
      "address": 53257,
      "count": 1,
      "name": "Setpoint 1",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 0-1000"
    },
    {
      "address": 53258,
      "count": 1,
      "name": "Setpoint 2",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 0-1000"
    },
    {
      "address": 53259,
      "count": 1,
      "name": "Watchdog",
      "data_type": "UInt16",
      "units": "s",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 0-250 [s]"
    },
    {
      "address": 53260,
      "count": 1,
      "name": "Refrigerant",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": ""
    },
    {
      "address": 53261,
      "count": 1,
      "name": "Modbus Address",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 1-247"
    },
    {
      "address": 53262,
      "count": 1,
      "name": "Modbus Baudrate",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 0-8"
    },
    {
      "address": 53263,
      "count": 1,
      "name": "Modbus Parity/Framing",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 0-3"
    },
    {
      "address": 53264,
      "count": 1,
      "name": "Status manual mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 0-1"
    },
    {
      "address": 53265,
      "count": 1,
      "name": "Control value Manual mode",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 0-100 [%]"
    },
    {
      "address": 53308,
      "count": 1,
      "name": "Status Threshold value",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 0-1"
    },
    {
      "address": 53266,
      "count": 1,
      "name": "Threshold value depending on",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: see table"
    },
    {
      "address": 53267,
      "count": 1,
      "name": "Threshold value limit",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: see table"
    },
    {
      "address": 53268,
      "count": 1,
      "name": "Threshold value ambient temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: -30 bis +100 [°C]"
    },
    {
      "address": 53269,
      "count": 1,
      "name": "Threshold value emergency value Status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 0-1"
    },
    {
      "address": 53270,
      "count": 1,
      "name": "Threshold value/emergency control value",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": ""
    },
    {
      "address": 53271,
      "count": 1,
      "name": "Number of setpoints",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": ""
    },
    {
      "address": 53272,
      "count": 1,
      "name": "Status nightsetback",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 0-1"
    },
    {
      "address": 53273,
      "count": 1,
      "name": "Nightsetback limit",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 0-100 [%]"
    },
    {
      "address": 53274,
      "count": 1,
      "name": "Manual inverse operation",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": ""
    },
    {
      "address": 53294,
      "count": 1,
      "name": "Status of selective fan shutdown",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": ""
    },
    {
      "address": 53295,
      "count": 1,
      "name": "Selective fan shutdown",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": ""
    },
    {
      "address": 53296,
      "count": 1,
      "name": "Heat exchanger type",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: see following table"
    },
    {
      "address": 53334,
      "count": 1,
      "name": "SI/IP units system",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": ""
    },
    {
      "address": 53376,
      "count": 1,
      "name": "Fancycling ON/OFF",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 0-1"
    },
    {
      "address": 53377,
      "count": 1,
      "name": "Hysteresis OFF",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Vendor range/enumeration: 1-50%"
    }
  ],
  "combined_registers": [],
  "notes": "Source: Güntner \"Interface Specification - Modbus GMM V_3.2\", the vendor's Modbus parameter specification for the external bus of the Güntner Motor Management (GMM EC, GMM sincon, GMM step, GMM phase cut) used on its dry coolers, condensers and evaporative condensers: https://myguntner.com/public/Guentner_Modbus_GMM_Specification_V3-2_EN.PDF. Section 3.1 gives the standard interface parameters (RS-485 Modbus RTU, 9600 baud, 8 data bits, no parity, 1 stop bit) and section 3.3.1 the default address (GMM address 1), which is what the serial block records; address and framing are changeable in the service menu. Section 4.1 fixes the addressing convention: the printed addresses apply to the decimal range 0...65535 of the 16-bit register, so the tables are zero-based wire addresses. Holding registers start at D000h (53248) and input registers at D100h (53504); every row comes from its own per-register chapter (4.2.x / 4.3.x), which states address, format and range - the overview tables' decimal column is printed one row out of step in places, while the hexadecimal column and the chapters agree. Registers marked \"not yet implemented\" (Kp2, Ti2, Td2, control system selection) are not listed. The per-fan arrays (energy, temperatures, fan speed and percentage, EC alerts, VFD states, hours) hold one register per motor and the document does not say whether motor 1 sits at the base address or base+1, so they are omitted rather than guessed, as are the two chapters with overlapping ranges (4.3.18/4.3.19, 4.3.26) and \"Raw value AI3\", whose address equals the scaled AI3 register. Fixed-point rows: the chapters say \"multiplied by 10 for precision purposes\" for Kp1, Setpoint 1/2, the threshold limit and ambient temperature and the analog-input raw and scaled registers (53507-53516), so these carry scale factor 0.1; the raw current inputs read in mA and the raw voltage input in V, while the scaled AI1/AI2/AI4 rows stay unitless (the unit follows the service-menu function)."
}
