Backend System Components
This is a table of the major components of IBEX server.
Name |
Console Name |
Type |
What it does |
---|---|---|---|
|
Java |
ActiveMQ used to transmit log and alarm data |
|
|
Java |
Serves alarms which appear in the alarms perspective. It checks to PVs to see if they are in alarm mode and relays that information to the client. Actual range checking is done a EPICS server. |
|
|
python |
Creates log files based on the MySQL database for some devices with special needs. |
|
Archive Engine |
|
Java |
Archives (in mysql db) blocks set in a configuration (restarted when blocks change) see CSS-Archive-Engine |
Block Gateway |
|
EPICS Gateway |
Aliases the dynamically created block PVs e.g. CS:SB:FURNACE_TEMP to the underlying PV e.g. EUROTHRM_01:A01:TEMP see Block server |
|
Python |
Manages configurations and blocks associated with them see Settings-and-Configurations. It configures the Archive Engine and starts the IOCs read from the configuration files. |
|
CA Repeater |
|
Executable |
A epics CA repeater that is started before all other processes. This repeats UDP broadcasts to CA clients on the same machine |
|
Python |
Intermediary between MySQL and the GUI, only used for PVs that hold instrument information, such as experiment data, which IOCs are used and information about PVs of an instrument. Legacy software, not that necessary now. |
|
N/A - runs centrally |
Python |
Similar to DB server but for PVs for the experimental database which contains users and run numbers. |
|
|
EPICS Gateway |
Gateway to allow access to PVs from outside localhost |
|
N/A |
Library of functions |
functions called on IOC start up to load macros into the IOC. |
|
|
Epics IOC |
PVs which are for instrument level, e.g. motors moving and security pvs |
|
Instrument Archive |
|
Java |
Archives (in mysql db) pvs with archive property see CSS-Archive-Engine. It is a separate archive engine from Archive engine. PVs with archive property are PVs set by developers to be logged always, regardless of what scientists do, so that we can use them for diagnostics. |
|
Java |
Instrument level software that collects messages sent by any IOC, logs it in the database and put it on the JMS message queue. |
|
|
Epics IOC |
Controls the ISIS ICP program which collects data. It is an IOC-like needed because ICP can not talk over Channel Access. |
|
LabVIEW |
Controls certain legacy devices which have not been migrated to EPICS yet. |
||
runs as a service |
Service |
My SqlDatabase is used for persisting data |
|
|
Python |
Process which runs and queues users’ python scripts on an instrument |
|
Proc Serve Control |
|
Epics IOC |
Control proc serves (start, stop and status). A wrapper that makes starting and stopping IOCs much easier. |
python |
Python distribution. |
||
pcaspy |
Manages IOCs hosted on PCs other than the local instrument. |
||
|
Epics IOC |
Add run control to blocks. Run Control is a feature of IBEX that allows users to configure the instrument so when a PV is out of a certain range, neutron data is not being gathered. Needed because neutron data has an extremely large volume and sometimes that data would not be needed so it is better to not pollute the Nexus files with it. |
|
|
Python |
Script server is a proxy in front of nicos to allow communication with it. |
|
N/A |
Database, webserver and part of the client |
Provides information about what experiments have been done on the instrument in the past |
All components are started via Startup and Shutdown