{
 "manufacturer": "TROX",
 "manufacturer_slug": "trox",
 "model": "BM0-D8 VAV control component (BACnet MS/TP)",
 "model_slug": "bm0-d8-vav-control-component",
 "aliases": [
  "BM0-D8",
  "BM0",
  "LMV-D3-M/B-X TR",
  "NMV-D3-M/B-X TR",
  "..MV-D3-M/B-X",
  "..MV-D3-M/B-FX",
  "TROX VAV Compact"
 ],
 "equipment_type": "VAV box controller (compact, built-in damper drive)",
 "applies_to": "TROX VAV terminal units fitted with the BM0-D8 compact control component (LMV/NMV-D3-M/B-X TR actuators).",
 "summary": "BM0-D8 is a compact VAV actuator-controller TROX fits to its VAV terminal units. It ships in Modbus RTU mode and can be switched to BACnet MS/TP with a service tool. The BACnet object list has 23 objects: relative setpoint (AO 1), override (MO 1), airflow and damper readings, min/max limits, a bus watchdog and status objects.",
 "bacnet_transport": [
  "BACnet MS/TP"
 ],
 "firmware": "BTL:0002 B:0001 (Modbus module V1.0)",
 "default_device_instance": null,
 "access_inferred": false,
 "notes": [
  "The PICS names the product \"VAV Compact ..MV-D3-M/B-X\"; the object list matches the Belimo VAV-Compact (MOD) object numbering, so it shares firmware with that Belimo product.",
  "The unit leaves the factory in Modbus RTU mode; switch it to BACnet MS/TP with a service tool before integrating.",
  "AO 1 and MO 1 are commandable (priority array).",
  "Only the inactive state texts are printed for the BIs.",
  "The airflow unit for AI 19 and AV 104 follows MV 121 UnitSelFlow (default m³/h)."
 ],
 "source": {
  "title": "Control component BM0-D8 - Installation, operation and maintenance manual",
  "doc_number": "CD10129 V2",
  "revision_date": "2026-07",
  "url": "https://www.trox.de/en/downloads/18aceabac41d9f56/BM0-D8_IOM_CD10129_V2_2026_07_GB_en.pdf"
 },
 "points": [
  {
   "type": "AI",
   "instance": 1,
   "name": "RelPos",
   "description": "Damper blade position",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 2,
   "name": "AbsPos",
   "description": "Absolute position",
   "units": "°",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 6,
   "name": "SpAnalogue",
   "description": "Analogue setpoint (when SpSource = Analogue)",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 10,
   "name": "RelFlow",
   "description": "Relative airflow",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 19,
   "name": "AbsFlow_UnitSel",
   "description": "Absolute airflow in the unit set by MV 121",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 20,
   "name": "Sens1Analogue",
   "description": "Sensor 1 analogue value",
   "units": "mV",
   "access": "R",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 1,
   "name": "SpRel",
   "description": "Relative setpoint between qvmin and qvmax (bus control)",
   "units": "%",
   "access": "C",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 97,
   "name": "Min.",
   "description": "Minimum setpoint qvmin",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 98,
   "name": "Max.",
   "description": "Maximum setpoint qvmax",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 104,
   "name": "Vnom_UnitSel",
   "description": "Nominal airflow in the unit set by MV 121",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 130,
   "name": "Bus Watchdog",
   "description": "Time until bus failure monitoring trips, 0 = off",
   "units": "s",
   "access": "W",
   "states": ""
  },
  {
   "type": "BI",
   "instance": 20,
   "name": "Sens1Switch",
   "description": "Switch status at the sensor input",
   "units": "",
   "access": "R",
   "states": "0=Switch not active"
  },
  {
   "type": "BI",
   "instance": 99,
   "name": "BusTermination",
   "description": "120 ohm terminating resistor switched on via service tool",
   "units": "",
   "access": "R",
   "states": "0=Switch not active"
  },
  {
   "type": "BI",
   "instance": 101,
   "name": "SummaryStatus",
   "description": "Summary status (MI 106 and MI 110)",
   "units": "",
   "access": "R",
   "states": "0=no error"
  },
  {
   "type": "MI",
   "instance": 100,
   "name": "InternalActivity",
   "description": "Activity status",
   "units": "",
   "access": "R",
   "states": "1=none, 2=Test, 3=Adaptation"
  },
  {
   "type": "MI",
   "instance": 106,
   "name": "StatusActuator",
   "description": "Actuator status",
   "units": "",
   "access": "R",
   "states": "1=OK, 2=Actuator cannot be moved, 3=Gear disengagement active, 4=Mechanical travel exceeded"
  },
  {
   "type": "MI",
   "instance": 110,
   "name": "StatusDevice",
   "description": "General device status",
   "units": "",
   "access": "R",
   "states": "1=OK, 2=Bus failure monitoring activated"
  },
  {
   "type": "MO",
   "instance": 1,
   "name": "Override",
   "description": "Forced command over the setpoint",
   "units": "",
   "access": "C",
   "states": "1=none, 2=OPEN, 3=CLOSED, 4=qvmin, 5=qvmid, 6=qvmax"
  },
  {
   "type": "MV",
   "instance": 120,
   "name": "Command",
   "description": "Trigger test functions",
   "units": "",
   "access": "W",
   "states": "1=none, 2=Adaptation, 3=Test, 4=Reset"
  },
  {
   "type": "MV",
   "instance": 121,
   "name": "UnitSelFlow",
   "description": "Airflow unit for AI 19 and AV 104",
   "units": "",
   "access": "W",
   "states": "1=m³/s, 2=m³/h, 3=l/s, 4=l/min, 5=l/h, 6=gpm, 7=cfm"
  },
  {
   "type": "MV",
   "instance": 122,
   "name": "SpSource",
   "description": "Setpoint source",
   "units": "",
   "access": "W",
   "states": "1=Analogue (0-10 V, 2-10 V), 2=Bus (Modbus, BACnet, MP-Bus)"
  },
  {
   "type": "MV",
   "instance": 123,
   "name": "ControlMode",
   "description": "Control mode",
   "units": "",
   "access": "W",
   "states": "1=Position control (OpenLoop), 2=Volume flow control"
  },
  {
   "type": "MV",
   "instance": 220,
   "name": "Sens1Type",
   "description": "Sensor type at the analogue input",
   "units": "",
   "access": "W",
   "states": "1=none, 2=active sensor (hybrid mode), 5=switch"
  }
 ],
 "integration": {
  "summary": "Switch the unit to BACnet MS/TP, keep MV 122 SpSource at Bus, and write the setpoint to AO 1 SpRel (0-100 % between qvmin and qvmax); MO 1 Override forces open/closed/qvmin/qvmid/qvmax. Read AI 10 or AI 19 for airflow, AI 1 for damper position and BI 101 for faults. Turn on AV 130 Bus Watchdog if the unit should fall back when the BMS stops writing.",
  "minimum_points": [
   {
    "ref": "AO 1",
    "name": "SpRel",
    "why": "Airflow setpoint between Min. and Max."
   },
   {
    "ref": "AI 19",
    "name": "AbsFlow_UnitSel",
    "why": "Measured airflow"
   },
   {
    "ref": "AI 1",
    "name": "RelPos",
    "why": "Damper position feedback"
   },
   {
    "ref": "BI 101",
    "name": "SummaryStatus",
    "why": "Overall OK / not OK alarm"
   }
  ],
  "enable": "MV 122 SpSource selects the setpoint source: 2 = Bus (factory setting), 1 = Analogue, in which case AO 1 goes out of service.",
  "heartbeat": "AV 130 Bus Watchdog (0-3600 s, factory 0 = off). When set, writes to AO 1 SpRel or MO 1 Override reset the timer; if it expires the AO 1 Relinquish_Default applies (factory 0 = qvmin) and MI 110 StatusDevice shows bus failure. In hybrid mode only MO 1 writes are monitored.",
  "remote_sensors": null,
  "setup": [
   "Factory default is Modbus RTU; change to BACnet MS/TP with a service tool (display, adjustment device or PC software).",
   "Quick addressing via the [Address] push-button is described in the manual."
  ],
  "gotchas": [
   "With AV 130 = 0 (factory) there is no bus-failure fallback.",
   "Min. (AV 97) must stay below Max. (AV 98); qvmax range is 20-100 % of nominal."
  ]
 },
 "page": "https://easybacnet.com/bacnet-points-lists/trox/bm0-d8-vav-control-component",
 "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"
}
