Danfoss VLT Micro Drive FC 51 Modbus register map
VLT Micro Drive FC 51 over the built-in RS485 port, Modbus RTU with the FC control profile
- Official
- 95 registers
- Modbus RTU
- Revision 1 · 2026-11-10
Official: Written from the manufacturer's documentation, but not tested on a device yet. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.
Communication
- Protocol
- Modbus RTU
- Unit ID
- 1
- Serial
- 19200 8E1 · 19200 baud, 8 data bits, even parity, 1 stop bit
- Byte / word order
- ABCD · bytes big-endian, words high first
- Addresses
- 1-based · wire address = address − 1
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 95 holding registers
- Groups
- 10
- Translation tables
- 6
- Revision
- 1 · 2026-11-10
- Added
- ()
- File
- maps/danfoss/fc-51.mbmap.json · 20 KB · history
- SHA-256
- ed9e7e22c189e55b0ff1949a086e8a9502567225af753a91b38bc6271dbbc0f6
- Manufacturer
- danfoss.com
Sources and notes
- VLT Micro Drive FC 51 Design Guide · version MG02K402, 2016-01 linked in issue #187; chapter 8.6 to 8.11 (Modbus RTU, register addressing, FC profile)
- VLT Micro Drive FC 51 Programming Guide · version MG02C602 linked in issue #187; chapter 5 parameter lists (data type and conversion index)
Source: Danfoss, "VLT Micro Drive FC 51 Design Guide", MG02K402 (01/2016) and "VLT Micro Drive FC 51 Programming Guide", MG02C602 (software 2.7X)
- 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. From software 2.32 they are also at 2810, 2811, 2910 and 2911.
- Array parameters (3-10, 15-30) need the index in register 9 first. A 32-bit parameter uses two registers, high word first. One-byte parameters are read and written as one register.
- Coil 65 chooses whether written parameters go to RAM only (0) or to RAM and EEPROM (1). Coils 1 to 64 repeat the control word, reference, status word and output frequency; they are not in this map, use the registers instead.
- To enable Modbus: 8-30 Protocol = Modbus RTU, 8-31 Address 1 to 247, 8-32 baud rate, 8-33 parity. The guide gives even parity with 1 stop bit as the default; the Programming Guide lists 19200 baud as the Modbus default.
- The guide's text for 8-32 allows up to 115200 baud, while the Programming Guide for software 2.7X lists 2400 to 38400. Only the Programming Guide values are in the table.
- The Design Guide is for software 3.1X and the Programming Guide for 2.7X; conversion indexes are taken from the latter. Some Programming Guide parameters (motor power 1-20, text parameters such as 15-43 and 15-51) are not listed, as no size or scaling is given.
- Function codes: 1, 3, 5, 6, 15 and 16, plus 11, 17 and the diagnostics function 8.
- Written from the manufacturer's documents; not tested on a device.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 7 | uint16 | R | Fault code last returned by the parameter database | |||
| HR | 8 | uint16 | R | Address of the register that caused the last error | |||
| HR | 9 | uint16 | RW | Index used for the next access to an array parameter (for example 3-10 or 15-30); set it before reading or writing one | |||
| HR | 50000 | uint16 | RW | FC profile control word (8-10 Control Word Profile = FC profile) | |||
| HR | 50000 | uint16 bits 0–1 | RW | Chooses one of the four values of 3-10 Preset Reference (bits 0 and 1) | |||
| HR | 50000 | bool bit 2 | RW | 0 = DC brake and stop, 1 = ramp | |||
| HR | 50000 | bool bit 3 | RW | 0 = coast to a stop, 1 = no coasting | |||
| HR | 50000 | bool bit 4 | RW | 0 = quick stop, 1 = ramp | |||
| HR | 50000 | bool bit 5 | RW | 0 = hold the present output frequency, 1 = use the ramp | |||
| HR | 50000 | bool bit 6 | RW | 0 = ramp stop, 1 = start | |||
| HR | 50000 | bool bit 7 | RW | Reset a trip on the rising edge | |||
| HR | 50000 | bool bit 8 | RW | 1 = run at the jog speed (3-11) | |||
| HR | 50000 | bool bit 9 | RW | 0 = ramp 1, 1 = ramp 2 | |||
| HR | 50000 | bool bit 10 | RW | 1 = the drive uses the control word, 0 = it ignores it | |||
| HR | 50000 | bool bit 11 | RW | 1 = relay 01 on, if 5-40 Function Relay selects control word bit 11 | |||
| HR | 50000 | bool bit 12 | RW | 1 = relay 02 on, if 5-40 Function Relay selects control word bit 12 | |||
| HR | 50000 | bool bit 13 | RW | 0 = set-up 1, 1 = set-up 2 (only with 0-10 Active Set-up = Multi set-up) | |||
| HR | 50000 | bool bit 15 | RW | 1 = reverse (acts only if 8-54 Reversing Select allows the bus) | |||
| HR | 50010 | int16 | RW | % | ×0.006103515625 | Speed reference in percent of the maximum reference (3-03): 16384 (4000 hex) = 100%, negative values in two's complement. Scale is 100/16384 | |
| HR | 50200 | uint16 | R | FC profile status word | |||
| HR | 50200 | bool bit 0 | R | 0 = control not ready, 1 = control ready | |||
| HR | 50200 | bool bit 1 | R | 0 = not ready, 1 = ready for operation | |||
| HR | 50200 | bool bit 2 | R | 0 = coasting, 1 = enabled | |||
| HR | 50200 | bool bit 3 | R | 1 = the drive has tripped | |||
| HR | 50200 | bool bit 4 | R | 1 = error without a trip | |||
| HR | 50200 | bool bit 6 | R | 1 = tripped and locked | |||
| HR | 50200 | bool bit 7 | R | 1 = a warning is active | |||
| HR | 50200 | bool bit 8 | R | 0 = speed differs from the reference, 1 = speed matches the reference | |||
| HR | 50200 | bool bit 9 | R | 0 = local operation, 1 = the drive can be controlled over the bus | |||
| HR | 50200 | bool bit 10 | R | 0 = output frequency at a speed limit (4-12 or 4-14), 1 = within limits | |||
| HR | 50200 | bool bit 11 | R | 0 = motor not running, 1 = in operation | |||
| HR | 50200 | bool bit 12 | R | 1 = stopped for temporary overtemperature, resumes by itself | |||
| HR | 50200 | bool bit 13 | R | 1 = DC link voltage too low or too high | |||
| HR | 50200 | bool bit 14 | R | 1 = the current limit is exceeded | |||
| HR | 50200 | bool bit 15 | R | 1 = a motor or drive thermal timer has passed 100% | |||
| HR | 50210 | int16 | R | % | ×0.006103515625 | Actual output frequency, scaled like the bus reference: 16384 (4000 hex) = 100%. Scale is 100/16384 | |
| HR | 2810 | uint16 | RW | Same control word as register 50000, in the lower register area (software 2.32 and later) | |||
| HR | 2811 | int16 | RW | % | ×0.006103515625 | Same bus reference as register 50010 (16384 = 100%), lower register area (software 2.32 and later) | |
| HR | 2910 | uint16 | R | Same status word as register 50200, lower register area (software 2.32 and later) | |||
| HR | 2911 | int16 | R | % | ×0.006103515625 | Same main actual value as register 50210 (16384 = 100%), lower register area (software 2.32 and later) | |
| HR | 16010 | int32 ABCD | R | ×0.001 | Present reference in the unit of the configuration (Hz in open loop) | ||
| HR | 16020 | int16 | R | % | ×0.1 | ||
| HR | 16050 | int16 | R | % | ×0.01 | ||
| HR | 16100 | uint16 | R | kW | ×0.001 | ||
| HR | 16110 | uint16 | R | hp | ×0.001 | ||
| HR | 16120 | uint16 | R | V | |||
| HR | 16130 | uint16 | R | Hz | ×0.1 | ||
| HR | 16140 | uint16 | R | A | ×0.01 | ||
| HR | 16150 | uint16 | R | % | ×0.1 | ||
| HR | 16180 | uint16 | R | % | Calculated thermal load of the motor; 100% is the cutout limit. The parameter is one byte, read as a register | ||
| HR | 16300 | uint16 | R | V | |||
| HR | 16340 | uint16 | R | °C | One-byte parameter, read as a register | ||
| HR | 16350 | uint16 | R | % | One-byte parameter, read as a register | ||
| HR | 16360 | uint16 | R | A | ×0.01 | ||
| HR | 16370 | uint16 | R | A | ×0.01 | ||
| HR | 16600 | uint16 | R | Bit pattern of the digital inputs | |||
| HR | 16620 | uint16 | R | V | ×0.01 | ||
| HR | 16630 | uint16 | R | mA | ×0.01 | ||
| HR | 16640 | uint16 | R | mA | ×0.01 | ||
| HR | 16650 | uint16 | R | mA | ×0.01 | ||
| HR | 16710 | uint16 | R | Bit pattern of the relay outputs; one-byte parameter, read as a register | |||
| HR | 16900 | uint32 ABCD | R | Alarm word as a bit pattern (bits are in the Programming Guide) | |||
| HR | 16920 | uint32 ABCD | R | Warning word as a bit pattern (bits are in the Programming Guide) | |||
| HR | 16940 | uint32 ABCD | R | ||||
| HR | 15000 | uint32 ABCD | R | days | Days the drive has been powered up | ||
| HR | 15010 | uint32 ABCD | R | h | |||
| HR | 15020 | uint32 ABCD | R | kWh | |||
| HR | 15030 | uint32 ABCD | R | ||||
| HR | 15040 | uint16 | R | ||||
| HR | 15050 | uint16 | R | ||||
| HR | 15300 | uint16 | R | Array of the last trips; set the index in register 9 first (one-byte parameter, read as a register) | |||
| HR | 1220 | uint16 | RW | V | |||
| HR | 1230 | uint16 | RW | Hz | |||
| HR | 1240 | uint16 | RW | A | ×0.01 | ||
| HR | 1250 | uint16 | RW | RPM | |||
| HR | 3020 | int32 ABCD | RW | ×0.001 | |||
| HR | 3030 | int32 ABCD | RW | ×0.001 | |||
| HR | 3100 | int16 | RW | % | ×0.01 | Array of 8 values; set the index in register 9 first | |
| HR | 3110 | uint16 | RW | Hz | ×0.1 | ||
| HR | 3410 | uint32 ABCD | RW | s | ×0.01 | ||
| HR | 3420 | uint32 ABCD | RW | s | ×0.01 | ||
| HR | 3510 | uint32 ABCD | RW | s | ×0.01 | ||
| HR | 3520 | uint32 ABCD | RW | s | ×0.01 | ||
| HR | 4120 | uint16 | RW | Hz | ×0.1 | ||
| HR | 4140 | uint16 | RW | Hz | ×0.1 | ||
| HR | 4160 | uint16 | RW | % | |||
| HR | 4170 | uint16 | RW | % | |||
| HR | 8010 | uint16 | RW | One-byte parameter, written as a register | |||
| HR | 8020 | uint16 | RW | ||||
| HR | 8030 | uint16 | RW | s | ×0.1 | ||
| HR | 8040 | uint16 | RW | ||||
| HR | 8300 | uint16 | RW | Takes effect after the drive is powered off and on | |||
| HR | 8310 | uint16 | RW | ||||
| HR | 8320 | uint16 | RW | ||||
| HR | 8330 | uint16 | RW |
No registers match
Try part of the name, an address (decimal or 0x hex) or clear the filters.
Help improve this map
- I tested it on a deviceReport whether it worked, even if you did not write the map.
- Suggest a correctionEdit the file on GitHub; it opens a pull request.
- Report a problemA wrong address, type, scale or byte order.
- Read the formatWhat each key of the file means (SPEC.md).