Release Notes¶
Summary¶
This release includes the following components:
Application Framework (
rad
) version 2Test Framework (
etr
) version 2Sequencer (
seq
) version alphaFunction Control Framework (
fcf
) version 2Online Data Processing (
odp
) version alphaSome miscellaneous core libraries (
ctd and dit
) version 2
What is the scope of this version?¶
Version 2 responds to the ICS Framework release strategy where the framework is delivered incrementally. Still, only few components have been released, and for these components not all requirements are necessarily met. However, this version tries to cover the implementation of the most important design choices and what is pending will be delivered in the coming versions (major or minor) of the Framework. A significant difference with version 1 is the adoption of the CII MAL which is the fist step in integrating CII into the ICS Framework. This integration will continue in the future versions of the ICS Framework according to the availability of the CII services.
Note
Due to some delays in the development of the DDT project by our contractor, we were not able to include it in this release, as it was foreseen. However, we might be able to deliver an alpha version of the DDT component in the following months (June/July).
What is new in this release?¶
Despite the fact that we have not been able to deliver everything that was planned for this version, there are a number of new features included. The most important ones are listed below.
Alpha version of Sequencer
Alpha version of the Online Data Processing (ODP)
Integration of CII MAL into RAD and FCF
IFW migrated to GIT (ESO GitLab)
Moved to C++17
Moved to TwinCAT 3.1 4024
CII MAL Documentation can be found here:
What is the purpose of this release?¶
Provide the updated ELT Development Environment to consortia software developers, to allow them to gain hands-on experience with the new technologies adopted by the ELT, such as the build system based on waf.
Facilitate an early feedback from developers in order to correct issues and modify the design as early as possible.
Give consortia the tools for the control of hardware functions that will allow them to carry out prototyping activities.
Some of the third party products and middleware solutions used by the ICS Framework are:
Qt Framework for developing GUIs.
ZeroMQ for implementing request/reply and publish/subscribe message patterns.
Google Proto Buffers for serialization/deserialization.
Softing OPC-UA toolkit for communication to the PLCs
FreeOpcUa toolkit for implementing OPCUA servers in Python.
Google Tests and Mockup libraries for unit tests.
Robot Framework for integration tests.
Components¶
Rapid Application Development (RAD)¶
The is an application framework that enables the development of event-driven applications for the ELT, based on call-backs or state machines.
At present, the Rapid Application Development uses the following libraries:
Service |
Description |
---|---|
Error Handling |
Exceptions |
Configuration |
Based on files using YAML |
Messaging |
Req/Rep and Pub/Sub using CII MAL ZPB |
Logging |
Based on Log4cplus |
Online-DB |
Redis in-memory key/value DB |
For details, see the rad user manual.
Extensible Test Runner (ETR)¶
The component etr is included in the release to support running integration tests. The following features are available:
Run Robot Framework tests with the robot plugin.
Request test resources with the resources plugin.
Modify template files with Jinja2 template engine and the jinja2 plugin.
Deploy software with Nomad with the nomad plugin (experimental support).
For details see the etr user manual.
Sequencer¶
The alpha version of component seq is included in the release to support the implementation of engineering scripts. The following features are available:
Sequencer Engine
Sequencer API
Sequencer CLI
Function Control Framework (FCF)¶
Device Manager¶
Supported Devices¶
Shutters
Configuration parameters: initial state (open, closed), timeout for HW operations, signal logic, and more.
Close/Open control.
Lamps
Configuration parameters: initial state (On, Off), timeout for HW operations, signal logic, and more.
On/Off control.
Intensity control.
Automatic switch off after a timeout.
Motors
Configuration parameters: maximum velocity, axis type, initialisation sequence, timeouts, SW limits, backlash compensation, usage of brakes, named positions, and more.
Move in absolute encoders and user units.
Move using named positions.
Move in relative encoders.
Move in speed.
Sensors
Monitor a list of engineering variables.
Values are not continuously read from the LCS but updated on data change.
Derotators
Five operation modes: engineering, stationary, sky, elevation and user defined.
Tracking computation is based on slalib running in the PLC.
ADCs
Two operation modes: off and automatic.
Multi-axis support.
Tracking computation is based on slalib running in the PLC.
Piezos
Two operation modes: position and automatic.
Supports up to three axes.
Move in bits and userunits.
Actuators
Generic On/Off control.
Device Simulators¶
Version 2 extends the set of simulators to all supported devices. The simulators have been implemented in Python based on the FreeOpcUa toolkit and the “rad/scxml4py” engine.
Engineering Graphical Interfaces¶
The Device Manager includes two graphical applications, see Engineering Interfaces.
Warning
These two applications shall be considered just as a prototype implementations. Their design (color scheme, layout and in general their look&feel) may change in the future according to the development of ELT widget libraries and standards for graphical interfaces.
FCF GUI (
fcfGui
): Engineering interface for the control and monitoring of Device Manager and devices under its control.Motor GUI (
pymotgui
): Engineering interface for the control and monitoring of a single motor device, implemented in Python.
PLC Libraries¶
An SVN tag has been created for the PLC libraries delivered with version 2.0 of the ICS FCF. It can be retrieved from: http://svnhq9.hq.eso.org/p9/tags/EELT/ICS/PLC/2.0.0
This tag contains the following versions of the PLC libraries:
Library |
Version |
---|---|
ioDev.library |
1.1.1.0 |
lamp.library |
1.1.1.1 |
motor.library |
4.2.2.5 |
piezo.library |
0.6.6.2 |
rsComm*.library (4 libraries) |
0.1.1.0 |
shutter.library |
1.1.0.1 |
timer.library |
1.0.2.1 |
actuator.library |
1.0.0.2 |
All libraries have been created with TwinCAT 3.1.4024.7.
Required TwinCAT 3.1 build is 4024.7 or higher.
Required OPC UA Server version is 3.3.16.0 or higher.