add magnets.py and sfop.py

This commit is contained in:
2022-09-17 07:37:26 +02:00
parent 34f66bb446
commit 0b9bc44f14
2 changed files with 63 additions and 0 deletions

58
magnets.py Normal file
View File

@ -0,0 +1,58 @@
from slic.core.adjustable import Adjustable, PVAdjustable
from slic.core.device import SimpleDevice
class MagnetsScaler(Adjustable):
def __init__(self, ID="MAGNETS-SCALER", factor=1):
super().__init__(ID)
self.factor = factor
mag1 = Magnet("SINEG01-MSOL010")
# mag2 = Magnet("SINEG01-MSOL010")
self.magnets = SimpleDevice(
ID,
m1=mag1,
# m2=mag2
)
self._magnets = [
mag1,
# mag2
]
def get_current_value(self):
return self.factor
def set_target_value(self, factor):
old_factor = self.factor
self.factor = factor
print(old_factor, factor)
tasks = [] # we collect tasks to run in parallel, ...
for m in self._magnets:
current = m.get()
print(current, current / old_factor * factor)
t = m.set(current / old_factor * factor)
for t in tasks: # ... then we need to wait for all tasks to finish
t.wait()
def is_moving(self):
return any(m.is_moving() for m in self.magnets)
class Magnet(PVAdjustable):
def __init__(self, ID):
pvn_set = ID + ":I-SET"
pvn_read = ID + ":I-READ"
# pvn_comp = ID + ":I_COMP"
# super().__init__(pvn_set, pvn_read, pvname_moving=pvn_comp) # COMP updates only once per second, so we cannot use it.
super().__init__(pvn_set, pvn_read, accuracy=0.01)

5
sfop.py Normal file
View File

@ -0,0 +1,5 @@
from magnets import MagnetsScaler
mags = MagnetsScaler()