Revolutionizing IIoT with Apache PLC4X

apache plc4x logo

Who am I?

Your Name
Your role
Your email

What am I going to cover?

  • What is Apache PLC4X?

  • What can you do with PLC4X?

  • What could you do beyond that?

apache plc4x logo
PLC4X is a set of libraries for communicating with industrial programmable logic controllers (PLCs) using a variety of protocols but with a shared API.
— Apache PLC4X Project Statement

Apache PLC4X


  • Allows writing software for any type of PLC

  • When changing the PLC, only configuration needs to be adjusted

  • Strong growing number of supported protocols

  • Strong growing number of programming languages

  • Strong growing number of integration modules

  • Support of features, which protocols generally don’t support

  • Make PLC Data available in a unified way

PLC4X Supported Operations

  • Read

  • Write

  • Subscription

    • Cyclic

    • On Value Change

    • Event/Alarm

  • Discovery

  • Browse

PLC4X Supported Protocols

  • Siemens S7 (Step7)

  • Beckhoff ADS

  • Modbus (TCP/RTU)

  • EtherNet/IP

  • OPC-UA

  • Firmata

  • KnxNet/IP

  • CAN

  • ProfiNet

  • Allen-Bradley AB-ETH

  • Allen-Bradley DF1

  • BacNet

  • Emerson DeltaV

  • Luxtronic

  • Siemens S7 (TIA)

  • …​

Polyglot PLC4X

  • Supporting multiple languages was planned from the start

    • The X in PLC4X stands for the multiple Languages

  • Writing PLC driver code is easy

  • Understanding the protocols is hard

  • As soon as a protocol is "understood", create drivers in many languages

  • Cross-compiling/wrapping just wouldn’t feel right

  • Heavy lifting done by our code-generation framework

What can you do with PLC4X?

Making machine data visible

sp data explorer 3

Overall Equipment Efficiency

digital cockpit

Predictive Maintenance

  • Predict when a device needs maintenance

  • Predict probable failures

  • Run the machine at the right speed to minimize

    • Wear & tear

    • Energy-consumption

    • Resource usage

What could you do beyond that?

  • Following use-cases not yet fully implemented

  • From my experience, what the industry is really missing

  • Would need some extra work

PLC "Simulator" for unit-tests

  • In manufacturing engeineering almost no unit-testing done

  • If testing is done, then only on the real machine

  • Usually only happy-path testing

  • Solution:

    • PLC4X stand-alone application: "Simulator"

    • Built to speak with PLC4X drivers (Not full protocol support)

    • Use PLC4X to set values in the "PLC" from the Unit-Test

    • Test PLC4X Application against the simulator without needing real machinery


  • Historians are sort of ancient time-series databases

  • Mostly required for regulations

  • Extremely expensive

  • Don’t scale

  • Solution:

    • Use Apache PLC4X to get the data

    • Use Apache IoTDB to store the data

    • Add interfaces to replicate Historian interfaces

Digital Twin

  • Everyone is talking about Digital Twins

  • No good products available yet

  • Not expecting any OT-vendor product to be usable

  • Solution:

    • Use Apache PLC4X to get the data

    • Use Apache IoTDB to store the timeseries data

    • Use Eclipse Dito to store the current state

    • Use Apache KIE (incubating) to do smart things with the data

MES replacement

  • MES = Manufacturing Execution System

  • Big, fat, slow and don’t scale

  • Products today way more customizable:

    • A lot more interaction between PLC and MES needed

    • A lot more to do for the MES

    • MES becomes the bottleneck

  • Solution:

    • Building a distributed MES based on principle of highly scalable distributed systems

Want to make this happen?