Package with the hardware interface modules to operate ATLASCAR
This module establishes communication with the atlascar control PLC, handling all control communications.
It also preforms many other operations that the respective owners should explain expanding this page.
The new version of this software is divided into layers.
There are tree layers in total: the hardware layer, the low level software layer and the middle level software layer.
This layer is responsible for the control of each individual system on a firmware level, so the code is not present here (references for the hardware folders should be presented here).
The hardware is composed of a number of different systems:
Expansion to accommodate new modules is possible.
The low level software layer establishes communications with the firmware layer and relays commands from the middle layer.
This layer should not interpreter in anyway, other than to check the limits, the commands being received.
System status coming from the hardware should not be changed in anyway.
Each system is comprised of tree files at the low level:
The style of each of these files is very restrictive and should follow the style in plc.cpp and plc.h that are already complete.
The authors of each class must pay special attention to the use of namespaces, mandatory common functions, naming and function operation.
The use of global variables is strictly prohibited!!
The node of each system should be as similar as possible to easy code interpretation.
All low level classes are obliged to use atlascar_base::CommandQueuePriority class to interpreter command messages. The documentation of the class provides details into its use.
These are some recommendations to the poor fellows that will make the code.
Links to the mandatory classes:
All the messages that will be transmitted between the low level and the middle layer are already created:
This layer coordinates communication from the outside to each of the systems.
It is still not implemented, but the main functions will be status messages coordination and single publishing, calibration of variables, state machine control in several operating modes (still to be defined), etc...
The code of the middle level will be very similar to the low level layer, class declaration in manager.h, implementation in manager.cpp and node in manager_node.cpp.
Link to the mandatory class: