ABB ACH580 Modbus register map
HVAC drive, HVAC control program, over the embedded fieldbus (EFB, Modbus RTU)
- Official
- 1,888 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
- CDAB · bytes big-endian, words low first (word swap)
- Addresses
- 1-based · wire address = address − 1
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 1845 holding registers, 22 coils, 21 discrete inputs
- Groups
- 61
- Translation tables
- 12
- Revision
- 1 · 2026-11-10
- Firmware
- ACH580 HVAC control program (the version the manual applies to)
- Added
- ()
- File
- maps/abb/ach580.mbmap.json · 398 KB · history
- SHA-256
- 420da7a7740bce282d711c03e3a0d4f9632e4edcc92f0df6eba33e97886eb23b
- Manufacturer
- abb.com
Sources and notes
- ACH580 HVAC control program firmware manual · version 3AXD50000027537 revision J, 2026-02-23 chapter Modbus RTU control through the embedded fieldbus interface (EFB), chapter Parameters and Additional parameter data
Source: ABB, "ACH580 HVAC control program firmware manual", 3AXD50000027537 revision J (2026-02-23); https://library.abb.com/d/3AXD50000027537
- Embedded fieldbus (terminals on the control unit), 58.01 Protocol enable = Modbus RTU. Defaults: node address 1, 19.2 kbit/s, 8 even 1.
- Addresses are 1-based register numbers (400001 = 1). Parameters use 58.33 Addressing mode = Mode 0, the default.
- Real-type parameters are read as 32-bit values (register 420000 + 200 × group + 2 × index) with the FbEq32 scaling of the chapter Additional parameter data; their 16-bit copies at 400000 + 100 × group + index use the FbEq16 scalings of the Parameters chapter (several depend on group 46) and are not in this map.
- 32-bit values use 58.34 Word order = LO-HI (the default): low word first.
- Lists, sources (Analog src, Binary src), packed Boolean words (PB) and data parameters are read as 16-bit values (400000 + 100 × group + index). Bits of packed Boolean words are listed where the manual names them; reserved bits are left out.
- Parameters with an index above 99 (for example 01.102 Line current of the ACH580-31 and -34, or 58.101 Data I/O 1) are only reachable with addressing mode 1 or 2 and are not in this map.
- Date, time and duration parameters (for example 34.12 Timer 1 start time, 34.72 Exception 1 start) have no FbEq16 or FbEq32 scaling in the manual (shown as a dash) and are not in this map.
- 23.33, 40.41, 40.42, 41.41, 41.42 and 83.04 are listed in the chapter Additional parameter data but their entries are missing from the parameter listing; they have no default or selection labels here. 47.05-47.08 and 47.25-47.28 are in the parameter listing but missing from the additional data and are taken to have the type and scaling of their neighbours (47.04, 47.24).
- Some units depend on settings: power in kW or hp and torque in N·m or lb·ft (96.16), temperatures in °C or °F, analog values in mA or V, process values in the PID units of group 40. Where the unit is not fixed it is given in the description.
- Registers 1-14 carry the data selected by 58.101-58.114; the defaults are shown. Coils and discrete inputs follow the ABB Drives profile (58.25 = ABB Drives); coils 9 and 10 (jogging) are not used by the ACH580.
- Parameters without a default value in the manual (actual signals, status words) are read-only; the others are writable within the range given by write_min and write_max. Defaults that differ between 50 Hz and 60 Hz supply (95.20 bit 0) are shown as written in the manual.
- 96.78 appears twice in the manual (550 Compatibility mode, a list 0...2, and Legacy Modbus mapping, disable/enable) with different selections and is not in this map.
- Parameters of the ACH580-31 and ACH580-34 supply unit (groups 94 and others marked as only visible for those types) appear only where their index is 99 or lower.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 1 | uint16 | RW | Default CW 16bit; selected by 58.101 | |||
| HR | 2 | int16 | RW | Default Ref1 16bit; selected by 58.102; scaled by 58.26 and group 46 | |||
| HR | 3 | int16 | RW | Default Ref2 16bit; selected by 58.103; scaled by 58.27 and group 46 | |||
| HR | 4 | uint16 | R | Default SW 16bit; selected by 58.104 | |||
| HR | 5 | int16 | R | Default Act1 16bit; selected by 58.105; scaled by 58.28 and group 46 | |||
| HR | 6 | int16 | R | Default Act2 16bit; selected by 58.106; scaled by 58.29 and group 46 | |||
| HR | 7 | uint16 | RW | Selected by 58.107 | |||
| HR | 8 | uint16 | RW | Selected by 58.108 | |||
| HR | 9 | uint16 | RW | Selected by 58.109 | |||
| HR | 10 | uint16 | RW | Selected by 58.110 | |||
| HR | 11 | uint16 | RW | Selected by 58.111 | |||
| HR | 12 | uint16 | RW | Selected by 58.112 | |||
| HR | 13 | uint16 | RW | Selected by 58.113 | |||
| HR | 14 | uint16 | RW | Selected by 58.114 | |||
| HR | 90 | uint16 | W | Clears registers 91-95 | |||
| HR | 91 | uint16 | R | Function code of the last failed query | |||
| HR | 92 | uint16 | R | Set with exception code 04h | |||
| HR | 93 | uint16 | R | ||||
| HR | 94 | uint16 | R | ||||
| HR | 95 | uint16 | R | ||||
| CO | 1 | bool | RW | ABB Drives profile | |||
| CO | 2 | bool | RW | ABB Drives profile | |||
| CO | 3 | bool | RW | ABB Drives profile | |||
| CO | 4 | bool | RW | ABB Drives profile | |||
| CO | 5 | bool | RW | ABB Drives profile | |||
| CO | 6 | bool | RW | ABB Drives profile | |||
| CO | 7 | bool | RW | ABB Drives profile | |||
| CO | 8 | bool | RW | ABB Drives profile | |||
| CO | 11 | bool | RW | ABB Drives profile | |||
| CO | 12 | bool | RW | ABB Drives profile | |||
| CO | 13 | bool | RW | ABB Drives profile | |||
| CO | 14 | bool | RW | ABB Drives profile | |||
| CO | 15 | bool | RW | ABB Drives profile | |||
| CO | 16 | bool | RW | ABB Drives profile | |||
| CO | 33 | bool | RW | 10.99 RO/DIO control word bit 0 | |||
| CO | 34 | bool | RW | 10.99 RO/DIO control word bit 1 | |||
| CO | 35 | bool | RW | 10.99 RO/DIO control word bit 2 | |||
| CO | 36 | bool | RW | 10.99 RO/DIO control word bit 3 | |||
| CO | 37 | bool | RW | 10.99 RO/DIO control word bit 4 | |||
| CO | 38 | bool | RW | 10.99 RO/DIO control word bit 5 | |||
| CO | 39 | bool | RW | 10.99 RO/DIO control word bit 6 | |||
| CO | 40 | bool | RW | 10.99 RO/DIO control word bit 8 | |||
| DI | 1 | bool | R | ABB Drives profile | |||
| DI | 2 | bool | R | ABB Drives profile | |||
| DI | 3 | bool | R | ABB Drives profile | |||
| DI | 4 | bool | R | ABB Drives profile | |||
| DI | 5 | bool | R | ABB Drives profile | |||
| DI | 6 | bool | R | ABB Drives profile | |||
| DI | 7 | bool | R | ABB Drives profile | |||
| DI | 8 | bool | R | ABB Drives profile | |||
| DI | 9 | bool | R | ABB Drives profile | |||
| DI | 10 | bool | R | ABB Drives profile | |||
| DI | 11 | bool | R | ABB Drives profile | |||
| DI | 12 | bool | R | ABB Drives profile | |||
| DI | 13 | bool | R | ABB Drives profile | |||
| DI | 14 | bool | R | ABB Drives profile | |||
| DI | 15 | bool | R | ABB Drives profile | |||
| DI | 33 | bool | R | 10.02 bit 0 | |||
| DI | 34 | bool | R | 10.02 bit 1 | |||
| DI | 35 | bool | R | 10.02 bit 2 | |||
| DI | 36 | bool | R | 10.02 bit 3 | |||
| DI | 37 | bool | R | 10.02 bit 4 | |||
| DI | 38 | bool | R | 10.02 bit 5 | |||
| HR | 20202 | int32 CDAB | R | rpm | ×0.01 | ||
| HR | 20204 | int32 CDAB | R | rpm | ×0.01 | ||
| HR | 20206 | int32 CDAB | R | % | ×0.01 | ||
| HR | 20212 | int32 CDAB | R | Hz | ×0.01 | ||
| HR | 20214 | uint32 CDAB | R | A | ×0.01 | ||
| HR | 20216 | uint32 CDAB | R | % | ×0.1 | ||
| HR | 20218 | uint32 CDAB | R | % | ×0.1 | ||
| HR | 20220 | int32 CDAB | R | % | ×0.1 | ||
| HR | 20222 | uint32 CDAB | R | V | ×0.01 | ||
| HR | 20226 | uint32 CDAB | R | V | |||
| HR | 20228 | int32 CDAB | R | kW | ×0.01 | ||
| HR | 20230 | int32 CDAB | R | % | ×0.01 | ||
| HR | 20234 | int32 CDAB | R | ×0.01 | Unit: kW or hp | ||
| HR | 20236 | uint32 CDAB | R | GWh | |||
| HR | 20238 | uint32 CDAB | R | MWh | |||
| HR | 20240 | uint32 CDAB | R | kWh | |||
| HR | 20248 | uint32 CDAB | R | % | |||
| HR | 20260 | uint32 CDAB | R | ×0.001 | Unit: N·m or lb·ft | ||
| HR | 20262 | int32 CDAB | R | ×0.1 | Unit: °C or °F | ||
| HR | 20300 | uint32 CDAB | R | kWh | ×0.01 | ||
| HR | 20302 | uint32 CDAB | R | kWh | ×0.01 | ||
| HR | 20304 | uint32 CDAB | R | kWh | ×0.01 | ||
| HR | 20306 | uint32 CDAB | R | kWh | ×0.01 | ||
| HR | 20308 | int32 CDAB | R | kWh | |||
| HR | 20310 | uint32 CDAB | R | GWh | |||
| HR | 20312 | uint32 CDAB | R | MWh | |||
| HR | 20314 | uint32 CDAB | R | kWh | |||
| HR | 20316 | int32 CDAB | R | kWh | |||
| HR | 20322 | uint32 CDAB | R | rpm | ×0.01 | ||
| HR | 20324 | uint32 CDAB | R | % | ×0.01 | ||
| HR | 20326 | uint32 CDAB | R | Hz | ×0.01 | ||
| HR | 20328 | uint32 CDAB | R | % | ×0.1 | ||
| HR | 20330 | uint32 CDAB | R | kW | ×0.01 | ||
| HR | 20332 | uint32 CDAB | R | % | ×0.01 | ||
| HR | 20336 | uint32 CDAB | R | ×0.01 | Unit: kW or hp | ||
| HR | 20344 | uint32 CDAB | R | A | ×0.01 | ||
| HR | 20346 | uint32 CDAB | R | A | ×0.01 |
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).