Easy Modbus
  1. Home
  2. Modbus register maps
  3. ABB
  4. ACS880 industrial drive, primary control program (embedded Modbus RTU)

Variable frequency drive · Modbus register map

ABB ACS880 industrial drive, primary control program (embedded Modbus RTU) Modbus register map

Updated 25 October 2026

Short answer

ABB's industrial variable frequency drive family. The control unit's XD2D RS-485 terminal can be switched from the drive-to-drive link to Modbus RTU, which puts a 16-bit control word, two references, a status word and two actual values in the first six holding registers and exposes every drive parameter as a holding register derived from its group and index. This map covers that cyclic block, the EFB error registers, key group 01/04/05/06 monitoring signals, the EFB diagnostics and comm-loss settings, and the main 32-bit actual values.

This page lists 64 Modbus registers for the ABB ACS880 industrial drive, primary control program (embedded Modbus RTU) — 7 writable — with the table, 0-based wire address, data type, word order, scale, units and access of each, re-typed from ABB’s own free documentation (linked below) and checked against it.

Manufacturer
ABB
Model
ACS880 industrial drive, primary control program (embedded Modbus RTU)
Equipment type
Variable frequency drive
Registers
64 (7 writable)
Transport
Modbus RTU
Default unit ID
1
Default serial
19200 baud, 8E1
Documented addressing
Modicon 3xxxx/4xxxx (drop the prefix, subtract 1)
32-bit word order
CDAB low word first (word-swapped)
Firmware
ACS880 primary control program (AINLX) 3.4x or later
Also known as
ACS880-01, ACS880-04, ACS880-07, ACS880-11, ACS880-17, ACS880-31, ACS880-37, AINLX, ACS880 primary control program
Source document
ACS880 primary control program (AINLX) firmware manual · 3AUA0000085967 Rev Y · rev. 2024-03-07
Download CSV all columns JSON Manufacturer PDF ↗

Integration notes: ABB ACS880 industrial drive, primary control program (embedded Modbus RTU)

Integration in brief

Set 58.01 = Modbus RTU, set node, baud and parity, apply with 58.06 = Refresh settings, then point 20.01 Ext1 commands and the speed or frequency reference source at the embedded fieldbus. Write the ABB Drives control word and Reference 1 at 400001/400002, poll the status word and actual values at 400004-400006, and read other signals straight from their parameter registers.

Minimum registers to map

Addresses are 0-based wire addresses. Enough to monitor and run the unit; map more as the job needs.

RegisterNameTypeWhyAccess
HR 0Control word (EFB CW)BITMAP16Control word: start/stop/resetRead/write
HR 1Reference 1 (EFB Ref1)INT16Reference 1 (20000 = 46.01/46.02 for speed/frequency)Read/write
HR 3Status word (EFB SW)BITMAP16Status word: ready/running/fault/remoteRead
HR 4Actual value 1 (EFB Act1)INT16Actual value 1 (feedback matching the Ref1 type)Read
HR 11001.11 DC voltageUINT1601.11 DC voltageRead
HR 40004.01 Tripping faultUINT1604.01 Tripping fault codeRead
HR 2021101.06 Output frequency (32-bit)INT32 CDAB01.06 Output frequency, 0.01 Hz (32-bit)Read
HR 2021301.07 Motor current (32-bit)UINT32 CDAB01.07 Motor current, 0.01 A (32-bit)Read
HR 61706.18 Start inhibit status wordBITMAP1606.18 Start inhibit status wordRead

Enable Modbus control & writes

Set 58.01 Protocol enable = Modbus RTU (this disables the drive-to-drive link on XD2D and cannot be changed while the drive runs), then 58.03 node address, 58.04 baud rate and 58.05 parity, and validate with 58.06 Communication control = Refresh settings or reboot the control unit. For control set 20.01 Ext1 commands (and 20.06 for EXT2) = Embedded fieldbus and the reference source, e.g. 22.11 Speed ref1 source or 28.11 Frequency ref1 source = EFB ref1. Fieldbus parameter writes are made permanent with 96.07 Parameter save manually = Save.

Communication loss & watchdog

58.14 Communication loss action (No / Fault / Last speed / Speed ref safe / Fault always / Warning) with 58.16 Communication loss time (default 3.0 s) and 58.15 Communication loss mode (any message, or only control word/reference writes, resets the timer). A loss trips 6681 EFB comm loss or warns A7CE; Speed ref safe runs at 22.41 (28.41 for frequency). Apart from Fault always, it only acts when the EFB is the active control source or 58.36 forces supervision. Monitoring is held off for 30 s after power-up.

Byte order & addressing

Network setup

Watch out for

ABB ACS880 industrial drive, primary control program (embedded Modbus RTU) Modbus registers

Address = 0-based wire address (the documented number is shown under it when it differs) · Order: ABCD = high word first, CDAB = low word first · Scale: engineering value = raw × scale.

64 of 64 shown
ABB ACS880 industrial drive, primary control program (embedded Modbus RTU) Modbus register map
TableAddressNameDescriptionTypeOrderScaleUnitsAccessValues / bits
HR0doc 400001Control word (EFB CW)ABB Drives profile bits shown (58.25 = ABB Drives).BITMAP16Read/writebit 0 = OFF1_CONTROL: 1 = proceed to ready to operate, 0 = ramp stop (OFF1); bit 1 = OFF2_CONTROL: 0 = emergency OFF, coast to stop; bit 2 = OFF3_CONTROL: 0 = emergency stop (OFF3); bit 3 = INHIBIT_OPERATION: 1 = operation enabled (run), 0 = inhibit; bit 4 = RAMP_OUT_ZERO: 0 = force ramp output to zero; bit 5 = RAMP_HOLD: 0 = hold ramp; bit 6 = RAMP_IN_ZERO: 0 = force ramp input to zero; bit 7 = RESET: 0->1 = fault reset; bit 8 = JOGGING_1: 1 = run at jogging 1 reference; bit 9 = JOGGING_2: 1 = run at jogging 2 reference; bit 10 = REMOTE_CMD: 1 = fieldbus control enabled; bit 11 = EXT_CTRL_LOC: 1 = select EXT2, 0 = select EXT1; bit 12 = Reserved; bit 13 = Reserved; bit 14 = Reserved; bit 15 = Reserved
HR1doc 400002Reference 1 (EFB Ref1)Signed; type per 58.26 (20000 = 46.01/46.02 for speed/frequency).INT16Read/write
HR2doc 400003Reference 2 (EFB Ref2)Signed; type and scaling per 58.27 (default Torque).INT16Read/write
HR3doc 400004Status word (EFB SW)ABB Drives profile bits shown (58.25 = ABB Drives).BITMAP16Readbit 0 = RDY_ON: ready to switch on; bit 1 = RDY_RUN: ready to operate (0 = OFF1 active); bit 2 = RDY_REF: operation enabled; bit 3 = TRIPPED: fault; bit 4 = OFF_2_STA: 1 = OFF2 inactive; bit 5 = OFF_3_STA: 1 = OFF3 inactive; bit 6 = SWC_ON_INHIB: switch-on inhibited; bit 7 = ALARM: warning active; bit 8 = AT_SETPOINT: actual value within tolerance of reference; bit 9 = REMOTE: 1 = remote (EXT1/EXT2), 0 = local; bit 10 = ABOVE_LIMIT: speed/frequency at or above supervision limit; bit 11 = USER_0: user-defined status bit; bit 12 = EXT_RUN_ENABLE: external run enable received (user bit 1; 6.31 default); bit 13 = Reserved; bit 14 = Reserved; bit 15 = Reserved
HR4doc 400005Actual value 1 (EFB Act1)Signed; type per 58.28 (default Auto, follows Ref1 type).INT16Read
HR5doc 400006Actual value 2 (EFB Act2)Signed; type per 58.29 (default Torque).INT16Read
HR89doc 400090Reset error registersWrite 1 to clear error registers 400091-400095.UINT16Read/write1 = Reset
HR90doc 400091Error function codeFunction code of the failed query.UINT16Read
HR91doc 400092Error codeDetail code when exception 04h was returned.UINT16Read0 = No error; 2 = Low/High limit exceeded; 3 = Faulty index (array parameter); 5 = Incorrect data type; 101 = General error (65h)
HR92doc 400093Failed registerLast register that failed to read or write.UINT16Read
HR93doc 400094Last register written successfullyUINT16Read
HR94doc 400095Last register read successfullyUINT16Read
HR107doc 40010801.08 Motor current % of motor nomUINT16%Read
HR110doc 40011101.11 DC voltageMeasured DC link voltage.UINT16× 0.1VRead
HR112doc 40011301.13 Output voltageCalculated motor voltage (AC).UINT16VRead
HR114doc 40011501.15 Output power % of motor nomINT16× 0.1%Read
HR116doc 40011701.17 Motor shaft powerEstimated shaft power; kW or hp per 96.16.INT16kWRead
HR117doc 40011801.18 Inverter GWh motoringWhole GWh toward the motor; combine with 01.19/01.20.INT16GWhRead
HR118doc 40011901.19 Inverter MWh motoringWhole MWh, rolls over into 01.18.INT16MWhRead
HR119doc 40012001.20 Inverter kWh motoringkWh part (0-1000), rolls over into 01.19.UINT16× 0.1kWhRead
HR123doc 40012401.24 Flux actual %Used flux reference, percent of nominal flux.UINT16%Read
HR124doc 40012501.25 INU momentary cos phiINT16× 0.01Read
HR130doc 40013101.31 Ambient temperatureIncoming cooling air; °C or °F per 96.16.INT16°CRead
HR161doc 40016201.62 Abs motor speed %UINT16× 0.1%Read
HR164doc 40016501.65 Abs output powerkW or hp per 96.16.UINT16kWRead
HR165doc 40016601.66 Abs output power % motor nomUINT16× 0.1%Read
HR400doc 40040104.01 Tripping faultHex code of the fault that caused the trip; 0 = none.UINT16Read
HR401doc 40040204.02 Active fault 2UINT16Read
HR402doc 40040304.03 Active fault 3UINT16Read
HR405doc 40040604.06 Active warning 1Hex code of the first active warning.UINT16Read
HR406doc 40040704.07 Active warning 2UINT16Read
HR407doc 40040804.08 Active warning 3UINT16Read
HR410doc 40041104.11 Latest faultMost recent stored (non-active) fault code.UINT16Read
HR411doc 40041204.12 2nd latest faultUINT16Read
HR412doc 40041304.13 3rd latest faultUINT16Read
HR415doc 40041604.16 Latest warningMost recent stored warning code.UINT16Read
HR500doc 40050105.01 On-time counterDays the drive has been powered.UINT16daysRead
HR501doc 40050205.02 Run-time counterDays the inverter has been modulating.UINT16daysRead
HR503doc 40050405.04 Main fan on-time counterUINT16daysRead
HR509doc 40051005.10 Control board temperatureINT16°CRead
HR510doc 40051105.11 Inverter temperaturePercent of fault limit; about 94 % is the warning level.INT16%Read
HR540doc 40054105.41 Main fan service counterFan age as percent of estimated life; 100 % warns A8C0.UINT16%Read
HR600doc 40060106.01 Main control wordDrive-internal control word actually in use.BITMAP16Readbit 0 = Off1 control; bit 1 = Off2 control; bit 2 = Off3 control; bit 3 = Run; bit 4 = Ramp out zero; bit 5 = Ramp hold; bit 6 = Ramp in zero; bit 7 = Reset; bit 8 = Inching 1; bit 9 = Inching 2; bit 10 = Remote cmd; bit 11 = Ext ctrl loc
HR610doc 40061106.11 Main status wordBITMAP16Readbit 0 = Ready to switch ON; bit 1 = Ready run; bit 2 = Ready ref; bit 3 = Tripped; bit 4 = Off 2 inactive; bit 5 = Off 3 inactive; bit 6 = Switch-on inhibited; bit 7 = Warning; bit 8 = At setpoint; bit 9 = Remote; bit 10 = Above limit (source 6.29); bit 11 = User bit 0 (source 6.30, default Ext ctrl loc); bit 12 = User bit 1 (source 6.31, default Ext run enable); bit 13 = User bit 2 (source 6.32); bit 14 = User bit 3 (source 6.33); bit 15 = Reserved
HR615doc 40061606.16 Drive status word 1BITMAP16Readbit 0 = Enabled (run enable and start enable present, STO not active); bit 1 = Inhibited (start inhibited); bit 2 = DC charged; bit 3 = Ready to start; bit 4 = Following reference; bit 5 = Started; bit 6 = Modulating; bit 7 = Limiting; bit 8 = Local control; bit 9 = Network control; bit 10 = Ext1 active; bit 11 = Ext2 active; bit 12 = Reserved; bit 13 = Start request; bit 14 = Reserved; bit 15 = Reserved
HR616doc 40061706.17 Drive status word 2BITMAP16Readbit 0 = Identification run done; bit 1 = Magnetized; bit 2 = Torque control; bit 3 = Speed control; bit 4 = Reserved; bit 5 = Safe reference active; bit 6 = Last speed active; bit 7 = Loss of reference; bit 8 = Emergency stop failed; bit 9 = Jogging active; bit 10 = Above limit; bit 11 = Emergency stop active; bit 12 = Reduced run; bit 13 = Reserved; bit 14 = Stop failed; bit 15 = Reserved
HR617doc 40061806.18 Start inhibit status wordShows why a start is being refused.BITMAP16Readbit 0 = Not ready run; bit 1 = Ctrl location changed; bit 2 = SSW inhibit; bit 3 = Fault; bit 4 = Lost start enable; bit 5 = Lost run enable; bit 6 = FSO inhibit; bit 7 = STO; bit 8 = Current calibration ended; bit 9 = ID run ended; bit 10 = Auto phase ended; bit 11 = Off1; bit 12 = Em Off2; bit 13 = Em Off3; bit 14 = Auto reset inhibit; bit 15 = Jogging active
HR618doc 40061906.19 Speed control status wordBITMAP16Readbit 0 = Zero speed; bit 1 = Forward; bit 2 = Reverse; bit 3 = Out of window; bit 4 = Internal speed feedback; bit 5 = Encoder 1 feedback; bit 6 = Encoder 2 feedback; bit 7 = Constant speed req; bit 8 = MF speed corr min; bit 9 = MF speed corr max
HR5806doc 40580758.07 Communication diagnosticsEFB link status flags.BITMAP16Readbit 0 = Init failed; bit 1 = Addr config err; bit 2 = Silent mode; bit 3 = Reserved (Autobauding); bit 4 = Wiring error (A/B possibly swapped); bit 5 = Parity error; bit 6 = Baud rate error; bit 7 = No bus activity (5 s); bit 8 = No packets (5 s); bit 9 = Noise or addressing error; bit 10 = Comm loss; bit 11 = CW/Ref loss; bit 12 = Reserved (Not active); bit 13 = Protocol 1; bit 14 = Protocol 2; bit 15 = Internal error
HR5813doc 40581458.14 Communication loss actionReaction to EFB communication loss.UINT16Read/write0 = No action; 1 = Fault; 2 = Last speed; 3 = Speed ref safe; 4 = Fault always; 5 = Warning
HR5814doc 40581558.15 Communication loss modeWhich messages reset the comm-loss timer.UINT16Read/write1 = Any message; 2 = Cw / Ref1 / Ref2
HR5815doc 40581658.16 Communication loss timeEFB comm-loss timeout; whole seconds in 16-bit form.UINT16sRead/write
HR20201doc 42020201.01 Motor speed used (32-bit)Measured or estimated speed; CDAB assumes 58.34 = LO-HI (default).INT32CDAB× 0.01rpmRead
HR20211doc 42021201.06 Output frequency (32-bit)Estimated output frequency; CDAB assumes 58.34 = LO-HI (default).INT32CDAB× 0.01HzRead
HR20213doc 42021401.07 Motor current (32-bit)Measured motor current; CDAB assumes 58.34 = LO-HI (default).UINT32CDAB× 0.01ARead
HR20219doc 42022001.10 Motor torque (32-bit)Percent of nominal motor torque; CDAB assumes 58.34 = LO-HI (default).INT32CDAB× 0.1%Read
HR20221doc 42022201.11 DC voltage (32-bit)CDAB assumes 58.34 = LO-HI (default).UINT32CDAB× 0.01VRead
HR20227doc 42022801.14 Output power (32-bit)kW or hp per 96.16; CDAB assumes 58.34 = LO-HI (default).INT32CDAB× 0.01kWRead
HR20259doc 42026001.30 Nominal torque scale (32-bit)Torque equal to 100 %; Nm or lb·ft per 96.16; CDAB assumes 58.34 = LO-HI (default).UINT32CDAB× 0.001NmRead
HR20343doc 42034401.72 U-phase RMS current (32-bit)CDAB assumes 58.34 = LO-HI (default).UINT32CDAB× 0.01ARead
HR20345doc 42034601.73 V-phase RMS current (32-bit)CDAB assumes 58.34 = LO-HI (default).UINT32CDAB× 0.01ARead
HR20347doc 42034801.74 W-phase RMS current (32-bit)CDAB assumes 58.34 = LO-HI (default).UINT32CDAB× 0.01ARead
HR31615doc 43161658.08 Received packets (32-bit)Valid packets addressed to the drive; CDAB assumes 58.34 = LO-HI (default).UINT32CDABRead
HR31623doc 43162458.12 CRC errors (32-bit)Packets received with a CRC error; CDAB assumes 58.34 = LO-HI (default).UINT32CDABRead

Notes on this map

Check it against the live device. A register map tells you what the controller can expose; the unit in front of you may differ by firmware or options. Read a few registers and compare them with the unit’s own display; for a 32-bit value the float and byte-order decoder shows all four word orders at once, so a wrong word order or scale is obvious. New to this? Read what a register map is and why addresses are off by one.

Questions about the ABB ACS880 industrial drive, primary control program (embedded Modbus RTU)

What Modbus registers does the ABB ACS880 industrial drive, primary control program (embedded Modbus RTU) have?

This map lists 64 registers: 64 holding registers. 7 of them can be written. Registers vary with firmware, options and configuration, so confirm against the device.

Are the ABB ACS880 industrial drive, primary control program (embedded Modbus RTU) Modbus addresses 0-based or 1-based?

The manufacturer's document numbers registers Modicon 3xxxx/4xxxx (drop the prefix, subtract 1). Every address on this page is the 0-based wire address you put in the request; the documented number is shown under it where it differs. The manual writes holding registers as 6-digit references 400001-465536 covering the full 16-bit address field, so 400001 = wire address 0. Masters limited to 5 digits can reach 400001-409999 as 40001-49999, but nothing from 410000 up (which includes every 32-bit parameter register). With 58.33 Addressing mode = Mode 0 (default) a 16-bit parameter gg.ii sits at 400000 + 100*gg + ii (e.g. 01.11 -> 400111, wire 110) and its 32-bit form at 420000 + 200*gg + 2*ii (e.g. 01.07 -> 420214, wire 20213). Mode 1 uses 400000 + 256*gg + ii and Mode 2 uses 400000 + 512*gg + 2*ii; this map assumes Mode 0. 32-bit registers are listed CDAB because 58.34 Word order defaults to LO-HI (low word in the first register).

What byte order does the ABB ACS880 industrial drive, primary control program (embedded Modbus RTU) use for 32-bit values?

Multi-register values in this map use CDAB (low word first (word-swapped)). Set your client to this order for every 32/64-bit value in the table.

What are the minimum Modbus registers to integrate the ABB ACS880 industrial drive, primary control program (embedded Modbus RTU)?

Start with HR 0 Control word (EFB CW) (Control word: start/stop/reset); HR 1 Reference 1 (EFB Ref1) (Reference 1 (20000 = 46.01/46.02 for speed/frequency)); HR 3 Status word (EFB SW) (Status word: ready/running/fault/remote); HR 4 Actual value 1 (EFB Act1) (Actual value 1 (feedback matching the Ref1 type)); HR 110 01.11 DC voltage (01.11 DC voltage); HR 400 04.01 Tripping fault (04.01 Tripping fault code); HR 20211 01.06 Output frequency (32-bit) (01.06 Output frequency, 0.01 Hz (32-bit)); HR 20213 01.07 Motor current (32-bit) (01.07 Motor current, 0.01 A (32-bit)); HR 617 06.18 Start inhibit status word (06.18 Start inhibit status word).

How do I enable Modbus control of the ABB ACS880 industrial drive, primary control program (embedded Modbus RTU)?

Set 58.01 Protocol enable = Modbus RTU (this disables the drive-to-drive link on XD2D and cannot be changed while the drive runs), then 58.03 node address, 58.04 baud rate and 58.05 parity, and validate with 58.06 Communication control = Refresh settings or reboot the control unit. For control set 20.01 Ext1 commands (and 20.06 for EXT2) = Embedded fieldbus and the reference source, e.g. 22.11 Speed ref1 source or 28.11 Frequency ref1 source = EFB ref1. Fieldbus parameter writes are made permanent with 96.07 Parameter save manually = Save.

What happens when the ABB ACS880 industrial drive, primary control program (embedded Modbus RTU) loses Modbus communication?

58.14 Communication loss action (No / Fault / Last speed / Speed ref safe / Fault always / Warning) with 58.16 Communication loss time (default 3.0 s) and 58.15 Communication loss mode (any message, or only control word/reference writes, resets the timer). A loss trips 6681 EFB comm loss or warns A7CE; Speed ref safe runs at 22.41 (28.41 for frequency). Apart from Fault always, it only acts when the EFB is the active control source or 58.36 forces supervision. Monitoring is held off for 30 s after power-up.

Where is the official ABB ACS880 industrial drive, primary control program (embedded Modbus RTU) Modbus documentation?

The source is ACS880 primary control program (AINLX) firmware manual (3AUA0000085967 Rev Y), revision 2024-03-07, published free by ABB at https://search.abb.com/library/Download.aspx?DocumentID=3AUA0000085967&LanguageCode=en&DocumentPartId=1&Action=Launch.

More ABB Modbus register maps

Source: ACS880 primary control program (AINLX) firmware manual · 3AUA0000085967 Rev Y · rev. 2024-03-07. Register numbers, types, scaling and units are reproduced as published; descriptions are our own.