monitor BEAMREQ for UCN to better handle enabling-disenabling of sector STANDBY button; add PK1, PK2 to PK1, PK1 sector line (previously only IW was required)
This commit is contained in:
4
hush.sh
4
hush.sh
@@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
cd /hipa/bd/applications/hush/hla/2.1.0
|
||||
cd /hipa/bd/applications/hush/hla/2.1.1
|
||||
|
||||
# For use if script is sourced rather than executed
|
||||
appNameDefault="hush.sh"
|
||||
@@ -56,7 +56,7 @@ _EPICS_HOST_ARCH=${RHREL}-x86_64
|
||||
|
||||
#C_EXT version for Py 3.5, 3.7. 3.8, 3.10:
|
||||
|
||||
export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/hipa/bd/applications/deps/apps4ops/v1.10.0
|
||||
export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/hipa/bd/applications/deps/apps4ops/v1.11.0
|
||||
|
||||
echo $PYTHONPATH
|
||||
|
||||
|
||||
108
src/gui.py
108
src/gui.py
@@ -81,7 +81,7 @@ class AppGui(QWidget):
|
||||
self.table_pwr_dict = {}
|
||||
self.offtime_dict = {}
|
||||
|
||||
self.I_min = 1.0
|
||||
self.I_min = 1.0 #0.09 for testing
|
||||
self.with_rf = False
|
||||
|
||||
self.sec_state_list = ["ZIP2-HUSH:STATE", "ZIW2-HUSH:STATE",
|
||||
@@ -92,10 +92,16 @@ class AppGui(QWidget):
|
||||
self.cafe.open(["ZHIPA-HUSH:LASTPWR", "ZHIPA-HUSH:TOTPWR",
|
||||
"ZHIPA-HUSH:LASTSAVE", "ZHIPA-HUSH:TOTSAVE"])
|
||||
self.cafe.open(self.sec_state_list)
|
||||
self.cafe.open("UCN:BEAMREQ:STATUS")
|
||||
#self.cafe.open("UCNQ:BEAMREQ:STATUS")
|
||||
self.cafe.openNowAndWait(0.1)
|
||||
|
||||
self.cafe.monitor("UCNQ:BEAMREQ:STATUS")
|
||||
self.uncq_beam_req = self.cafe.getCache("UCNQ:BEAMREQ:STATUS")
|
||||
if self.uncq_beam_req is None:
|
||||
self.uncq_beam_req = "stopped"
|
||||
|
||||
self.beam_req_running = False \
|
||||
if self.uncq_beam_req == "stopped" else True
|
||||
#self.cafe.monitor("UCNQ:BEAMREQ:STATUS")
|
||||
|
||||
idx = self.settings.data["header"].index("IP2")
|
||||
self.sectorI_dict = {}
|
||||
@@ -158,8 +164,8 @@ class AppGui(QWidget):
|
||||
|
||||
ucn_line = ["PK1", "PK2", "UCN"]
|
||||
sinq_line = ["PK1", "PK2", "SINQ"]
|
||||
pk1_line = ["IW2"]
|
||||
pk2_line = ["IW2"]
|
||||
pk1_line = ["IW2", "PK1"]
|
||||
pk2_line = ["IW2", "PK1", "PK2"]
|
||||
|
||||
for sector in self.settings.data["header"][idx:]:
|
||||
gateway_indices = self.get_standby_index_list(sector)
|
||||
@@ -172,22 +178,49 @@ class AppGui(QWidget):
|
||||
idx].trigger_monitor_float.emit(
|
||||
pvd.value[0], pvd.status, pvd.alarmSeverity)
|
||||
|
||||
def enable_disable_ucn(sect, sector_line, value):
|
||||
|
||||
def enable_disable_ucn(sect, sector_line, value):
|
||||
self.sectorI_dict[sect] = value
|
||||
|
||||
'''
|
||||
beam_req_running = True
|
||||
beam_req_status = self.cafe.getCache("UCNQ:BEAMREQ:STATUS")
|
||||
#print(" beam_req_status", beam_req_status, flush=True)
|
||||
|
||||
if beam_req_status is not None:
|
||||
if beam_req_status == "stopped":
|
||||
beam_req_running = False
|
||||
|
||||
def is_beam_req_running():
|
||||
beam_req_running = True
|
||||
beam_req_status = self.uncq_beam_req #self.cafe.getCache("UCNQ:BEAMREQ:STATUS")
|
||||
|
||||
if beam_req_status is not None:
|
||||
if beam_req_status == "stopped":
|
||||
beam_req_running = False
|
||||
return beam_req_running
|
||||
'''
|
||||
|
||||
for sector in sector_line:
|
||||
beam_req_flag = True
|
||||
beam_req_flag = False
|
||||
|
||||
if sector == "UCN":
|
||||
beam_req_flag = beam_req_running
|
||||
|
||||
beam_req_flag = self.beam_req_running #is_beam_req_running()
|
||||
'''
|
||||
with self.lock:
|
||||
if not beam_req_flag:
|
||||
if not self.table_sol_dict[
|
||||
sector].init_value_button.isEnabled():
|
||||
self.table_sol_dict[
|
||||
sector].init_value_button.setEnabled(True)
|
||||
if not self.table_pwr_dict[
|
||||
sector].init_value_button.isEnabled():
|
||||
self.table_pwr_dict[
|
||||
sector].init_value_button.setEnabled(True)
|
||||
else:
|
||||
if self.table_sol_dict[
|
||||
sector].init_value_button.isEnabled():
|
||||
self.table_sol_dict[
|
||||
sector].init_value_button.setEnabled(False)
|
||||
if self.table_pwr_dict[
|
||||
sector].init_value_button.isEnabled():
|
||||
self.table_pwr_dict[
|
||||
sector].init_value_button.setEnabled(False)
|
||||
'''
|
||||
# if self.sectorI_dict['UCN'] > self.I_min or self.sectorI_dict[
|
||||
# 'SINQ'] > self.I_min:
|
||||
if self.sectorI_dict[sector] > self.I_min or beam_req_flag:
|
||||
@@ -195,7 +228,6 @@ class AppGui(QWidget):
|
||||
sector].standby_value_button.isEnabled():
|
||||
self.table_sol_dict[
|
||||
sector].standby_value_button.setEnabled(False)
|
||||
|
||||
else:
|
||||
if not self.table_sol_dict[
|
||||
sector].standby_value_button.isEnabled():
|
||||
@@ -220,9 +252,16 @@ class AppGui(QWidget):
|
||||
|
||||
def enable_disable_pk(sect, sector_line, value):
|
||||
self.sectorI_dict[sect] = value
|
||||
|
||||
#print("==>sector firing", sect, "with value", value)
|
||||
|
||||
for sector in sector_line:
|
||||
if self.sectorI_dict["PK1"] > self.I_min or self.sectorI_dict[
|
||||
"PK2"] > self.I_min:
|
||||
#print("sector", sector, "in line", sector_line,
|
||||
# "has value", self.sectorI_dict[sector]
|
||||
#)
|
||||
#if self.sectorI_dict["PK1"] > self.I_min or self.sectorI_dict[
|
||||
# "PK2"] > self.I_min:
|
||||
if self.sectorI_dict[sector] > self.I_min:
|
||||
if self.table_sol_dict[
|
||||
sector].standby_value_button.isEnabled():
|
||||
self.table_sol_dict[
|
||||
@@ -233,6 +272,18 @@ class AppGui(QWidget):
|
||||
self.table_sol_dict[
|
||||
sector].standby_value_button.setEnabled(True)
|
||||
|
||||
def receive_ucnq_update(value, status, alarm_severity):
|
||||
del status, alarm_severity
|
||||
self.uncq_beam_req = value
|
||||
print("self.uncq_beam_req", self.uncq_beam_req)
|
||||
self.beam_req_running = True
|
||||
if self.uncq_beam_req is not None:
|
||||
if self.uncq_beam_req == "stopped":
|
||||
self.beam_req_running = False
|
||||
|
||||
enable_disable_ucn("UCN", ucn_line, self.sectorI_dict["UCN"])
|
||||
|
||||
|
||||
def receive_ucn_update(value, status, alarm_severity):
|
||||
del status, alarm_severity
|
||||
enable_disable_ucn("UCN", ucn_line, value)
|
||||
@@ -249,6 +300,9 @@ class AppGui(QWidget):
|
||||
del status, alarm_severity
|
||||
enable_disable_pk("PK2", pk2_line, value)
|
||||
|
||||
self.gui_header.beam_current_wgt_dict[
|
||||
"UCNQ"].trigger_monitor_str.connect(receive_ucnq_update)
|
||||
|
||||
self.gui_header.beam_current_wgt_dict[
|
||||
"UCN"].trigger_monitor_float.connect(receive_ucn_update)
|
||||
self.gui_header.beam_current_wgt_dict[
|
||||
@@ -258,6 +312,11 @@ class AppGui(QWidget):
|
||||
self.gui_header.beam_current_wgt_dict[
|
||||
"PK2"].trigger_monitor_float.connect(receive_pk2_update)
|
||||
|
||||
pvd = self.cafe.getPV("UCNQ:BEAMREQ:STATUS")
|
||||
self.gui_header.beam_current_wgt_dict[
|
||||
"UCNQ"].trigger_monitor_str.emit(
|
||||
pvd.value[0], pvd.status, pvd.alarmSeverity)
|
||||
|
||||
# Not required any longer
|
||||
|
||||
@Slot(int, str, object)
|
||||
@@ -358,9 +417,17 @@ class AppGui(QWidget):
|
||||
val_now = self.sector_designated_magnet_values_dict[sector][pv]
|
||||
val_standby = self.sector_designated_magnet_standby_dict[sector][pv]
|
||||
#print(sector, val_now, val_standby)
|
||||
if abs(val_now) > (1.2 * abs(val_standby)):
|
||||
if sector == "UCN":
|
||||
is_standby = False
|
||||
break
|
||||
if not (abs(val_now) > (1.2 * abs(val_standby))):
|
||||
is_standby = True
|
||||
break
|
||||
else:
|
||||
if abs(val_now) > (1.2 * abs(val_standby)):
|
||||
is_standby = False
|
||||
break
|
||||
|
||||
|
||||
|
||||
with self.lock:
|
||||
if not is_standby:
|
||||
@@ -981,6 +1048,7 @@ class AppGui(QWidget):
|
||||
|
||||
hbox.setSpacing(10)
|
||||
hbox.setAlignment(Qt.AlignTop)
|
||||
|
||||
qw = QWidget()
|
||||
qw.setLayout(hbox)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user