From c6c72ee38399fe33922b61fa1a61d90bedc5d01d Mon Sep 17 00:00:00 2001 From: "paolo.cinquegrana@elettra.eu" <paolo.cinquegrana@elettra.eu> Date: Fri, 27 May 2022 11:30:33 +0200 Subject: [PATCH] corretta funzione salvataggio trigger --- src/SluDelayCalculator.py | 238 +++++++++++++++++++++++++++++++++++++- 1 file changed, 236 insertions(+), 2 deletions(-) diff --git a/src/SluDelayCalculator.py b/src/SluDelayCalculator.py index d681ff3..0f80218 100644 --- a/src/SluDelayCalculator.py +++ b/src/SluDelayCalculator.py @@ -8,6 +8,7 @@ from PyQt4.QtCore import * from PyQt4.QtGui import * import time import sys +import csv selettore = PyTango.DeviceProxy("srv-tango-srf-01:20000/sl/laser/calendar_sl.01").activityNum @@ -19,6 +20,8 @@ devprodic["triggerEVR"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/ec-sl-slps devprodic["triggerEVR2"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/ec-sl-slpsr-01/evr/ff200000") devprodic["triggerS1"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/sl/delay/dgq_slpsr.02") devprodic["triggerS2"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/sl/delay/dgq_slpsr.01") +devprodic["sdg1"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/sl/delay/sdg_slr.01") +devprodic["sdg2"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/sl/delay/sdg_slr.02") devprodic["tmu"] = PyTango.DeviceProxy("srv-tango-srf-01:20000/sl/timing/tmu_sl.01") 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") @@ -45,6 +48,7 @@ zeroS2_fel1 = devprodic["costanti"].offset_fel1_sdg2 #con tmufundalignment -1, t zeroS1_fel2 = devprodic["costanti"].offset_fel2_sdg1 #con tmufundalignment -1, trls 0, trls8 0 zeroS2_fel2 = devprodic["costanti"].offset_fel2_sdg2 #con tmufundalignment -1, trls 0, trls8 0 + ####ns12 = 12.675074466 ####ns6 = 6.337537233 @@ -913,12 +917,242 @@ class MainWindow(QDialog): for file in os.listdir(sonoin): if file.endswith(".csv"): indice = indice +1 - os.system('python /home/lfo/runtime/panels/bin/slsavetrigger.py &') - time.sleep(5) + nomefile = '/home/lfo/data/salvatutto/SEED_trigger/' + str(indice+1) + '.csv' + listaEVR1 = [0, 1, 2, 3, 8, 9, 10, 11, 12, 13] + listaDGQ1 = [1, 2, 3, 4, 5, 6, 7, 8] + listaSDG1 = [1, 2] + listaEVR2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] + listaDGQ2 = [1, 2, 3, 4, 5, 6, 7, 8] + listaSDG2 = [1, 2] + datidasalvare = [] + nomidasalvare = [] + #leggo dati + tmp = devprodic["triggerEVR"].ChanDelay + for corridore in range(len(tmp)): + if corridore in listaEVR1: + nomidasalvare.append("EVR1 " + str(corridore)) + datidasalvare.append(tmp[corridore]) + for corridore in range(len(listaDGQ1)): + tmp = devprodic["triggerS2"].command_inout('GetDelay', listaDGQ1[corridore]) + nomidasalvare.append("DGQ1 " + str(corridore+1)) + datidasalvare.append(str(tmp)) + tmp = devprodic["sdg1"].Channel1Delay + nomidasalvare.append("SDG1 1") + datidasalvare.append(str(tmp)) + tmp = devprodic["sdg1"].Channel2Delay + nomidasalvare.append("SDG1 2") + datidasalvare.append(str(tmp)) + for corridore in range(len(listaDGQ2)): + tmp = devprodic["triggerS1"].command_inout('GetDelay', listaDGQ2[corridore]) + nomidasalvare.append("DGQ2 " + str(corridore+1)) + datidasalvare.append(str(tmp)) + tmp = devprodic["sdg2"].Channel1Delay + nomidasalvare.append("SDG2 1") + datidasalvare.append(str(tmp)) + tmp = devprodic["sdg2"].Channel2Delay + nomidasalvare.append("SDG2 2") + datidasalvare.append(str(tmp)) + tmp = devprodic["triggerEVR2"].ChanDelay + for corridore in range(len(tmp)): + if corridore in listaEVR2: + nomidasalvare.append("EVR2 " + str(corridore)) + datidasalvare.append(tmp[corridore]) + #verifico che tutti i numeri siano numeri + collettorediproblemi = 0 + for corridore in range(len(datidasalvare)): + try: + a = float(datidasalvare[corridore]) + if a == -1: + collettorediproblemi = 1 + except: + print('!!!!!!!!!!!!!!!') + print(nomidasalvare[corridore] + ' ' + datidasalvare[corridore]) + collettorediproblemi = 1 + if collettorediproblemi == 0: # se non ci sono problemi creo nuovo file e lo riempio + print('tutto ok') + #salvo nuovo file + with open(nomefile, 'w', newline='') as csvfile: + spamwriter = csv.writer(csvfile) + for ind in range(len(datidasalvare)): + riga = [nomidasalvare[ind], str(datidasalvare[ind])] + spamwriter.writerow(riga) + csvfile.close() + QMessageBox.warning(None, 'Save SEED trigger', 'file saved: ' + nomefile) + else: + QMessageBox.warning(None, 'Save SEED trigger', 'problems reading 1 or more delays. please try again') + + # sistemo eventuali allarmi + # EVR1 + for corridore in range(len(listaEVR1)): + print('EVR1 ch' + str(corridore)) + applicalo =0 + lettura = eval('devprodic["triggerEVR"].Chan' + str(listaEVR1[corridore]) + 'Delay') + altro = eval('devprodic["triggerEVR"].get_attribute_config_ex("Chan' + str(listaEVR1[corridore]) + 'Delay")') + if altro[0].alarms.min_alarm != str(float(lettura) - 1.0): + altro[0].alarms.min_alarm = str(float(lettura) - 1.0) + applicalo = 1 + if altro[0].alarms.max_alarm != str(float(lettura) + 1.0): + altro[0].alarms.max_alarm = str(float(lettura) + 1.0) + applicalo = 1 + if altro[0].alarms.min_warning != 'Not specified': + altro[0].alarms.min_warning = 'Not specified' + applicalo = 1 + if altro[0].alarms.max_warning != 'Not specified': + altro[0].alarms.max_warning = 'Not specified' + applicalo = 1 + if applicalo == 1: + devprodic["triggerEVR"].set_attribute_config(altro) + print('alarm updated') + time.sleep(0.1) + # EVR2 + for corridore in range(len(listaEVR2)): + print('EVR2 ch' + str(corridore)) + applicalo =0 + lettura = eval('devprodic["triggerEVR2"].Chan' + str(listaEVR2[corridore]) + 'Delay') + altro = eval('devprodic["triggerEVR2"].get_attribute_config_ex("Chan' + str(listaEVR2[corridore]) + 'Delay")') + if altro[0].alarms.min_alarm != str(float(lettura) - 1.0): + altro[0].alarms.min_alarm = str(float(lettura) - 1.0) + applicalo = 1 + if altro[0].alarms.max_alarm != str(float(lettura) + 1.0): + altro[0].alarms.max_alarm = str(float(lettura) + 1.0) + applicalo = 1 + if altro[0].alarms.min_warning != 'Not specified': + altro[0].alarms.min_warning = 'Not specified' + applicalo = 1 + if altro[0].alarms.max_warning != 'Not specified': + altro[0].alarms.max_warning = 'Not specified' + applicalo = 1 + if applicalo == 1: + devprodic["triggerEVR2"].set_attribute_config(altro) + print('alarm updated') + time.sleep(0.1) + # DGQ1 + for corridore in range(len(listaDGQ1)): + print('DGQ1 ch' + str(corridore)) + applicalo =0 + lettura = eval('devprodic["triggerS2"].Chan' + str(listaDGQ1[corridore]) + 'Delay') + altro = eval('devprodic["triggerS2"].get_attribute_config_ex("Chan' + str(listaDGQ1[corridore]) + 'Delay")') + if altro[0].alarms.min_alarm != str(float(lettura) - 1.0): + altro[0].alarms.min_alarm = str(float(lettura) - 1.0) + applicalo = 1 + if altro[0].alarms.max_alarm != str(float(lettura) + 1.0): + altro[0].alarms.max_alarm = str(float(lettura) + 1.0) + applicalo = 1 + if altro[0].alarms.min_warning != 'Not specified': + altro[0].alarms.min_warning = 'Not specified' + applicalo = 1 + if altro[0].alarms.max_warning != 'Not specified': + altro[0].alarms.max_warning = 'Not specified' + applicalo = 1 + if applicalo == 1: + devprodic["triggerS2"].set_attribute_config(altro) + print('alarm updated') + time.sleep(0.2) + # DGQ2 + for corridore in range(len(listaDGQ2)): + print('DGQ2 ch' + str(corridore)) + applicalo =0 + lettura = eval('devprodic["triggerS1"].Chan' + str(listaDGQ2[corridore]) + 'Delay') + altro = eval('devprodic["triggerS1"].get_attribute_config_ex("Chan' + str(listaDGQ2[corridore]) + 'Delay")') + if altro[0].alarms.min_alarm != str(float(lettura) - 1.0): + altro[0].alarms.min_alarm = str(float(lettura) - 1.0) + applicalo = 1 + if altro[0].alarms.max_alarm != str(float(lettura) + 1.0): + altro[0].alarms.max_alarm = str(float(lettura) + 1.0) + applicalo = 1 + if altro[0].alarms.min_warning != 'Not specified': + altro[0].alarms.min_warning = 'Not specified' + applicalo = 1 + if altro[0].alarms.max_warning != 'Not specified': + altro[0].alarms.max_warning = 'Not specified' + applicalo = 1 + if applicalo == 1: + devprodic["triggerS1"].set_attribute_config(altro) + print('alarm updated') + time.sleep(0.2) + # SDG1 + applicalo =0 + print('SDG1') + lettura = devprodic["sdg1"].Channel1Delay + altro = devprodic["sdg1"].get_attribute_config_ex('Channel1Delay') + if altro[0].alarms.min_alarm != str(float(lettura) - 1.0): + altro[0].alarms.min_alarm = str(float(lettura) - 1.0) + applicalo = 1 + if altro[0].alarms.max_alarm != str(float(lettura) + 1.0): + altro[0].alarms.max_alarm = str(float(lettura) + 1.0) + applicalo = 1 + if altro[0].alarms.min_warning != 'Not specified': + altro[0].alarms.min_warning = 'Not specified' + applicalo = 1 + if altro[0].alarms.max_warning != 'Not specified': + altro[0].alarms.max_warning = 'Not specified' + applicalo = 1 + if applicalo == 1: + devprodic["sdg1"].set_attribute_config(altro) + print('alarm updated') + time.sleep(0.2) + applicalo =0 + lettura = devprodic["sdg1"].Channel2Delay + altro = devprodic["sdg1"].get_attribute_config_ex('Channel2Delay') + if altro[0].alarms.min_alarm != str(float(lettura) - 1.0): + altro[0].alarms.min_alarm = str(float(lettura) - 1.0) + applicalo = 1 + if altro[0].alarms.max_alarm != str(float(lettura) + 1.0): + altro[0].alarms.max_alarm = str(float(lettura) + 1.0) + applicalo = 1 + if altro[0].alarms.min_warning != 'Not specified': + altro[0].alarms.min_warning = 'Not specified' + applicalo = 1 + if altro[0].alarms.max_warning != 'Not specified': + altro[0].alarms.max_warning = 'Not specified' + applicalo = 1 + if applicalo == 1: + devprodic["sdg1"].set_attribute_config(altro) + print('alarm updated') + # SDG1 + applicalo =0 + print('SDG2') + lettura = devprodic["sdg2"].Channel1Delay + altro = devprodic["sdg2"].get_attribute_config_ex('Channel1Delay') + if altro[0].alarms.min_alarm != str(float(lettura) - 1.0): + altro[0].alarms.min_alarm = str(float(lettura) - 1.0) + applicalo = 1 + if altro[0].alarms.max_alarm != str(float(lettura) + 1.0): + altro[0].alarms.max_alarm = str(float(lettura) + 1.0) + applicalo = 1 + if altro[0].alarms.min_warning != 'Not specified': + altro[0].alarms.min_warning = 'Not specified' + applicalo = 1 + if altro[0].alarms.max_warning != 'Not specified': + altro[0].alarms.max_warning = 'Not specified' + applicalo = 1 + if applicalo == 1: + devprodic["sdg2"].set_attribute_config(altro) + time.sleep(0.2) + applicalo =0 + lettura = devprodic["sdg2"].Channel2Delay + altro = devprodic["sdg2"].get_attribute_config_ex('Channel2Delay') + if altro[0].alarms.min_alarm != str(float(lettura) - 1.0): + altro[0].alarms.min_alarm = str(float(lettura) - 1.0) + applicalo = 1 + if altro[0].alarms.max_alarm != str(float(lettura) + 1.0): + altro[0].alarms.max_alarm = str(float(lettura) + 1.0) + applicalo = 1 + if altro[0].alarms.min_warning != 'Not specified': + altro[0].alarms.min_warning = 'Not specified' + applicalo = 1 + if altro[0].alarms.max_warning != 'Not specified': + altro[0].alarms.max_warning = 'Not specified' + applicalo = 1 + if applicalo == 1: + devprodic["sdg2"].set_attribute_config(altro) + #verifica indice1 = 0 for file in os.listdir(sonoin): if file.endswith(".csv"): indice1 = indice1 +1 + print(indice) + print(indice1) if indice1 > indice: self.lanciasalvatrigger.setStyleSheet("background-color: rgb(0, 255, 0)") else: -- GitLab