# Orchestra Control Engine

Orchestra Control Engine is a suite of software components (based on Linux/RTAI) used for the planning, development and deployment of real-time control applications for industrial machines and robots.
Orchestra Control Engine has been developed by Sintesi SpA in partnership with the Italian National Research Council and in collaboration with international industrial companies in the field of robotics and production systems.
Sintesi SpA is a company that develops mechatronic components and solutions. It has specialized in measurement, control and design technologies for robotics and production systems.

## Main features

Orchestra Control Engine is flexible because it can be customized. This is done visually. The solutions created are open (based on an open source framework) and are extendible. Modular components of the software allow a user to develop, debug and test control applications. For example, previously developed algorithms can be divided into functional units and reused indefinitely. All the units work together. The software can be distributed among various remote hardware devices which may be hundreds of meters apart. It also scalable in that it selects hardware which provides the best cost and performance for a particular operation. The system's parameters can be quickly reconfigured both on line and also at the time of a run.

## Suite components

Linux/RTAI creates Orchestra Control Engine's hard real time behaviour. Its "open source" characteristics allow changes to fit the users' requirements. Non hard real time components of orchestra Control Engine can be used with non-Linux platforms such as Microsoft Windows or Macintosh.

### Orchestra Core

A hard real time multithreaded engine operates in multicore/multiprocessor architectures. Within the scheme, modules can be filled in with more or less complex algorithms which control the process. The run time engine loads the modules. The user can adapt the modules to the topology. For complex topology, multiple modules can be used or parallel loops can be implemented.

### Orchestra Run Time Manager

The run time manager controls the formalities of execution of the program; decides priorities within the operation; and manages the multi-thread and multiprocessor operations. It is made up of templates that define thread typologies according to the formalities of execution and from a part that manages the POU (Program Organization Unit).

### Orchestra Logic Programming

The logic programming of Orchestra Control Engine assists in the use of the five contemplated languages of the IEC 61131 norm. It also assists in the use of the C/C++ language.

### Orchestra Path Programming

The path programming of Orchestra Control Engine assists in the writing of movement and workmanship mechanics. Piece manufacturing programs (part programs) can be edited according to the international ISO-DIN 60025 standard and the American EIA RS274 D standard. It is also important for the interpretation of modules and in turn for the input which allows a Motion Control Loop.

### Orchestra Designer

The designer is a Java IDE. It assists development of motion control applications for different environments. This involves completing new modules, using code templates, allowing the adding and shaping of new blocks and testing the modules both independently and in a control scheme. It also automatically provides XML configuration files for each module and for the control loop.

### Orchestra Builder

The builder is a software tool that allows Simulink models to be automatically generated into Orchestra core compatible modules. It does this by making a definition for every parameter of the Simulink model. It can generate a function which initializes the loading of a newly developed control system and, it can generate the step function which holds the code for the logic of each module.

### Orchestra HMI

HMI is a Java application (therefore a cross-platform one), that looks for and interacts with different parts of a control system. Orchestra HMI has a graphic interface (including a touch screen) which can run on any common PC. It can be customised to suit the user and provides user authentication. Orchestra HMI allows the user to CN configure and plan the production island and command processes such as the starting a motion program. The user can screen and edit processes. Orchestra HMI provides the visualization of signals coming from an OrchestraCore or an Orchestra Run Time Manager by means of graphic controls (indicators, 2D plots, LCD displays) and the 3D visualization of machines and anthropomorphous manipulators.

### Orchestra Library

The library contains sets of modules, information from sensors, interfaces with external entities such as machines, robots, sensors and DAQ boards.

## Solutions

Orchestra Control Engine is a suite of programs. Using the various components in combination allows for flexibility. d

### Orchestra Motion Control Framework

The motion control framework allows users to develop motion control applications by integrating the best modules for their purpose. The modules may be ones already available or those the user develops using the orchestra designer and builder facilities.
The modules can be run so that the process has multiple threads. Parallelisms are identified and thus algorithms are refined. The modules can be "debugged" as they are completed if specific verifications are programmed. Alternatively, the modules can be completed in "release" mode if no special verifications are required.
The modules be completed with any number of entries, parameters, states and vectorial output in double precision floating point, as well as states of any other type. These characteristics are codified through XML files.

### Orchestra MultiPLC

Orchestra MultiPLC (multi programmable logic controller) is composed of Orchestra Run Time Manager, Orchestra Logic Programming and OrchestraHMI. It allows the execution of a motion control application as one or more programs or functional blocks which may be reused. The controller's open schema accepts and translates XML files. The functional blocks can be prioritised within a series or programmed to operate periodically. New tasks may be added to the application.

### Orchestra Full for Numerical Control

Orchestra Full for Numerical Control consists of Orchestra Motion Control Framework, OrchestraMulti PLC, and some other specific components:
OrchestraGCode interprets the G-code program received by the HMI: if the G-code instruction is one of motion, then it is sent to the MotionSupervisor, if not, OrchestraGCode will write the instruction to the appropriate software.
MotionSupervisor acts as an interface between the Motion Control Loop, the Orchestra GCode, the ControllerSupervisor and the Logical Control Loop. Using information from the ControllerSupervisor, it selects either automatic or jog mode. In jog mode, MotionSupervisor provides axes to moves, direction and feed rates. In automatic and in semiautomatic mode, instructions on movement will come from the G-Code interpreter. The MotionSupervisor also collects error messages coming from the MotionControl Loop and sends them to the ControllerSupervisor.
ControllerSupervisor centralizes all the information related to Orchestra Control Engine. It receives information from the HMI, the teach pendant and other software components. Such information is sorted to the other components even if direct channels of communication among the various components for the specific information interchange are foreseen.
ControllerSupervisor sends error messages to OrchestraHMI. Local errors are handled in the software components in which they take place. Errors beyond the local level are handled by the ControllerSupervisor instigating a safety procedure and or showing the error to the user.

### Orchestra for Open Robot Controllers

Orchestra for Open Robot Controllers allows the feasibility of innovative industrial robot algorithms to be tested. It can integrate advanced sensors and functions. Its interface with a personal computer is via OrchestraCore. Its function is generally one of realization of movement rather than the logic of control and the generation of trajectory.

## Release history

Orchestra Control Engine
| Version | Release date |
| v1.0-beta1 | 2007, Jul 16 |
| v1.0-beta2 | 2007, Oct 9 |
| v1.0-beta2.1 | 2007, Oct 29 |
| v1.0-beta2.2 | 2007, Nov 15 |
| v1.0 | 2007, Dec 21 |
| v1.0-1 | 2008, Jan 28 |
| v1.0-2 | 2008, Apr 1 |
| v1.1 | 2008, May 22 |
| v1.5 | 2008, Jul 22 |
| v1.5-1 | 2008, Oct 20 |
| v1.5-2 | 2008, Oct 28 |
| v1.5-3 | 2008, Nov 12 |
| v2.0 | 2008, Dec 19 |
| v2.0-1 | 2009, Feb 20 |
| v2.0-2 | 2009, Apr 10 |
| v2.0-3 | 2009, Jun 3 |
| v2.5 | 2009, Jul 31 |
| v2.6 | 2009, Oct 30 |
| v3.0 | 2010, Mar 30 |
| v3.0-1 | 2010, Oct 5 |
| v3.5 | 2010, Dec 21 |
| v3.5-1 | 2011, Jan 26 |
| v3.5-2 | 2011, Jul 27 |
| v3.6 | 2012, Jul 11 |