From 7167d02613e3ba02638a35919bdf281c00dce6a0 Mon Sep 17 00:00:00 2001 From: Markus Zolliker Date: Wed, 11 Feb 2026 13:38:12 +0100 Subject: [PATCH] add ioClass to many module classes + add converted mb11_cfg.py Change-Id: Ic985fc16b5ce39caacbf1f3abd87b13b1e7c2da7 --- cfg/main/mb11_cfg.py | 230 +++++++++++++++++++---------------------- frappy_psi/SR830.py | 1 + frappy_psi/bkpower.py | 2 + frappy_psi/bridge.py | 1 + frappy_psi/k2601b.py | 3 + frappy_psi/ls370res.py | 2 + frappy_psi/mercury.py | 1 + frappy_psi/ppms.py | 1 + frappy_psi/pulse.py | 1 + frappy_psi/tdkpower.py | 2 + 10 files changed, 121 insertions(+), 123 deletions(-) diff --git a/cfg/main/mb11_cfg.py b/cfg/main/mb11_cfg.py index 77f0b962..8864fe3f 100644 --- a/cfg/main/mb11_cfg.py +++ b/cfg/main/mb11_cfg.py @@ -1,211 +1,195 @@ -Node('mb11.psi.ch', - 'MB11 11 Tesla - 100 mm cryomagnet', -) +# please edit this file with frappy edit -Mod('itc1', - 'frappy_psi.mercury.IO', - 'ITC for heat exchanger and pressures', - uri='mb11-ts:3001', -) +doc="""MB11 11 Tesla - 100 mm cryomagnet -Mod('itc2', - 'frappy_psi.mercury.IO', - 'ITC for neck and nv heaters', - uri='mb11-ts:3002', -) +after conversion with frappy edit +""" +Node('mb11.psi.ch', doc, + interface='tcp://10767', + ) -Mod('ips', - 'frappy_psi.mercury.IO', - 'IPS for magnet and levels', - uri='mb11-ts:3003', -) +IO('itc1', 'mb11-ts:3001') + +IO('itc2', 'mb11-ts:3002') + +IO('ips', 'mb11-ts:3003') Mod('T_stat', 'frappy_psi.mercury.TemperatureAutoFlow', 'static heat exchanger temperature', - meaning=['temperature_regulation', 27], - output_module='htr_stat', - needle_valve='p_stat', - slot='DB6.T1', - io='itc1', - tolerance=0.1, - flowpars=((1,5), (2, 20)), -) + meaning = ('temperature_regulation', 27), + output_module = 'htr_stat', + needle_valve = 'p_stat', + slot = 'DB6.T1', + io = 'itc1', + tolerance = 0.1, + flowpars = ((1, 5), (2, 20)), + ) Mod('htr_stat', 'frappy_psi.mercury.HeaterOutput', 'static heat exchanger heater', - slot='DB1.H1', - io='itc1', -) + slot = 'DB1.H1', + io = 'itc1', + ) Mod('p_stat', 'frappy_psi.mercury.PressureLoop', 'static needle valve pressure', - output_module='pos_stat', - settling_time=60.0, - slot='DB5.P1', - io='itc1', - tolerance=1.0, - value=Param( - unit='mbar_flow', - ), -) + output_module = 'pos_stat', + settling_time = 60, + slot = 'DB5.P1', + io = 'itc1', + tolerance = 1, + value = Param(unit='mbar_flow'), + ) Mod('pos_stat', 'frappy_psi.mercury.ValvePos', 'static needle valve position', - slot='DB5.P1,DB3.G1', - io='itc1', -) + slot = 'DB5.P1,DB3.G1', + io = 'itc1', + ) Mod('T_dyn', 'frappy_psi.mercury.TemperatureAutoFlow', 'dynamic heat exchanger temperature', - output_module='htr_dyn', - needle_valve='p_dyn', - slot='DB7.T1', - io='itc1', - tolerance=0.1, -) + output_module = 'htr_dyn', + needle_valve = 'p_dyn', + slot = 'DB7.T1', + io = 'itc1', + tolerance = 0.1, + ) Mod('htr_dyn', 'frappy_psi.mercury.HeaterOutput', 'dynamic heat exchanger heater', - slot='DB2.H1', - io='itc1', -) + slot = 'DB2.H1', + io = 'itc1', + ) Mod('p_dyn', 'frappy_psi.mercury.PressureLoop', 'dynamic needle valve pressure', - output_module='pos_dyn', - settling_time=60.0, - slot='DB8.P1', - io='itc1', - tolerance=1.0, - value=Param( - unit='mbar_flow', - ), -) + output_module = 'pos_dyn', + settling_time = 60, + slot = 'DB8.P1', + io = 'itc1', + tolerance = 1, + value = Param(unit='mbar_flow'), + ) Mod('pos_dyn', 'frappy_psi.mercury.ValvePos', 'dynamic needle valve position', - slot='DB8.P1,DB4.G1', - io='itc1', -) + slot = 'DB8.P1,DB4.G1', + io = 'itc1', + ) Mod('mf', 'frappy_psi.ips_mercury.Field', 'magnetic field', - slot='GRPZ', - io='ips', - tolerance=0.001, - wait_stable_field=60.0, - target=Param( - max=11.0, - ), - persistent_limit=11.1, -) + slot = 'GRPZ', + io = 'ips', + tolerance = 0.001, + wait_stable_field = 60, + target = Param(max=11), + persistent_limit = 11.1, + ) Mod('lev', 'frappy_psi.mercury.HeLevel', 'LHe level', - slot='DB1.L1', - io='ips', -) + slot = 'DB1.L1', + io = 'ips', + ) Mod('n2lev', 'frappy_psi.mercury.N2Level', 'LN2 level', - slot='DB1.L1', - io='ips', -) + slot = 'DB1.L1', + io = 'ips', + ) Mod('T_neck1', 'frappy_psi.mercury.TemperatureLoop', 'neck heater 1 temperature', - output_module='htr_neck1', - slot='MB1.T1', - io='itc2', - tolerance=1.0, -) + output_module = 'htr_neck1', + slot = 'MB1.T1', + io = 'itc2', + tolerance = 1, + ) Mod('htr_neck1', 'frappy_psi.mercury.HeaterOutput', 'neck heater 1 power', - slot='MB0.H1', - io='itc2', -) + slot = 'MB0.H1', + io = 'itc2', + ) Mod('T_neck2', 'frappy_psi.mercury.TemperatureLoop', 'neck heater 2 temperature', - output_module='htr_neck2', - slot='DB6.T1', - io='itc2', - tolerance=1.0, -) + output_module = 'htr_neck2', + slot = 'DB6.T1', + io = 'itc2', + tolerance = 1, + ) Mod('htr_neck2', 'frappy_psi.mercury.HeaterOutput', 'neck heater 2 power', - slot='DB1.H1', - io='itc2', -) + slot = 'DB1.H1', + io = 'itc2', + ) Mod('T_nvs', 'frappy_psi.mercury.TemperatureLoop', 'static needle valve temperature', - output_module='htr_nvs', - slot='DB7.T1', - io='itc2', - tolerance=0.1, -) + output_module = 'htr_nvs', + slot = 'DB7.T1', + io = 'itc2', + tolerance = 0.1, + ) Mod('htr_nvs', 'frappy_psi.mercury.HeaterOutput', 'static needle valve heater power', - slot='DB2.H1', - io='itc2', -) + slot = 'DB2.H1', + io = 'itc2', + ) Mod('T_nvd', 'frappy_psi.mercury.TemperatureLoop', 'dynamic needle valve heater temperature', - output_module='htr_nvd', - slot='DB8.T1', - io='itc2', - tolerance=0.1, -) + output_module = 'htr_nvd', + slot = 'DB8.T1', + io = 'itc2', + tolerance = 0.1, + ) Mod('htr_nvd', 'frappy_psi.mercury.HeaterOutput', 'dynamic needle valve heater power', - slot='DB3.H1', - io='itc2', -) + slot = 'DB3.H1', + io = 'itc2', + ) Mod('T_coil', 'frappy_psi.mercury.TemperatureSensor', 'coil temperature', - slot='MB1.T1', - io='ips', -) + slot = 'MB1.T1', + io = 'ips', + ) -Mod('om_io', - 'frappy_psi.phytron.PhytronIO', - 'dom motor IO', - uri='mb11-ts.psi.ch:3004', -) +IO('om_io', 'mb11-ts.psi.ch:3004') Mod('om', 'frappy_psi.phytron.Motor', 'stick rotation, typically used for omega', - io='om_io', - target_min=-360, - target_max=360, - encoder_mode='NO', - target=Param(min=-360, max=360), -) + io = 'om_io', + target_min = '-360', + target_max = '360', + encoder_mode = 'NO', + target = Param(min=-360, max=360), + ) \ No newline at end of file diff --git a/frappy_psi/SR830.py b/frappy_psi/SR830.py index cfa71bf7..4ef9cdb2 100644 --- a/frappy_psi/SR830.py +++ b/frappy_psi/SR830.py @@ -45,6 +45,7 @@ class SR830_IO(StringIO): class StanfRes(HasIO, Readable): + ioClass = SR830_IO def set_par(self, cmd, *args): """ Set parameter. diff --git a/frappy_psi/bkpower.py b/frappy_psi/bkpower.py index 7d9dc8ad..e75dbb3d 100644 --- a/frappy_psi/bkpower.py +++ b/frappy_psi/bkpower.py @@ -57,6 +57,7 @@ class IO(StringIO): class Power(HasIO, Readable): + ioClass = IO value = Parameter(datatype=FloatRange(0,300,unit='W')) def read_value(self): @@ -67,6 +68,7 @@ class Power(HasIO, Readable): class Output(HasIO, HasControlledBy, Writable): + ioClass = IO value = Parameter(datatype=FloatRange(0,100,unit='%'), default=0) target = Parameter(datatype=FloatRange(0,100,unit='%')) p_value = Parameter('?', datatype=FloatRange(0,100,unit='%'), default=0) diff --git a/frappy_psi/bridge.py b/frappy_psi/bridge.py index 71601057..ab466106 100644 --- a/frappy_psi/bridge.py +++ b/frappy_psi/bridge.py @@ -68,6 +68,7 @@ class BridgeIO(StringIO): class Base(HasIO): + ioClass = BridgeIO port = Property('modules port', IntRange(0, 15)) def communicate(self, command): diff --git a/frappy_psi/k2601b.py b/frappy_psi/k2601b.py index fc8c9d90..ddbf1638 100644 --- a/frappy_psi/k2601b.py +++ b/frappy_psi/k2601b.py @@ -50,6 +50,7 @@ SOURCECMDS = { class SourceMeter(HasIO, Module): + ioClass = K2601bIO export = False # export for tests only mode = Parameter('measurement mode', EnumType(off=0, current=1, voltage=2), readonly=False, export=False) @@ -107,6 +108,7 @@ class Resistivity(HasIO, Readable): class Current(HasIO, Writable): + ioClass = K2601bIO sourcemeter = Attached() value = Parameter('measured current', FloatRange(unit='A')) @@ -153,6 +155,7 @@ class Current(HasIO, Writable): class Voltage(HasIO, Writable): + ioClass = K2601bIO sourcemeter = Attached() value = Parameter('measured voltage', FloatRange(unit='V')) diff --git a/frappy_psi/ls370res.py b/frappy_psi/ls370res.py index 994ecc60..514a0599 100644 --- a/frappy_psi/ls370res.py +++ b/frappy_psi/ls370res.py @@ -64,6 +64,8 @@ def parse_result(reply): class LakeShoreIO(HasIO): + ioClass = StringIO + def set_param(self, cmd, *args): args = [f'{a:g}' for a in args] if ' ' in cmd.strip(): diff --git a/frappy_psi/mercury.py b/frappy_psi/mercury.py index a342a38e..bb772bd0 100644 --- a/frappy_psi/mercury.py +++ b/frappy_psi/mercury.py @@ -67,6 +67,7 @@ class IO(StringIO): class MercuryChannel(HasIO): + ioClass = IO slot = Property('comma separated slot id(s), e.g. DB6.T1', StringType()) kind = '' #: used slot kind(s) slots = () #: dict[] of diff --git a/frappy_psi/ppms.py b/frappy_psi/ppms.py index 98e48f8f..0311e8d6 100644 --- a/frappy_psi/ppms.py +++ b/frappy_psi/ppms.py @@ -114,6 +114,7 @@ class Main(Communicator): class PpmsBase(HasIO, Readable): """common base for all ppms modules""" + ioClass = Main value = Parameter(needscfg=False) status = Parameter(datatype=StatusType(Readable, 'DISABLED'), needscfg=False) diff --git a/frappy_psi/pulse.py b/frappy_psi/pulse.py index 7da67060..c8112b27 100644 --- a/frappy_psi/pulse.py +++ b/frappy_psi/pulse.py @@ -27,6 +27,7 @@ class PulseIO(StringIO): class Base(HasIO): + ioClass = PulseIO def set_source(self): """ diff --git a/frappy_psi/tdkpower.py b/frappy_psi/tdkpower.py index 71c09fe9..7bf20f1c 100644 --- a/frappy_psi/tdkpower.py +++ b/frappy_psi/tdkpower.py @@ -30,6 +30,7 @@ class IO(StringIO): class Power(HasIO, Readable): + ioClass = IO value = Parameter(datatype=FloatRange(0,3300,unit='W')) voltage = Parameter('voltage', FloatRange(0,8, unit='V')) current = Parameter('current', FloatRange(0,400, unit='A')) @@ -41,6 +42,7 @@ class Power(HasIO, Readable): class Output(HasIO, Writable): + ioClass = IO value = Parameter(datatype=FloatRange(0,100,unit='%'), default=0) target = Parameter(datatype=FloatRange(0,100,unit='%')) mode = Parameter('regulation mode', EnumType(voltage=1, current=2, both=3),