{
 "manufacturer": "Belimo",
 "manufacturer_slug": "belimo",
 "model": "2-way EPIV V4",
 "model_slug": "epiv-2-way-v4",
 "aliases": [
  "EPIV",
  "EP..R2+BAC",
  "EP..R2+KBAC",
  "Electronic Pressure Independent Valve",
  "2-way EPIV DN 15-50"
 ],
 "equipment_type": "Pressure-independent control valve",
 "applies_to": "Belimo 2-way electronic pressure-independent valves (EPIV) version 4.2, DN 15 to 50, BACnet models EP..R2+(K)BAC.",
 "summary": "The 2-way EPIV is a characterized control valve with a built-in ultrasonic flow sensor that holds flow regardless of system pressure. Over BACnet it takes a relative setpoint on AO 1 that means either position or flow, and reports position, flow, accumulated volume, flow-body temperature, glycol content and status. The document lists BACnet MS/TP and BACnet IP settings.",
 "bacnet_transport": [
  "BACnet IP",
  "BACnet MS/TP"
 ],
 "firmware": "Application EPIV 4.2",
 "default_device_instance": 1,
 "access_inferred": false,
 "notes": [
  "The document prints access as R / W; those objects are listed here as writable (W).",
  "Flow and volume units follow MV 123 and MV 126; temperature unit follows MV 127.",
  "Sensor 1 objects (AI 20, BI 20) are out of service unless MV 220 selects the matching sensor type.",
  "Data can take up to 190 s to initialise after power-up; values read 0 until then.",
  "Value ranges depend on valve size (DN); see the product datasheet."
 ],
 "integration": {
  "summary": "Write MV 122 SpSource to Bus, pick position or flow control in MV 100, set the flow limits, then command AO 1 SpRel. Monitor AV 19 flow and AI 1 position, and use the MV 103-106 status objects and AV 140 ErrorState for alarms. If a bus fail action is set, keep rewriting AO 1 or MV 1 within the watchdog time.",
  "minimum_points": [
   {
    "ref": "AO 1",
    "name": "SpRel",
    "why": "Position or flow setpoint from the BMS"
   },
   {
    "ref": "MV 122",
    "name": "SpSource",
    "why": "Must be Bus for AO 1 to take effect"
   },
   {
    "ref": "AV 19",
    "name": "AbsFlow_UnitSel",
    "why": "Measured flow"
   },
   {
    "ref": "AI 1",
    "name": "RelPos",
    "why": "Valve position feedback"
   },
   {
    "ref": "AV 140",
    "name": "ErrorState",
    "why": "Bit-coded fault and warning flags"
   }
  ],
  "enable": "Write MV 122 SpSource = 2 (Bus); otherwise the valve follows the 0.5-10 V signal on wire 3 and AO 1 is overridden.",
  "heartbeat": "AV 130 BusWatchdog sets 5-3600 s (default 120 s). If neither AO 1 nor MV 1 is rewritten within that time, the valve moves to the MV 130 BusFailAction (default None; options Open, Close, Max, Min, Stop) and sets bit 15 in AV 140.",
  "remote_sensors": null,
  "setup": [
   "Default device instance 1.",
   "MS/TP: baud 9600-115200, default 38400; MAC address 0-127, default 1; max 32 nodes without repeater.",
   "BACnet IP: UDP port configurable, default 47808.",
   "Configure with Belimo Assistant 2; bus termination is set there and shown in BV 99."
  ],
  "gotchas": [
   "Writable objects with instance 90 and above are persistent; do not write them cyclically.",
   "Changing MV 100 ControlMode resets the valve.",
   "Vmax below 25% of nominal flow is raised to 25%.",
   "Max 5 active COV subscriptions."
  ]
 },
 "source": {
  "title": "BACnet Interface Description, 2-way EPIV, DN 15…50 (Version 4.2)",
  "doc_number": null,
  "revision_date": "2025-09 / V4.2",
  "url": "https://www.belimo.com/mam/general-documents/system_integration/BACnet/belimo_BACnet_Interface-description_2way-EPIV_V4_2_en-gb.pdf"
 },
 "points": [
  {
   "type": "AO",
   "instance": 1,
   "name": "SpRel",
   "description": "Relative setpoint: position or flow",
   "units": "%",
   "access": "C",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 6,
   "name": "SpAnalog",
   "description": "Analog setpoint when setpoint source is analog",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1,
   "name": "RelPos",
   "description": "Relative valve position",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 2,
   "name": "AbsPos",
   "description": "Absolute valve position",
   "units": "°",
   "access": "R",
   "states": ""
  },
  {
   "type": "MV",
   "instance": 122,
   "name": "SpSource",
   "description": "Setpoint source: analog wire 3 or bus AO 1",
   "units": "",
   "access": "W",
   "states": "1=Analog, 2=Bus"
  },
  {
   "type": "MV",
   "instance": 100,
   "name": "ControlMode",
   "description": "How the setpoint is interpreted",
   "units": "",
   "access": "W",
   "states": "1=Position Control, 2=Flow Control"
  },
  {
   "type": "MV",
   "instance": 1,
   "name": "Override",
   "description": "Override control of the setpoint",
   "units": "",
   "access": "W",
   "states": "1=None, 2=Open valve, 3=Close valve, 4=Minimum, 5=–, 6=Maximum, 7=Nominal, 8=–, 9=–, 10=–, 11=Motor Stop"
  },
  {
   "type": "MV",
   "instance": 120,
   "name": "Command",
   "description": "Start service/test function; returns to None",
   "units": "",
   "access": "W",
   "states": "1=None, 2=–, 3=Synchronization"
  },
  {
   "type": "MV",
   "instance": 130,
   "name": "BusFailAction",
   "description": "Action when bus watchdog expires",
   "units": "",
   "access": "W",
   "states": "1=None, 2=Open, 3=Close, 4=Max, 5=Min, 6=–, 7=Stop"
  },
  {
   "type": "AV",
   "instance": 130,
   "name": "BusWatchdog",
   "description": "Bus watchdog timeout (5-3600, default 120)",
   "units": "s",
   "access": "W",
   "states": ""
  },
  {
   "type": "BV",
   "instance": 99,
   "name": "BusTermination",
   "description": "120 Ω bus termination enabled",
   "units": "",
   "access": "R",
   "states": "0=Disabled, 1=Enabled"
  },
  {
   "type": "MV",
   "instance": 106,
   "name": "StatusActuator",
   "description": "Actuator status",
   "units": "",
   "access": "R",
   "states": "1=OK, 2=Actuator cannot move, 3=Gear train disengaged, 4=No communication to actuator"
  },
  {
   "type": "AV",
   "instance": 17,
   "name": "SpAbsFlow_UnitSel",
   "description": "Active absolute flow setpoint",
   "units": "m³/s, m³/h, l/s, l/min, l/h, gpm or cfm (MV 123)",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 10,
   "name": "RelFlow",
   "description": "Flow relative to maximum flow limit",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 19,
   "name": "AbsFlow_UnitSel",
   "description": "Measured absolute flow",
   "units": "m³/s, m³/h, l/s, l/min, l/h, gpm or cfm (MV 123)",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 90,
   "name": "Vmin",
   "description": "Minimum flow limit",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 93,
   "name": "Vmin_UnitSel",
   "description": "Minimum flow limit",
   "units": "m³/s, m³/h, l/s, l/min, l/h, gpm or cfm (MV 123)",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 94,
   "name": "Vmax",
   "description": "Maximum flow limit (25-100% of nominal)",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 97,
   "name": "Vmax_UnitSel",
   "description": "Maximum flow limit",
   "units": "m³/s, m³/h, l/s, l/min, l/h, gpm or cfm (MV 123)",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 100,
   "name": "Vnom_UnitSel",
   "description": "Nominal flow of the valve",
   "units": "m³/s, m³/h, l/s, l/min, l/h, gpm or cfm (MV 123)",
   "access": "R",
   "states": ""
  },
  {
   "type": "MV",
   "instance": 123,
   "name": "UnitSelFlow",
   "description": "Engineering unit for flow objects",
   "units": "",
   "access": "W",
   "states": "1=m³/s, 2=m³/h, 3=l/s, 4=l/min, 5=l/h, 6=gpm, 7=cfm"
  },
  {
   "type": "AV",
   "instance": 52,
   "name": "Volume_UnitSel",
   "description": "Accumulated volume",
   "units": "m³, l, gal or cf (MV 126)",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 50,
   "name": "VolumePIV_UnitSel",
   "description": "Accumulated volume as integer",
   "units": "MV 126 unit",
   "access": "R",
   "states": ""
  },
  {
   "type": "MV",
   "instance": 126,
   "name": "UnitSelVolume",
   "description": "Engineering unit for volume objects",
   "units": "",
   "access": "W",
   "states": "1=m³, 2=Litre, 3=Gallon, 4=Cubic foot"
  },
  {
   "type": "MV",
   "instance": 103,
   "name": "StatusSensor",
   "description": "Flow and temperature sensor status",
   "units": "",
   "access": "R",
   "states": "1=OK, 2=Flow measurement error, 3=Flowbody temperature not OK, 4=–, 5=Communication to flow sensor interrupted"
  },
  {
   "type": "MV",
   "instance": 104,
   "name": "StatusFlow",
   "description": "Flow status",
   "units": "",
   "access": "R",
   "states": "1=OK, 2=Actual flow exceeds nominal flow, 3=Flow with closed valve, 4=Flow setpoint cannot be reached, 5=Reverse flow"
  },
  {
   "type": "MV",
   "instance": 105,
   "name": "StatusMedia",
   "description": "Medium status",
   "units": "",
   "access": "R",
   "states": "1=OK, 2=Glycol detected, 3=Freeze warning"
  },
  {
   "type": "AV",
   "instance": 60,
   "name": "GlycolConcentration",
   "description": "Glycol concentration",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 201,
   "name": "MeterSerialNo_Part1",
   "description": "Flow meter serial number, first digits",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "PIV",
   "instance": 202,
   "name": "MeterSerialNo_Part2",
   "description": "Flow meter serial number, last digits",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 23,
   "name": "T_UnitSel",
   "description": "Flow body temperature",
   "units": "°C, K or °F (MV 127)",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 20,
   "name": "Sens1Active_Volt",
   "description": "Sensor 1 input as voltage (active sensor)",
   "units": "V",
   "access": "R",
   "states": ""
  },
  {
   "type": "BI",
   "instance": 20,
   "name": "Sens1Switch",
   "description": "Sensor 1 as switch input",
   "units": "",
   "access": "R",
   "states": "0=Inactive, 1=Active"
  },
  {
   "type": "MV",
   "instance": 127,
   "name": "UnitSelTemperature",
   "description": "Engineering unit for temperature",
   "units": "",
   "access": "W",
   "states": "1=°C, 2=K, 3=°F"
  },
  {
   "type": "MV",
   "instance": 220,
   "name": "Sens1Type",
   "description": "Sensor 1 input type (bus setpoint only)",
   "units": "",
   "access": "W",
   "states": "1=None, 2=Active volt, 3=–, 4=–, 5=Switch"
  },
  {
   "type": "AV",
   "instance": 140,
   "name": "ErrorState",
   "description": "Bit-coded error and warning flags",
   "units": "",
   "access": "R",
   "states": "Bit 0=No communication to actuator, 1=Gear train disengaged, 2=Actuator cannot move, 3=Reverse flow, 4=Flow setpoint not reached, 5=Flow with closed valve, 6=Flow actual exceeds flow nominal, 7=Flow measurement error, 9=Flowbody temperature error, 10=Communication to sensor interrupted, 11=Freeze warning, 12=Glycol detected, 15=Bus watchdog triggered"
  }
 ],
 "page": "https://easybacnet.com/bacnet-points-lists/belimo/epiv-2-way-v4",
 "note": "Re-typed from the manufacturer's public documentation (see source). Point availability varies by firmware and options; verify against the live device."
}
