{
 "manufacturer": "Siemens",
 "manufacturer_slug": "siemens",
 "model": "VersiCharge AC series wallbox (Modbus map)",
 "model_slug": "versicharge-ac",
 "short_model": "VersiCharge AC",
 "aliases": [
  "VersiCharge",
  "VersiCharge AC"
 ],
 "equipment_type": "EV charger",
 "applies_to": "VersiCharge AC series chargers with firmware V2.135 or later (per-register minimum firmware is given in the source).",
 "summary": "The Siemens VersiCharge AC wallbox has a Modbus server on both RS-485 (RTU) and Ethernet (TCP) once Modbus is enabled for the charger in the cloud configuration. Everything is a holding register. This map covers identity and hardware data, the J1772 and OCPP state, error codes, per-phase current, voltage, power, power factor and energy, the Modbus charging-current limit with its fallback current and timeout and the reset/address registers.",
 "transport": [
  "RTU",
  "TCP"
 ],
 "defaults": {
  "unit_id": 2,
  "baud": 38400,
  "parity": "Even",
  "data_bits": 8,
  "stop_bits": 1,
  "tcp_port": 502
 },
 "addressing": {
  "convention": "Modicon",
  "note": "The map prints every register four ways: 'external' decimal (40001 style), 'internal' decimal, and both in hex. External 40001 is internal 0, so the internal number is the wire address: external 41634 = internal 1633 = 0x661. 'documented' below is the external number; 'address' is the internal one. The map's own notes mix the two (it cites both 'register 1633' and 'register 41661'), so check which one is meant."
 },
 "default_word_order": "ABCD",
 "firmware": "V2.135 or higher",
 "source": {
  "title": "VERSICHARGE AC SERIES ModBus Map",
  "doc_number": "A5E52200882-AJ",
  "revision_date": "2024-06",
  "url": "https://cache.industry.siemens.com/dl/files/359/109814359/att_1291322/v1/versicharge_wallbox_modBus_map_en-US.pdf",
  "pages": "p. 1 (port settings and notes), pp. 2-15 (register map)"
 },
 "notes": [
  "The energy counter (1692) is marked 'Uint32 (Big-endian)' in the map, so the high word comes first (ABCD).",
  "Charging current limit (internal 1633): written values of 100 or less are whole amps, values 101-8000 are hundredths of an amp (write 6 or 600 for 6 A, 850 for 8.5 A). A read always returns whole amps in the 0-80 range. Values above 8000 are rejected, and anything under 6 A pauses charging. Other limits (OCPP smart charging, cloud power level) still apply on top.",
  "Left out: the charging session energy target (internal 1640). Its units column says watt-hours but its description talks about kWh, so the scale cannot be settled from the map.",
  "Production date (5-6): only the first word (year) is listed; the second packs month and day as two bytes.",
  "Not listed: the five-register firmware strings for the M0 processor, the firmware variant and release-date strings, RFID card add/remove and whitelist blocks (40081-40338, 41853-41878) and the factory-reset salt/command registers, which are marked for internal use.",
  "The map warns that when the charger is controlled by OCPP, Modbus is mainly a monitoring interface."
 ],
 "registers": [
  {
   "table": "holding_register",
   "address": 0,
   "documented": "40001",
   "name": "Manufacturer name",
   "description": "ASCII text, reads Siemens AG.",
   "data_type": "STRING",
   "length": 5,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 5,
   "documented": "40006",
   "name": "Production year",
   "description": "Word 1 of the production date (YYYY), taken from the serial number.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 7,
   "documented": "40008",
   "name": "Serial number",
   "description": "",
   "data_type": "STRING",
   "length": 5,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 12,
   "documented": "40013",
   "name": "MLFB number",
   "description": "Siemens catalog (order) number as ASCII text.",
   "data_type": "STRING",
   "length": 10,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 22,
   "documented": "40023",
   "name": "Platform type",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "1": "Residential",
    "2": "Commercial",
    "3": "ERK"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 24,
   "documented": "40025",
   "name": "Number of outlets",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "1": "1 outlet",
    "2": "2 outlets"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 25,
   "documented": "40026",
   "name": "Type of outlet",
   "description": "Connector type, derived from the catalog number.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "Left: socket type 2",
    "1": "Left: cable with plug type 2 (7 m)",
    "2": "Left: socket with shutters type 2 - France",
    "3": "Left: cable with plug type 1 (7 m)",
    "4": "Left: cable with plug type GB/T (6 m)",
    "5": "Front SAE J1772 (20 ft)",
    "6": "Front SAE J1772 (25 ft)",
    "7": "Right: socket type 2",
    "8": "Right: cable with plug type 2 (7 m)",
    "9": "Right: cover type 2 with shutter and E-plug",
    "10": "Right: cable with plug type 1 (7 m)",
    "11": "Right: cover type 2 with shutter and F-plug",
    "12": "Right: cover type 2 with shutter only",
    "14": "Left and right: socket type 2",
    "15": "Left and right: cable with plug type 2 (7 m)",
    "16": "Left and right: cover type 2 - France (7 m)",
    "17": "Left and right: cable with plug type 1 (7 m)",
    "18": "Left and right: cable with plug type GB/T (7 m)",
    "19": "CCS1/J1772 (25 ft)",
    "22": "Blocked"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 26,
   "documented": "40027",
   "name": "Delay button status",
   "description": "Charging delay chosen with the delay button.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "No delay",
    "1": "2 hours delay",
    "2": "4 hours delay",
    "3": "6 hours delay",
    "4": "8 hours delay"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 27,
   "documented": "40028",
   "name": "Utilized connectivity stream",
   "description": "Link the charger was commissioned over; Modbus needs a commissioned charger.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "Not commissioned",
    "1": "Wi-Fi",
    "2": "Cellular",
    "3": "Ethernet"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 28,
   "documented": "40029",
   "name": "Rated current",
   "description": "Maximum current of the hardware (6-80 A).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 29,
   "documented": "40030",
   "name": "Installation current (DIP switch)",
   "description": "Derated current from the amp DIP switch, capped at the rated current.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 30,
   "documented": "40031",
   "name": "Meter type",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "No metering",
    "1": "Basic",
    "2": "ANSI",
    "3": "MID",
    "4": "Integrated meter MID",
    "5": "Eichrechtskonform metering (ERK)",
    "7": "CMC meter",
    "9": "Onboard CMC",
    "25": "Blocked"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 31,
   "documented": "40032",
   "name": "A8 firmware version",
   "description": "Main (A8) processor firmware as ASCII text, e.g. 2.135.",
   "data_type": "STRING",
   "length": 5,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 41,
   "documented": "40042",
   "name": "Modbus app version",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 79,
   "documented": "40080",
   "name": "RFID authorization status",
   "description": "Read or switch RFID card authorization.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": {
    "0": "RFID authorization disabled",
    "1": "RFID authorization enabled"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1599,
   "documented": "41600",
   "name": "EVSE state",
   "description": "J1772 state as two ASCII characters (A1, A2, B1, B2, C1, C2, F).",
   "data_type": "STRING",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1600,
   "documented": "41601",
   "name": "EVSE error code",
   "description": "Active charger fault; 0 = no fault.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "No fault",
    "2": "Line phase A under volt",
    "3": "Line phase B under volt",
    "4": "Line phase C under volt",
    "6": "Line phase A over volt",
    "7": "Line phase B over volt",
    "8": "Line phase C over volt",
    "10": "Line phase A zero volt",
    "11": "Line phase B zero volt",
    "12": "Line phase C zero volt",
    "22": "Load phase A zero volt",
    "23": "Load phase B zero volt",
    "24": "Load phase C zero volt",
    "25": "Bad pilot voltage",
    "26": "Bad amp switch position",
    "27": "ADC fault",
    "28": "Static memory fault",
    "29": "CCID fault",
    "30": "CCID self test fault",
    "35": "EEPROM rw fault",
    "36": "FRAM rw fault",
    "37": "Metering chip rw fault",
    "38": "CCID close ON fault",
    "40": "Connector lock fault",
    "41": "Cable max temperature fault",
    "42": "Welded contact phase A fault",
    "43": "Welded contact phase B fault",
    "44": "Welded contact phase C fault",
    "45": "Diode fault",
    "46": "Ground monitoring fault",
    "47": "On-board temperature fault",
    "48": "Over current fault"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1601,
   "documented": "41602",
   "name": "OCPP state",
   "description": "Connector status from the OCPP backend; reads 1 when no backend is connected.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "1": "Available",
    "2": "Preparing",
    "3": "Charging",
    "4": "Suspended EV",
    "5": "Suspended EVSE",
    "6": "Faulted",
    "7": "Finishing"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1602,
   "documented": "41603",
   "name": "PCBA temperature",
   "description": "Board temperature.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "°C",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1633,
   "documented": "41634",
   "name": "Charging current limit",
   "description": "Modbus current limit; reads back in whole amps (0-80), see notes for writing.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "A",
   "access": "RW",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1642,
   "documented": "41643",
   "name": "Charger phase",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": {
    "0": "1-phase charger",
    "1": "3-phase charger"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1647,
   "documented": "41648",
   "name": "Charging current L1",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1648,
   "documented": "41649",
   "name": "Charging current L2",
   "description": "3-phase chargers only.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1649,
   "documented": "41650",
   "name": "Charging current L3",
   "description": "3-phase chargers only.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1650,
   "documented": "41651",
   "name": "Average charging current",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1651,
   "documented": "41652",
   "name": "Charging voltage L1-N",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1652,
   "documented": "41653",
   "name": "Charging voltage L2-N",
   "description": "3-phase chargers only.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1653,
   "documented": "41654",
   "name": "Charging voltage L3-N",
   "description": "3-phase chargers only.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1654,
   "documented": "41655",
   "name": "Charging voltage L1-L2",
   "description": "3-phase chargers; reads 0 on the ERK variant.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1655,
   "documented": "41656",
   "name": "Charging voltage L2-L3",
   "description": "3-phase chargers; reads 0 on the ERK variant.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1656,
   "documented": "41657",
   "name": "Charging voltage L3-L1",
   "description": "3-phase chargers; reads 0 on the ERK variant.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1660,
   "documented": "41661",
   "name": "Fallback current phase sum",
   "description": "Current used when Modbus is lost for the fallback time; not persistent.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "A",
   "access": "RW",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1661,
   "documented": "41662",
   "name": "Fallback time",
   "description": "0 or 60-600 s of Modbus silence before the fallback current applies; not persistent.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "s",
   "access": "RW",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1662,
   "documented": "41663",
   "name": "Charging power L1",
   "description": "Active power, phase 1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1663,
   "documented": "41664",
   "name": "Charging power L2",
   "description": "3-phase chargers only.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1664,
   "documented": "41665",
   "name": "Charging power L3",
   "description": "3-phase chargers only.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1665,
   "documented": "41666",
   "name": "Charging power total",
   "description": "Total active power (use this on 1-phase chargers).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1666,
   "documented": "41667",
   "name": "Power factor L1",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1667,
   "documented": "41668",
   "name": "Power factor L2",
   "description": "3-phase chargers only.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1668,
   "documented": "41669",
   "name": "Power factor L3",
   "description": "3-phase chargers only.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1669,
   "documented": "41670",
   "name": "Average power factor",
   "description": "Average of the three phases on 3-phase chargers.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1670,
   "documented": "41671",
   "name": "Apparent power L1",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1671,
   "documented": "41672",
   "name": "Apparent power L2",
   "description": "3-phase chargers only.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1672,
   "documented": "41673",
   "name": "Apparent power L3",
   "description": "3-phase chargers only.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1673,
   "documented": "41674",
   "name": "Apparent power total",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1674,
   "documented": "41675",
   "name": "Reactive power L1",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1675,
   "documented": "41676",
   "name": "Reactive power L2",
   "description": "3-phase chargers only.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1676,
   "documented": "41677",
   "name": "Reactive power L3",
   "description": "3-phase chargers only.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1677,
   "documented": "41678",
   "name": "Reactive power total",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1692,
   "documented": "41693",
   "name": "Real energy consumed",
   "description": "Total delivered energy counter.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "Wh",
   "access": "R",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1825,
   "documented": "41826",
   "name": "RTU slave address",
   "description": "Modbus RTU address 1-247; takes about 20 s to apply.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1826,
   "documented": "41827",
   "name": "Reboot charger",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": {
    "1": "Soft reset (Modbus application)",
    "2": "Hard reset (A8 board)"
   },
   "bits": null
  },
  {
   "table": "holding_register",
   "address": 1878,
   "documented": "41879",
   "name": "Reset RTU slave address",
   "description": "Write 1 to restore the default RTU address 2.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "offset": 0,
   "scale_factor_ref": null,
   "units": "",
   "access": "W",
   "values": {
    "1": "Reset to default address"
   },
   "bits": null
  }
 ],
 "integration": {
  "summary": "Poll internal 1599-1602 for state and faults and 1647-1677 for live values with function 3. To manage load, set the fallback current (1660) and fallback time (1661) once after every reboot, then write the charging current limit to 1633 inside that time window.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 1599,
    "why": "J1772 charging state"
   },
   {
    "table": "holding_register",
    "address": 1600,
    "why": "Active fault code"
   },
   {
    "table": "holding_register",
    "address": 1665,
    "why": "Total charging power"
   },
   {
    "table": "holding_register",
    "address": 1647,
    "why": "Phase L1 current"
   },
   {
    "table": "holding_register",
    "address": 1692,
    "why": "Energy counter"
   },
   {
    "table": "holding_register",
    "address": 1633,
    "why": "Charging current limit (write)"
   },
   {
    "table": "holding_register",
    "address": 1660,
    "why": "Fallback current"
   },
   {
    "table": "holding_register",
    "address": 1661,
    "why": "Fallback time"
   }
  ],
  "enable": "The charger must be commissioned (register 27 shows the link used), and the 'Modbus' setting must be True in the charger's VersiCloud group; otherwise the Modbus application does not start.",
  "watchdog": "If Modbus traffic stops for the Fallback Time (1661, 0 or 60-600 s), the charger applies the Fallback Current Phase Sum (1660). Both registers reset at power cycle or Modbus soft reset and must be written again.",
  "quirks": [
   "Registers are documented as 40001-style external numbers next to internal (wire) numbers; use the internal number in the request.",
   "Supported functions: 03 read, 06 and 16 write (per register as listed in the map).",
   "The charging current limit accepts amps or hundredths of amps depending on the size of the value written, but always reads back in amps.",
   "Dynamic values may take several poll cycles to update after a change."
  ],
  "setup": [
   "RTU: 38400 baud, 8 data bits, even parity, 1 stop bit, default address 2 (change at internal 1825, about 20 s to apply; write 1 to 1878 to restore 2).",
   "TCP: port 502, fixed, IPv4.",
   "Minimum timeout setting 10 s and minimum poll interval 5 s on both transports."
  ],
  "gotchas": [
   "A soft reset (write 1 to 1826) restarts the Modbus application, which takes about 60 s to come back.",
   "Fallback current and fallback time are not persistent; re-write them after every reboot or soft reset."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/siemens/versicharge-ac",
 "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."
}
