DH R
DH R

Reputation: 11

Does Apache PLC4X substitute for gateway in SCADA systems?

I need to search & organize information about What is PLC4X, differences btw PLC4X & legacy system(ex:PLC protocol - gateway - user application), but most of what I have found are about how to use API. I want to figure out:

  1. What is exact role of PLC4X in SCADA System? gateway? api? both of them?
  2. If role of PLC4X is just unified API, gateway which supports PLC4X is needed?
  3. What are the differences before/after apply PLC4X to legacy SCADA system?
  4. Data omissions are prevented with PLC4X?

PLC4X in SCADA

Legacy SCADA system

If you answer my questions using upper images, I can understand more easily.

Upvotes: 0

Views: 415

Answers (1)

Christofer Dutz
Christofer Dutz

Reputation: 2375

I am the initiator of the Apache PLC4X project, so I think I might be qualified to help you here.

PLC4X itself is not a Gateway, but you can use it to build one. Think of it as a universal driver to communicate with various PLCs using all sorts of protocols. We have implemented an API that defines a number of universal operations:

  • Read
  • Write
  • Subscribe
  • Browse (not implemented yet)
  • Call Functions (not implemented yet)

With this you can implement a program that is independent of the protocol used in the end. This allows to easily communicate with all sorts of different hardware and it allows to migrate existing hardware without having to change the software.

If you are looking for something that 100% implements all of the features of a given PLCs native protocol, PLC4X is also not what you are looking for.

Right now PLC4X is best supported on Java. Here generally all you need is a Java 8 or newer VM. If you want to use our passive-mode drivers and possibly the future fieldbus drivers such as ProfiNet and EtherCat you also will need libpcap.

Right now we're working hard on providing the drivers we have in other languages too:

  • Go (will probably be maturing the fastest as this is what I'm currently working on 90-100% of my time)
  • C (will probably be maturing slower as C is really not fun and I'm investing more time in Go)
  • Python (is an initiative the PLC4X community is working hard on)
  • C++ (Initiatives currently stalled due to lack of contributors)
  • C# (Initiatives currently stalled due to lack of contributors)

Regarding your question 3, I am a little unsure as both are completely different things. If you are solely in a world of legacy SCADA systems and compatible PLCs, I don't really see a point of using PLC4X at all. PLC4X excels, when you want to introduce modern IT systems into a system containing legacy PLCs. The latest generation PLCs some times already come with MQTT support, in this case I don't see an advantage of using PLC4X either. Unfortunately for the next 10-20 years we will have to live with a lot of machinery on the shopfloor, which are considered "legacy", using legacy protocols.

If you now want to do state off the art machine learning, predictive-maintenance, golden batch analysis, ... (all the cool Industry 4.0 buzzwords), PLC4X is currently probably your best and cheapest option to bridge the gap between this legacy PLC world and modern IT systems.

I hope I managed to answer your questions.

Upvotes: 4

Related Questions