The expected
results of employing this concept are: opening PLC as a general
industrial computer platform and cutting costs of PLC hardware and
software development and maintenance (including legacy software).
The general
overview of LiquidPLC framework is shown in the following diagram:
LiquidPLC consists
of 3 logical parts:
-
PLC PAL (Platform Abstraction Layer): software
abstraction of target platform, implemented in Java class;
it is supposed to be provided by Open Source contributors or
Platform Vendors; the interrupts and system signals are
handled here through the Java Native
Interface (JNI) and passed further to the other layers (PLC
VM, PLC Program);
-
PLC VM
(Virtual Machine): software abstraction of vendor-specific
PLC, implemented in Java class; it is supposed to be
developed by Open Source contributors, based on data from
PLC programming manuals (memory map, instructions set,
programming model);
- PLC Program: it is a
result of automatic conversion of given PLC program (in form
of Ladder Logic diagram or any other IEC 61131-3 language) to
Java class; for legacy systems it is mainly based on reverse
engineering of vendor-specific PLC program/project file
formats; industry automation engineers will work with PLC
programs in the same way as they did before: in form of PLC
specific IEC 61131-3 languages; then, it will be automatically
converted to Java and compiled to Java bytecode under the hood
of LiquidPLC framework;
The PLC program conversion software
(from Vendor specific file format to Java) will consist of 2 main
parts: specific file format parser (on input) and Java file
generator (on output) and will be supported by powerful community of
Open Source contributors.
The conversion software will naturally employ specific PLC VM
implementation for corresponding PLC (memory map, instruction set,
programming model), but the core algorithms of corresponding Java
code generating are common for any PLC and can be based on similar
algorithms of existing PLC programs converters/compilers to C code.
Main
advantages of the LiquidPLC concept:
- provides openness of PLC platforms, qualitative
specialization and healthy competition on the market of PLC
hardware and software, just as it happened on the PC market in
1980's;
- absolute portability of PLC programs between similar
hardware platforms;
- automatic portability of legacy PLC programs to new suitable
platforms without loss of quality and cost; in other words,
maintaining previously made investments in the already
running, time-tested industrial software;
- will be supported and driven by powerful community of Open
Source contributors, including such big players as hardware
vendors, just as it is going on with Linux kernel now.
As a result, it will allow cutting of prime costs in main areas
of industry.
References
The draft implementation of LiquidPLC
framefork on my GitHub
account:
The existing PLC programs
converters/compilers to C code, as starting point for programming of
Java code generation:
Please, send me your
feedback: