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:
- 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¶
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:
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`)