working on lockin (SR)

Change-Id: Ia8dc71bf1029feaa66614ade0f8e9e99358f142e
This commit is contained in:
Oksana Shliakhtun
2023-05-31 13:38:44 +02:00
parent 564620e9e3
commit 0771cb6899
2 changed files with 28 additions and 31 deletions

View File

@ -85,8 +85,8 @@ class XY(HasIO, Readable):
return c_ind return c_ind
def comm(self, cmd): def comm(self, cmd):
reply, status, overload = self.communicate(cmd).split(b';') reply, status, overload = self.communicate(cmd).split(';')
if overload != b'0': if overload != '0':
self.status = (self.Status.WARN, f'overload {overload}') self.status = (self.Status.WARN, f'overload {overload}')
self.status = (self.Status.IDLE, '') self.status = (self.Status.IDLE, '')
return reply return reply

View File

@ -18,7 +18,7 @@
# Module authors: # Module authors:
# Oksana Shliakhtun <oksana.shliakhtun@psi.ch> # Oksana Shliakhtun <oksana.shliakhtun@psi.ch>
# ***************************************************************************** # *****************************************************************************
""" RUFS Command: Description of Bits """ Table of status bits (see 'RUFS' command)
====== ======================================================== ============================================== ====== ======================================================== ==============================================
Value Description Value Description
@ -86,6 +86,29 @@ class ThermFishIO(StringIO):
class SensorA10(HasIO, Readable): class SensorA10(HasIO, Readable):
ioClass = ThermFishIO ioClass = ThermFishIO
value = Parameter('internal temperature', unit='degC') value = Parameter('internal temperature', unit='degC')
status_messages = [
(ERROR, 'high tempr. cutout fault', 2, 0),
(ERROR, 'high RA tempr. fault', 2, 1),
(ERROR, 'high temperature fixed fault', 3, 7),
(ERROR, 'low temperature fixed fault', 3, 6),
(ERROR, 'high temperature fault', 3, 5),
(ERROR, 'low temperature fault', 3, 4),
(ERROR, 'low level fault', 3, 3),
(ERROR, 'circulator fault', 4, 5),
(ERROR, 'high press. cutout', 5, 2),
(ERROR, 'motor overloaded', 5, 1),
(ERROR, 'pump speed fault', 5, 0),
(WARN, 'open internal sensor', 1, 7),
(WARN, 'shorted internal sensor', 1, 6),
(WARN, 'high temperature warn', 3, 2),
(WARN, 'low temperature warn', 3, 1),
(WARN, 'low level warn', 3, 0),
(IDLE, 'max. heating', 5, 5),
(IDLE, 'heating', 5, 6),
(IDLE, 'cooling', 5, 4),
(IDLE, 'max cooling', 5, 3),
(IDLE, '', 4, 3),
]
def get_par(self, cmd): def get_par(self, cmd):
""" """
@ -112,37 +135,11 @@ class SensorA10(HasIO, Readable):
result_str = self.communicate('RUFS') # read unit fault status result_str = self.communicate('RUFS') # read unit fault status
values_str = result_str.strip().split() values_str = result_str.strip().split()
values_int = [int(val) for val in values_str] values_int = [int(val) for val in values_str]
v1, v2, v3, v4, v5 = values_int #[:5]
status_messages = [ for status_type, status_msg, vi, bit in self.status_messages:
(ERROR, 'high tempr. cutout fault', 2, 0),
(ERROR, 'high RA tempr. fault', 2, 1),
(ERROR, 'high temperature fixed fault', 3, 7),
(ERROR, 'low temperature fixed fault', 3, 6),
(ERROR, 'high temperature fault', 3, 5),
(ERROR, 'low temperature fault', 3, 4),
(ERROR, 'low level fault', 3, 3),
(ERROR, 'circulator fault', 4, 5),
(ERROR, 'high press. cutout', 5, 2),
(ERROR, 'motor overloaded', 5, 1),
(ERROR, 'pump speed fault', 5, 0),
(WARN, 'open internal sensor', 1, 7),
(WARN, 'shorted internal sensor', 1, 6),
(WARN, 'high temperature warn', 3, 2),
(WARN, 'low temperature warn', 3, 1),
(WARN, 'low level warn', 3, 0),
(IDLE, 'max. heating', 5, 5),
(IDLE, 'heating', 5, 6),
(IDLE, 'cooling', 5, 4),
(IDLE, 'max cooling', 5, 3),
(IDLE, '', 4, 3),
]
for status_type, status_msg, vi, bit in status_messages:
if values_int[vi-1] & (1 << bit): if values_int[vi-1] & (1 << bit):
print(status_type, status_msg, vi, bit)
return status_type, status_msg return status_type, status_msg
return WARN, 'circulation off' return WARN, 'circulation off'
class TemperatureLoopA10(SensorA10, Drivable): class TemperatureLoopA10(SensorA10, Drivable):