{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "Altus", "model": "Optidrive Eco", "models": ["Optidrive Eco", "Optidrive ECO", "ODV-3"], "vendor_website": "altus.com.br", "description": "HVAC variable speed drive: control word, speed reference, ramp time, status and trip code, output frequency, current, torque and power, inputs, DC bus, temperature and energy meters", "revision": 1, "revised": "2026-11-10", "source": "Guia do usuário do Optidrive ECO, Versão 3.12", "sources": [ {"title": "Guia do usuário do Optidrive ECO", "version": "Versão 3.12", "note": "linked in issue #119; section 10.2 (Comunicações do Modbus RTU); written for firmware 2.51"} ], "notes": [ "Modbus RTU on the RJ45 connector (pin 7 RS485-, pin 8 RS485+), also used by BACnet MS/TP. 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: address 1 (P5-01, 1 to 63; P5-16 allows 0 to 247), 115.2 kbit/s (P5-03), no parity and 1 stop bit (P5-04 = n-1). P5-04 also allows n-2, odd and even parity with one stop bit; P5-01, P5-03 and P5-04 cannot be changed over Modbus.", "Registers 1 and 2 control the drive only when P1-12 = 4 (Modbus RTU) and no fieldbus module is fitted; register 4 needs fieldbus ramp control. Registers 6 to 35 can always be read. Register 3 is reserved.", "Every parameter of groups 1 to 5 is also a register: its number is the parameter number (P1-01 is register 101). Values with a decimal point are sent multiplied by 10. Only P1-01 is listed here as an example.", "Register 6: the low byte is the status byte, the high byte is the fault number. The guide's text for the pre-ramp speed reference (register 22) gives no scale; it is shown raw. Energy meters are two registers each (kWh and MWh parts) with no stated decimals. The guide is written for firmware 2.51.", "Written from the user guide; 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": "Speed reference", "group": "Control", "area": "holding", "address": 2, "type": "uint16", "scale": 0.1, "unit": "Hz", "access": "RW", "description": "Setpoint in Hz with one decimal"}, {"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": "Manual mode", "group": "Status", "area": "holding", "address": 6, "type": "bool", "bit": 2, "enum": {"0": "Automatic", "1": "Manual"}}, {"name": "Inhibited", "group": "Status", "area": "holding", "address": 6, "type": "bool", "bit": 3}, {"name": "Service overdue", "group": "Status", "area": "holding", "address": 6, "type": "bool", "bit": 4}, {"name": "Standby", "group": "Status", "area": "holding", "address": 6, "type": "bool", "bit": 5}, {"name": "Ready", "group": "Status", "area": "holding", "address": 6, "type": "bool", "bit": 6}, {"name": "Load alarm", "group": "Status", "area": "holding", "address": 6, "type": "bool", "bit": 7, "description": "1 = low or high load detected"}, {"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": "Output torque", "group": "Measurements", "area": "holding", "address": 9, "type": "int16", "scale": 0.1, "unit": "%"}, {"name": "Output power", "group": "Measurements", "area": "holding", "address": 10, "type": "uint16", "scale": 0.01, "unit": "kW"}, {"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": 1, "description": "Internal frequency setpoint"}, {"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": "Energy kWh (resettable)", "group": "Energy", "area": "holding", "address": 30, "type": "uint16", "description": "User-resettable energy meter, kWh part (P0-26); decimals not stated"}, {"name": "Energy MWh (resettable)", "group": "Energy", "area": "holding", "address": 31, "type": "uint16", "description": "User-resettable energy meter, MWh part (P0-27)"}, {"name": "Energy kWh (total)", "group": "Energy", "area": "holding", "address": 32, "type": "uint16", "description": "Non-resettable energy meter, kWh part"}, {"name": "Energy MWh (total)", "group": "Energy", "area": "holding", "address": 33, "type": "uint16", "description": "Non-resettable energy meter, MWh part"}, {"name": "Operating hours", "group": "Info", "area": "holding", "address": 34, "type": "uint16", "unit": "h", "description": "Total operating time, hours (P0-31)"}, {"name": "Operating minutes and seconds", "group": "Info", "area": "holding", "address": 35, "type": "uint16", "description": "Total operating time, minutes and seconds (P0-31); packing not described"}, {"name": "Maximum frequency", "group": "Parameters", "area": "holding", "address": 101, "type": "uint16", "scale": 0.1, "unit": "Hz", "access": "RW", "description": "P1-01"} ] }