{
  "spec_version": 1,
  "slug": "vertiv-liebert-crah-unity",
  "manufacturer": "Vertiv",
  "model": "Liebert CRAH (CW / PDX / PCW) with IntelliSlot Unity card",
  "category": "CRAH",
  "supplier_url": "https://www.vertiv.com/en-us/support/",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "one_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst"
  },
  "coils": [
    {
      "address": 13,
      "count": 1,
      "name": "Minimum chilled water temperature set point enable",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Disabled, 1 = Enabled."
    },
    {
      "address": 19,
      "count": 1,
      "name": "Return air sensor event control",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Disabled, 1 = Enabled. Enables the return air sensor alarm handling."
    },
    {
      "address": 20,
      "count": 1,
      "name": "Ext air sensor A event control",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Disabled, 1 = Enabled."
    },
    {
      "address": 25,
      "count": 1,
      "name": "System on/off control",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Off, 1 = On. Switches the cooling unit on or off from the BMS."
    }
  ],
  "discrete_inputs": [
    {
      "address": 25,
      "count": 1,
      "name": "Fan state",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = Off, 1 = On."
    },
    {
      "address": 26,
      "count": 1,
      "name": "Cooling state",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = Off, 1 = On."
    },
    {
      "address": 27,
      "count": 1,
      "name": "Free cooling state",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = Off, 1 = On."
    },
    {
      "address": 34,
      "count": 1,
      "name": "Main fan overload",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit: 1 = active."
    },
    {
      "address": 35,
      "count": 1,
      "name": "Loss of air flow",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit: 1 = active."
    },
    {
      "address": 37,
      "count": 1,
      "name": "Compressor high head pressure",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit: 1 = active (DX units only)."
    },
    {
      "address": 38,
      "count": 1,
      "name": "Compressor low suction pressure",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit: 1 = active (DX units only)."
    },
    {
      "address": 47,
      "count": 1,
      "name": "Smoke detected",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit: 1 = active."
    },
    {
      "address": 48,
      "count": 1,
      "name": "Water under floor",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit: 1 = active."
    },
    {
      "address": 60,
      "count": 1,
      "name": "External over temperature",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit: 1 = active."
    },
    {
      "address": 61,
      "count": 1,
      "name": "Shutdown - loss of power",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit: 1 = active."
    },
    {
      "address": 65,
      "count": 1,
      "name": "Supply chilled water over temperature",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit: 1 = active."
    },
    {
      "address": 76,
      "count": 1,
      "name": "Clogged air filter",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit: 1 = active."
    },
    {
      "address": 91,
      "count": 1,
      "name": "Unit communication lost",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit: 1 = active."
    },
    {
      "address": 98,
      "count": 1,
      "name": "Service required",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit: 1 = active."
    },
    {
      "address": 104,
      "count": 1,
      "name": "Customer input 1",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit for customer input 1: 1 = active."
    },
    {
      "address": 218,
      "count": 1,
      "name": "Fan issue",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit: 1 = active."
    },
    {
      "address": 223,
      "count": 1,
      "name": "BMS communications timeout",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit: 1 = active after the BMS timeout period expires without a write to the unit."
    },
    {
      "address": 490,
      "count": 1,
      "name": "High static pressure",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit: 1 = active (units with static pressure control)."
    },
    {
      "address": 491,
      "count": 1,
      "name": "Low static pressure",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Alarm bit: 1 = active (units with static pressure control)."
    }
  ],
  "input_registers": [
    {
      "address": 100,
      "count": 1,
      "name": "Unit operating state",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = Off, 1 = On."
    },
    {
      "address": 103,
      "count": 1,
      "name": "Fan speed",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Current supply fan speed."
    },
    {
      "address": 110,
      "count": 1,
      "name": "Return air temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Temperature of the air entering the unit (metric version of the return air sensor)."
    },
    {
      "address": 112,
      "count": 1,
      "name": "Supply air temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Temperature of the air supplied to the room."
    },
    {
      "address": 113,
      "count": 1,
      "name": "Supply air temperature set point",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Setpoint in use for supply air control (read-only image; see holding register 20 for the writable setpoint)."
    },
    {
      "address": 116,
      "count": 1,
      "name": "External air sensor A temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Reading of external air sensor A."
    },
    {
      "address": 130,
      "count": 1,
      "name": "Return air humidity",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Relative humidity of the air entering the unit."
    },
    {
      "address": 132,
      "count": 1,
      "name": "External air sensor A humidity",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Relative humidity measured by external air sensor A."
    },
    {
      "address": 263,
      "count": 1,
      "name": "Return air temperature set point",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Setpoint in use for return air control; the writable holding register is 263."
    },
    {
      "address": 264,
      "count": 1,
      "name": "Return humidity set point",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Relative humidity setpoint in use; the writable holding register is 264."
    },
    {
      "address": 281,
      "count": 1,
      "name": "Unit off reason",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Enumerated reason why the unit is not running (for example 3 = timer)."
    },
    {
      "address": 484,
      "count": 1,
      "name": "Outside air temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Ambient temperature used for free cooling."
    },
    {
      "address": 500,
      "count": 1,
      "name": "Return dew point",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Dew point calculated from the return air temperature and humidity."
    },
    {
      "address": 501,
      "count": 1,
      "name": "Actual air temperature set point",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Setpoint actually used by the temperature control after all overrides."
    },
    {
      "address": 502,
      "count": 1,
      "name": "Actual humidity set point",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Humidity setpoint actually used by the humidity control after all overrides."
    },
    {
      "address": 673,
      "count": 1,
      "name": "Unit static pressure",
      "data_type": "Int16",
      "units": "Pa",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Static pressure measured at the unit's air outlet."
    },
    {
      "address": 674,
      "count": 1,
      "name": "System static pressure",
      "data_type": "Int16",
      "units": "Pa",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Static pressure of the controlled system (teamwork units)."
    },
    {
      "address": 830,
      "count": 1,
      "name": "System input RMS current, phase A",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Phase A input current of unit 1 of the system."
    },
    {
      "address": 840,
      "count": 1,
      "name": "System input RMS current, phase B",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Phase B input current of unit 1 of the system."
    },
    {
      "address": 850,
      "count": 1,
      "name": "System input RMS current, phase C",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Phase C input current of unit 1 of the system."
    },
    {
      "address": 870,
      "count": 2,
      "name": "Energy consumption 1",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Accumulated electrical energy of unit 1 of the system; the writable holding register is 870."
    },
    {
      "address": 1001,
      "count": 2,
      "name": "Unit cooling load",
      "data_type": "Int32",
      "units": "kW",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Cooling load currently handled by the unit."
    },
    {
      "address": 1003,
      "count": 2,
      "name": "Circuit 1 cooling load",
      "data_type": "Int32",
      "units": "kW",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Cooling load of refrigerant circuit 1 (DX units)."
    },
    {
      "address": 1005,
      "count": 2,
      "name": "Circuit 2 cooling load",
      "data_type": "Int32",
      "units": "kW",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Cooling load of refrigerant circuit 2 (DX units)."
    },
    {
      "address": 1010,
      "count": 2,
      "name": "Instantaneous power 1",
      "data_type": "Int32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Electrical input power of unit 1 of the system."
    },
    {
      "address": 1012,
      "count": 2,
      "name": "Instantaneous power 2",
      "data_type": "Int32",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Electrical input power of unit 2 of the system."
    }
  ],
  "holding_registers": [
    {
      "address": 19,
      "count": 1,
      "name": "Fan speed maximum set point",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Upper limit for the fan speed."
    },
    {
      "address": 20,
      "count": 1,
      "name": "Supply air temperature set point",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Setpoint for supply air temperature control (whole degrees)."
    },
    {
      "address": 23,
      "count": 1,
      "name": "Air temperature set point",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Temperature setpoint for the air temperature control loop (return air)."
    },
    {
      "address": 25,
      "count": 1,
      "name": "Air temperature dead band",
      "data_type": "UInt16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Dead band around the air temperature setpoint."
    },
    {
      "address": 27,
      "count": 1,
      "name": "Humidity set point",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Relative humidity setpoint."
    },
    {
      "address": 30,
      "count": 1,
      "name": "Humidity dead band",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Dead band around the humidity setpoint."
    },
    {
      "address": 45,
      "count": 1,
      "name": "BMS timeout period",
      "data_type": "UInt16",
      "units": "min",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Time without a BMS write after which the unit raises its BMS communications timeout alarm."
    },
    {
      "address": 50,
      "count": 1,
      "name": "High return air temperature threshold",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Alarm threshold for high return air temperature."
    },
    {
      "address": 51,
      "count": 1,
      "name": "Low return air temperature threshold",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Alarm threshold for low return air temperature."
    },
    {
      "address": 263,
      "count": 1,
      "name": "Return air temperature set point",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Setpoint for return air temperature control (whole degrees)."
    },
    {
      "address": 264,
      "count": 1,
      "name": "Return humidity set point",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Setpoint for return air relative humidity."
    },
    {
      "address": 495,
      "count": 1,
      "name": "Fan speed minimum set point",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Lower limit for the fan speed."
    },
    {
      "address": 503,
      "count": 1,
      "name": "Dew point set point",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Dew point setpoint for dew point control."
    },
    {
      "address": 672,
      "count": 1,
      "name": "Static pressure set point",
      "data_type": "Int16",
      "units": "Pa",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Static pressure setpoint for units with static pressure fan control."
    }
  ],
  "combined_registers": [],
  "notes": "The Modbus TCP server is the Liebert IntelliSlot Unity card (IS-UNITY-DP) fitted to the unit; it listens on port 502 and its device/unit identifier is set on the card's web interface (1 by default). The tables cover the Liebert iCOM cooling units with iCOM v4 firmware PA1.04.033.STD or later (CW, CWA, PDX/PCW and related CRAH families) as published by Vertiv; which points are actually present depends on the unit configuration (chilled water or DX, economizer, humidifier, reheat, static pressure control). Numbering follows Vertiv's register table without its Modicon area prefix (discrete input 10025 is listed as 25, input register 30100 as 100, holding register 40019 as 19), one-based, so the wire address is the number minus one - this file therefore declares one_based addressing. Values whose scale column says 10 are transmitted as ten times the engineering value, hence scale 0.1. Input registers that mirror settings are read-only images; write the holding register of the same name to change a setpoint."
}
