ABB AC500 PLC: Programming and Configuration

ABB''s AC500 programmable logic controller family is one of the most widely deployed PLC platforms in Europe and the Middle East, with a particularly strong presence in Turkish industrial automation. The AC500 platform spans modular controllers for distributed applications, compact eCo units for cost-sensitive machines, and certified safety controllers for functional safety applications. This article covers the complete ecosystem: hardware selection, Automation Builder software, IEC 61131-3 programming languages, drive integration, and communication protocols.

Product Line Overview

The AC500 family consists of three main sub-families, each targeting a different segment of the automation market:

FeatureAC500 eCoAC500 ModularAC500-S Safety
Target applicationCompact machines, local I/ODistributed systems, mid-to-large plantsSafety-critical processes (SIL 2/3)
CPU model rangePM50xx (5012, 5032, 5052)PM56xx, PM57xx, PM58xxPM50xx-S (e.g., PM5072-S)
Max digital I/O (local)2561024 (per CPU, expandable via bus)256 (safety), expandable with F-modules
Max analogue I/O (local)6451248
Program memory256 KB – 1 MB2 MB – 8 MB1 MB
Cycle time (1K instructions)~0.5 µs (PM5052)~0.02 µs (PM5832)~0.5 µs
Communication interfaces1x Ethernet, 1x COM, 1x USB2x Ethernet, 2x COM, 1x USB, optional FPU1x Ethernet, 1x COM, 1x USB
Safety standardN/A (standard only)N/A (standard only)EN 61508 SIL 2/3, EN 62061, EN ISO 13849
Operating temperature-25 to +60 °C-40 to +70 °C-25 to +60 °C
Typical project size200-500 I/O points500-5000+ I/O pointsMixed standard/safety

Automation Builder Software

Automation Builder is ABB''s integrated engineering framework for the AC500, AC500-S, drive, motion, and robot product families. It is built on top of CODESYS 3.5, which means the programming environment, language support, and tooling are shared with the broader CODESYS ecosystem.

Key Features

  • Single engineering environment — Configure AC500 CPUs, ABB drives (ACS580, ACS880), servo drives (MotiFlex), and robot controllers from one project tree.
  • IEC 61131-3 language support — Full support for all five languages: Ladder Diagram (LD), Function Block Diagram (FBD), Structured Text (ST), Instruction List (IL, legacy), Sequential Function Chart (SFC).
  • Continuous Function Chart (CFC) — A graphical language for data-flow-oriented programming; especially useful for drive and process control applications.
  • Integrated visualisation — Built-in HMI designer for local panels and web-based operator interfaces.
  • Version management — Project comparison, merge, and library versioning built into the IDE.
  • Simulation — Full offline simulation of the control program, including I/O forcing and visualisation.

Installation and System Requirements

Minimum requirements:
- Windows 10/11 (64-bit) or Windows Server 2019/2022
- Intel Core i5, 2.5 GHz or higher
- 8 GB RAM (16 GB recommended for large projects)
- 10 GB free disk space for full installation
- Microsoft .NET Framework 4.8
- Screen resolution 1920x1080 or higher

Installation steps:
1. Download Automation Builder from ABB Library (requires MyABB account)
2. Run the installer as Administrator
3. Select the components: AC500 firmware libraries, drive libraries, visualisation
4. Activate the license (node-locked or network license server)
5. Launch Automation Builder and select the target CPU

Hardware Configuration in Automation Builder

Step 1: Create a New Project

  1. File → New Project → AC500 Project.
  2. Select the CPU model (e.g., PM5732-ETH for a mid-range modular controller).
  3. Choose the firmware version — match the firmware loaded on the physical CPU.
  4. Select the programming language(s) — most projects use a mix of FBD and ST.

Step 2: Configure the Hardware Tree

The hardware tree in Automation Builder mirrors the physical backplane:

AC500_Station (PM5732-ETH)
├── CPU PM5732-ETH (192.168.1.10)
├── Slot 1: DI561 (16x Digital Input, 24 VDC)
├── Slot 2: DO541 (16x Digital Output, 24 VDC, 0.5 A)
├── Slot 3: AI523 (8x Analogue Input, 4-20 mA, 16 bit)
├── Slot 4: AO522 (4x Analogue Output, 0-10 V, 16 bit)
├── Slot 5: COM1 — CM572-SI (Serial Interface, Modbus RTU Master)
├── Slot 6: COM2 — CM574-RS (Serial Interface, PROFIBUS DP Master)
├── Slot 7: CM575-ETH2 (Second Ethernet interface)
└── Slot 8: TB521 (Terminal block extension)
  1. Add I/O modules — Right-click the backplane slot and select the module from the catalogue. The software automatically assigns I/O addresses.
  2. Configure module parameters — Set input filters, output behaviour on CPU stop, and diagnostic enable flags per module.
  3. Set I/O addressing — ABB uses a slot-based addressing scheme: %IW3.2.1 (Input Word, Slot 3, Channel 2, Sub-index 1). Automation Builder handles this automatically unless you need fixed addressing for legacy compatibility.

Step 3: Network Configuration

  • IP address assignment — Set the CPU''s IP address, subnet mask, and default gateway. The ETH interface is typically on the plant network (192.168.1.x). The second Ethernet interface (CM575-ETH2) can be on a separate machine network.
  • DNS and hostname — Optional, but useful for large networks with name resolution services.
  • Time synchronisation — Enable SNTP client to synchronise the CPU clock with a plant-wide NTP server.

IEC 61131-3 Programming

Automation Builder supports all five IEC languages. In practice, we recommend the following language selection strategy:

Application TypeRecommended LanguageRationale
Discrete logic (conveyors, pick-and-place)Ladder Diagram (LD)Electricians and maintenance technicians read LD easily.
Process control (PID, cascade, feedforward)Function Block Diagram (FBD)Data flow is visually explicit; easy to trace signal paths.
Complex calculations (modelling, statistics)Structured Text (ST)Efficient for mathematical expressions and arrays.
Sequential operations (batch, recipe)Sequential Function Chart (SFC)State machine representation matches batch process logic.
Drive communication (fieldbus data mapping)Continuous Function Chart (CFC)Handles complex data structure mapping intuitively.

Example: Structured Text PID Control

PROGRAM FB_MixTankControl
VAR
    rPV           : REAL;       -- Process variable (level)
    rSP           : REAL;       -- Setpoint
    rOP           : REAL;       -- Output to control valve
    fbPID         : PID_P;      -- ABB PID function block instance
    rManualOP     : REAL := 50.0;
    xAutoMode     : BOOL := TRUE;
END_VAR

-- PID control logic
IF xAutoMode THEN
    fbPID(
        PV     := rPV,
        SP     := rSP,
        GAIN   := 1.5,
        TI     := T#30s,
        TD     := T#0s,
        CYCLE  := T#100ms
    );
    rOP := fbPID.OP;
ELSE
    rOP := rManualOP;
END_IF

rOP := LIMIT(rOP, 0.0, 100.0);

Drive Integration (ACS880 / ACS580)

ABB drives are configured directly within Automation Builder using the Drive Configuration Tool (DCT). This eliminates the need for a separate drive configuration package.

Integration Workflow

  1. Right-click the project tree → Add DeviceABB Drive → select ACS880.
  2. Set the drive node ID on the fieldbus (e.g., Modbus TCP node 10, or PROFINET device number).
  3. The DCT reads the drive''s parameter structure and makes every parameter accessible as a PLC variable.
  4. Map drive parameters to PLC variables using the Data Mapping Editor:
    PLC_Var                     Drive Parameter
    ────────────────────────────────────────────────────
    rDrive_SpeedRef_1    ⟶     ACS880.SPEED.REF1 (P.19.03)
    rDrive_SpeedActual   ⟶     ACS880.SPEED.ACTUAL (P.1.02)
    xDrive_Running       ⟶     ACS880.STATUS.RUNNING (P.6.11)
    xDrive_Fault         ⟶     ACS880.STATUS.FAULT (P.6.14)
  5. Download the project — the drive configuration is sent together with the PLC program.

Key Drive Parameters for AC500 Integration

ParameterACS880 NumberACS580 NumberDescription
Fieldbus protocolP.10.01P.10.01Select Modbus TCP / PROFINET / EtherNet/IP
Fieldbus node IDP.10.02P.10.02Unique node number on the bus
Speed reference 1P.19.03P.19.03Speed setpoint from PLC (scaled 0-100% = 0-max rpm)
Actual speedP.1.02P.1.02Measured motor speed, read by PLC
Current actualP.1.03P.1.03Motor current, for load monitoring
Fault wordP.6.14P.6.14Bit-coded fault indication
Control wordP.6.01P.6.01Start/stop/reset commands from PLC
Status wordP.6.11P.6.11Ready/running/faulted status to PLC

Communication Protocols

PROFINET IO

  • Use the CM575-PNIO or CM577-PNIO communication module.
  • Configure PROFINET IO Controller mode (the AC500 acts as the IO controller, managing up to 128 IO devices).
  • Use the GSDML file from the IO device manufacturer to import device description.
  • Set the update rate (1-512 ms) per device. For drives, 4-8 ms is typical. For remote I/O, 16-32 ms.

EtherNet/IP

  • Use the CM577-ENIU communication module or the built-in Ethernet port on newer CPUs.
  • AC500 supports both Scanner (originator) and Adapter (target) modes.
  • Configuration is done via EDS file import in Automation Builder.
  • Typical RPI values: 50-200 ms for discrete I/O, 10-50 ms for drive control.

Modbus TCP

  • Supported on all AC500 CPUs with built-in Ethernet.
  • Automation Builder provides pre-built function blocks: MB_Client and MB_Server.
  • MB_Client (Master) can read/write to any Modbus TCP device.
  • MB_Server (Slave) exposes AC500 I/O and memory as Modbus registers for SCADA or HMI connectivity.
-- Modbus TCP client example - read holding registers
PROGRAM ReadModbusDevice
VAR
    fbMBRead   : MB_Client_ReadHoldReg;
    xTrigger   : BOOL := TRUE;
    arrData    : ARRAY[0..9] OF WORD;
    xDone      : BOOL;
    xError     : BOOL;
    eErrorID   : MB_Error;
END_VAR

fbMBRead(
    Execute     := xTrigger,
    UnitID      := 1,
    IPAddress   := "192.168.1.50",
    Timeout     := T#500ms,
    Quantity    := 10,
    DataPtr     := ADR(arrData)
);
xDone  := fbMBRead.Done;
xError := fbMBRead.Error;
eErrorID := fbMBRead.ErrorID;

Redundancy Options

For high-availability applications, the AC500 family offers two redundancy approaches:

CPU Redundancy (Hot-Standby)

  • Two identical AC500 CPUs (e.g., PM5822-ETH) are connected via a synchronisation link.
  • One CPU is Active, the other is Standby. The standby CPU mirrors the active CPU''s memory, I/O state, and communication connections.
  • If the active CPU fails, the standby takes over within one scan cycle. OPC UA and fieldbus connections are seamlessly transferred.
  • Configuration is done in Automation Builder by enabling Redundancy in the CPU properties.

Network Redundancy (MRP / RSTP)

  • Ethernet communication to and from the AC500 can be made redundant using Media Redundancy Protocol (MRP, IEC 62439-2) or Rapid Spanning Tree Protocol (RSTP, IEEE 802.1w).
  • MRP guarantees reconvergence in less than 10 ms (for ring topologies up to 50 switches).
  • Configure the AC500''s Ethernet port as an MRP client in the hardware configuration.

Firmware Updates and Backup

# Automation Builder command-line tool for firmware updates
ABBControlCmd backup --target 192.168.1.10 --file backup_AC500.bin
ABBControlCmd update-firmware --target 192.168.1.10 --file PM5732_V3.4.0.bin
ABBControlCmd restore --target 192.168.1.10 --file backup_AC500.bin
ABBControlCmd info --target 192.168.1.10

Best Practices for AC500 Projects

  • Version control your Automation Builder project — The project file (.ac5proj) is XML-based and version-control-friendly. Use Git or SVN.
  • Use structured variable naming — Follow IEC 61131-3 convention: rTankLevel_PV, xMotor01_Running. Prefix conventions (r=real, x=bool, fb=function block) make code self-documenting.
  • Separate program organisation units (POUs) — Split logic into manageable POUs: one for motor control, one for valve control, one for PID loops, one for communication.
  • Use library versions — When using ABB libraries (PID, Modbus, DriveControl), pin them to a specific version. Do not use "latest" in production projects — a library update could change behaviour.
  • Download and test in simulation first — Automation Builder''s simulation mode catches most syntax errors and logic bugs before they reach the plant floor.

Key takeaway: The ABB AC500 platform offers a complete automation solution from a single vendor — PLC, drives, safety, and visualisation — all engineered in Automation Builder. Its strong suit is the tight integration with ABB drives and the scalable hardware range from compact eCo to high-performance redundancy systems. For Turkish industrial automation professionals working with ABB equipment, the AC500 ecosystem provides a reliable, well-supported platform that reduces engineering time and simplifies lifecycle management.


References & Further Reading

  1. ABB AC500 — Programmable Logic Controller Platform — Official ABB product page for the AC500 PLC family, including hardware specifications, CPU models, I/O modules, and communication interfaces.
  2. ABB Automation Builder — Integrated Engineering Software — Official ABB documentation for Automation Builder, the IEC 61131-3 engineering framework for AC500 PLCs, drives, and motion controllers based on CODESYS.
  3. CODESYS — IEC 61131-3 Development Environment — Official CODESYS documentation providing the underlying IEC 61131-3 development platform on which ABB Automation Builder is built.
  4. IEC 61131-3 — Programmable Controllers — Programming Languages — International standard defining Ladder Diagram, Function Block Diagram, Structured Text, Sequential Function Chart, and Instruction List languages supported by the AC500 platform.
  5. ABB ACS880 — Industrial AC Drive Integration with AC500 — Official ABB drive documentation covering the integration of ACS880 drives with AC500 PLCs via Automation Builder and fieldbus protocols.