{
  "spec_version": 1,
  "slug": "invertek-optidrive-e3",
  "manufacturer": "Invertek Drives",
  "model": "Optidrive E3 (ODE-3)",
  "category": "VFD",
  "supplier_url": "https://www.invertekdrives.com/variable-frequency-drives/optidrive-e3",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "one_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "None",
      "baud_rate": 115200,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 1,
      "count": 1,
      "name": "Drive control word",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Bit 0 = run/stop (1 = enable), bit 1 = fast stop (2nd deceleration ramp), bit 2 = reset trip (must be cleared again), bit 3 = coast stop. Stop commands have priority over run: bit 3 > bit 1 > bit 0, so 0x0009 coasts to stop. Run/stop, fast stop and coast stop only act when P-31 = 0 or 1; reset works while the drive is in Modbus control mode (P-12 = 3 or 4)."
    },
    {
      "address": 2,
      "count": 1,
      "name": "Speed reference",
      "data_type": "Int16",
      "units": "Hz",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Speed setpoint with one decimal place (200 = 20.0 Hz); upper limit is P-01 Maximum speed. Do not use together with register 5."
    },
    {
      "address": 4,
      "count": 1,
      "name": "Modbus ramp control time",
      "data_type": "UInt16",
      "units": "s",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "RW",
      "description": "Acceleration and deceleration ramp time, applied to both ramps simultaneously (500 = 5.00 s). Active only when P-12 = 4 (Modbus control with ramp control)."
    },
    {
      "address": 6,
      "count": 1,
      "name": "Drive status and error code",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "High byte = drive error (fault) code, valid when tripped. Low byte: bit 0 = drive running, bit 1 = drive tripped, bit 5 = in standby, bit 6 = drive ready to run."
    },
    {
      "address": 7,
      "count": 1,
      "name": "Output frequency",
      "data_type": "Int16",
      "units": "Hz",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 8,
      "count": 1,
      "name": "Motor current",
      "data_type": "UInt16",
      "units": "A",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 9,
      "count": 1,
      "name": "Motor torque",
      "data_type": "Int16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Torque in percent of motor rated torque (100 = 10.0%)."
    },
    {
      "address": 10,
      "count": 1,
      "name": "Motor power",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 11,
      "count": 1,
      "name": "Digital input status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Bit-coded status of the digital inputs (P00-04 monitor); bit assignment is not documented in AN-ODE-3-038."
    },
    {
      "address": 12,
      "count": 1,
      "name": "Rating ID",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Internal drive rating identifier."
    },
    {
      "address": 13,
      "count": 1,
      "name": "Power rating",
      "data_type": "UInt16",
      "units": "kW",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Drive power rating (37 = 0.37 kW / HP)."
    },
    {
      "address": 14,
      "count": 1,
      "name": "Voltage rating",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 15,
      "count": 1,
      "name": "IO processor software version",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Two decimal places (300 = 3.00)."
    },
    {
      "address": 16,
      "count": 1,
      "name": "Motor control processor software version",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R",
      "description": "Two decimal places (300 = 3.00)."
    },
    {
      "address": 17,
      "count": 1,
      "name": "Drive type",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Internal drive type code."
    },
    {
      "address": 20,
      "count": 1,
      "name": "Analog input 1 result",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Analog input 1 level in percent of full scale (500 = 50.0%)."
    },
    {
      "address": 21,
      "count": 1,
      "name": "Analog input 2 result",
      "data_type": "UInt16",
      "units": "%",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Analog input 2 level in percent of full scale (500 = 50.0%)."
    },
    {
      "address": 22,
      "count": 1,
      "name": "Pre-ramp speed reference",
      "data_type": "Int16",
      "units": "Hz",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 23,
      "count": 1,
      "name": "DC bus voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 24,
      "count": 1,
      "name": "Drive power stage temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 25,
      "count": 1,
      "name": "Drive serial number 4",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "The 11-digit serial number is spread over registers 25-28, least significant part first (example in AN-ODE-3-038: 25 = 1, 26 = 1, 27 = 8745, 28 = 57)."
    },
    {
      "address": 26,
      "count": 1,
      "name": "Drive serial number 3",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 27,
      "count": 1,
      "name": "Drive serial number 2",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 28,
      "count": 1,
      "name": "Drive serial number 1",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 29,
      "count": 1,
      "name": "Relay output status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Bit 0 = relay contacts closed."
    },
    {
      "address": 32,
      "count": 1,
      "name": "kWh meter",
      "data_type": "UInt16",
      "units": "kWh",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Energy counter, one decimal place (100 = 10.0 kWh); rolls over into register 33."
    },
    {
      "address": 33,
      "count": 1,
      "name": "MWh meter",
      "data_type": "UInt16",
      "units": "MWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Whole-MWh part of the energy counter (10 = 10 MWh)."
    },
    {
      "address": 34,
      "count": 1,
      "name": "Running time, hours",
      "data_type": "UInt16",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 35,
      "count": 1,
      "name": "Running time, minutes and seconds",
      "data_type": "UInt16",
      "units": "s",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Seconds within the current hour (100 = 100 s)."
    },
    {
      "address": 36,
      "count": 1,
      "name": "Run time since last enable, hours",
      "data_type": "UInt16",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 37,
      "count": 1,
      "name": "Run time since last enable, minutes and seconds",
      "data_type": "UInt16",
      "units": "s",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Seconds within the current hour (100 = 100 s)."
    },
    {
      "address": 39,
      "count": 1,
      "name": "Internal drive temperature",
      "data_type": "Int16",
      "units": "°C",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 42,
      "count": 1,
      "name": "Digital pot / keypad reference",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Internal speed reference format (3000 = 50 Hz)."
    },
    {
      "address": 43,
      "count": 1,
      "name": "Output voltage",
      "data_type": "UInt16",
      "units": "V",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "AC RMS output voltage (100 = 100 V)."
    },
    {
      "address": 44,
      "count": 1,
      "name": "Parameter access index",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Parameter number (1-60) that register 45 reads or writes. AN-ODE-3-038 lists the parameter number to register mapping in Appendix A (P-01 = 129, P-02 = 130, ...)."
    },
    {
      "address": 45,
      "count": 1,
      "name": "Parameter access value",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Value of the parameter selected by register 44; scaling follows Appendix A of AN-ODE-3-038 (for example P-01 Maximum speed uses the internal format 3000 = 50.0 Hz)."
    }
  ],
  "combined_registers": [],
  "notes": "RS-485 device: reach it through a Modbus RTU-to-TCP gateway using the factory serial settings above (P-36 index 1 = address 1, index 2 = 115.2 kbps; data format is fixed at 8 data bits, no parity, 1 stop bit). Only functions 03 (read holding registers) and 06 (write single holding register) are supported. Register numbers are the supplier's 1-based numbers from application note AN-ODE-3-038 (04 December 2015), so register 1 is the wire address 0. Source: Invertek Drives AN-ODE-3-038 Modbus RTU Control and Register Mapping, plus the Optidrive E3 user guide for the P-36 defaults. Registers 5 and 18/19 are left out: the two public revisions of AN-ODE-3-038 disagree about register 5 (the 04-12-2015 issue describes a high-resolution speed reference but its table marks the register read-only, and issue 2 of 07 December 2016 lists it as Reserved with no function), so there is no unambiguous writable high-resolution setpoint to publish; the scope channels 18/19 carry no fixed measurement."
}
