updates to move motors in/out
CI for pxii_bec / test (push) Successful in 30s

This commit is contained in:
x10sa
2026-01-28 16:54:46 +01:00
parent 22ed9b6fad
commit 36135faba7
3 changed files with 904 additions and 694 deletions
File diff suppressed because it is too large Load Diff
+39 -42
View File
@@ -218,7 +218,7 @@ class Target:
def actual(self):
return self.reader()
def checkpos(self):
def checkin(self):
return abs(self.actual - self.inpos) <= self.tol
def mvin(self):
@@ -227,46 +227,43 @@ class Target:
def mvout(self):
scans.umv(self.mot, self.outpos, relative = False)
@dataclass
class GroupTarget:
def __init__(self, **targets: Target):
self.targets = targets
def checkpos(self):
return all(t.checkpos() for t in self.targets.values())
def report(self):
return {name: t.checkpos() for name, t in self.targets.items()}
@dataclass(frozen=True)
@dataclass (frozen=True)
class SE:
"""Define settings for scintillator, collimator, i1"""
scin = Target(0.0, 0.0, 0.1, dev.scin_y, lambda: dev.scin_y.read()['scin_y']['value'])
i1 = Target(0.0, 0.0, 0.2, dev.scin_y, lambda: dev.scin_y.read()['scin_y']['value'])
colly = Target(0.0, 0.0, 0.05, dev.coll_y, lambda: dev.coll_y.read()['coll_y']['value'])
bsy = Target(0.0, 0, 0.05, dev.bs_y, lambda: dev.bs_y.read()['bs_y']['value'])
bsx = Target(0.0, 0.0, 0.05, dev.bs_x, lambda: dev.bs_x.read()['bs_x']['value'])
blpos = Target(0.0, 0.0, 0.0, dev.blight_pos, lambda: dev.blight_pos.read()['blight_pos']['value'])
bspos = Target(0.0, 0.0, 0.0, dev.bs_pos, lambda: dev.bs_pos.read()['bs_pos']['value'])
# cryopos = Target(1, 0, 0, dev.cryo_pos, lambda: dev.cryo_pos.read()['cryo_pos']['value'])
# xrfpos = Target(1, 0, 0, dev.xrf_pos, lambda: dev.xrf_pos.read()['xrf_pos']['value'])
# coll = GroupTarget(
# x = Target(0.0517, 0.0517, 0.02, dev.coll_x, lambda: dev.coll_x.read()['coll_x']['value']),
# y = Target(41.5, 20.0, 0.05, dev.coll_y, lambda: dev.coll_y.read()['coll_y']['value']),
# )
# bs = GroupTarget(
# x = Target(2.65, 2.65, 0.05, dev.bs_x, lambda: dev.bs_x.read()['bs_x']['value']),
# y = Target(0.1, 0.1, 0.05, dev.bs_y, lambda: dev.bs_y.read()['bs_y']['value'])
# )
"""sample environment positions"""
pass
def build_se(yaml_file):
with open(yaml_file) as f:
data = yaml.safe_load(f)
for name, cfg in data.items():
# Skip devices without userParameter
user = cfg.get("userParameter")
if not user:
continue
# # Set tolerance
if "tol" not in user:
user["tol"] = 0.01
try:
dev_obj = getattr(dev, name)
except:
raise KeyError(f"Device {name} not found in device list")
@classmethod
def load_positions(cls, filename: str):
with open(filename) as f:
data = yaml.safe_load(f)
for name, pos in data.items():
if not hasattr(cls, name):
raise KeyError(f"Unknown motor '{name}' in {filename}")
target = getattr(cls, name)
target.inpos = pos["in"]
target.outpos = pos["out"]
target = Target(
inpos=user["in"],
outpos=user["out"],
tol=user["tol"],
mot=dev_obj,
reader=lambda d=dev_obj, n=name: d.read()[n]["value"],
)
setattr(SE, name, target)
def init_sample_env():
file = "/sls/x10sa/config/bec/production/pxii_bec/pxii_bec/device_configs/pxii-autogenerated.yaml"
build_se(file)
print("Motor in/out positions updated from values in device_config yaml")
-27
View File
@@ -1,27 +0,0 @@
scin:
in: 38.62
out: 20.0
i1:
in: 44.0
out: 20.0
colly:
in: 41.5
out: 20.0
bsy:
in: 0.1
out: -0.9
bsx:
in: 2.45
out: 2.45
blpos:
in: 1
out: 0
bspos:
in: 1
out: 0