Release Notes

Summary

This release includes the version 1 of the following components:

  • Application Framework (rad)
  • Test Framework (etr)
  • Function Control Framework (fcf)
  • Some miscellaneous libraries (ctd and dit)

What is the scope of this version?

The version 1 responds to the ICS Framework release strategy where the framework is delivered incrementally. Only few components are released, and for these components not all requirements are necessarily met. However, version 1 covers 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.

What is the purpose of this release?

  • Provide the 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 before the upgrade to CII.
  • 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:

Development Environment

The release notes of the Development Environment can be found here

Components

Rapid Application Development

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 ZMQ

(De-)Serialization using Google ProtoBuf

Logging Based on EasyLogging
Online-DB Redis in-memory key/value DB

For details see the rad user manual.

Extensible Test Runner

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.

Function Control Framework

Device Manager

Supported Devices
  • Shutters
    • Configuration parameters: initial state (open, closed), timeout for HW operations, signals configurations, and more.
    • Close/Open control.
    • WS and PLC simulation capabilities.
  • Lamps
    • Configuration parameters: initial state (On, Off), timeout for HW operations, signals active low settings, and more.
    • On/Off control.
    • Intensity control.
    • Automatic switch off after a timeout.
    • WS and PLC simulation capabilities.
  • Motors
    • Configuration parameters: maximum velocity, axis type, initialisation sequence, named positions, and more.
    • Move in absolute encoders and user units.
    • Move using named positions.
    • Move in relative encoders.
    • Move in speed.
    • Motor engineering GUI implemented in Python.
    • WS and PLC simulation capabilities.
  • Sensors
    • Monitor a list of engineering variables.
    • The values are not continuously read from the LCS but updated on data change.
    • Generic WS solution that can connect to different PLC implementations.
    • PLC simulation capabilities.
  • Derotators
    • Five operation modes: engineering, stationary, sky, elevation and user defined.
    • Tracking computation is based on slalib running in the PLC.
    • PLC simulation capabilities.
  • ADCs
    • Two operation modes: off and automatic.
    • Multi-axis support.
    • Tracking computation is based on slalib running in the PLC.
    • PLC simulation capabilities.
Supported Commands

The following commands are provided for the Device Manager:

Device Manager commands
Command Supported?
Init yes
State yes
Status yes
Enable yes
Disable yes
BeginAcq yes
EndAcq yes
Recover yes
Simulate yes
StopSim yes
Stop yes
Reset yes
Setup yes
Ignore yes
Include yes
SetLog yes
SetCfg no
GetCfg no
Exit yes

Device Simulator

Version 1 provides device simulators for Shutters, Lamps and Motors. The simulators have been implemented in Python based on the FreeOpcUa toolkit.

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 controlling and monitoring a Device Manager and the devices under its control.
  • Motor GUI (pymotgui): Engineering interface for the control and monitoring of a single motor device, implemented in Python.

Version of components

An SVN tag has been created for the version 1.0 of ICS Framework (IFW), and it can be retrieved from: http://svnhq9.hq.eso.org/p9/tags/EELT/ICS/ifw/Release/1.0.0

This tag contains the following versions of the PLC libraries:

Library Version SVN trunk location
IODev.library 1.1.0.1 ^/trunk/EELT/ICS/ifw/fcf/controllers/ioDev@17152
Lamp.library 1.1.0.0 ^/trunk/EELT/ICS/ifw/fcf/controllers/lamp@16671
Motor.library 4.2.0.1 ^/trunk/EELT/ICS/ifw/fcf/controllers/motor@17136
Piezo.library 0.6.5.0 ^/trunk/EELT/ICS/ifw/fcf/controllers/piezo@16829
rsComm*.library (4 libraries) 0.1.0.5 ^/trunk/EELT/ICS/ifw/fcf/controllers/rsComm@17157
Shutter.library 1.1.0.0 ^/trunk/EELT/ICS/ifw/fcf/controllers/shutter@16681
timer.library 1.0.0.8 ^/trunk/EELT/ICS/ifw/fcf/controllers/timer@16820

All libraries have been created with TwinCAT 3.1.4022.27.

Required TwinCAT 3.1 build 4022.20 or higher because of the Event Logger support.

Known Problems

  • dbbrowser on virtual machines installations based on Virtual Box version 5.2.x with DevEnv 2.1.13: when trying to load/save a configuration, from the menu File, the dbbrowser crashes with:
python3: symbol lookup error: /lib64/libpangoft2-1.0.so.0: undefined
symbol: hb_buffer_set_cluster_level

This problem has been reported in ticket ELTDEV-289 and will be addressed in future versions of the Development Environment. In the meant time there is a patch that fixes the problem by executing the following command as root:

conda install -c asmeurer pang
  • fcfgui and motgui in Virtual Box environments: do not get the scroll bar.
  • getTemplate for introot creates the introot with a subdirectory modulefiles which should not be used. $INTROOT/etc/modulefiles should be used instead.
  • IFW gives the following warning when compiling. This is a harmless message, it will be fixed in the next version of the DevEnv (ELTDEV-284).
buildcopy: No source files provided to buildcopy in <task_gen 'fcf.gui.pymotgui.test'
declared in ...fcf/gui/pymotgui>
(set `buildcopy_source` or `source`)