Your Name
Your role
Your email
What is Apache PLC4X?
What can you do with PLC4X?
What could you do beyond that?
PLC4X is a set of libraries for communicating with industrial programmable logic controllers (PLCs) using a variety of protocols but with a shared API.
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
Read
Write
Subscription
Cyclic
On Value Change
Event/Alarm
Discovery
Browse
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)
…
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
Predict when a device needs maintenance
Predict probable failures
Run the machine at the right speed to minimize
Wear & tear
Energy-consumption
Resource usage
Following use-cases not yet fully implemented
From my experience, what the industry is really missing
Would need some extra work
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
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 = 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
Twitter: @ApachePLC4X