{
 "manufacturer": "AERCO",
 "manufacturer_slug": "aerco",
 "model": "Modulex boilers with BCM and ACS / BMS II (ProtoNode RER)",
 "model_slug": "modulex-bcm-protonode",
 "aliases": [
  "Modulex",
  "MLX",
  "Modulex E8",
  "BCM",
  "ACS",
  "BMS II",
  "ProtoNode RER",
  "64084",
  "GF-129",
  "OMM-0080"
 ],
 "equipment_type": "Boiler controller and plant sequencer via ProtoNode gateway",
 "applies_to": "AERCO Modulex boilers with a BCM, up to four, plus an ACS or BMS II sequencer, read through the AERCO ProtoNode RER.",
 "summary": "The AERCO ProtoNode RER profile for four Modulex boilers with BCM controllers and one ACS or BMS II serves 54 analog values on BACnet IP or BACnet MS/TP. Each Modulex has modulation, setpoint, temperature, status and error values plus a writable requested outlet temperature and direct-drive modulation; the ACS/BMS II adds plant header values and a writable network header setpoint.",
 "bacnet_transport": [
  "BACnet IP",
  "BACnet MS/TP"
 ],
 "firmware": null,
 "default_device_instance": "Node_Offset + A-bank DIP switch value (MAC); the manual's example uses Node_Offset 50,000",
 "access_inferred": false,
 "notes": [
  "Older document (OMM-0080_0H, November 2014) for the ProtoNode RER gateway.",
  "Object IDs are fixed per profile and do not follow a formula; the ACS/BMS II IDs for Net Blr 1-4 Status differ from the C-More profiles.",
  "Modulex temperatures are held in the BCM Modbus registers as value x 10; the manual does not say whether the gateway scales them.",
  "Error code (11-Error Code): low byte is the error, high byte the device (0-7 = BMM 0-7, 255 = BCM); the manual has BCM and BMM fault tables."
 ],
 "integration": {
  "summary": "Set S0 and S1 On (S2, S3, A1 Off) for the BACnet profile with 4 Modulex and 1 ACS/BMS II, set each BCM's address DIP switches to 1-4 and the ACS/BMS II to Modbus address 128. Plant setpoint goes to AV 33 on the ACS/BMS II; each Modulex also has a writable requested outlet temperature and a direct-drive modulation value.",
  "minimum_points": [
   {
    "ref": "AV 33",
    "name": "03-Net Header Set Temp",
    "why": "Plant header setpoint via ACS/BMS II, 40-220 °F"
   },
   {
    "ref": "AV 136",
    "name": "03-Req Outlet Temp",
    "why": "Modulex 1 requested outlet temperature"
   },
   {
    "ref": "AV 137",
    "name": "04-Net Direct Drive",
    "why": "Modulex 1 modulation command, 0-100 %"
   },
   {
    "ref": "AV 141",
    "name": "08-Unit Status",
    "why": "Modulex 1 status: 1 standby, 3 fired, 5 fault"
   },
   {
    "ref": "AV 34",
    "name": "04-Header Temp",
    "why": "Header water temperature, °F"
   },
   {
    "ref": "AV 139",
    "name": "06-Flow Sens Temp",
    "why": "Modulex 1 flow (outlet) temperature"
   },
   {
    "ref": "AV 134",
    "name": "01-Act Mod Lev",
    "why": "Modulex 1 actual modulation, %"
   },
   {
    "ref": "AV 1",
    "name": "11-Error Code",
    "why": "Modulex 1 error code and faulted device"
   },
   {
    "ref": "AV 36",
    "name": "06-Display Code",
    "why": "ACS/BMS II fault bit field"
   }
  ],
  "enable": "No start/stop object. The ACS/BMS II takes the plant setpoint from AV 33 when Header Set Mode = Remote Setpt and Remote Signal = Network. Each Modulex has writable 03-Req Outlet Temp and 04-Net Direct Drive values; the manual lists the BCM setup as the same as monitor-only.",
  "heartbeat": "The BAS must write the setpoint at least three times within the ACS/BMS II Network Timeout (default 30 s, 5-240 s).",
  "remote_sensors": null,
  "setup": [
   "S0 On, S1 On, S2-S3 Off, A1 Off = BACnet IP / MS/TP profile with 1 ACS/BMS II and 4 Modulex boilers with BCMs.",
   "Device instance = Node_Offset (set in the Web Configurator) + A-bank DIP value; MS/TP MAC is 1-127 on A0-A7, baud on B0-B3.",
   "Default IP 192.168.1.24; change it in the ProtoNode web GUI.",
   "Modbus side: every AERCO unit at 9600 baud, 8 data bits, 1 stop bit, no parity.",
   "Modulex BCM address DIP switches 1-4; ACS/BMS II at Modbus address 128 through an RS-232 to RS-485 converter."
  ],
  "gotchas": [
   "Modulex point names repeat for each boiler; the boiler number is in the description.",
   "BCM temperatures are value x 10 in the Modbus registers; check scaling on the BACnet side."
  ]
 },
 "source": {
  "title": "AERCO ProtoNode Gateway User Manual (ProtoNode-RER / ProtoNode-LER), GF-129",
  "doc_number": "OMM-0080_0H",
  "revision_date": "2014-11-06",
  "url": "https://www.aerco.com/dfsmedia/0533dbba17714b1ab581ab07a4cbb521/58249-source/637395359810000000/omm-0080-0h-gf-129-protonode-ler-rer-11-06-14.pdf"
 },
 "points": [
  {
   "type": "AV",
   "instance": 31,
   "name": "01-Fire Rate Out",
   "description": "ACS/BMS II: plant fire rate output (0-100)",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 32,
   "name": "02-Header Set Temp",
   "description": "ACS/BMS II: header setpoint in use (40-220)",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 33,
   "name": "03-Net Header Set Temp",
   "description": "ACS/BMS II: network header setpoint (40-220)",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 34,
   "name": "04-Header Temp",
   "description": "ACS/BMS II: header temperature (40-220)",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 35,
   "name": "05-Outside Air Temp",
   "description": "ACS/BMS II: outdoor air temperature (-60 to 120)",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 36,
   "name": "06-Display Code",
   "description": "ACS/BMS II: fault/message bit field",
   "units": "",
   "access": "R",
   "states": "Bit 0=Outside air sensor error, Bit 1=Header sensor error, Bit 2=Interlock 1 error, Bit 3=Interlock 2 error, Bit 4=Indoor air/return sensor error, Bit 5=4-20 mA input error"
  },
  {
   "type": "AV",
   "instance": 37,
   "name": "07-Num Boilers Fired",
   "description": "ACS/BMS II: number of boilers firing",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 38,
   "name": "08-Num Boilers Online",
   "description": "ACS/BMS II: number of boilers on line",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 39,
   "name": "09-Last Blr Fired",
   "description": "ACS/BMS II: last boiler fired",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 26,
   "name": "18-Net Blr 1 Status",
   "description": "ACS/BMS II: status of network boiler 1",
   "units": "",
   "access": "R",
   "states": "1-40=Fired and sequence number, 119=Not on line, 120=On line but not fired, 121=On line but disabled, 122=On line but faulted"
  },
  {
   "type": "AV",
   "instance": 27,
   "name": "19-Net Blr 2 Status",
   "description": "ACS/BMS II: status of network boiler 2",
   "units": "",
   "access": "R",
   "states": "1-40=Fired and sequence number, 119=Not on line, 120=On line but not fired, 121=On line but disabled, 122=On line but faulted"
  },
  {
   "type": "AV",
   "instance": 47,
   "name": "20-Net Blr 3 Status",
   "description": "ACS/BMS II: status of network boiler 3",
   "units": "",
   "access": "R",
   "states": "1-40=Fired and sequence number, 119=Not on line, 120=On line but not fired, 121=On line but disabled, 122=On line but faulted"
  },
  {
   "type": "AV",
   "instance": 49,
   "name": "21-Net Blr 4 Status",
   "description": "ACS/BMS II: status of network boiler 4",
   "units": "",
   "access": "R",
   "states": "1-40=Fired and sequence number, 119=Not on line, 120=On line but not fired, 121=On line but disabled, 122=On line but faulted"
  },
  {
   "type": "AV",
   "instance": 173,
   "name": "22-Return Temp",
   "description": "ACS/BMS II: return temperature",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 134,
   "name": "01-Act Mod Lev",
   "description": "Modulex 1: actual modulation level (0-100)",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 135,
   "name": "02-Target Setpoint",
   "description": "Modulex 1: target setpoint (32-185)",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 136,
   "name": "03-Req Outlet Temp",
   "description": "Modulex 1: requested outlet temperature setpoint (32-185)",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 137,
   "name": "04-Net Direct Drive",
   "description": "Modulex 1: direct drive modulation level command (0-100)",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 138,
   "name": "05-Mod Lev In",
   "description": "Modulex 1: modulation level from cascade manager (0-100)",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 139,
   "name": "06-Flow Sens Temp",
   "description": "Modulex 1: flow sensor temperature (14-212)",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 140,
   "name": "07-Display Code",
   "description": "Modulex 1: status and error code",
   "units": "",
   "access": "R",
   "states": "2=Standby, 8=High temp switch open, 10=Low gas pressure switch open, 18=Air flow switch open during ignition, 23=Flame loss during run, 32=Residual flame, 38=Other conditions, 42=Outlet (flow) temp sensor fault"
  },
  {
   "type": "AV",
   "instance": 1,
   "name": "11-Error Code",
   "description": "Modulex 1: error code; low byte code, high byte device",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 141,
   "name": "08-Unit Status",
   "description": "Modulex 1: unit status",
   "units": "",
   "access": "R",
   "states": "1=Standby, 3=Fired, 5=Fault"
  },
  {
   "type": "AV",
   "instance": 2,
   "name": "09-Ret Flow Temp",
   "description": "Modulex 1: return flow temperature (32-212)",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 144,
   "name": "01-Act Mod Lev",
   "description": "Modulex 2: actual modulation level (0-100)",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 145,
   "name": "02-Target Setpoint",
   "description": "Modulex 2: target setpoint (32-185)",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 146,
   "name": "03-Req Outlet Temp",
   "description": "Modulex 2: requested outlet temperature setpoint (32-185)",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 147,
   "name": "04-Net Direct Drive",
   "description": "Modulex 2: direct drive modulation level command (0-100)",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 148,
   "name": "05-Mod Lev In",
   "description": "Modulex 2: modulation level from cascade manager (0-100)",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 149,
   "name": "06-Flow Sens Temp",
   "description": "Modulex 2: flow sensor temperature (14-212)",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 150,
   "name": "07-Display Code",
   "description": "Modulex 2: status and error code",
   "units": "",
   "access": "R",
   "states": "2=Standby, 8=High temp switch open, 10=Low gas pressure switch open, 18=Air flow switch open during ignition, 23=Flame loss during run, 32=Residual flame, 38=Other conditions, 42=Outlet (flow) temp sensor fault"
  },
  {
   "type": "AV",
   "instance": 4,
   "name": "11-Error Code",
   "description": "Modulex 2: error code; low byte code, high byte device",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 151,
   "name": "08-Unit Status",
   "description": "Modulex 2: unit status",
   "units": "",
   "access": "R",
   "states": "1=Standby, 3=Fired, 5=Fault"
  },
  {
   "type": "AV",
   "instance": 5,
   "name": "09-Ret Flow Temp",
   "description": "Modulex 2: return flow temperature (32-212)",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 18,
   "name": "01-Act Mod Lev",
   "description": "Modulex 3: actual modulation level (0-100)",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 19,
   "name": "02-Target Setpoint",
   "description": "Modulex 3: target setpoint (32-185)",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 20,
   "name": "03-Req Outlet Temp",
   "description": "Modulex 3: requested outlet temperature setpoint (32-185)",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 21,
   "name": "04-Net Direct Drive",
   "description": "Modulex 3: direct drive modulation level command (0-100)",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 22,
   "name": "05-Mod Lev In",
   "description": "Modulex 3: modulation level from cascade manager (0-100)",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 23,
   "name": "06-Flow Sens Temp",
   "description": "Modulex 3: flow sensor temperature (14-212)",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 24,
   "name": "07-Display Code",
   "description": "Modulex 3: status and error code",
   "units": "",
   "access": "R",
   "states": "2=Standby, 8=High temp switch open, 10=Low gas pressure switch open, 18=Air flow switch open during ignition, 23=Flame loss during run, 32=Residual flame, 38=Other conditions, 42=Outlet (flow) temp sensor fault"
  },
  {
   "type": "AV",
   "instance": 7,
   "name": "11-Error Code",
   "description": "Modulex 3: error code; low byte code, high byte device",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 25,
   "name": "08-Unit Status",
   "description": "Modulex 3: unit status",
   "units": "",
   "access": "R",
   "states": "1=Standby, 3=Fired, 5=Fault"
  },
  {
   "type": "AV",
   "instance": 8,
   "name": "09-Ret Flow Temp",
   "description": "Modulex 3: return flow temperature (32-212)",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 28,
   "name": "01-Act Mod Lev",
   "description": "Modulex 4: actual modulation level (0-100)",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 29,
   "name": "02-Target Setpoint",
   "description": "Modulex 4: target setpoint (32-185)",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 30,
   "name": "03-Req Outlet Temp",
   "description": "Modulex 4: requested outlet temperature setpoint (32-185)",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 42,
   "name": "04-Net Direct Drive",
   "description": "Modulex 4: direct drive modulation level command (0-100)",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 43,
   "name": "05-Mod Lev In",
   "description": "Modulex 4: modulation level from cascade manager (0-100)",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 44,
   "name": "06-Flow Sens Temp",
   "description": "Modulex 4: flow sensor temperature (14-212)",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 45,
   "name": "07-Display Code",
   "description": "Modulex 4: status and error code",
   "units": "",
   "access": "R",
   "states": "2=Standby, 8=High temp switch open, 10=Low gas pressure switch open, 18=Air flow switch open during ignition, 23=Flame loss during run, 32=Residual flame, 38=Other conditions, 42=Outlet (flow) temp sensor fault"
  },
  {
   "type": "AV",
   "instance": 10,
   "name": "11-Error Code",
   "description": "Modulex 4: error code; low byte code, high byte device",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 46,
   "name": "08-Unit Status",
   "description": "Modulex 4: unit status",
   "units": "",
   "access": "R",
   "states": "1=Standby, 3=Fired, 5=Fault"
  },
  {
   "type": "AV",
   "instance": 11,
   "name": "09-Ret Flow Temp",
   "description": "Modulex 4: return flow temperature (32-212)",
   "units": "°F",
   "access": "R",
   "states": ""
  }
 ],
 "page": "https://easybacnet.com/bacnet-points-lists/aerco/modulex-bcm-protonode",
 "note": "Re-typed from the manufacturer's public documentation (see source). Point availability varies by firmware and options; verify against the live device."
}
