{
 "manufacturer": "EVAPCO",
 "manufacturer_slug": "evapco",
 "bacnet_transport": [
  "BACnet IP",
  "BACnet MS/TP"
 ],
 "firmware": null,
 "default_device_instance": null,
 "access_inferred": false,
 "model": "eco-Air Controller (AC / NEMA Motors)",
 "model_slug": "eco-air-controller-ac-motor",
 "aliases": [
  "eco-Air PLC",
  "EVAPCO Controller",
  "COMM24 AC",
  "COMM22NEMA",
  "eco-Air NEMA motor"
 ],
 "equipment_type": "Dry / adiabatic fluid cooler controller",
 "applies_to": "EVAPCO eco-Air air-cooled and adiabatic fluid coolers and condensers with AC (NEMA-style) fan motors on VFDs.",
 "summary": "Same eco-Air PLC as the EC edition but for units with conventional AC fan motors, so the per-EC-fan objects are unused. BACnet IP runs on the Ethernet port and BACnet MS/TP on the RS-485 terminal shared with Modbus RTU. The object list covers enable and state, temperatures, setpoints, fan-speed limits, adiabatic pre-cooling stages and remote fan-speed control.",
 "notes": [
  "BV 13-76 and AV 31 and AV 49-100 are EC-fan objects and do not apply to AC-motor units, so they are left out.",
  "The 2022 US edition (COMM22NEMA) lists the same core objects; this file follows the newer 2025 EU edition."
 ],
 "source": {
  "title": "EVAPCO Controller User's Manual Addendum - Communications Guide AC Motor Edition",
  "doc_number": "COMM24 AC-E",
  "revision_date": "2025-10",
  "url": "https://www.evapco.eu/media/772760"
 },
 "points": [
  {
   "type": "BV",
   "instance": 0,
   "name": "bnEnableUnit",
   "description": "Enables the unit if it is configured to be enabled via BMS",
   "units": "",
   "access": "W",
   "states": "0=Unit not enabled, 1=Unit enabled"
  },
  {
   "type": "BV",
   "instance": 1,
   "name": "bnRemoteDigital",
   "description": "State of remote digital input",
   "units": "",
   "access": "R",
   "states": "0=No voltage present, 1=Voltage present"
  },
  {
   "type": "BV",
   "instance": 2,
   "name": "bnProcessAlarm",
   "description": "Fault for either the outlet temperature sensor or the inlet pressure",
   "units": "",
   "access": "R",
   "states": "0=Normal, 1=Process sensor is not detected"
  },
  {
   "type": "BV",
   "instance": 3,
   "name": "bnValveStatus1",
   "description": "State of first adiabatic precooling valve",
   "units": "",
   "access": "R",
   "states": "0=Valve off (water not flowing), 1=Valve on (water flowing)"
  },
  {
   "type": "BV",
   "instance": 4,
   "name": "bnValveStatus2",
   "description": "State of second adiabatic precooling valve",
   "units": "",
   "access": "R",
   "states": "0=Valve off (water not flowing), 1=Valve on (water flowing)"
  },
  {
   "type": "BV",
   "instance": 5,
   "name": "bnValveStatus3",
   "description": "State of third adiabatic precooling valve",
   "units": "",
   "access": "R",
   "states": "0=Valve off (water not flowing), 1=Valve on (water flowing)"
  },
  {
   "type": "BV",
   "instance": 6,
   "name": "bnValveStatus4",
   "description": "State of fourth adiabatic precooling valve",
   "units": "",
   "access": "R",
   "states": "0=Valve off (water not flowing), 1=Valve on (water flowing)"
  },
  {
   "type": "BV",
   "instance": 7,
   "name": "bnManualFlush",
   "description": "Manually starts the precooling flushing cycle",
   "units": "",
   "access": "W",
   "states": "0=Not active, 1=Start manual flush"
  },
  {
   "type": "BV",
   "instance": 8,
   "name": "bnReleasePrecool",
   "description": "Release precool",
   "units": "",
   "access": "W",
   "states": "0=Precooling system will not function, 1=Precooling system will function when needed"
  },
  {
   "type": "BV",
   "instance": 9,
   "name": "bnEnableCommonAlarm",
   "description": "Enables the common alarm for the digital output",
   "units": "",
   "access": "W",
   "states": "0=Common alarm not enabled, 1=Common alarm enabled"
  },
  {
   "type": "BV",
   "instance": 10,
   "name": "bnCommonAlarmStatus",
   "description": "Status of the alarm digital output",
   "units": "",
   "access": "R",
   "states": "0=No alarm/not active, 1=Alarm/active"
  },
  {
   "type": "BV",
   "instance": 11,
   "name": "bnForceFullSpeed",
   "description": "Force full speed",
   "units": "",
   "access": "W",
   "states": "0=Not enabled, 1=Forces fans to run at 100 percent fan speed"
  },
  {
   "type": "BV",
   "instance": 12,
   "name": "bnEnableStageOntime",
   "description": "Enable stage ontime",
   "units": "",
   "access": "W",
   "states": "0=Not active, 1=Valve must remain on for the minimum run time"
  },
  {
   "type": "BV",
   "instance": 77,
   "name": "bnRemoteEnable",
   "description": "Remote enable",
   "units": "",
   "access": "W",
   "states": "0=Not enabled, 1=Fan speed is controlled either by analog input or communication."
  },
  {
   "type": "AV",
   "instance": 0,
   "name": "bnOutletTemp",
   "description": "Outlet temperature of the process fluid",
   "units": "Deg.",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 1,
   "name": "bnAmbientTemp",
   "description": "Temperature detected by the ambient temperature sensor",
   "units": "Deg.",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 2,
   "name": "bnActiveSetpoint",
   "description": "Active set point that the eco-Air unit will maintain",
   "units": "Deg.",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 3,
   "name": "bnSetpointTemp",
   "description": "Primary process temperature setpoint used when all other alternate setpoints are not",
   "units": "Deg.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 4,
   "name": "bnSetpoint2TempTrig",
   "description": "Setpoint that when the ambient temperature falls below, will switch the control",
   "units": "Deg.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 5,
   "name": "bnTempRegulationBand",
   "description": "Temperature band between the minimum and maximum fan speed for P fan",
   "units": "Deg.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 6,
   "name": "bnSetpoint2TempTrigDiff",
   "description": "Temperature differential added to the ambient temperature setpoint 2 trigger",
   "units": "Deg.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 7,
   "name": "bnPrecoolMinTemp",
   "description": "Minimum ambient temperature at which the precooling system may operate",
   "units": "Deg.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 8,
   "name": "bnPrecoolMinTempDiff",
   "description": "Ambient temperature offset added to the minimum allowable temperature",
   "units": "Deg.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 9,
   "name": "bnProportionalGain",
   "description": "Proportional gain constant used for the PID controller",
   "units": "Units",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 10,
   "name": "bnSwitchTemp1",
   "description": "Minimum temperature, above which the precooling stage 1 has permission to operate",
   "units": "Deg.",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 11,
   "name": "bnSwitchTemp2",
   "description": "Minimum temperature, above which the precooling stage 2 has permission to operate",
   "units": "Deg.",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 12,
   "name": "bnSwitchTemp3",
   "description": "Minimum temperature, above which the precooling stage 3 has permission to operate",
   "units": "Deg.",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 13,
   "name": "bnSwitchTemp4",
   "description": "Minimum temperature, above which the precooling stage 4 has permission to operate",
   "units": "Deg.",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 14,
   "name": "bnFlushFanSpeed",
   "description": "Desired fan speed while performing a flushing cycle",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 15,
   "name": "bnSetpoint2Temp",
   "description": "Alternate process temperature set point",
   "units": "Deg.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 16,
   "name": "bnUnitState",
   "description": "Current state of the EVAPCO Controller",
   "units": "",
   "access": "R",
   "states": "1=Unit on and operational, 2=Unit is off by an alarm, 4=Unit is off via BMS, Modbus/ BACnet, 6=Unit is off via the digital input, 7=Unit is switched off locally, 8=Manual mode enabled for fan speed control"
  },
  {
   "type": "AV",
   "instance": 17,
   "name": "bnMinFanSpeed",
   "description": "Minimum allowable fan speed",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 18,
   "name": "bnMaxFanSpeed",
   "description": "Maximum allowable fan speed",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 19,
   "name": "bnEnergySaveFanSpeed",
   "description": "Fan speed, above which the precooling system will activate",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 20,
   "name": "bnQuietMaxFanSpeed",
   "description": "Maximum allowable fan speed in quiet operation",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 21,
   "name": "bnPID_Integral",
   "description": "PID integral term",
   "units": "Sec.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 22,
   "name": "bnPID_Derivative",
   "description": "PID derivative term",
   "units": "Sec.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 23,
   "name": "bnNumWetStages",
   "description": "Count of stages that have been enabled for the adiabatic system",
   "units": "Units",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 24,
   "name": "bnPrecoolStage1_Increase",
   "description": "Count of seconds that must pass with the process temperature above set",
   "units": "Sec.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 25,
   "name": "bnPrecoolStage1_Decrease",
   "description": "Count of seconds that must pass with the process temperature below set",
   "units": "Sec.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 26,
   "name": "bnRefrigerant",
   "description": "For condenser applications",
   "units": "",
   "access": "W",
   "states": "1=R22, 2=R134a, 3=R404A, 4=R407C, 5=R410A, 6=R407A, 7=R407F, 8=R290, 9=R507A, 10=R717 (NH3), 11=R723, 12=R1234ze, 13=R744 (CO2), 14=R448A, 15=R427A, 16=R450A (N13), 17=R513A, 18=R449A, 19=R1234yf, 20=R454B, 21=R454C, 22=R455A, 23=434A, 24=R422A, 25=R32, 26=R452B, 27=R452A, 28=Custom"
  },
  {
   "type": "AV",
   "instance": 27,
   "name": "bnPrecoolStage1_MinOn",
   "description": "Minimum amount of time the precooling stage remains active",
   "units": "Sec.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 28,
   "name": "bnPrecoolStage2_MinOn",
   "description": "Minimum amount of time the precooling stage remains active",
   "units": "Sec.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 29,
   "name": "bnPrecoolStage3_MinOn",
   "description": "Minimum amount of time the precooling stage remains active",
   "units": "Sec.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 30,
   "name": "bnPrecoolStage4_MinOn",
   "description": "Minimum amount of time the precooling stage remains active",
   "units": "Sec.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 32,
   "name": "bnInletPressure",
   "description": "Inlet pressure reading via pressure sensor input",
   "units": "Press.",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 33,
   "name": "bnRefFanSpeed",
   "description": "Desired fan speed determined by the controller",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 34,
   "name": "bnFlushingTime",
   "description": "Count of minutes to perform the flushing routine once initiated",
   "units": "Min.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 35,
   "name": "bnFlushTimeAcc",
   "description": "Count of seconds the flushing routine has been active",
   "units": "Sec.",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 36,
   "name": "bnDryingTime",
   "description": "Count of minutes to dry the pre-cooling pads",
   "units": "Min.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 37,
   "name": "bnDryTimeAcc",
   "description": "Count of seconds the drying routine has been active",
   "units": "Sec.",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 38,
   "name": "bnFan_Hours",
   "description": "Count of hours the fans have been operational",
   "units": "Hours",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 39,
   "name": "bnPrecoolStage1_Hours",
   "description": "Count of hours the first valve has been operational",
   "units": "Hours",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 40,
   "name": "bnPrecoolStage2_Hours",
   "description": "Count of hours the second valve has been operational",
   "units": "Hours",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 41,
   "name": "bnPrecoolStage3_Hours",
   "description": "Count of hours the third valve has been operational",
   "units": "Hours",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 42,
   "name": "bnPrecoolStage4_Hours",
   "description": "Count of hours the fourth valve has been operational",
   "units": "Hours",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 43,
   "name": "bnPrecool24_Increase",
   "description": "Count of seconds that must pass with the process temperature above setpoint",
   "units": "Sec.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 44,
   "name": "bnPrecool24_Decrease",
   "description": "Count of seconds that must pass with the process temperature below setpoint",
   "units": "Sec.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 45,
   "name": "bnPrecool24_DecreaseAcc",
   "description": "Count of seconds with the process temperature below setpoint",
   "units": "Sec.",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 46,
   "name": "bnPrecool1_DecreaseAcc",
   "description": "Count of seconds with the process temperature below setpoint",
   "units": "Sec.",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 47,
   "name": "bnPrecool24_IncreaseAcc",
   "description": "Count of seconds with the process temperature above the setpoint",
   "units": "Sec.",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 48,
   "name": "bnPrecool1_IncreaseAcc",
   "description": "Count of seconds with the process temperature above the setpoint",
   "units": "Sec.",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 101,
   "name": "bnRemoteSource",
   "description": "Source of the reference fan speed:",
   "units": "",
   "access": "W",
   "states": "1=Analog Input, 2=Communication see ANALOG_ VALUE:105"
  },
  {
   "type": "AV",
   "instance": 102,
   "name": "bnRemoteAmbTrig",
   "description": "When the source is set to Analog Input",
   "units": "Deg.",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 103,
   "name": "bnRemoteHighFanSpeed",
   "description": "Fan(s) will operate at the high default fan speed with a loss",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 104,
   "name": "bnRemoteLowFanSpeed",
   "description": "Fan(s) will operate at the low default fan speed with a loss",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 105,
   "name": "bnRemoteFanSpeed",
   "description": "With remote fan speed enabled and the source set to Communications",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 106,
   "name": "bnFanSpeedAI",
   "description": "Fan speed ai",
   "units": "%",
   "access": "R",
   "states": ""
  }
 ],
 "integration": {
  "summary": "Select BACnet MS/TP or Modbus RTU for the serial port on the HMI (BACnet IP is always on the Ethernet port), set addresses under Service > BMS & Network, then use BV 0 to enable the unit from the BMS. Read AV 16, AV 0 and the common alarm and write AV 3 for the process setpoint; remote fan speed works through BV 77, AV 101 and AV 105.",
  "minimum_points": [
   {
    "ref": "BV 0",
    "name": "bnEnableUnit",
    "why": "BMS enable/disable when configured for BMS enable"
   },
   {
    "ref": "AV 3",
    "name": "bnSetpointTemp",
    "why": "Primary process setpoint (writable)"
   },
   {
    "ref": "AV 16",
    "name": "bnUnitState",
    "why": "Operating state and reason it is off"
   },
   {
    "ref": "AV 0",
    "name": "bnOutletTemp",
    "why": "Process fluid outlet temperature"
   },
   {
    "ref": "AV 2",
    "name": "bnActiveSetpoint",
    "why": "Setpoint currently in control"
   },
   {
    "ref": "AV 33",
    "name": "bnRefFanSpeed",
    "why": "Commanded fan speed"
   },
   {
    "ref": "BV 10",
    "name": "bnCommonAlarmStatus",
    "why": "Common alarm output status"
   }
  ],
  "enable": "Write BV 0 bnEnableUnit = 1 (only works when the unit is configured to be enabled via BMS); AV 16 = 4 means off via BMS.",
  "heartbeat": null,
  "remote_sensors": "Remote fan speed: BV 77 bnRemoteEnable = 1, AV 101 bnRemoteSource = 2 (Communication), then write AV 105. AV 103/AV 104 set the fallback speeds used if the analog speed input is lost.",
  "setup": [
   "Default communication parameters are on page 1 of the panel wiring diagram.",
   "Switch the unit off, log in at Service level, open Service > BMS & Network, change values and hold Update for 3 s; the HMI and PLC restart.",
   "The serial port is either MS/TP or Modbus RTU; BACnet IP and Modbus TCP both run on Ethernet."
  ],
  "gotchas": [
   "Writable parameters are stored in the PLC's non-volatile memory, rated for about 100,000 writes; never write them cyclically.",
   "Points marked for adiabatic units (pre-cooling valves, flush, wet-stage timers) can be ignored on dry-only units."
  ]
 },
 "page": "https://easybacnet.com/bacnet-points-lists/evapco/eco-air-controller-ac-motor",
 "note": "Provided as-is. Point availability varies by firmware and options; verify against the live device.",
 "disclaimer": "DISCLAIMER: reference only, provided AS IS with no warranty. May contain errors or be out of date. You must verify every point against the manufacturer's current documentation and the live device before use. easybacnet.com accepts no liability for its use and is not affiliated with the manufacturer. Terms: https://easybacnet.com/terms#content"
}
