continued devel temperature device

This commit is contained in:
Holler Mirko
2024-09-05 15:35:17 +02:00
committed by wakonig_k
parent c9a1fd1cd6
commit a1eacdf54b
+116
View File
@@ -14,8 +14,12 @@ class OMNYTemperaturesError(Exception):
class OMNYTemperatures(Device):
USER_ACCESS = [
"if_temperature_controller_used_get_name_and_values",
"set_setpoint",
"show_all",
"help",
"_set_TEMP_default_setpoints",
"temperature_controller_TEMP_running",
"temperature_controller_CRYO_running",
]
SUB_VALUE = "value"
_default_sub = SUB_VALUE
@@ -46,6 +50,29 @@ class OMNYTemperatures(Device):
}
temperature_names = Dcpt(temperature_names)
temperature_update_time = Cpt(
EpicsSignal, name="temperature_update_time", read_pv="XOMNY-TEMP:UPDATED.VAL"
)
cryo_temperature = {
f"cryo_temperature{i}": (EpicsSignal, f"XOMNY-TEMP-CRYO-{chr(i+ord('A')-1)}:GET.VAL", {}) for i in range(1,5)
}
cryo_temperature = Dcpt(cryo_temperature)
cryo_temperature_setpoint = {
f"cryo_temperature_setpoint{i}": (EpicsSignal, f"XOMNY-TEMP-CRYO-{chr(i+ord('A')-1)}:SET.VAL", {}) for i in range(1,5)
}
cryo_temperature_setpoint = Dcpt(cryo_temperature_setpoint)
cryo_temperature_name = {
f"cryo_temperature_name{i}": (EpicsSignal, f"XOMNY-TEMP-CRYO-{chr(i+ord('A')-1)}:GET.DESC", {}) for i in range(1,5)
}
cryo_temperature_name = Dcpt(cryo_temperature_name)
cryo_temperature_update_time = Cpt(
EpicsSignal, name="cryo_temperature_update_time", read_pv="XOMNY-TEMP-CRYO:UPDATED.VAL"
)
def __init__(self, prefix="", *, name, **kwargs):
super().__init__(prefix, name=name, **kwargs)
self.temperature.temperature1.subscribe(self._emit_value)
@@ -55,6 +82,84 @@ class OMNYTemperatures(Device):
self.wait_for_connection()
self._run_subs(sub_type=self.SUB_VALUE, timestamp=timestamp, obj=self)
def set_setpoint(self, type: str, controller_nr: int, temperature: float):
if type == "TEMP":
getattr(self.temperature_setpoint, f"temperature_setpoint{controller_nr}").set(temperature)
def _set_TEMP_default_setpoints(self):
self.set_setpoint("TEMP",8,-199.9)
time.sleep(0.1)
self.set_setpoint("TEMP",9,23)
time.sleep(0.1)
self.set_setpoint("TEMP",10,73.2)
time.sleep(0.1)
self.set_setpoint("TEMP",16,-199.9)
time.sleep(0.1)
self.set_setpoint("TEMP",17,23)
time.sleep(0.1)
self.set_setpoint("TEMP",18,26)
time.sleep(0.1)
self.set_setpoint("TEMP",19,26)
time.sleep(0.1)
self.set_setpoint("TEMP",20,26)
time.sleep(0.1)
self.set_setpoint("TEMP",21,23)
time.sleep(0.1)
self.set_setpoint("TEMP",22,-199.9)
time.sleep(0.1)
self.set_setpoint("TEMP",23,-199.9)
time.sleep(0.1)
self.set_setpoint("TEMP",24,-199.9)
time.sleep(0.1)
self.set_setpoint("TEMP",25,25)
time.sleep(0.1)
self.set_setpoint("TEMP",27,25)
time.sleep(0.1)
self.set_setpoint("TEMP",28,73.2)
time.sleep(0.1)
self.set_setpoint("TEMP",29,73.2)
time.sleep(0.1)
self.set_setpoint("TEMP",30,73.2)
time.sleep(0.1)
self.set_setpoint("TEMP",31,73.2)
time.sleep(0.1)
self.set_setpoint("TEMP",35,25)
time.sleep(0.1)
self.set_setpoint("TEMP",36,25)
time.sleep(0.1)
self.set_setpoint("TEMP",37,25)
time.sleep(0.1)
self.set_setpoint("TEMP",38,73.2)
time.sleep(0.1)
self.set_setpoint("TEMP",39,73.2)
time.sleep(0.1)
self.set_setpoint("TEMP",41,30)
time.sleep(0.1)
self.set_setpoint("TEMP",42,25)
time.sleep(0.1)
self.set_setpoint("TEMP",44,25)
time.sleep(0.1)
self.set_setpoint("TEMP",45,-199.9)
time.sleep(0.1)
self.set_setpoint("TEMP",46,73.2)
time.sleep(0.1)
self.set_setpoint("TEMP",47,73.2)
time.sleep(0.1)
def temperature_controller_TEMP_running(self):
time_diff = float(self.temperature_update_time.get()) - time.time()
if time_diff > 600:
return False
else:
return True
def temperature_controller_CRYO_running(self):
time_diff = float(self.cryo_temperature_update_time.get()) - time.time()
if time_diff > 600:
return False
else:
return True
def if_temperature_controller_used_get_name_and_values(self, type: str, controller_nr: int) -> bool:
if type == "TEMP":
controller_name = str(getattr(self.temperature_names, f"temperature_name{controller_nr}").get())
@@ -90,6 +195,9 @@ class OMNYTemperatures(Device):
# t.header = False
# t.vrules = FRAME
# print(t)
red = "\x1b[91m"
green = "\x1b[92m"
white = "\x1b[0m"
t = PrettyTable()
t.clear()
t.title = "OMNY Temperature Controllers"
@@ -114,6 +222,14 @@ class OMNYTemperatures(Device):
t.header = True
t.vrules = FRAME
print(t)
if not self.temperature_controller_TEMP_running():
print (red + "Warning: the temperature controller communication is broken" + white)
for i in range(1,5):
print(float(getattr(self.cryo_temperature, f"cryo_temperature{i}").get()))
if not self.temperature_controller_CRYO_running():
print (red + "Warning: the temperature controller communication is broken" + white)
print("Use dev.omny_temperatures.help() for assistance.")