{
  "spec_version": 1,
  "slug": "weg-cfw300",
  "manufacturer": "WEG",
  "model": "CFW300 (compact frequency inverter)",
  "category": "VFD",
  "supplier_url": "https://www.weg.net/catalog/weg/TD/en/Drives/Variable-Speed-Drives/Micro-and-Mini-Drives/Variable-Speed-Drive-CFW300/c/GLOBAL_WDC_INVERTER_CFW300",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "Even",
      "baud_rate": 19200,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 3,
      "count": 1,
      "name": "Motor current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P003. Output current in Arms; the range is 0.0 to 40.0 A, so the integer carries one decimal."
    },
    {
      "address": 4,
      "count": 1,
      "name": "DC link voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P004. DC link voltage in volts, 0 to 828 V."
    },
    {
      "address": 5,
      "count": 1,
      "name": "Output frequency",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P005. Output frequency applied to the motor; the range is 0.0 to 400.0 Hz, so the integer carries one decimal."
    },
    {
      "address": 6,
      "count": 1,
      "name": "Inverter status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P006. 0 = Ready, 1 = Run, 2 = Undervoltage, 3 = Fault, 4 = Self-Tuning, 5 = Configuration, 6 = DC Braking, 7 = Reserved, 8 = Fire Mode."
    },
    {
      "address": 7,
      "count": 1,
      "name": "Output voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P007. Line voltage at the inverter output, 0 to 480 V."
    },
    {
      "address": 9,
      "count": 1,
      "name": "Motor torque",
      "data_type": "Int16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P009. Torque in percent of the rated torque; the range is -200.0 to 200.0 %, so the integer carries one decimal. The parameter is marked VVW in the manual's properties column."
    },
    {
      "address": 11,
      "count": 1,
      "name": "Power factor",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "P011. The range is 0.00 to 1.00, so the integer carries two decimals."
    },
    {
      "address": 12,
      "count": 1,
      "name": "DI1 to DI8 status",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P012. Bit 0 = DI1 ... bit 7 = DI8 (the table states the range as 0 to FF hexa)."
    },
    {
      "address": 13,
      "count": 1,
      "name": "DO1 to DO4 status",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P013. Bit 0 = DO1 ... bit 3 = DO4 (range 0 to F hexa)."
    },
    {
      "address": 14,
      "count": 1,
      "name": "AO1 value",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P014. 0.0 to 100.0 %, one decimal."
    },
    {
      "address": 15,
      "count": 1,
      "name": "AO2 value",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P015. 0.0 to 100.0 %, one decimal."
    },
    {
      "address": 18,
      "count": 1,
      "name": "AI1 value",
      "data_type": "Int16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P018. -100.0 to 100.0 %, one decimal."
    },
    {
      "address": 19,
      "count": 1,
      "name": "AI2 value",
      "data_type": "Int16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P019. -100.0 to 100.0 %, one decimal."
    },
    {
      "address": 20,
      "count": 1,
      "name": "Potentiometer signal value",
      "data_type": "Int16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P020. -100.0 to 100.0 %, one decimal."
    },
    {
      "address": 22,
      "count": 1,
      "name": "Frequency input (FI) value",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P022. Value of the frequency input in hertz, 0 to 3000 Hz."
    },
    {
      "address": 30,
      "count": 1,
      "name": "Module temperature",
      "data_type": "Int16",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P030. -200.0 to 200.0 degC, one decimal."
    },
    {
      "address": 37,
      "count": 1,
      "name": "Motor overload Ixt",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P037. 0.0 to 100.0 %, one decimal."
    },
    {
      "address": 38,
      "count": 1,
      "name": "Encoder speed",
      "data_type": "Int16",
      "units": "rpm",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P038. -9999 to 9999 rpm."
    },
    {
      "address": 39,
      "count": 1,
      "name": "Encoder pulse count",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P039. 0 to 9999 pulses."
    },
    {
      "address": 48,
      "count": 1,
      "name": "Present alarm",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P048. Alarm number currently present (0 when none); the alarm codes are listed in chapter 10 of the programming manual."
    },
    {
      "address": 49,
      "count": 1,
      "name": "Present fault",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P049. Fault number currently present (0 when none); the fault codes are listed in chapter 10."
    },
    {
      "address": 50,
      "count": 1,
      "name": "Last fault",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P050. Number of the most recent fault; the second (P060) and third (P070) follow the same numbering."
    },
    {
      "address": 51,
      "count": 1,
      "name": "Current at last fault",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P051. Output current at the moment of the last fault, 0.0 to 40.0 A, one decimal."
    },
    {
      "address": 52,
      "count": 1,
      "name": "DC link voltage at last fault",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P052. DC link voltage at the moment of the last fault, 0 to 828 V."
    },
    {
      "address": 53,
      "count": 1,
      "name": "Frequency at last fault",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P053. Output frequency at the moment of the last fault, 0.0 to 400.0 Hz, one decimal."
    },
    {
      "address": 54,
      "count": 1,
      "name": "Temperature at last fault",
      "data_type": "UInt16",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P054. IGBT temperature at the moment of the last fault, 0.0 to 200.0 degC, one decimal."
    },
    {
      "address": 680,
      "count": 1,
      "name": "Status word",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P680. Bit 5 = second ramp, bit 6 = configuration mode, bit 7 = alarm condition, bit 8 = motor running, bit 9 = active general enable, bit 10 = speed direction (1 = forward), bit 11 = JOG, bit 12 = remote mode, bit 13 = undervoltage, bit 14 = reserved, bit 15 = fault condition; bits 0-4 reserved. Alarm and fault numbers are read from P048 and P049."
    },
    {
      "address": 681,
      "count": 1,
      "name": "Motor speed in 13 bits",
      "data_type": "Int16",
      "units": "% of rated frequency",
      "scale_factor": 1,
      "offset": 0,
      "formula": "x / 8192 * 100",
      "access": "R",
      "description": "P681. 0 = 0 and 8192 (2000h) = the rated frequency P403, so the value / 8192 is the fraction of the rated frequency. Negative values mean reverse rotation."
    },
    {
      "address": 682,
      "count": 1,
      "name": "Serial control word",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "P682. Bit 0 = run/stop, bit 1 = general enable, bit 2 = speed direction (0 = reverse, 1 = forward), bit 3 = JOG, bit 4 = LOC/REM (1 = remote), bit 5 = second ramp, bit 6 = reserved, bit 7 = fault reset; bits 8-15 reserved. Only writable over the serial interface, and the commands take effect when P105 and P220-P228 select the serial source."
    },
    {
      "address": 683,
      "count": 1,
      "name": "Serial speed reference",
      "data_type": "Int16",
      "units": "% of rated frequency",
      "scale_factor": 1,
      "offset": 0,
      "formula": "x / 8192 * 100",
      "access": "RW",
      "description": "P683. 0 = 0 and 8192 (2000h) = the rated frequency P403; the sign selects the direction, combined with control-word bit 2. Active when P221/P222 select the serial reference."
    }
  ],
  "combined_registers": [],
  "notes": "RS-485 compact drive: Modbus RTU over RS-485, reached through a Modbus RTU-to-TCP gateway, so the serial block records the factory frame the gateway must use. Sources: WEG \"CFW300 | Modbus RTU User's Manual\" 10003806158 (section 5.2 memory map and the serial parameters P308/P310/P311; P680-P683 status/control words in section 3) and WEG \"CFW300 Programming Manual\" 10007849716 (read-only parameters in chapter 11, fault parameters in chapter 10). Addressing: section 5.2 states that the data addressing uses offset zero, so the parameter number is the register address, and this seed stores the parameter number with zero-based addressing. Factory serial settings: P308 = 1 (address), P310 = 1 (19200 bit/s - note the default is 19200, not 9600) and P311 = 1 (8 data bits, even parity, 1 stop bit). Integer scaling follows the parameter ranges: a parameter documented as 0.0 to 40.0 A arrives as a 16-bit integer with one implied decimal, which is the factor used here. Speed reference parameters P001 and P002 are left out because their unit and scale are set by P208/P209/P210 rather than by a fixed range. P681 and P683 are 13-bit words in which 8192 equals the rated frequency P403, so they are shown as a percentage of the rated frequency instead of an invented rpm factor. The control word P682 and the reference P683 only take effect when the drive's command and reference sources select the serial interface (P105, P220-P228), which is a commissioning step. The SoftPLC bit markers are reachable with function codes 01/05 but are not part of the parameter map, so the coil area is left empty. WEG numbers the common monitor/control parameters the same way across the CFW family, so P003-P013 and P680-P683 repeat addresses that weg-cfw500 lists; the CFW300-specific part is its own parameter set and its 19200 8E1 factory frame."
}
