{
 "manufacturer": "Schneider Electric",
 "manufacturer_slug": "schneider-electric",
 "model": "Altivar Machine ATV320 (embedded Modbus RTU)",
 "model_slug": "atv320",
 "short_model": "ATV320",
 "aliases": [
  "ATV320",
  "Altivar 320",
  "ATV320U",
  "ATV320D",
  "ATV320 Book",
  "ATV320 Compact"
 ],
 "equipment_type": "Variable frequency drive",
 "applies_to": "ATV320 Book (ATV320...B) and Compact (ATV320...C) drives on the built-in RJ45 Modbus serial port; register map per Communication Parameters file NVE41316 V3.5.",
 "summary": "Schneider Electric's machine-oriented variable frequency drive with Modbus RTU built into the RJ45 port on the control block. Every parameter has a fixed decimal logical address that is sent unchanged as the holding-register address. This map covers the CiA402 command/status words (CMD/ETA), frequency and speed references, the main monitors (output frequency, current, voltages, thermal states, power), fault codes and history, I/O states, and the Modbus and channel settings needed to put the drive under network control.",
 "transport": [
  "RTU"
 ],
 "defaults": {
  "unit_id": null,
  "baud": 19200,
  "parity": "Even",
  "data_bits": 8,
  "stop_bits": 1,
  "tcp_port": null
 },
 "addressing": {
  "convention": "0-based",
  "note": "Logical addresses are decimal (the parameter file also shows hex as 16#....) and go into the request unchanged. The Modbus manual's read example asks for W3102-W3105 by sending starting address 0C1E hex (= 3102), and its write example writes W9001 at 2329 hex. So ETA 3201 is requested at address 3201 (0x0C81), with no 40001 offset and no minus 1."
 },
 "default_word_order": null,
 "firmware": null,
 "source": {
  "title": "ATV320 - Communication Parameters (Excel)",
  "doc_number": "NVE41316 V3.5",
  "revision_date": "2024-09",
  "url": "https://download.schneider-electric.com/files?p_Doc_Ref=NVE41316",
  "pages": "Sheet 'Parameters' (code, logic address, type, unit, access), sheet 'Registers' (CMI/CMD/ETA/ETI/CRC/CCC/IL1R/OL1R/UNT bits), sheet 'Enumerations' (HMIS, LFT, CHCF, ECFG, PSA, CDX, TBR, FOR, INR, STT). Also: Altivar Machine ATV320 Modbus Serial Link Manual NVE41308 (04/2016) pp. 17-21 functions and examples, pp. 31-37 settings and scanner, pp. 46-49 CMD/ETA, p. 66 SLL, pp. 77-80 channel monitoring."
 },
 "notes": [
  "Second source: Altivar Machine ATV320 Modbus Serial Link Manual NVE41308 rev 01 (04/2016), https://download.schneider-electric.com/files?p_Doc_Ref=NVE41308 - used for addressing, function codes, the Add/tbr/tFO/ttO settings, the CiA402 sequence and SLL behaviour.",
  "Every register is a single 16-bit word; the map has no 32-bit values.",
  "M1EC (6010) and M1CT (6011) are not in the parameter file; their logical addresses come from the Modbus manual p. 74.",
  "LFR (8502) and RFR (3202) are 0.1 Hz only while CMI bit 9 = 0 (power-up default); with bit 9 = 1 they become a signed value where 32767 = tFr.",
  "APH, RTH and PTH have no fixed unit: read UNT (3234) after them to learn whether each is in Wh/kWh/MWh or s/min/h.",
  "ACC/DEC are raw values; their resolution follows INR (9020): 0 = 0.01 s, 1 = 0.1 s (factory), 2 = 1 s.",
  "LFT and DP0-DP3 use the full LFT list (61 codes) from the parameter file Enumerations sheet.",
  "FR1 and CD1 value lists show the channel choices relevant to network control; the full PSA list also includes analog and function sources.",
  "Left out: ERRD (CiA402 error code, 8606) because the file types it as a bit string but gives a code list; CCS (8421) values because they come from a long assignable-input list; option-card (CANopen, Ethernet, EtherCAT) parameters; Safety-function and function-block registers.",
  "Registers marked RW that the source lists as R/WS can only be written while the drive is not running (not in Operation enabled or Quick stop active)."
 ],
 "registers": [
  {
   "table": "holding_register",
   "address": 3102,
   "documented": "3102",
   "name": "SFR - Switching frequency",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "kHz",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3103,
   "documented": "3103",
   "name": "TFR - Max output frequency",
   "description": "Write only when stopped.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "Hz",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3104,
   "documented": "3104",
   "name": "HSP - High speed",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "Hz",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3105,
   "documented": "3105",
   "name": "LSP - Low speed",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "Hz",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3201,
   "documented": "3201",
   "name": "ETA - Status word",
   "description": "CiA402 status word.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Ready to switch on",
    "1": "Switched on",
    "2": "Operation enabled (running)",
    "3": "Fault",
    "4": "Voltage enabled (power stage supplied)",
    "5": "Quick stop (0 = quick stop active)",
    "6": "Switch on disabled",
    "7": "Warning active",
    "9": "Remote: command or reference via network",
    "10": "Target reference reached",
    "11": "Reference outside LSP/HSP limits",
    "14": "Stop via STOP key",
    "15": "Reverse rotation at output"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3202,
   "documented": "3202",
   "name": "RFR - Output frequency",
   "description": "Signed; 0.1 Hz while CMI bit 9 = 0.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3203,
   "documented": "3203",
   "name": "FRH - Frequency reference before ramp",
   "description": "Signed.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3204,
   "documented": "3204",
   "name": "LCR - Motor current",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3205,
   "documented": "3205",
   "name": "OTR - Motor torque",
   "description": "Signed, percent of nominal torque.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3206,
   "documented": "3206",
   "name": "ETI - Extended status word",
   "description": "Accel/decel, current limit, control source, fault-cleared flag.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "EEPROM access in progress",
    "1": "Parameter consistency check active",
    "2": "In Fault state, cause gone but not yet reset",
    "4": "Drive in speed mode",
    "5": "DC injection active",
    "6": "Transient state (0 = steady state)",
    "7": "Motor thermal threshold reached",
    "8": "DC bus overvoltage",
    "9": "Accelerating",
    "10": "Decelerating",
    "11": "Current limit active",
    "12": "Fast stop active",
    "13": "Control source, with bit 14: bit 13 only set = remote keypad; neither set = terminals",
    "14": "Control source, with bit 13: bit 14 only set = Modbus; both set = CANopen or network card",
    "15": "Reverse applied before the ramp"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3207,
   "documented": "3207",
   "name": "ULN - Mains voltage",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3208,
   "documented": "3208",
   "name": "UOP - Motor voltage",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3209,
   "documented": "3209",
   "name": "THD - Drive thermal state",
   "description": "0-200%.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3211,
   "documented": "3211",
   "name": "OPR - Motor power",
   "description": "Signed, percent of nominal power.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3230,
   "documented": "3230",
   "name": "APH - Energy consumption",
   "description": "Unit (Wh/kWh/MWh) given by UNT bits 0-1.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3231,
   "documented": "3231",
   "name": "RTH - Motor run time",
   "description": "Unit (s/min/h) given by UNT bits 4-5.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3233,
   "documented": "3233",
   "name": "PTH - Power-on time",
   "description": "Unit (s/min/h) given by UNT bits 2-3.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3234,
   "documented": "3234",
   "name": "UNT - Units of APH, PTH, RTH",
   "description": "Read after the value registers.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Bits 0-1 APH unit: 0 Wh, 1 kWh, 2 MWh",
    "2": "Bits 2-3 PTH unit: 0 s, 1 min, 2 h",
    "4": "Bits 4-5 RTH unit: 0 s, 1 min, 2 h"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 3240,
   "documented": "3240",
   "name": "HMIS - Drive state",
   "description": "Display state code.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "Auto-tuning (TUN)",
    "1": "DC injection (DCB)",
    "2": "Ready (RDY)",
    "3": "Freewheel stop (NST)",
    "4": "Running (RUN)",
    "5": "Accelerating (ACC)",
    "6": "Decelerating (DEC)",
    "7": "Current limit (CLI)",
    "8": "Fast stop (FST)",
    "9": "Motor fluxing (FLU)",
    "11": "No mains voltage (NLP)",
    "12": "Power removal active (PRA)",
    "13": "Controlled stop (CTL)",
    "14": "Decel ramp adaptation (OBR)",
    "15": "Output cut (SOC)",
    "17": "Undervoltage warning (USA)",
    "18": "Manufacturing test (TC)",
    "19": "In autotest (ST)",
    "20": "Autotest error (FA)",
    "21": "Autotest OK (OK)",
    "22": "EEPROM test (EP)",
    "23": "In fault (FLT)",
    "25": "DCP (DCP)",
    "28": "SS1 active",
    "29": "SLS active",
    "30": "STO active",
    "31": "SMS (no description in source)",
    "32": "GDL (no description in source)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 5202,
   "documented": "5202",
   "name": "IL1R - Logic input states",
   "description": "",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "LI1",
    "1": "LI2",
    "2": "LI3",
    "3": "LI4",
    "4": "LI5",
    "5": "LI6",
    "6": "AI1 used as logic input",
    "7": "AI2 used as logic input"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 5212,
   "documented": "5212",
   "name": "OL1R - Logic output states",
   "description": "Writable when the output is unassigned.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": {
    "0": "Relay R1",
    "1": "Relay R2",
    "8": "Logic output LO1"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 5242,
   "documented": "5242",
   "name": "AI1C - AI1 physical value",
   "description": "Signed, volts.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 5243,
   "documented": "5243",
   "name": "AI2C - AI2 physical value",
   "description": "Signed, volts.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 5244,
   "documented": "5244",
   "name": "AI3C - AI3 physical value",
   "description": "Signed, milliamps.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "mA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6001,
   "documented": "6001",
   "name": "ADD - Modbus address",
   "description": "0 = OFF (factory); 1-247. Power cycle to apply.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6003,
   "documented": "6003",
   "name": "TBR - Modbus baud rate",
   "description": "Factory 32 = 19200. Power cycle to apply.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "24": "4800 bps",
    "28": "9600 bps",
    "32": "19200 bps",
    "36": "38400 bps"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6004,
   "documented": "6004",
   "name": "TFO - Modbus format",
   "description": "Factory 3 = 8-E-1. Power cycle to apply.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "2": "8-O-1",
    "3": "8-E-1",
    "4": "8-N-1",
    "5": "8-N-2"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6005,
   "documented": "6005",
   "name": "TTO - Modbus timeout",
   "description": "0.1-30.0 s, factory 10.0 s.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "s",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6010,
   "documented": "6010",
   "name": "M1EC - Modbus CRC error count",
   "description": "Stops at 65535.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 6011,
   "documented": "6011",
   "name": "M1CT - Modbus frame count",
   "description": "Wraps at 65535.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 7010,
   "documented": "7010",
   "name": "SLL - Modbus fault response",
   "description": "Reaction to SLF1 timeout; factory freewheel.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Ignore (NO)",
    "1": "Freewheel stop (YES, factory)",
    "2": "Stop per Stt (STT)",
    "4": "Fallback speed LFF (LFF)",
    "5": "Maintain speed (RLS)",
    "6": "Ramp stop (RMP)",
    "7": "Fast stop (FST)",
    "8": "DC injection (DCI)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 7080,
   "documented": "7080",
   "name": "LFF - Fallback speed",
   "description": "Used when SLL = LFF.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "Hz",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 7121,
   "documented": "7121",
   "name": "LFT - Last fault",
   "description": "Code of the most recent fault (full LFT list from the parameter file).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "0": "No fault saved (NOF)",
    "2": "EEprom control fault (EEF1)",
    "3": "Incorrect configuration (CFF)",
    "4": "Invalid config parameters (CFI)",
    "5": "Modbus coms fault (SLF1)",
    "6": "Com Internal link fault (ILF)",
    "7": "Network fault (CNF)",
    "8": "External fault logic input (EPF1)",
    "9": "Overcurrent fault (OCF)",
    "10": "Precharge (CRF1)",
    "11": "Speed feedback loss (SPF)",
    "12": "Output speed <> ref (ANF)",
    "16": "Drive overheating fault (OHF)",
    "17": "Motor overload fault (OLF)",
    "18": "DC bus overvoltage fault (OBF)",
    "19": "Supply overvoltage fault (OSF)",
    "20": "1 motor phase loss fault (OPF1)",
    "21": "Supply phase loss fault (PHF)",
    "22": "Supply undervolt fault (USF)",
    "23": "Motor short circuit (SCF1)",
    "24": "Motor overspeed fault (SOF)",
    "25": "Auto-tuning fault (TNF)",
    "26": "Rating error (INF1)",
    "27": "Incompatible control card (INF2)",
    "28": "Internal coms link fault (INF3)",
    "29": "Internal manu zone fault (INF4)",
    "30": "EEprom power fault (EEF2)",
    "32": "Ground short circuit (SCF3)",
    "33": "3 motor phase loss fault (OPF2)",
    "34": "Comms fault CANopen (COF)",
    "35": "Brake control fault (BLF)",
    "38": "External fault comms (EPF2)",
    "41": "Brake feedback fault (BRF)",
    "42": "PC coms fault (SLF2)",
    "44": "Torque/current limit fault (SSF)",
    "45": "HMI coms fault (SLF3)",
    "49": "LI6=PTC failed (PTFL)",
    "50": "LI6=PTC overheat fault (OTFL)",
    "51": "Internal I measure fault (INF9)",
    "52": "Internal i/p volt circuit flt (INFA)",
    "53": "Internal temperature fault (INFB)",
    "54": "IGBT overheat fault (TJF)",
    "55": "IGBT short circuit fault (SCF4)",
    "56": "motor short circuit (SCF5)",
    "58": "Output cont close fault (FCF1)",
    "59": "Output cont open fault (FCF2)",
    "64": "input contactor (LCF)",
    "67": "IGBT desaturation (HDF)",
    "68": "Internal option fault (INF6)",
    "69": "internal- CPU (INFE)",
    "71": "AI3 4-20mA loss (LFF3)",
    "73": "Cards pairing (HCF)",
    "76": "Dynamic load fault (DLF)",
    "77": "Interrupted config. (CFI2)",
    "99": "Channel switching fault (CSF)",
    "100": "Process Underlaod Fault (ULF)",
    "101": "Process Overload Fault (OLC)",
    "105": "Angle error (ASF)",
    "107": "Safety fault (SAFF)",
    "108": "FB fault (FBE)",
    "109": "FB stop fault (FBES)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 7200,
   "documented": "7200",
   "name": "DP0 - Fault record 0 code",
   "description": "Fault history; same code list as LFT.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 7201,
   "documented": "7201",
   "name": "DP1 - Fault record n-1 code",
   "description": "Same code list as LFT.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 7202,
   "documented": "7202",
   "name": "DP2 - Fault record n-2 code",
   "description": "Same code list as LFT.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 7203,
   "documented": "7203",
   "name": "DP3 - Fault record n-3 code",
   "description": "Same code list as LFT.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 7393,
   "documented": "7393",
   "name": "FNB - Fault counter",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8401,
   "documented": "8401",
   "name": "CHCF - Control mode (profile)",
   "description": "Factory SIM. Write only when stopped.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Not separate / combined (SIM)",
    "2": "Separate (SEP)",
    "3": "I/O profile (IO)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8413,
   "documented": "8413",
   "name": "FR1 - Reference channel 1",
   "description": "164 = Modbus; write only when stopped.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Not assigned",
    "1": "AI1",
    "2": "AI2",
    "3": "AI3",
    "163": "Remote HMI (LCC)",
    "164": "Modbus (MDB)",
    "167": "CANopen (CAN)",
    "169": "Communication card (NET)",
    "183": "AI virtual 1 (AIV1)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8421,
   "documented": "8421",
   "name": "CCS - Command channel switching",
   "description": "Write only when stopped.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8423,
   "documented": "8423",
   "name": "CD1 - Command channel 1",
   "description": "Used when CHCF = SEP or IO. Factory TER.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "1": "Terminals (TER)",
    "3": "HMI (LCC)",
    "10": "Modbus (MDB)",
    "20": "CANopen (CAN)",
    "30": "Communication card (NET)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8441,
   "documented": "8441",
   "name": "CRC - Active reference channel",
   "description": "One bit set for the channel giving the reference.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Terminals",
    "1": "Local keypad",
    "2": "Remote keypad",
    "3": "Modbus",
    "6": "CANopen",
    "7": "Terminal +/- speed",
    "8": "Remote keypad +/- speed",
    "9": "Communication option card",
    "10": "Application option card",
    "14": "Manufacturer (Indus)",
    "15": "PC tool (PowerSuite)"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8442,
   "documented": "8442",
   "name": "CCC - Active command channel",
   "description": "One bit set for the channel giving commands.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": {
    "0": "Terminals",
    "1": "Local keypad",
    "2": "Remote keypad",
    "3": "Modbus",
    "6": "CANopen",
    "7": "Terminal +/- speed",
    "8": "Remote keypad +/- speed",
    "9": "Communication option card",
    "10": "Application option card",
    "14": "Manufacturer (Indus)",
    "15": "PC tool (PowerSuite)"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8501,
   "documented": "8501",
   "name": "CMD - Command word",
   "description": "CiA402 control word (or I/O-profile bits when CHCF = IO).",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": {
    "0": "CiA402: Switch on",
    "1": "CiA402: Enable voltage",
    "2": "CiA402: Quick stop (0 = quick stop active)",
    "3": "CiA402: Enable operation (run)",
    "7": "CiA402: Fault reset on 0->1 edge",
    "8": "CiA402: Halt (stop per Stt, stays in Operation enabled)",
    "11": "CiA402: assignable, default reverse direction (rrS = C111)",
    "12": "Assignable (C112)",
    "13": "Assignable (C113)",
    "14": "Assignable (C114)",
    "15": "Assignable (C115)"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8502,
   "documented": "8502",
   "name": "LFR - Frequency reference",
   "description": "Signed, 0.1 Hz while CMI bit 9 = 0; range -599.0 to 599.0 Hz.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "Hz",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8503,
   "documented": "8503",
   "name": "PISP - PID setpoint from network",
   "description": "Range 0-1000; used when PID reference comes from Modbus.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8504,
   "documented": "8504",
   "name": "CMI - Extended control word",
   "description": "Save to EEPROM, factory reset, LFR unit select.",
   "data_type": "BITMAP16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": {
    "0": "Restore factory settings",
    "1": "Save configuration to EEPROM (drive stopped only)",
    "9": "LFR/RFR unit: 0 = 0.1 Hz, 1 = 32767 = tFr",
    "15": "1 = parameter consistency check off (drive locked in stop)"
   },
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8602,
   "documented": "8602",
   "name": "LFRD - Speed setpoint",
   "description": "Signed speed reference in rpm.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "rpm",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8604,
   "documented": "8604",
   "name": "RFRD - Output speed",
   "description": "Signed.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "rpm",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 8605,
   "documented": "8605",
   "name": "FRHD - Speed reference before ramp",
   "description": "Signed.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "rpm",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 9001,
   "documented": "9001",
   "name": "ACC - Acceleration time",
   "description": "Unit set by INR; factory 30 = 3.0 s at INR 0.1 s.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 9002,
   "documented": "9002",
   "name": "DEC - Deceleration time",
   "description": "Unit set by INR; factory 30 = 3.0 s at INR 0.1 s.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 9020,
   "documented": "9020",
   "name": "INR - Ramp increment",
   "description": "Resolution of ACC/DEC.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "0.01 s",
    "1": "0.1 s",
    "2": "1 s"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 9601,
   "documented": "9601",
   "name": "UNS - Nominal motor voltage",
   "description": "Write only when stopped.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "V",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 9602,
   "documented": "9602",
   "name": "FRS - Nominal motor frequency",
   "description": "Write only when stopped.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "Hz",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 9603,
   "documented": "9603",
   "name": "NCR - Nominal motor current",
   "description": "Write only when stopped.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "A",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 9604,
   "documented": "9604",
   "name": "NSP - Nominal motor speed",
   "description": "Write only when stopped.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "rpm",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 9622,
   "documented": "9622",
   "name": "ITH - Motor thermal current",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "A",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 9630,
   "documented": "9630",
   "name": "THR - Motor thermal state",
   "description": "0-200%.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "%",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 11201,
   "documented": "11201",
   "name": "STT - Type of stop",
   "description": "Write only when stopped.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Ramp stop (RMP)",
    "1": "Fast stop (FST)",
    "2": "Freewheel (NST)",
    "3": "DC injection (DCI)"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 11981,
   "documented": "11981",
   "name": "RPF - PID feedback",
   "description": "PID units (unscaled).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 11982,
   "documented": "11982",
   "name": "RPC - PID reference",
   "description": "PID units (unscaled).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 11983,
   "documented": "11983",
   "name": "RPO - PID output",
   "description": "Signed.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 12701,
   "documented": "12701",
   "name": "NMA1 - Com scanner input 1 address",
   "description": "Factory 3201 (ETA).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 12721,
   "documented": "12721",
   "name": "NCA1 - Com scanner output 1 address",
   "description": "Factory 8501 (CMD).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 12741,
   "documented": "12741",
   "name": "NM1 - Com scanner input 1 value",
   "description": "First of 8 scanner input values (default ETA, RFRD).",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 12761,
   "documented": "12761",
   "name": "NC1 - Com scanner output 1 value",
   "description": "First of 8 scanner output values (default CMD, LFRD); the manual writes here with function 23.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  }
 ],
 "integration": {
  "summary": "Set Add (6001) to 1-247 and power-cycle, set FR1 = Modbus and keep CHCF = SIM, then write CMD (8501) = 0006h, then 000Fh with a non-zero LFR (8502, 0.1 Hz) or LFRD (8602, rpm) to run. Poll ETA (3201), RFR (3202), LCR (3204) and LFT (7121).",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 8501,
    "why": "CMD: CiA402 run/stop/reset"
   },
   {
    "table": "holding_register",
    "address": 8502,
    "why": "LFR: frequency reference, 0.1 Hz"
   },
   {
    "table": "holding_register",
    "address": 3201,
    "why": "ETA: CiA402 status word"
   },
   {
    "table": "holding_register",
    "address": 3202,
    "why": "RFR: output frequency, 0.1 Hz"
   },
   {
    "table": "holding_register",
    "address": 3204,
    "why": "LCR: motor current, 0.1 A"
   },
   {
    "table": "holding_register",
    "address": 3240,
    "why": "HMIS: drive state code"
   },
   {
    "table": "holding_register",
    "address": 7121,
    "why": "LFT: last fault code"
   },
   {
    "table": "holding_register",
    "address": 3209,
    "why": "THD: drive thermal state"
   }
  ],
  "enable": "Set [Modbus Address] Add (COM- menu; logical 6001) to 1-247 - the factory value is OFF, so the drive does not answer at all until this is set. Speed and format default to 19200, 8-E-1 (tbr 6003, tFO 6004). Communication changes apply after a power cycle. For combined CiA402 control set [Ref Freq 1 Config] FR1 = [Modbus] Mdb with [Control Mode] CHCF = [Not separ.] SIM (factory). For separate mode use CHCF = SEP and Cd1 = Mdb; for the I/O profile use CHCF = IO and Cd1 = Mdb, then CMD bit 0 is run forward.",
  "watchdog": "[Modbus Timeout] ttO (6005), 0.1-30 s, factory 10 s: once the Modbus channel is being monitored, a Modbus communication interruption longer than this raises SLF1. [Modbus fault mgt] SLL (7010) sets the reaction: freewheel (factory), ramp, fast stop, DC injection, ignore, per Stt, fallback speed LFF (7080) or maintain speed. A channel is only monitored once it has written a command or reference.",
  "quirks": [
   "Addresses are decimal logical numbers sent as-is (3201 = 0x0C81); do not subtract 1 or add 40001.",
   "CiA402 sequence: write 0006h (shutdown) to reach Ready to switch on, then 000Fh (enable operation) to run; 0007h stops, 0000h disables voltage, 0080h rising edge resets a fault. 000Fh alone is enough from Ready to switch on.",
   "Both CMD and the reference must be written at least once before the drive will go from Switched on to Operation enabled.",
   "Mask ETA with 006Fh to read the state: 0040h switch on disabled, 0021h ready, 0023h switched on, 0027h operation enabled, 0007h quick stop, 0008h-0028h fault.",
   "CMD bit 11 is reverse direction by default ([Reverse Assign] rrS = C111).",
   "Supported functions: 03 (up to 63 words), 06, 16 (up to 61 words), 23 read/write (20+20 words), 43/14 identification and 08 diagnostics.",
   "Function 23 with the communication scanner (NC1-NC8 at 12761+, NM1-NM8 at 12741+) gives CMD/LFRD write and ETA/RFRD read in one frame by default."
  ],
  "setup": [
   "RJ45 Modbus port: pin 4 = D1, pin 5 = D0, pin 8 = common, pin 7 = 10 V supply for converters/remote keypad.",
   "2-wire RS-485 trunk up to 1000 m at 19200 bps, up to 31 drives per segment without repeater.",
   "Fit a line terminator (120 ohm in series with 1 nF) at each end of the bus; polarization (650 ohm pull-up/down) belongs at the master.",
   "Set Add, tbr, tFO in the [COMMUNICATION] COM- menu, then switch the drive off and on.",
   "The keypad [COMMUNICATION MAP] menu shows frame and CRC counters (M1Ct 6011, M1EC 6010) and COM1 link status for troubleshooting."
  ],
  "gotchas": [
   "Factory Add = OFF: a new drive never answers until an address is entered.",
   "SLL = Ignore disables communication-loss protection; use it only during commissioning.",
   "CMI bit 1 saves to EEPROM (about 100,000 write cycles); do not set it cyclically.",
   "Writing CMI bit 9 changes the unit of LFR and RFR for every reader.",
   "R/WS parameters (CHCF, FR1, Cd1, motor data, Modbus settings) are refused while the motor is running."
  ]
 },
 "page": "https://easymodbus.com/modbus-register-maps/schneider-electric/atv320",
 "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."
}
