Components of the NICOS system
NICOS is a control system with several components. They come in the form of
executables located in the bin subdirectory of the NICOS source. These
components are:
Shells
These components allow the user – in some form or other – to interact with the
NICOS system and execute commands.
- nicos-console
- This is the most basic NICOS shell. It presents to the user a slightly
enhanced builtin Python shell, where commands can be executed.
- nicos-ipython
- This is a version of nicos-console that uses the IPython shell instead of the builtin Python shell.
- nicos-web
- This is a web-frontend version of the NICOS console. It implements a simple
web server that presents a console-like user interface via the web browser.
- nicos-gui
- This is the GUI client part of the server-client execution shell. It connects
to a nicos-daemon instance (see below) that controls the instrument. The
GUI uses Qt for the basic functionality, and Qwt for the data plotting and analysis windows.
Other clients
These programs are clients that don’t provide shell functionality.
- nicos-monitor
- This program implements a graphical status monitor that displays current
values of the instrument status from the NICOS cache.
Daemons
These programs provide services and are designed to run as daemons once per
instrument.
- nicos-cache
- The NICOS cache collects all values and parameters read from NICOS devices, so
that individual components do not need to access the hardware too often. It
also serves as an archival system for the instrument status. For situation
where excessive caching is not required, NICOS can also run without the cache
component.
- nicos-daemon
- This is the server part of the server-client execution shell. It can be
controlled via a TCP connection using a custom protocol designed for this
purpose, with the nicos-gui component. Multiple GUI clients can connect
to one daemon.
- nicos-poller
- The poller periodically queries volatile information such as current sensor
readings from all devices in the instrument setup, and pushes updates to the
NICOS cache.
- nicos-elog
- This daemon provides the “electronic logbook”. It collects information about
special events such as “new sample” or “scan finished”, and writes them to
disk in an HTML file, which can serve as an electronic logbook of the
experiment that is easier to read than a mere plain-text logfile.