{
  "spec_version": 1,
  "slug": "belimo-air-water-actuator",
  "manufacturer": "Belimo",
  "model": "Air/water actuators ..M(C)24A-MOD, ..R24A-MOD, ..V(K)24A-MOD, ..F24A-MOD, ..RF24A-MOD, ..H24A-MOD",
  "category": "HVAC controller",
  "supplier_url": "https://www.belimo.com/mam/general-documents/system_integration/Modbus/belimo_Modbus-Register_AirWater_V3_8_en-gb.pdf",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "LowFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "None",
      "baud_rate": 38400,
      "data_bits": 8,
      "stop_bits": 2
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 0,
      "count": 1,
      "name": "Setpoint",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "RW",
      "description": "Setpoint for the actuator, scaled between Min (register 105) and Max (register 106). Range 0...10000. Default 0."
    },
    {
      "address": 1,
      "count": 1,
      "name": "Override control",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = none (default), 1 = open, 2 = close, 3 = min, 4 = mid, 5 = max, 6 = fast open, 7 = fast close. Overrides the setpoint with the defined value."
    },
    {
      "address": 2,
      "count": 1,
      "name": "Command",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = none (default), 1 = adaption, 2 = test, 3 = sync, 4 = reset. After the command is sent the register returns to none; reset clears the malfunction and service information in register 104."
    },
    {
      "address": 3,
      "count": 1,
      "name": "Actuator type",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = actuator not connected, 1 = air / water, 2 = VAV / EPIV, 3 = fire, 4 = energy valve, 5 = 6-way EPIV."
    },
    {
      "address": 4,
      "count": 1,
      "name": "Relative position",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Range 0...10000."
    },
    {
      "address": 5,
      "count": 1,
      "name": "Absolute position",
      "data_type": "UInt16",
      "units": "°",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Degrees for actuators with rotary movement, millimetres for actuators with linear movement."
    },
    {
      "address": 8,
      "count": 1,
      "name": "Sensor 1 value",
      "data_type": "UInt16",
      "units": "mV",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Millivolts when sensor type 1 (register 107) is active, ohms for passive_1K / passive_20K, 0 / 1 for a switch, degrees Celsius or Fahrenheit x10 for the PT1000 / NI1000 / NTC10K2 types. Range 0...65535."
    },
    {
      "address": 12,
      "count": 1,
      "name": "Analog setpoint",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Setpoint in percent when the actuator is controlled by the analog signal."
    },
    {
      "address": 99,
      "count": 1,
      "name": "Bus termination",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = inactive (default), 1 = active: the 120 ohm bus termination is enabled."
    },
    {
      "address": 100,
      "count": 1,
      "name": "Series number, 1st part",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Parts 1, 2 and 4 of the four-part series number are readable; the example 00839-31324-064-008 is read as 00839 / 31324 / 008."
    },
    {
      "address": 101,
      "count": 1,
      "name": "Series number, 2nd part",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 102,
      "count": 1,
      "name": "Series number, 4th part",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 103,
      "count": 1,
      "name": "Firmware version",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Communication module firmware, e.g. 302 for version 3.02."
    },
    {
      "address": 104,
      "count": 1,
      "name": "Malfunction and service information",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Bit-coded. Bit 1 mechanical travel increased, bit 2 actuator cannot move, bit 8 internal activity, bit 9 gear train disengaged (manual override pressed), bit 10 bus watchdog triggered."
    },
    {
      "address": 105,
      "count": 1,
      "name": "Min",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "RW",
      "description": "Lower position limit, range 0...Max-20 percent. Default 0."
    },
    {
      "address": 106,
      "count": 1,
      "name": "Max",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "RW",
      "description": "Upper position limit, range Min+20...100 percent. Default 10000 (100 percent)."
    },
    {
      "address": 107,
      "count": 1,
      "name": "Sensor 1 type",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = none (default), 1 = active / hybrid, 2 = passive_1K, 3 = passive_20K, 4 = switch, 5 = PT1000_C, 6 = NI1000_C, 7 = NTC10K2_C, 8 = PT1000_F, 9 = NI1000_F, 10 = NTC10K2_F. Restart the actuator after a change for correct sensor values."
    },
    {
      "address": 108,
      "count": 1,
      "name": "Bus fail position",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = none / last setpoint (default), 1 = fast close, 2 = fast open, 3 = mid position. Becomes active when the bus watchdog (register 109) expires."
    },
    {
      "address": 109,
      "count": 1,
      "name": "Timeout for bus watchdog",
      "data_type": "UInt16",
      "units": "s",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = deactivated (default), range 0...3600 s. When a bus fail position is configured the document states a default of 120 s."
    },
    {
      "address": 118,
      "count": 1,
      "name": "Setpoint source",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = analog signal on wire 3, 1 = bus (default, setpoint from register 0)."
    },
    {
      "address": 189,
      "count": 1,
      "name": "Fail-safe bridging time",
      "data_type": "UInt16",
      "units": "s",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0...10 s. Time the actuator stays in its position after a power failure before moving to the fail-safe position. Only for electronic fail-safe actuators."
    },
    {
      "address": 190,
      "count": 1,
      "name": "Fail-safe position",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "RW",
      "description": "Position the actuator moves to after a power failure, respecting the bridging time. Range 0...10000. Only for electronic fail-safe actuators; the rotary knob must be in the tool position."
    }
  ],
  "combined_registers": [],
  "notes": "Source: Belimo 'Modbus Interface Description - Air/water Actuators, General actuators for air and water', edition 2026-05 / V3.08, manufacturer date 05.09.2023 (belimo_Modbus-Register_AirWater_V3_8_en-gb.pdf). The vendor host www.belimo.com answers automated requests with HTTP 403, so the document was read from Belimo's own regional mirror https://www.belimo.ro/mam/general-documents/system_integration/Modbus/belimo_Modbus-Register_AirWater_V3_8_en-gb.pdf (same MAM document and edition); the URL above is the canonical vendor location. Covered actuator types: ..M(C)24A-MOD, ..R24A-MOD, ..V(K)24A-MOD, ..F24A-MOD, ..RF24A-MOD and ..H24A-MOD - the spring-return, modulating and fail-safe damper and valve actuators of the air/water range. Factory Modbus settings from the document: 38400 Bd, 1-8-N-2 (8 data bits, no parity, 2 stop bits), address 1; 9600/19200/76800/115200 Bd and 1-8-N-1 / 1-8-E-1 / 1-8-O-1 are selectable, as are addresses 1...247. Addressing: the document prints 'addressed by 1..n (Register No.) or 0..n-1 (Address)' with both columns on every row; the values here are the Address column (one less than the Register No.), hence zero_based. All registers are unsigned 16-bit; there are no 32-bit values in this map, so word order only matters if a reader adds them later (Belimo stores 32-bit values LSW first, hence LowFirst). Deliberately left out: registers 6, 7, 9, 10, 11, 110 and 111-117, which the document prints as '–'. This map is not the VAV-Compact or PR map: it has no volumetric-flow or delta-pressure block, and instead carries the electronic fail-safe registers 190/191 that the other ranges do not have. Sensor 1 value is entered with the millivolt unit and no scaling because the unit and the scale follow register 107 (millivolt 1:1, ohm 1:1, switch 0/1, PT1000/NI1000/NTC10K2 in degrees x0.1)."
}
