blob: 1627da163fb0bc6dc9e628caea8e6d6ce2c77e3d [file] [log] [blame]
////
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
////
include::_settings.adoc[]
:presenter_name: Your Name
:presenter_company: Your Company
:description: A short intro into what benefits the industry could have with PLC4X
:keywords: IIoT, IoT
:author: Your Name
:email: Your email
:position: Your role
== Revolutionizing IIoT with Apache PLC4X
image::apache_plc4x_logo.png[]
== Who am I?
{author} +
{position} +
{email} +
[NOTE.speaker]
--
Please add your own details here
--
== What am I going to cover?
* What is Apache PLC4X?
* What can you do with PLC4X?
* What could you do beyond that?
== !
image::apache_plc4x_logo.png[]
[quote, Apache PLC4X Project Statement]
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
* https://plc4x.apache.org
* 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
[NOTE.speaker]
--
* Modbus generally only allows bits and short values
* Unified data: PlcValues all handled equally over all protocols
* Unified Namespace
--
== PLC4X Supported Operations
* Read icon:check[role=green]
* Write icon:check[role=green]
* Subscription icon:check[role=green]
** Cyclic
** On Value Change
** Event/Alarm
* Discovery icon:hammer[role=orange]
* Browse icon:hammer[role=orange]
[NOTE.speaker]
--
* We're currently working a lot on Discovery and Browsing
* Discovery: Which devices do I have and how can I connect to them?
* Browse: Which resources do these devices have?
--
== PLC4X Supported Protocols
[.west]
* Siemens S7 (Step7) icon:check[role=green]
* Beckhoff ADS icon:check[role=green]
* Modbus (TCP/RTU) icon:check[role=green]
* EtherNet/IP icon:check[role=green]
* OPC-UA icon:check[role=green]
* Firmata icon:check[role=green]
* KnxNet/IP icon:check[role=green]
* CAN icon:check[role=green]
//
[.east]
* ProfiNet icon:wrench[role=orange]
* Allen-Bradley AB-ETH icon:wrench[role=orange]
* Allen-Bradley DF1 icon:wrench[role=orange]
* BacNet icon:wrench[role=orange]
* Emerson DeltaV icon:wrench[role=orange]
* Luxtronic icon:wrench[role=orange]
* Siemens S7 (TIA) icon:comments-o[role=red]
* ...
== 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
[NOTE.speaker]
--
* Cross Compiling:
** Increased Size
** Strange API feeling in other language
--
== What can you do with PLC4X?
== Making machine data visible
image::sp-data-explorer-3.png[]
== Overall Equipment Efficiency
image::digital-cockpit.png[]
== 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
[NOTE.speaker]
--
* Increased energy consumption -> needs maintenance
--
== 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
[NOTE.speaker]
--
* The simulator already exists
* Need to implement:
** General memory management
** "Subscriptions"
--
== Historian
* 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
[NOTE.speaker]
--
* We're already working on Apache Historian
* However mainly me working on it
--
== 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
[NOTE.speaker]
--
* IoTDB is great for time-series data
* Ditto is great for current state and dependencies
* KIE (Knowledge is everything): Contains Drools, jBPM
--
== 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
[NOTE.speaker]
--
* Cars today usually so customizable, that there are only very few equal configurations
* PLC needs to ask MES about options for every produced item
--
== Want to make this happen?
* dev@plc4x.apache.org
* Twitter: @ApachePLC4X