Software engineering
Introduction
The software engineers of the E&I group take care of the design and implementation of automated control and data acquisition systems of the various diagnostics and experiments being developed at DIFFER. Our projects often include interfacing hardware, implementing safety and control logic, handling measured and calculated data, and graphical user interfaces.
Expertise
The expertise of the software engineers in the E&I group covers a number of programming platforms, and includes market knowledge of hardware and software products, and software design, implementation, deployment and testing. We typically develop custom software for commercial hardware components, mixed with custom electronics. We work closely with the scientists and research engineers in the scientific groups, typically for the duration of the research project.
LabVIEW-based systems
Most of the small to medium-sized projects are realised using National Instruments LabVIEW. The system hardware ranges from a desktop PC with a GPIB interface card to multiple lightly coupled Real-Time LabVIEW PXI systems.
Distributed safety, control and data acquisition systems
For large projects typically a distributed architecture is used, where safety and low level control is handled by PLCs programmed in C, and complex control and diagnostics systems are handled by PC or PXI systems programmed in C++, Python and/or LabVIEW. Usually a central server is used to coordinate the subsystem controllers, handle data storage and provide remote access from client applications.
Projects
In 2006 the main focus has been on the realisation of Felice and the specification and first designs of the Magnum-PSI control system. E&I is now also responsible for the software on the nSI ADC and MUCO setups. A number of previous and current projects are described below.
FELIX/Felice
Timer
The timing system for the FELIX and FELICE experiments is based on National instruments hard- and software: PXI and LabVIEW. Custom hardware was build for the front-end connectors by our electrical engineering colleagues. The PXI system uses an embedded controller running Real-Time LabVIEW. The system has three different components:
- a start pulse generator,
- eight start pulse delay timers, and
- forty general purpose timers.
A normal PC running Windows XP is used to run the graphical user interface (GUI), which is programmed in LabVIEW. The start pulse generator function is programmed in an FPGA module in the PXI crate. LabVIEW is used to generate VHDL code for the FPGA.
Beam optics

The Felice beam optics controller is a LabVIEW program running on PXI-hardware. The user-interface is used by FELIX operators, and controls (among other things) the magnets in the electron beam line.
Averaging digitizer

For the Molecular Dynamics group we have developed a PC-based averaging digitizer, used for Time-of-flight measurements. This solution has better resolution and better data handling capabilities, at a significantly lower cost than commercially available digital oscilloscopes.
The system consists of an industrial flat-panel PC, with an Acqiris PCI digitizer card. The PC runs Linux, and the oscilloscope program and data viewer/export tool are written in Python. The data is stored in the HDF5 data format, using the PyTables module. The digitizer is interfaced using the Acqiris C-library with a Python wrapper generated using the SWIG tool.


