{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "Danfoss", "model": "VLT AutomationDrive FC 302", "models": ["FC 302"], "vendor_website": "danfoss.com", "description": "VLT AutomationDrive FC 302 over the built-in RS485 port, Modbus RTU with the FC control profile", "revision": 1, "revised": "2026-11-10", "source": "Danfoss, \"Modbus RTU Operating Instruction\", MG92B102 (FC series, software 6.4x) and \"VLT AutomationDrive FC 301/FC 302 Programming Guide\", AU275636650261en-003201 (2024.09, software 9.5x and 48.96)", "sources": [{"title": "Modbus RTU Operating Instruction", "version": "MG92B102", "url": "https://assets.danfoss.com/documents/271338/AQ361181101347en-000101.pdf", "note": "linked in issue #187; chapters 4 to 7 (register addressing, parameter handling, FC profile)"}, {"title": "VLT AutomationDrive FC 301/FC 302 Programming Guide, software versions 9.5x and 48.96", "version": "AU275636650261en-003201", "date": "2024-09", "url": "https://assets.danfoss.com/documents/431896/AU275636650261en-003201.pdf", "note": "linked in issue #187; parameter descriptions 1-, 3-, 4-, 8-, 15- and 16- (data type, conversion index, options)"}], "notes": ["The register scheme is the one of the FC 102 map: the holding register of parameter x-yy is 10 times its number (3-41 is register 3410, 16-14 is register 16140, 8-30 is register 8300). The guide counts registers from 1 and the bus address is one less, so this map uses address_base 1.", "Control word, bus reference, status word and main actual value are registers 50000, 50010, 50200 and 50210; the PCD blocks at 2810 and 2910 start with the same words. Registers 2812 to 2873 and 2912 to 2973 hold parameters chosen in 8-42 and 8-43 and are not in this map.", "Array parameters (3-10, 15-30) need the index in register 9 first. A 32-bit parameter uses two registers, high word first.", "Coil 65 chooses whether written parameters go to RAM only (0) or to RAM and EEPROM (1). The control word, reference, status word and output frequency are also coils 1 to 64; they are not in this map.", "To enable Modbus: 8-30 Protocol = Modbus RTU, 8-31 Address 1 to 247, 8-32 baud rate, 8-33 parity (even parity with 1 stop bit by default). The Modbus guide lists 2400 to 19200 baud, the Programming Guide 2400 to 115200; all of them are in the table. The default baud rate is not stated for Modbus; 9600 is a placeholder.", "The Modbus RTU Operating Instruction describes the whole FC series (software 6.4x) and does not name the FC 302; the Programming Guide for software 9.5x and 48.96 is used for the parameter sizes and scaling. The FC 301 shares this guide and scheme but is not listed as a model.", "Parameters whose conversion index is one of the special values 67, 74, 75 or 100 (speed in RPM, hours, kWh counter, temperatures) and the power in kW 16-10 are left out because the guide does not explain how to scale them. Text parameters are limited to the serial number.", "Written from the manufacturer's documents; not tested on a device."], "protocol": "rtu", "unit_id": 1, "baudrate": 9600, "parity": "E", "databits": 8, "stopbits": 1, "byte_order": "big", "word_order": "big", "address_base": 1, "x_status": "official", "enums": { "protocol": {"0": "FC", "1": "FC MC", "2": "Modbus RTU"}, "baud_rate": {"0": "2400", "1": "4800", "2": "9600", "3": "19200", "4": "38400", "5": "57600", "6": "76800", "7": "115200"}, "parity": {"0": "Even, 1 stop bit", "1": "Odd, 1 stop bit", "2": "None, 1 stop bit", "3": "None, 2 stop bits"}, "control_profile": {"0": "FC profile", "1": "PROFIdrive profile"} }, "registers": [ {"name": "Last error code", "group": "Info", "area": "holding", "address": 7, "type": "uint16", "description": "Last error code from the FC data object interface"}, {"name": "Parameter index", "group": "Info", "area": "holding", "address": 9, "type": "uint16", "access": "RW", "description": "Index used for the next access to an array parameter (for example 3-10 or 15-30); set it before reading or writing one, then set it back to 0"}, {"name": "Control word", "group": "Control", "area": "holding", "address": 50000, "type": "uint16", "access": "RW", "description": "FC profile control word (8-10 Control Word Profile = FC profile)"}, {"name": "Control word - Preset reference select", "group": "Control", "area": "holding", "address": 50000, "type": "uint16", "access": "RW", "bit": 0, "bits": 2, "enum": {"0": "Preset reference 1", "1": "Preset reference 2", "2": "Preset reference 3", "3": "Preset reference 4"}, "description": "Chooses one of the four values of 3-10 Preset Reference (bits 0 and 1)"}, {"name": "Control word - DC brake", "group": "Control", "area": "holding", "address": 50000, "type": "bool", "access": "RW", "bit": 2, "description": "0 = DC brake and stop, 1 = ramp"}, {"name": "Control word - Coasting", "group": "Control", "area": "holding", "address": 50000, "type": "bool", "access": "RW", "bit": 3, "description": "0 = coast to a stop, 1 = no coasting"}, {"name": "Control word - Quick stop", "group": "Control", "area": "holding", "address": 50000, "type": "bool", "access": "RW", "bit": 4, "description": "0 = quick stop, 1 = ramp"}, {"name": "Control word - Hold output frequency", "group": "Control", "area": "holding", "address": 50000, "type": "bool", "access": "RW", "bit": 5, "description": "0 = hold the present output frequency, 1 = use the ramp"}, {"name": "Control word - Start", "group": "Control", "area": "holding", "address": 50000, "type": "bool", "access": "RW", "bit": 6, "description": "0 = ramp stop, 1 = start"}, {"name": "Control word - Reset", "group": "Control", "area": "holding", "address": 50000, "type": "bool", "access": "RW", "bit": 7, "description": "Reset a trip on the rising edge"}, {"name": "Control word - Jog", "group": "Control", "area": "holding", "address": 50000, "type": "bool", "access": "RW", "bit": 8, "description": "1 = run at the jog speed (3-11)"}, {"name": "Control word - Ramp 2", "group": "Control", "area": "holding", "address": 50000, "type": "bool", "access": "RW", "bit": 9, "description": "0 = ramp 1, 1 = ramp 2"}, {"name": "Control word - Data valid", "group": "Control", "area": "holding", "address": 50000, "type": "bool", "access": "RW", "bit": 10, "description": "1 = the drive uses the control word, 0 = it ignores it"}, {"name": "Control word - Relay 01", "group": "Control", "area": "holding", "address": 50000, "type": "bool", "access": "RW", "bit": 11, "description": "1 = relay 01 on, if 5-40 Function Relay selects control word bit 11"}, {"name": "Control word - Relay 02", "group": "Control", "area": "holding", "address": 50000, "type": "bool", "access": "RW", "bit": 12, "description": "1 = relay 02 on, if 5-40 Function Relay selects control word bit 12"}, {"name": "Control word - Set-up select", "group": "Control", "area": "holding", "address": 50000, "type": "bool", "access": "RW", "bit": 13, "description": "0 = set-up 1, 1 = set-up 2 (only with 0-10 Active Set-up = Multi set-up)"}, {"name": "Control word - Reverse", "group": "Control", "area": "holding", "address": 50000, "type": "bool", "access": "RW", "bit": 15, "description": "1 = reverse (acts only if 8-54 Reversing Select allows the bus)"}, {"name": "Bus reference", "group": "Control", "area": "holding", "address": 50010, "type": "int16", "access": "RW", "scale": 0.006103515625, "unit": "%", "description": "Speed reference in percent of the maximum reference (3-03): 16384 (4000 hex) = 100%, negative values in two's complement. Scale is 100/16384"}, {"name": "Status word", "group": "Status", "area": "holding", "address": 50200, "type": "uint16", "description": "FC profile status word"}, {"name": "Status word - Control ready", "group": "Status", "area": "holding", "address": 50200, "type": "bool", "bit": 0, "description": "0 = control not ready, 1 = control ready"}, {"name": "Status word - Drive ready", "group": "Status", "area": "holding", "address": 50200, "type": "bool", "bit": 1, "description": "0 = not ready, 1 = ready for operation"}, {"name": "Status word - Enabled", "group": "Status", "area": "holding", "address": 50200, "type": "bool", "bit": 2, "description": "0 = coasting, 1 = enabled"}, {"name": "Status word - Trip", "group": "Status", "area": "holding", "address": 50200, "type": "bool", "bit": 3, "description": "1 = the drive has tripped"}, {"name": "Status word - Error", "group": "Status", "area": "holding", "address": 50200, "type": "bool", "bit": 4, "description": "1 = error without a trip"}, {"name": "Status word - Trip lock", "group": "Status", "area": "holding", "address": 50200, "type": "bool", "bit": 6, "description": "1 = tripped and locked"}, {"name": "Status word - Warning", "group": "Status", "area": "holding", "address": 50200, "type": "bool", "bit": 7, "description": "1 = a warning is active"}, {"name": "Status word - Speed at reference", "group": "Status", "area": "holding", "address": 50200, "type": "bool", "bit": 8, "description": "0 = speed differs from the reference, 1 = speed matches the reference"}, {"name": "Status word - Bus control", "group": "Status", "area": "holding", "address": 50200, "type": "bool", "bit": 9, "description": "0 = local operation, 1 = the drive can be controlled over the bus"}, {"name": "Status word - Frequency within limits", "group": "Status", "area": "holding", "address": 50200, "type": "bool", "bit": 10, "description": "0 = output frequency at a speed limit (4-12 or 4-14), 1 = within limits"}, {"name": "Status word - Running", "group": "Status", "area": "holding", "address": 50200, "type": "bool", "bit": 11, "description": "0 = motor not running, 1 = in operation"}, {"name": "Status word - Stopped by overtemperature (auto start)", "group": "Status", "area": "holding", "address": 50200, "type": "bool", "bit": 12, "description": "1 = stopped for temporary overtemperature, resumes by itself"}, {"name": "Status word - DC link voltage warning", "group": "Status", "area": "holding", "address": 50200, "type": "bool", "bit": 13, "description": "1 = DC link voltage too low or too high"}, {"name": "Status word - Current limit exceeded", "group": "Status", "area": "holding", "address": 50200, "type": "bool", "bit": 14, "description": "1 = the current limit is exceeded"}, {"name": "Status word - Timer exceeded", "group": "Status", "area": "holding", "address": 50200, "type": "bool", "bit": 15, "description": "1 = a motor or drive thermal timer has passed 100%"}, {"name": "Main actual value", "group": "Status", "area": "holding", "address": 50210, "type": "int16", "scale": 0.006103515625, "unit": "%", "description": "Actual output frequency, scaled like the bus reference: 16384 (4000 hex) = 100%. Scale is 100/16384"}, {"name": "Control word (PCD block)", "group": "Control", "area": "holding", "address": 2810, "type": "uint16", "access": "RW", "description": "Same control word as register 50000, first register of the PCD write block (8-42 PCD write configuration)"}, {"name": "Bus reference (PCD block)", "group": "Control", "area": "holding", "address": 2811, "type": "int16", "access": "RW", "scale": 0.006103515625, "unit": "%", "description": "Same bus reference as register 50010 (16384 = 100%), second register of the PCD write block"}, {"name": "Status word (PCD block)", "group": "Status", "area": "holding", "address": 2910, "type": "uint16", "description": "Same status word as register 50200, first register of the PCD read block (8-43 PCD read configuration)"}, {"name": "Main actual value (PCD block)", "group": "Status", "area": "holding", "address": 2911, "type": "int16", "scale": 0.006103515625, "unit": "%", "description": "Same main actual value as register 50210 (16384 = 100%), second register of the PCD read block"}, {"name": "16-01 Reference [Unit]", "group": "Measurements", "area": "holding", "address": 16010, "type": "int32", "scale": 0.001, "description": "Present reference in the unit set by 1-00 Configuration Mode (Hz, Nm or RPM)"}, {"name": "16-02 Reference %", "group": "Measurements", "area": "holding", "address": 16020, "type": "int16", "scale": 0.1, "unit": "%"}, {"name": "16-05 Main Actual Value [%]", "group": "Measurements", "area": "holding", "address": 16050, "type": "int16", "scale": 0.01, "unit": "%"}, {"name": "16-11 Power [hp]", "group": "Measurements", "area": "holding", "address": 16110, "type": "int32", "scale": 0.01, "unit": "hp"}, {"name": "16-12 Motor Voltage", "group": "Measurements", "area": "holding", "address": 16120, "type": "uint16", "scale": 0.1, "unit": "V"}, {"name": "16-13 Frequency", "group": "Measurements", "area": "holding", "address": 16130, "type": "uint16", "scale": 0.1, "unit": "Hz"}, {"name": "16-14 Motor Current", "group": "Measurements", "area": "holding", "address": 16140, "type": "int32", "scale": 0.01, "unit": "A"}, {"name": "16-15 Frequency [%]", "group": "Measurements", "area": "holding", "address": 16150, "type": "int16", "scale": 0.01, "unit": "%", "comment": "The Programming Guide gives the conversion index but the data type is cut off in the page layout; int16 assumed from the range -100 to 100"}, {"name": "16-16 Torque [Nm]", "group": "Measurements", "area": "holding", "address": 16160, "type": "int16", "scale": 0.1, "unit": "Nm"}, {"name": "16-18 Motor Thermal", "group": "Measurements", "area": "holding", "address": 16180, "type": "uint16", "unit": "%", "description": "One-byte parameter, read as a register"}, {"name": "16-30 DC Link Voltage", "group": "Measurements", "area": "holding", "address": 16300, "type": "uint16", "unit": "V"}, {"name": "16-35 Inverter Thermal", "group": "Measurements", "area": "holding", "address": 16350, "type": "uint16", "unit": "%", "description": "One-byte parameter, read as a register"}, {"name": "16-36 Inv. Nom. Current", "group": "Measurements", "area": "holding", "address": 16360, "type": "uint32", "scale": 0.01, "unit": "A"}, {"name": "16-37 Inv. Max. Current", "group": "Measurements", "area": "holding", "address": 16370, "type": "uint32", "scale": 0.01, "unit": "A"}, {"name": "16-60 Digital Input", "group": "Inputs and outputs", "area": "holding", "address": 16600, "type": "uint16", "description": "Bit pattern of the digital inputs"}, {"name": "16-62 Analog Input 53", "group": "Inputs and outputs", "area": "holding", "address": 16620, "type": "int32", "scale": 0.001, "description": "Voltage or current, depending on the switch setting of terminal 53"}, {"name": "16-64 Analog Input 54", "group": "Inputs and outputs", "area": "holding", "address": 16640, "type": "int32", "scale": 0.001, "description": "Voltage or current, depending on the switch setting of terminal 54"}, {"name": "16-65 Analog Output 42 [mA]", "group": "Inputs and outputs", "area": "holding", "address": 16650, "type": "int16", "scale": 0.001, "unit": "mA"}, {"name": "16-71 Relay Output [bin]", "group": "Inputs and outputs", "area": "holding", "address": 16710, "type": "int16", "description": "Bit pattern of the relay outputs"}, {"name": "16-90 Alarm Word", "group": "Alarms", "area": "holding", "address": 16900, "type": "uint32", "description": "Alarm word as a bit pattern (bits are in the Programming Guide)"}, {"name": "16-92 Warning Word", "group": "Alarms", "area": "holding", "address": 16920, "type": "uint32", "description": "Warning word as a bit pattern (bits are in the Programming Guide)"}, {"name": "16-94 Ext. Status Word", "group": "Alarms", "area": "holding", "address": 16940, "type": "uint32"}, {"name": "15-03 Power Up's", "group": "Info", "area": "holding", "address": 15030, "type": "uint32"}, {"name": "15-04 Over Temp's", "group": "Info", "area": "holding", "address": 15040, "type": "uint16"}, {"name": "15-05 Over Volt's", "group": "Info", "area": "holding", "address": 15050, "type": "uint16"}, {"name": "15-30 Fault Log: Error Code", "group": "Info", "area": "holding", "address": 15300, "type": "uint16", "description": "Array of 10 entries; set the index in register 9 first"}, {"name": "15-51 Frequency Converter Serial Number", "group": "Info", "area": "holding", "address": 15510, "type": "string", "length": 5, "role": "serial", "description": "10 characters"}, {"name": "1-22 Motor Voltage", "group": "Motor", "area": "holding", "address": 1220, "type": "uint16", "access": "RW", "unit": "V"}, {"name": "1-23 Motor Frequency", "group": "Motor", "area": "holding", "address": 1230, "type": "uint16", "access": "RW", "unit": "Hz"}, {"name": "1-24 Motor Current", "group": "Motor", "area": "holding", "address": 1240, "type": "uint32", "access": "RW", "scale": 0.01, "unit": "A"}, {"name": "3-02 Minimum Reference", "group": "Reference and ramps", "area": "holding", "address": 3020, "type": "int32", "access": "RW", "scale": 0.001}, {"name": "3-03 Maximum Reference", "group": "Reference and ramps", "area": "holding", "address": 3030, "type": "int32", "access": "RW", "scale": 0.001}, {"name": "3-10 Preset Reference", "group": "Reference and ramps", "area": "holding", "address": 3100, "type": "int16", "access": "RW", "scale": 0.01, "unit": "%", "description": "Array of 8 values; set the index in register 9 first"}, {"name": "3-41 Ramp 1 Ramp Up Time", "group": "Reference and ramps", "area": "holding", "address": 3410, "type": "uint32", "access": "RW", "scale": 0.01, "unit": "s"}, {"name": "3-42 Ramp 1 Ramp Down Time", "group": "Reference and ramps", "area": "holding", "address": 3420, "type": "uint32", "access": "RW", "scale": 0.01, "unit": "s"}, {"name": "3-80 Jog/Homing Ramp Time", "group": "Reference and ramps", "area": "holding", "address": 3800, "type": "uint32", "access": "RW", "scale": 0.01, "unit": "s"}, {"name": "3-81 Quick Stop Ramp Time", "group": "Reference and ramps", "area": "holding", "address": 3810, "type": "uint32", "access": "RW", "scale": 0.01, "unit": "s"}, {"name": "4-12 Motor Speed Low Limit [Hz]", "group": "Limits", "area": "holding", "address": 4120, "type": "uint16", "access": "RW", "scale": 0.1, "unit": "Hz"}, {"name": "4-14 Motor Speed High Limit [Hz]", "group": "Limits", "area": "holding", "address": 4140, "type": "uint16", "access": "RW", "scale": 0.1, "unit": "Hz"}, {"name": "4-16 Torque Limit Motor Mode", "group": "Limits", "area": "holding", "address": 4160, "type": "uint16", "access": "RW", "scale": 0.1, "unit": "%"}, {"name": "4-17 Torque Limit Generator Mode", "group": "Limits", "area": "holding", "address": 4170, "type": "uint16", "access": "RW", "scale": 0.1, "unit": "%"}, {"name": "4-18 Current Limit", "group": "Limits", "area": "holding", "address": 4180, "type": "uint32", "access": "RW", "scale": 0.1, "unit": "%"}, {"name": "4-19 Max Output Frequency", "group": "Limits", "area": "holding", "address": 4190, "type": "uint16", "access": "RW", "scale": 0.1, "unit": "Hz"}, {"name": "8-03 Control Word Timeout Time", "group": "Communication", "area": "holding", "address": 8030, "type": "uint32", "access": "RW", "scale": 0.1, "unit": "s"}, {"name": "8-10 Control Word Profile", "group": "Communication", "area": "holding", "address": 8100, "type": "uint16", "access": "RW", "enum": "control_profile", "description": "One-byte parameter, written as a register. The FC profile is the one the control and status word bits in this map follow"}, {"name": "8-30 Protocol", "group": "Communication", "area": "holding", "address": 8300, "type": "uint16", "access": "RW", "enum": "protocol", "description": "Takes effect after the drive is powered off and on"}, {"name": "8-31 Address", "group": "Communication", "area": "holding", "address": 8310, "type": "uint16", "access": "RW", "write_min": 1, "write_max": 247}, {"name": "8-32 FC Port Baud Rate", "group": "Communication", "area": "holding", "address": 8320, "type": "uint16", "access": "RW", "enum": "baud_rate"}, {"name": "8-33 Parity/Stop Bits", "group": "Communication", "area": "holding", "address": 8330, "type": "uint16", "access": "RW", "enum": "parity"} ] }