This repository contains software for remote control and monitoring of high voltage (HV) power supplies, primarily used for the TREX-DM experiment.
- Graphical User Interface (GUI) for individual and multiple HV power supply devices. Including:
-
Security checks for individual and multiple devices.
-
Register of voltage and current monitor values of the channels of each device.
-
Automatic multidevice raising of voltages and turning off following the standard protocol (raising or lowering all channels involved voltages simultaneously by steps).
-
Trip recovery system to automatically detect, handle and recover a trip. It uses the multidevice raising of voltages to recover a trip. Also, a configurable cooldown time is applied before recovering the trip.
-
Alert message to slack webhook (to do so, copy your slack webhook in the global variable SLACK_WEBHOOK_URL of logger.py). You can select the logging level os the slack messages in the config menu bar. These are the logging levels logic:
- CRITICAL: unexpected error happens which require the user to fix.
- ERROR: expected error happens which require the users attention.
- WARNING: expected event as trips.
- INFO: information on the normal functioning of the program.
- DEBUG: debugging information.
It is recommended to set the slack logging level to warning if you want to receive messages when trips happen or error if you want to ignore the messages of trips.
-
DAQ monitoring through the feminos-daq prometheus metrics. As the current DAQ computer is different from the slow-control PC, an ssh connection is established. Make sure to have the necessary ssh key-pair user credentials installed (on the DAQ PC) for the SSH key-based authentication.
-
Auto and manual button to add the current run information (run number, run type, metadata in the output file name, voltages and electronic threshold in the .run file) to the Google Sheet run list. To configure the connection to the Google Sheet you should change the global variables at
utils.py. Make sure to have the appropiate google service account credentials (json file) in the root directory.
-
- CAEN and Spellman SL30 simulators for testing without hardware.
- Clone the repository:
git clone https://github.com/AlvaroEzq/trex-slowcontrolHV.git
- Run the main GUI
Or run it with the simulators for testing (so the hardware is not needed)
python3 trex_HV_gui.py
You can also run the individual devices GUI independently. For example,python3 trex_HV_gui.py --test
python3 caen_gui.py --port /dev/ttyUSB0
- Python 3.x
- tkinter (for installation check this).
- Additional python libraries listed in
requirements.txt.
- GUIs modules
trex_HV_gui.py: Main GUI that contains individual interfaces for CAEN and Spellman HV devices, as well as multi-device control.devicegui.py: Implementation of the abstract class that serves as base class for the individual devices GUIs. This abstract class implements a device lock for multithreading-safe communication with the device and a command queue to keep the order of the communications to the device. Please, use theissue_commandmethod (or at least acquire the device lock manually) for any function (or statement) that requires to communicate with the device to avoid spurious errors. To write the individual device GUI, define your class as a children of this base class and implement the appropiateread_values(for background monitoring) andcreate_gui(for the GUI layout) abstract methods for your particular case. Do not forget to call the parent class constructor (super().__init__) at the end of your the class constructor (__init__), as it will start the GUI mainloop and any line written after this will not be executed (until the GUI is closed). You can use the following as examples:caengui.py: GUI for CAEN HV devices.spellmangui.py: GUI for Spellman HV devices.
checksframe.py: Implementation of the ChecksFrame class to display and manage the checks.utilsgui.py: Implementation of GUI utility classes such as ToolTip and PrintToTextWidget.
- Device modules
spellmanClass.py: Class for managing the Spellman HV supply.simulators.py: CAEN and Spellman device simulator classes.
- Support modules
check.py: Implementation of the checks classes.logger.py: Implementation of the ChannelState class and logging helper functions and classes.metrics_fetcher.py: Implementation of MetricsFetcher and MetricsFetchcerSSH to extract the prometheus metrics of the feminos-daq acquisition program.utils.py: Other useful functions. For now, it includes the necessary functions for adding rows to the Google Sheet run list.
