diff --git a/src/slu-delay-calculator.py b/src/slu-delay-calculator.py index 6dd37dd805fce2e2510a4a98ed83a0bf060c9b54..64f4897c6593aee3d4c8c5e6eb5122af6c5d8e76 100644 --- a/src/slu-delay-calculator.py +++ b/src/slu-delay-calculator.py @@ -21,6 +21,7 @@ devprodic["tmu"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/sl/timing/tmu_sl. devprodic["minimizzatore_correlazione"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/f/optimization/optimizer_sldelay_f.01") devprodic["feedbackelite1"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/sl/feedback/rtltf_osc.02") devprodic["totemdelay"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/slu/motor/trls_slu.05") +devprodic["scope6"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/sl/diagnostics/scope_sl.01") # imposto subito velocita` 100 per salvare tempo procedura devprodic["trls8"].write_attribute("Speed", [-100]) devprodic["trls4"].write_attribute("Speed", [100]) @@ -33,8 +34,8 @@ zero_Eos2 = 0 trlsEOS2pos = 0 trlsEOS1pos = 0 trlsSLUpos = 0 -deltaS1 = 203806.0 -deltaS2 = 202949.0 +deltaS1 = 203808.0 #203810.0 +deltaS2 = 203800.0 #202954.0 ####ns12 = 12.675074466 @@ -86,10 +87,8 @@ class MainWindow(QDialog): self.gruppodeltat.setLayout(lo_delta) # self.gruppobottoni = QGroupBox("") - self.apriscope3 = QPushButton('Open scope-laser-03') - self.apriscope3.clicked.connect(self.fapriscope3) - self.apriscope5 = QPushButton('Open scope-laser-05') - self.apriscope5.clicked.connect(self.fapriscope5) + self.apriscope = QPushButton('Open scope-laser-06') + self.apriscope.clicked.connect(self.fapriscope) self.apritrigger = QPushButton('Open Seed trigger panel') self.apritrigger.clicked.connect(self.fapritrigger) self.aprihdb = QPushButton('Open HDB') @@ -98,8 +97,7 @@ class MainWindow(QDialog): self.minimcorr.clicked.connect(self.switchdelayminimizer) self.feedbackelite1 = QPushButton("fb Elite1 in") lo_bottoni = QGridLayout() - lo_bottoni.addWidget(self.apriscope3, 0, 0, 1, 3) - lo_bottoni.addWidget(self.apriscope5, 1, 0, 1, 3) + lo_bottoni.addWidget(self.apriscope, 0, 0, 1, 3) lo_bottoni.addWidget(self.apritrigger, 2, 0, 1, 3) lo_bottoni.addWidget(self.aprihdb, 3, 0, 1, 3) lo_bottoni.addWidget(self.minimcorr, 4, 0, 1, 3) @@ -110,6 +108,11 @@ class MainWindow(QDialog): self.scritta1 = QLabel('0 state') self.scritta2 = QLabel('present state') self.scritta3 = QLabel('calculated') + self.enable_scope_measurament = QPushButton('Enable scope operation') + self.enable_scope_measurament.clicked.connect(self.dajediscope) + self.ddmeasure_seedpil_text = QLabel('Seed-Pil') + self.ddmeasure_slupil_text = QLabel('Slu-Pil') + self.ddmeasure_sluseed_text = QLabel('Slu-Seed') self.trls4_state = QPushButton("TRLS4") self.trls4_state.clicked.connect(self.apritrls4) self.trls8_state = QPushButton("TRLS8") @@ -124,6 +127,13 @@ class MainWindow(QDialog): self.trgS2_state.clicked.connect(self.fapritrigger) self.FundAlignment_state = QPushButton("TMU") self.FundAlignment_state.clicked.connect(self.fapritmu) + + self.ddmeasure_seedpil_iniziale = QLineEdit("") + self.ddmeasure_seedpil_iniziale.setStyleSheet("background-color: rgb(220, 220, 220)") + self.ddmeasure_slupil_iniziale = QLineEdit("") + self.ddmeasure_slupil_iniziale.setStyleSheet("background-color: rgb(220, 220, 220)") + self.ddmeasure_sluseed_iniziale = QLineEdit("") + self.ddmeasure_sluseed_iniziale.setStyleSheet("background-color: rgb(220, 220, 220)") self.trls4_iniziale = QLineEdit("") self.trls4_iniziale.setStyleSheet("background-color: rgb(220, 220, 220)") self.trls4_iniziale.setReadOnly(1) @@ -145,6 +155,13 @@ class MainWindow(QDialog): self.FundAlignment_iniziale = QLineEdit("") self.FundAlignment_iniziale.setStyleSheet("background-color: rgb(220, 220, 220)") self.FundAlignment_iniziale.setReadOnly(1) + + self.ddmeasure_seedpil_read = QLineEdit("") + self.ddmeasure_seedpil_read.setStyleSheet("background-color: rgb(220, 220, 220)") + self.ddmeasure_slupil_read = QLineEdit("") + self.ddmeasure_slupil_read.setStyleSheet("background-color: rgb(220, 220, 220)") + self.ddmeasure_sluseed_read = QLineEdit("") + self.ddmeasure_sluseed_read.setStyleSheet("background-color: rgb(220, 220, 220)") self.trls4_read = QLineEdit("") self.trls4_read.setStyleSheet("background-color: rgb(220, 220, 220)") self.trls4_read.setReadOnly(1) @@ -166,6 +183,9 @@ class MainWindow(QDialog): self.FundAlignment_read = QLineEdit("") self.FundAlignment_read.setStyleSheet("background-color: rgb(220, 220, 220)") self.FundAlignment_read.setReadOnly(1) + self.ddmeasure_seedpil_calcolato = QLineEdit("") + self.ddmeasure_slupil_calcolato = QLineEdit("") + self.ddmeasure_sluseed_calcolato = QLineEdit("") self.trls4_calcolato = QLineEdit("") self.trls8_calcolato = QLineEdit("") self.trgE1_calcolato = QLineEdit("") @@ -173,6 +193,9 @@ class MainWindow(QDialog): self.trgE2_calcolato = QLineEdit("") self.trgS2_calcolato = QLineEdit("") self.FundAlignment_calcolato = QLineEdit("") + + self.scope6clearswaps = QPushButton('ClearSweeps') + self.scope6clearswaps.clicked.connect(self.pulisci_oscilloscopio) self.trls4_applica = QPushButton('Apply') self.trls4_applica.clicked.connect(self.disastro_solotrls4) self.trls8_applica = QPushButton('Apply') @@ -211,6 +234,20 @@ class MainWindow(QDialog): lo_centrale.addWidget(self.scritta1, 0, 1) lo_centrale.addWidget(self.scritta2, 0, 2) lo_centrale.addWidget(self.scritta3, 0, 3) + lo_centrale.addWidget(self.enable_scope_measurament, 1, 0) + lo_centrale.addWidget(self.ddmeasure_seedpil_text, 2, 0) + lo_centrale.addWidget(self.ddmeasure_seedpil_iniziale, 2, 1) + lo_centrale.addWidget(self.ddmeasure_seedpil_read, 2, 2) + lo_centrale.addWidget(self.ddmeasure_seedpil_calcolato, 2, 3) + lo_centrale.addWidget(self.ddmeasure_slupil_text, 3, 0) + lo_centrale.addWidget(self.ddmeasure_slupil_iniziale, 3, 1) + lo_centrale.addWidget(self.ddmeasure_slupil_read, 3, 2) + lo_centrale.addWidget(self.ddmeasure_slupil_calcolato, 3, 3) + lo_centrale.addWidget(self.ddmeasure_sluseed_text, 4, 0) + lo_centrale.addWidget(self.ddmeasure_sluseed_iniziale, 4, 1) + lo_centrale.addWidget(self.ddmeasure_sluseed_read, 4, 2) + lo_centrale.addWidget(self.ddmeasure_sluseed_calcolato, 4, 3) + lo_centrale.addWidget(self.scope6clearswaps, 2, 4, 3, 1) lo_centrale.addWidget(self.trls4_state, 10, 0) lo_centrale.addWidget(self.trls4_iniziale, 10, 1) lo_centrale.addWidget(self.trls4_read, 10, 2) @@ -252,7 +289,6 @@ class MainWindow(QDialog): lo_centrale.addWidget(self.FundAlignment_read, 16, 2) lo_centrale.addWidget(self.FundAlignment_calcolato, 16, 3) lo_centrale.addWidget(self.FundAlignment_applica, 16, 4) - lo_centrale.addWidget(self.ripristina, 20, 1) lo_centrale.addWidget(self.applica, 20, 3) lo_centrale.addWidget(self.comenondetto, 20, 3) @@ -305,6 +341,7 @@ class MainWindow(QDialog): self.trgS2_storna.hide() self.FundAlignment_storna.hide() #inizializzazione - lettura parametri + self.oscilloscopioattivo = False try: self.zero_trls4 = devprodic["trls4"].Position[0] self.trls4_iniziale.setText(str(round(self.zero_trls4, 3))) @@ -386,7 +423,7 @@ class MainWindow(QDialog): ret = QMessageBox.warning(None, 'Speak with them, please', 'You are going to move the laser delay, please notify to control room.') #timer self.timer = QBasicTimer() - self.timer.start(500, self) + self.timer.start(1500, self) pass def timerEvent(self, event): @@ -399,6 +436,7 @@ class MainWindow(QDialog): ret = QMessageBox.warning(None, 'Trigger reference file', 'Do not forget to save the new trigger reference file!') def update(self): + tinizio = time.time() ###simulazione### #self.read_values_trls4_state = "ON" #self.read_values_trls4_position = -175.5 @@ -615,6 +653,60 @@ class MainWindow(QDialog): self.trgS1_read.setText(str(round(self.read_values_trg_S1_delay, 3)) + " ns") self.trgS2_read.setText(str(round(self.read_values_trg_S2_delay, 3)) + " ns") self.FundAlignment_read.setText(str(self.read_values_FundAlignment)) +# print('parziale ' + str(time.time() - tinizio)) + if self.oscilloscopioattivo: + [self.read_values_P1_avg, self.read_values_P1_sigma, self.read_values_P1_sweep] = self.lettura_oscilloscopio("P1") + if self.read_values_P1_sigma > 12 or self.read_values_P1_sigma == 0.0: + self.ddmeasure_seedpil_read.setStyleSheet("background-color: rgb(255, 0, 0)") + self.ddmeasure_seedpil_read.setText(str(self.read_values_P1_avg) + ' ns, sigma ' + str(self.read_values_P1_sigma) + ' ns') + elif 0.2 < self.read_values_P1_sigma < 12: + self.ddmeasure_seedpil_read.setStyleSheet("background-color: rgb(255, 255, 0)") + self.ddmeasure_seedpil_read.setText(str(self.read_values_P1_avg) + ' ns, sigma ' + str(self.read_values_P1_sigma) + ' ns') + elif self.read_values_P1_sigma < 0.2: + self.ddmeasure_seedpil_read.setStyleSheet("background-color: rgb(0, 255, 0)") + self.ddmeasure_seedpil_read.setText(str(self.read_values_P1_avg) + ' ns') + [self.read_values_P2_avg, self.read_values_P2_sigma, self.read_values_P2_sweep] = self.lettura_oscilloscopio("P2") + if self.read_values_P2_sigma > 12 or self.read_values_P2_sigma == 0.0: + self.ddmeasure_slupil_read.setStyleSheet("background-color: rgb(255, 0, 0)") + self.ddmeasure_slupil_read.setText(str(self.read_values_P2_avg) + ' ns, sigma ' + str(self.read_values_P2_sigma) + ' ns') + elif 0.2 < self.read_values_P2_sigma < 12: + self.ddmeasure_slupil_read.setStyleSheet("background-color: rgb(255, 255, 0)") + self.ddmeasure_slupil_read.setText(str(self.read_values_P2_avg) + ' ns, sigma ' + str(self.read_values_P2_sigma) + ' ns') + elif self.read_values_P2_sigma < 0.2: + self.ddmeasure_slupil_read.setStyleSheet("background-color: rgb(0, 255, 0)") + self.ddmeasure_slupil_read.setText(str(self.read_values_P2_avg) + ' ns') + [self.read_values_P3_avg, self.read_values_P3_sigma, self.read_values_P3_sweep] = self.lettura_oscilloscopio("P3") + if self.read_values_P3_sigma > 12 or self.read_values_P3_sigma == 0.0: + self.ddmeasure_sluseed_read.setStyleSheet("background-color: rgb(255, 0, 0)") + self.ddmeasure_sluseed_read.setText(str(self.read_values_P3_avg) + ' ns, sigma ' + str(self.read_values_P3_sigma) + ' ns') + elif 0.2 < self.read_values_P3_sigma < 12: + self.ddmeasure_sluseed_read.setStyleSheet("background-color: rgb(255, 255, 0)") + self.ddmeasure_sluseed_read.setText(str(self.read_values_P3_avg) + ' ns, sigma ' + str(self.read_values_P3_sigma) + ' ns') + elif self.read_values_P3_sigma < 0.2: + self.ddmeasure_sluseed_read.setStyleSheet("background-color: rgb(0, 255, 0)") + self.ddmeasure_sluseed_read.setText(str(self.read_values_P3_avg) + ' ns') + if self.read_values_P1_sigma > 1 or self.read_values_P2_sigma > 1 or self.read_values_P3_sigma > 1: + epilessia1 = (150 + np.random.random_integers(100), 150 + np.random.random_integers(100), 150 + np.random.random_integers(100)) + epilessia2 = (150 + np.random.random_integers(100), 150 + np.random.random_integers(100), 150 + np.random.random_integers(100)) + epilessia3 = (150 + np.random.random_integers(100), 150 + np.random.random_integers(100), 150 + np.random.random_integers(100)) + self.scope6clearswaps.setStyleSheet("background-color: rgb" + str(epilessia1) + "") + else: + self.scope6clearswaps.setStyleSheet("background-color: rgb(200, 200, 200)") + else: + self.ddmeasure_seedpil_read.setStyleSheet("background-color: rgb(200, 200, 200)") + self.ddmeasure_seedpil_read.setText('') + self.ddmeasure_slupil_read.setStyleSheet("background-color: rgb(200, 200, 200)") + self.ddmeasure_slupil_read.setText('') + self.ddmeasure_sluseed_read.setStyleSheet("background-color: rgb(200, 200, 200)") + self.ddmeasure_sluseed_read.setText('') + self.ddmeasure_seedpil_iniziale.setStyleSheet("background-color: rgb(200, 200, 200)") + self.ddmeasure_seedpil_iniziale.setText('') + self.ddmeasure_slupil_iniziale.setStyleSheet("background-color: rgb(200, 200, 200)") + self.ddmeasure_slupil_iniziale.setText('') + self.ddmeasure_sluseed_iniziale.setStyleSheet("background-color: rgb(200, 200, 200)") + self.ddmeasure_sluseed_iniziale.setText('') + self.scope6clearswaps.setStyleSheet("background-color: rgb(200, 200, 200)") +# print('finale ' + str(time.time() - tinizio)) pass def calcola(self): # muovi SLU @@ -628,6 +720,10 @@ class MainWindow(QDialog): print('SLU delay not a number') return ###calcolo### + if self.oscilloscopioattivo: + self.ddmeasure_seedpil_calcolato.setText(str(self.read_values_P1_avg)) + self.ddmeasure_slupil_calcolato.setText(str(self.read_values_P2_avg - delta_t)) + self.ddmeasure_sluseed_calcolato.setText(str(self.read_values_P3_avg - delta_t)) if (selettore >= 1 and selettore <= 4) or (selettore >= 5 and selettore <= 6): # elite1 x fel, elite2 x slu print('elite1 x fel, elite2 x slu') resto = (delta_t/12.675074466 - int(delta_t/12.675074466))*12.675074466 #ns, avanzo da dare in pasto ai traslatori @@ -934,6 +1030,7 @@ class MainWindow(QDialog): def disastro_soloS1trg(self): try: self.trgS1_old = devprodic["triggerS1"].command_inout('GetDelay', 2)*1000000000 + procedi = True except: self.funzionamento.setText('!! FAULT !!') self.funzionamento.setStyleSheet("background-color: rgb(255, 0, 0)") @@ -993,8 +1090,8 @@ class MainWindow(QDialog): def doppiodisastro_soloE2trg(self): devprodic["triggerEVR"].write_attribute('Chan2Delay', self.trgE2_old) tmp = devprodic["triggerEVR"].get_attribute_config_ex('Chan2Delay') - tmp[0].alarms.min_alarm = str(self.trgE1_old - 1) - tmp[0].alarms.max_alarm = str(self.trgE1_old + 1) + tmp[0].alarms.min_alarm = str(self.trgE2_old - 1) + tmp[0].alarms.max_alarm = str(self.trgE2_old + 1) devprodic["triggerEVR"].set_attribute_config(tmp) self.trgE2_applica.show() self.trgE2_storna.hide() @@ -1002,6 +1099,7 @@ class MainWindow(QDialog): def disastro_soloS2trg(self): try: self.trgS2_old = devprodic["triggerS2"].command_inout('GetDelay', 2)*1000000000 + procedi = True except: self.funzionamento.setText('!! FAULT !!') self.funzionamento.setStyleSheet("background-color: rgb(255, 0, 0)") @@ -1473,16 +1571,12 @@ class MainWindow(QDialog): os.system('/runtime/bin/xps sl/motor/trls_sl.08 -title SL_XPS_Elite1_line_"trls_sl.08" &') pass - def fapriscope3(self): - os.system('/usr/bin/vncviewer scope-laser-03 &') - pass - - def fapriscope5(self): - os.system('/usr/bin/vncviewer scope-laser-05 &') + def fapriscope(self): + os.system('/usr/bin/vncviewer scope-laser-06 &') pass def fapritrigger(self): - os.system('/usr/bin/python /home/lfo/runtime/panels/bin/sltriggerpanel.py &') + os.system('/runtime/bin/sl-trigger-gui &') pass def fapritmu(self): @@ -1503,6 +1597,65 @@ class MainWindow(QDialog): gol = devprodic["totemdelay"].Position - float(self.trls5_rel.text()) devprodic["totemdelay"].write_attribute('Position', gol) + def lettura_oscilloscopio(self, canale): + try: + testo = devprodic["scope6"].command_inout("GetParameter", canale) + testo1 = testo.split(',') + for sicurezza in range(len(testo1)): + if testo1[sicurezza] == 'AVG': + tmp_AVG = round(float(testo1[sicurezza + 1].replace('S','')) * 10E+8, 1) + if testo1[sicurezza] == 'SIGMA': + tmp_SIGMA = round(float(testo1[sicurezza + 1].replace('S','')) * 10E+8, 3) + if testo1[sicurezza] == 'SWEEPS': + tmp_SWEEPS = round(float(testo1[sicurezza + 1].replace('S','')), 1) + except: + tmp_AVG = 0 + tmp_SIGMA = 0 + tmp_SWEEPS = 0 + return tmp_AVG, tmp_SIGMA, tmp_SWEEPS + + def pulisci_oscilloscopio(self): + devprodic["scope6"].command_inout("ClearSweeps") + + def dajediscope(self): + if self.oscilloscopioattivo == False: + self.enable_scope_measurament.setText('Disable scope operation') + self.oscilloscopioattivo = True + self.timer.start(3200, self) + tmp = self.lettura_oscilloscopio("P1") + if tmp[1] > 12 or tmp[1] == 0: + self.ddmeasure_seedpil_iniziale.setStyleSheet("background-color: rgb(255, 0, 0)") + self.ddmeasure_seedpil_iniziale.setText(str(tmp[0]) + ' ns, sigma ' + str(tmp[1]) + ' ns') + elif 0.2 < tmp[1] < 12: + self.ddmeasure_seedpil_iniziale.setStyleSheet("background-color: rgb(255, 255, 0)") + self.ddmeasure_seedpil_iniziale.setText(str(tmp[0]) + ' ns, sigma ' + str(tmp[1]) + ' ns') + elif tmp[1] < 0.2: + self.ddmeasure_seedpil_iniziale.setStyleSheet("background-color: rgb(0, 255, 0)") + self.ddmeasure_seedpil_iniziale.setText(str(tmp[0]) + ' ns') + tmp = self.lettura_oscilloscopio("P2") + if tmp[1] > 12 or tmp[1] == 0: + self.ddmeasure_slupil_iniziale.setStyleSheet("background-color: rgb(255, 0, 0)") + self.ddmeasure_slupil_iniziale.setText(str(tmp[0]) + ' ns, sigma ' + str(tmp[1]) + ' ns') + elif 0.2 < tmp[1] < 12: + self.ddmeasure_slupil_iniziale.setStyleSheet("background-color: rgb(255, 255, 0)") + self.ddmeasure_slupil_iniziale.setText(str(tmp[0]) + ' ns, sigma ' + str(tmp[1]) + ' ns') + elif tmp[1] < 0.2: + self.ddmeasure_slupil_iniziale.setStyleSheet("background-color: rgb(0, 255, 0)") + self.ddmeasure_slupil_iniziale.setText(str(tmp[0]) + ' ns') + tmp = self.lettura_oscilloscopio("P3") + if tmp[1] > 12 or tmp[1] == 0: + self.ddmeasure_sluseed_iniziale.setStyleSheet("background-color: rgb(255, 0, 0)") + self.ddmeasure_sluseed_iniziale.setText(str(tmp[0]) + ' ns, sigma ' + str(tmp[1]) + ' ns') + elif 0.2 < tmp[1] < 12: + self.ddmeasure_sluseed_iniziale.setStyleSheet("background-color: rgb(255, 255, 0)") + self.ddmeasure_sluseed_iniziale.setText(str(tmp[0]) + ' ns, sigma ' + str(tmp[1]) + ' ns') + elif tmp[1] < 0.2: + self.ddmeasure_sluseed_iniziale.setStyleSheet("background-color: rgb(0, 255, 0)") + self.ddmeasure_sluseed_iniziale.setText(str(tmp[0]) + ' ns') + elif self.oscilloscopioattivo == True: + self.oscilloscopioattivo = False + self.enable_scope_measurament.setText('Enable scope operation') + self.timer.start(1000, self) if __name__ == '__main__': app = QApplication([])