Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip

This commit is contained in:
zolliker 2023-05-02 16:35:50 +02:00
commit e2c51b3dd1
780 changed files with 38280 additions and 57949 deletions

View File

@ -1,2 +1,2 @@
SECoP playground for creating specification and testing one implementation.
Frappy framework for implementing SEC-nodes (see SECoP protocol on github).

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
frappydemo.PID
log/*
html/*
*.pyc

8
.isort.cfg Normal file
View File

@ -0,0 +1,8 @@
[settings]
multi_line_output=2
combine_as_imports=True
known_qt=frappy.gui.qt
known_core=frappy
sections=FUTURE,STDLIB,QT,THIRDPARTY,CORE,FIRSTPARTY,LOCALFOLDER

View File

@ -3,12 +3,18 @@
all: clean doc
# Make spawns a new shell for each command.
# Save each PID in temporary file
# sleep in order for "test" to have started reliably
demo:
@bin/secop-server -q demo &
@bin/secop-server -q test &
@bin/secop-server -q cryo &
@bin/secop-gui localhost:10767 localhost:10768 localhost:10769
@ps aux|grep [s]ecop-server|awk '{print $$2}'|xargs kill
@rm -f frappydemo.PID || true
@{ bin/frappy-server -q demo & echo $$! >> frappydemo.PID; }
@{ bin/frappy-server -q test & echo $$! >> frappydemo.PID; }
@{ bin/frappy-server -q cryo & echo $$! >> frappydemo.PID; }
@sleep 0.2
@bin/frappy-gui localhost:10767 localhost:10768 localhost:10769
@cat frappydemo.PID | xargs kill || true
@rm frappydemo.PID
build:
python3 setup.py build
@ -32,18 +38,18 @@ test-verbose:
python3 $(shell which pytest) -v test -s
test-coverage:
python3 $(shell which pytest) -v test --cov=secop
python3 $(shell which pytest) -v test --cov=frappy
doc:
$(MAKE) -C doc html
lint:
pylint -f colorized -r n --rcfile=.pylintrc secop secop_* test
pylint -f colorized -r n --rcfile=.pylintrc frappy frappy_* test
isort:
@find test -name '*.py' -print0 | xargs -0 isort -e -m 2 -w 80 -ns __init__.py
@find secop -name '*.py' -print0 | xargs -0 isort -e -m 2 -w 80 -ns __init__.py
@find . -wholename './secop_*.py' -print0 | xargs -0 isort -e -m 2 -w 80 -ns __init__.py
@find frappy -name '*.py' -print0 | xargs -0 isort -e -m 2 -w 80 -ns __init__.py
@find . -wholename './frappy_*.py' -print0 | xargs -0 isort -e -m 2 -w 80 -ns __init__.py
release-patch:
MODE="patch" $(MAKE) release
@ -55,7 +61,7 @@ release-major:
MODE="major" $(MAKE) release
release:
ssh jenkinsng.admin.frm2 -p 29417 build -v -s -p GERRIT_PROJECT=$(shell git config --get remote.origin.url | rev | cut -d '/' -f -3 | rev) -p ARCH=all -p MODE=$(MODE) ReleasePipeline
ssh jenkins.admin.frm2.tum.de -p 29417 build -v -s -p GERRIT_PROJECT=$(shell git config --get remote.origin.url | rev | cut -d '/' -f -2 | rev) -p ARCH=all -p MODE=$(MODE) ReleasePipeline
build-pkg:

View File

@ -29,8 +29,8 @@ from os import path
# Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
from secop.gui.qt import QApplication
from secop.gui.cfg_editor.mainwindow import MainWindow
from frappy.gui.qt import QApplication
from frappy.gui.cfg_editor.mainwindow import MainWindow
def main(argv=None):
@ -40,7 +40,7 @@ def main(argv=None):
app = QApplication(argv)
window = MainWindow(args.file)
window.show()
return app.exec_()
return app.exec()
if __name__ == '__main__':

102
bin/frappy-cli Executable file
View File

@ -0,0 +1,102 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# *****************************************************************************
# Copyright (c) 2015-2016 by the authors, see LICENSE
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Module authors:
# Alexander Lenz <alexander.lenz@frm2.tum.de>
# Markus Zolliker <markus.zolliker@psi.ch>
#
# *****************************************************************************
import sys
import argparse
from os import path
# Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
from frappy.client.interactive import Client, Console, clientenv, run
def parseArgv(argv):
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--include',
help='file to execute after connecting to the clients', metavar='file',
type=str, action='append', default=[])
parser.add_argument('-o', '--only-execute',
help='Do not go into interactive mode after executing files. \
Has no effect without --include.', action='store_true')
parser.add_argument('node',
help='Nodes the client should connect to.\n', metavar='host:port',
nargs='*', type=str, default=[])
return parser.parse_args(argv)
USAGE = """
Usage:
{client_assign}
# for all SECoP modules objects are created in the main namespace
<module> # list all parameters
<module>.<param> = <value> # change parameter
<module>(<target>) # set target and wait until not busy
# 'status' and 'value' changes are shown every 1 sec
{client_name}.mininterval = 0.2 # change minimal update interval to 0.2 s (default is 1 s)
watch(T) # watch changes of T.status and T.value (stop with ctrl-C)
watch(T='status target') # watch status and target parameters
watch(io, T=True) # watch io and all parameters of T
{tail}"""
args = parseArgv(sys.argv[1:])
if not args.node:
usage_args = {
'client_assign': "\ncli = Client('localhost:5000')\n",
'client_name': 'cli'}
success = True
else:
usage_args = {
'client_assign': '',
'client_name': '_c0'}
success = False
clientenv.init()
for idx, node in enumerate(args.node):
client_name = '_c%d' % idx
try:
clientenv.namespace[client_name] = Client(node, name=client_name)
success = True
except Exception as e:
print(repr(e))
run_error = ''
file_success = False
try:
for file in args.include:
run(file)
file_success = True
except Exception as e:
run_error = f'\n{clientenv.short_traceback()}'
if success:
if args.include and file_success and args.only_execute:
print('skipping interactive mode')
exit()
print(USAGE.format(tail=run_error, **usage_args))
Console()

View File

@ -26,45 +26,53 @@
from __future__ import print_function
import sys
import argparse
from os import path
# Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
import mlzlog
import logging
from mlzlog import ColoredConsoleHandler
from secop.gui.qt import QApplication
from secop.gui.mainwindow import MainWindow
from frappy.gui.qt import QApplication
from frappy.gui.mainwindow import MainWindow
def parseArgv(argv):
parser = argparse.ArgumentParser()
loggroup = parser.add_mutually_exclusive_group()
loggroup.add_argument('-d', '--debug',
help='Enable debug output',
action='store_true', default=False)
loggroup.add_argument('-q', '--quiet',
help='Supress everything but errors',
action='store_true', default=False)
parser.add_argument('node',
help='Nodes the Gui should connect to.\n', metavar='host[:port]',
nargs='*', type=str, default=[])
return parser.parse_args(argv)
def main(argv=None):
if argv is None:
argv = sys.argv
if '-h' in argv or '--help' in argv:
print("Usage: secop-gui [-d] [-h] [host:[port]]")
print()
print("Option GNU long option Meaning")
print("-h --help Show this message")
print("-d --debug Enable debug output")
print()
print("if not given, host defaults to 'localhost' and port to 10767")
sys.exit(0)
args = parseArgv(argv[1:])
if '-d' in argv or '--debug' in argv:
mlzlog.initLogging('gui', 'debug')
else:
mlzlog.initLogging('gui', 'info')
loglevel = logging.DEBUG if args.debug else (logging.ERROR if args.quiet else logging.INFO)
logger = logging.getLogger('gui')
logger.setLevel(logging.DEBUG)
console = ColoredConsoleHandler()
console.setLevel(loglevel)
logger.addHandler(console)
app = QApplication(argv)
hosts = [host for host in argv[1:] if not host.startswith('-')]
if not hosts:
hosts = ['localhost:10767']
win = MainWindow(hosts)
win = MainWindow(args.node, logger)
app.aboutToQuit.connect(win._onQuit)
win.show()
return app.exec_()
return app.exec()
if __name__ == '__main__':

36
secop_psi/ls340res.py → bin/frappy-play Normal file → Executable file
View File

@ -1,6 +1,8 @@
#!/usr/bin/env python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# *****************************************************************************
# Copyright (c) 2015-2016 by the authors, see LICENSE
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
@ -17,29 +19,21 @@
#
# Module authors:
# Markus Zolliker <markus.zolliker@psi.ch>
#
# *****************************************************************************
"""very simple LakeShore Model 340 driver, resistivity only"""
import time
import sys
from os import path
from secop.datatypes import StringType, FloatRange
from secop.modules import Parameter, Property, Readable
from secop.io import HasIO, StringIO
# Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
from frappy.client.interactive import Console
from frappy.playground import play, USAGE
class LscIO(StringIO):
identification = [('*IDN?', 'LSCI,MODEL340,.*')]
end_of_line = '\r'
wait_before = 0.05
if len(sys.argv) > 1:
play(sys.argv[1])
else:
print(USAGE)
class ResChannel(HasIO, Readable):
"""temperature channel on Lakeshore 340"""
ioClass = LscIO
value = Parameter(datatype=FloatRange(unit='Ohm'))
channel = Property('the channel A,B,C or D', StringType())
def read_value(self):
return float(self.communicate('SRDG?%s' % self.channel))
Console('play', sys.modules['__main__'].__dict__)

View File

@ -30,9 +30,9 @@ from os import path
# Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
from secop.lib import generalConfig
from secop.logging import logger
from secop.server import Server
from frappy.lib import generalConfig
from frappy.logging import logger
from frappy.server import Server
def parseArgv(argv):
@ -90,8 +90,9 @@ def main(argv=None):
args = parseArgv(argv[1:])
loglevel = 'debug' if args.verbose else ('error' if args.quiet else 'info')
generalConfig.defaults = {k: args.relaxed for k in (
'lazy_number_validation', 'disable_value_range_check', 'legacy_hasiodev', 'tolerate_poll_property')}
generalConfig.set_default('lazy_number_validation', args.relaxed)
generalConfig.set_default('legacy_hasiodev', args.relaxed)
generalConfig.set_default('tolerate_poll_property', args.relaxed)
generalConfig.init(args.gencfg)
logger.init(loglevel)

174
bin/secop-convert Executable file
View File

@ -0,0 +1,174 @@
#!/usr/bin/env python3
# pylint: disable=invalid-name
# -*- coding: utf-8 -*-
# *****************************************************************************
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Module authors:
# Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
# Alexander Lenz <alexander.lenz@frm2.tum.de>
#
# *****************************************************************************
import sys
from os import path
# Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
from secop.lib import generalConfig
from secop.logging import logger
from secop.server import Server
from secop.core import Attached
from secop.lib.enum import EnumMember
def rep(value):
if isinstance(value, EnumMember):
return repr(value.name)
return repr(value)
def guess(value):
try:
return '%.16g' % float(value)
except (TypeError, ValueError):
return rep(value)
def triplequote(description):
if '\n' in description:
return "'''%s'''" % '\n '.join(description.split('\n'))
else:
return repr(description)
def get_value(modobj, pname, value):
prop = modobj.propertyDict.get(pname)
if isinstance(prop, Attached):
return value
clsname = type(modobj).__qualname__
if pname in {'extra_modules', 'single_module', 'rel_paths', 'json_file'} and clsname.startswith('Sea'):
return value.split()
if pname == 'extra_params' and clsname.startswith('Sim'):
return [v.strip() for v in value.split(',')]
if pname == 'remote_class' and type(modobj).__bases__[0].__name__.startswith('Proxy'):
return value
return getattr(modobj, pname)
generalConfig.defaults = {k: True for k in (
'lazy_number_validation', 'disable_value_range_check', 'legacy_hasiodev', 'tolerate_poll_property')}
generalConfig.init()
logger.init('off')
def main(cfgs):
stats = {}
for name in cfgs:
try:
content = []
srv = Server(name, logger.log, cfgfiles=name, interface=5000, testonly=True)
if srv.node_cfg.get('class') is not None:
stats[name] = 'skip router'
continue
if 'FRAPPY' in srv.module_cfg:
stats[name] = 'skip genconfig'
continue
for modname, params in srv.module_cfg.items():
classname = params['class']
if classname == 'secop_psi.sea.SeaClient':
params['uri'] = 'none'
if 'iodev' in params:
params['io'] = params.pop('iodev')
if '.iodev' in params:
params['io'] = params.pop('.iodev')
node = dict(srv.node_cfg)
if 'description' in node:
content.append('Node(%r,\n %s,' % (node.pop('id'), triplequote(node.pop('description'))))
interface = srv.interface_cfg.get('uri')
if interface:
content.append(' interface=%r,' % interface)
for k, v in node.items():
content.append(' %s=%s,' % (k, guess(v)))
content.append(')\n')
errors = srv._processCfg()
if errors:
content = ['# %s' % e[:120] for e in errors] + content
stats[name] = ', '.join(errors[:2])
for modname, modcfg in srv.module_cfg.items():
modobj = srv.dispatcher._modules.get(modname)
classname = modcfg.pop('class')
content.append('Mod(%r,\n %r,' % (modname, classname))
description = modcfg.pop('description', None)
if description is not None:
content.append(' %s,' % triplequote(description))
result = {}
for key, value in modcfg.items():
pname, _, prop = key.partition('.')
if not pname:
pname, prop = prop, ''
elif pname == 'uri' and value == 'none':
continue
if prop:
pobj = modobj.parameters[pname] if modobj else None
if pobj:
try:
propvalue = rep(getattr(pobj, prop))
except AttributeError:
propvalue = rep(getattr(pobj.datatype, prop))
else:
propvalue = guess(value)
else:
prop = 'value'
if modobj:
propvalue = rep(get_value(modobj, pname, value))
else:
propvalue = guess(value)
result.setdefault(pname, {})[prop] = propvalue
undef = object()
for pname, cfg in result.items():
value = cfg.pop('value', undef)
if not cfg:
content.append(' %s=%s,' % (pname, value))
else:
args = ['%s=%s' % kv for kv in cfg.items()]
if value is not undef:
args.insert(0, value)
joined = ' '.join(args)
head = ' %s=Param(' % pname
if len(joined) < 8:
content.append('%s%s),' % (head, ', '.join(args)))
else:
content.append('%s\n %s,\n ),' % (head, ',\n '.join(args)))
content.append(')\n')
with open('%s' % name.replace('.cfg', '_cfg.py'), 'w') as f:
f.write('\n'.join(content))
stats[name] = '*' if name in stats else ''
except KeyboardInterrupt:
break
except BaseException as e:
stats[name] = repr(e)
if len(cfgs) == 1:
raise
if len(cfgs) > 1:
with open('convert.log', 'w') as f:
f.write('\n'.join('%s: %s' % kv for kv in stats.items())+'\n')
if __name__ == '__main__':
main(sys.argv[1:])

View File

@ -34,15 +34,17 @@ Use cases, mainly for test purposes:
"""
import sys
import argparse
from os import path
import asyncore
import socket
import ast
import time
# Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
from secop.lib import get_class, formatException
from frappy.lib import get_class, formatException, mkthread
class LineHandler(asyncore.dispatcher_with_send):
@ -51,6 +53,9 @@ class LineHandler(asyncore.dispatcher_with_send):
asyncore.dispatcher_with_send.__init__(self, sock)
self.crlf = 0
def handle_line(self, line):
raise NotImplementedError
def handle_read(self):
data = self.recv(8192)
if data:
@ -74,20 +79,22 @@ class LineHandler(asyncore.dispatcher_with_send):
class LineServer(asyncore.dispatcher):
def __init__(self, host, port, lineHandlerClass):
def __init__(self, port, line_handler_cls, handler_args):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.set_reuse_addr()
self.bind((host, port))
self.bind(('0.0.0.0', port))
self.listen(5)
self.lineHandlerClass = lineHandlerClass
print('accept connections at port', port)
self.line_handler_cls = line_handler_cls
self.handler_args = handler_args
def handle_accept(self):
pair = self.accept()
if pair is not None:
sock, addr = pair
print("Incoming connection from %s" % repr(addr))
self.lineHandlerClass(sock)
self.line_handler_cls(sock, self.handler_args)
def loop(self):
asyncore.loop()
@ -108,47 +115,73 @@ class Server(LineServer):
class Handler(LineHandler):
def __init__(self, sock, handler_args):
super().__init__(sock)
self.module = handler_args['module']
self.verbose = handler_args['verbose']
def handle_line(self, line):
try:
reply = module.do_communicate(line.strip())
if verbose:
reply = self.module.communicate(line.strip())
if self.verbose:
print('%-40s | %s' % (line, reply))
except Exception:
print(formatException(verbose=True))
return
self.send_line(reply)
class Logger:
def debug(self, *args):
print(*args)
info = exception = debug
opts = {'description': 'simulator'}
args = []
for arg in sys.argv[1:]:
k, sep, v = arg.partition('=')
if not k:
args.append(v)
try:
v = ast.literal_eval(v)
except Exception:
pass
opts[k] = v
verbose = opts.pop('verbose', False)
opts['cls'] = 'secop_psi.ls370sim.Ls370Sim'
opts['port'] = 4567
if len(args) > 2:
raise ValueError('do not know about: %s' % ' '.join(args[2:]))
if len(args) == 2:
opts['port'] = int(args[1])
if len(args) > 0:
opts['cls'] = args[0]
args.append(opts)
cls = opts.pop('cls')
port = opts.pop('port')
srv = Server('localhost', int(port), Handler)
module = get_class(cls)(cls, Logger(), opts, srv)
module.earlyInit()
srv.loop()
def log(self, level, *args):
pass
def info(self, *args):
print(*args)
exception = error = warn = info
def parse_argv(argv):
parser = argparse.ArgumentParser(description="Simulate HW with a serial interface")
parser.add_argument("-v", "--verbose",
help="output full communication",
action='store_true', default=False)
parser.add_argument("cls",
type=str,
help="simulator class.\n",)
parser.add_argument('-p',
'--port',
action='store',
help='server port or uri',
default=2089)
return parser.parse_args(argv)
def poller(pollfunc):
while True:
time.sleep(1.0)
pollfunc()
def main(argv=None):
if argv is None:
argv = sys.argv
args = parse_argv(argv[1:])
opts = {'description': 'simulator'}
handler_args = {'verbose': args.verbose}
srv = Server(int(args.port), Handler, handler_args)
module = get_class(args.cls)(args.cls, Logger(), opts, srv)
handler_args['module'] = module
module.earlyInit()
mkthread(poller, module.doPoll)
srv.loop()
if __name__ == '__main__':
sys.exit(main(sys.argv))

24
cfg/QnwTC1_cfg.py Normal file
View File

@ -0,0 +1,24 @@
Node('QnwTC1test.psi.ch',
'QnwTC1 test',
'tcp://5000',
)
Mod('io',
'frappy_psi.qnw.QnwIO',
'connection for Quantum northwest',
uri='tcp://ldmcc01-ts:3004',
)
Mod('T',
'frappy_psi.qnw.TemperatureLoopTC1',
'holder temperature',
channel='CT',
io='io',
)
Mod('Th',
'frappy_psi.qnw.SensorTC1',
'heat exch. temperature',
channel='HT',
io='io',
)

23
cfg/TFA10_cfg.py Normal file
View File

@ -0,0 +1,23 @@
Node('TFA10.psi.ch',
'TFA10 test',
'tcp://5000',
)
Mod('io',
'frappy_psi.thermofisher.ThermFishIO',
'connection for ThermoFisher A10',
uri='tcp://ldmse-d910-ts:3001',
)
Mod('T',
'frappy_psi.thermofisher.TemperatureLoopA10',
'holder temperature',
io='io',
target=Param(max=100),
)
Mod('Th',
'frappy_psi.thermofisher.SensorA10',
'heat exch. temperature',
io='io',
)

View File

@ -1,13 +0,0 @@
[NODE]
description = Andeen Hagerlin 2700 Capacitance Bridge
id = ah2700.frappy.psi.ch
[module cap]
class = secop_psi.ah2700.Capacitance
description = capacitance
uri=lollypop-ts:3002
#[module ahcom]
#class = secop_psi.ah2700.StringIO
#uri=ldmse3-ts:3015
#description = serial communicator to an AH2700

9
cfg/addons/ah2700_cfg.py Normal file
View File

@ -0,0 +1,9 @@
Node('ah2700.frappy.psi.ch',
'Andeen Hagerlin 2700 Capacitance Bridge',
)
Mod('cap',
'frappy_psi.ah2700.Capacitance',
'capacitance',
uri='lollypop-ts:3002',
)

View File

@ -1,20 +0,0 @@
[NODE]
description = Andeen Hagerlin 2700 Capacitance Bridge using SEA
id = ah2700.addon.sea.psi.ch
[sea_addons]
class = secop_psi.sea.SeaClient
description = SEA connection to mbe_ah2700
config = ah2700.addon
export = False
service = addons
[cap]
class = secop_psi.sea.SeaReadable
io = sea_addons
sea_object = cap
[capslope]
class = secop_psi.sea.SeaReadable
io = sea_addons
sea_object = capslope

View File

@ -0,0 +1,23 @@
Node('ah2700.addon.sea.psi.ch',
'Andeen Hagerlin 2700 Capacitance Bridge using SEA',
)
Mod('sea_addons',
'frappy_psi.sea.SeaClient',
'SEA connection to mbe_ah2700',
config='ah2700.addon',
export=False,
service='addons',
)
Mod('cap',
'frappy_psi.sea.SeaReadable',
io='sea_addons',
sea_object='cap',
)
Mod('capslope',
'frappy_psi.sea.SeaReadable',
io='sea_addons',
sea_object='capslope',
)

View File

@ -1,14 +0,0 @@
[NODE]
description = CryoTel be-filter BOA
id = be-filter-boa.addon.sea.psi.ch
[sea_addons]
class = secop_psi.sea.SeaClient
description = addons sea connection for be-filter-boa.addon
config = be-filter-boa.addon
service = addons
[befilter]
class = secop_psi.sea.SeaReadable
iodev = sea_addons
sea_object = befilter

View File

@ -0,0 +1,16 @@
Node('be-filter-boa.addon.sea.psi.ch',
'CryoTel be-filter BOA',
)
Mod('sea_addons',
'frappy_psi.sea.SeaClient',
'addons sea connection for be-filter-boa.addon',
config='be-filter-boa.addon',
service='addons',
)
Mod('befilter',
'frappy_psi.sea.SeaReadable',
sea_object='befilter',
io='sea_addons',
)

View File

@ -1,14 +0,0 @@
[NODE]
description = FOCUS Beryllium filter with cryotel closed cycle
id = focus-be-filter.addon.sea.psi.ch
[sea_addons]
class = secop_psi.sea.SeaClient
description = SEA connection to addons
config = focus-be-filter.addon
service = addons
[befilter]
class = secop_psi.sea.SeaReadable
io = sea_addons
sea_object = cryo

View File

@ -0,0 +1,16 @@
Node('focus-be-filter.addon.sea.psi.ch',
'FOCUS Beryllium filter with cryotel closed cycle',
)
Mod('sea_addons',
'frappy_psi.sea.SeaClient',
'SEA connection to addons',
config='focus-be-filter.addon',
service='addons',
)
Mod('befilter',
'frappy_psi.sea.SeaReadable',
io='sea_addons',
sea_object='cryo',
)

26
cfg/addons/ls372_cfg.py Normal file
View File

@ -0,0 +1,26 @@
Mod('lsc',
'frappy.io.StringIO',
'',
wait_before=0.05,
uri='flamedil-ls:7777',
)
Mod('r1',
'frappy_psi.ls372.ResChannel',
'resistivity from LS 372',
switcher='channel',
channel=1,
)
Mod('r3',
'frappy_psi.ls372.ResChannel',
'resistivity from LS 372',
switcher='channel',
channel=3,
)
Mod('channel',
'frappy_psi.ls372.Switcher',
'LS 372 channel switcher',
io='lsc',
)

View File

@ -1,16 +0,0 @@
[NODE]
description = mobile rotation stage (from MA02)
id = stickmotor.linse.psi.ch
[stick_io]
description = dom motor IO
class = secop_psi.phytron.PhytronIO
uri = ldmcc08-ts:3006
[stickrot]
description = stick rotation, typically not used as omega
class = secop_psi.phytron.Motor
io = stick_io
encoder_mode = CHECK

View File

@ -0,0 +1,16 @@
Node('stickmotor.linse.psi.ch',
'mobile rotation stage (from MA02)',
)
Mod('stick_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ldmcc08-ts:3006',
)
Mod('stickrot',
'frappy_psi.phytron.Motor',
'stick rotation, typically not used as omega',
io='stick_io',
encoder_mode='CHECK',
)

View File

@ -1,17 +0,0 @@
[node AH2700Test.psi.ch]
description = AH2700 capacitance bridge test
[interface tcp]
type = tcp
bindto = 0.0.0.0
bindport = 5000
[module cap]
class = secop_psi.ah2700.Capacitance
description = capacitance
uri=ldmse3-ts:3015
#[module ahcom]
#class = secop_psi.ah2700.StringIO
#uri=ldmse3-ts:3015
#description = serial communicator to an AH2700

10
cfg/ah2700test_cfg.py Normal file
View File

@ -0,0 +1,10 @@
Node('AH2700Test.psi.ch',
'AH2700 capacitance bridge test',
'tcp://5000',
)
Mod('cap',
'frappy_psi.ah2700.Capacitance',
'capacitance',
uri='ldmse3-ts:3015',
)

View File

@ -1,111 +0,0 @@
[node MLZ_amagnet(Garfield)]
description=MLZ-Amagnet
.
Water cooled magnet from ANTARES@MLZ.
.
Use module to control the magnetic field.
Don't forget to select symmetry first (can be moved only at zero field!).
.
Monitor T1..T4 (Coil temps), if they get to hot, field will ramp down!
.
In case of Problems, contact the ANTARES people at MLZ.
visibility=expert
foo=bar
[interface tcp]
type=tcp
bindto=0.0.0.0
bindport=10767
[module enable]
class=secop_mlz.entangle.NamedDigitalOutput
tangodevice='tango://localhost:10000/box/plc/_enable'
value.datatype=["enum", {'On':1,'Off':0}]
target.datatype=["enum", {'On':1,'Off':0}]
.description='Enables to Output of the Powersupply'
.visibility='advanced'
[module polarity]
class=secop_mlz.entangle.NamedDigitalOutput
tangodevice=tango://localhost:10000/box/plc/_polarity
value.datatype=["enum", {'+1':1,'0':0,'-1':-1}]
target.datatype=["enum", {'+1':1,'0':0,'-1':-1}]
.description=polarity (+/-) switch
.
there is an interlock in the plc:
if there is current, switching polarity is forbidden
if polarity is short, powersupply is disabled
.visibility=advanced
comtries=50
[module symmetry]
class=secop_mlz.entangle.NamedDigitalOutput
tangodevice=tango://localhost:10000/box/plc/_symmetric
value.datatype=["enum",{'symmetric':1,'short':0, 'asymmetric':-1}]
target.datatype=["enum",{'symmetric':1,'short':0, 'asymmetric':-1}]
.description=par/ser switch selecting (a)symmetric mode
.
symmetric is ser, asymmetric is par
.visibility=advanced
[module T1]
class=secop_mlz.entangle.AnalogInput
tangodevice=tango://localhost:10000/box/plc/_t1
.description=Temperature1 of the coils system
#warnlimits=(0, 50)
value.unit='degC'
[module T2]
class=secop_mlz.entangle.AnalogInput
tangodevice=tango://localhost:10000/box/plc/_t2
.description=Temperature2 of the coils system
#warnlimits=(0, 50)
value.unit='degC'
[module T3]
class=secop_mlz.entangle.AnalogInput
tangodevice=tango://localhost:10000/box/plc/_t3
.description=Temperature3 of the coils system
#warnlimits=(0, 50)
value.unit='degC'
[module T4]
class=secop_mlz.entangle.AnalogInput
tangodevice=tango://localhost:10000/box/plc/_t4
.description=Temperature4 of the coils system
#warnlimits=(0, 50)
value.unit='degC'
[module currentsource]
class=secop_mlz.entangle.PowerSupply
tangodevice=tango://localhost:10000/box/lambda/curr
.description=Device for the magnet power supply (current mode)
abslimits=(0,200)
speed=1
ramp=60
precision=0.02
current=0
voltage=10
#unit=A
.visibility=advanced
[module mf]
class=secop_mlz.amagnet.GarfieldMagnet
.description=magnetic field module, handling polarity switching and stuff
subdev_currentsource=currentsource
subdev_enable=enable
subdev_polswitch=polarity
subdev_symmetry=symmetry
target.unit='T'
value.unit='T'
userlimits=(-0.35, 0.35)
calibrationtable={'symmetric':[0.00186517, 0.0431937, -0.185956, 0.0599757, 0.194042],
'short': [0.0, 0.0, 0.0, 0.0, 0.0],
'asymmetric':[0.00136154, 0.027454, -0.120951, 0.0495289, 0.110689]}
.meaning=The magnetic field
.priority=100
.visibility=user
abslimits.default=-0.4,0.4

91
cfg/amagnet_cfg.py Normal file
View File

@ -0,0 +1,91 @@
Node('MLZ_amagnet(Garfield)',
'MLZ-Amagnet\n'
'\n'
'Water cooled magnet from ANTARES@MLZ.\n'
'\n'
'Use module to control the magnetic field.\n'
'Don\'t forget to select symmetry first (can be moved only at zero field!).\n'
'\n'
'Monitor T1..T4 (Coil temps), if they get to hot, field will ramp down!\n'
'\n'
'In case of Problems, contact the ANTARES people at MLZ.',
'tcp://10767',
visibility = 'expert',
foo = 'bar',
)
Mod('enable',
'frappy_mlz.entangle.NamedDigitalOutput',
'Enables to Output of the Powersupply',
tangodevice = 'tango://localhost:10000/box/plc/_enable',
value = Param(datatype=["enum", {'On':1,'Off':0}]),
target = Param(datatype=["enum", {'On':1,'Off':0}]),
visibility = 'advanced',
)
Mod('polarity',
'frappy_mlz.entangle.NamedDigitalOutput',
'polarity (+/-) switch\n'
'\n'
'there is an interlock in the plc:\n'
'if there is current, switching polarity is forbidden\n'
'if polarity is short, powersupply is disabled',
tangodevice = 'tango://localhost:10000/box/plc/_polarity',
value = Param(datatype=["enum", {'+1':1,'0':0,'-1':-1}]),
target = Param(datatype=["enum", {'+1':1,'0':0,'-1':-1}]),
visibility = 'advanced',
comtries = 50,
)
Mod('symmetry',
'frappy_mlz.entangle.NamedDigitalOutput',
'par/ser switch selecting (a)symmetric mode\n'
'\n'
'symmetric is ser, asymmetric is par',
tangodevice = 'tango://localhost:10000/box/plc/_symmetric',
value = Param(datatype=["enum",{'symmetric':1,'short':0, 'asymmetric':-1}]),
target = Param(datatype=["enum",{'symmetric':1,'short':0, 'asymmetric':-1}]),
visibility = 'advanced',
)
for i in range(1,5):
Mod('T%d' % i,
'frappy_mlz.entangle.AnalogInput',
'Temperature %d of the coils system' % i,
tangodevice = 'tango://localhost:10000/box/plc/_t%d' % i,
#warnlimits=(0, 50),
value = Param(unit='degC'),
)
Mod('currentsource',
'frappy_mlz.entangle.PowerSupply',
'Device for the magnet power supply (current mode)',
tangodevice = 'tango://localhost:10000/box/lambda/curr',
abslimits = (0,200),
speed = 1,
ramp = 60,
precision = 0.02,
current = 0,
voltage = 10,
#value=Param(unit='A')
visibility = 'advanced',
)
Mod('mf',
'frappy_mlz.amagnet.GarfieldMagnet',
'magnetic field module, handling polarity switching and stuff',
subdev_currentsource = 'currentsource',
subdev_enable = 'enable',
subdev_polswitch = 'polarity',
subdev_symmetry = 'symmetry',
target = Param(unit='T'),
value = Param(unit='T'),
userlimits = (-0.35, 0.35),
calibrationtable = {'symmetric':[0.00186517, 0.0431937, -0.185956, 0.0599757, 0.194042],
'short': [0.0, 0.0, 0.0, 0.0, 0.0],
'asymmetric':[0.00136154, 0.027454, -0.120951, 0.0495289, 0.110689]},
meaning = ['The magnetic field', 1],
#priority=100,
visibility = 'user',
abslimits = (-0.4,0.4,),
)

View File

@ -1,150 +0,0 @@
[node MLZ_ccr12]
description = CCR box of MLZ Sample environment group
.
Contains a Lakeshore 336 and an PLC controlling the compressor
and some valves.
[interface tcp]
type=tcp
bindto=0.0.0.0
bindport=10767
[module automatik]
class=secop_mlz.entangle.NamedDigitalOutput
tangodevice=tango://localhost:10000/box/plc/_automatik
mapping=dict(Off=0,p1=1,p2=2)
description="controls the (simple) pressure regulation
.
selects between off, regulate on p1 or regulate on p2 sensor"
[module compressor]
class=secop_mlz.entangle.NamedDigitalOutput
tangodevice=tango://localhost:10000/box/plc/_cooler_onoff
mapping=dict(Off=0,On=1)
description=control the compressor (on/off)
[module gas]
class=secop_mlz.entangle.NamedDigitalOutput
tangodevice=tango://localhost:10000/box/plc/_gas_onoff
mapping=dict(Off=0,On=1)
description=control the gas inlet into the ccr (on/off)
.
note: this switches off automatically after 15 min.
note: activation de-activates the vacuum inlet
note: if the pressure regulation is active, it enslave this device
[module vacuum]
class=secop_mlz.entangle.NamedDigitalOutput
tangodevice=tango://localhost:10000/box/plc/_vacuum_Onoff
mapping=dict(Off=0,On=1)
description=control the vacuum inlet into the ccr (on/off)
.
note: activation de-activates the gas inlet
note: if the pressure regulation is active, it enslave this device
[module p1]
class=secop_mlz.entangle.AnalogInput
tangodevice=tango://localhost:10000/box/plc/_p1
value.unit='mbar'
description=pressure sensor 1 (linear scale)
[module p2]
class=secop_mlz.entangle.AnalogInput
tangodevice=tango://localhost:10000/box/plc/_p2
value.unit='mbar'
description=pressure sensor 2 (selectable curve)
[module curve_p2]
class=secop_mlz.entangle.NamedDigitalInput
tangodevice=tango://localhost:10000/box/plc/_curve
value.default=0
description=calibration curve for pressure sensor 2
mapping="{'0-10V':0, '0-1000mbar':1, '1-9V to 0-1 mbar':2,
'DI200':3, 'DI2000':4, 'TTR100':7, 'PTR90':8,
'PTR225/237':9, 'ITR90':10, 'ITR100-D':11,
'ITR100-2':12, 'ITR100-3':13, 'ITR100-4':14,
'ITR100-5':15, 'ITR100-6':16, 'ITR100-7':17,
'ITR100-8':18, 'ITR100-9':19, 'ITR100-A':20,
'CMR361':21, 'CMR362':22, 'CMR363':23,
'CMR364':24, 'CMR365':25}"
# sensors
[module T_sample]
class=secop_mlz.entangle.Sensor
tangodevice=tango://localhost:10000/box/sample/sensora
value.unit='K'
description=sample temperature
[module T_stick]
class=secop_mlz.entangle.Sensor
tangodevice=tango://localhost:10000/box/stick/sensorb
value.unit='K'
description=temperature at bottom of sample stick
[module T_coldhead]
class=secop_mlz.entangle.Sensor
tangodevice=tango://localhost:10000/box/coldhead/sensorc
value.unit='K'
description=temperature at coldhead
[module T_tube]
class=secop_mlz.entangle.Sensor
tangodevice=tango://localhost:10000/box/tube/sensord
value.unit='K'
description=temperature at thermal coupling tube <-> stick
# regulations
[module T_stick_regulation]
class=secop_mlz.entangle.TemperatureController
tangodevice=tango://localhost:10000/box/stick/control2
heateroutput.default=0
description=regulation of stick temperature
ramp.default=6
speed.default=0.1
setpoint.default=0
pid.default=(40,10,1)
p.default=40
i.default=10
d.default=1
abslimits=(0,500)
value.unit='K'
# OMG! a NamedDigitalOutput, but with float'ints' 0..3
[module T_stick_regulation_heaterrange]
class=secop_mlz.entangle.AnalogOutput
tangodevice=tango://localhost:10000/box/stick/range2
precision.default=1
abslimits=(0,3)
description=heaterrange for stick regulation
[module T_tube_regulation]
class=secop_mlz.entangle.TemperatureController
tangodevice=tango://localhost:10000/box/tube/control1
description=regulation of tube temperature
heateroutput.default=0
ramp.default=6
speed.default=0.1
setpoint.default=0
pid.default=(40,10,1)
p.default=40
i.default=10
d.default=1
abslimits=(0,500)
value.unit='K'
# OMG! a NamedDigitalOutput, but with float'ints' 0..3
#[module T_tube_regulation_heaterrange]
#class=secop_mlz.entangle.AnalogOutput
#tangodevice=tango://localhost:10000/box/tube/range1
#precision.default=1
#abslimits=(0,3)
[module T_tube_regulation_heaterrange]
class=secop_mlz.entangle.NamedDigitalOutput
tangodevice=tango://localhost:10000/box/tube/range1
mapping=dict(Off=0, Low=1, Medium=2, High=3)
description=heaterrange for tube regulation

148
cfg/ccr_cfg.py Normal file
View File

@ -0,0 +1,148 @@
desc = '''CCR box of MLZ Sample environment group
Contains a Lakeshore 336 and an PLC controlling the compressor
and some valves.'''
Node('MLZ_ccr',
desc,
'tcp://10767',
)
Mod('automatik',
'frappy_mlz.entangle.NamedDigitalOutput',
'controls the (simple) pressure regulation\n'
'\n'
'selects between off, regulate on p1 or regulate on p2 sensor',
tangodevice = 'tango://localhost:10000/box/plc/_automatik',
mapping={'Off':0,'p1':1,'p2':2},
)
Mod('compressor',
'frappy_mlz.entangle.NamedDigitalOutput',
'control the compressor (on/off)',
tangodevice = 'tango://localhost:10000/box/plc/_cooler_onoff',
mapping={'Off':0,'On':1},
)
Mod('gas',
'frappy_mlz.entangle.NamedDigitalOutput',
'control the gas inlet into the ccr (on/off)\n'
'\n'
'note: this switches off automatically after 15 min.\n'
'note: activation de-activates the vacuum inlet\n'
'note: if the pressure regulation is active, it enslave this device',
tangodevice = 'tango://localhost:10000/box/plc/_gas_onoff',
mapping={'Off':0,'On':1},
)
Mod('vacuum',
'frappy_mlz.entangle.NamedDigitalOutput',
'control the vacuum inlet into the ccr (on/off)\n'
'\n'
'note: activation de-activates the gas inlet\n'
'note: if the pressure regulation is active, it enslave this device',
tangodevice = 'tango://localhost:10000/box/plc/_vacuum_onoff',
mapping={'Off':0,'On':1},
)
Mod('p1',
'frappy_mlz.entangle.AnalogInput',
'pressure sensor 1 (linear scale)',
tangodevice = 'tango://localhost:10000/box/plc/_p1',
value = Param(unit='mbar')
)
Mod('p2',
'frappy_mlz.entangle.AnalogInput',
'pressure sensor 2 (selectable curve)',
tangodevice = 'tango://localhost:10000/box/plc/_p2',
value = Param(unit='mbar'),
)
Mod('curve_p2',
'frappy_mlz.entangle.NamedDigitalInput',
'calibration curve for pressure sensor 2',
tangodevice = 'tango://localhost:10000/box/plc/_curve',
value = 0,
mapping = {'0-10V':0, '0-1000mbar':1, '1-9V to 0-1 mbar':2,
'DI200':3, 'DI2000':4, 'TTR100':7, 'PTR90':8,
'PTR225/237':9, 'ITR90':10, 'ITR100-D':11,
'ITR100-2':12, 'ITR100-3':13, 'ITR100-4':14,
'ITR100-5':15, 'ITR100-6':16, 'ITR100-7':17,
'ITR100-8':18, 'ITR100-9':19, 'ITR100-A':20,
'CMR361':21, 'CMR362':22, 'CMR363':23,
'CMR364':24, 'CMR365':25},
)
Mod('T_tube_regulation',
'frappy_mlz.entangle.TemperatureController',
'regulation of tube temperature',
tangodevice = 'tango://localhost:10000/box/tube/control1',
value = Param(unit = 'K'),
heateroutput = 0,
ramp = 6,
speed = 0.1,
setpoint = 0,
pid = (40, 10, 1),
p = 40,
i = 10,
d = 1,
abslimits = (0, 500),
)
Mod('T_stick_regulation',
'frappy_mlz.entangle.TemperatureController',
'regualtion of stick temperature',
tangodevice = 'tango://localhost:10000/box/stick/control2',
value = Param(unit = 'K'),
heateroutput = 0,
ramp = 6,
speed = 0.1,
setpoint = 0,
pid = (40, 10, 1),
p = 40,
i = 10,
d = 1,
abslimits = (0, 500),
)
Mod('T_sample',
'frappy_mlz.entangle.Sensor',
'sample temperature',
tangodevice = 'tango://localhost:10000/box/sample/sensora',
value = Param(unit = 'K'),
)
Mod('T_stick',
'frappy_mlz.entangle.Sensor',
'temperature at bottom of sample stick',
tangodevice = 'tango://localhost:10000/box/stick/sensorb',
value = Param(unit = 'K'),
)
Mod('T_coldhead',
'frappy_mlz.entangle.Sensor',
'temperature at coldhead',
tangodevice = 'tango://localhost:10000/box/coldhead/sensorc',
value = Param(unit = 'K'),
)
Mod('T_tube',
'frappy_mlz.entangle.Sensor',
'temperature at thermal coupling tube <-> stick',
tangodevice = 'tango://localhost:10000/box/tube/sensord',
value = Param(unit = 'K'),
)
# THIS IS A HACK: due to entangle (in controller)
Mod('T_tube_regulation_heaterrange',
'frappy_mlz.entangle.NamedDigitalOutput',
'heaterrange for tube regulation',
tangodevice = 'tango://localhost:10000/box/tube/range1',
mapping={'Off':0,'Low':1,'Medium':2, 'High':3},
)
Mod('T_stick_regulation_heaterrange',
'frappy_mlz.entangle.NamedDigitalOutput',
'heaterrange for stick regulation',
tangodevice = 'tango://localhost:10000/box/stick/range2',
mapping={'Off':0,'Low':1,'Medium':2, 'High':3},
)

View File

@ -1,50 +0,0 @@
[node cryo_7]
# set SEC-node properties
description = short description
.
This is a very long description providing all the glory details in all the glory details about the stuff we are describing
[interface tcp]
type=tcp
bindto=0.0.0.0
bindport=10769
[module cryo]
# some (non-defaut) module properties
.group=very important/stuff
.description=A simulated cc cryostat with heat-load, specific heat for the sample
and a temperature dependend heat-link between sample and regulation.
# class of module:
class=secop_demo.cryo.Cryostat
# some parameters
jitter=0.1
T_start=10.0
target=10.0
looptime=1
ramp=6
maxpower=20.0
heater=4.1
p=40
i=10
d=2
mode=pid
tolerance=0.1
window=30
timeout=900
# some (non-default) parameter properties
pollinterval.export=False
# some parameter grouping
p.group=pid
i.group=pid
d.group=pid
value.unit=K
# test custom properties
value.test=customized value

35
cfg/cryo_cfg.py Normal file
View File

@ -0,0 +1,35 @@
#####################################################################
# Python version of frappy config
#####################################################################
Node('cryo_7.frappy.demo',
'short description\n\n'
'This is a very long description providing all the gory details '
'about the stuff we are describing.',
'tcp://10769',
more="blub",
)
Mod('cryo',
'frappy_demo.cryo.Cryostat',
'A simulated cc cryostat with heat-load, specific heat for the sample and a '
'temperature dependent heat-link between sample and regulation.',
group='very important/stuff',
jitter=0.1,
T_start=10.0,
target=10.0,
looptime=1,
ramp=6,
maxpower=20.0,
heater=4.1,
mode='pid',
tolerance=0.1,
window=30,
timeout=900,
p = Param(40, unit='%/K'), # in case 'default' is the first arg, we can omit 'default='
i = 10,
d = 2,
pid = Group('p', 'i', 'd'),
pollinterval = Param(export=False),
value = Param(unit = 'K', test = 'customized value'),
)

View File

@ -1,43 +0,0 @@
[node Equipment_ID_for_demonstration]
description = virtual modules to play around with
[interface tcp]
bindto=0.0.0.0
bindport=10767
[module heatswitch]
class=secop_demo.modules.Switch
switch_on_time=5
switch_off_time=10
.description="Heatswitch for `mf` device"
[module mf]
class=secop_demo.modules.MagneticField
heatswitch = heatswitch
.description="simulates some cryomagnet with persistent/non-persistent switching"
[module ts]
class=secop_demo.modules.SampleTemp
sensor = 'Q1329V7R3'
ramp = 4
target = 10
value = 10
.description = "some temperature"
[module tc1]
class=secop_demo.modules.CoilTemp
sensor="X34598T7"
.description = "some temperature"
[module tc2]
class=secop_demo.modules.CoilTemp
sensor="X39284Q8'
.description = "some temperature"
[module label]
class=secop_demo.modules.Label
system=Cryomagnet MX15
subdev_mf=mf
subdev_ts=ts
.description = "some label indicating the state of the magnet `mf`."

46
cfg/demo_cfg.py Normal file
View File

@ -0,0 +1,46 @@
Node('demo.frappy.demo',
'Basic demo server for frappy',
'tcp://10767',
)
Mod('heatswitch',
'frappy_demo.modules.Switch',
'Heatswitch for `mf` device',
switch_on_time = 5,
switch_off_time = 10,
)
Mod('mf',
'frappy_demo.modules.MagneticField',
'simulates some cryomagnet with persistent/non-persistent switching',
heatswitch = 'heatswitch',
)
Mod('ts',
'frappy_demo.modules.SampleTemp',
'some temperature',
sensor = 'Q1329V7R3',
ramp = 4,
target = 10,
value = 10,
)
Mod('tc1',
'frappy_demo.modules.CoilTemp',
'some temperature',
sensor = 'X34598T7',
)
Mod('tc2',
'frappy_demo.modules.CoilTemp',
'some temperature',
sensor = 'X39284Q8',
)
Mod('label',
'frappy_demo.modules.Label',
'some label indicating the state of the magnet `mf`.',
system = 'Cryomagnet MX15',
subdev_mf = 'mf',
subdev_ts = 'ts',
)

View File

@ -1,8 +0,0 @@
[NODE]
description = sea client (communication only)
id = comm.sea.psi.ch
[seaconn]
class = secop_psi.sea.SeaClient
description = a SEA connection
visibility = 1

9
cfg/develop/sea_cfg.py Normal file
View File

@ -0,0 +1,9 @@
Node('comm.sea.psi.ch',
'sea client (communication only)',
)
Mod('seaconn',
'frappy_psi.sea.SeaClient',
'a SEA connection',
visibility='expert',
)

View File

@ -1,8 +0,0 @@
[NODE]
description = sea client (tool for creating cfg)
id = comm.sea.psi.ch
[seaconn]
class = secop_psi.sea.SeaConfigCreator
description = a SEA connection. will shut down after getting the description
visibility = 1

View File

@ -0,0 +1,11 @@
# error creating module seaconn:
# missing sea port for seadesc
Node('comm.sea.psi.ch',
'sea client (tool for creating cfg)',
)
Mod('seaconn',
'frappy_psi.sea.SeaConfigCreator',
'a SEA connection. will shut down after getting the description',
visibility=1,
)

View File

@ -1,15 +0,0 @@
[NODE]
description = DPM driver for pressure cell
id = dpm.psi.ch
[INTERFACE]
uri = tcp://5000
[force]
description = DPM driver to read out the transducer value, write and read the offset and scale factor
class = secop_psi.dpm.DPM3
# uri = ldmse-d910-ts.psi.ch:3001
uri = serial:///dev/ttyUSB1
digits = 2
scale_factor = 0.0156

12
cfg/dpm_cfg.py Normal file
View File

@ -0,0 +1,12 @@
Node('dpm.psi.ch',
'DPM driver for pressure cell',
interface='tcp://5000',
)
Mod('force',
'frappy_psi.dpm.DPM3',
'DPM driver to read out the transducer value, write and read the offset and scale factor',
uri='serial:///dev/ttyUSB1',
digits=2,
scale_factor=0.0156,
)

View File

@ -1,50 +0,0 @@
[node see_demo_equipment]
description=Do not use, it needs to be rewritten....
[interface testing]
type=tcp
bindto=0.0.0.0
bindport=10767
[module tc1]
class=secop_demo.modules.CoilTemp
sensor="X34598T7"
[module tc2]
class=secop_demo.modules.CoilTemp
sensor="X39284Q8'
[module sensor1]
class=secop_ess.epics.EpicsReadable
epics_version="v4"
.group="Lakeshore336"
value_pv="DEV:KRDG1"
[module loop1]
class=secop_ess.epics.EpicsTempCtrl
epics_version="v4"
.group="Lakeshore336"
value_pv="DEV:KRDG1"
target_pv="DEV:SETP_S1"
heaterrange_pv="DEV:RANGE_S1"
[module sensor2]
class=secop_ess.epics.EpicsReadable
epics_version="v4"
.group="Lakeshore336"
value_pv="DEV:KRDG2"
[module loop2]
class=secop_ess.epics.EpicsTempCtrl
epics_version="v4"
.group="Lakeshore336"
value_pv="DEV:KRDG2"
target_pv="DEV:SETP_S2"
heaterrange_pv="DEV:RANGE_S2"

36
cfg/epics_cfg.py Normal file
View File

@ -0,0 +1,36 @@
Node('see_demo_equipment',
'Do not use, it needs to be rewritten....',
'tcp://10767',
)
Mod('tc1',
'frappy_demo.modules.CoilTemp',
'',
sensor="X34598T7",
)
Mod('tc2',
'frappy_demo.modules.CoilTemp',
'',
sensor="X39284Q8",
)
for i in [1,2]:
Mod('sensor%d' % i,
'frappy_ess.epics.EpicsReadable',
'',
epics_version="v4",
value_pv="DEV:KRDG%d" % i,
group="Lakeshore336",
)
Mod('loop%d' % i,
'frappy_ess.epics.EpicsTempCtrl',
'',
epics_version="v4",
group="Lakeshore336",
value_pv="DEV:KRDG%d" % i,
target_pv="DEV:SETP_S%d" % i,
heaterrange_pv="DEV:RANGE_S%d" % i,
)

10
cfg/lockin_cfg.py Normal file
View File

@ -0,0 +1,10 @@
Node('lockintest.psi.ch',
'lockin test',
'tcp://5000',
)
Mod('io',
'frappy_psi.SR_7270.SR7270',
'lockin communication',
uri='10105266.psi.ch:50000',
)

View File

@ -1,17 +0,0 @@
[NODE]
id = ls240.psi.ch
description = ls240 test
[INTERFACE]
uri = tcp://5000
[T]
description = temperature on uniax stick
class = secop_psi.ls240.Ls240
io = T_io
[T_io]
class = secop.bytesio.BytesIO
description = IO device for LS240
uri = serial:///dev/ttyUSB0?baudrate=9600+parity=EVEN
timeout = 0.2

20
cfg/ls240_cfg.py Normal file
View File

@ -0,0 +1,20 @@
# error importing secop.bytesio.BytesIO
# module T, attached io: Module 'T_io' does not exist on this SEC-Node!
# error initializing T: AttributeError("'NoneType' object has no attribute 'polledModules'")
Node('ls240.psi.ch',
'ls240 test',
interface='tcp://5000',
)
Mod('T',
'frappy_psi.ls240.Ls240',
'temperature on uniax stick',
io='T_io',
)
Mod('T_io',
'frappy.bytesio.BytesIO',
'IO device for LS240',
uri='serial:///dev/ttyUSB0?baudrate=9600+parity=EVEN',
timeout=0.2,
)

23
cfg/ls336_cfg.py Normal file
View File

@ -0,0 +1,23 @@
from os import environ
# either change the uri or set the environment variable 'LS_URI'
lakeshore_uri = environ.get('LS_URI', 'tcp://<host>:7777')
Node('example_cryo.psi.ch', # a globally unique identification
'this is an example cryostat for the Frappy tutorial', # describes the node
interface='tcp://10767') # you might choose any port number > 1024
Mod('io', # the name of the module
'frappy_demo.lakeshore.LakeshoreIO', # the class used for communication
'communication to main controller', # a description
uri=lakeshore_uri, # the serial connection
)
Mod('T',
'frappy_demo.lakeshore.TemperatureLoop',
'Sample Temperature',
io='io',
channel='A', # the channel on the LakeShore for this module
loop=1, # the loop to be used
value=Param(max=470), # set the maximum expected T
target=Param(max=420), # set the maximum allowed target T
heater_range=3, # 5 for model 350
)

36
cfg/ls340_cfg.py Normal file
View File

@ -0,0 +1,36 @@
Node('ls340test.psi.ch',
'ls340 test',
'tcp://5000'
)
Mod('io',
'frappy_psi.lakeshore.Ls340IO',
'communication to ls340',
uri='tcp://ldmprep56-ts:3002'
)
Mod('T',
'frappy_psi.lakeshore.TemperatureLoop340',
'sample temperature',
output_module='Heater',
target=Param(max=470),
io='io',
channel='B'
)
Mod('T_cold_finger',
'frappy_psi.lakeshore.Sensor340',
'cold finger temperature',
io='io',
channel='A'
)
Mod('Heater',
'frappy_psi.lakeshore.HeaterOutput',
'heater output',
channel='B',
io='io',
resistance=25,
max_power=50,
current=1
)

View File

@ -1,25 +0,0 @@
[NODE]
id = ls370res.psi.ch
description = Lsc370 Test
[INTERFACE]
uri = tcp://5000
[lsmain_io]
description = the communication device
class = secop_psi.ls370res.StringIO
uri = lollypop-ts:3001
[lsmain]
class = secop_psi.ls370res.Main
description = main control of Lsc controller
uri = lollypop-ts:3001
[res]
class = secop_psi.ls370res.ResChannel
iexc = '1mA'
channel = 5
description = resistivity
main = lsmain
# the auto created iodev from lsmain:
io = lsmain_io

25
cfg/ls370res_cfg.py Normal file
View File

@ -0,0 +1,25 @@
Node('ls370res.psi.ch',
'Lsc370 Test',
interface='tcp://5000',
)
Mod('lsmain_io',
'frappy_psi.ls370res.StringIO',
'the communication device',
uri='lollypop-ts:3001',
)
Mod('lsmain',
'frappy_psi.ls370res.Main',
'main control of Lsc controller',
uri='lollypop-ts:3001',
)
Mod('res',
'frappy_psi.ls370res.ResChannel',
'resistivity',
iexc='1mA',
channel=5,
main='lsmain',
io='lsmain_io',
)

View File

@ -1,23 +0,0 @@
[NODE]
id = LscSIM.psi.ch
description = Lsc Simulation at PSI
[INTERFACE]
uri = tcp://5000
[res]
class = secop_psi.ls370res.ResChannel
channel = 3
description = resistivity
main = lsmain
io = lscom
[lsmain]
class = secop_psi.ls370res.Main
description = main control of Lsc controller
io = lscom
[lscom]
class = secop_psi.ls370sim.Ls370Sim
description = simulated serial communicator to a LS 370
visibility = 3

30
cfg/ls370sim_cfg.py Normal file
View File

@ -0,0 +1,30 @@
Node('LscSIM.psi.ch',
'Lsc Simulation at PSI',
'tcp://5000',
)
Mod('lscom',
'frappy_psi.ls370sim.Ls370Sim',
'simulated serial communicator to a LS 370',
visibility = 3
)
Mod('sw',
'frappy_psi.ls370res.Switcher',
'channel switcher for Lsc controller',
io = 'lscom',
)
Mod('a',
'frappy_psi.ls370res.ResChannel',
'resistivity',
channel = 1,
switcher = 'sw',
)
Mod('b',
'frappy_psi.ls370res.ResChannel',
'resistivity',
channel = 3,
switcher = 'sw',
)

View File

@ -1,21 +0,0 @@
[node LscSIM.psi.ch]
description = Lsc370 Test
[interface tcp]
type = tcp
bindto = 0.0.0.0
bindport = 5000
[module lsmain]
class = secop_psi.ls370res.Main
description = main control of Lsc controller
uri = localhost:4567
[module res]
class = secop_psi.ls370res.ResChannel
vexc = '2mV'
channel = 3
description = resistivity
main = lsmain
# the auto created iodev from lsmain:
io = lsmain_io

29
cfg/ls370test_cfg.py Normal file
View File

@ -0,0 +1,29 @@
Node('LscSIM.psi.ch',
'Lsc370 Test',
'tcp://5000',
)
Mod('io',
'frappy_psi.ls370res.StringIO',
'io for Ls370',
uri = 'localhost:2089',
)
Mod('sw',
'frappy_psi.ls370res.Switcher',
'channel switcher',
io = 'io',
)
Mod('res1',
'frappy_psi.ls370res.ResChannel',
'resistivity chan 1',
vexc = '2mV',
channel = 1,
switcher = 'sw',
)
Mod('res2',
'frappy_psi.ls370res.ResChannel',
'resistivity chn 3',
vexc = '2mV',
channel = 3,
switcher = 'sw',
)

View File

@ -1,20 +0,0 @@
[NODE]
description = sumitomo 4 K closed cycle refrigerator (FOCUS)
id = ccr2.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = SEA connection to main
config = ccr2.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
#[tscreen]
#class = secop_psi.sea.SeaReadable
#io = sea_main
#sea_object = tt
#rel_paths = te

16
cfg/main/ccr2_cfg.py Normal file
View File

@ -0,0 +1,16 @@
Node('ccr2.config.sea.psi.ch',
'sumitomo 4 K closed cycle refrigerator (FOCUS)',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'SEA connection to main',
config='ccr2.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
)

View File

@ -1,27 +0,0 @@
[NODE]
description = sumitomo 4 K closed cycle refrigerator with hot stage (FOCUS)
id = ccr2ht.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main SEA connection
config = ccr2ht.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
#[tscreen]
#class = secop_psi.sea.SeaReadable
#io = sea_main
#sea_object = tt
#rel_paths = te
[tcoldfinger]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = tt
rel_paths = tk

23
cfg/main/ccr2ht_cfg.py Normal file
View File

@ -0,0 +1,23 @@
Node('ccr2ht.config.sea.psi.ch',
'sumitomo 4 K closed cycle refrigerator with hot stage (FOCUS)',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main SEA connection',
config='ccr2ht.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
)
Mod('tcoldfinger',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='tt',
rel_paths=['tk'],
)

View File

@ -1,14 +0,0 @@
[NODE]
description = 4 K closed cycle cryostat (ZEBRA)
id = ccr3.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for ccr3.config
config = ccr3.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt

16
cfg/main/ccr3_cfg.py Normal file
View File

@ -0,0 +1,16 @@
Node('ccr3.config.sea.psi.ch',
'4 K closed cycle cryostat (ZEBRA)',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ccr3.config',
config='ccr3.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
)

39
cfg/main/ccrpe_cfg.py Normal file
View File

@ -0,0 +1,39 @@
Node('cfg/main/ccrpe.cfg',
'4 K closed cycle cryostat (PE cell)',
interface='5000',
name='ccrpe',
)
Mod('sea_main',
'secop_psi.sea.SeaClient',
'main sea connection for ccrpe.config',
config='ccrpe.config',
service='main',
)
Mod('tt',
'secop_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
rel_paths=['.', 'tm'],
)
Mod('ts',
'secop_psi.sea.SeaReadable',
io='sea_main',
sea_object='tt',
rel_paths=['ts'],
)
Mod('te',
'secop_psi.sea.SeaReadable',
io='sea_main',
sea_object='tt',
rel_paths=['te'],
)
Mod('warmup',
'secop_psi.sea.SeaDrivable',
io='sea_main',
sea_object='warmup',
)

View File

@ -0,0 +1,39 @@
Node('cfg/main/ccrpe_lowT.cfg',
'4 K closed cycle cryostat (PE cell)',
interface='5000',
name='ccrpe_lowT',
)
Mod('sea_main',
'secop_psi.sea.SeaClient',
'main sea connection for ccrpe_lowT.config',
config='ccrpe_lowT.config',
service='main',
)
Mod('tt',
'secop_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
rel_paths=['.', 'tm'],
)
Mod('ts',
'secop_psi.sea.SeaReadable',
io='sea_main',
sea_object='tt',
rel_paths=['ts'],
)
Mod('te',
'secop_psi.sea.SeaReadable',
io='sea_main',
sea_object='tt',
rel_paths=['te'],
)
Mod('warmup',
'secop_psi.sea.SeaDrivable',
io='sea_main',
sea_object='warmup',
)

View File

@ -1,43 +0,0 @@
[NODE]
id = cyrosim.psi.ch
description = cryo simulation (similar ppms simulation)
[INTERFACE]
uri = tcp://5000
[tt]
class = secop_psi.ppms.Temp
description = main temperature
meaning = ['temperature_regulation', 10]
ramp = 20
io = ppms
[lev]
class = secop_psi.ppms.Level
description = helium level
io = ppms
[ts]
class = secop_psi.ppms.UserChannel
description = sample temperature
enabled = 1
linkenable = tv
value.unit = K
meaning = ['temperature', 10]
io = ppms
[tv]
class = secop_psi.ppms.UserChannel
description = exchanger temperature
enabled = 1
linkenable = ts
value.unit = K
io = ppms
[ppms]
class = secop_psi.ppms.Main
description = the main and poller module
class_id = QD.MULTIVU.PPMS.1
visibility = 3
pollinterval = 2
export = False

50
cfg/main/cryosim_cfg.py Normal file
View File

@ -0,0 +1,50 @@
Node('cyrosim.psi.ch',
'cryo simulation (similar ppms simulation)',
interface='tcp://5000',
)
Mod('tt',
'frappy_psi.ppms.Temp',
'main temperature',
meaning=('temperature_regulation', 10),
ramp=20.0,
io='ppms',
)
Mod('lev',
'frappy_psi.ppms.Level',
'helium level',
io='ppms',
)
Mod('ts',
'frappy_psi.ppms.UserChannel',
'sample temperature',
enabled=True,
linkenable='tv',
value=Param(
unit='K',
),
meaning=('temperature', 10),
io='ppms',
)
Mod('tv',
'frappy_psi.ppms.UserChannel',
'exchanger temperature',
enabled=True,
linkenable='ts',
value=Param(
unit='K',
),
io='ppms',
)
Mod('ppms',
'frappy_psi.ppms.Main',
'the main and poller module',
class_id='QD.MULTIVU.PPMS.1',
visibility='expert',
pollinterval=2.0,
export=False,
)

View File

@ -1,14 +0,0 @@
[NODE]
description = 15 K closed cycle cryostat
id = cti5.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for cti5.config
config = cti5.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt

16
cfg/main/cti5_cfg.py Normal file
View File

@ -0,0 +1,16 @@
Node('cti5.config.sea.psi.ch',
'15 K closed cycle cryostat',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for cti5.config',
config='cti5.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
)

View File

@ -1,14 +0,0 @@
[NODE]
description = 30 K - 475 K closed cycle cryostat
id = cti7.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for cti7.config
config = cti7.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt

16
cfg/main/cti7_cfg.py Normal file
View File

@ -0,0 +1,16 @@
Node('cti7.config.sea.psi.ch',
'30 K - 475 K closed cycle cryostat',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for cti7.config',
config='cti7.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
)

View File

@ -1,14 +0,0 @@
[NODE]
description = 30 K - 475 K closed cycle cryostat with hot stagge
id = cti7ht.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for cti7ht.config
config = cti7ht.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt

16
cfg/main/cti7ht_cfg.py Normal file
View File

@ -0,0 +1,16 @@
Node('cti7ht.config.sea.psi.ch',
'30 K - 475 K closed cycle cryostat with hot stagge',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for cti7ht.config',
config='cti7ht.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
)

View File

@ -1,36 +0,0 @@
[NODE]
description = thin film oven for AMOR
id = fftf.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for fftf.config
config = fftf.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
[p]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = p
extra_modules = vacuumpump gasflow tlimit tlimit_without_vacuum
[gasflow]
class = secop_psi.sea.SeaWritable
io = sea_main
single_module = p.gasflow
[vacuumpump]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = p
rel_paths = vacuumpump tlimit tlimit_without_vacuum
[table]
class = secop_psi.sea.SeaModule
io = sea_main
sea_object = table

42
cfg/main/fftf_cfg.py Normal file
View File

@ -0,0 +1,42 @@
Node('fftf.config.sea.psi.ch',
'thin film oven for AMOR',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for fftf.config',
config='fftf.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
)
Mod('p',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='p',
extra_modules=['vacuumpump', 'gasflow', 'tlimit', 'tlimit_without_vacuum'],
)
Mod('gasflow',
'frappy_psi.sea.SeaWritable',
io='sea_main',
single_module=['p.gasflow'],
)
Mod('vacuumpump',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='p',
rel_paths=['vacuumpump', 'tlimit', 'tlimit_without_vacuum'],
)
Mod('table',
'frappy_psi.sea.SeaModule',
io='sea_main',
sea_object='table',
)

211
cfg/main/flamemag_cfg.py Normal file
View File

@ -0,0 +1,211 @@
Mod('cio',
'frappy_psi.cryoltd.IO',
'IO to cryo ltd software',
uri='tcp://flamedil:3128',
)
Mod('main',
'frappy_psi.cryoltd.Main',
'master module',
io='cio',
)
Mod('B',
'frappy_psi.cryoltd.MainField',
'magnetic field',
channel='Main',
constraint=80000.0,
target=Param(
max=35000.0,
),
mode='PERSISTENT',
hw_units='T',
A_to_G=285.73,
ramp=Param(
max=412.0,
),
overshoot={'o': 1.0, 't': 180.0},
degauss={'s': 500.0, 'd': 30.0, 'f': 5.0, 't': 120.0},
tolerance=5.0,
wait_stable_field=180.0,
)
Mod('Bx',
'frappy_psi.cryoltd.ComponentField',
'magnetic field x component',
channel='VMX',
check_against='B',
target=Param(
max=200.0,
),
hw_units='A',
A_to_G=4.134,
ramp=Param(
max=23.0,
),
tolerance=1.0,
)
Mod('By',
'frappy_psi.cryoltd.ComponentField',
'magnetic field y component',
channel='VMY',
check_against='B',
target=Param(
max=100.0,
),
hw_units='A',
A_to_G=4.1117,
ramp=Param(
max=22.9,
),
tolerance=1.0,
)
Mod('Bz',
'frappy_psi.cryoltd.ComponentField',
'magnetic field z component',
channel='VMZ',
check_against='B',
target=Param(
max=100.0,
),
hw_units='A',
A_to_G=5.74,
ramp=Param(
max=33.6,
),
tolerance=1.0,
)
Mod('compressorA',
'frappy_psi.cryoltd.Compressor',
'compressor A',
channel='A',
)
Mod('compressorB',
'frappy_psi.cryoltd.Compressor',
'compressor B',
channel='B',
)
Mod('T_stage1_A',
'frappy_psi.cryoltd.Temperature',
channel='1st Stage A',
main='main',
)
Mod('T_stage2_A',
'frappy_psi.cryoltd.Temperature',
channel='2nd Stage A',
main='main',
)
Mod('T_stage1_B',
'frappy_psi.cryoltd.Temperature',
channel='1st Stage B',
main='main',
)
Mod('T_stage2_B',
'frappy_psi.cryoltd.Temperature',
channel='2nd Stage B',
main='main',
)
Mod('T_top_A',
'frappy_psi.cryoltd.Temperature',
channel='Inner Magnet A (Top)',
main='main',
)
Mod('T_bottom_A',
'frappy_psi.cryoltd.Temperature',
channel='Inner Magnet A (Bottom)',
main='main',
)
Mod('T_top_B',
'frappy_psi.cryoltd.Temperature',
channel='Inner Magnet B (Top)',
main='main',
)
Mod('T_bottom_B',
'frappy_psi.cryoltd.Temperature',
channel='Inner Magnet B (Bottom)',
main='main',
)
Mod('T_Z_shim',
'frappy_psi.cryoltd.Temperature',
channel='Z Shim Former',
main='main',
)
Mod('T_XY_shim',
'frappy_psi.cryoltd.Temperature',
channel='XY Shim Former',
main='main',
)
Mod('T_XY_vector',
'frappy_psi.cryoltd.Temperature',
channel='XY Vector Former',
main='main',
)
Mod('T_radiation_shield',
'frappy_psi.cryoltd.Temperature',
channel='Radiation Shield',
main='main',
)
Mod('T_persistent_joints',
'frappy_psi.cryoltd.Temperature',
channel='Persistent Joints',
main='main',
)
Mod('T_outer_A',
'frappy_psi.cryoltd.Temperature',
channel='Outer Magnet A',
main='main',
)
Mod('T_outer_B',
'frappy_psi.cryoltd.Temperature',
channel='Outer Magnet B',
main='main',
)
Mod('T_shim_B',
'frappy_psi.cryoltd.Temperature',
channel='Z Shim Former B',
main='main',
)
Mod('T_bore_shield',
'frappy_psi.cryoltd.Temperature',
channel='Bore Radiation Shield',
main='main',
)
Mod('T_XYZ_shim',
'frappy_psi.cryoltd.Temperature',
channel='XYZ Shim Plate',
main='main',
)
Mod('T_Z_shim_switch',
'frappy_psi.cryoltd.Temperature',
channel='Z Shim Switch',
main='main',
)
Mod('T_main_switch',
'frappy_psi.cryoltd.Temperature',
channel='Main Coil Switch',
main='main',
)

View File

@ -1,52 +0,0 @@
[NODE]
description = lamp oven control (from manuel knecht)
id = flamp.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for flamp.config
config = flamp.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
rel_paths = . t1
[t2]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = tt
rel_paths = t2
[current]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = current
extra_modules = i1, i2, i3, i4
[i1]
class = secop_psi.sea.SeaReadable
io = sea_main
single_module = current.i1
[i2]
class = secop_psi.sea.SeaReadable
io = sea_main
single_module = current.i2
[i3]
class = secop_psi.sea.SeaReadable
io = sea_main
single_module = current.i3
[i4]
class = secop_psi.sea.SeaReadable
io = sea_main
single_module = current.i4
[pv]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = pv

61
cfg/main/flamp_cfg.py Normal file
View File

@ -0,0 +1,61 @@
Node('flamp.config.sea.psi.ch',
'lamp oven control (from manuel knecht)',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for flamp.config',
config='flamp.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
rel_paths=['.', 't1'],
)
Mod('t2',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='tt',
rel_paths=['t2'],
)
Mod('current',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='current',
extra_modules=['i1,', 'i2,', 'i3,', 'i4'],
)
Mod('i1',
'frappy_psi.sea.SeaReadable',
io='sea_main',
single_module=['current.i1'],
)
Mod('i2',
'frappy_psi.sea.SeaReadable',
io='sea_main',
single_module=['current.i2'],
)
Mod('i3',
'frappy_psi.sea.SeaReadable',
io='sea_main',
single_module=['current.i3'],
)
Mod('i4',
'frappy_psi.sea.SeaReadable',
io='sea_main',
single_module=['current.i4'],
)
Mod('pv',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='pv',
)

View File

@ -1,21 +0,0 @@
[NODE]
description = small furnace
id = fs.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for fs.config
config = fs.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
rel_paths = . tm
[ts]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
rel_paths = ts

24
cfg/main/fs_cfg.py Normal file
View File

@ -0,0 +1,24 @@
Node('fs.config.sea.psi.ch',
'small furnace',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for fs.config',
config='fs.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
rel_paths=['.', 'tm'],
)
Mod('ts',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
rel_paths=['ts'],
)

View File

@ -1,22 +0,0 @@
[NODE]
description = FT tantalum furnace (1400 K)
id = ft.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for fw.config
config = ft.config
service = main
[ts]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
rel_paths = . ts
[t2]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = tt
rel_paths = tm

24
cfg/main/ft_cfg.py Normal file
View File

@ -0,0 +1,24 @@
Node('ft.config.sea.psi.ch',
'FT tantalum furnace (1400 K)',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for fw.config',
config='ft.config',
service='main',
)
Mod('ts',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
rel_paths=['.', 'ts'],
)
Mod('t2',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='tt',
rel_paths=['tm'],
)

View File

@ -1,57 +0,0 @@
[NODE]
description = orange cryostat with 50 mm sample space
id = ill1.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for ill1.config
config = ill1.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
[cc]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = cc
extra_modules = h
visibility = 3
[lev]
class = secop_psi.sea.SeaReadable
io = sea_main
single_module = cc.h
[nv]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = nv
[ln2fill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = ln2fill
[hefill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hefill
[hepump]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hepump
[hemot]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = hemot
[table]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = table

66
cfg/main/ill1_cfg.py Normal file
View File

@ -0,0 +1,66 @@
Node('ill1.config.sea.psi.ch',
'orange cryostat with 50 mm sample space',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ill1.config',
config='ill1.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
)
Mod('cc',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='cc',
extra_modules=['h'],
visibility=2,
)
Mod('lev',
'frappy_psi.sea.SeaReadable',
io='sea_main',
single_module=['cc.h'],
)
Mod('nv',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='nv',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='hemot',
)
Mod('table',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='table',
)

74
cfg/main/ill3_cfg.py Normal file
View File

@ -0,0 +1,74 @@
Node('cfg/main/ill3.cfg',
'orange cryofurnace with 70 mm sample space (low T)',
interface='5000',
name='ill3',
)
Mod('sea_main',
'secop_psi.sea.SeaClient',
'main sea connection for ill3.config',
config='ill3.config',
service='main',
)
Mod('tt',
'secop_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
)
Mod('cc',
'secop_psi.sea.SeaReadable',
io='sea_main',
sea_object='cc',
extra_modules=['h'],
visibility=2,
)
Mod('lev',
'secop_psi.sea.SeaReadable',
io='sea_main',
single_module=['cc.h'],
)
Mod('nv',
'secop_psi.sea.SeaWritable',
io='sea_main',
sea_object='nv',
)
Mod('ln2fill',
'secop_psi.sea.SeaWritable',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'secop_psi.sea.SeaWritable',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'secop_psi.sea.SeaWritable',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'secop_psi.sea.SeaDrivable',
io='sea_main',
sea_object='hemot',
)
Mod('nvflow',
'secop_psi.sea.SeaReadable',
io='sea_main',
sea_object='nvflow',
)
Mod('table',
'secop_psi.sea.SeaReadable',
io='sea_main',
sea_object='table',
)

View File

@ -1,56 +0,0 @@
[NODE]
description = orange cryostat with 70 mm sample space (FOCUS)
id = ill4.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for ill4.config
config = ill4.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
[cc]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = cc
extra_modules = h
visibility = 3
[lev]
class = secop_psi.sea.SeaReadable
io = sea_main
single_module = cc.h
[nv]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = nv
[ln2fill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = ln2fill
[hefill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hefill
[hepump]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hepump
[hemot]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = hemot
[table]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = table

66
cfg/main/ill4_cfg.py Normal file
View File

@ -0,0 +1,66 @@
Node('ill4.config.sea.psi.ch',
'orange cryostat with 70 mm sample space (FOCUS)',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ill4.config',
config='ill4.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
)
Mod('cc',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='cc',
extra_modules=['h'],
visibility=2,
)
Mod('lev',
'frappy_psi.sea.SeaReadable',
io='sea_main',
single_module=['cc.h'],
)
Mod('nv',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='nv',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='hemot',
)
Mod('table',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='table',
)

View File

@ -1,56 +0,0 @@
[NODE]
description = orange cryostat with 100 mm sample space
id = ill5.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main SEA connection to ill5.config
config = ill5.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
[cc]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = cc
extra_modules = h
visibility = 3
[lev]
class = secop_psi.sea.SeaReadable
io = sea_main
single_module = cc.h
[nv]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = nv
[ln2fill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = ln2fill
[hefill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hefill
[hepump]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hepump
[hemot]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = hemot
[table]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = table

66
cfg/main/ill5_cfg.py Normal file
View File

@ -0,0 +1,66 @@
Node('ill5.config.sea.psi.ch',
'orange cryostat with 100 mm sample space',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main SEA connection to ill5.config',
config='ill5.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
)
Mod('cc',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='cc',
extra_modules=['h'],
visibility=2,
)
Mod('lev',
'frappy_psi.sea.SeaReadable',
io='sea_main',
single_module=['cc.h'],
)
Mod('nv',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='nv',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='hemot',
)
Mod('table',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='table',
)

View File

@ -1,86 +0,0 @@
[NODE]
description = orange cryostat with 100 mm sample space and pgas5 pressure cell
id = ill5pgas5.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for ill5pgas5.config
config = ill5pgas5.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
[pauto]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = pauto
[T_capillary]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tc
[cc]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = cc
extra_modules = h
visibility = 3
[lev]
class = secop_psi.sea.SeaReadable
io = sea_main
single_module = cc.h
[nv]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = nv
[ln2fill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = ln2fill
[hefill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hefill
[hepump]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hepump
[hemot]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = hemot
[nvflow]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = nvflow
[table]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = table
[pccu]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = pccu
[p]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = p
[i1]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = i1

102
cfg/main/ill5pgas5_cfg.py Normal file
View File

@ -0,0 +1,102 @@
Node('ill5pgas5.config.sea.psi.ch',
'orange cryostat with 100 mm sample space and pgas5 pressure cell',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ill5pgas5.config',
config='ill5pgas5.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
)
Mod('pauto',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='pauto',
)
Mod('T_capillary',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tc',
)
Mod('cc',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='cc',
extra_modules=['h'],
visibility=2,
)
Mod('lev',
'frappy_psi.sea.SeaReadable',
io='sea_main',
single_module=['cc.h'],
)
Mod('nv',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='nv',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='hemot',
)
Mod('nvflow',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='nvflow',
)
Mod('table',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='table',
)
Mod('pccu',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='pccu',
)
Mod('p',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='p',
)
Mod('i1',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='i1',
)

View File

@ -1,112 +0,0 @@
[NODE]
description = CCR with JT-stage
id = jtccr.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for jtccr.config
config = jtccr.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
rel_paths = . tt
[T_ccr]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = tt
rel_paths = ccr
[jtccr]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = jtccr
extra_modules = v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,vm
[v1]
class = secop_psi.sea.SeaWritable
io = sea_main
single_module = jtccr.v1
[v2]
class = secop_psi.sea.SeaWritable
io = sea_main
single_module = jtccr.v2
[v3]
class = secop_psi.sea.SeaWritable
io = sea_main
single_module = jtccr.v3
[v4]
class = secop_psi.sea.SeaWritable
io = sea_main
single_module = jtccr.v4
[v5]
class = secop_psi.sea.SeaWritable
io = sea_main
single_module = jtccr.v5
[v6]
class = secop_psi.sea.SeaWritable
io = sea_main
single_module = jtccr.v6
[v7]
class = secop_psi.sea.SeaWritable
io = sea_main
single_module = jtccr.v7
[v8]
class = secop_psi.sea.SeaWritable
io = sea_main
single_module = jtccr.v8
[v9]
class = secop_psi.sea.SeaWritable
io = sea_main
single_module = jtccr.v9
[v10]
class = secop_psi.sea.SeaWritable
io = sea_main
single_module = jtccr.v10
[vm]
class = secop_psi.sea.SeaWritable
io = sea_main
single_module = jtccr.vm
[p1]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = p1
[p2]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = p2
[p3]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = p3
[p4]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = p4
[pressreg]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = pressreg
[epc]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = epc

133
cfg/main/jtccr_cfg.py Normal file
View File

@ -0,0 +1,133 @@
Node('jtccr.config.sea.psi.ch',
'CCR with JT-stage',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for jtccr.config',
config='jtccr.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
rel_paths=['.', 'tt'],
)
Mod('T_ccr',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='tt',
rel_paths=['ccr'],
)
Mod('jtccr',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='jtccr',
extra_modules=['v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,vm'],
)
Mod('v1',
'frappy_psi.sea.SeaWritable',
io='sea_main',
single_module=['jtccr.v1'],
)
Mod('v2',
'frappy_psi.sea.SeaWritable',
io='sea_main',
single_module=['jtccr.v2'],
)
Mod('v3',
'frappy_psi.sea.SeaWritable',
io='sea_main',
single_module=['jtccr.v3'],
)
Mod('v4',
'frappy_psi.sea.SeaWritable',
io='sea_main',
single_module=['jtccr.v4'],
)
Mod('v5',
'frappy_psi.sea.SeaWritable',
io='sea_main',
single_module=['jtccr.v5'],
)
Mod('v6',
'frappy_psi.sea.SeaWritable',
io='sea_main',
single_module=['jtccr.v6'],
)
Mod('v7',
'frappy_psi.sea.SeaWritable',
io='sea_main',
single_module=['jtccr.v7'],
)
Mod('v8',
'frappy_psi.sea.SeaWritable',
io='sea_main',
single_module=['jtccr.v8'],
)
Mod('v9',
'frappy_psi.sea.SeaWritable',
io='sea_main',
single_module=['jtccr.v9'],
)
Mod('v10',
'frappy_psi.sea.SeaWritable',
io='sea_main',
single_module=['jtccr.v10'],
)
Mod('vm',
'frappy_psi.sea.SeaWritable',
io='sea_main',
single_module=['jtccr.vm'],
)
Mod('p1',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='p1',
)
Mod('p2',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='p2',
)
Mod('p3',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='p3',
)
Mod('p4',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='p4',
)
Mod('pressreg',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='pressreg',
)
Mod('epc',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='epc',
)

View File

@ -1,67 +0,0 @@
[NODE]
description = 1.8 Tesla horizontal cryomagnet
id = ma02.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for ma02.config
config = ma02.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
[cc]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = cc
[nv]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = nv
[ln2fill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = ln2fill
[hepump]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hepump
[hemot]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = hemot
[mf]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = mf
[lev]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = lev
[hefill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hefill
[stick_io]
description = dom motor IO
class = secop_psi.phytron.PhytronIO
uri = ma02-ts.psi.ch:3003
[stickrot]
description = stick rotation, typically not used as omega
class = secop_psi.phytron.Motor
io = stick_io
encoder_mode = CHECK

77
cfg/main/ma02_cfg.py Normal file
View File

@ -0,0 +1,77 @@
Node('ma02.config.sea.psi.ch',
'1.8 Tesla horizontal cryomagnet',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma02.config',
config='ma02.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
)
Mod('cc',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='nv',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='ln2fill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='hemot',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='mf',
)
Mod('lev',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='lev',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hefill',
)
Mod('stick_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma02-ts.psi.ch:3003',
)
Mod('stickrot',
'frappy_psi.phytron.Motor',
'stick rotation, typically not used as omega',
io='stick_io',
encoder_mode='CHECK',
)

View File

@ -1,72 +0,0 @@
[NODE]
description = 10 Tesla vertical cryomagnet
id = ma10.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for ma10.config
config = ma10.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
[cc]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = cc
[nv]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = nv
[hepump]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hepump
[hemot]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = hemot
[mf]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = mf
[lev]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = lev
[ln2fill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = ln2fill
[hefill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hefill
[table]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = table
[om_io]
description = dom motor IO
class = secop_psi.phytron.PhytronIO
uri = ma10-ts.psi.ch:3004
[om]
description = stick rotation, typically used for omega
class = secop_psi.phytron.Motor
io = om_io
sign = -1
encoder_mode = READ

84
cfg/main/ma10_cfg.py Normal file
View File

@ -0,0 +1,84 @@
Node('ma10.config.sea.psi.ch',
'10 Tesla vertical cryomagnet',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma10.config',
config='ma10.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
)
Mod('cc',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='nv',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='hemot',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='mf',
)
Mod('lev',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='lev',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hefill',
)
Mod('table',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='table',
)
Mod('om_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma10-ts.psi.ch:3004',
)
Mod('om',
'frappy_psi.phytron.Motor',
'stick rotation, typically used for omega',
io='om_io',
sign=-1,
encoder_mode='READ',
)

View File

@ -1,97 +0,0 @@
[NODE]
description = MA11 cryomagnet for SANS
id = ma11.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for ma11.config
config = ma11.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
rel_paths = . tm
[cc]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = cc
[nv]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = nv
[hepump]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hepump
[hemot]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = hemot
[ln2fill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = ln2fill
[hefill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hefill
[lev]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = lev
[mf]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = mf
[tcoil]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = tcoil
[table]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = table
[ccu2]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = ccu2
[lnv]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = lnv
[lpr]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = lpr
[lambdawatch]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = lambdawatch
[stick_io]
description = dom motor IO
class = secop_psi.phytron.PhytronIO
uri = ma11-ts.psi.ch:3005
[stickrot]
description = stick rotation, typically not used as omega
class = secop_psi.phytron.Motor
io = stick_io
encoder_mode = CHECK

114
cfg/main/ma11_cfg.py Normal file
View File

@ -0,0 +1,114 @@
Node('ma11.config.sea.psi.ch',
'MA11 cryomagnet for SANS',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma11.config',
config='ma11.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
rel_paths=['.', 'tm'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='nv',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='hemot',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hefill',
)
Mod('lev',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='lev',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='mf',
)
Mod('tcoil',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='tcoil',
)
Mod('table',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='table',
)
Mod('ccu2',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='ccu2',
)
Mod('lnv',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='lnv',
)
Mod('lpr',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='lpr',
)
Mod('lambdawatch',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='lambdawatch',
)
Mod('stick_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma11-ts.psi.ch:3005',
)
Mod('stickrot',
'frappy_psi.phytron.Motor',
'stick rotation, typically not used as omega',
io='stick_io',
encoder_mode='CHECK',
)

View File

@ -1,67 +0,0 @@
[NODE]
description = compact 6 Tesla vertical cryomagnet
id = ma6.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for ma6.config
config = ma6.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
rel_paths = . tm
[cc]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = cc
[nv]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = nv
[hepump]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hepump
[hemot]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = hemot
[ln2fill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = ln2fill
[hefill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hefill
[mf]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = mf
[lev]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = lev
[om_io]
description = dom motor IO
class = secop_psi.phytron.PhytronIO
uri = ma6-ts.psi.ch:3003
[om]
description = stick rotation, typically used for omega
class = secop_psi.phytron.Motor
io = om_io
encoder_mode = NO

78
cfg/main/ma6_cfg.py Normal file
View File

@ -0,0 +1,78 @@
Node('ma6.config.sea.psi.ch',
'compact 6 Tesla vertical cryomagnet',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma6.config',
config='ma6.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
rel_paths=['.', 'tm'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='nv',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='hemot',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hefill',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='mf',
)
Mod('lev',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='lev',
)
Mod('om_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma6-ts.psi.ch:3003',
)
Mod('om',
'frappy_psi.phytron.Motor',
'stick rotation, typically used for omega',
io='om_io',
encoder_mode='NO',
)

View File

@ -1,84 +0,0 @@
[NODE]
description = 6.8 Tesla horizontal cryomagnet
id = ma7.config.sea.psi.ch
[sea_main]
class = secop_psi.sea.SeaClient
description = main sea connection for ma7.config
config = ma7.config
service = main
[tt]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = tt
rel_paths = . tm
[cc]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = cc
[nv]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = nv
[hefill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hefill
[hepump]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = hepump
[hemot]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = hemot
[ln2fill]
class = secop_psi.sea.SeaWritable
io = sea_main
sea_object = ln2fill
[mf]
class = secop_psi.sea.SeaDrivable
io = sea_main
sea_object = mf
[lev]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = lev
[tcoil1]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = tcoil
rel_paths = ta
[tcoil2]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = tcoil
rel_paths = tb
[table]
class = secop_psi.sea.SeaReadable
io = sea_main
sea_object = table
[stick_io]
description = dom motor IO
class = secop_psi.phytron.PhytronIO
uri = ma7-ts.psi.ch:3007
[stickrot]
description = stick rotation, typically not used as omega
class = secop_psi.phytron.Motor
io = stick_io
encoder_mode = CHECK

98
cfg/main/ma7_cfg.py Normal file
View File

@ -0,0 +1,98 @@
Node('ma7.config.sea.psi.ch',
'6.8 Tesla horizontal cryomagnet',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma7.config',
config='ma7.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
rel_paths=['.', 'tm'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='nv',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='hemot',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable',
io='sea_main',
sea_object='ln2fill',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable',
io='sea_main',
sea_object='mf',
)
Mod('lev',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='lev',
)
Mod('tcoil1',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='tcoil',
rel_paths=['ta'],
)
Mod('tcoil2',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='tcoil',
rel_paths=['tb'],
)
Mod('table',
'frappy_psi.sea.SeaReadable',
io='sea_main',
sea_object='table',
)
Mod('stick_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma7-ts.psi.ch:3007',
)
Mod('stickrot',
'frappy_psi.phytron.Motor',
'stick rotation, typically not used as omega',
io='stick_io',
encoder_mode='CHECK',
)

105
cfg/main/ma7two_cfg.py Normal file
View File

@ -0,0 +1,105 @@
Node('cfg/main/ma7two.cfg',
'6.8 Tesla horizontal cryomagnet with two heater loops',
interface='5000',
name='ma7two',
)
Mod('sea_main',
'secop_psi.sea.SeaClient',
'main sea connection for ma7two.config',
config='ma7two.config',
service='main',
)
Mod('tt',
'secop_psi.sea.SeaDrivable',
io='sea_main',
sea_object='tt',
)
Mod('cc',
'secop_psi.sea.SeaReadable',
io='sea_main',
sea_object='cc',
)
Mod('nv',
'secop_psi.sea.SeaWritable',
io='sea_main',
sea_object='nv',
)
Mod('hefill',
'secop_psi.sea.SeaWritable',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'secop_psi.sea.SeaWritable',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'secop_psi.sea.SeaDrivable',
io='sea_main',
sea_object='hemot',
)
Mod('nvflow',
'secop_psi.sea.SeaReadable',
io='sea_main',
sea_object='nvflow',
)
Mod('ln2fill',
'secop_psi.sea.SeaWritable',
io='sea_main',
sea_object='ln2fill',
)
Mod('mf',
'secop_psi.sea.SeaReadable',
io='sea_main',
sea_object='mf',
)
Mod('lev',
'secop_psi.sea.SeaReadable',
io='sea_main',
sea_object='lev',
)
Mod('tcoil1',
'secop_psi.sea.SeaReadable',
io='sea_main',
sea_object='tcoil',
rel_paths=['ta'],
)
Mod('tcoil2',
'secop_psi.sea.SeaReadable',
io='sea_main',
sea_object='tcoil',
rel_paths=['tb'],
)
Mod('table',
'secop_psi.sea.SeaReadable',
io='sea_main',
sea_object='table',
)
Mod('om_io',
'secop_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma7-ts.psi.ch:3007',
)
Mod('om',
'secop_psi.phytron.Motor',
'stick rotation',
io='om_io',
encoder_mode='CHECK',
)

Some files were not shown because too many files have changed in this diff Show More