{
  "spec_version": 1,
  "slug": "siemens-versicharge-ac",
  "manufacturer": "Siemens",
  "model": "VersiCharge AC series wallbox",
  "category": "EV charger",
  "supplier_url": "https://support.industry.siemens.com/cs/document/109814359/versicharge-ac-series-modbus-map?lc=en-US",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 2,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "Even",
      "baud_rate": 38400,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 0,
      "count": 5,
      "name": "Manufacturer",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Manufacturer name as ASCII."
    },
    {
      "address": 5,
      "count": 2,
      "name": "Production date",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Word 1 = year (YYYY), word 2 = month and day (MMDD); derived from the serial number."
    },
    {
      "address": 7,
      "count": 5,
      "name": "Serial number",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Product serial number."
    },
    {
      "address": 12,
      "count": 10,
      "name": "MLFB",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Product catalog number."
    },
    {
      "address": 22,
      "count": 1,
      "name": "Platform type",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = residential, 2 = commercial, 3 = ERK."
    },
    {
      "address": 24,
      "count": 1,
      "name": "Number of outlets",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = one outlet, 2 = two outlets."
    },
    {
      "address": 25,
      "count": 1,
      "name": "Outlet type",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Outlet hardware: 0 = left socket type 2, 1 = left cable with type 2 plug (7 m), 2 = left socket with shutters type 2 (France), 3 = left cable with type 1 plug (7 m), 4 = left cable with GB/T plug (6 m), 5 = front SAE J1772 (20 ft), 6 = front SAE J1772 (25 ft), 7 = right socket type 2, 8 = right cable with type 2 plug (7 m), 9 = right type 2 cover with shutter and E-plug, 10 = right cable with type 1 plug (7 m), 11 = right type 2 cover with shutter and F-plug, 12 = right type 2 cover with shutter only, 13 = reserve, 14 = left and right socket type 2, 15 = left and right cable with type 2 plug (7 m), 16 = left and right type 2 cover (France), 17 = left and right cable with type 1 plug (7 m), 18 = left and right cable with GB/T plug, 19 = CCS1/J1772 (25 ft), 20/21 = reserve, 22 = blocked."
    },
    {
      "address": 26,
      "count": 1,
      "name": "Delay button status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Charging delay set with the button on the charger: 0 = no delay, 1 = 2 h, 2 = 4 h, 3 = 6 h, 4 = 8 h. Read-only in the -AL revision (RO, FC 03)."
    },
    {
      "address": 27,
      "count": 1,
      "name": "Connectivity",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = not commissioned, 1 = Wi-Fi, 2 = cellular, 3 = Ethernet."
    },
    {
      "address": 28,
      "count": 1,
      "name": "Rated current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Maximum rated current configured in the system configuration, 6 to 80 A."
    },
    {
      "address": 29,
      "count": 1,
      "name": "Installation current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Installation current from the DIP switch, 6 to 80 A; the effective limit is the minimum of this value and the rated current."
    },
    {
      "address": 30,
      "count": 1,
      "name": "Meter type",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = no metering, 1 = basic, 2 = ANSI, 3 = MID, 4 = integrated MID meter, 5 = Eichrecht-conform meter, 7 = CMC meter, 9 = onboard CMC, 25 = blocked."
    },
    {
      "address": 31,
      "count": 5,
      "name": "Firmware version",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Firmware version, for example 2.118."
    },
    {
      "address": 36,
      "count": 5,
      "name": "Maintenance version",
      "data_type": "Ascii",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "MO version, for example 4.3.5."
    },
    {
      "address": 41,
      "count": 1,
      "name": "Modbus table version",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Version of this Modbus table, 1, 2, 3, 4, ..."
    },
    {
      "address": 79,
      "count": 1,
      "name": "RFID activation status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = RFID authorization disabled, 1 = RFID authorization enabled."
    },
    {
      "address": 1602,
      "count": 1,
      "name": "PCBA temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Board temperature."
    },
    {
      "address": 1633,
      "count": 1,
      "name": "Max charging current, sum",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Maximum charging current for all phases together. The document encodes two scales in this register: values <= 100 are interpreted as A, values > 100 as 0.01 A (raw 1632 means 16.32 A). This schema applies one factor per row, so the row keeps factor 1 and values above 100 have to be divided by 100 by hand."
    },
    {
      "address": 1642,
      "count": 1,
      "name": "Charger type",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "The document titles this row \"Charger\" and marks it RO (FC 03): 0 = 1-phase charger, 1 = 3-phase charger."
    },
    {
      "address": 1647,
      "count": 1,
      "name": "Charging current L1",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Actual RMS current of phase 1."
    },
    {
      "address": 1648,
      "count": 1,
      "name": "Charging current L2",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Actual RMS current of phase 2."
    },
    {
      "address": 1649,
      "count": 1,
      "name": "Charging current L3",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Actual RMS current of phase 3."
    },
    {
      "address": 1650,
      "count": 1,
      "name": "Charging current, sum",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Actual RMS current of all phases."
    },
    {
      "address": 1651,
      "count": 1,
      "name": "Charging voltage L1-N",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Actual RMS voltage of phase 1 to neutral."
    },
    {
      "address": 1652,
      "count": 1,
      "name": "Charging voltage L2-N",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Actual RMS voltage of phase 2 to neutral."
    },
    {
      "address": 1653,
      "count": 1,
      "name": "Charging voltage L3-N",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Actual RMS voltage of phase 3 to neutral."
    },
    {
      "address": 1660,
      "count": 1,
      "name": "Fallback current, sum",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Current applied when the Modbus connection is lost, 0 or 6 to 80 A."
    },
    {
      "address": 1661,
      "count": 1,
      "name": "Fallback time",
      "data_type": "UInt16",
      "units": "s",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Time span between the loss of the Modbus connection and the fallback current, 0 or 60 to 600 s."
    },
    {
      "address": 1662,
      "count": 1,
      "name": "Charging power L1",
      "data_type": "UInt16",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Active power of phase 1."
    },
    {
      "address": 1663,
      "count": 1,
      "name": "Charging power L2",
      "data_type": "UInt16",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Active power of phase 2."
    },
    {
      "address": 1664,
      "count": 1,
      "name": "Charging power L3",
      "data_type": "UInt16",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Active power of phase 3."
    },
    {
      "address": 1665,
      "count": 1,
      "name": "Charging power, sum",
      "data_type": "UInt16",
      "units": "W",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Active power of all phases."
    },
    {
      "address": 1670,
      "count": 1,
      "name": "Apparent power L1",
      "data_type": "UInt16",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Apparent power of phase 1."
    },
    {
      "address": 1671,
      "count": 1,
      "name": "Apparent power L2",
      "data_type": "UInt16",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Apparent power of phase 2."
    },
    {
      "address": 1672,
      "count": 1,
      "name": "Apparent power L3",
      "data_type": "UInt16",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Apparent power of phase 3."
    },
    {
      "address": 1673,
      "count": 1,
      "name": "Apparent power, sum",
      "data_type": "UInt16",
      "units": "VA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Apparent power of all phases."
    },
    {
      "address": 1674,
      "count": 1,
      "name": "Reactive power L1",
      "data_type": "Int16",
      "units": "var",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Reactive power of phase 1, signed (Int16) in the document. The document's unit column reads \"reactive volt-amperes\"."
    },
    {
      "address": 1675,
      "count": 1,
      "name": "Reactive power L2",
      "data_type": "Int16",
      "units": "var",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Reactive power of phase 2, signed (Int16) in the document."
    },
    {
      "address": 1676,
      "count": 1,
      "name": "Reactive power L3",
      "data_type": "Int16",
      "units": "var",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Reactive power of phase 3, signed (Int16) in the document."
    },
    {
      "address": 1677,
      "count": 1,
      "name": "Reactive power, sum",
      "data_type": "UInt16",
      "units": "var",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Reactive power of all phases."
    }
  ],
  "combined_registers": [],
  "notes": "Source: Siemens AG, \"VERSICHARGE AC SERIES - ModBus Map\", document A5E52200882-AL, 02/2025, valid for firmware V2.136.14 or higher, published on the Siemens support page given as supplier_url. Page 1 fixes the transport: Modbus RTU 38400 bit/s, 8 data bits, even parity, 1 stop bit, default device address 2, and a Modbus TCP server on port 502 that cannot be changed; this seed records the RTU path (the same registers answer over TCP). Only holding registers are used: every row is read with FC 03, writable rows take FC 06 / FC 16. Addressing: the table prints each register as external 4xxxx number and as internal address; the internal column is the wire address (40001 = 0), which is what this file lists with zero_based. Two rows of the earlier -AA revision are not in -AL and are not seeded: 23 (time zone) and 1629 (pause). Row 1642 is read-only in -AL (\"Charger\": 0 = 1-phase charger, 1 = 3-phase charger) and row 26 (delay button status) is read-only as well. Row 1633 carries two scales: values <= 100 are A, values > 100 are 0.01 A; one factor per row is possible here, so 1633 keeps factor 1 and its description carries the rule. Left out on purpose: the RFID card write block 80-86, the whitelist 87-337 and the admin whitelist, the BUFFER blocks (42-78, 355-404, 1604-1628), the power-factor rows 1666-1669 and the real-energy group 1692-1693, both of which -AL does tabulate (factor 0,001 and no unit on the power factors; a clean Uint32 Watthours row for the energy), so leaving them out is a deliberate scope choice, not a documentation gap. Units are the document's own words (\"Amp\", \"Volt\", \"Watt\", \"Second\", \"volt-amps\", \"reactive volt-amperes\"); the factor column only holds 1 or 0,1, so the rows included here have scale 1. The unit column is right-aligned and its cells sit one row off from 1647 in plain text, so rows were paired with their units by word coordinates."
}
