{
  "spec_version": 1,
  "slug": "trane-symbio-acrb",
  "manufacturer": "Trane",
  "model": "Ascend ACRB air-cooled chiller (Symbio 800 controls)",
  "category": "Chiller",
  "supplier_url": "https://www.trane.com/commercial/north-america/us/en/products-systems/chillers/air-cooled-chillers.html",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "one_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst"
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [
    {
      "address": 11,
      "count": 2,
      "name": "Active chilled water setpoint",
      "data_type": "Float32",
      "units": "°F",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Chilled water setpoint the chiller is currently controlling to, after arbitration between BAS, external and front-panel sources."
    },
    {
      "address": 13,
      "count": 2,
      "name": "Evaporator entering water temperature",
      "data_type": "Float32",
      "units": "°F",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Water temperature entering the evaporator (return from the cooling load)."
    },
    {
      "address": 15,
      "count": 2,
      "name": "Evaporator leaving water temperature",
      "data_type": "Float32",
      "units": "°F",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Water temperature leaving the evaporator (supply to the cooling load)."
    },
    {
      "address": 17,
      "count": 2,
      "name": "Calculated chiller capacity",
      "data_type": "Float32",
      "units": "ton",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Cooling capacity the chiller is currently delivering, in tons of refrigeration."
    },
    {
      "address": 19,
      "count": 2,
      "name": "Active demand limit setpoint",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Demand limit the chiller is currently applying."
    },
    {
      "address": 21,
      "count": 2,
      "name": "Unit power consumption",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Electrical input power of the whole chiller."
    },
    {
      "address": 25,
      "count": 2,
      "name": "Outdoor air temperature",
      "data_type": "Float32",
      "units": "°F",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Ambient temperature at the unit."
    },
    {
      "address": 27,
      "count": 2,
      "name": "Evaporator refrigerant pressure, circuit 1",
      "data_type": "Float32",
      "units": "psi",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Refrigerant pressure in the evaporator of circuit 1."
    },
    {
      "address": 29,
      "count": 2,
      "name": "Condenser refrigerant pressure, circuit 1",
      "data_type": "Float32",
      "units": "psi",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Refrigerant pressure in the condenser of circuit 1."
    },
    {
      "address": 31,
      "count": 2,
      "name": "Differential refrigerant pressure, circuit 1",
      "data_type": "Float32",
      "units": "psi",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Difference between discharge and suction pressure on circuit 1."
    },
    {
      "address": 33,
      "count": 2,
      "name": "Evaporator saturated refrigerant temperature, circuit 1",
      "data_type": "Float32",
      "units": "°F",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Saturated refrigerant temperature in the evaporator of circuit 1."
    },
    {
      "address": 35,
      "count": 2,
      "name": "Condenser saturated refrigerant temperature, circuit 1",
      "data_type": "Float32",
      "units": "°F",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Saturated refrigerant temperature in the condenser of circuit 1."
    },
    {
      "address": 37,
      "count": 2,
      "name": "Evaporator refrigerant pressure, circuit 2",
      "data_type": "Float32",
      "units": "psi",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Refrigerant pressure in the evaporator of circuit 2."
    },
    {
      "address": 39,
      "count": 2,
      "name": "Condenser refrigerant pressure, circuit 2",
      "data_type": "Float32",
      "units": "psi",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Refrigerant pressure in the condenser of circuit 2."
    },
    {
      "address": 41,
      "count": 2,
      "name": "Differential refrigerant pressure, circuit 2",
      "data_type": "Float32",
      "units": "psi",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Difference between discharge and suction pressure on circuit 2."
    },
    {
      "address": 43,
      "count": 2,
      "name": "Evaporator saturated refrigerant temperature, circuit 2",
      "data_type": "Float32",
      "units": "°F",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Saturated refrigerant temperature in the evaporator of circuit 2."
    },
    {
      "address": 45,
      "count": 2,
      "name": "Condenser saturated refrigerant temperature, circuit 2",
      "data_type": "Float32",
      "units": "°F",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Saturated refrigerant temperature in the condenser of circuit 2."
    },
    {
      "address": 47,
      "count": 2,
      "name": "Refrigerant discharge temperature, compressor 1A",
      "data_type": "Float32",
      "units": "°F",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discharge gas temperature of compressor 1A."
    },
    {
      "address": 49,
      "count": 2,
      "name": "Oil pressure, compressor 1A",
      "data_type": "Float32",
      "units": "psi",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Oil pressure on the high-pressure side of compressor 1A."
    },
    {
      "address": 51,
      "count": 2,
      "name": "Refrigerant discharge temperature, compressor 2A",
      "data_type": "Float32",
      "units": "°F",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Discharge gas temperature of compressor 2A."
    },
    {
      "address": 53,
      "count": 2,
      "name": "Oil pressure, compressor 2A",
      "data_type": "Float32",
      "units": "psi",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Oil pressure on the high-pressure side of compressor 2A."
    },
    {
      "address": 55,
      "count": 2,
      "name": "Air flow percentage, circuit 1",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Approximate air flow through circuit 1."
    },
    {
      "address": 57,
      "count": 2,
      "name": "Air flow percentage, circuit 2",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Approximate air flow through circuit 2."
    },
    {
      "address": 59,
      "count": 2,
      "name": "Starts, compressor 1A",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Number of starts of compressor 1A."
    },
    {
      "address": 61,
      "count": 2,
      "name": "Run time, compressor 1A",
      "data_type": "Float32",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Accumulated run time of compressor 1A."
    },
    {
      "address": 63,
      "count": 2,
      "name": "Compressor 1A speed status",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Percentage of available speed currently used by compressor 1A."
    },
    {
      "address": 69,
      "count": 2,
      "name": "Drive motor current U, compressor 1A (RLA)",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Line 1 current at the compressor 1A drive, as a percentage of rated load amps."
    },
    {
      "address": 71,
      "count": 2,
      "name": "Drive motor current V, compressor 1A (RLA)",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Line 2 current at the compressor 1A drive, as a percentage of rated load amps."
    },
    {
      "address": 73,
      "count": 2,
      "name": "Drive motor current W, compressor 1A (RLA)",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Line 3 current at the compressor 1A drive, as a percentage of rated load amps."
    },
    {
      "address": 93,
      "count": 2,
      "name": "Drive output power, circuit 1",
      "data_type": "Float32",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Power delivered by the compressor drive of circuit 1."
    },
    {
      "address": 111,
      "count": 2,
      "name": "Starts, compressor 2A",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Number of starts of compressor 2A."
    },
    {
      "address": 113,
      "count": 2,
      "name": "Run time, compressor 2A",
      "data_type": "Float32",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Accumulated run time of compressor 2A."
    },
    {
      "address": 173,
      "count": 2,
      "name": "Energy consumption, lifetime",
      "data_type": "Float32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Total electrical energy consumed by the unit since commissioning."
    },
    {
      "address": 181,
      "count": 2,
      "name": "Active cool/heat setpoint temperature",
      "data_type": "Float32",
      "units": "°F",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Active setpoint for the current mode (cooling or heating)."
    },
    {
      "address": 2010,
      "count": 1,
      "name": "Running mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = Chiller off, 2 = Chiller in start mode, 3 = Chiller in run mode, 4 = Chiller in pre-shutdown mode, 5 = Chiller in service mode."
    },
    {
      "address": 2011,
      "count": 1,
      "name": "Operating mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = Cool, 2 = Heat, 3 = Ice making, 4 = Free cooling."
    },
    {
      "address": 2012,
      "count": 1,
      "name": "Chiller setpoint source",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = BAS, 2 = External, 3 = Front panel."
    },
    {
      "address": 3010,
      "count": 1,
      "name": "Run enable",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = Run not enabled, 1 = Run enabled."
    },
    {
      "address": 3011,
      "count": 1,
      "name": "Local setpoint control",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = Remote control, 1 = Local control."
    },
    {
      "address": 3013,
      "count": 1,
      "name": "Chiller running state",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = Off, 1 = On."
    },
    {
      "address": 3015,
      "count": 1,
      "name": "Evaporator water pump command",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = Off, 1 = On. Request from the chiller to run the evaporator water pump."
    },
    {
      "address": 3016,
      "count": 1,
      "name": "Evaporator water flow status",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = Flow, 0 = No flow (the chiller may refuse to start)."
    },
    {
      "address": 3018,
      "count": 1,
      "name": "Emergency stop",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = Auto, 1 = Emergency stop, manual reset required."
    },
    {
      "address": 3019,
      "count": 1,
      "name": "Diagnostic present",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = In alarm, 0 = Normal."
    },
    {
      "address": 3020,
      "count": 1,
      "name": "Diagnostic shutdown present",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = Chiller is shut down by a diagnostic, 0 = Normal."
    },
    {
      "address": 3021,
      "count": 1,
      "name": "Diagnostic: manual reset required",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = A diagnostic requiring manual reset is active, 0 = Normal."
    },
    {
      "address": 3025,
      "count": 1,
      "name": "Diagnostic present: critical",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = Critical-category diagnostic present, 0 = Normal."
    },
    {
      "address": 3026,
      "count": 1,
      "name": "Diagnostic present: service required",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = Service-required diagnostic present, 0 = Normal."
    },
    {
      "address": 3027,
      "count": 1,
      "name": "Running status, compressor 1A",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = Off, 1 = Running."
    },
    {
      "address": 3028,
      "count": 1,
      "name": "Running status, compressor 2A",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = Off, 1 = Running."
    },
    {
      "address": 3029,
      "count": 1,
      "name": "Free cooling active",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = Inactive, 1 = Active."
    },
    {
      "address": 3030,
      "count": 1,
      "name": "External auto/stop",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "State of the hard-wired auto/stop input: 0 = Stop, 1 = Auto."
    },
    {
      "address": 3032,
      "count": 1,
      "name": "Noise reduction request active",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = Off, 1 = On."
    }
  ],
  "holding_registers": [
    {
      "address": 10,
      "count": 2,
      "name": "Chilled water setpoint",
      "data_type": "Float32",
      "units": "°F",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Setpoint sent from the BAS. Subject to arbitration logic in the controller, so the active setpoint can differ (see input register 11)."
    },
    {
      "address": 12,
      "count": 2,
      "name": "Demand limit setpoint",
      "data_type": "Float32",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Demand limit sent from the BAS, also subject to arbitration."
    },
    {
      "address": 2010,
      "count": 1,
      "name": "BAS chiller mode command",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = Cool, 2 = Heat, 3 = Ice making, 4 = Free cooling."
    },
    {
      "address": 3010,
      "count": 1,
      "name": "Reset diagnostic",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Normally used by the BMS to reset controller diagnostics: 0 = Normal, 1 = Reset."
    },
    {
      "address": 3011,
      "count": 1,
      "name": "Noise reduction request",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Normal, 1 = Reduce noise."
    },
    {
      "address": 3012,
      "count": 1,
      "name": "Chiller auto/stop command",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Stop, 1 = Auto. Starts and stops the chiller over Modbus, subject to the unit's operating conditions."
    },
    {
      "address": 3013,
      "count": 1,
      "name": "Free cooling auto/stop command",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Stop, 1 = Auto. Enables or disables free cooling over Modbus."
    },
    {
      "address": 3014,
      "count": 1,
      "name": "Free cooling compressor lockout",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Normal, 1 = Locked out. Blocks the compressor while free cooling is active."
    },
    {
      "address": 3015,
      "count": 1,
      "name": "Circuit 1 lockout",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Normal, 1 = Locked out."
    },
    {
      "address": 3016,
      "count": 1,
      "name": "Circuit 2 lockout",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Normal, 1 = Locked out."
    },
    {
      "address": 3017,
      "count": 1,
      "name": "Energy consumption reset",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = Accumulating, 1 = Reset the energy consumption total."
    }
  ],
  "combined_registers": [],
  "notes": "This is the Modbus points list for Ascend ACRB 150-300 ton chillers with Symbio 800 controls (Trane integration guide BAS-SVP045B-EN). Larger ACRB 350-500 ton units use a different set of register numbers with the same object names, so check the points list for your unit size. Symbio 800 serves Modbus TCP on Ethernet port 1 once the system protocol is set to Modbus TCP in the controller; the rotary address applies only to Modbus RTU, so the unit identifier is not used for TCP and 1 is sent here. Addresses are the register numbers from the Trane points list without their Modicon area prefix (input register 30011 is listed as 11, holding register 40010 as 10), one-based, so the wire address is the number minus one; Float32 values occupy two registers and are transmitted big-endian, high word first. Values are US units (degrees Fahrenheit, psi, tons of refrigeration). Port 2 of the controller is reserved for the TD7 display."
}
