{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Schneider Electric",
  "model": "Altivar 12 (ATV12)",
  "vendor_website": "se.com",
  "description": "Compact variable speed drive with Modbus RTU on its RJ45 port",
  "revision": 1,
  "revised": "2026-11-11",
  "source": "Schneider Electric, ATV12 Modbus Communication Manual BBV28590, 06/2012",
  "sources": [
    {
      "title": "Altivar 12 Modbus Communication Manual",
      "version": "BBV28590 06/2012",
      "note": "Communication parameters, drive state machine, command and status words and the I/O scanner"
    }
  ],
  "notes": [
    "Partial map: the manual gives the communication settings, the control and status words, the communication scanner and a few examples. The full list of drive parameters is in a separate Excel file that came with the manual and is not mapped here.",
    "Registers are addressed as the W numbers of the manual (W3201 is address 3201; the examples send 16#0C81 for 3201 and 16#2329 for 9001), so address_base is 0. Functions: 0x03 read, 0x06 write one, 0x10 write several, 0x17 read/write (four words each way), 0x2B/0x0E device identification.",
    "Control: write the command word (CMD, 8501) with 6, 7 and then 15 to run and read the status word (ETA, 3201); the state machine follows IEC 61800-7. A masked ETA (ETA and 16#006F) gives the state: 16#0050 switch on disabled, 16#0031 ready, 16#0033 switched on, 16#0037 operation enabled, 16#0017 quick stop active.",
    "Units are given only by the manual's examples (HSP 50 Hz = 500, tFr 60 Hz = 600, SFr 4 kHz = 40, so 0.1 Hz and 0.1 kHz); no scale is set because the manual does not state it in a table.",
    "Serial settings: 4.8, 9.6, 19.2 or 38.4 kbps (default 19.2 kbps on the ATV12), 8E1 by default, address 1 to 247. The factory address is off until set. Address 0 is broadcast and is not answered.",
    "This map covers the ATV12 only; the ATV212 uses a different manual."
  ],
  "protocol": "rtu",
  "unit_id": 1,
  "data_bits": 8,
  "parity": "E",
  "stop_bits": 1,
  "byte_order": "big",
  "word_order": "big",
  "address_base": 0,
  "x_status": "official",
  "registers": [
    {
      "name": "Status word (ETA)",
      "group": "Drive control",
      "area": "holding",
      "address": 3201,
      "type": "uint16",
      "access": "R",
      "description": "Drive state word; 16#0637 stopped or forward at speed, 16#0237 forward accelerating or decelerating, 16#8237 reverse accelerating or decelerating"
    },
    {
      "name": "ETA: Ready to switch on",
      "group": "Drive control",
      "area": "holding",
      "address": 3201,
      "type": "bool",
      "access": "R",
      "bit": 0
    },
    {
      "name": "ETA: Switched on",
      "group": "Drive control",
      "area": "holding",
      "address": 3201,
      "type": "bool",
      "access": "R",
      "bit": 1
    },
    {
      "name": "ETA: Operation enabled",
      "group": "Drive control",
      "area": "holding",
      "address": 3201,
      "type": "bool",
      "access": "R",
      "bit": 2
    },
    {
      "name": "ETA: Fault detected",
      "group": "Drive control",
      "area": "holding",
      "address": 3201,
      "type": "bool",
      "access": "R",
      "bit": 3
    },
    {
      "name": "ETA: Voltage enabled",
      "group": "Drive control",
      "area": "holding",
      "address": 3201,
      "type": "bool",
      "access": "R",
      "bit": 4
    },
    {
      "name": "ETA: Quick stop active (0 = active)",
      "group": "Drive control",
      "area": "holding",
      "address": 3201,
      "type": "bool",
      "access": "R",
      "bit": 5
    },
    {
      "name": "ETA: Switch on disabled",
      "group": "Drive control",
      "area": "holding",
      "address": 3201,
      "type": "bool",
      "access": "R",
      "bit": 6
    },
    {
      "name": "ETA: Local mode (0 = local)",
      "group": "Drive control",
      "area": "holding",
      "address": 3201,
      "type": "bool",
      "access": "R",
      "bit": 9
    },
    {
      "name": "ETA: Reference reached",
      "group": "Drive control",
      "area": "holding",
      "address": 3201,
      "type": "bool",
      "access": "R",
      "bit": 10
    },
    {
      "name": "ETA: Reference exceeded",
      "group": "Drive control",
      "area": "holding",
      "address": 3201,
      "type": "bool",
      "access": "R",
      "bit": 11
    },
    {
      "name": "ETA: Stopped by STOP key",
      "group": "Drive control",
      "area": "holding",
      "address": 3201,
      "type": "bool",
      "access": "R",
      "bit": 14
    },
    {
      "name": "ETA: Reverse rotation",
      "group": "Drive control",
      "area": "holding",
      "address": 3201,
      "type": "bool",
      "access": "R",
      "bit": 15
    },
    {
      "name": "Extended status word (EtI)",
      "group": "Drive control",
      "area": "holding",
      "address": 3206,
      "type": "uint16",
      "access": "R"
    },
    {
      "name": "Command word (CMD)",
      "group": "Drive control",
      "area": "holding",
      "address": 8501,
      "type": "uint16",
      "access": "RW",
      "description": "Drive state commands: 6 shutdown, 7 switch on, 15 enable operation, 0 disable voltage, 2 quick stop, 128 fault reset (rising edge). Bit 11 reverse direction, bit 8 stop"
    },
    {
      "name": "Extended command word (CMI)",
      "group": "Drive control",
      "area": "holding",
      "address": 8504,
      "type": "uint16",
      "access": "RW"
    },
    {
      "name": "Speed reference (LFRD)",
      "group": "Drive control",
      "area": "holding",
      "address": 8602,
      "type": "uint16",
      "access": "RW",
      "description": "Speed reference written over Modbus"
    },
    {
      "name": "Output speed (RFRD)",
      "group": "Drive control",
      "area": "holding",
      "address": 8604,
      "type": "uint16",
      "access": "R"
    },
    {
      "name": "Switching frequency (SFr)",
      "group": "Settings",
      "area": "holding",
      "address": 3102,
      "type": "uint16",
      "access": "RW",
      "description": "Example value 40 for 4 kHz"
    },
    {
      "name": "Maximum output frequency (tFr)",
      "group": "Settings",
      "area": "holding",
      "address": 3103,
      "type": "uint16",
      "access": "RW",
      "description": "Example value 600 for 60 Hz (0.1 Hz)"
    },
    {
      "name": "High speed (HSP)",
      "group": "Settings",
      "area": "holding",
      "address": 3104,
      "type": "uint16",
      "access": "RW",
      "description": "Example value 500 for 50 Hz (0.1 Hz)"
    },
    {
      "name": "Low speed (LSP)",
      "group": "Settings",
      "area": "holding",
      "address": 3105,
      "type": "uint16",
      "access": "RW",
      "description": "0.1 Hz"
    },
    {
      "name": "Acceleration time (ACC)",
      "group": "Settings",
      "area": "holding",
      "address": 9001,
      "type": "uint16",
      "access": "RW",
      "description": "The manual's example writes 13 for 13 s"
    },
    {
      "name": "Modbus address (Add)",
      "group": "Communication",
      "area": "holding",
      "address": 6001,
      "type": "uint16",
      "access": "RW",
      "description": "0 = off (broadcast only), 1 to 247"
    },
    {
      "name": "Modbus baud rate (tbr)",
      "group": "Communication",
      "area": "holding",
      "address": 6003,
      "type": "uint16",
      "access": "RW",
      "description": "4.8, 9.6, 19.2 or 38.4 kbps"
    },
    {
      "name": "Modbus format (tFO)",
      "group": "Communication",
      "area": "holding",
      "address": 6004,
      "type": "uint16",
      "access": "RW",
      "description": "8O1, 8E1, 8N1 or 8N2"
    },
    {
      "name": "Modbus time-out (ttO)",
      "group": "Communication",
      "area": "holding",
      "address": 6005,
      "type": "uint16",
      "access": "RW",
      "description": "0.1 to 30 s, default 10 s"
    },
    {
      "name": "Scanner input 1 source address (nMA1)",
      "group": "Communication scanner",
      "area": "holding",
      "address": 12701,
      "type": "uint16",
      "access": "RW",
      "description": "Address of the parameter read as input word 1"
    },
    {
      "name": "Scanner input 2 source address (nMA2)",
      "group": "Communication scanner",
      "area": "holding",
      "address": 12702,
      "type": "uint16",
      "access": "RW",
      "description": "Address of the parameter read as input word 2"
    },
    {
      "name": "Scanner input 3 source address (nMA3)",
      "group": "Communication scanner",
      "area": "holding",
      "address": 12703,
      "type": "uint16",
      "access": "RW",
      "description": "Address of the parameter read as input word 3"
    },
    {
      "name": "Scanner input 4 source address (nMA4)",
      "group": "Communication scanner",
      "area": "holding",
      "address": 12704,
      "type": "uint16",
      "access": "RW",
      "description": "Address of the parameter read as input word 4"
    },
    {
      "name": "Scanner output 1 destination address (nCA1)",
      "group": "Communication scanner",
      "area": "holding",
      "address": 12721,
      "type": "uint16",
      "access": "RW",
      "description": "Address of the parameter written as output word 1"
    },
    {
      "name": "Scanner output 2 destination address (nCA2)",
      "group": "Communication scanner",
      "area": "holding",
      "address": 12722,
      "type": "uint16",
      "access": "RW",
      "description": "Address of the parameter written as output word 2"
    },
    {
      "name": "Scanner output 3 destination address (nCA3)",
      "group": "Communication scanner",
      "area": "holding",
      "address": 12723,
      "type": "uint16",
      "access": "RW",
      "description": "Address of the parameter written as output word 3"
    },
    {
      "name": "Scanner output 4 destination address (nCA4)",
      "group": "Communication scanner",
      "area": "holding",
      "address": 12724,
      "type": "uint16",
      "access": "RW",
      "description": "Address of the parameter written as output word 4"
    },
    {
      "name": "Scanner input 1 value (nM1)",
      "group": "Communication scanner",
      "area": "holding",
      "address": 12741,
      "type": "uint16",
      "access": "R"
    },
    {
      "name": "Scanner input 2 value (nM2)",
      "group": "Communication scanner",
      "area": "holding",
      "address": 12742,
      "type": "uint16",
      "access": "R"
    },
    {
      "name": "Scanner input 3 value (nM3)",
      "group": "Communication scanner",
      "area": "holding",
      "address": 12743,
      "type": "uint16",
      "access": "R"
    },
    {
      "name": "Scanner input 4 value (nM4)",
      "group": "Communication scanner",
      "area": "holding",
      "address": 12744,
      "type": "uint16",
      "access": "R"
    },
    {
      "name": "Scanner output 1 value (nC1)",
      "group": "Communication scanner",
      "area": "holding",
      "address": 12761,
      "type": "uint16",
      "access": "RW"
    },
    {
      "name": "Scanner output 2 value (nC2)",
      "group": "Communication scanner",
      "area": "holding",
      "address": 12762,
      "type": "uint16",
      "access": "RW"
    },
    {
      "name": "Scanner output 3 value (nC3)",
      "group": "Communication scanner",
      "area": "holding",
      "address": 12763,
      "type": "uint16",
      "access": "RW"
    },
    {
      "name": "Scanner output 4 value (nC4)",
      "group": "Communication scanner",
      "area": "holding",
      "address": 12764,
      "type": "uint16",
      "access": "RW"
    }
  ]
}