{
 "manufacturer": "AAON",
 "manufacturer_slug": "aaon",
 "model": "PREHEAT-X Controller",
 "model_slug": "preheat-x",
 "aliases": [
  "PREHEAT-X",
  "PREHEATX",
  "Preheat-X",
  "G086640",
  "AAON preheat controller",
  "Orion PREHEAT-X"
 ],
 "equipment_type": "Air handler preheat controller",
 "applies_to": "AAON PREHEAT-X controllers that stage and modulate electric (SCR/SSR) preheat on AAON units and air handlers.",
 "summary": "The PREHEAT-X controls modulating SCR or SSR preheat plus up to six fixed heat stages to hold a leaving air temperature. It can run stand-alone, from an AAON unit controller over E-BUS, or from a BAS over its own BACnet MS/TP port. The object list is small: 9 read-only AIs (setpoint in use, stages on, modulating output, temperatures, alarm bitfield), 16 read-only BIs (inputs, relay states, alarms) and 3 writable AVs for remote enable and the leaving and entering air setpoints.",
 "bacnet_transport": [
  "BACnet MS/TP"
 ],
 "firmware": null,
 "default_device_instance": null,
 "access_inferred": false,
 "notes": [
  "BACnet only works with COM MODE set to BACNET on the COMM CONFIG screens (default is S-ALONE).",
  "The three AVs are volatile: values written by the BAS are lost when the controller resets, so the BAS must write them again after a power cycle.",
  "In BACnet mode, preheat is enabled by the BACnet command or the binary input, whichever comes first.",
  "AI 4 is a bit string; bit 7 is a communication alarm and bit 8 the emergency shutdown alarm.",
  "Source is the PREHEAT-X Technical Guide, AAON P/N G086640 Rev. F (February 2, 2024), Appendix B."
 ],
 "source": {
  "title": "PREHEAT-X Technical Guide (Appendix B: BACnet)",
  "doc_number": "G086640",
  "revision_date": "Rev. F, 2024-02-02",
  "url": "https://www.aaon.com/hubfs/G086640-PREHEATX-TGD-E.pdf"
 },
 "integration": {
  "summary": "Set COM MODE to BACNET and give the controller a MAC address, device ID and baud rate on the COMM CONFIG screens. The BAS enables preheat with AV 1, sends the leaving air setpoint on AV 2 and the entering air enable setpoint on AV 3, and reads leaving air temperature, stages and alarms. Rewrite the AVs after any controller reset.",
  "minimum_points": [
   {
    "ref": "AV 1",
    "name": "Remote Enable",
    "why": "Preheat enable from the BAS (1 = enabled)"
   },
   {
    "ref": "AV 2",
    "name": "Remote Leaving Air Setpoint",
    "why": "Leaving air temperature setpoint, °F"
   },
   {
    "ref": "AV 3",
    "name": "Remote Entering Air Setpoint",
    "why": "Preheat runs below this entering air temp, °F"
   },
   {
    "ref": "BI 3",
    "name": "Preheat Enable Status",
    "why": "Preheat is enabled"
   },
   {
    "ref": "AI 8",
    "name": "Leaving Air Average Temp",
    "why": "Average leaving air temperature"
   },
   {
    "ref": "AI 3",
    "name": "Modulating Output Position",
    "why": "Modulating heat output"
   },
   {
    "ref": "AI 2",
    "name": "Number of Heat Stages On",
    "why": "Fixed heat stages running"
   },
   {
    "ref": "AI 4",
    "name": "All Alarms Bitfield",
    "why": "Bit-coded active alarms"
   }
  ],
  "enable": "With COM MODE = BACNET, AV 1 Remote Enable (or the HEAT EN binary input, whichever comes first) enables preheat. The emergency shutdown input must be wired as a normally closed 24 VAC contact; when it opens all outputs drop and an alarm is raised.",
  "heartbeat": null,
  "remote_sensors": null,
  "setup": [
   "COMM CONFIG screens: COM MODE = BACNET (choices BACNET, EBUS, S-ALONE; default S-ALONE).",
   "MAC address 0-128, default 0.",
   "Device ID start 0-30000, default 15000.",
   "MS/TP baud 9600, 19200, 38400, 57600 or 76800; default 38400."
  ],
  "gotchas": [
   "AV 1-3 are volatile; the BAS must rewrite them after a power loss or reset.",
   "Default MAC address is 0; change it if another device already uses 0.",
   "A high leaving air temperature alarm shuts the heat off and needs a manual reset."
  ]
 },
 "points": [
  {
   "type": "AI",
   "instance": 1,
   "name": "Active Controlling Setpoint",
   "description": "Leaving air setpoint now in use",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 2,
   "name": "Number of Heat Stages On",
   "description": "Fixed heat stages running",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 3,
   "name": "Modulating Output Position",
   "description": "Modulating heat output",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 4,
   "name": "All Alarms Bitfield",
   "description": "Bit-coded alarm status",
   "units": "",
   "access": "R",
   "states": "Bits: 1 BadLeavingAir1, 2 BadLeavingAir2, 3 LowLeavingAir, 4 HighLeavingAir, 6 BadEnteringAir, 7 CommAlarm, 8 ShutDownAlarm (0 and 5 reserved)"
  },
  {
   "type": "AI",
   "instance": 5,
   "name": "Entering Air Temperature",
   "description": "Entering air temperature",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 6,
   "name": "Leaving Air Temp Sensor 1",
   "description": "Leaving air sensor 1 (LAT1)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 7,
   "name": "Leaving Air Temp Sensor 2",
   "description": "Leaving air sensor 2 (LAT2)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 8,
   "name": "Leaving Air Average Temp",
   "description": "Average of LAT1 and LAT2",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 9,
   "name": "Reset Input Percentage",
   "description": "Setpoint reset input, percent",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "BI",
   "instance": 1,
   "name": "Enable Input Value",
   "description": "Heat enable binary input",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 2,
   "name": "Shutdown Input Value",
   "description": "Emergency shutdown binary input",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 3,
   "name": "Preheat Enable Status",
   "description": "Controller enable status",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 4,
   "name": "Alarm Relay Status",
   "description": "Alarm relay state",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 5,
   "name": "Heat 1 Relay Status",
   "description": "Heat stage 1 relay state",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 6,
   "name": "Heat 2 Relay Status",
   "description": "Heat stage 2 relay state",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 7,
   "name": "Heat 3 Relay Status",
   "description": "Heat stage 3 relay state",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 8,
   "name": "Heat 4 Relay Status",
   "description": "Heat stage 4 relay state",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 9,
   "name": "Heat 5 Relay Status",
   "description": "Heat stage 5 relay state",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 10,
   "name": "Heat 6 Relay Status",
   "description": "Heat stage 6 relay state",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 11,
   "name": "Emergency Shutdown Alarm",
   "description": "Emergency shutdown alarm",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 12,
   "name": "Leaving Air Sensor 1 Alarm",
   "description": "Leaving air sensor 1 failure",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 13,
   "name": "Leaving Air Sensor 2 Alarm",
   "description": "Leaving air sensor 2 failure",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 14,
   "name": "Low Leaving Air Temp Alarm",
   "description": "Leaving air below the low limit",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 15,
   "name": "High Leaving Air Temp Alarm",
   "description": "Leaving air above the high limit",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 16,
   "name": "Entering Air Sensor Alarm",
   "description": "Entering air sensor failure",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "AV",
   "instance": 1,
   "name": "Remote Enable",
   "description": "Preheat enable from the BAS (volatile)",
   "units": "",
   "access": "W",
   "states": "0=Disabled, 1=Enabled"
  },
  {
   "type": "AV",
   "instance": 2,
   "name": "Remote Leaving Air Setpoint",
   "description": "Leaving air setpoint from the BAS, 35-90 °F (volatile)",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 3,
   "name": "Remote Entering Air Setpoint",
   "description": "Entering air enable setpoint from the BAS, -40 to 90 °F (volatile)",
   "units": "°F",
   "access": "W",
   "states": ""
  }
 ],
 "page": "https://easybacnet.com/bacnet-points-lists/aaon/preheat-x",
 "note": "Re-typed from the manufacturer's public documentation (see source). Point availability varies by firmware and options; verify against the live device."
}
