The ACS580 has an embedded fieldbus (EFB) RS-485 port that speaks Modbus RTU. Wire B+, A− and DGND from the drive to the AC500-eco COM1 RS-485 terminals with shielded twisted pair, terminate both ends, then set group 58 in the drive (58.01 = Modbus RTU, 58.03 node address, 58.04 baud rate, 58.05 parity, 58.06 Refresh settings) and the same values on COM1 in Automation Builder with the CPU as Modbus master.
- Both ends must agree: baud rate, parity, data/stop bits and node address
- Terminate the two ends of the RS-485 line only; enable bias once
- After changing group 58, apply with 58.06 Refresh settings
- Prove the link with one read of the status word before writing anything
Modbus RTU over RS-485 is still one of the most common PLC-to-drive links in Indian plants: cheap, robust and supported by every drive. Most problems are physical: swapped wires, missing termination or a parity mismatch. This lab removes them one by one.
Step 1: Understand the Link and Agree the Settings
Click a device to see its job on the RS-485 line.
| Setting | AC500-eco COM1 | ACS580 parameter | Lab value |
|---|---|---|---|
| Protocol | Modbus RTU, master | 58.01 Protocol enable | Modbus RTU |
| Node / slave address | SLAVE input of the block | 58.03 Node address | 1 |
| Baud rate | COM1 baud rate | 58.04 Baud rate | 19.2 kbit/s |
| Parity / framing | 8 data, even parity, 1 stop | 58.05 Parity | 8 EVEN 1 |
| Control profile | n/a | 58.25 Control profile | ABB Drives |
| Comm loss reaction | Watchdog in program (Lab 20) | 58.14 / 58.15 / 58.16 | Fault after 3 s |
Step 2: Wire the RS-485 Line
| From AC500-eco COM1 | To ACS580 EFB | Cable | Note |
|---|---|---|---|
| RS-485 B (+) | B+ | Twisted pair, wire 1 | Some vendors swap A/B labels: if no answer, swap A and B |
| RS-485 A (−) | A− | Twisted pair, wire 2 | |
| Signal ground (SGND / DGND) | DGND | Third conductor | Reference for the transceivers |
| Shield | Shield terminal / clamp | Overall screen | Earth at one end to avoid ground loops |
Termination ON at the PLC end and at the drive (last device). Bias ON at one point only. With one short trainer cable the link may work without termination, but a real plant cable will not, so build the habit now.
Step 3: Set the ACS580 Embedded Fieldbus Parameters
| Parameter | Name | Set to | Why |
|---|---|---|---|
| 58.01 | Protocol enable | Modbus RTU | Activates the EFB port |
| 58.03 | Node address | 1 | Must match the SLAVE address used by the PLC |
| 58.04 | Baud rate | 19.2 kbps | Same as COM1 |
| 58.05 | Parity | 8 EVEN 1 | Same as COM1 |
| 58.14 | Communication loss action | Fault | Drive stops safely if the PLC stops talking |
| 58.15 | Communication loss mode | Cw / Ref1 / Ref2 | Supervise the control registers |
| 58.16 | Communication loss time | 3.0 s | Longer than the PLC poll cycle |
| 58.25 | Control profile | ABB Drives | Standard control/status word used in Lab 20 |
| 58.101–58.106 | Data I/O 1–6 | Defaults: CW, Ref1, Ref2, SW, Act1, Act2 | Gives registers 400001–400006 |
| 58.06 | Communication control | Refresh settings | Applies the new settings |
| 20.01 | Ext1 commands | Embedded fieldbus | Start/stop from the control word (Lab 20) |
| 22.11 / 28.11 | Ext1 speed / frequency ref1 | EFB ref1 | Use 22.11 in speed control, 28.11 in frequency control |
| Holding register | Data I/O | Content | Direction |
|---|---|---|---|
| 400001 | 58.101 | Control word (CW) | PLC → drive |
| 400002 | 58.102 | Reference 1 (speed/frequency) | PLC → drive |
| 400003 | 58.103 | Reference 2 | PLC → drive |
| 400004 | 58.104 | Status word (SW) | drive → PLC |
| 400005 | 58.105 | Actual value 1 | drive → PLC |
| 400006 | 58.106 | Actual value 2 | drive → PLC |
Check 58.08 to 58.11 (received/transmitted packets, CRC errors) on the drive later: they are the fastest way to see whether frames arrive.
Step 4: Configure COM1 on the AC500-eco
- In the device tree open COM1 under the CPU.
- Set the protocol to Modbus RTU and the operating mode to Master.
- Set baud rate 19200, parity even, 8 data bits, 1 stop bit.
- Add the AC500 Modbus library to the application if it is not already present (V2: the Modbus library containing
MODMAST; V3 CPUs use the equivalent Modbus RTU master block of their library). - Build and download (Lab 8).
(* One read of the ACS580 status word: register 400004 = offset 3 *)
RD_SW(EN := Trigger_Read, (* rising edge starts the request *)
COM := 1, (* COM1 *)
SLAVE := 1, (* ACS580 58.03 *)
FCT := 3, (* read holding registers *)
TIMEOUT := 500, (* ms *)
ADDR := 3, (* 400004 *)
NB := 1,
DATA := ADR(Drive_SW));
(* RD_SW.DONE / RD_SW.ERR / RD_SW.ERNO report the result *)Block and pin names above follow the AC500 V2 Modbus library MODMAST. Check the exact names in the library documentation of your Automation Builder version; some libraries use 0-based and some 1-based register addressing.
Step 5: Build and Check Modbus Frames
The PLC block builds these bytes for you, but seeing them makes fault finding with a serial sniffer much easier. The builder computes the Modbus CRC-16 exactly as the CPU and drive do.
Modbus RTU frame builder
Default: read 6 registers from 400001 on node 1, which returns CW, Ref1, Ref2, SW, Act1 and Act2.
| ID | Check | How to check | Pass criterion | Result |
|---|---|---|---|---|
| Link tests | ||||
| MB-01 | Settings match | Compare COM1 and group 58 | Same baud, parity, node | |
| MB-02 | Frames received | Watch drive 58.08/58.09 counters | Counters increase | |
| MB-03 | No CRC errors | Watch 58.10/58.11 error counters | Stay at 0 | |
| MB-04 | Status read | Trigger RD_SW | DONE, Drive_SW not 0 | |
| MB-05 | Comm loss | Unplug the cable with drive stopped | Drive EFB comm loss fault after 58.16 | |
Practice Exercise
Change the drive node address to 5 and the baud rate to 38.4 kbps on both ends. Use the frame builder to predict the request bytes for reading 400004 on node 5, then compare with what you expect a serial sniffer to show.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| No response, timeout error | A/B swapped, wrong node, settings differ | Swap A/B, check 58.03, compare framing |
| CRC errors on drive counters | Wrong parity/baud, missing termination, noise | Match settings; terminate both ends; check shield |
| Settings changed but no effect | 58.06 not refreshed | Set 58.06 Refresh settings or power cycle the drive |
| Works on bench, fails in plant | Long cable without termination/bias | Terminate ends, enable bias once, avoid stubs |
| Exception response from drive | Register or function not supported | Use FC03/06/16 and registers 400001–400006 |
Frequently asked questions
Which ACS580 parameters set up Modbus RTU?
Group 58: 58.01 Protocol enable = Modbus RTU, 58.03 Node address, 58.04 Baud rate, 58.05 Parity, then 58.06 Refresh settings. Set 20.01 and 22.11/28.11 to embedded fieldbus to control the drive.
What are the ACS580 Modbus register addresses?
With default Data I/O settings: 400001 control word, 400002 reference 1, 400003 reference 2, 400004 status word, 400005 actual 1 and 400006 actual 2.
Do I need termination on a short RS-485 cable?
A very short cable may work without it, but terminating both ends with 120 Ω is the correct practice and essential on longer runs.
Can the AC500-eco be a Modbus RTU master?
Yes. Configure COM1 as Modbus RTU master in Automation Builder and use the Modbus master block from the AC500 Modbus library.
Why does my drive show a communication loss fault?
The drive did not receive valid control frames within 58.16. Check that the PLC polls continuously, the cable and settings, and that 58.15 supervises the registers you write.