{
  "spec_version": 1,
  "slug": "belimo-pr-actuator",
  "manufacturer": "Belimo",
  "model": "PR actuator for butterfly valves (PR..A-BAC-..)",
  "category": "HVAC controller",
  "supplier_url": "https://www.belimo.com/mam/general-documents/system_integration/Modbus/belimo_Modbus-Register_PR_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 0 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."
    },
    {
      "address": 2,
      "count": 1,
      "name": "Command",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = none (default). Actuator service and test functions; the register returns to none after the command has been sent."
    },
    {
      "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 x0.1 for the PT1000 / NI1000 / NTC10K2 types. Range 0...65535."
    },
    {
      "address": 9,
      "count": 1,
      "name": "Sensor 2 value",
      "data_type": "UInt16",
      "units": "mV",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Same conversion rules as sensor 1, following sensor type 2 (register 114). 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": 106,
      "count": 1,
      "name": "Max",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "RW",
      "description": "Upper position limit, range Min+3000...10000 (Max has to be at least Min + 30 percent). Default 10000. This range has no Min register."
    },
    {
      "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."
    },
    {
      "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": 114,
      "count": 1,
      "name": "Sensor 2 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."
    },
    {
      "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. The actuator stays in position for this time 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 taken after a power failure, respecting the bridging time. Range 0...10000. The rotary knob must be in the tool position."
    }
  ],
  "combined_registers": [],
  "notes": "Source: Belimo 'Modbus Interface Description - PR Actuator, Rotary actuator for butterfly valves', edition 2026-01 / V3.08, manufacturer date 01.12.2023 (belimo_Modbus-Register_PR_V3_8_en-gb.pdf). www.belimo.com refuses automated downloads (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_PR_V3_8_en-gb.pdf (same MAM document and edition); the URL above is the canonical vendor location. Actuator type: PR..A-BAC-.. (butterfly valve actuators). Factory Modbus settings: 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: 'addressed by 1..n (Register No.) or 0..n-1 (Address)' with both columns on every row, so the stored values are the Address column, i.e. zero_based. This map is not the air/water actuator map: the PR range has two sensor inputs (registers 8/9 with types 107 and 114), carries only a Max limit (register 106, at least 30 percent above an implicit minimum) and no Min register (register 105 is printed as '–'), and its fail-safe registers sit at 190/191 as on the air/water range. All values are unsigned 16-bit; there are no 32-bit rows, so word order only matters if a reader later adds them (Belimo stores 32-bit values LSW first, hence LowFirst). Left out: registers 6, 7, 10, 11, 105, 110-113, 115-117, all printed as '–'. Sensor values are entered with the millivolt unit and no scaling because the unit and the scale follow the configured sensor type (millivolt 1:1, ohm 1:1, switch 0/1, temperature types x0.1)."
}
