{
 "manufacturer": "Siemens",
 "manufacturer_slug": "siemens",
 "model": "SINAMICS V20 inverter (Modbus RTU)",
 "model_slug": "sinamics-v20",
 "short_model": "SINAMICS V20",
 "aliases": [
  "V20",
  "6SL3210-5BB",
  "6SL3210-5BE"
 ],
 "equipment_type": "Variable frequency drive",
 "applies_to": "SINAMICS V20 basic inverters (1AC 230 V 6SL3210-5BB.. and 3AC 400 V 6SL3210-5BE..) using the built-in RS485 port with P2023 = 2 (Modbus), per operating instructions A5E34559884-006 (11/2016).",
 "summary": "Siemens' compact general-purpose inverter, with an RS485 port on the control terminals that runs USS by default and Modbus RTU when P2023 = 2. The drive exposes two holding-register blocks: a MICROMASTER-style block from 40001 with individual run/fault/direction bits and scaled measurements, and a block from 40100 with the raw control word, setpoint, status word and actual value plus scaled measurements, fault history and PID settings. This map covers both blocks except the generic parameter-access window.",
 "transport": [
  "RTU"
 ],
 "defaults": {
  "unit_id": 1,
  "baud": 9600,
  "parity": "Even",
  "data_bits": 8,
  "stop_bits": 1,
  "tcp_port": null
 },
 "addressing": {
  "convention": "Modicon",
  "note": "The mapping table prints each register twice: an 'Inverter' number starting at 0 and a 'MODBUS' number starting at 40001 (e.g. 0 = 40001, 99 = 40100). The inverter number is the value that goes into the request, so subtract 40001 from the Modicon number: control word 40100 is wire address 99."
 },
 "default_word_order": null,
 "firmware": null,
 "source": {
  "title": "SINAMICS V20 Inverter Operating Instructions",
  "doc_number": "A5E34559884-006",
  "revision_date": "2016-11",
  "url": "https://cache.industry.siemens.com/dl/files/991/109743991/att_906061/v1/V20_op_instr_1116_en-US.pdf",
  "pages": "Section 7.2 MODBUS communication pp. 170-178 (function codes p. 170-171, exception codes and basic settings pp. 172-173, mapping table pp. 174-177, scaling/BICO/F72 pp. 177-178); macro Cn011 p. 73; RS485 termination p. 165; parameter list r0052 p. 190, r0054 p. 191, P2010/P2014 p. 268, r2018 pp. 269-270, P2019 pp. 271-272, P2021-P2023 p. 273"
 },
 "notes": [
  "All values are single 16-bit registers; there are no 32-bit values in the map. Scaled values are sent as the engineering value multiplied by the table's scaling factor (e.g. 100 for 0.01 resolution), so the scale here is 1 / factor.",
  "Signed/unsigned is not printed per register; registers with a negative range in the table are INT16, the rest UINT16. Ramp times and P2000 reach raw values above 32767 (650.0 s x 100, 550.00 Hz x 100), which only fits as unsigned.",
  "Left out: 40002 Watchdog action (the manual gives no action codes), 40035 Stop/run (its on/off text order contradicts the status bit it mirrors), 40349 Hand/auto (r0807 only reports whether an external client has master control; the HAND/AUTO text is not tied to a bit value), 40013 (reserved), and the parameter-access window 40550-40559 (parameter number, index, upper/lower word) because the access procedure is not described.",
  "40003 and 40044 are the setpoint and actual value in % (factor 100); 40101 and 40111 are the same process data unscaled, where 4000 hex = 100 % of P2000.",
  "Writing a BICO register (e.g. 40014/40200 digital output, 40009/40500 PID enable) fixes that BICO input to a static 0 or 1 and drops its previous connection; reading returns the BICO output.",
  "This is the 11/2016 edition; a newer 05/2022 edition exists on the Siemens support site but its direct PDF link refused automated download, so it was not used."
 ],
 "registers": [
  {
   "table": "holding_register",
   "address": 0,
   "documented": "40001",
   "name": "Watchdog time",
   "description": "0-65535 ms.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "ms",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 2,
   "documented": "40003",
   "name": "Reference frequency",
   "description": "Setpoint in % (0.00-100.00); mirrors HSW.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3,
   "documented": "40004",
   "name": "Run enable",
   "description": "Control word bit 3.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Off",
    "1": "On"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4,
   "documented": "40005",
   "name": "Forward/reverse command",
   "description": "Control word bit 11.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Off",
    "1": "On"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 5,
   "documented": "40006",
   "name": "Start command",
   "description": "Control word bit 0.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Off",
    "1": "On"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6,
   "documented": "40007",
   "name": "Fault acknowledgement",
   "description": "Control word bit 7.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Off",
    "1": "On"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 7,
   "documented": "40008",
   "name": "PID setpoint reference",
   "description": "P2240, -200.0 to 200.0 %.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8,
   "documented": "40009",
   "name": "PID enable",
   "description": "Reads r0055.8; writes BICO P2200 statically.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Off",
    "1": "On"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 9,
   "documented": "40010",
   "name": "Current limit",
   "description": "P0640, 10.0-400.0 %.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "%",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 10,
   "documented": "40011",
   "name": "Acceleration time",
   "description": "P1120, 0.00-650.0 s (raw up to 65000).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "s",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 11,
   "documented": "40012",
   "name": "Deceleration time",
   "description": "P1121, 0.00-650.0 s (raw up to 65000).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "s",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 13,
   "documented": "40014",
   "name": "Digital output 1",
   "description": "Reads r0747.0; writes BICO P0731 statically.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "HIGH",
    "0": "LOW"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 14,
   "documented": "40015",
   "name": "Digital output 2",
   "description": "Reads r0747.1; writes BICO P0732 statically.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "HIGH",
    "0": "LOW"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 15,
   "documented": "40016",
   "name": "Reference frequency (P2000)",
   "description": "Frequency that 100 % / 4000 hex represents; 1.00-550.00 Hz.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "Hz",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 16,
   "documented": "40017",
   "name": "PID upper limit",
   "description": "P2291.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 17,
   "documented": "40018",
   "name": "PID lower limit",
   "description": "P2292.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 18,
   "documented": "40019",
   "name": "Proportional gain",
   "description": "P2280, 0.000-65.000.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 19,
   "documented": "40020",
   "name": "Integral gain",
   "description": "P2285, 0-60 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": 20,
   "documented": "40021",
   "name": "Differential gain",
   "description": "P2274, 0-60.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21,
   "documented": "40022",
   "name": "Feedback gain",
   "description": "P2269, 0.00-500.00 %.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 22,
   "documented": "40023",
   "name": "Low pass",
   "description": "P2265 feedback filter, 0.00-60.00; no unit printed.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23,
   "documented": "40024",
   "name": "Frequency output",
   "description": "r0024.",
   "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": 24,
   "documented": "40025",
   "name": "Speed",
   "description": "r0022.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "rpm",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 25,
   "documented": "40026",
   "name": "Current",
   "description": "r0027.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 26,
   "documented": "40027",
   "name": "Torque",
   "description": "r0031.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "Nm",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 27,
   "documented": "40028",
   "name": "Actual power",
   "description": "r0032.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 28,
   "documented": "40029",
   "name": "Total kWh",
   "description": "r0039 energy counter.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 29,
   "documented": "40030",
   "name": "DC bus voltage",
   "description": "r0026.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 30,
   "documented": "40031",
   "name": "Reference",
   "description": "r0020 frequency setpoint.",
   "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": 31,
   "documented": "40032",
   "name": "Rated power",
   "description": "r0206.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 32,
   "documented": "40033",
   "name": "Voltage output",
   "description": "r0025.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 33,
   "documented": "40034",
   "name": "Forward/reverse",
   "description": "Status word bit 14.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "FWD",
    "0": "REV"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 35,
   "documented": "40036",
   "name": "Run at maximum frequency",
   "description": "Status word bit 10.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "MAX",
    "0": "NO"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 36,
   "documented": "40037",
   "name": "Control mode",
   "description": "Status word bit 9.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "SERIAL",
    "0": "LOCAL"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 37,
   "documented": "40038",
   "name": "Enabled",
   "description": "Status word bit 0.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "ON",
    "0": "OFF"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 38,
   "documented": "40039",
   "name": "Ready to run",
   "description": "Status word bit 1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "READY",
    "0": "OFF"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 39,
   "documented": "40040",
   "name": "Analog input 1",
   "description": "r0754[0].",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 40,
   "documented": "40041",
   "name": "Analog input 2",
   "description": "r0754[1].",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 41,
   "documented": "40042",
   "name": "Analog output 1",
   "description": "r0774[0].",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 43,
   "documented": "40044",
   "name": "Actual frequency",
   "description": "HIW in %, -100.0 to 100.0.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 44,
   "documented": "40045",
   "name": "PID setpoint output",
   "description": "r2250.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 45,
   "documented": "40046",
   "name": "PID output",
   "description": "r2294.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 46,
   "documented": "40047",
   "name": "PID feedback",
   "description": "r2266.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 47,
   "documented": "40048",
   "name": "Digital input 1",
   "description": "r0722.0.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "HIGH",
    "0": "LOW"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 48,
   "documented": "40049",
   "name": "Digital input 2",
   "description": "r0722.1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "HIGH",
    "0": "LOW"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 49,
   "documented": "40050",
   "name": "Digital input 3",
   "description": "r0722.2.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "HIGH",
    "0": "LOW"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 50,
   "documented": "40051",
   "name": "Digital input 4",
   "description": "r0722.3.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "HIGH",
    "0": "LOW"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 53,
   "documented": "40054",
   "name": "Fault",
   "description": "Status word bit 3.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "FAULT",
    "0": "OFF"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 54,
   "documented": "40055",
   "name": "Last fault",
   "description": "r0947[0] fault number (e.g. 72 = F72).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 55,
   "documented": "40056",
   "name": "Fault 1",
   "description": "r0947[1].",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 56,
   "documented": "40057",
   "name": "Fault 2",
   "description": "r0947[2].",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 57,
   "documented": "40058",
   "name": "Fault 3",
   "description": "r0947[3].",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 58,
   "documented": "40059",
   "name": "Warning",
   "description": "Status word bit 7.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "WARN",
    "0": "OK"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 59,
   "documented": "40060",
   "name": "Last warning",
   "description": "r2110 warning number.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 60,
   "documented": "40061",
   "name": "Inverter version",
   "description": "r0018 firmware version.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 61,
   "documented": "40062",
   "name": "Inverter model",
   "description": "r0201.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 99,
   "documented": "40100",
   "name": "STW (control word 1)",
   "description": "PZD 1; bit layout of r0054.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": {
    "0": "ON/OFF1 (1 = ON, 0 = OFF1 ramp stop)",
    "1": "0 = OFF2 coast stop (1 = no OFF2)",
    "2": "0 = OFF3 fast stop (1 = no OFF3)",
    "3": "Pulse enable",
    "4": "RFG enable",
    "5": "RFG start",
    "6": "Setpoint enable",
    "7": "Fault acknowledge",
    "8": "JOG right",
    "9": "JOG left",
    "10": "Control from PLC",
    "11": "Reverse (setpoint inversion)",
    "13": "MOP up",
    "14": "MOP down",
    "15": "CDS bit 0 (Hand/Auto)"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 100,
   "documented": "40101",
   "name": "HSW (main setpoint)",
   "description": "PZD 2; 4000 hex = 100 % of P2000.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 109,
   "documented": "40110",
   "name": "ZSW (status word 1)",
   "description": "PZD 1; default source r0052 (P2019[0]).",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Inverter ready",
    "1": "Inverter ready to run",
    "2": "Inverter running",
    "3": "Inverter fault active",
    "4": "1 = OFF2 not active",
    "5": "1 = OFF3 not active",
    "6": "ON inhibit active",
    "7": "Inverter warning active",
    "8": "1 = no setpoint/actual deviation",
    "9": "PZD control",
    "10": "|f_act| >= P1082 (f_max)",
    "11": "0 = motor current/torque limit warning",
    "12": "Brake open",
    "13": "0 = motor overload",
    "14": "Motor runs right",
    "15": "0 = inverter overload"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 110,
   "documented": "40111",
   "name": "HIW (main actual value)",
   "description": "PZD 2; 4000 hex = 100 % of P2000.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 199,
   "documented": "40200",
   "name": "Digital output 1",
   "description": "Reads r0747.0; writes BICO P0731 statically.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "HIGH",
    "0": "LOW"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 200,
   "documented": "40201",
   "name": "Digital output 2",
   "description": "Reads r0747.1; writes BICO P0732 statically.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "HIGH",
    "0": "LOW"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 219,
   "documented": "40220",
   "name": "Analog output 1",
   "description": "r0774[0].",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 239,
   "documented": "40240",
   "name": "Digital input 1",
   "description": "r0722.0.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "HIGH",
    "0": "LOW"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 240,
   "documented": "40241",
   "name": "Digital input 2",
   "description": "r0722.1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "HIGH",
    "0": "LOW"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 241,
   "documented": "40242",
   "name": "Digital input 3",
   "description": "r0722.2.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "HIGH",
    "0": "LOW"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 242,
   "documented": "40243",
   "name": "Digital input 4",
   "description": "r0722.3.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "HIGH",
    "0": "LOW"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 259,
   "documented": "40260",
   "name": "Analog input 1",
   "description": "r0754[0].",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 260,
   "documented": "40261",
   "name": "Analog input 2",
   "description": "r0754[1].",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 299,
   "documented": "40300",
   "name": "Inverter model",
   "description": "r0201.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 300,
   "documented": "40301",
   "name": "Inverter version",
   "description": "r0018 firmware version.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 319,
   "documented": "40320",
   "name": "Rated power",
   "description": "r0206.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 320,
   "documented": "40321",
   "name": "Current limit",
   "description": "P0640, 10.0-400.0 %.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "%",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 321,
   "documented": "40322",
   "name": "Acceleration time",
   "description": "P1120, 0.00-650.0 s (raw up to 65000).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "s",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 322,
   "documented": "40323",
   "name": "Deceleration time",
   "description": "P1121, 0.00-650.0 s (raw up to 65000).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "s",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 323,
   "documented": "40324",
   "name": "Reference frequency (P2000)",
   "description": "1.00-650.0 Hz.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "Hz",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 339,
   "documented": "40340",
   "name": "Reference",
   "description": "r0020 frequency setpoint.",
   "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": 340,
   "documented": "40341",
   "name": "Speed",
   "description": "r0022.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "rpm",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 341,
   "documented": "40342",
   "name": "Frequency output",
   "description": "r0024.",
   "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": 342,
   "documented": "40343",
   "name": "Voltage output",
   "description": "r0025.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 343,
   "documented": "40344",
   "name": "DC bus voltage",
   "description": "r0026.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 344,
   "documented": "40345",
   "name": "Current",
   "description": "r0027.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 345,
   "documented": "40346",
   "name": "Torque",
   "description": "r0031.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "Nm",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 346,
   "documented": "40347",
   "name": "Actual power",
   "description": "r0032.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "kW",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 347,
   "documented": "40348",
   "name": "Total kWh",
   "description": "r0039 energy counter.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 399,
   "documented": "40400",
   "name": "Fault 1",
   "description": "r0947[0] fault number.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 400,
   "documented": "40401",
   "name": "Fault 2",
   "description": "r0947[1] fault number.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 401,
   "documented": "40402",
   "name": "Fault 3",
   "description": "r0947[2] fault number.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 402,
   "documented": "40403",
   "name": "Fault 4",
   "description": "r0947[3] fault number.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 403,
   "documented": "40404",
   "name": "Fault 5",
   "description": "r0947[4] fault number.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 404,
   "documented": "40405",
   "name": "Fault 6",
   "description": "r0947[5] fault number.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 405,
   "documented": "40406",
   "name": "Fault 7",
   "description": "r0947[6] fault number.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 406,
   "documented": "40407",
   "name": "Fault 8",
   "description": "r0947[7] fault number.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 407,
   "documented": "40408",
   "name": "Warning",
   "description": "r2110[0] warning number.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 498,
   "documented": "40499",
   "name": "Parameter error code",
   "description": "0-254; detail of the last failed register access.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 499,
   "documented": "40500",
   "name": "PID enable",
   "description": "Reads r0055.8; writes BICO P2200 statically.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Off",
    "1": "On"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 500,
   "documented": "40501",
   "name": "PID setpoint reference",
   "description": "P2240, -200.0 to 200.0 %.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 509,
   "documented": "40510",
   "name": "Low pass",
   "description": "P2265 feedback filter, 0.00-60.0; no unit printed.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 510,
   "documented": "40511",
   "name": "Feedback gain",
   "description": "P2269, 0.00-500.00 %.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 511,
   "documented": "40512",
   "name": "Proportional gain",
   "description": "P2280, 0.000-65.000.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 512,
   "documented": "40513",
   "name": "Integral gain",
   "description": "P2285, 0-60 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": 513,
   "documented": "40514",
   "name": "Differential gain",
   "description": "P2274, 0-60.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 514,
   "documented": "40515",
   "name": "PID upper limit",
   "description": "P2291.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 515,
   "documented": "40516",
   "name": "PID lower limit",
   "description": "P2292.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 519,
   "documented": "40520",
   "name": "PID setpoint output",
   "description": "r2250.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 520,
   "documented": "40521",
   "name": "PID feedback",
   "description": "r2266.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 521,
   "documented": "40522",
   "name": "PID output",
   "description": "r2294.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  }
 ],
 "integration": {
  "summary": "Run connection macro Cn011 (or set P0700 = 5, P1000 = 5, P2023 = 2 and power-cycle), then write the control word to 40100 and the setpoint to 40101 and poll 40110/40111 for status and actual value. 40024-40033 / 40340-40348 give scaled frequency, current, power and voltage.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 99,
    "why": "Control word: ON/OFF1, enables, fault acknowledge"
   },
   {
    "table": "holding_register",
    "address": 100,
    "why": "Main setpoint, 4000 hex = P2000"
   },
   {
    "table": "holding_register",
    "address": 109,
    "why": "Status word: ready, running, fault, warning"
   },
   {
    "table": "holding_register",
    "address": 110,
    "why": "Main actual value"
   },
   {
    "table": "holding_register",
    "address": 341,
    "why": "Output frequency in 0.01 Hz"
   },
   {
    "table": "holding_register",
    "address": 344,
    "why": "Output current in 0.01 A"
   },
   {
    "table": "holding_register",
    "address": 346,
    "why": "Actual power in 0.01 kW"
   },
   {
    "table": "holding_register",
    "address": 399,
    "why": "Latest fault number"
   }
  ],
  "enable": "Connection macro Cn011 sets P0700 = 5 (command source RS485), P1000 = 5 (setpoint RS485), P2023 = 2 (Modbus), P2010 = 6 (9600 bps), P2021 = 1, P2022 = 1000 ms, P2014 = 100 ms, P2034 = 2 (even parity) and P2035 = 1 stop bit. Power-cycle after changing P2023, waiting until the display goes blank. Baud choices P2010: 6 = 9600, 7 = 19200, 8 = 38400, 9 = 57600, 10 = 76800, 11 = 93750, 12 = 115200.",
  "watchdog": "P2014[0] USS/MODBUS telegram off time (factory 2000 ms, 100 ms with Cn011; 0 disables). F72 trips if P2014 is non-zero, process data has been received since power-up and the gap between two process-data telegrams exceeds P2014.",
  "quirks": [
   "Only FC03, FC06 and FC16; up to 125 registers per read and 123 per write.",
   "Subtract 40001 from the printed register: 40100 goes on the wire as 99.",
   "With P0700 = 5 the first process-data word must be the control word and, with P1000 = 5, the second the main setpoint (r2018 note).",
   "With FC16, writes the inverter can't perform return an exception while the other registers in the same request are still written.",
   "Failed parameter accesses answer exception 04; the detail is in 40499."
  ],
  "setup": [
   "RS485 on control terminals P+ and N-, with 0 V as reference; screened twisted pair recommended.",
   "Terminate one bus end with 120 ohm across P+/N- and the other end with a bias network (1.5 k from 10 V to P+, 120 ohm P+ to N-, 470 ohm N- to 0 V).",
   "P2021 sets the Modbus address (1-247), P2034 parity (0 none, 1 odd, 2 even), P2035 stop bits (1 or 2).",
   "P2022 Modbus reply timeout (0-10000 ms, default 1000): replies that would take longer are dropped.",
   "r2024-r2031 count good and rejected telegrams for diagnostics."
  ],
  "gotchas": [
   "The RS485 port runs USS (P2023 = 1) out of the box; nothing answers Modbus until P2023 = 2 and a power cycle.",
   "If P2023 is changed over the bus, save to EEPROM with P0971 before power-cycling or the change is lost.",
   "P2010, P2021 and P2023 keep their values through a factory reset.",
   "Before fitting the SINAMICS V20 Smart Access module to a drive that uses RS485, set P2010[1] = 12 from the BOP."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/siemens/sinamics-v20",
 "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."
}
