Introduction

The fcf component is part of the ifw package. This alpha 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 to emulate the behaviour of 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 aplication framework (rad). Following ELT and ICS standards, the client and server are implemented in C++.

Note

In this version, the devmgr supports only four different type of devices: lamps, shutters, motors and sensors. More devices will be added for the release of version 1.

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 the 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 Llbrary implementating 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 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 to allow the Device Manager running without a PLC. These simulators are implemented in Python and they run in a Linux WS. Each device simulator implements an OPC-UA Server and the bussiness logic of a particular device controller.

Note

In this version, the only device simulator provided is the one for the shutter device.

Directory Structure

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

<root>                  # devsim root directory
├── devsimLib
├── devsimShutter
├── genOpcUaProfile
└── wscript

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
├── 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

Note

Currently not all device controllers are supported from the devmgr.