Introduction

The fcf component is part of the ifw package. This release is intended to allow Consortia Developers trying out the control of instrument hardware functions using the libraries and applications delivered as part of this version, as well as getting acquainted with the design choices and their implementations.

Main Components

The present version of the FCF covers the following main components:

  • A Device Manager implementation that can control a configurable number of devices from a standard ELT WS.
  • A generic GUI for the Device Manager that allow users to control devices graphically.
  • A set of Device Simulators capable of emulating the behaviour of a device controller and its interface within a WS.
  • A set of PLC libraries implementing the supported device controllers and their HMIs for local control.

Top Directory Structure

The first level of the fcf directory contains the following:

<root>             # FCF component root
├── controllers    # directory containing the PLC libraries
├── devmgr         # directory containing the FCF manager and devices classes
├── devsim         # directory containing the device simulators
├── gui            # directory containing the different GUIs modules
└── wscript        # WAF build script

Device Manager (devmgr)

The server implementation is based on the ICS application framework (rad). Following the ELT and ICS development standards, the client and server are implemented in C++.

Note

In this version, the devmgr supports only six different type of devices: lamps, shutters, motors, sensors, derotators and ADCs.

Directory Structure

In the present version of the FCF, the device manager contains:

<root>             # devmgr root directory
├── client
├── common
├── devices
├── modif
├── server
├── templates
└── wscript

Where:

  • client is an application that can be used to send commands to the server from the command line.
  • common is a library implementing core server classes like actions and activities.
  • devices is a library implementing the device classes.
  • modif is the interface module containing the google buffer payload definition for commands and topics.
  • server is the server application (devmgrServer). This is a reference implementation that can be configured for controlling instrument functions of a given type.
  • templates is a directory containing templates for code and configuration generation. Template files use the Jinja2 template engine: Jinja 2 documentation

Device Simulators (devsim)

The FCF includes a set of Simulators with the purpose of allowing the Device Manager running without a PLC. These Simulators are implemented in Python and they run on a Linux WS. Each Device Simulator implements an OPC-UA Server and the business logic of a particular Device Controller.

Note

In this version, Device Simulator for the following standard devices are provided:

  • Lamp.
  • Motor.
  • Shutter.

Directory Structure

In the present version of the FCF, the devsim contains:

fcf/devsim
├── packages
│   ├── devsimLampLib
│   ├── devsimLib
│   └── devsimMotorLib
└── programs
    ├── devsimLamp
    ├── devsimMotor
    └── devsimShutter

Graphical Interfaces (gui)

In order to simplify the usage of the server, the fcf provides a prototype of an engineering interface. The graphical interface has been implemented in Qt using the QtWidget library.

Directory Structure

In the present version of the FCF, the gui contains:

<root>             # gui root directory
├── fcfgui         # FCF generic engineering graphical interface
├── wdglib         # Motor device engineering graphical interface
├── motgui         # Motor device engineering graphical interface
├── pymotgui       # Motgui implemented in Python.
├── msglib         # Library for sending commands to the server from GUIs.
└── wscript

PLC Libraries (controllers)

This directory contains the list of TwinCAT projects implementing the Device Controllers and Simulators for each of the hardware functions to be controlled by the FCF at the local control. These directories are Microsoft Visual Studio projects and they shall be edited under Windows.

Directory Structure

In the present version of the FCF, the controllers contains:

<root>             # controller root directory
├── ioDev          # IoDev PLC library
├── lamp           # Lamp PLC library
├── motor          # Motor PLC library
├── piezo          # Piezo PLC library
├── rsComm         # Serial communication PLC library
├── shutter        # Shutter PLC library
├── switch         # Generic switch PLC library
├── timer          # Timer PLC library
└── trklib         # PLC C++ modules

Note

Currently not all Device Controllers are supported by the devmgr.