{"data":{"slug":"abb-ac500-plc-programming-configuration","title":"ABB AC500 PLC: Programming and Configuration","summary":"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…","category":{"slug":"automation-systems","name":"Automation Systems"},"url":"https://wiki.aspotomasyon.com/article/abb-ac500-plc-programming-configuration","markdown_url":"https://wiki.aspotomasyon.com/article/abb-ac500-plc-programming-configuration.md","api_url":"https://wiki.aspotomasyon.com/api/v1/articles/abb-ac500-plc-programming-configuration","published":"2026-05-13T12:05:55+00:00","modified":"2026-09-13T11:07:23+00:00","reading_minutes":9,"word_count":1942,"image":"https://wiki.aspotomasyon.com/assets/social/abb-ac500-plc-programming-configuration-a20a4b8f0d37.png","html":"<p>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.</p><figure class=\"article-figure\"><img src=\"https://wiki.aspotomasyon.com/assets/diagrams/automation-systems-context.svg\" width=\"1100\" height=\"460\" loading=\"lazy\" decoding=\"async\" alt=\"Conceptual control-system layers. Safety functions, communication paths, and redundancy must be designed for the application; the diagram is not a wiring or safety design.\"><figcaption>Conceptual control-system layers. Safety functions, communication paths, and redundancy must be designed for the application; the diagram is not a wiring or safety design. <a href=\"https://wiki.aspotomasyon.com/assets/diagrams/automation-systems-context.svg\" target=\"_blank\" rel=\"noopener\">View full size</a></figcaption></figure>\n\n<h2 id=\"product-line-overview\">Product Line Overview</h2>\n\n<p>The AC500 family consists of three main sub-families, each targeting a different segment of the automation market:</p>\n\n<table>\n    <thead>\n        <tr><th>Feature</th><th>AC500 eCo</th><th>AC500 Modular</th><th>AC500-S Safety</th></tr>\n    </thead>\n    <tbody>\n        <tr><td>Target application</td><td>Compact machines, local I/O</td><td>Distributed systems, mid-to-large plants</td><td>Safety-critical processes (SIL 2/3)</td></tr>\n        <tr><td>CPU model range</td><td>PM50xx (5012, 5032, 5052)</td><td>PM56xx, PM57xx, PM58xx</td><td>PM50xx-S (e.g., PM5072-S)</td></tr>\n        <tr><td>Max digital I/O (local)</td><td>256</td><td>1024 (per CPU, expandable via bus)</td><td>256 (safety), expandable with F-modules</td></tr>\n        <tr><td>Max analogue I/O (local)</td><td>64</td><td>512</td><td>48</td></tr>\n        <tr><td>Program memory</td><td>256 KB – 1 MB</td><td>2 MB – 8 MB</td><td>1 MB</td></tr>\n        <tr><td>Cycle time (1K instructions)</td><td>~0.5 µs (PM5052)</td><td>~0.02 µs (PM5832)</td><td>~0.5 µs</td></tr>\n        <tr><td>Communication interfaces</td><td>1x Ethernet, 1x COM, 1x USB</td><td>2x Ethernet, 2x COM, 1x USB, optional FPU</td><td>1x Ethernet, 1x COM, 1x USB</td></tr>\n        <tr><td>Safety standard</td><td>N/A (standard only)</td><td>N/A (standard only)</td><td>EN 61508 SIL 2/3, EN 62061, EN ISO 13849</td></tr>\n        <tr><td>Operating temperature</td><td>-25 to +60 °C</td><td>-40 to +70 °C</td><td>-25 to +60 °C</td></tr>\n        <tr><td>Typical project size</td><td>200-500 I/O points</td><td>500-5000+ I/O points</td><td>Mixed standard/safety</td></tr>\n    </tbody>\n</table>\n\n<h2 id=\"automation-builder-software\">Automation Builder Software</h2>\n\n<p><strong>Automation Builder</strong> 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.</p>\n\n<h3 id=\"key-features\">Key Features</h3>\n<ul>\n    <li><strong>Single engineering environment</strong> — Configure AC500 CPUs, ABB drives (ACS580, ACS880), servo drives (MotiFlex), and robot controllers from one project tree.</li>\n    <li><strong>IEC 61131-3 language support</strong> — Full support for all five languages: Ladder Diagram (LD), Function Block Diagram (FBD), Structured Text (ST), Instruction List (IL, legacy), Sequential Function Chart (SFC).</li>\n    <li><strong>Continuous Function Chart (CFC)</strong> — A graphical language for data-flow-oriented programming; especially useful for drive and process control applications.</li>\n    <li><strong>Integrated visualisation</strong> — Built-in HMI designer for local panels and web-based operator interfaces.</li>\n    <li><strong>Version management</strong> — Project comparison, merge, and library versioning built into the IDE.</li>\n    <li><strong>Simulation</strong> — Full offline simulation of the control program, including I/O forcing and visualisation.</li>\n</ul>\n\n<h3 id=\"installation-and-system-requirements\">Installation and System Requirements</h3>\n<pre translate=\"no\" class=\"notranslate\"><code translate=\"no\" class=\"notranslate\">Minimum requirements:\n- Windows 10/11 (64-bit) or Windows Server 2019/2022\n- Intel Core i5, 2.5 GHz or higher\n- 8 GB RAM (16 GB recommended for large projects)\n- 10 GB free disk space for full installation\n- Microsoft .NET Framework 4.8\n- Screen resolution 1920x1080 or higher\n\nInstallation steps:\n1. Download Automation Builder from ABB Library (requires MyABB account)\n2. Run the installer as Administrator\n3. Select the components: AC500 firmware libraries, drive libraries, visualisation\n4. Activate the license (node-locked or network license server)\n5. Launch Automation Builder and select the target CPU</code></pre>\n\n<h2 id=\"hardware-configuration-in-automation-builder\">Hardware Configuration in Automation Builder</h2>\n\n<h3 id=\"step-1-create-a-new-project\">Step 1: Create a New Project</h3>\n<ol>\n    <li>File → New Project → <strong>AC500 Project</strong>.</li>\n    <li>Select the CPU model (e.g., PM5732-ETH for a mid-range modular controller).</li>\n    <li>Choose the firmware version — match the firmware loaded on the physical CPU.</li>\n    <li>Select the programming language(s) — most projects use a mix of FBD and ST.</li>\n</ol>\n\n<h3 id=\"step-2-configure-the-hardware-tree\">Step 2: Configure the Hardware Tree</h3>\n<p>The hardware tree in Automation Builder mirrors the physical backplane:</p>\n<pre translate=\"no\" class=\"notranslate\"><code translate=\"no\" class=\"notranslate\">AC500_Station (PM5732-ETH)\n├── CPU PM5732-ETH (192.168.1.10)\n├── Slot 1: DI561 (16x Digital Input, 24 VDC)\n├── Slot 2: DO541 (16x Digital Output, 24 VDC, 0.5 A)\n├── Slot 3: AI523 (8x Analogue Input, 4-20 mA, 16 bit)\n├── Slot 4: AO522 (4x Analogue Output, 0-10 V, 16 bit)\n├── Slot 5: COM1 — CM572-SI (Serial Interface, Modbus RTU Master)\n├── Slot 6: COM2 — CM574-RS (Serial Interface, PROFIBUS DP Master)\n├── Slot 7: CM575-ETH2 (Second Ethernet interface)\n└── Slot 8: TB521 (Terminal block extension)</code></pre>\n\n<ol>\n    <li><strong>Add I/O modules</strong> — Right-click the backplane slot and select the module from the catalogue. The software automatically assigns I/O addresses.</li>\n    <li><strong>Configure module parameters</strong> — Set input filters, output behaviour on CPU stop, and diagnostic enable flags per module.</li>\n    <li><strong>Set I/O addressing</strong> — ABB uses a slot-based addressing scheme: <code translate=\"no\" class=\"notranslate\">%IW3.2.1</code> (Input Word, Slot 3, Channel 2, Sub-index 1). Automation Builder handles this automatically unless you need fixed addressing for legacy compatibility.</li>\n</ol>\n\n<h3 id=\"step-3-network-configuration\">Step 3: Network Configuration</h3>\n<ul>\n    <li><strong>IP address assignment</strong> — 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.</li>\n    <li><strong>DNS and hostname</strong> — Optional, but useful for large networks with name resolution services.</li>\n    <li><strong>Time synchronisation</strong> — Enable SNTP client to synchronise the CPU clock with a plant-wide NTP server.</li>\n</ul>\n\n<h2 id=\"iec-61131-3-programming\">IEC 61131-3 Programming</h2>\n\n<p>Automation Builder supports all five IEC languages. In practice, we recommend the following language selection strategy:</p>\n\n<table>\n    <thead>\n        <tr><th>Application Type</th><th>Recommended Language</th><th>Rationale</th></tr>\n    </thead>\n    <tbody>\n        <tr><td>Discrete logic (conveyors, pick-and-place)</td><td>Ladder Diagram (LD)</td><td>Electricians and maintenance technicians read LD easily.</td></tr>\n        <tr><td>Process control (PID, cascade, feedforward)</td><td>Function Block Diagram (FBD)</td><td>Data flow is visually explicit; easy to trace signal paths.</td></tr>\n        <tr><td>Complex calculations (modelling, statistics)</td><td>Structured Text (ST)</td><td>Efficient for mathematical expressions and arrays.</td></tr>\n        <tr><td>Sequential operations (batch, recipe)</td><td>Sequential Function Chart (SFC)</td><td>State machine representation matches batch process logic.</td></tr>\n        <tr><td>Drive communication (fieldbus data mapping)</td><td>Continuous Function Chart (CFC)</td><td>Handles complex data structure mapping intuitively.</td></tr>\n    </tbody>\n</table>\n\n<h3 id=\"example-structured-text-pid-control\">Example: Structured Text PID Control</h3>\n<pre translate=\"no\" class=\"notranslate\"><code translate=\"no\" class=\"notranslate\">PROGRAM FB_MixTankControl\nVAR\n    rPV           : REAL;       -- Process variable (level)\n    rSP           : REAL;       -- Setpoint\n    rOP           : REAL;       -- Output to control valve\n    fbPID         : PID_P;      -- ABB PID function block instance\n    rManualOP     : REAL := 50.0;\n    xAutoMode     : BOOL := TRUE;\nEND_VAR\n\n-- PID control logic\nIF xAutoMode THEN\n    fbPID(\n        PV     := rPV,\n        SP     := rSP,\n        GAIN   := 1.5,\n        TI     := T#30s,\n        TD     := T#0s,\n        CYCLE  := T#100ms\n    );\n    rOP := fbPID.OP;\nELSE\n    rOP := rManualOP;\nEND_IF\n\nrOP := LIMIT(rOP, 0.0, 100.0);\n</code></pre>\n\n<h2 id=\"drive-integration-acs880-acs580\">Drive Integration (ACS880 / ACS580)</h2>\n\n<p>ABB drives are configured directly within Automation Builder using the <strong>Drive Configuration Tool (DCT)</strong>. This eliminates the need for a separate drive configuration package.</p>\n\n<h3 id=\"integration-workflow\">Integration Workflow</h3>\n<ol>\n    <li>Right-click the project tree → <strong>Add Device</strong> → <strong>ABB Drive</strong> → select <strong>ACS880</strong>.</li>\n    <li>Set the drive node ID on the fieldbus (e.g., Modbus TCP node 10, or PROFINET device number).</li>\n    <li>The DCT reads the drive''s parameter structure and makes every parameter accessible as a PLC variable.</li>\n    <li>Map drive parameters to PLC variables using the <strong>Data Mapping Editor</strong>:\n        <pre translate=\"no\" class=\"notranslate\"><code translate=\"no\" class=\"notranslate\">PLC_Var                     Drive Parameter\n────────────────────────────────────────────────────\nrDrive_SpeedRef_1    ⟶     ACS880.SPEED.REF1 (P.19.03)\nrDrive_SpeedActual   ⟶     ACS880.SPEED.ACTUAL (P.1.02)\nxDrive_Running       ⟶     ACS880.STATUS.RUNNING (P.6.11)\nxDrive_Fault         ⟶     ACS880.STATUS.FAULT (P.6.14)</code></pre>\n    </li>\n    <li>Download the project — the drive configuration is sent together with the PLC program.</li>\n</ol>\n\n<h3 id=\"key-drive-parameters-for-ac500-integration\">Key Drive Parameters for AC500 Integration</h3>\n<table>\n    <thead>\n        <tr><th>Parameter</th><th>ACS880 Number</th><th>ACS580 Number</th><th>Description</th></tr>\n    </thead>\n    <tbody>\n        <tr><td>Fieldbus protocol</td><td>P.10.01</td><td>P.10.01</td><td>Select Modbus TCP / PROFINET / EtherNet/IP</td></tr>\n        <tr><td>Fieldbus node ID</td><td>P.10.02</td><td>P.10.02</td><td>Unique node number on the bus</td></tr>\n        <tr><td>Speed reference 1</td><td>P.19.03</td><td>P.19.03</td><td>Speed setpoint from PLC (scaled 0-100% = 0-max rpm)</td></tr>\n        <tr><td>Actual speed</td><td>P.1.02</td><td>P.1.02</td><td>Measured motor speed, read by PLC</td></tr>\n        <tr><td>Current actual</td><td>P.1.03</td><td>P.1.03</td><td>Motor current, for load monitoring</td></tr>\n        <tr><td>Fault word</td><td>P.6.14</td><td>P.6.14</td><td>Bit-coded fault indication</td></tr>\n        <tr><td>Control word</td><td>P.6.01</td><td>P.6.01</td><td>Start/stop/reset commands from PLC</td></tr>\n        <tr><td>Status word</td><td>P.6.11</td><td>P.6.11</td><td>Ready/running/faulted status to PLC</td></tr>\n    </tbody>\n</table>\n\n<h2 id=\"communication-protocols\">Communication Protocols</h2>\n\n<h3 id=\"profinet-io\">PROFINET IO</h3>\n<ul>\n    <li>Use the <strong>CM575-PNIO</strong> or <strong>CM577-PNIO</strong> communication module.</li>\n    <li>Configure PROFINET IO Controller mode (the AC500 acts as the IO controller, managing up to 128 IO devices).</li>\n    <li>Use the <strong>GSDML</strong> file from the IO device manufacturer to import device description.</li>\n    <li>Set the update rate (1-512 ms) per device. For drives, 4-8 ms is typical. For remote I/O, 16-32 ms.</li>\n</ul>\n\n<h3 id=\"ethernetip\">EtherNet/IP</h3>\n<ul>\n    <li>Use the <strong>CM577-ENIU</strong> communication module or the built-in Ethernet port on newer CPUs.</li>\n    <li>AC500 supports both Scanner (originator) and Adapter (target) modes.</li>\n    <li>Configuration is done via <strong>EDS</strong> file import in Automation Builder.</li>\n    <li>Typical RPI values: 50-200 ms for discrete I/O, 10-50 ms for drive control.</li>\n</ul>\n\n<h3 id=\"modbus-tcp\">Modbus TCP</h3>\n<ul>\n    <li>Supported on all AC500 CPUs with built-in Ethernet.</li>\n    <li>Automation Builder provides pre-built function blocks: <code translate=\"no\" class=\"notranslate\">MB_Client</code> and <code translate=\"no\" class=\"notranslate\">MB_Server</code>.</li>\n    <li>MB_Client (Master) can read/write to any Modbus TCP device.</li>\n    <li>MB_Server (Slave) exposes AC500 I/O and memory as Modbus registers for SCADA or HMI connectivity.</li>\n</ul>\n\n<pre translate=\"no\" class=\"notranslate\"><code translate=\"no\" class=\"notranslate\">-- Modbus TCP client example - read holding registers\nPROGRAM ReadModbusDevice\nVAR\n    fbMBRead   : MB_Client_ReadHoldReg;\n    xTrigger   : BOOL := TRUE;\n    arrData    : ARRAY[0..9] OF WORD;\n    xDone      : BOOL;\n    xError     : BOOL;\n    eErrorID   : MB_Error;\nEND_VAR\n\nfbMBRead(\n    Execute     := xTrigger,\n    UnitID      := 1,\n    IPAddress   := \"192.168.1.50\",\n    Timeout     := T#500ms,\n    Quantity    := 10,\n    DataPtr     := ADR(arrData)\n);\nxDone  := fbMBRead.Done;\nxError := fbMBRead.Error;\neErrorID := fbMBRead.ErrorID;\n</code></pre>\n\n<h2 id=\"redundancy-options\">Redundancy Options</h2>\n\n<p>For high-availability applications, the AC500 family offers two redundancy approaches:</p>\n\n<h3 id=\"cpu-redundancy-hot-standby\">CPU Redundancy (Hot-Standby)</h3>\n<ul>\n    <li>Two identical AC500 CPUs (e.g., PM5822-ETH) are connected via a synchronisation link.</li>\n    <li>One CPU is Active, the other is Standby. The standby CPU mirrors the active CPU''s memory, I/O state, and communication connections.</li>\n    <li>If the active CPU fails, the standby takes over within one scan cycle. OPC UA and fieldbus connections are seamlessly transferred.</li>\n    <li>Configuration is done in Automation Builder by enabling <strong>Redundancy</strong> in the CPU properties.</li>\n</ul>\n\n<h3 id=\"network-redundancy-mrp-rstp\">Network Redundancy (MRP / RSTP)</h3>\n<ul>\n    <li>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).</li>\n    <li>MRP guarantees reconvergence in less than 10 ms (for ring topologies up to 50 switches).</li>\n    <li>Configure the AC500''s Ethernet port as an MRP client in the hardware configuration.</li>\n</ul>\n\n<h2 id=\"firmware-updates-and-backup\">Firmware Updates and Backup</h2>\n\n<pre translate=\"no\" class=\"notranslate\"><code translate=\"no\" class=\"notranslate\"># Automation Builder command-line tool for firmware updates\nABBControlCmd backup --target 192.168.1.10 --file backup_AC500.bin\nABBControlCmd update-firmware --target 192.168.1.10 --file PM5732_V3.4.0.bin\nABBControlCmd restore --target 192.168.1.10 --file backup_AC500.bin\nABBControlCmd info --target 192.168.1.10</code></pre>\n\n<h2 id=\"best-practices-for-ac500-projects\">Best Practices for AC500 Projects</h2>\n<ul>\n    <li><strong>Version control your Automation Builder project</strong> — The project file (.ac5proj) is XML-based and version-control-friendly. Use Git or SVN.</li>\n    <li><strong>Use structured variable naming</strong> — Follow IEC 61131-3 convention: <code translate=\"no\" class=\"notranslate\">rTankLevel_PV</code>, <code translate=\"no\" class=\"notranslate\">xMotor01_Running</code>. Prefix conventions (r=real, x=bool, fb=function block) make code self-documenting.</li>\n    <li><strong>Separate program organisation units (POUs)</strong> — Split logic into manageable POUs: one for motor control, one for valve control, one for PID loops, one for communication.</li>\n    <li><strong>Use library versions</strong> — 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.</li>\n    <li><strong>Download and test in simulation first</strong> — Automation Builder''s simulation mode catches most syntax errors and logic bugs before they reach the plant floor.</li>\n</ul>\n\n<blockquote>\n    <p><strong>Key takeaway:</strong> 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.</p>\n</blockquote><hr>\n<h2 id=\"references-further-reading\">References &amp; Further Reading</h2>\n<ol>\n    <li><a href=\"https://new.abb.com/plc\" rel=\"noopener noreferrer\" target=\"_blank\">ABB AC500 — Programmable Logic Controller Platform</a> — Official ABB product page for the AC500 PLC family, including hardware specifications, CPU models, I/O modules, and communication interfaces.</li>\n    <li><a href=\"https://new.abb.com/plc/sv/automation-builder\" rel=\"noopener noreferrer\" target=\"_blank\">ABB Automation Builder — Integrated Engineering Software</a> — Official ABB documentation for Automation Builder, the IEC 61131-3 engineering framework for AC500 PLCs, drives, and motion controllers based on CODESYS.</li>\n    <li><a href=\"https://en.wikipedia.org/wiki/CODESYS\" rel=\"noopener noreferrer\" target=\"_blank\">CODESYS — IEC 61131-3 Development Environment</a> — Official CODESYS documentation providing the underlying IEC 61131-3 development platform on which ABB Automation Builder is built.</li>\n    <li><a href=\"https://www.iec.ch\" rel=\"noopener noreferrer\" target=\"_blank\">IEC 61131-3 — Programmable Controllers — Programming Languages</a> — International standard defining Ladder Diagram, Function Block Diagram, Structured Text, Sequential Function Chart, and Instruction List languages supported by the AC500 platform.</li>\n    <li><a href=\"https://new.abb.com/drives/low-voltage-ac/industrial-drives/acs880-single-drives\" rel=\"noopener noreferrer\" target=\"_blank\">ABB ACS880 — Industrial AC Drive Integration with AC500</a> — Official ABB drive documentation covering the integration of ACS880 drives with AC500 PLCs via Automation Builder and fieldbus protocols.</li>\n</ol><section class=\"engineering-check\"><h2 id=\"apply-this-to-your-project\">Apply this to your project</h2><ul><li>Define the process states, timing requirements, and permitted behavior after a controller or communication failure.</li><li>List controller, I/O, network, software, and license dependencies before choosing an architecture.</li><li>Record acceptance results and prove that the delivered configuration can be restored from the handover package.</li></ul><p><a href=\"https://wiki.aspotomasyon.com/guides\">Follow an ASP project guide</a> to connect the fundamentals with implementation and acceptance.</p></section><figure class=\"article-figure\"><img src=\"https://wiki.aspotomasyon.com/assets/diagrams/automation-systems-review.svg\" width=\"1100\" height=\"460\" loading=\"lazy\" decoding=\"async\" alt=\"Engineering review sequence: Requirements → Engineering → Acceptance → Handover. Keep the recorded evidence with the accepted configuration.\"><figcaption>Engineering review sequence: Requirements → Engineering → Acceptance → Handover. Keep the recorded evidence with the accepted configuration. <a href=\"https://wiki.aspotomasyon.com/assets/diagrams/automation-systems-review.svg\" target=\"_blank\" rel=\"noopener\">View full size</a></figcaption></figure><h2 id=\"primary-references-and-further-reading\">Primary references and further reading</h2><p>Use the original specifications and product documentation for implementation details. The examples in this guide are illustrative engineering scenarios, not published project results.</p><ul><li><a href=\"https://new.abb.com/control-systems/system-800xa\" rel=\"noopener noreferrer\" target=\"_blank\">ABB — System 800xA architecture and product documentation</a></li><li><a href=\"https://csrc.nist.gov/pubs/sp/800/82/r3/final\" rel=\"noopener noreferrer\" target=\"_blank\">NIST SP 800-82 Rev. 3 — OT architecture and security guidance</a></li></ul><!-- asp-editorial-202609 -->","markdown":"# ABB AC500 PLC: Programming and Configuration\n\n> 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…\n\n- Canonical URL: https://wiki.aspotomasyon.com/article/abb-ac500-plc-programming-configuration\n- Publisher: ASP OTOMASYON A.Ş. (ASP OTOMASYON Wiki)\n- Category: Automation Systems\n- Published: 2026-05-13 · Updated: 2026-09-13\n- Reading time: 9 min · Language: English\n\nABB''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.\n\n![Conceptual control-system layers. Safety functions, communication paths, and redundancy must be designed for the application; the diagram is not a wiring or safety design.](https://wiki.aspotomasyon.com/assets/diagrams/automation-systems-context.svg)\n\n*Conceptual control-system layers. Safety functions, communication paths, and redundancy must be designed for the application; the diagram is not a wiring or safety design.*\n\n## Product Line Overview\n\nThe AC500 family consists of three main sub-families, each targeting a different segment of the automation market:\n\n| Feature | AC500 eCo | AC500 Modular | AC500-S Safety |\n| --- | --- | --- | --- |\n| Target application | Compact machines, local I/O | Distributed systems, mid-to-large plants | Safety-critical processes (SIL 2/3) |\n| CPU model range | PM50xx (5012, 5032, 5052) | PM56xx, PM57xx, PM58xx | PM50xx-S (e.g., PM5072-S) |\n| Max digital I/O (local) | 256 | 1024 (per CPU, expandable via bus) | 256 (safety), expandable with F-modules |\n| Max analogue I/O (local) | 64 | 512 | 48 |\n| Program memory | 256 KB – 1 MB | 2 MB – 8 MB | 1 MB |\n| Cycle time (1K instructions) | ~0.5 µs (PM5052) | ~0.02 µs (PM5832) | ~0.5 µs |\n| Communication interfaces | 1x Ethernet, 1x COM, 1x USB | 2x Ethernet, 2x COM, 1x USB, optional FPU | 1x Ethernet, 1x COM, 1x USB |\n| Safety standard | N/A (standard only) | N/A (standard only) | EN 61508 SIL 2/3, EN 62061, EN ISO 13849 |\n| Operating temperature | -25 to +60 °C | -40 to +70 °C | -25 to +60 °C |\n| Typical project size | 200-500 I/O points | 500-5000+ I/O points | Mixed standard/safety |\n\n## Automation Builder Software\n\n**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.\n\n### Key Features\n\n- **Single engineering environment** — Configure AC500 CPUs, ABB drives (ACS580, ACS880), servo drives (MotiFlex), and robot controllers from one project tree.\n- **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).\n- **Continuous Function Chart (CFC)** — A graphical language for data-flow-oriented programming; especially useful for drive and process control applications.\n- **Integrated visualisation** — Built-in HMI designer for local panels and web-based operator interfaces.\n- **Version management** — Project comparison, merge, and library versioning built into the IDE.\n- **Simulation** — Full offline simulation of the control program, including I/O forcing and visualisation.\n\n### Installation and System Requirements\n\n```\nMinimum requirements:\n- Windows 10/11 (64-bit) or Windows Server 2019/2022\n- Intel Core i5, 2.5 GHz or higher\n- 8 GB RAM (16 GB recommended for large projects)\n- 10 GB free disk space for full installation\n- Microsoft .NET Framework 4.8\n- Screen resolution 1920x1080 or higher\n\nInstallation steps:\n1. Download Automation Builder from ABB Library (requires MyABB account)\n2. Run the installer as Administrator\n3. Select the components: AC500 firmware libraries, drive libraries, visualisation\n4. Activate the license (node-locked or network license server)\n5. Launch Automation Builder and select the target CPU\n```\n\n## Hardware Configuration in Automation Builder\n\n### Step 1: Create a New Project\n\n1. File → New Project → **AC500 Project** .\n2. Select the CPU model (e.g., PM5732-ETH for a mid-range modular controller).\n3. Choose the firmware version — match the firmware loaded on the physical CPU.\n4. Select the programming language(s) — most projects use a mix of FBD and ST.\n\n### Step 2: Configure the Hardware Tree\n\nThe hardware tree in Automation Builder mirrors the physical backplane:\n\n```\nAC500_Station (PM5732-ETH)\n├── CPU PM5732-ETH (192.168.1.10)\n├── Slot 1: DI561 (16x Digital Input, 24 VDC)\n├── Slot 2: DO541 (16x Digital Output, 24 VDC, 0.5 A)\n├── Slot 3: AI523 (8x Analogue Input, 4-20 mA, 16 bit)\n├── Slot 4: AO522 (4x Analogue Output, 0-10 V, 16 bit)\n├── Slot 5: COM1 — CM572-SI (Serial Interface, Modbus RTU Master)\n├── Slot 6: COM2 — CM574-RS (Serial Interface, PROFIBUS DP Master)\n├── Slot 7: CM575-ETH2 (Second Ethernet interface)\n└── Slot 8: TB521 (Terminal block extension)\n```\n\n1. **Add I/O modules** — Right-click the backplane slot and select the module from the catalogue. The software automatically assigns I/O addresses.\n2. **Configure module parameters** — Set input filters, output behaviour on CPU stop, and diagnostic enable flags per module.\n3. **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.\n\n### Step 3: Network Configuration\n\n- **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.\n- **DNS and hostname** — Optional, but useful for large networks with name resolution services.\n- **Time synchronisation** — Enable SNTP client to synchronise the CPU clock with a plant-wide NTP server.\n\n## IEC 61131-3 Programming\n\nAutomation Builder supports all five IEC languages. In practice, we recommend the following language selection strategy:\n\n| Application Type | Recommended Language | Rationale |\n| --- | --- | --- |\n| Discrete logic (conveyors, pick-and-place) | Ladder Diagram (LD) | Electricians and maintenance technicians read LD easily. |\n| Process control (PID, cascade, feedforward) | Function Block Diagram (FBD) | Data flow is visually explicit; easy to trace signal paths. |\n| Complex calculations (modelling, statistics) | Structured Text (ST) | Efficient for mathematical expressions and arrays. |\n| Sequential operations (batch, recipe) | Sequential Function Chart (SFC) | State machine representation matches batch process logic. |\n| Drive communication (fieldbus data mapping) | Continuous Function Chart (CFC) | Handles complex data structure mapping intuitively. |\n\n### Example: Structured Text PID Control\n\n```\nPROGRAM FB_MixTankControl\nVAR\n    rPV           : REAL;       -- Process variable (level)\n    rSP           : REAL;       -- Setpoint\n    rOP           : REAL;       -- Output to control valve\n    fbPID         : PID_P;      -- ABB PID function block instance\n    rManualOP     : REAL := 50.0;\n    xAutoMode     : BOOL := TRUE;\nEND_VAR\n\n-- PID control logic\nIF xAutoMode THEN\n    fbPID(\n        PV     := rPV,\n        SP     := rSP,\n        GAIN   := 1.5,\n        TI     := T#30s,\n        TD     := T#0s,\n        CYCLE  := T#100ms\n    );\n    rOP := fbPID.OP;\nELSE\n    rOP := rManualOP;\nEND_IF\n\nrOP := LIMIT(rOP, 0.0, 100.0);\n```\n\n## Drive Integration (ACS880 / ACS580)\n\nABB drives are configured directly within Automation Builder using the **Drive Configuration Tool (DCT)**. This eliminates the need for a separate drive configuration package.\n\n### Integration Workflow\n\n1. Right-click the project tree → **Add Device** → **ABB Drive** → select **ACS880** .\n2. Set the drive node ID on the fieldbus (e.g., Modbus TCP node 10, or PROFINET device number).\n3. The DCT reads the drive''s parameter structure and makes every parameter accessible as a PLC variable.\n4. 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)`\n5. Download the project — the drive configuration is sent together with the PLC program.\n\n### Key Drive Parameters for AC500 Integration\n\n| Parameter | ACS880 Number | ACS580 Number | Description |\n| --- | --- | --- | --- |\n| Fieldbus protocol | P.10.01 | P.10.01 | Select Modbus TCP / PROFINET / EtherNet/IP |\n| Fieldbus node ID | P.10.02 | P.10.02 | Unique node number on the bus |\n| Speed reference 1 | P.19.03 | P.19.03 | Speed setpoint from PLC (scaled 0-100% = 0-max rpm) |\n| Actual speed | P.1.02 | P.1.02 | Measured motor speed, read by PLC |\n| Current actual | P.1.03 | P.1.03 | Motor current, for load monitoring |\n| Fault word | P.6.14 | P.6.14 | Bit-coded fault indication |\n| Control word | P.6.01 | P.6.01 | Start/stop/reset commands from PLC |\n| Status word | P.6.11 | P.6.11 | Ready/running/faulted status to PLC |\n\n## Communication Protocols\n\n### PROFINET IO\n\n- Use the **CM575-PNIO** or **CM577-PNIO** communication module.\n- Configure PROFINET IO Controller mode (the AC500 acts as the IO controller, managing up to 128 IO devices).\n- Use the **GSDML** file from the IO device manufacturer to import device description.\n- Set the update rate (1-512 ms) per device. For drives, 4-8 ms is typical. For remote I/O, 16-32 ms.\n\n### EtherNet/IP\n\n- Use the **CM577-ENIU** communication module or the built-in Ethernet port on newer CPUs.\n- AC500 supports both Scanner (originator) and Adapter (target) modes.\n- Configuration is done via **EDS** file import in Automation Builder.\n- Typical RPI values: 50-200 ms for discrete I/O, 10-50 ms for drive control.\n\n### Modbus TCP\n\n- Supported on all AC500 CPUs with built-in Ethernet.\n- Automation Builder provides pre-built function blocks: `MB_Client` and `MB_Server` .\n- MB_Client (Master) can read/write to any Modbus TCP device.\n- MB_Server (Slave) exposes AC500 I/O and memory as Modbus registers for SCADA or HMI connectivity.\n\n```\n-- Modbus TCP client example - read holding registers\nPROGRAM ReadModbusDevice\nVAR\n    fbMBRead   : MB_Client_ReadHoldReg;\n    xTrigger   : BOOL := TRUE;\n    arrData    : ARRAY[0..9] OF WORD;\n    xDone      : BOOL;\n    xError     : BOOL;\n    eErrorID   : MB_Error;\nEND_VAR\n\nfbMBRead(\n    Execute     := xTrigger,\n    UnitID      := 1,\n    IPAddress   := \"192.168.1.50\",\n    Timeout     := T#500ms,\n    Quantity    := 10,\n    DataPtr     := ADR(arrData)\n);\nxDone  := fbMBRead.Done;\nxError := fbMBRead.Error;\neErrorID := fbMBRead.ErrorID;\n```\n\n## Redundancy Options\n\nFor high-availability applications, the AC500 family offers two redundancy approaches:\n\n### CPU Redundancy (Hot-Standby)\n\n- Two identical AC500 CPUs (e.g., PM5822-ETH) are connected via a synchronisation link.\n- One CPU is Active, the other is Standby. The standby CPU mirrors the active CPU''s memory, I/O state, and communication connections.\n- If the active CPU fails, the standby takes over within one scan cycle. OPC UA and fieldbus connections are seamlessly transferred.\n- Configuration is done in Automation Builder by enabling **Redundancy** in the CPU properties.\n\n### Network Redundancy (MRP / RSTP)\n\n- 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).\n- MRP guarantees reconvergence in less than 10 ms (for ring topologies up to 50 switches).\n- Configure the AC500''s Ethernet port as an MRP client in the hardware configuration.\n\n## Firmware Updates and Backup\n\n```\n# Automation Builder command-line tool for firmware updates\nABBControlCmd backup --target 192.168.1.10 --file backup_AC500.bin\nABBControlCmd update-firmware --target 192.168.1.10 --file PM5732_V3.4.0.bin\nABBControlCmd restore --target 192.168.1.10 --file backup_AC500.bin\nABBControlCmd info --target 192.168.1.10\n```\n\n## Best Practices for AC500 Projects\n\n- **Version control your Automation Builder project** — The project file (.ac5proj) is XML-based and version-control-friendly. Use Git or SVN.\n- **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.\n- **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.\n- **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.\n- **Download and test in simulation first** — Automation Builder''s simulation mode catches most syntax errors and logic bugs before they reach the plant floor.\n\n> **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.\n\n---\n\n## References & Further Reading\n\n1. [ABB AC500 — Programmable Logic Controller Platform](https://new.abb.com/plc) — Official ABB product page for the AC500 PLC family, including hardware specifications, CPU models, I/O modules, and communication interfaces.\n2. [ABB Automation Builder — Integrated Engineering Software](https://new.abb.com/plc/sv/automation-builder) — Official ABB documentation for Automation Builder, the IEC 61131-3 engineering framework for AC500 PLCs, drives, and motion controllers based on CODESYS.\n3. [CODESYS — IEC 61131-3 Development Environment](https://en.wikipedia.org/wiki/CODESYS) — Official CODESYS documentation providing the underlying IEC 61131-3 development platform on which ABB Automation Builder is built.\n4. [IEC 61131-3 — Programmable Controllers — Programming Languages](https://www.iec.ch) — International standard defining Ladder Diagram, Function Block Diagram, Structured Text, Sequential Function Chart, and Instruction List languages supported by the AC500 platform.\n5. [ABB ACS880 — Industrial AC Drive Integration with AC500](https://new.abb.com/drives/low-voltage-ac/industrial-drives/acs880-single-drives) — Official ABB drive documentation covering the integration of ACS880 drives with AC500 PLCs via Automation Builder and fieldbus protocols.\n\n## Apply this to your project\n\n- Define the process states, timing requirements, and permitted behavior after a controller or communication failure.\n- List controller, I/O, network, software, and license dependencies before choosing an architecture.\n- Record acceptance results and prove that the delivered configuration can be restored from the handover package.\n\n[Follow an ASP project guide](https://wiki.aspotomasyon.com/guides) to connect the fundamentals with implementation and acceptance.\n\n![Engineering review sequence: Requirements → Engineering → Acceptance → Handover. Keep the recorded evidence with the accepted configuration.](https://wiki.aspotomasyon.com/assets/diagrams/automation-systems-review.svg)\n\n*Engineering review sequence: Requirements → Engineering → Acceptance → Handover. Keep the recorded evidence with the accepted configuration.*\n\n## Primary references and further reading\n\nUse the original specifications and product documentation for implementation details. The examples in this guide are illustrative engineering scenarios, not published project results.\n\n- [ABB — System 800xA architecture and product documentation](https://new.abb.com/control-systems/system-800xa)\n- [NIST SP 800-82 Rev. 3 — OT architecture and security guidance](https://csrc.nist.gov/pubs/sp/800/82/r3/final)\n\n---\n\nCite the canonical article: https://wiki.aspotomasyon.com/article/abb-ac500-plc-programming-configuration (ABB AC500 PLC: Programming and Configuration, ASP OTOMASYON, updated 2026-09-13).\n","headings":[{"id":"product-line-overview","title":"Product Line Overview"},{"id":"automation-builder-software","title":"Automation Builder Software"},{"id":"hardware-configuration-in-automation-builder","title":"Hardware Configuration in Automation Builder"},{"id":"iec-61131-3-programming","title":"IEC 61131-3 Programming"},{"id":"drive-integration-acs880-acs580","title":"Drive Integration (ACS880 / ACS580)"},{"id":"communication-protocols","title":"Communication Protocols"},{"id":"redundancy-options","title":"Redundancy Options"},{"id":"firmware-updates-and-backup","title":"Firmware Updates and Backup"},{"id":"best-practices-for-ac500-projects","title":"Best Practices for AC500 Projects"},{"id":"references-further-reading","title":"References & Further Reading"},{"id":"apply-this-to-your-project","title":"Apply this to your project"},{"id":"primary-references-and-further-reading","title":"Primary references and further reading"}],"faq":[],"references":[{"name":"ABB AC500 — Programmable Logic Controller Platform","url":"https://new.abb.com/plc"},{"name":"ABB Automation Builder — Integrated Engineering Software","url":"https://new.abb.com/plc/sv/automation-builder"},{"name":"CODESYS — IEC 61131-3 Development Environment","url":"https://en.wikipedia.org/wiki/CODESYS"},{"name":"IEC 61131-3 — Programmable Controllers — Programming Languages","url":"https://www.iec.ch"},{"name":"ABB ACS880 — Industrial AC Drive Integration with AC500","url":"https://new.abb.com/drives/low-voltage-ac/industrial-drives/acs880-single-drives"},{"name":"ABB — System 800xA architecture and product documentation","url":"https://new.abb.com/control-systems/system-800xa"},{"name":"NIST SP 800-82 Rev. 3 — OT architecture and security guidance","url":"https://csrc.nist.gov/pubs/sp/800/82/r3/final"}],"related":[{"slug":"plc-programming-best-practices","title":"PLC Programming Best Practices","summary":"Writing reliable, maintainable PLC code is critical for industrial automation systems that must operate 24/7 in harsh environments.","category":{"slug":"automation-systems","name":"Automation Systems"},"url":"https://wiki.aspotomasyon.com/article/plc-programming-best-practices","markdown_url":"https://wiki.aspotomasyon.com/article/plc-programming-best-practices.md","api_url":"https://wiki.aspotomasyon.com/api/v1/articles/plc-programming-best-practices","published":"2026-05-12T12:47:31+00:00","modified":"2026-09-13T11:07:23+00:00","reading_minutes":5,"word_count":1097,"image":"https://wiki.aspotomasyon.com/assets/social/plc-programming-best-practices-d3e7ade0882c.png"},{"slug":"cement-plant-automation-kiln-mill-control","title":"Cement Plant Automation: Kiln and Mill Control","summary":"Cement manufacturing is one of the most energy-intensive industrial processes, consuming approximately 3–4 GJ of thermal energy and 90–120 kWh of electrical…","category":{"slug":"process-industries-solutions","name":"Process Industries Solutions"},"url":"https://wiki.aspotomasyon.com/article/cement-plant-automation-kiln-mill-control","markdown_url":"https://wiki.aspotomasyon.com/article/cement-plant-automation-kiln-mill-control.md","api_url":"https://wiki.aspotomasyon.com/api/v1/articles/cement-plant-automation-kiln-mill-control","published":"2026-05-13T12:07:56+00:00","modified":"2026-09-13T11:07:23+00:00","reading_minutes":8,"word_count":1673,"image":"https://wiki.aspotomasyon.com/assets/social/cement-plant-automation-kiln-mill-control-bef667c8d97a.png"},{"slug":"iec-61131-3-plc-programming-languages","title":"IEC 61131-3: PLC Programming Languages","summary":"The IEC 61131-3 standard is the international benchmark for programmable logic controller (PLC) and distributed control system (DCS) programming.","category":{"slug":"automation-systems","name":"Automation Systems"},"url":"https://wiki.aspotomasyon.com/article/iec-61131-3-plc-programming-languages","markdown_url":"https://wiki.aspotomasyon.com/article/iec-61131-3-plc-programming-languages.md","api_url":"https://wiki.aspotomasyon.com/api/v1/articles/iec-61131-3-plc-programming-languages","published":"2026-07-21T14:45:28+00:00","modified":"2026-09-13T11:07:23+00:00","reading_minutes":5,"word_count":1025,"image":"https://wiki.aspotomasyon.com/assets/social/iec-61131-3-plc-programming-languages-25b7213c7dc3.png"},{"slug":"abb-800xa-dcs-architecture-configuration","title":"ABB 800xA DCS: Architecture and Configuration","summary":"The ABB Ability System 800xA is one of the most advanced Distributed Control Systems (DCS) available for process industries.","category":{"slug":"automation-systems","name":"Automation Systems"},"url":"https://wiki.aspotomasyon.com/article/abb-800xa-dcs-architecture-configuration","markdown_url":"https://wiki.aspotomasyon.com/article/abb-800xa-dcs-architecture-configuration.md","api_url":"https://wiki.aspotomasyon.com/api/v1/articles/abb-800xa-dcs-architecture-configuration","published":"2026-05-13T12:07:53+00:00","modified":"2026-09-13T11:07:23+00:00","reading_minutes":9,"word_count":1882,"image":"https://wiki.aspotomasyon.com/assets/social/abb-800xa-dcs-architecture-configuration-6970a4d1cf7b.png"}],"citation":"ASP OTOMASYON. ABB AC500 PLC: Programming and Configuration. Updated 2026-09-13. https://wiki.aspotomasyon.com/article/abb-ac500-plc-programming-configuration"}}