Reports 1-1 of 1 Clear search Modify search
AdV-ISC (Subsystem management)
michimura - 20:37 Wednesday 18 July 2018 (42150) Print this report
PyQt graphical user interfaces for ISC

I made GUIs for ISC using PyQt with a lot of help from Bas, Julia, Diego and Franco.
So far, we have

LSCoverview.py for overviewing length sensing and control (see below).
ITFmonitor.py for monitoring the interferometer locking status (see attached; there's too much light on B1 since work on detection bench is currently underway).
ASCoverview.py for overviewing alignment sensing and control (see attached).

42150_20180718202750_lscoverview.png

Latest stable versions of all of them live in /virgoDev/PyIscGui/.
They can be run by

> python LSCoverview.py

They need relevant .ui files for generating the screen, and .ui files can be edited using Qt Designer.

> designer LSCoverview.ui

I hope this will be the first step to making GUIs for ISC and helping people understand what's happening in ISC.

Next:
 - find a better solution for drawing the interferometer for ITFmonitor.py
 - incorporate driving matrices in DSP
 - make a GUI for tuning demodulation phases
 - make a GUI for SSFS and OMC
 - re-make violin GUI in PyQt (it was made with Tkinter)

Details:
 All of these are based on Python PyQt4. To get all the current values, ConnectOnline function in virgotools is used. To push the requested values, cm_send commands are used. SMS channels are found to be very useful. SMS channels can be acquired only with prefixes:

self.connection=ConnectOnline('FbmPyAccess', 'V1:LSC')
frame = self.connection.get_next_frame()


 Widgets are named consistently so that

- QLineEdit for showing current value has the name {channelname]_value (they are dark grey when signal not acquired, grey when zero, green when not zero)
- QLineEdit for inputting requested value has the name {channelname}_request (they are white)
- QPushButton for applying the value has the name {channelname}_apply

 Right now, codes only talk to Acl.

Below are some notes on each code.

LSCoverview.py
 - As for the input channels (error signals), channels which has largest and second largest weights are shown. Input channels are sum channels and their weights are saved as SMS channels with the name something like "V1:LSC_MICH_INPUT_B4_DC."
 - You can change the weights by selecting the channels in combobox. This will zero all the other weights.
 - Control filters for {DOF}_OUT are also shown. I found that it is saved as SMS channels with the name something like "V1:LSC_MICH_OUT_MICH_control_MICH_mains."
 - Driving matrix is saved as SMS channels with the names something like "V1:LSC_BS_CORR_MICH_CORR."
 - You have to be careful about the driving matrix because you have another matrix in DSP.
 - You can set the ramp time at top-right.

ITFmonitor.py
 - Interferometer is drawn by PyQt4.QtGui.QPainter and the rest is designed by Qt Designer.
 - To change the interferometer drawing, you have to look into the code (which is not very nice and we are seeking for another solution).
 - The thickness of the beams are changed depending on the powers on photodiodes, and you can monitor which parts are locked.
 - Normalization factor for beam thickness have to be re-tuned later once we have a full lock.

ASCoverview.py
 - To save sensing and driving matrices, I added the following lines to the ASC_Acl.cfg file.
ACL_SMS        "ASC_"        BS_TX_INPUT    PR_TX_INPUT    DIFFp_TX_INPUT    DIFFm_TX_INPUT    COMMp_TX_INPUT    COMMm_TX_INPUT
ACL_SMS        "ASC_"        BS_TY_INPUT    PR_TY_INPUT    DIFFp_TY_INPUT    DIFFm_TY_INPUT    COMMp_TY_INPUT    COMMm_TY_INPUT
ACL_SMS        "ASC_"        NE_TX_CORR    NI_TX_CORR    WE_TX_CORR    WI_TX_CORR
ACL_SMS        "ASC_"        NE_TY_CORR    NI_TY_CORR    WE_TY_CORR    WI_TY_CORR

 - The matrix part of the GUI can be auto generated using generateMatrixUI.py.
 - Somehow, COMM{p|m}_{TX|TY}_CORR are not saved as ADC channels (so they are dark grey in the ASCoverview screen). We have to fix this.

Images attached to this report
Comments to this report:
bersanetti - 1:47 Thursday 19 July 2018 (42152) Print this report

First of all, great work for the GUIs! yes

 

About the COMM{p|m}_{TX|TY}_CORR channels, this most probably happens because they were not exported yet as ACL_DAQ objects (on Acl there is still only the sensing, so they are carrying the same information as the COMM{p|m}_{TX|TY} channels, which were already exported); I replicated for them the same exports we have for DIFF{p|m} (lines 489-490 of ASC_Acl), so everything will hopefully be working after the ASC_Acl process is restarted.

michimura - 22:14 Monday 23 July 2018 (42186) Print this report

I also made a GUI for ISC photodiodes, which can be used to monitor DC and RF signals, and to tune demodulation phases (screenshot attached).
Latest stable version live in /virgoDev/PyIscGui/.
You can open the GUI by

> python ISCphotodiodes.py


Details:
 - Use _phi0 channels to tune the demodulation phase (_phi0_offset for SSFS_B4)

 - You can also press Enter/Return key to apply values (you don't have to click "Apply" button). This is also true for LSCoverview.py and ASCoverview.py.

 - "datadisplay" buttons show the data display which can be used to tune demodulation phases. The configuraton file for the data display live in /olusers/virgorun/ISC/dataDisplay.

 - It also shows the current values of channels to select PD1 and PD2 so that it is apparent which photodiodes are used and what gain we have between PD1/PD2 and the combined signal sent to LSC. To get these channels with ConnectOnline, I had to connect with something like 'V1:SNEB_B7' (not 'V1:SNEB'). To monitor the weight channels, I added/modified the following lines in Acl configurations files:

SNEB_Photodiodes.cfg line 265
ACL_SMS    "SNEB_"    B7_6MHz_I    B7_6MHz_Q    B7_56MHz_I    B7_56MHz_Q    B7_DC;

SWEB_Photodiodes.cfg line 250
ACL_SMS    "SWEB_"    B8_6MHz_I    B8_6MHz_Q    B8_56MHz_I    B8_56MHz_Q    B8_DC;

SIB2_Photodiodes.cfg line 423
ACL_SMS    "SIB2_"    B2_6MHz_I    B2_6MHz_Q    B2_8MHz_I    B2_8MHz_Q    B2_DC;

SDB2_Photodiodes.cfg line 779-782
ACL_SMS "SDB2_"    B1p_DC_20kHz    B1p_6MHz_I    B1p_6MHz_Q    B1p_8MHz_I    B1p_8MHz_Q    B1p_56MHz_I    B1p_56MHz_Q;
ACL_SMS "SDB2_"    B1s1_DC_20kHz    B1s1_6MHz_I    B1s1_6MHz_Q;
ACL_SMS "SDB2_"    B1s2_DC_20kHz;
ACL_SMS "SDB2_"    B5_DC_20kHz    B5_6MHz_I    B5_6MHz_Q;

SPRB_Photodiodes.cfg line 428
ACL_DAQ            "SPRB_"    ""    B4_PD_select


 - Photodiode channels are not symmetric. Very confusing. Below are the list of exceptions;
  - SNEB_B7_PD#_DC_100Hz and SWEB_B8_PD#_DC_100Hz exists, but not _DC
  - SPRB_B4_PD_select is used for PD selection, not weights
  - PD#_Blended signals, not PD#_DC are used for SNEB_B7, SWEB_B8, SDB2_B5, SDB2_B1s1, SDB2_B1s2
  - SNEB_B7_PD1_56MHz, SWEB_B8_PD2_56MHz, SIB2_B2_PD1_8MHz, SDB2_B5_PD1_6MHz, SDB2_B1s1_PD2, SDB2_B1s2_PD2 channels do not exist
  - SIB2_B2_PD1_6MHz, SIB2_B2_PD1_DC and SDB2_B5_PD1_DC exist, but weights do not exist
  - for SDB2 PDs, weight channels are *_PD#_DC_20kHz_*, not *_PD#_DC_*


IscGui.py for parsing and showing GUI:
 I also made a script IscGui.py which parses the Qt GUI configuration file (*.ui) and show the GUI. For example, you can also open ISC Photodiodes screen with

> python IscGui.py ISCphotodiodes.ui

 This is useful because you only need to make .ui file with Qt Designer to make a new GUI. However, it can only parse limited widgets with certain names, and give fixed functions to them. Below are the widgets IscGui.py can handle.

Widget class   Name                          Function
QLineEdit      {channelname}_value           show the current value (QTextEdit for showing current filter name)
QPushButton    {channelname}_apply           apply the requested value in QLineEdit explained below
QLineEdit      {channelname]_request         enter the requested value
QPushButton    {channelname}_filter_apply    apply the filter requested in QTextEdit explained below
QTextEdit      {channelname}_filter_request  enter the requested filter
QPushButton    {channelname}_weight_apply    apply the weight for the input channel in QComboBox with the requested weight in QLineEdit explained below
QComboBox      {channelname}_channel_request select the requested input channel
QTextEdit      {channelname}_weight_request  enter the requested weight
QLineEdit      {channelname}_channel_1 or _2 show the input channels which has the largest and second largest weight
QLineEdit      {channelname}_weight_1 or _2  show the largest and second largest weight


 I think this is useful to initiate GUIs (but the final versions should be different python codes for different .ui files for maintenance point of view).

Images attached to this comment
michimura - 17:12 Wednesday 01 August 2018 (42280) Print this report

I made a GUI for ISC quadrants, which can be used to monitor DC and RF signals, and to tune demodulation phases (see ISCquadrants.png).
The latest stable version live in /virgoDev/PyIscGui/.
You can open the GUI by

> python ISCquadrants.py


Details:
 - For quadrants, there are _phi0 channels to rotate I and Q both in the suspended bench and ASC.

 - "datadisplay" buttons show the data display which can be used to tune demodulation phases. The configuraton file for the data display live in /olusers/virgorun/ISC/dataDisplay. "datadisplay 1" for QD1 and "datadisplay 2" for QD2.

 - Some of _phi0 channels in ASC were not stored, so I added the following channels in the last line ACL_DAQ_FILTER (line 511) in ASC_Acl.cfg.

B1p_QD1_H_56MHz_phi0    B1p_QD1_V_56MHz_phi0    B1p_QD2_H_56MHz_phi0    B1p_QD2_V_56MHz_phi0
B4_QD1_H_56MHz_phi0    B4_QD1_V_56MHz_phi0    B4_QD2_H_56MHz_phi0    B4_QD2_V_56MHz_phi0
B2_QD1_H_8MHz_phi0    B2_QD1_V_8MHz_phi0


 - Channels for quadrants are made symmetric and it was very easy to make a GUI yes.

 - Currently, B1p QD2 56MHz, B2 QD2 8MHz, B5 QD2 56MHz, B5 QD2 norm, B5 QD2 56MHz are used (see ASC sensing matrix). There are no ASC channels for B2 6MHz and B5 6MHz.


Some updates:
 - Now the launcher screen for ISC is available (Launcher.py; see Launcher.png).
 - Now you can shrink the screens and they will be scrollable (something like this).

Images attached to this comment
michimura, carbognani - 14:36 Monday 06 August 2018 (42345) Print this report

Series of PyQt ISC GUIs have been packaged as PyIscGui and the first version has been uploaded in /virgoApp/PyIscGui/v1r0/

This version has also been added under the IceWM menu ISC section and ISC Lancher GUI can be started from there (see attached). ISC Launcher now can launch the following GUIs

- ITF Monitor (logbook #42150)
- LSC Overview (logbook #42150)
- ASC Overview (logbook #42150)
- ISC Photodiodes (logbook #42186)
- ISC Quadrants (logbook #42280)
- Violing Damping (logbook #42344)

Previous Tkinter version of violinUI in SUS section has been removed from IceWM (see, also, logbook #41997).

Images attached to this comment
Search Help
×

Warning

Error

The present report has been modified outside this window. Please check for its integrity in the main page.

Refreshing this page will move this report into drafts.

×