{
 "manufacturer": "Danfoss VACON",
 "manufacturer_slug": "vacon",
 "model": "VACON 100 family (built-in Modbus RTU / Modbus TCP)",
 "model_slug": "vacon-100",
 "short_model": "VACON 100",
 "aliases": [
  "VACON 100 INDUSTRIAL",
  "VACON 100 FLOW",
  "VACON 100 HVAC",
  "VACON 100 X",
  "VACON0100"
 ],
 "equipment_type": "Variable frequency drive",
 "applies_to": "VACON 100 INDUSTRIAL, FLOW, HVAC and 100 X drives using the built-in RS-485 Modbus RTU or Ethernet Modbus TCP/UDP (manual DPD00156D); application IDs per the VACON 100 INDUSTRIAL application guide DPD00927L (FW0072V037).",
 "summary": "Danfoss VACON's general purpose and flow-application variable frequency drive family, with Modbus RTU on the RS-485 terminals and Modbus TCP/UDP on the Ethernet port as standard. Fieldbus process data sits at 2001-2011 (control word, speed reference, process data in) and 2101-2111 (status word, actual speed, eight monitoring values), and every application parameter or monitor can be read directly by its ID number. This map covers the process data, key monitoring IDs, control-place parameters and the Modbus RTU/TCP settings.",
 "transport": [
  "RTU",
  "TCP"
 ],
 "defaults": {
  "unit_id": 1,
  "baud": 9600,
  "parity": "Even",
  "data_bits": null,
  "stop_bits": null,
  "tcp_port": null
 },
 "addressing": {
  "convention": "1-based",
  "note": "The manual states that addresses in Modbus messages start at zero and prints its register map 1-based: its write example sends starting address 07D0h (2000) for control word 2001, and its read example sends 0836h (2102) for register 2103. So subtract 1 from every printed number; application ID n is register n and wire address n-1 (ID 172 -> 171). Coils 0001-0018 are 1-based too (coil 1 = wire 0), and discrete inputs printed 10001-10008 are Modicon-style references for wire 0-7."
 },
 "default_word_order": "ABCD",
 "firmware": "Application IDs per VACON 100 INDUSTRIAL software FW0072V037 (application guide DPD00927L)",
 "source": {
  "title": "VACON 100 INDUSTRIAL / FLOW / HVAC / 100 X AC drives - Modbus TCP/UDP and Modbus RTU User Manual",
  "doc_number": "DPD00156D",
  "revision_date": "2016-11-30",
  "url": "https://assets.danfoss.com/documents/270144/BC361182856709en-000401.pdf",
  "pages": "Modbus manual (printed page numbers): RTU/TCP data pp. 8-9; RTU parameters Tables 5-11 pp. 23-26; TCP parameters Tables 12-14 pp. 27-29; data addresses and functions 6.1-6.2 p. 30; coils/discrete inputs Tables 16-18 p. 31; holding register map Table 19 p. 32; application IDs 6.3.5 p. 33; process data Tables 21-22 pp. 34-35; ID map p. 35-36; examples 6.5 pp. 42-43; quick setup p. 48; process data defaults Table 50 p. 49; control/status words Tables 51-54 pp. 50-52. Application IDs from 'VACON 100 INDUSTRIAL Application Guide' AB275637269262en-000201 / DPD00927L (2023-08), https://assets.danfoss.com/documents/317031/AB275637269262en-000901.pdf: quick setup parameters pp. 32-33, monitoring Tables 17-28 pp. 66-70, fieldbus data Tables 61-62 pp. 91-92, P3.9.1.6 ID 733, fault 53 section 12.3.110"
 },
 "notes": [
  "Register numbers are as the manual prints them (1-based); see addressing. The same values can be read as holding registers (FC03) or input registers (FC04) at the same address; only the holding-register side is listed.",
  "Application IDs can be read directly: ID n is register n for IDs 1-2000 and 2200-10000 (registers 2001-2199 are process data). Up to 30 consecutive IDs per request, and the whole request fails if any ID in the range does not exist - use the ID map (10501-10530 IDs, 10601-10630 values; 10701-10760 for 32-bit) to gather scattered IDs.",
  "32-bit copies of IDs live at 20001-40000 (manual: wire address = 20000 + (ID - 1) x 2, e.g. ID 864 FB status word at 21726) and of process data at 2051-2086 / 2151-2186, high word first. Only the 32-bit status word is listed.",
  "Monitoring IDs (1-1495) and parameter IDs (103-888) come from the VACON 100 INDUSTRIAL application guide; scales follow its Scale column and the Modbus manual's rule that values are sent without decimals (2500 = 25.00 Hz). VACON 100 FLOW and HVAC use their own application guides - check IDs before use.",
  "Process data out 1-8 (2104-2111) are typed UINT16 because the INDUSTRIAL guide says FB DataOut values are sent in unsigned 16-bit format. Signedness is not stated for direct ID reads: frequency, speed, torque, power, temperature, PID output and analog levels read by ID are typed INT16, since their positive ranges fit below 32768 (so INT16 decodes them the same as UINT16) and unit temperature can go below 0 °C. FB actual speed (2103) is INT16 because ID 888 FB sign of actual can make it negative.",
  "Process data out 1-8 (2104-2111) are the defaults of P3.6.1-P3.6.8 (IDs 852-859); if those are changed, the registers carry other values. Process data in 1-8 (2004-2011) are application-defined (e.g. torque reference when ID 64 = ProcessDataIn1) and are not listed.",
  "Motor current: the Modbus manual says ID 3 / process data out 3 scale depends on drive size (always 0.1 A on 100 HVAC), while the INDUSTRIAL guide's default table shows 0.1 A. Those two registers are left unscaled; read ID 45 for a fixed 0.1 A value.",
  "Left out: operation-day, energy and fault-history counters (40001-40568) and the per-connection timeout register 40501. Their tables pair holding register 40001 with input register 1, which contradicts the 1-based numbering the rest of the map uses, so the wire address is ambiguous. ID 2382 communication status (combined good/bad counter shown as 0.0-99.999) is also left out.",
  "Left out: minimum/maximum frequency (IDs 101/102; the guide prints 0.00 and 320.0, so the decimals are unclear), motor nominal values with drive-dependent ranges, digital-input status IDs (bit layout not given) and motor shaft power in kW (ID 73/98, unit kW or hp).",
  "ID 733 lists a range of 0-5 but only describes values 0-4.",
  "ID 2380 stop bits defaults to 3 (2 stop bits) in the parameter table while the manual's parity table pairs even parity with 1 stop bit; read it back from the drive."
 ],
 "registers": [
  {
   "table": "coil",
   "address": 0,
   "documented": "0001",
   "name": "Run/stop (control word bit 0)",
   "description": "Modbus TCP/UDP only.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "coil",
   "address": 1,
   "documented": "0002",
   "name": "Direction (control word bit 1)",
   "description": "Modbus TCP/UDP only.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "coil",
   "address": 2,
   "documented": "0003",
   "name": "Fault reset (control word bit 2)",
   "description": "Modbus TCP/UDP only.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "coil",
   "address": 16,
   "documented": "0017",
   "name": "Reset operation days trip counter",
   "description": "Write 1 to clear. Modbus TCP/UDP only.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "coil",
   "address": 17,
   "documented": "0018",
   "name": "Reset energy trip counter",
   "description": "Write 1 to clear. Modbus TCP/UDP only.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "discrete_input",
   "address": 0,
   "documented": "10001",
   "name": "Ready (status word bit 0)",
   "description": "Modbus TCP/UDP only.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "discrete_input",
   "address": 1,
   "documented": "10002",
   "name": "Run (status word bit 1)",
   "description": "Modbus TCP/UDP only.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "discrete_input",
   "address": 2,
   "documented": "10003",
   "name": "Direction (status word bit 2)",
   "description": "Modbus TCP/UDP only.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "discrete_input",
   "address": 3,
   "documented": "10004",
   "name": "Fault (status word bit 3)",
   "description": "Modbus TCP/UDP only.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "discrete_input",
   "address": 4,
   "documented": "10005",
   "name": "Alarm (status word bit 4)",
   "description": "Modbus TCP/UDP only.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "discrete_input",
   "address": 5,
   "documented": "10006",
   "name": "At reference (status word bit 5)",
   "description": "Modbus TCP/UDP only.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "discrete_input",
   "address": 6,
   "documented": "10007",
   "name": "Zero speed (status word bit 6)",
   "description": "Modbus TCP/UDP only.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "discrete_input",
   "address": 7,
   "documented": "10008",
   "name": "Flux ready (status word bit 7)",
   "description": "Modbus TCP/UDP only.",
   "data_type": "BIT",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 0,
   "documented": "ID 1 (register 1)",
   "name": "Output frequency",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 1,
   "documented": "ID 2 (register 2)",
   "name": "Motor speed",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "rpm",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2,
   "documented": "ID 3 (register 3)",
   "name": "Motor current",
   "description": "Scale varies with drive size; use ID 45 for fixed 0.1 A.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3,
   "documented": "ID 4 (register 4)",
   "name": "Motor torque",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4,
   "documented": "ID 5 (register 5)",
   "name": "Motor shaft power",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 5,
   "documented": "ID 6 (register 6)",
   "name": "Motor voltage",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6,
   "documented": "ID 7 (register 7)",
   "name": "DC link voltage",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 7,
   "documented": "ID 8 (register 8)",
   "name": "Unit temperature",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8,
   "documented": "ID 9 (register 9)",
   "name": "Motor temperature",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 17,
   "documented": "ID 18 (register 18)",
   "name": "Torque reference",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 22,
   "documented": "ID 23 (register 23)",
   "name": "PID1 output",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23,
   "documented": "ID 24 (register 24)",
   "name": "PID1 status",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Stopped",
    "1": "Running",
    "3": "Sleep mode",
    "4": "In dead band"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 24,
   "documented": "ID 25 (register 25)",
   "name": "Frequency reference",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 36,
   "documented": "ID 37 (register 37)",
   "name": "Last active fault code",
   "description": "53 = fieldbus communication fault.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 42,
   "documented": "ID 43 (register 43)",
   "name": "Drive status word",
   "description": "Bit numbers as printed in the application guide.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "1": "Ready",
    "2": "Run",
    "3": "Fault",
    "6": "Run enable",
    "7": "Alarm active",
    "10": "DC current in stop",
    "11": "DC brake active",
    "12": "Run request",
    "13": "Motor regulator active",
    "15": "Brake chopper active"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 44,
   "documented": "ID 45 (register 45)",
   "name": "Motor current 1 decimal",
   "description": "Fixed 0.1 A resolution regardless of drive size.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 58,
   "documented": "ID 59 (register 59)",
   "name": "Analog input 1",
   "description": "Slot A.1 by default.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 59,
   "documented": "ID 60 (register 60)",
   "name": "Analog input 2",
   "description": "Slot A.2 by default.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 73,
   "documented": "ID 74 (register 74)",
   "name": "Last active alarm code",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 76,
   "documented": "ID 77 (register 77)",
   "name": "Motor regulator status",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Current limit (motor)",
    "1": "Current limit (generator)",
    "2": "Torque limit (motor)",
    "3": "Torque limit (generator)",
    "4": "Overvoltage control",
    "5": "Undervoltage control",
    "6": "Power limit (motor)",
    "7": "Power limit (generator)"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 77,
   "documented": "ID 78 (register 78)",
   "name": "Ready status",
   "description": "Conditions needed before the drive is ready.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Run enable high",
    "1": "No fault active",
    "2": "Charge switch closed",
    "3": "DC voltage within limits",
    "4": "Power manager initialised",
    "5": "Power unit not blocking start",
    "6": "System software not blocking start"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 88,
   "documented": "ID 89 (register 89)",
   "name": "Application status word 1",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Interlock 1",
    "1": "Interlock 2",
    "3": "Ramp 2 active",
    "4": "Mechanical brake control",
    "5": "I/O A control active",
    "6": "I/O B control active",
    "7": "Fieldbus control active",
    "8": "Local control active",
    "9": "PC control active",
    "10": "Preset frequencies active",
    "11": "Jogging active",
    "12": "Fire mode active",
    "13": "Motor preheat active",
    "14": "Quick stop active",
    "15": "Drive stopped from keypad"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 94,
   "documented": "ID 95 (register 95)",
   "name": "Last active fault ID",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 102,
   "documented": "ID 103 (register 103)",
   "name": "Acceleration time 1",
   "description": "0.1-300.0 s.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "s",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 103,
   "documented": "ID 104 (register 104)",
   "name": "Deceleration time 1",
   "description": "0.1-300.0 s.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "s",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 121,
   "documented": "ID 122 (register 122)",
   "name": "Fieldbus control reference selection",
   "description": "Reference used in fieldbus control place (default 3).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Preset frequency 0",
    "2": "Keypad reference",
    "3": "Fieldbus",
    "4": "AI1",
    "5": "AI2",
    "6": "AI1+AI2",
    "7": "PID reference",
    "8": "Motor potentiometer",
    "9": "Joystick reference",
    "10": "Jogging reference",
    "11": "Block Out.1",
    "12": "Block Out.2",
    "13": "Block Out.3",
    "14": "Block Out.4",
    "15": "Block Out.5",
    "16": "Block Out.6",
    "17": "Block Out.7",
    "18": "Block Out.8",
    "19": "Block Out.9",
    "20": "Block Out.10"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 171,
   "documented": "ID 172 (register 172)",
   "name": "Remote control place",
   "description": "Set 1 so the drive takes start/stop from fieldbus.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "I/O control",
    "1": "Fieldbus control"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 210,
   "documented": "ID 211 (register 211)",
   "name": "Local/remote",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Remote",
    "1": "Local"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 504,
   "documented": "ID 505 (register 505)",
   "name": "Start function",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Ramping",
    "1": "Flying start"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 505,
   "documented": "ID 506 (register 506)",
   "name": "Stop function",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Coasting",
    "1": "Ramping"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 732,
   "documented": "ID 733 (register 733)",
   "name": "Response to fieldbus communication fault",
   "description": "Default 3.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "No action",
    "1": "Alarm",
    "2": "Alarm + preset fault frequency",
    "3": "Fault (stop according to stop function)",
    "4": "Fault (stop by coasting)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 887,
   "documented": "ID 888 (register 888)",
   "name": "FB sign of actual",
   "description": "Sign used for FB actual speed (2103).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Positive",
    "1": "Actual direction",
    "2": "Follow reference"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 1494,
   "documented": "ID 1495 (register 1495)",
   "name": "Frequency reference source",
   "description": "Where the active frequency reference comes from.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "PC",
    "1": "Preset freqs",
    "2": "Keypad reference",
    "3": "Fieldbus",
    "4": "AI1",
    "5": "AI2",
    "6": "AI1+AI2",
    "7": "PID controller",
    "8": "Motor potentiometer",
    "9": "Joystick",
    "10": "Jogging",
    "100": "Not defined",
    "101": "Alarm, preset freq",
    "102": "Auto-cleaning"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2000,
   "documented": "2001",
   "name": "FB control word",
   "description": "Low 16 bits of the 32-bit fieldbus control word.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": {
    "0": "Start/stop: 1 = run request, 0 = stop request",
    "1": "Direction: 0 = forward, 1 = reverse",
    "2": "Fault reset on rising edge 0->1 (faults, alarms, infos)",
    "3": "Stop mode 1: 1 = override stop mode to coasting",
    "4": "Stop mode 2: 1 = override stop mode to ramping",
    "5": "Quick ramp time: 1 = shorter deceleration ramp (not on 100 HVAC)",
    "6": "Freeze setpoint: 1 = ignore changes to FB speed reference",
    "7": "Setpoint to zero: 1 = fieldbus setpoint forced to 0 (not on 100 HVAC)",
    "8": "Request fieldbus control: 1 = control place forced to fieldbus",
    "9": "Request fieldbus reference: 1 = reference source forced to fieldbus",
    "10": "Jogging 1 (not on 100 HVAC)",
    "11": "Jogging 2 (not on 100 HVAC)",
    "12": "Quick stop / emergency stop (not on 100 HVAC)"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2001,
   "documented": "2002",
   "name": "FB general control word",
   "description": "Application-specific bits; write 0 if unused.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2002,
   "documented": "2003",
   "name": "FB speed reference",
   "description": "0-10000 = 0.00-100.00 % between min and max frequency.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2100,
   "documented": "2101",
   "name": "FB status word",
   "description": "Low 16 bits of the 32-bit fieldbus status word.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Ready: drive ready to run",
    "1": "Run: motor running",
    "2": "Direction: 0 = clockwise, 1 = counterclockwise",
    "3": "Fault active",
    "4": "Alarm active",
    "5": "At reference speed",
    "6": "At zero speed",
    "7": "Flux ready (motor magnetized)"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2101,
   "documented": "2102",
   "name": "FB general status word",
   "description": "Application-specific (high half of the 32-bit status word).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2102,
   "documented": "2103",
   "name": "FB actual speed",
   "description": "0.00-100.00 % between min and max frequency; sign per ID 888.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2103,
   "documented": "2104",
   "name": "Process data out 1 (output frequency)",
   "description": "Default ID 1; remap with P3.6.1 (ID 852).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2104,
   "documented": "2105",
   "name": "Process data out 2 (motor speed)",
   "description": "Default ID 2; remap with ID 853.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "rpm",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2105,
   "documented": "2106",
   "name": "Process data out 3 (motor current)",
   "description": "Default ID 3 (45 on 100 HVAC); scale varies by drive size.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2106,
   "documented": "2107",
   "name": "Process data out 4 (motor torque)",
   "description": "Default ID 4; remap with ID 855.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2107,
   "documented": "2108",
   "name": "Process data out 5 (motor power)",
   "description": "Default ID 5; remap with ID 856.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2108,
   "documented": "2109",
   "name": "Process data out 6 (motor voltage)",
   "description": "Default ID 6; remap with ID 857.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2109,
   "documented": "2110",
   "name": "Process data out 7 (DC link voltage)",
   "description": "Default ID 7; remap with ID 858.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2110,
   "documented": "2111",
   "name": "Process data out 8 (active fault code)",
   "description": "Default ID 37; remap with ID 859.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2150,
   "documented": "2151-2152",
   "name": "FB status word (32-bit)",
   "description": "Full 32-bit status word incl. control place bits 29-31.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Ready: drive ready to run",
    "1": "Run: motor running",
    "2": "Direction: 0 = clockwise, 1 = counterclockwise",
    "3": "Fault active",
    "4": "Alarm active",
    "5": "At reference speed",
    "6": "At zero speed",
    "7": "Flux ready (motor magnetized)",
    "29": "Control place, read with bits 30-31: only bit 31 set = fieldbus, only bit 30 = keypad, bits 30+31 = PC tool, only bit 29 = I/O terminals",
    "30": "Control place (see bit 29)",
    "31": "Control place (see bit 29)"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2207,
   "documented": "ID 2208 (register 2208)",
   "name": "RS-485 protocol",
   "description": "Must be 1 for Modbus RTU.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "No protocol",
    "1": "Modbus RTU",
    "2": "BACnet MSTP",
    "3": "N2"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2319,
   "documented": "ID 2320 (register 2320)",
   "name": "RTU slave address",
   "description": "1-247, default 1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2320,
   "documented": "ID 2321 (register 2321)",
   "name": "RTU communication time-out",
   "description": "0 = not used; default 10 s.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "s",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2377,
   "documented": "ID 2378 (register 2378)",
   "name": "RTU baud rate",
   "description": "Coded selection; default code 6 = 9600 baud.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2378,
   "documented": "ID 2379 (register 2379)",
   "name": "RTU parity type",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Even",
    "1": "Odd",
    "2": "None"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2379,
   "documented": "ID 2380 (register 2380)",
   "name": "RTU stop bits",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "1 stop bit",
    "2": "1.5 stop bits",
    "3": "2 stop bits"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2380,
   "documented": "ID 2381 (register 2381)",
   "name": "RTU fieldbus protocol status",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Init",
    "1": "Stopped",
    "2": "Operational",
    "3": "Faulted"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2382,
   "documented": "ID 2383 (register 2383)",
   "name": "RTU illegal functions",
   "description": "Count of exception 01h replies.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2383,
   "documented": "ID 2384 (register 2384)",
   "name": "RTU illegal data addresses",
   "description": "Count of exception 02h replies.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2384,
   "documented": "ID 2385 (register 2385)",
   "name": "RTU illegal data values",
   "description": "Count of exception 03h replies.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2388,
   "documented": "ID 2389 (register 2389)",
   "name": "RTU last fault response",
   "description": "Last exception code sent.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2389,
   "documented": "ID 2390 (register 2390)",
   "name": "RTU control word (monitor)",
   "description": "Control word last received over RTU.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2390,
   "documented": "ID 2391 (register 2391)",
   "name": "RTU status word (monitor)",
   "description": "Status word currently sent over RTU.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2445,
   "documented": "ID 2446 (register 2446)",
   "name": "TCP connection limit",
   "description": "0-3 simultaneous Modbus TCP/UDP clients, default 3.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2446,
   "documented": "ID 2447 (register 2447)",
   "name": "TCP unit identifier",
   "description": "0-255, default 255; checked on TCP and UDP.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2447,
   "documented": "ID 2448 (register 2448)",
   "name": "TCP communication time-out",
   "description": "0 = not used; default 10 s.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "s",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2448,
   "documented": "ID 2449 (register 2449)",
   "name": "TCP fieldbus protocol status",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "Stopped",
    "2": "Operational",
    "3": "Faulted"
   },
   "bits": null,
   "offset": 0
  }
 ],
 "integration": {
  "summary": "Enable Modbus RTU with ID 2208 = 1 (Modbus TCP is always on), set Remote control place ID 172 = 1, then write FB control word 2001 (1 = run) and FB speed reference 2003 (0-10000 = 0-100 % of min-max frequency) and poll 2101-2111 for status, actual speed, frequency, current and fault code. Every register number in the manual is 1-based: subtract 1 on the wire.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 2000,
    "why": "FB control word: run, direction, fault reset"
   },
   {
    "table": "holding_register",
    "address": 2002,
    "why": "FB speed reference, 0.01 % of min-max range"
   },
   {
    "table": "holding_register",
    "address": 2100,
    "why": "FB status word: ready/run/fault/alarm"
   },
   {
    "table": "holding_register",
    "address": 2103,
    "why": "Output frequency, 0.01 Hz"
   },
   {
    "table": "holding_register",
    "address": 44,
    "why": "Motor current, 0.1 A (ID 45)"
   },
   {
    "table": "holding_register",
    "address": 2109,
    "why": "DC link voltage"
   },
   {
    "table": "holding_register",
    "address": 2110,
    "why": "Active fault code"
   },
   {
    "table": "holding_register",
    "address": 171,
    "why": "ID 172 remote control place (1 = fieldbus)"
   }
  ],
  "enable": "Modbus RTU: set P5.8.1.1 RS-485 protocol (ID 2208) = Modbus RTU, after which its settings appear under P5.8.3 (slave address ID 2320, baud ID 2378, parity ID 2379, stop bits ID 2380, time-out ID 2321). Modbus TCP/UDP is always enabled; set the IP mode and address under P5.9.1. For control set Remote control place P3.2.1 (ID 172) = Fieldbus control, Local/remote (ID 211) = Remote, and leave Fieldbus control reference selection (ID 122) = 3 Fieldbus. Control word bits 8/9 can also force fieldbus control and reference.",
  "watchdog": "RTU: ID 2321 communication time-out (seconds, default 10, 0 = off). TCP/UDP: ID 2448 time-out (seconds, default 10); a connection can also set its own timeout at register 40501. The reaction is ID 733 Response to fieldbus communication fault (default 3 = fault, stop per stop function); the fault is code 53 Fieldbus communication fault.",
  "quirks": [
   "The manual's register numbers are 1-based: control word 2001 goes on the wire as 2000 (07D0h), as the manual's own write example shows; ID n is wire n-1.",
   "16-bit process data at 2001/2101 carries only the low half of the 32-bit control and status words; the full words are at 2051-2052 and 2151-2152, high word first.",
   "FB speed reference and FB actual speed are 0-10000 = 0-100.00 % of the min-to-max frequency span, not Hz (manual example: 5000 = 25.00 Hz with 0-50 Hz limits).",
   "Holding and input registers return the same data at the same address; coils and discrete inputs (control/status bits) work on Modbus TCP/UDP only.",
   "TCP unit identifier defaults to 255 and is checked on TCP as well as UDP."
  ],
  "setup": [
   "RS-485 on the standard terminal block terminals A and B (A = negative, B = positive); ground the cable shield with the supplied clamp.",
   "Set the RS-485 termination DIP switch (next to the keypad) to ON on the first and last device on the bus; biasing is built into the termination.",
   "RTU defaults: slave address 1, 9600 baud, even parity; 300 to 230400 baud supported.",
   "Ethernet: DHCP by default; switching to Fixed gives 192.168.0.10 / 255.255.0.0 / gateway 192.168.0.1. Up to three Modbus TCP/UDP connections.",
   "UDP is supported from firmware FW0072V025 (INDUSTRIAL / 100 X), FW0159V016 (FLOW) and FW0065V035 (HVAC); use UDP for cyclic process data and TCP for parameter reads/writes."
  ],
  "gotchas": [
   "Updating the control unit firmware restores defaults, which usually puts the control place back to I/O.",
   "Unused control word bits must be written as 0; on 100 HVAC bits 5, 7 and 10-12 are not supported.",
   "Reading 30 consecutive IDs fails with Illegal Data Address if any one ID in the range does not exist.",
   "Exception 04 (slave device failure) is returned for an invalid register count, as in the manual's example.",
   "Broadcast works only with function codes 06 and 16 on RTU and UDP, never on TCP."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/vacon/vacon-100",
 "address_note": "address = 0-based Modbus wire (PDU) address; documented = as printed in the source.",
 "note": "Re-typed from the manufacturer's public documentation (see source) and verified against it. Registers vary by firmware and options; verify against the live device before writing."
}
