{
  "spec_version": 1,
  "slug": "siemens-sinamics-v20",
  "manufacturer": "Siemens",
  "model": "SINAMICS V20 (V20 inverter, USS/MODBUS on RS485)",
  "category": "VFD",
  "supplier_url": "https://support.industry.siemens.com/cs/mdm/109824500?c=160470548491&dl=nl",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "Even",
      "baud_rate": 9600,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 0,
      "count": 1,
      "name": "Watchdog time",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0-65535 ms (register 40001)."
    },
    {
      "address": 1,
      "count": 1,
      "name": "Watchdog action",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0-1 (40002)."
    },
    {
      "address": 2,
      "count": 1,
      "name": "Frequency setpoint",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "RW",
      "description": "Scaling 100, range 0.00-100.00 % (40003). The manual maps it onto control word bits STW:3/STW:11."
    },
    {
      "address": 3,
      "count": 1,
      "name": "Run enable",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0-1; mapped onto STW:3 (40004)."
    },
    {
      "address": 4,
      "count": 1,
      "name": "Forward/reverse command",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0-1; mapped onto STW:11 (40005)."
    },
    {
      "address": 5,
      "count": 1,
      "name": "Start command",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0-1; mapped onto STW:0 (40006)."
    },
    {
      "address": 6,
      "count": 1,
      "name": "Fault acknowledgement",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0-1; mapped onto STW:7 (40007)."
    },
    {
      "address": 7,
      "count": 1,
      "name": "PID setpoint reference",
      "data_type": "Int16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "RW",
      "description": "Scaling 100, range -200.0 to 200.0 % (40008)."
    },
    {
      "address": 8,
      "count": 1,
      "name": "PID enable",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0-1 (40009)."
    },
    {
      "address": 9,
      "count": 1,
      "name": "Current limit",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Scaling 10, range 10.0 to 400.0 % (40010)."
    },
    {
      "address": 10,
      "count": 1,
      "name": "Acceleration time",
      "data_type": "UInt16",
      "units": "s",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "RW",
      "description": "Scaling 100, range 0.00 to 650.0 s (40011)."
    },
    {
      "address": 11,
      "count": 1,
      "name": "Deceleration time",
      "data_type": "UInt16",
      "units": "s",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "RW",
      "description": "Scaling 100, range 0.00 to 650.0 s (40012)."
    },
    {
      "address": 13,
      "count": 1,
      "name": "Digital output 1",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "HIGH/LOW (40014); mapped onto r0747.0 / P0731."
    },
    {
      "address": 14,
      "count": 1,
      "name": "Digital output 2",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "HIGH/LOW (40015); mapped onto r0747.1 / P0732."
    },
    {
      "address": 15,
      "count": 1,
      "name": "Reference frequency",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "RW",
      "description": "Scaling 100, range 1.00 to 550.00 Hz (40016)."
    },
    {
      "address": 16,
      "count": 1,
      "name": "PID upper limit",
      "data_type": "Int16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "RW",
      "description": "Scaling 100, range -200.0 to 200.0 % (40017)."
    },
    {
      "address": 17,
      "count": 1,
      "name": "PID lower limit",
      "data_type": "Int16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "RW",
      "description": "Scaling 100, range -200.0 to 200.0 % (40018)."
    },
    {
      "address": 18,
      "count": 1,
      "name": "Proportional gain",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.001,
      "offset": 0,
      "access": "RW",
      "description": "Scaling 1000, range 0.000 to 65.000 (40019)."
    },
    {
      "address": 19,
      "count": 1,
      "name": "Integral gain",
      "data_type": "UInt16",
      "units": "s",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Range 0-60 s (40020)."
    },
    {
      "address": 33,
      "count": 1,
      "name": "Forward/reverse",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "FWD/REV status bit ZSW:14 (40034)."
    },
    {
      "address": 34,
      "count": 1,
      "name": "Stop/run",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "STOP/RUN status bit ZSW:2 (40035)."
    },
    {
      "address": 35,
      "count": 1,
      "name": "Run at maximum frequency",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "MAX/NO status bit ZSW:10 (40036)."
    },
    {
      "address": 36,
      "count": 1,
      "name": "Control mode",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "SERIAL/LOCAL status bit ZSW:9 (40037)."
    },
    {
      "address": 37,
      "count": 1,
      "name": "Enabled",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "ON/OFF status bit ZSW:0 (40038)."
    },
    {
      "address": 38,
      "count": 1,
      "name": "Ready to run",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "READY/OFF status bit ZSW:1 (40039)."
    },
    {
      "address": 47,
      "count": 1,
      "name": "Digital input 1",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "HIGH/LOW (40048), r0722.0."
    },
    {
      "address": 48,
      "count": 1,
      "name": "Digital input 2",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "HIGH/LOW (40049), r0722.1."
    },
    {
      "address": 49,
      "count": 1,
      "name": "Digital input 3",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "HIGH/LOW (40050), r0722.2."
    },
    {
      "address": 50,
      "count": 1,
      "name": "Digital input 4",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "HIGH/LOW (40051), r0722.3."
    },
    {
      "address": 100,
      "count": 1,
      "name": "HSW (speed setpoint, process data)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "PZD word 2 (40101)."
    },
    {
      "address": 109,
      "count": 1,
      "name": "ZSW (status word, process data)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "PZD word 1 (40110)."
    },
    {
      "address": 110,
      "count": 1,
      "name": "HIW (actual speed, process data)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "PZD word 2 (40111)."
    },
    {
      "address": 219,
      "count": 1,
      "name": "Analog output 1",
      "data_type": "Int16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Scaling 100, range -100.0 to 100.0 % (40220)."
    },
    {
      "address": 239,
      "count": 1,
      "name": "Digital input 1 (process data)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "HIGH/LOW (40240), r0722.0; the same value as register 47."
    },
    {
      "address": 240,
      "count": 1,
      "name": "Digital input 2 (process data)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "HIGH/LOW (40241), r0722.1."
    },
    {
      "address": 241,
      "count": 1,
      "name": "Digital input 3 (process data)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "HIGH/LOW (40242), r0722.2."
    },
    {
      "address": 242,
      "count": 1,
      "name": "Digital input 4 (process data)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "HIGH/LOW (40243), r0722.3."
    },
    {
      "address": 243,
      "count": 1,
      "name": "Digital input 5 (process data)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "HIGH/LOW (40244), r0722.4; available with the optional I/O extension module."
    },
    {
      "address": 244,
      "count": 1,
      "name": "Digital input 6 (process data)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "HIGH/LOW (40245), r0722.5; available with the optional I/O extension module."
    },
    {
      "address": 259,
      "count": 1,
      "name": "Analog input 1",
      "data_type": "Int16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Scaling 100, range -300.0 to 300.0 % (40260)."
    },
    {
      "address": 260,
      "count": 1,
      "name": "Analog input 2",
      "data_type": "Int16",
      "units": "%",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Scaling 100, range -300.0 to 300.0 % (40261)."
    },
    {
      "address": 299,
      "count": 1,
      "name": "Inverter model",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Range 0-32767 (40300), r0201."
    },
    {
      "address": 300,
      "count": 1,
      "name": "Inverter version",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Scaling 100, range 0.00 to 327.67 (40301), r0018."
    },
    {
      "address": 319,
      "count": 1,
      "name": "Rated power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Scaling 100, range 0 to 327.67 kW (40320), r0206."
    },
    {
      "address": 339,
      "count": 1,
      "name": "Reference",
      "data_type": "Int16",
      "units": "Hz",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Scaling 100, range -327.68 to 327.67 Hz (40340), r0020."
    },
    {
      "address": 340,
      "count": 1,
      "name": "Speed",
      "data_type": "Int16",
      "units": "RPM",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Range -16250 to 16250 RPM (40341), r0022."
    },
    {
      "address": 341,
      "count": 1,
      "name": "Frequency output",
      "data_type": "Int16",
      "units": "Hz",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Scaling 100, range -327.68 to 327.67 Hz (40342), r0024."
    },
    {
      "address": 342,
      "count": 1,
      "name": "Voltage output",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Range 0-32767 V (40343), r0025."
    },
    {
      "address": 343,
      "count": 1,
      "name": "DC bus voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Range 0-32767 V (40344), r0026."
    },
    {
      "address": 344,
      "count": 1,
      "name": "Current, filtered",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Scaling 100, range 0 to 163.83 A (40345), r0027."
    },
    {
      "address": 345,
      "count": 1,
      "name": "Torque",
      "data_type": "Int16",
      "units": "Nm",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Scaling 100, range -325.00 to 325.00 Nm (40346), r0031."
    },
    {
      "address": 346,
      "count": 1,
      "name": "Actual power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Scaling 100, range 0 to 327.67 kW (40347), r0032."
    },
    {
      "address": 347,
      "count": 1,
      "name": "Total kWh",
      "data_type": "UInt16",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Range 0-32767 kWh (40348), r0039."
    },
    {
      "address": 348,
      "count": 1,
      "name": "Hand/auto",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "HAND/AUTO (40349), r0807."
    },
    {
      "address": 349,
      "count": 1,
      "name": "Current, unfiltered",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Scaling 100, range 0 to 163.83 A (40350), r0068."
    },
    {
      "address": 399,
      "count": 1,
      "name": "Fault 1",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Range 0-32767 (40400), r0947[0]."
    }
  ],
  "combined_registers": [],
  "notes": "RS-485 compact drive: Modbus RTU on the inverter's RS485 interface (terminal or RS485/USB cable), reached through a Modbus RTU-to-TCP gateway, so the serial block records the factory frame. Source: Siemens \"SINAMICS V20 Inverter - Operating Instructions\" 01/2018, A5E34559884-009, section 7.2 \"MODBUS communication\" - \"Mapping table\" (pages 177-179) and the parameter table on pages 176-177 (P2010 baud rate, P2021 MODBUS address, P2023 RS485 protocol, P2034 parity, P2035 stop bits). Factory frame: P2021 = 1 (address), P2010 = 6 (9600 bit/s), P2034 = 2 (even parity) and P2035 = 1 (1 stop bit), which is 9600 8E1. The RS485 protocol is not Modbus at the factory - P2023 defaults to 1 (USS) - so P2023 must be set to 2 (Modbus RTU) and the inverter power-cycled; that is what connection macro Cn011 does. Addressing: the mapping table prints a zero-based \"Register No.\" column beside the Modbus reference (register 0 = 40001), so this seed stores the Register No. column with zero-based addressing. Scaling follows the table's \"Scaling factor\" column: 100 becomes 0.01, 10 becomes 0.1, 1000 becomes 0.001, and a factor of 1 stays 1. The table prints the same measurement in more than one block (for example speed at register 24 and 340, total kWh at 28 and 347); this seed keeps the process-data block at 339-350 and the control block at 0-19. Rows 20-32, 40-46, 51 and 54-61 are left out as a scope choice: 23-32 and 43 repeat values the seed already lists at another address, 40-42 and 54-61 repeat the analog and fault/warning rows, while the PID gains at 20-22 and the PID outputs at 44-46 are unique registers this seed does not cover. Registers marked * in the table (13/14 partly, 201-202, 243-244) need the optional I/O extension module; the descriptions say so. The inverter needs P0700/P1000 = 5 (USS/MODBUS on RS485) for the control word and setpoints above to act, which is a commissioning step, not a register."
}
