Control logic Java package provides a user with a convenient formalism that allows:
With the available Java classes and methods a user should be able to implement any real-time control system that can be technically based on a PC.
This implies that any specific hardware possibly requiring sub-millisecond control precision should have a dedicated controller.
Setting up a control system involves working with so-called triggers. Everything is in pure Java but the coding is done mostly with objects of Trigger class:
This resembles logic and syntax in programs like Simulink (both simulated and realtime control) and RELAP (simulated control for hydraulics).
The trigger syntax is natural for a PC-based control.
In case of a simulated system that has to be implemented with PLCs,
the offered trigger logic allows an easy transition to ladder logic.
One of the main ideas behind the project is to merge both simulations and "real" control:
The PC-based part of a real-time control is supposed to contain the upper-level logic.
PC barely can control e.g. electrical power supply to a pin directly. It rather should send the corresponding command over a network to a motor controller.
Everything a PC should send (or receive) to (from) other controllers, alongside with the necessary data processing, should be put into Runnables onStart, loop and onStop that are described in Task section.
In general, to go from a simulation to a real control the following steps should be taken:
Refer to [Simulator vs. real-time] for a comparative table between simulations and real-time.
Java has been chosen for the implementation thanks to
The main package is named org.engitex.controllogic and contains pre-compiled classes.
Another package that is named com.company contains two examples of real-time and simulated control.
Related pages describe main principles and concepts implemented in code:
[Classes]
[Task types]
[Simulator vs. real-time]
[System requirements]
[Future outlook]
Wiki: Classes
Wiki: Future outlook
Wiki: Simulator vs. real-time
Wiki: System requirements
Wiki: Task types