{
  "spec_version": 1,
  "slug": "weg-cfw11",
  "manufacturer": "WEG",
  "model": "CFW11 (CFW-11 frequency inverter)",
  "category": "VFD",
  "supplier_url": "https://www.weg.net/catalog/weg/US/en/Drives/Variable-Speed-Drives/System-Drives/Variable-Speed-Drive-CFW11/Frequency-Inverter---CFW11-Series/p/MKT_WDC_GLOBAL_VARIABLE_SPEED_DRIVE_CFW11",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "None",
      "baud_rate": 9600,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 1,
      "count": 1,
      "name": "Speed reference",
      "data_type": "UInt16",
      "units": "rpm",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0001. Reference in rpm at the factory setting; P0208-P0212 can change the unit and scale."
    },
    {
      "address": 2,
      "count": 1,
      "name": "Motor speed",
      "data_type": "UInt16",
      "units": "rpm",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0002. Actual motor speed with a 0.5 s filter, in rpm at the factory setting."
    },
    {
      "address": 3,
      "count": 1,
      "name": "Motor current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P0003. Inverter output current; the parameter range is 0.0 to 4500.0 A, so the integer carries one decimal."
    },
    {
      "address": 4,
      "count": 1,
      "name": "DC link voltage (Ud)",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0004. DC link voltage in volts."
    },
    {
      "address": 5,
      "count": 1,
      "name": "Motor frequency",
      "data_type": "UInt16",
      "units": "Hz",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P0005. Output frequency; the parameter range is 0.0 to 1020.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": "P0006. 0 = Ready, 1 = Run, 2 = Undervoltage, 3 = Fault, 4 = Self-Tuning, 5 = Configuration, 6 = DC-Braking, 7 = STO."
    },
    {
      "address": 7,
      "count": 1,
      "name": "Motor voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0007. Estimated line voltage at the inverter output."
    },
    {
      "address": 9,
      "count": 1,
      "name": "Motor torque",
      "data_type": "Int16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P0009. Torque in percent of the rated torque; the range is -1000.0 to 1000.0 %, so the integer carries one decimal."
    },
    {
      "address": 10,
      "count": 1,
      "name": "Output power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P0010. Calculated output power; the range is 0.0 to 6553.5 kW, so the integer carries one decimal. The manual notes it is calculated indirectly and is not an energy meter."
    },
    {
      "address": 11,
      "count": 1,
      "name": "Output cos phi",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "P0011. Cosine of the angle between output voltage and output current; 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": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0012. Bit field: bit 0 = DI1 ... bit 7 = DI8, as the digital input section (13.1.3) defines."
    },
    {
      "address": 13,
      "count": 1,
      "name": "DO1 to DO5 status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0013. Bit field: bit 0 = DO1 ... bit 4 = DO5, as the digital output section (13.1.4) defines."
    },
    {
      "address": 25,
      "count": 1,
      "name": "DI9 to DI16 status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0025. Bit 0 = DI9, bit 1 = DI10, bit 2 = DI11, bit 3 = DI12, bit 4 = DI13, bit 5 = DI14, bit 6 = DI15, bit 7 = DI16."
    },
    {
      "address": 26,
      "count": 1,
      "name": "DO6 to DO13 status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0026. Bit field with the state of the accessory digital outputs DO6 to DO13."
    },
    {
      "address": 30,
      "count": 1,
      "name": "IGBT temperature, U arm",
      "data_type": "Int16",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P0030. Heatsink temperature; the range is -20.0 to 150.0 degC, so the integer carries one decimal."
    },
    {
      "address": 31,
      "count": 1,
      "name": "IGBT temperature, V arm",
      "data_type": "Int16",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P0031. As P0030, one decimal."
    },
    {
      "address": 32,
      "count": 1,
      "name": "IGBT temperature, W arm",
      "data_type": "Int16",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P0032. As P0030, one decimal."
    },
    {
      "address": 33,
      "count": 1,
      "name": "Rectifier temperature",
      "data_type": "Int16",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P0033. As P0030, one decimal."
    },
    {
      "address": 34,
      "count": 1,
      "name": "Internal air temperature",
      "data_type": "Int16",
      "units": "degC",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P0034. As P0030, one decimal."
    },
    {
      "address": 36,
      "count": 1,
      "name": "Heatsink fan speed",
      "data_type": "UInt16",
      "units": "rpm",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0036. Heatsink fan speed in rpm; the manual notes the parameter has no function in the modular drive mechanics."
    },
    {
      "address": 37,
      "count": 1,
      "name": "Motor overload status",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0037. Actual motor overload percentage; F072 trips at 100 %."
    },
    {
      "address": 42,
      "count": 1,
      "name": "Time powered",
      "data_type": "UInt16",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0042. Total hours the inverter has been powered; rolls over after 65535 h."
    },
    {
      "address": 43,
      "count": 1,
      "name": "Time enabled",
      "data_type": "UInt16",
      "units": "h",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "P0043. Total hours the inverter has been enabled; the range is 0.0 to 6553.5 h, so the integer carries one decimal in hours."
    },
    {
      "address": 44,
      "count": 1,
      "name": "kWh output energy",
      "data_type": "UInt16",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0044. Energy consumed by the motor, 0 to 65535 kWh, rolls over; P0204 = 4 resets it. The manual warns the value is calculated indirectly."
    },
    {
      "address": 48,
      "count": 1,
      "name": "Present alarm",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0048. Number of the alarm present at the inverter (0 when none); alarm codes are listed in chapter 15."
    },
    {
      "address": 49,
      "count": 1,
      "name": "Present fault",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0049. Number of the fault present at the inverter (0 when none); fault codes are listed in chapter 15."
    },
    {
      "address": 50,
      "count": 1,
      "name": "Last fault",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0050. Number of the most recent fault; the second to tenth follow at P0054, P0058, ... P0086."
    },
    {
      "address": 680,
      "count": 1,
      "name": "Logical status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0680. Bit 4 = quick stop active, bit 5 = second ramp, bit 6 = configuration mode, bit 7 = alarm condition, bit 8 = ramp enabled (running), bit 9 = general enabling active, bit 10 = speed direction (1 = direct), bit 11 = JOG, bit 12 = remote mode, bit 13 = undervoltage, bit 14 = PID automatic, bit 15 = fault condition; bits 0-3 are reserved."
    },
    {
      "address": 681,
      "count": 1,
      "name": "Motor speed in 13 bits",
      "data_type": "Int16",
      "units": "% of synchronous speed",
      "scale_factor": 1,
      "offset": 0,
      "formula": "x / 8192 * 100",
      "access": "R",
      "description": "P0681. 0 = 0 rpm and 8192 (2000h) = synchronous speed, so the fraction of synchronous speed is value / 8192. Negative values mean reverse rotation."
    },
    {
      "address": 682,
      "count": 1,
      "name": "Serial/USB control word",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "P0682. Bit 0 = start/stop, bit 1 = general enabling, bit 2 = direction of rotation (0 = reverse, 1 = direct), bit 3 = JOG, bit 4 = LOC/REM (1 = remote), bit 5 = second ramp, bit 6 = quick stop, bit 7 = fault reset; bits 8-15 reserved. Only writable when the command source is Serial/USB (P0105 and P0220-P0228), and the manual's quick-reference table calls bit 6 reserved instead of quick stop."
    },
    {
      "address": 683,
      "count": 1,
      "name": "Serial/USB speed reference",
      "data_type": "Int16",
      "units": "% of synchronous speed",
      "scale_factor": 1,
      "offset": 0,
      "formula": "x / 8192 * 100",
      "access": "RW",
      "description": "P0683. 0 = 0 rpm, 8192 (2000h) = synchronous speed; the sign selects the direction, which is combined with control-word bit 2. Active when P0221/P0222 select the serial reference."
    },
    {
      "address": 692,
      "count": 1,
      "name": "Operating mode states",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "P0692. Status of the special operation modes, including the self-tuning and guided start-up states that P0680 bit 6 only flags as 'configuration mode'."
    }
  ],
  "combined_registers": [],
  "notes": "RS-485 drive: the CFW-11 speaks Modbus RTU over RS-232/RS-485 and reaches Modbus Connect through a Modbus RTU-to-TCP gateway, so the serial block records the factory frame the gateway must use. Sources: WEG \"CFW-11 | RS-232 and RS-485 Serial Communication Manual\" 0899.5741 (chapter 5 \"Modbus-RTU Protocol\", sections 5.3.2 addressing and 5.4 functions; P0308-P0312 for the serial settings) and WEG \"CFW-11 Programming Manual\" 0899.5620 (chapter 16 parameters, chapter 17 communication). Section 5.3.2 states that the data addressing uses offset zero, so a parameter's Modbus address is its parameter number; this seed stores that number with zero-based addressing. Factory serial settings: P0308 = 1 (address), P0310 = 0 (9600 bit/s), P0311 = 0 (8 data bits, no parity, 1 stop bit) and P0312 = 2 (Modbus-RTU). Integer scaling follows the printed parameter ranges: 0.0 to 4500.0 A arrives as a 16-bit integer with one implied decimal (P0011 is 0.00 to 1.00, two decimals). P0681 and P0683 are 13-bit speed words in which 8192 equals the motor synchronous speed, so they are shown as a percentage of synchronous speed instead of an invented rpm factor. P0682 and P0683 only act when the drive's command and reference sources select Serial/USB (P0105, P0220-P0228), a commissioning step rather than a register. Sixteen-bit parameters only: the SoftPLC markers, floats and 32-bit values are not covered, and the SoftPLC bit markers are reached with function codes 01/05 while this map uses holding registers only, so the coil area is empty. WEG numbers the common monitor/control parameters the same way across the CFW family, so P0001-P0013 and P0680-P0683 repeat addresses that weg-cfw500 lists; the CFW11-specific rows are P0025/P0026, P0030-P0037, P0042-P0050 and P0692."
}
