From 1f89eda5f86ae5812777a2a9ad00567221770e55 Mon Sep 17 00:00:00 2001
From: "paolo.cinquegrana@elettra.eu" <paolo.cinquegrana@elettra.eu>
Date: Wed, 8 Jan 2025 15:47:31 +0100
Subject: [PATCH] aggiunto watchdog SDG SLU e sue funzioni

---
 src/SluSourceMonitor.py | 57 ++++++++++++++++++++++++++++++++++++-----
 1 file changed, 51 insertions(+), 6 deletions(-)

diff --git a/src/SluSourceMonitor.py b/src/SluSourceMonitor.py
index 7c61d47..24804cd 100644
--- a/src/SluSourceMonitor.py
+++ b/src/SluSourceMonitor.py
@@ -47,10 +47,6 @@ try:
     sacco['kom5'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/motor/kom_slu.04')
     sacco['kom6'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/motor/kom_slu.03')
     sacco['rots2'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/motor/rots_slu.02')
-    sacco['vuoto1'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/slu/vacuum/vgpi_slu_utdr.01')
-    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')
@@ -64,6 +60,7 @@ 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['watchdogSDG'] = PyTango.DeviceProxy('srv-tango-srf-01:20000/sl/sequence/delay_sdgslu_sl.01')
     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')
@@ -226,6 +223,8 @@ class MainWindow(QDialog):
         self.monitor_tempera= LineEditRO()
         self.monitor_loglabel = QLabel("Log")
         self.monitor_log = LineEditRO()
+        self.monitor_delaylabel = QLabel("Delay")
+        self.monitor_delay = LineEditRO()
         self.monitor_letturashutterlaser = LineEditRO()
         self.monitor_letturashutterbeamline = LineEditRO()
         self.monitor_abilitatoshutterlaser = LineEditRO()
@@ -247,7 +246,9 @@ class MainWindow(QDialog):
         lot1.addWidget(self.monitor_tempera, 4, 1)
         lot1.addWidget(self.monitor_loglabel, 5, 0)
         lot1.addWidget(self.monitor_log, 5, 1)
-        lot1.addWidget(QVLine(), 0, 2, 6, 1)
+        lot1.addWidget(self.monitor_delaylabel, 6, 0)
+        lot1.addWidget(self.monitor_delay, 6, 1)
+        lot1.addWidget(QVLine(), 0, 2, 7, 1)
         lot1.addWidget(QLabel("Main Shutter:"), 0, 3)
         lot1.addWidget(self.monitor_letturashutterlaser, 0, 4)
         lot1.addWidget(self.monitor_abilitatoshutterlaser, 0, 5)
@@ -614,6 +615,17 @@ class MainWindow(QDialog):
         self.memo_mag_W.clicked.connect(self.memoriaMAGw)
         self.salvatrigger = QPushButton('Save trigger')
         self.salvatrigger.clicked.connect(self.funzionesalvatrigger)
+        self.sdg_watchdog = QPushButton('SDG watchdog')
+        self.sdg_watchdog.clicked.connect(self.apriwdsdg)
+        self.sdg_watchdogR = LineEditRO()
+        self.sdg_watchdogON = QPushButton('ON')
+        self.sdg_watchdogON.clicked.connect(self.ONwdsdg)
+        self.sdg_watchdogOFF = QPushButton('OFF')
+        self.sdg_watchdogOFF.clicked.connect(self.OFFwdsdg)
+        self.sdg_watchdogINIT = QPushButton('OFF/INIT')
+        self.sdg_watchdogINIT.clicked.connect(self.INITwdsdg)
+        self.sdg_watchdogACK = QPushButton('Reset fault')
+        self.sdg_watchdogACK.clicked.connect(self.ACKwdsdg)
         riga = 0
         lot5.addWidget(QLabel('SLU delay calculator'), riga, 2, 1, 2)
         lot5.addWidget(self.scope6apri, riga, 5, 1, 3)
@@ -659,6 +671,12 @@ class MainWindow(QDialog):
         lot5.addWidget(self.triggerDGQ1RELm, riga, 5)
         lot5.addWidget(self.triggerDGQ1RELp, riga, 7)
         riga += 1
+        lot5.addWidget(self.sdg_watchdog, riga, 0)
+        lot5.addWidget(self.sdg_watchdogR, riga, 1)
+        lot5.addWidget(self.sdg_watchdogON, riga, 2)
+        lot5.addWidget(self.sdg_watchdogACK, riga, 3)
+        lot5.addWidget(self.sdg_watchdogINIT, riga, 4)
+        riga += 1
         lot5.addWidget(self.delay8, riga, 0)
         lot5.addWidget(self.delay8R, riga, 1)
         lot5.addWidget(self.delay8ABS, riga, 2)
@@ -2081,6 +2099,18 @@ class MainWindow(QDialog):
             risposta_trgsdg = -1
             self.triggerDGQ1R.setText(str(round(risposta_trgsdg, 3)) + ' ns')
             self.triggerDGQ1R.setStyleSheet("background-color: #ff0000")
+        try:
+            tmp = str(sacco['watchdogSDG'].State())
+        except:
+            tmp = 'unknown'
+        self.monitor_delay.setText('Watchdog ' + tmp)
+        self.sdg_watchdogR.setText(tmp)
+        if tmp == 'RUNNING':
+            self.monitor_delay.setStyleSheet("background-color: #00ff00")
+            self.sdg_watchdogR.setStyleSheet("background-color: #00ff00")
+        else:
+            self.monitor_delay.setStyleSheet("background-color: #ff0000")
+            self.sdg_watchdogR.setStyleSheet("background-color: #ff0000")
 ####6 vuoto
         pompaccesa = 0
         valvolaperta = 0
@@ -3108,7 +3138,7 @@ class MainWindow(QDialog):
         os.system("/runtime/bin/sl-decimators-gui &")
 
     def apriscope6(self):
-        os.system('/usr/bin/vncviewer scope-laser-03 &')
+        os.system('/usr/bin/vncviewer scope-laser-06 &')
 
     def accendidecimatore(self, chi, metodo):
         if metodo == 'random':
@@ -3278,6 +3308,21 @@ class MainWindow(QDialog):
         gol = sacco['triggerDGQ1'].Chan2Delay + tmp
         sacco['triggerDGQ1'].write_attribute('Chan2Delay', gol)
 
+    def apriwdsdg(self):
+        os.system('/usr/local/tango-9.3.3/bin/atkpanel sl/sequence/delay_sdgslu_sl.01 &')
+
+    def ONwdsdg(self):
+        sacco['watchdogSDG'].Start()
+
+    def OFFwdsdg(self):
+        sacco['watchdogSDG'].Stop()
+
+    def INITwdsdg(self):
+        sacco['watchdogSDG'].Init()
+
+    def ACKwdsdg(self):
+        sacco['watchdogSDG'].Acknowledge()
+
     def calcoladelayslu(self):
         delta_t = float(self.delaycalcS.text())
         sacco['trls8_delay'].write_attribute('Speed', 100)
-- 
GitLab