From 4c0e4d568625040621807e1a9b83340f29199c80 Mon Sep 17 00:00:00 2001 From: "paolo.cinquegrana@elettra.eu" <paolo.cinquegrana@elettra.eu> Date: Thu, 12 Oct 2023 09:54:02 +0200 Subject: [PATCH] aggiunto offset per i decimatori --- src/SluSourceMonitor.py | 228 +++++++++++++++++++++++----------------- 1 file changed, 132 insertions(+), 96 deletions(-) diff --git a/src/SluSourceMonitor.py b/src/SluSourceMonitor.py index aaff6ce..5801eb6 100644 --- a/src/SluSourceMonitor.py +++ b/src/SluSourceMonitor.py @@ -20,7 +20,6 @@ try: sacco['archiviatore'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/archiving/hdb++archiver/slu') sacco['costanti'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/misc/ranges') sacco['interlock'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/interlock/laser_pss') - sacco['revolution'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/laser/evops_sl.03') sacco['SLtemperature'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/cooling/dmm_sl.01') sacco['ems3'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/energy_meter/ems_sl.03') @@ -28,7 +27,6 @@ try: sacco['slelitefbin'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/feedback/rtltf_osc.01') sacco['slelitefbtime'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/feedback/fbdelay_sl.02') sacco['attenuator'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/motor/rots_sl.09') - sacco['piezo0'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/piezo/tiptilt_slu.04') sacco['piezo1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/piezo/tiptilt_slu.01') sacco['piezo2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/piezo/tiptilt_slu.02') @@ -43,13 +41,11 @@ try: sacco['vuoto2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_uh.03') sacco['vuoto3'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_ehf.01') sacco['vuoto4'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_ehf.03') - sacco['decima1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/f/timing/rttrigger_sl.01') sacco['decima2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/f/timing/rttrigger_sl.02') sacco['decima3'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/f/timing/rttrigger_sl.03') sacco['decimacheck'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/ec-sl-slpsr-01/rtevr/ff100000') sacco['frequenza'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/f/timing/bunchnumber_f') - sacco['scope6'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/diagnostics/scope_sl.01') sacco['trls8_delay'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/motor/trls_sl.08') sacco['totem_delay'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/motor/trls_slu.05') @@ -60,7 +56,6 @@ try: sacco['triggerDGQ2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/delay/dgq_slpsr.02') sacco['triggerSDG1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/delay/sdg_slr.01') sacco['triggerSDG2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/delay/sdg_slr.02') - sacco['pompe'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/pumps') sacco['valvolaUH1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/uh/vacuum/vlvp_uh.01') sacco['valvolaUH2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/uh/vacuum/vlvp_uh.02') @@ -78,11 +73,7 @@ try: sacco['sensoreEHF2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_ehf.02') sacco['sensoreEHF3'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_ehf.03') sacco['sensoreEHF4'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_ehf.04') - sacco['SLUtemperature'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/cooling/dmm_slu.01') - - - except PyTango.DevFailed: print('error defining sacco DeviceProxys') @@ -105,7 +96,6 @@ try: sacco['magfeedback'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/feedback/mimofb_mag_slu.01') sacco['magfbsequencer'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/seq/recover/fb_weights_mag_slu.01') sacco['magccd4'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/diagnostics/ccd_slu.10') - sacco['ldm_kom1'] = PyTango.DeviceProxy('srv-tango-ldm-01:20000/ldm/motor/kom_slu_ldm.01') sacco['ldm_kom2'] = PyTango.DeviceProxy('srv-tango-ldm-01:20000/ldm/motor/kom_slu_ldm.02') sacco['ldm_rots1'] = PyTango.DeviceProxy('srv-tango-ldm-01:20000/ldm/motor/rots_slu_ldm.01') @@ -116,7 +106,6 @@ try: sacco['ldm_gentec2'] = PyTango.DeviceProxy('srv-tango-ldm-01:20000/ldm/energy_meter/ems_slu_ldm.02') sacco['ldm_fb1'] = PyTango.DeviceProxy('srv-tango-ldm-01:20000/ldm/feedback/rtltf_ldm.01') sacco['ldm_fb2'] = PyTango.DeviceProxy('srv-tango-ldm-01:20000/ldm/feedback/rtltf_ldm.02') - except PyTango.DevFailed: print('error defining sacco DeviceProxys') @@ -187,7 +176,7 @@ class MainWindow(QDialog): # self.contienitab.addTab(self.tab12, "DiProi") self.contienitab.addTab(self.tab13, "LDM") # self.contienitab.addTab(self.tab13, "MagneDyn") - + self.lot0 = QGridLayout() lot1 = QGridLayout() lot2 = QGridLayout() lot3 = QGridLayout() @@ -200,7 +189,7 @@ class MainWindow(QDialog): lot10 = QGridLayout() lot11 = QGridLayout() lot12 = QGridLayout() - lot13 = QGridLayout() + self.lot13 = QGridLayout() lot14 = QGridLayout() self.tab1.setLayout(lot1) self.tab2.setLayout(lot2) @@ -214,7 +203,7 @@ class MainWindow(QDialog): self.tab10.setLayout(lot10) self.tab11.setLayout(lot11) self.tab12.setLayout(lot12) - self.tab13.setLayout(lot13) + self.tab13.setLayout(self.lot13) self.tab14.setLayout(lot14) #1 monitor self.monitor_amplilabel = QLabel("Source") @@ -398,6 +387,11 @@ class MainWindow(QDialog): self.deci1sequence_W = QLineEdit() self.deci1sequence = QPushButton('Change sequence') self.deci1sequence.clicked.connect(lambda: self.decimasequenza('decima1')) + self.deci1offset_r = LineEditRO() + self.deci1offset_w = QLineEdit() + self.deci1offset_a = QPushButton('Apply') + self.deci1offset_a.clicked.connect(lambda: self.decioffset('decima1')) + self.deci2L = QLabel('SEED / FEL') self.deci2R = LineEditRO() self.deci2on = QPushButton('ON (random)') @@ -416,6 +410,11 @@ class MainWindow(QDialog): self.deci2sequence_W = QLineEdit() self.deci2sequence = QPushButton('Change sequence') self.deci2sequence.clicked.connect(lambda: self.decimasequenza('decima2')) + self.deci2offset_r = LineEditRO() + self.deci2offset_w = QLineEdit() + self.deci2offset_a = QPushButton('Apply') + self.deci2offset_a.clicked.connect(lambda: self.decioffset('decima2')) + self.deci3L = QLabel('SLU') self.deci3R = LineEditRO() self.deci3on = QPushButton('ON (random)') @@ -434,6 +433,11 @@ class MainWindow(QDialog): self.deci3sequence_W = QLineEdit() self.deci3sequence = QPushButton('Change sequence') self.deci3sequence.clicked.connect(lambda: self.decimasequenza('decima3')) + self.deci3offset_r = LineEditRO() + self.deci3offset_w = QLineEdit() + self.deci3offset_a = QPushButton('Apply') + self.deci3offset_a.clicked.connect(lambda: self.decioffset('decima3')) + self.deciripristino = QPushButton('STOP ALL AND RESTORE CORRECT DELAYS') self.deciripristino.clicked.connect(self.decimafermatutto) lot4.addWidget(self.decimators, 0, 0, 1, 10) @@ -450,7 +454,11 @@ class MainWindow(QDialog): lot4.addWidget(self.deci1sequence_R, 15, 1, 1, 5) lot4.addWidget(self.deci1sequence_W, 16, 0, 1, 5) lot4.addWidget(self.deci1sequence, 16, 5) - lot4.addWidget(QVLine(), 11, 6, 6, 1) + lot4.addWidget(QLabel('Offset'), 17, 0) + lot4.addWidget(self.deci1offset_r, 17, 1) + lot4.addWidget(self.deci1offset_w, 17, 2) + lot4.addWidget(self.deci1offset_a, 17, 3) + lot4.addWidget(QVLine(), 11, 6, 7, 1) lot4.addWidget(self.deci2L, 11, 7) lot4.addWidget(self.deci2R, 11, 8, 1, 5) lot4.addWidget(self.deci2on, 12, 7, 1, 2) @@ -463,7 +471,11 @@ class MainWindow(QDialog): lot4.addWidget(self.deci2sequence_R, 15, 8, 1, 5) lot4.addWidget(self.deci2sequence_W, 16, 7, 1, 5) lot4.addWidget(self.deci2sequence, 16, 12) - lot4.addWidget(QVLine(), 11, 13, 6, 1) + lot4.addWidget(QLabel('Offset'), 17, 7) + lot4.addWidget(self.deci2offset_r, 17, 8) + lot4.addWidget(self.deci2offset_w, 17, 9) + lot4.addWidget(self.deci2offset_a, 17, 10) + lot4.addWidget(QVLine(), 11, 13, 7, 1) lot4.addWidget(self.deci3L, 11, 14) lot4.addWidget(self.deci3R, 11, 15, 1, 5) lot4.addWidget(self.deci3on, 12, 14, 1, 2) @@ -476,6 +488,10 @@ class MainWindow(QDialog): lot4.addWidget(self.deci3sequence_R, 15, 15, 1, 5) lot4.addWidget(self.deci3sequence_W, 16, 14, 1, 5) lot4.addWidget(self.deci3sequence, 16, 19) + lot4.addWidget(QLabel('Offset'), 17, 14) + lot4.addWidget(self.deci3offset_r, 17, 15) + lot4.addWidget(self.deci3offset_w, 17, 16) + lot4.addWidget(self.deci3offset_a, 17, 17) lot4.addWidget(self.deciripristino, 20, 0, 1, 20) #5 delay self.vergogna_figura = plt.figure() @@ -1048,47 +1064,47 @@ class MainWindow(QDialog): lo_bottoni.addWidget(self.LDM_feedback1_state, 13, 1) lo_bottoni.addWidget(self.LDM_feedback2, 14, 0) lo_bottoni.addWidget(self.LDM_feedback2_state, 14, 1) - lot13.addLayout(lo_bottoni, 0, 0, 11, 2) - lot13.addWidget(QVLine(), 0, 2, 11, 1) + self.lot13.addLayout(lo_bottoni, 0, 0, 11, 2) + self.lot13.addWidget(QVLine(), 0, 2, 11, 1) riga = 0 - lot13.addWidget(self.LDM_label_MOTOR, riga, 3) + self.lot13.addWidget(self.LDM_label_MOTOR, riga, 3) riga +=1 - lot13.addWidget(self.LDM_rots1_b, riga, 3) - lot13.addWidget(self.LDM_rots1_r, riga, 4) - lot13.addWidget(self.LDM_rots1_w, riga, 5) - lot13.addWidget(self.LDM_rots1_a, riga, 6) - lot13.addWidget(self.LDM_rots1_relative, riga, 7, 1, 2) + self.lot13.addWidget(self.LDM_rots1_b, riga, 3) + self.lot13.addWidget(self.LDM_rots1_r, riga, 4) + self.lot13.addWidget(self.LDM_rots1_w, riga, 5) + self.lot13.addWidget(self.LDM_rots1_a, riga, 6) + self.lot13.addWidget(self.LDM_rots1_relative, riga, 7, 1, 2) riga +=1 - lot13.addWidget(self.LDM_rots2_b, riga, 3) - lot13.addWidget(self.LDM_rots2_r, riga, 4) - lot13.addWidget(self.LDM_rots2_w, riga, 5) - lot13.addWidget(self.LDM_rots2_a, riga, 6) - lot13.addWidget(self.LDM_rots2_relative, riga, 7, 1, 2) + self.lot13.addWidget(self.LDM_rots2_b, riga, 3) + self.lot13.addWidget(self.LDM_rots2_r, riga, 4) + self.lot13.addWidget(self.LDM_rots2_w, riga, 5) + self.lot13.addWidget(self.LDM_rots2_a, riga, 6) + self.lot13.addWidget(self.LDM_rots2_relative, riga, 7, 1, 2) riga +=1 - lot13.addWidget(self.LDM_rots3_b, riga, 3) - lot13.addWidget(self.LDM_rots3_r, riga, 4) - lot13.addWidget(self.LDM_rots3_w, riga, 5) - lot13.addWidget(self.LDM_rots3_a, riga, 6) - lot13.addWidget(self.LDM_rots3_relative, riga, 7, 1, 2) + self.lot13.addWidget(self.LDM_rots3_b, riga, 3) + self.lot13.addWidget(self.LDM_rots3_r, riga, 4) + self.lot13.addWidget(self.LDM_rots3_w, riga, 5) + self.lot13.addWidget(self.LDM_rots3_a, riga, 6) + self.lot13.addWidget(self.LDM_rots3_relative, riga, 7, 1, 2) riga +=1 - lot13.addWidget(self.LDM_trls2_b, riga, 3) - lot13.addWidget(self.LDM_trls2_r, riga, 4) - lot13.addWidget(self.LDM_trls2_w, riga, 5) - lot13.addWidget(self.LDM_trls2_a, riga, 6) - lot13.addWidget(self.LDM_trls2_relative, riga, 7, 1, 2) + self.lot13.addWidget(self.LDM_trls2_b, riga, 3) + self.lot13.addWidget(self.LDM_trls2_r, riga, 4) + self.lot13.addWidget(self.LDM_trls2_w, riga, 5) + self.lot13.addWidget(self.LDM_trls2_a, riga, 6) + self.lot13.addWidget(self.LDM_trls2_relative, riga, 7, 1, 2) riga +=1 - lot13.addWidget(self.LDM_kom1_b, riga, 3) - lot13.addWidget(self.LDM_kom2_b, riga, 6) + self.lot13.addWidget(self.LDM_kom1_b, riga, 3) + self.lot13.addWidget(self.LDM_kom2_b, riga, 6) # riga +=1 - lot13.addWidget(self.LDM_kom1_rx, riga, 4) - lot13.addWidget(self.LDM_kom2_rx, riga, 7) + self.lot13.addWidget(self.LDM_kom1_rx, riga, 4) + self.lot13.addWidget(self.LDM_kom2_rx, riga, 7) # riga +=1 - lot13.addWidget(self.LDM_kom1_ry, riga, 5) - lot13.addWidget(self.LDM_kom2_ry, riga, 8) + self.lot13.addWidget(self.LDM_kom1_ry, riga, 5) + self.lot13.addWidget(self.LDM_kom2_ry, riga, 8) riga +=1 - lot13.addWidget(self.LDM_kom1_rel, riga, 3, 5, 3) - lot13.addWidget(self.LDM_kom2_rel, riga, 6, 5, 3) + self.lot13.addWidget(self.LDM_kom1_rel, riga, 3, 5, 3) + self.lot13.addWidget(self.LDM_kom2_rel, riga, 6, 5, 3) #10 timer #11 timex #12 diproi @@ -1162,10 +1178,10 @@ class MainWindow(QDialog): risposta_calendario = '' self.beamlineattiva.setText(risposta_calendario) self.linea = risposta_calendario -# if self.linea == 'LDM': -# self.tab13.show() -# else: -# self.tab13.hide() + if self.linea == 'LDM': + self.tab13.setEnabled(1) + else: + self.tab13.setEnabled(0) ####8 log try: risposta_archiviatore = sacco['archiviatore'].context @@ -1817,8 +1833,9 @@ class MainWindow(QDialog): self.feedbackstopothersauto.setStyleSheet("background-color: lightgray") ####4 decimation try: - tmp = sacco['decima1'].read_attributes(['DelayMode', 'StatusMode', 'Sequence']) + tmp = sacco['decima1'].read_attributes(['DelayMode', 'StatusMode', 'Sequence', 'DelayOffset']) self.deci1sequence_R.setText(str(tmp[2].value).replace('[', '').replace(']','').replace(' ', ', ')) + self.deci1offset_r.setText(str(tmp[3].value)) if tmp[0].value and not tmp[1].value: mod1 = 'Delay' elif not tmp[0].value and tmp[1].value: @@ -1828,8 +1845,9 @@ class MainWindow(QDialog): except: mod1 = 'unknown' try: - tmp = sacco['decima2'].read_attributes(['DelayMode', 'StatusMode', 'Sequence']) + tmp = sacco['decima2'].read_attributes(['DelayMode', 'StatusMode', 'Sequence', 'DelayOffset']) self.deci2sequence_R.setText(str(tmp[2].value).replace('[', '').replace(']','').replace(' ', ', ')) + self.deci2offset_r.setText(str(tmp[3].value)) if tmp[0].value and not tmp[1].value: mod2 = 'Delay' elif not tmp[0].value and tmp[1].value: @@ -1839,8 +1857,9 @@ class MainWindow(QDialog): except: mod2 = 'unknown' try: - tmp = sacco['decima3'].read_attributes(['DelayMode', 'StatusMode', 'Sequence']) + tmp = sacco['decima3'].read_attributes(['DelayMode', 'StatusMode', 'Sequence', 'DelayOffset']) self.deci3sequence_R.setText(str(tmp[2].value).replace('[', '').replace(']','').replace(' ', ', ')) + self.deci3offset_r.setText(str(tmp[3].value)) if tmp[0].value and not tmp[1].value: mod3 = 'Delay' elif not tmp[0].value and tmp[1].value: @@ -2331,44 +2350,44 @@ class MainWindow(QDialog): self.monitor_vacuum.setStyleSheet("background-color: rgb(0, 255, 0)") self.contienitab.setTabText(4, "Vacuum") ####12 ldm -# if self.contienitab.currentIndex() == 8: - try: - tmp = sacco['ldm_kom1'].read_attributes(['Position_X', 'Position_Y']) - self.LDM_kom1_rx.setText(str(round(tmp[0].value, 4))) - self.LDM_kom1_ry.setText(str(round(tmp[1].value, 4))) - except: - self.LDM_kom1_rx.setText('#####') - self.LDM_kom1_ry.setText('#####') - try: - tmp = sacco['ldm_kom2'].read_attributes(['Position_X', 'Position_Y']) - self.LDM_kom2_rx.setText(str(round(tmp[0].value, 4))) - except: - self.LDM_kom2_rx.setText('#####') - self.LDM_kom2_ry.setText('#####') - try: - self.LDM_rots1_r.setText(str(round(sacco['ldm_rots1'].UserPosition, 3))) - except: - self.LDM_rots1_r.setText('#####') - try: - self.LDM_rots2_r.setText(str(round(sacco['ldm_rots2'].UserPosition, 3))) - except: - self.LDM_rots2_r.setText('#####') - try: - self.LDM_rots3_r.setText(str(round(sacco['ldm_rots3'].UserPosition, 3))) - except: - self.LDM_rots3_r.setText('#####') - try: - self.LDM_trls2_r.setText(str(round(sacco['ldm_trls2'].UserPosition, 3))) - except: - self.LDM_trls2_r.setText('#####') - try: - self.LDM_feedback1_state.setText(str(sacco['ldm_fb1'].State())) - except: - self.LDM_feedback1_state.setText('#####') - try: - self.LDM_feedback2_state.setText(str(sacco['ldm_fb2'].State())) - except: - self.LDM_feedback2_state.setText('#####') + if self.contienitab.currentIndex() == 8: + try: + tmp = sacco['ldm_kom1'].read_attributes(['Position_X', 'Position_Y']) + self.LDM_kom1_rx.setText(str(round(tmp[0].value, 4))) + self.LDM_kom1_ry.setText(str(round(tmp[1].value, 4))) + except: + self.LDM_kom1_rx.setText('#####') + self.LDM_kom1_ry.setText('#####') + try: + tmp = sacco['ldm_kom2'].read_attributes(['Position_X', 'Position_Y']) + self.LDM_kom2_rx.setText(str(round(tmp[0].value, 4))) + except: + self.LDM_kom2_rx.setText('#####') + self.LDM_kom2_ry.setText('#####') + try: + self.LDM_rots1_r.setText(str(round(sacco['ldm_rots1'].UserPosition, 3))) + except: + self.LDM_rots1_r.setText('#####') + try: + self.LDM_rots2_r.setText(str(round(sacco['ldm_rots2'].UserPosition, 3))) + except: + self.LDM_rots2_r.setText('#####') + try: + self.LDM_rots3_r.setText(str(round(sacco['ldm_rots3'].UserPosition, 3))) + except: + self.LDM_rots3_r.setText('#####') + try: + self.LDM_trls2_r.setText(str(round(sacco['ldm_trls2'].UserPosition, 3))) + except: + self.LDM_trls2_r.setText('#####') + try: + self.LDM_feedback1_state.setText(str(sacco['ldm_fb1'].State())) + except: + self.LDM_feedback1_state.setText('#####') + try: + self.LDM_feedback2_state.setText(str(sacco['ldm_fb2'].State())) + except: + self.LDM_feedback2_state.setText('#####') if self.somethingred != 0: self.globallarm.setText('Alarm ON') self.globallarm.setStyleSheet("background-color: rgb(255, 0, 0)") @@ -2384,10 +2403,10 @@ class MainWindow(QDialog): self.linea = nuovalinea self.beamlineattiva.setText(str(self.linea)) self.autodeterminazionedeipupoli = 1 -# if self.linea == 'LDM': -# self.tab13.show() -# else: -# self.tab13.hide() + if self.linea == 'LDM': + self.tab13.show() + else: + self.tab13.hide() def apripss(self): os.system('/runtime/bin/laserpss -title Laser_safety_system &') @@ -3100,6 +3119,23 @@ class MainWindow(QDialog): sacco['triggerSL'].write_attribute(attribrutto, valore) csvfile.close() + def decioffset(self, chi): + if chi == 'decima1': + cosa = self.deci1offset_w.text() + elif chi == 'decima2': + cosa = self.deci2offset_w.text() + elif chi == 'decima3': + cosa = self.deci3offset_w.text() + try: + sacco[chi].write_attribute('DelayOffset', int(cosa)) + + except: + print('error ' + str(cosa)) + tmp = sacco[chi].InfiniteCycle + sacco[chi].write_attribute('InfiniteCycle', 0) + sacco[chi].write_attribute('InfiniteCycle', 1) + sacco[chi].write_attribute('InfiniteCycle', tmp) + def apridalaytotem(self): os.system('/runtime/bin/motion_controller slu/motor/trls_slu.05 -title SLU_TOTEM_DELAY_LINE &') -- GitLab