{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Delta",
  "model": "MS300",
  "models": [
    "VFD-MS300",
    "MS300"
  ],
  "vendor_website": "deltaww.com",
  "description": "Delta MS300 compact drive (built-in RS-485 Modbus): control and status words, output measurements, and the main communication parameters",
  "revision": 1,
  "revised": "2026-11-10",
  "source": "Delta MS300 Series User Manual, chapter 12 section 9 (Modbus), and MS300 High Speed Model User Manual",
  "sources": [
    {
      "title": "Delta Standard Compact Drive MS300 Series User Manual",
      "version": "chapter 12, section 12.9 (Modbus)",
      "url": "https://www.forum.linuxcnc.org/media/kunena/attachments/33560/MS300-Manual1.pdf",
      "note": "2000H-2101H address list checked against the standard-model manual page (12.1-09-8)"
    },
    {
      "title": "Delta MS300 (High Speed Model) User Manual",
      "date": "2021",
      "url": "https://www.wolfautomation.com/content/delta-ms300-highspd-userman-21.pdf",
      "note": "chapter 12 address list, 2102H onward, and Pr.09 parameters; same Modbus layout"
    }
  ],
  "notes": [
    "A parameter GG-nn is the holding register 0xGGnn (Pr.04-01 is 0x0401). Functions 03, 06 and 10 are supported.",
    "Factory serial format is ASCII 7N2 at 9.6 kbit/s, station 1 (Pr.09-04 = 1). This map assumes RTU 8N2 (Pr.09-04 = 13), so set that parameter first.",
    "The control word (0x2000) and the fault word (0x2002) are write-only; they are listed as bit fields. To start the drive, write run and direction in one 0x2000 write.",
    "To control the drive over the link set the frequency source (Pr.00-20) and the operation source (Pr.00-21) to RS-485, then write 0x2001 or Pr.09-10.",
    "The registers from 0x2102 on were read from the MS300 High Speed Model manual, which shares the layout of the standard model; the extra registers of the 0x2200 block are not listed. Pr.09-01 (baud rate) is not listed because its raw scale is not stated clearly in the manual.",
    "Written from the manufacturer's manuals; not tested on a device."
  ],
  "protocol": "rtu",
  "unit_id": 1,
  "baudrate": 9600,
  "databits": 8,
  "parity": "N",
  "stopbits": 2,
  "byte_order": "big",
  "word_order": "big",
  "address_base": 0,
  "x_status": "official",
  "enums": {
    "run_cmd": {
      "0": "No function",
      "1": "Stop",
      "2": "Run",
      "3": "Jog + run"
    },
    "dir_cmd": {
      "0": "No function",
      "1": "Forward",
      "2": "Reverse",
      "3": "Change direction"
    },
    "accdec_cmd": {
      "0": "1st accel/decel",
      "1": "2nd accel/decel",
      "2": "3rd accel/decel",
      "3": "4th accel/decel"
    },
    "op_src_cmd": {
      "0": "No function",
      "1": "Keypad",
      "2": "Set by Pr.00-21",
      "3": "Change operation source"
    },
    "run_state": {
      "0": "Stopped",
      "1": "Decelerating",
      "2": "Standby",
      "3": "Running"
    },
    "dir_state": {
      "0": "Forward",
      "1": "Reverse to forward",
      "2": "Reverse",
      "3": "Forward to reverse"
    },
    "protocol": {
      "1": "ASCII 7N2",
      "2": "ASCII 7E1",
      "3": "ASCII 7O1",
      "4": "ASCII 7E2",
      "5": "ASCII 7O2",
      "6": "ASCII 8N1",
      "7": "ASCII 8N2",
      "8": "ASCII 8E1",
      "9": "ASCII 8O1",
      "10": "ASCII 8E2",
      "11": "ASCII 8O2",
      "12": "RTU 8N1",
      "13": "RTU 8N2",
      "14": "RTU 8E1",
      "15": "RTU 8O1",
      "16": "RTU 8E2",
      "17": "RTU 8O2"
    }
  },
  "registers": [
    {
      "name": "Run command",
      "group": "Control",
      "area": "holding",
      "address": "0x2000",
      "type": "uint16",
      "access": "W",
      "bit": 0,
      "bits": 2,
      "enum": "run_cmd",
      "description": "Bits 1-0 of the command word: stop or run."
    },
    {
      "name": "Direction command",
      "group": "Control",
      "area": "holding",
      "address": "0x2000",
      "type": "uint16",
      "access": "W",
      "bit": 4,
      "bits": 2,
      "enum": "dir_cmd",
      "description": "Bits 5-4 of the command word."
    },
    {
      "name": "Accel/decel selection",
      "group": "Control",
      "area": "holding",
      "address": "0x2000",
      "type": "uint16",
      "access": "W",
      "bit": 6,
      "bits": 2,
      "enum": "accdec_cmd",
      "description": "Bits 7-6 of the command word: acceleration and deceleration set to use."
    },
    {
      "name": "Use bits 6-11 of command word",
      "group": "Control",
      "area": "holding",
      "address": "0x2000",
      "type": "uint16",
      "access": "W",
      "bit": 12,
      "bits": 1,
      "description": "Bit 12: 1 enables the accel/decel selection and the multi-speed step in bits 6-11 of the command word."
    },
    {
      "name": "Speed step command",
      "group": "Control",
      "area": "holding",
      "address": "0x2000",
      "type": "uint16",
      "access": "W",
      "bit": 8,
      "bits": 4,
      "description": "Bits 11-8 of the command word: 0 = master speed, 1 to 15 = multi-step speed 1 to 15. Takes effect when bit 12 is set."
    },
    {
      "name": "Operation source command",
      "group": "Control",
      "area": "holding",
      "address": "0x2000",
      "type": "uint16",
      "access": "W",
      "bit": 13,
      "bits": 2,
      "enum": "op_src_cmd",
      "description": "Bits 14-13 of the command word."
    },
    {
      "name": "Frequency command",
      "group": "Control",
      "area": "holding",
      "address": "0x2001",
      "type": "uint16",
      "access": "RW",
      "scale": 0.01,
      "unit": "Hz",
      "description": "Frequency set point in 0.01 Hz (5000 = 50.00 Hz)."
    },
    {
      "name": "External fault",
      "group": "Control",
      "area": "holding",
      "address": "0x2002",
      "type": "uint16",
      "access": "W",
      "bit": 0,
      "bits": 1,
      "description": "Bit 0: 1 raises an external fault (EF)."
    },
    {
      "name": "Fault reset",
      "group": "Control",
      "area": "holding",
      "address": "0x2002",
      "type": "uint16",
      "access": "W",
      "bit": 1,
      "bits": 1,
      "description": "Bit 1: 1 resets the drive after a fault."
    },
    {
      "name": "Base block",
      "group": "Control",
      "area": "holding",
      "address": "0x2002",
      "type": "uint16",
      "access": "W",
      "bit": 2,
      "bits": 1,
      "description": "Bit 2: 1 turns B.B. on (outputs blocked)."
    },
    {
      "name": "Error code",
      "group": "Status",
      "area": "holding",
      "address": "0x2100",
      "type": "uint16",
      "access": "R",
      "bit": 0,
      "bits": 8,
      "description": "Low byte of the register: fault code, 0 when there is no fault (codes as in the manual's fault table)."
    },
    {
      "name": "Warning code",
      "group": "Status",
      "area": "holding",
      "address": "0x2100",
      "type": "uint16",
      "access": "R",
      "bit": 8,
      "bits": 8,
      "description": "High byte of the register: warning code, 0 when there is no warning."
    },
    {
      "name": "Run state",
      "group": "Status",
      "area": "holding",
      "address": "0x2101",
      "type": "uint16",
      "access": "R",
      "bit": 0,
      "bits": 2,
      "enum": "run_state",
      "description": "Bits 1-0 of the status word."
    },
    {
      "name": "Jog active",
      "group": "Status",
      "area": "holding",
      "address": "0x2101",
      "type": "uint16",
      "access": "R",
      "bit": 2,
      "bits": 1,
      "description": "Bit 2: 1 while a jog command is active."
    },
    {
      "name": "Direction state",
      "group": "Status",
      "area": "holding",
      "address": "0x2101",
      "type": "uint16",
      "access": "R",
      "bit": 3,
      "bits": 2,
      "enum": "dir_state",
      "description": "Bits 4-3 of the status word."
    },
    {
      "name": "Frequency from communication",
      "group": "Status",
      "area": "holding",
      "address": "0x2101",
      "type": "uint16",
      "access": "R",
      "bit": 8,
      "bits": 1,
      "description": "Bit 8: 1 when the master frequency comes from the serial interface."
    },
    {
      "name": "Frequency from analog",
      "group": "Status",
      "area": "holding",
      "address": "0x2101",
      "type": "uint16",
      "access": "R",
      "bit": 9,
      "bits": 1,
      "description": "Bit 9: 1 when the master frequency comes from an analog signal."
    },
    {
      "name": "Run command from communication",
      "group": "Status",
      "area": "holding",
      "address": "0x2101",
      "type": "uint16",
      "access": "R",
      "bit": 10,
      "bits": 1,
      "description": "Bit 10: 1 when the operation command comes from the serial interface."
    },
    {
      "name": "Parameters locked",
      "group": "Status",
      "area": "holding",
      "address": "0x2101",
      "type": "uint16",
      "access": "R",
      "bit": 11,
      "bits": 1,
      "description": "Bit 11: 1 when the parameters are locked."
    },
    {
      "name": "Frequency command (readback)",
      "group": "Status",
      "area": "holding",
      "address": "0x2102",
      "type": "uint16",
      "access": "R",
      "scale": 0.01,
      "unit": "Hz",
      "description": "Frequency set point in use."
    },
    {
      "name": "Output frequency",
      "group": "Status",
      "area": "holding",
      "address": "0x2103",
      "type": "uint16",
      "access": "R",
      "scale": 0.01,
      "unit": "Hz",
      "description": "Output frequency of the drive."
    },
    {
      "name": "Output current",
      "group": "Status",
      "area": "holding",
      "address": "0x2104",
      "type": "uint16",
      "access": "R",
      "scale": 0.01,
      "unit": "A",
      "description": "Output current, two decimals. Above 655.35 A the decimal point shifts to one decimal; the high byte of 0x211F says which."
    },
    {
      "name": "DC bus voltage",
      "group": "Status",
      "area": "holding",
      "address": "0x2105",
      "type": "uint16",
      "access": "R",
      "scale": 0.1,
      "unit": "V",
      "description": "DC bus voltage."
    },
    {
      "name": "Output voltage",
      "group": "Status",
      "area": "holding",
      "address": "0x2106",
      "type": "uint16",
      "access": "R",
      "scale": 0.1,
      "unit": "V",
      "description": "Output voltage."
    },
    {
      "name": "Multi-speed step",
      "group": "Status",
      "area": "holding",
      "address": "0x2107",
      "type": "uint16",
      "access": "R",
      "description": "Step number of the multi-step speed operation now running."
    },
    {
      "name": "Counter value",
      "group": "Status",
      "area": "holding",
      "address": "0x2109",
      "type": "uint16",
      "access": "R",
      "description": "Value of the internal counter."
    },
    {
      "name": "Power factor angle",
      "group": "Status",
      "area": "holding",
      "address": "0x210A",
      "type": "int16",
      "access": "R",
      "scale": 0.1,
      "unit": "°",
      "description": "Power factor angle."
    },
    {
      "name": "Output torque",
      "group": "Status",
      "area": "holding",
      "address": "0x210B",
      "type": "int16",
      "access": "R",
      "scale": 0.1,
      "unit": "%",
      "description": "Output torque as a percentage of rated."
    },
    {
      "name": "Motor speed",
      "group": "Status",
      "area": "holding",
      "address": "0x210C",
      "type": "uint16",
      "access": "R",
      "unit": "rpm",
      "description": "Actual motor speed."
    },
    {
      "name": "Output current decimals",
      "group": "Status",
      "area": "holding",
      "address": "0x211F",
      "type": "uint16",
      "access": "R",
      "bit": 8,
      "bits": 8,
      "description": "High byte: decimal places used by the output current display (see 0x2104)."
    },
    {
      "name": "Communication frequency",
      "group": "Parameters",
      "area": "holding",
      "address": "0x090A",
      "type": "uint16",
      "access": "RW",
      "scale": 0.01,
      "unit": "Hz",
      "description": "Pr.09-10: master frequency used when the frequency source is RS-485. Scaled like the frequency command."
    },
    {
      "name": "Communication address",
      "group": "Parameters",
      "area": "holding",
      "address": "0x0900",
      "type": "uint16",
      "access": "RW",
      "description": "Pr.09-00: Modbus station address of the drive (1 to 254)."
    },
    {
      "name": "Communication protocol",
      "group": "Parameters",
      "area": "holding",
      "address": "0x0904",
      "type": "uint16",
      "access": "RW",
      "enum": "protocol",
      "description": "Pr.09-04: Modbus mode and frame format of COM1."
    }
  ]
}