{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "Altus", "model": "Optidrive E3", "models": ["Optidrive E3", "ODE-3"], "vendor_website": "altus.com.br", "description": "Variable speed drive: control word, speed reference, ramp time, status and trip code, output frequency, current, torque and power, inputs, DC bus and temperatures", "revision": 1, "revised": "2026-11-10", "source": "Optidrive E3 Manual do usuário (ODE-3 Guia do usuário), Revisão 1.04", "sources": [ {"title": "Optidrive E3 Manual do usuário (ODE-3 Guia do usuário)", "version": "Revisão 1.04", "note": "linked in issue #118; chapter 8 (Comunicações Modbus RTU), section 8.4 register map", "date": "2021"} ], "notes": [ "Modbus RTU on the RJ45 connector (pin 7 RS485-, pin 8 RS485+; do not plug into Ethernet). FC03, FC06 and FC16 (registers 1 to 4 only). Registers are numbered from 1, as in the guide: masters that start at 0 must subtract 1.", "Factory settings: 115200 bit/s, 8 data bits, no parity, 1 stop bit. The address is the first index of parameter P-36 (0 to 63, default 1); the baud rate is the second index (9.6 to 115.2 kbit/s). P-36 also holds the communication-loss timeout.", "Registers 1 to 4 control the drive only when P-12 is 3 or 4 (Modbus control); register 4 needs P-12 = 4. Registers 6 to 24 and 2001 to 2016 are read-only. Parameter P-04 to P-60 is register 128 + the parameter number (P-15 is register 143); none is listed here.", "The text of register 6 says the low byte is the fault code and the high byte the drive state, but the status-word table (section 8.4.1) puts the fault code in the high byte, as the Optidrive ECO does. The map follows the status-word table: bits 0, 1, 2 and 6 for running, tripped, standby and ready, and the fault code in bits 8 to 15.", "Written from the user guide (published for the ODE-3 drives, called Optidrive E3 on its cover); this map has not been tested on a device." ], "protocol": "rtu", "unit_id": 1, "baudrate": 115200, "parity": "N", "databits": 8, "stopbits": 1, "byte_order": "big", "word_order": "big", "address_base": 1, "x_status": "official", "registers": [ {"name": "Run", "group": "Control", "area": "holding", "address": 1, "type": "bool", "bit": 0, "access": "RW", "description": "1 = run, 0 = stop"}, {"name": "Fast stop", "group": "Control", "area": "holding", "address": 1, "type": "bool", "bit": 1, "access": "RW", "description": "1 = stop with the second deceleration ramp"}, {"name": "Reset", "group": "Control", "area": "holding", "address": 1, "type": "bool", "bit": 2, "access": "RW", "description": "1 = reset an active trip; set back to 0 after the fault clears"}, {"name": "Coast stop", "group": "Control", "area": "holding", "address": 1, "type": "bool", "bit": 3, "access": "RW", "description": "1 = coast to stop"}, {"name": "Relay control", "group": "Control", "area": "holding", "address": 1, "type": "bool", "bit": 8, "access": "RW", "description": "1 = relay closed, 0 = open"}, {"name": "SD control", "group": "Control", "area": "holding", "address": 1, "type": "bool", "bit": 9, "access": "RW", "description": "Bit 9 of the control word; the guide says 1 = off, 0 = on without saying what SD is"}, {"name": "Speed reference", "group": "Control", "area": "holding", "address": 2, "type": "uint16", "scale": 0.1, "unit": "Hz", "access": "RW", "write_min": 0, "write_max": 500, "description": "Setpoint in Hz with one decimal; the guide gives 0 to 5000 raw"}, {"name": "PI setpoint / analog output", "group": "Control", "area": "holding", "address": 3, "type": "uint16", "scale": 0.0244140625, "unit": "%", "access": "RW", "write_min": 0, "write_max": 100, "description": "0 to 4096 = 0 to 100 %"}, {"name": "Ramp time", "group": "Control", "area": "holding", "address": 4, "type": "uint16", "scale": 0.01, "unit": "s", "access": "RW", "write_min": 0, "write_max": 600, "description": "Acceleration and deceleration time, 0 to 60000 raw; used when fieldbus ramp control is enabled"}, {"name": "Running", "group": "Status", "area": "holding", "address": 6, "type": "bool", "bit": 0, "enum": {"0": "Stopped", "1": "Running"}}, {"name": "Tripped", "group": "Status", "area": "holding", "address": 6, "type": "bool", "bit": 1, "enum": {"0": "OK", "1": "Tripped"}}, {"name": "Standby", "group": "Status", "area": "holding", "address": 6, "type": "bool", "bit": 2}, {"name": "Ready", "group": "Status", "area": "holding", "address": 6, "type": "bool", "bit": 6, "description": "Needs no trip, hardware enable present and no network loss"}, {"name": "Trip code", "group": "Status", "area": "holding", "address": 6, "type": "uint16", "bit": 8, "bits": 8, "description": "Number of the active fault; see the fault list in the guide"}, {"name": "Output frequency", "group": "Measurements", "area": "holding", "address": 7, "type": "uint16", "scale": 0.1, "unit": "Hz"}, {"name": "Output current", "group": "Measurements", "area": "holding", "address": 8, "type": "uint16", "scale": 0.1, "unit": "A"}, {"name": "Digital inputs", "group": "Measurements", "area": "holding", "address": 11, "type": "uint16", "description": "Bit 0 = digital input 1, and so on"}, {"name": "Analog input 1", "group": "Measurements", "area": "holding", "address": 20, "type": "uint16", "scale": 0.1, "unit": "%"}, {"name": "Analog input 2", "group": "Measurements", "area": "holding", "address": 21, "type": "uint16", "scale": 0.1, "unit": "%"}, {"name": "Pre-ramp speed reference", "group": "Measurements", "area": "holding", "address": 22, "type": "uint16", "scale": 0.1, "unit": "Hz", "description": "Internal frequency setpoint, Hz x 10"}, {"name": "DC bus voltage", "group": "Measurements", "area": "holding", "address": 23, "type": "uint16", "unit": "V"}, {"name": "Heatsink temperature", "group": "Measurements", "area": "holding", "address": 24, "type": "int16", "unit": "°C"}, {"name": "Status word 2", "group": "Status", "area": "holding", "address": 2001, "type": "uint16"}, {"name": "Ready (word 2)", "group": "Status", "area": "holding", "address": 2001, "type": "bool", "bit": 0}, {"name": "Running (word 2)", "group": "Status", "area": "holding", "address": 2001, "type": "bool", "bit": 1}, {"name": "Fault (word 2)", "group": "Status", "area": "holding", "address": 2001, "type": "bool", "bit": 2}, {"name": "Standby (word 2)", "group": "Status", "area": "holding", "address": 2001, "type": "bool", "bit": 3}, {"name": "Fire mode (word 2)", "group": "Status", "area": "holding", "address": 2001, "type": "bool", "bit": 4}, {"name": "Speed reached", "group": "Status", "area": "holding", "address": 2001, "type": "bool", "bit": 6}, {"name": "Below minimum speed", "group": "Status", "area": "holding", "address": 2001, "type": "bool", "bit": 7}, {"name": "Overload", "group": "Status", "area": "holding", "address": 2001, "type": "bool", "bit": 8, "description": "Motor current above P-08"}, {"name": "Network loss", "group": "Status", "area": "holding", "address": 2001, "type": "bool", "bit": 9}, {"name": "Heatsink over 85 C", "group": "Status", "area": "holding", "address": 2001, "type": "bool", "bit": 10}, {"name": "Control board over 80 C", "group": "Status", "area": "holding", "address": 2001, "type": "bool", "bit": 11}, {"name": "Switching frequency foldback", "group": "Status", "area": "holding", "address": 2001, "type": "bool", "bit": 12}, {"name": "Reverse rotation", "group": "Status", "area": "holding", "address": 2001, "type": "bool", "bit": 13}, {"name": "Output speed", "group": "Measurements", "area": "holding", "address": 2002, "type": "int16", "scale": 0.1, "unit": "Hz"}, {"name": "Output current (2003)", "group": "Measurements", "area": "holding", "address": 2003, "type": "uint16", "scale": 0.1, "unit": "A"}, {"name": "Output power", "group": "Measurements", "area": "holding", "address": 2004, "type": "uint16", "scale": 0.1, "unit": "kW"}, {"name": "IO status word", "group": "Status", "area": "holding", "address": 2005, "type": "uint16", "description": "Bits: 0-3 digital inputs 1 to 4, 6 and 7 IP66 forward and reverse switches, 8 digital output, 9 relay, 12 and 13 analog input signal lost"}, {"name": "Output torque", "group": "Measurements", "area": "holding", "address": 2006, "type": "int16", "scale": 0.1, "unit": "%", "description": "0.0 to +/-200.0 %"}, {"name": "DC bus voltage (2007)", "group": "Measurements", "area": "holding", "address": 2007, "type": "uint16", "unit": "V"}, {"name": "Heatsink temperature (2008)", "group": "Measurements", "area": "holding", "address": 2008, "type": "int16", "unit": "°C"}, {"name": "Analog input 1 (12 bit)", "group": "Measurements", "area": "holding", "address": 2009, "type": "uint16", "description": "0 to 4096"}, {"name": "Analog input 2 (12 bit)", "group": "Measurements", "area": "holding", "address": 2010, "type": "uint16", "description": "0 to 4096"}, {"name": "Analog output", "group": "Measurements", "area": "holding", "address": 2011, "type": "uint16", "scale": 0.1, "unit": "%"}, {"name": "PI output", "group": "Measurements", "area": "holding", "address": 2012, "type": "uint16", "scale": 0.1, "unit": "%"}, {"name": "Internal temperature", "group": "Measurements", "area": "holding", "address": 2013, "type": "int16", "unit": "°C"}, {"name": "Motor output voltage", "group": "Measurements", "area": "holding", "address": 2014, "type": "uint16", "unit": "V"}, {"name": "IP66 potentiometer input", "group": "Measurements", "area": "holding", "address": 2015, "type": "uint16", "description": "0 to 4096"}, {"name": "Fault code", "group": "Status", "area": "holding", "address": 2016, "type": "uint16"} ] }