ABB ACS880 Modbus register map
Also searched as: ACS880-01 · ACS880-04 · ACS880-07 · ACS880 primary control program · AINLX
28 Modbus registers of the ABB ACS880, with the address on the wire, the 30001-style reference, data type, byte order, unit and scale. Transcribed from ACS880 Primary control program Firmware manual (AINLX) (Revision Y, 2024-03-12).
ABB ACS880 industrial drive (primary control program AINLX) over the embedded fieldbus (EFB) Modbus RTU interface; control words and key 16-bit actual values.
- Device type
- Variable speed drive
- Registers
- 28
- Interfaces
- Modbus RTU
- Default unit ID
- 1
- Byte order (multi-register values)
- ABCD
- Serial settings
- 19200 baud, 8 data bits, even parity, 1 stop bit
Hardware verification
Not yet verified on hardware. The map is transcribed from the vendor document and checked against it by script; check the first readings against the device display.
Connection notes
- Enable the EFB with 58.1 Protocol enable = Modbus RTU; node address is 58.3, baud rate 58.4, parity 58.5.
- The manual writes holding registers as 6-digit references (400001...); the address here is the reference minus 400001.
- Registers 400001-400006 hold the defaults of 58.101-58.106 Data I/O 1-6 and change if those are re-mapped.
- Parameter registers use 58.33 Addressing mode = Mode 0 (default), 16-bit access, register = 400000 + 100 x group + index; values use the parameter's 16-bit fieldbus scaling (FbEq 16b).
- 32-bit parameter access (420000 + 200 x group + 2 x index, word order 58.34, LO-HI by default) is not listed here.
- This manual covers the AINLX primary control program; drives with the UCU control board (YINLX) have a separate manual, 3AXD50001000998.
- Writing the control word or references moves the motor. Read-only access is the safe default.
Registers
Grouped as in the vendor document.
Status 3 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Status word (SW)status_word | 40004 | 0x0003 | bitfield16 | |||
Actual value 1 (ACT1)actual_value_1 | 40005 | 0x0004 | int16 | |||
Actual value 2 (ACT2)actual_value_2 | 40006 | 0x0005 | int16 |
Control 3 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Control word (CW)control_word | 40001 | 0x0000 | bitfield16 | |||
Reference 1 (REF1)reference_1 | 40002 | 0x0001 | int16 | |||
Reference 2 (REF2)reference_2 | 40003 | 0x0002 | int16 |
Diagnostics 6 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Reset error registersreset_error_registers | 40090 | 0x0059 | uint16 | |||
Function code of the failed queryerror_function_code | 40091 | 0x005A | uint16 | |||
Error codeerror_code | 40092 | 0x005B | uint16 | |||
Failed registerfailed_register | 40093 | 0x005C | uint16 | |||
Last register written successfullylast_register_written | 40094 | 0x005D | uint16 | |||
Last register read successfullylast_register_read | 40095 | 0x005E | uint16 |
Parameters 16 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Motor speed usedmotor_speed_used | 40101 | 0x0064 | int16 | rpm | ||
Output frequencyoutput_frequency | 40106 | 0x0069 | int16 | Hz | ||
Motor currentmotor_current | 40107 | 0x006A | uint16 | A | ||
Motor current % of motor nominalmotor_current_pct_motor_nom | 40108 | 0x006B | uint16 | % | ||
Motor torquemotor_torque | 40110 | 0x006D | int16 | % | ||
DC voltagedc_voltage | 40111 | 0x006E | uint16 | V | × 0.1 | |
Output voltageoutput_voltage | 40113 | 0x0070 | uint16 | V | ||
Output poweroutput_power | 40114 | 0x0071 | int16 | kW | ||
Flux actual %flux_actual | 40124 | 0x007B | uint16 | % | ||
INU momentary cos phiinu_cos_phi | 40125 | 0x007C | int16 | × 0.01 | ||
Tripping faulttripping_fault | 40401 | 0x0190 | uint16 | |||
On-time counteron_time_counter | 40501 | 0x01F4 | uint16 | d | ||
Run-time counterrun_time_counter | 40502 | 0x01F5 | uint16 | d | ||
Inverter temperatureinverter_temperature | 40511 | 0x01FE | int16 | % | ||
Main control wordmain_control_word | 40601 | 0x0258 | bitfield16 | |||
Main status wordmain_status_word | 40611 | 0x0262 | bitfield16 |
Source documents
- ACS880 Primary control program Firmware manual (AINLX) , ABB, 3AUA0000085967, Revision Y, 2024-03-12 (accessed 2026-11-09) Chapter "Fieldbus control through the embedded fieldbus interface (EFB)" (Modbus holding register addresses, error code registers), parameter 58.33 and the parameter listing (groups 1, 4, 5, 6, 46).
Read it by name
Read the ACS880 with an AI assistant
The Proxus Industrial MCP Server includes this map. Set it on the device, and Claude, Cursor or VS Code reads registers by key with the right type, byte order, scale and unit. It only reads.
This device speaks Modbus RTU: reach it through a Modbus TCP gateway and use the gateway’s address with the device’s unit ID.
proxus-mcp.json
{
"devices": {
"acs880-1": {
"protocol": "modbus-tcp",
"host": "192.168.10.40",
"unit_id": 1,
"map": "abb/acs880"
}
}
} Ask your assistant
Read control_word, reference_1, reference_2 from acs880-1.
The tool call it makes
read_named(device: "acs880-1", keys: ["control_word", "reference_1", "reference_2"]) Have this device? Verify the map.
Ask your assistant to run verify_device_map. It reads every register once, read-only, checks that the values are plausible and asks you to compare two values with the display. You get a report and a prefilled GitHub issue to submit; your name goes on this map’s verified list.
Collecting from many devices?
Proxus reads Modbus TCP and RTU devices next to the machines, keeps the history and delivers the values to dashboards, databases and AI.