Compare commits
344 Commits
tnmr
...
dilsc_feb2
| Author | SHA1 | Date | |
|---|---|---|---|
| 1111af5c1a | |||
| efa357d6c3 | |||
| 4d704612fc | |||
| 04755c5173 | |||
| 9636dc9cea | |||
|
|
485e81bfb0 | ||
|
|
0df50bb0f9 | ||
| de5f17695c | |||
| e4aa2149f7 | |||
| 9f656546df | |||
| 5affb9f31b | |||
| 5e3bf96df1 | |||
| 07995e2235 | |||
| 54f091d0fe | |||
| 14a71427fa | |||
| 486be9604e | |||
| a8f1495bc8 | |||
| 3ab9821860 | |||
| 0b9e227669 | |||
| befba09acc | |||
| 554f265eb8 | |||
| 4287ec6477 | |||
| aad1c33742 | |||
| b0315e133b | |||
|
|
c3f55435da | ||
| 12cb0cdade | |||
| 7ed7dd7493 | |||
| 031b30a4aa | |||
| 3597adf869 | |||
| 8bfe969a95 | |||
| 5a78a5b258 | |||
| 298f94e4d5 | |||
| 0fec736886 | |||
| 38b3a192ab | |||
| 4959619d56 | |||
| 6caf4fc993 | |||
| 95eb4e969a | |||
| ada4c43ebf | |||
| 9a40d27354 | |||
| 6929422b94 | |||
|
|
2cd66c2e08 | ||
|
|
268ebbe00e | ||
|
|
ea960f2250 | ||
| 9673f7b242 | |||
| 292d028fe6 | |||
| aa0c0421c3 | |||
| db43a77614 | |||
| 21bcc7ce98 | |||
|
|
7b9c099321 | ||
| 33a7c56fa2 | |||
| ab2fe6200a | |||
| d5d04dc82f | |||
| f23e42de1f | |||
| 2f6954c4f3 | |||
| b81fc7b122 | |||
| 704bba292a | |||
| f1e642b1b0 | |||
| 8e3cdc80e4 | |||
| 3496e391f6 | |||
| bb40a0820c | |||
|
|
8f739b11dc | ||
|
|
7ef386424c | ||
|
|
53b3dd2fad | ||
| 6554e5de47 | |||
| 60ec1edb32 | |||
| 131082313d | |||
| f12b0b3da0 | |||
| 5ecd9557a3 | |||
|
|
3769ddca75 | ||
|
|
a4dec7b832 | ||
| 390af7eff7 | |||
| f495313018 | |||
| 18ded2159c | |||
| 760fc9eb40 | |||
| 5d348eb7b1 | |||
| 86767e2fa1 | |||
| 8a995aafed | |||
| 7379ea91e5 | |||
| cf42119f85 | |||
| 80d9a790ec | |||
| 5951312d40 | |||
| 778ac17172 | |||
| dfbc1c757a | |||
| 54b58f2188 | |||
| f855b9db40 | |||
| 6fd365197a | |||
| 8b2abf7044 | |||
| 182a8c7e49 | |||
| 6da1a89459 | |||
| f1d5e82bb4 | |||
| e6fdd79df4 | |||
| a35231f5bd | |||
| 9c7b6aeb94 | |||
| 68e2e06905 | |||
|
|
3563a0db16 | ||
| 4cb0031302 | |||
| 4bfb76ca82 | |||
| 3e6f1bebf7 | |||
|
|
efca358c72 | ||
|
|
319f3b4649 | ||
|
|
7fc030191d | ||
|
|
3959da6847 | ||
| 39171fe06e | |||
| 0972e8c7e8 | |||
| 7b9d2d1701 | |||
|
|
f276b973f5 | ||
|
|
8739ef04d7 | ||
| aea73d976c | |||
|
|
4c98a4c706 | ||
|
|
62146aa477 | ||
| 2bdfcf10a3 | |||
| f9db90d89b | |||
| 1ded96abba | |||
| cb170bd73b | |||
| a379805e43 | |||
|
|
9ff8c3ba54 | ||
|
|
1d7351ba4f | ||
|
|
3ac8876b37 | ||
| 9fa5aba052 | |||
| bc13a912b4 | |||
|
|
33ba9ca946 | ||
| 7d43f1cd58 | |||
| 21a3865c5d | |||
| f1a639bc3c | |||
| 98cdbafa7a | |||
|
|
6752997048 | ||
|
|
026ab3f4b2 | ||
| 20ad159722 | |||
| 7316632fa6 | |||
| 2159753398 | |||
| 8cb3ba7dfc | |||
| b1a24b253a | |||
| 5a553dbdeb | |||
|
|
e9f687e6dd | ||
| 1ac2f8557c | |||
| 774f33122a | |||
| 1da7657483 | |||
| ac3bf5b122 | |||
| f6f2dd189b | |||
| d5924567da | |||
| 9152ea1d26 | |||
| a124adab97 | |||
| 2e21bcdd0a | |||
| 526a182ed7 | |||
| b1ddc01fbb | |||
| 7c9296fe2e | |||
| 34b93adef0 | |||
| 10018b8cad | |||
| 57e0a2cc72 | |||
| a2bfe878b6 | |||
| 9320541754 | |||
| bd246c5ca7 | |||
|
|
dee3514065 | ||
| 93c8866f37 | |||
| acb3bdad6a | |||
| 5e3fb10884 | |||
| 3b25251e10 | |||
| 903e17a6e5 | |||
| 9109170752 | |||
| 05d0cfb193 | |||
| 8253fe471b | |||
| 245f4f48bf | |||
| c523e8f84e | |||
| 6e73420d0f | |||
| 483d4c9d6f | |||
| 77acda840a | |||
| 1eecc93f71 | |||
| 1d9e07edb4 | |||
| 9058ef054b | |||
| a7b741eaa4 | |||
| 41ce909172 | |||
| 7690481938 | |||
|
|
3d9e9c59d6 | ||
| 7d2eacfe5c | |||
| ccf38f87d9 | |||
| b6cadf4a69 | |||
| 1c1911f8a8 | |||
| 99ebb9d110 | |||
| e47d07f706 | |||
| 5f034a40f8 | |||
| 57082e276f | |||
| 2c6b42f2aa | |||
| 762913012b | |||
| f491e53f8a | |||
| 92a812f92f | |||
| c0fbbdb419 | |||
| 29226a1062 | |||
| 70b9c88f82 | |||
| 0d3df7be92 | |||
| 5b7f4604ad | |||
| 09056ea87e | |||
| 21dfcbd290 | |||
| 84e55d9c8d | |||
| cbb005d942 | |||
| 929f55055e | |||
| e38cd11bfe | |||
| 544e42033d | |||
| 8bbf65f6e8 | |||
| e98f81a7c9 | |||
| 8f1375aa31 | |||
| 584a293643 | |||
| 73e06c590b | |||
| 4f6cb8755e | |||
| a037accbb8 | |||
| 2ff3a17427 | |||
| 495709b670 | |||
| d9cc85c1df | |||
| b30bd308a9 | |||
| 039ece9549 | |||
| 6c4bb78f97 | |||
| b226f2c7c0 | |||
| 3687ed85e5 | |||
| 7ff88cf819 | |||
| 25b8780b11 | |||
| 246ab99e12 | |||
| 229604439b | |||
| 114af36ac6 | |||
| ca6aebd290 | |||
| 49ad153605 | |||
| c6157049d7 | |||
| 3977fad3f3 | |||
| eaac83e4d5 | |||
| 1619e042e9 | |||
| 8d6ba91a5e | |||
| 21c49df1a2 | |||
| a771259ecf | |||
| c779d49548 | |||
| 5f65b6b4ce | |||
| 70c3f5f37f | |||
| 3e599a24d7 | |||
| e638661edc | |||
| 772f45a241 | |||
| e589ed1063 | |||
| 1a616ecab1 | |||
| 61aeafdfb6 | |||
|
|
c89c982c42 | ||
| acbb17f367 | |||
| 4bda112bb7 | |||
| 8029443f1b | |||
| 57e9367e40 | |||
| de7a91d727 | |||
| 078ac7c600 | |||
| 8b2c5f6144 | |||
| 99eb600d90 | |||
|
|
48d5fe5ea2 | ||
|
|
331dc544ad | ||
|
|
a5cc98d0b0 | ||
|
|
d3fc01689f | ||
|
|
dec286460d | ||
|
|
d768d84ea1 | ||
|
|
4d8390c1fe | ||
|
|
6ec8348355 | ||
|
|
10dad6da47 | ||
|
|
185bf7bc88 | ||
| 499ae69f29 | |||
| 4d7e5d3cdc | |||
| 48230334af | |||
| 6538500881 | |||
| bcf57f53c3 | |||
| fb01f81cb6 | |||
| 3b03e578bb | |||
| 804581546d | |||
| 1ca35cf8e9 | |||
|
|
adc9a6da71 | ||
| 7f22a270e6 | |||
| 7d133bacfe | |||
|
|
1760881f56 | ||
| 04692bd1aa | |||
| ffafd7344c | |||
|
|
b1bf5e866d | ||
|
|
e4748ef9c9 | ||
| b4bb172ada | |||
| 4fd9c17bcb | |||
| 76c6ebe92c | |||
| 12b0549cc0 | |||
| 3aa99e2268 | |||
| 72eaeac698 | |||
| d3831b3974 | |||
|
|
f861701fc2 | ||
| 452eb00417 | |||
| 52472acae9 | |||
| fee7c4904b | |||
| 3141e22894 | |||
| fbccd0f9b7 | |||
| 9071a5bcf7 | |||
| 1588703f99 | |||
| fe041bac0a | |||
| 07b758c3dd | |||
| f9a2152883 | |||
| 25891f296d | |||
| 0d1c7ba76f | |||
| 9afcc49430 | |||
| 7895470301 | |||
| 9df43bb940 | |||
|
|
ab558b3390 | ||
|
|
fad330b71d | ||
|
|
3cc8db881e | ||
| fa71b8ee25 | |||
| dbc6f17e5e | |||
| 0c23ee46a1 | |||
| d6cf1f7629 | |||
| 41baf5805f | |||
| bc5edec06f | |||
| e411ded55b | |||
| ad9defab0f | |||
| fbb0d10c55 | |||
| bc33933a1a | |||
| 2d310bc612 | |||
| e0f9b4a858 | |||
|
|
16834f8802 | ||
|
|
d9650d7fc7 | ||
|
|
569c0a3399 | ||
|
|
cab2bb85ba | ||
|
|
2fb05b37f8 | ||
|
|
ad2a79c312 | ||
|
|
82b4af4faa | ||
| ad07ecdd69 | |||
| cf24bbc3c3 | |||
| 29c66fa19a | |||
| 25a887dcab | |||
| 36ffb0a31f | |||
| b544d2af98 | |||
|
|
5db1acb07c | ||
|
|
880327c544 | ||
| 4f1883ba27 | |||
| 3043200012 | |||
|
|
1b4865c608 | ||
|
|
f7576cf541 | ||
|
|
587b170f6a | ||
|
|
1c42859466 | ||
|
|
1f832388d7 | ||
|
|
5f9344109d | ||
|
|
99bdafdd0c | ||
|
|
ab21bb5e3f | ||
|
|
99e32065b1 | ||
|
|
c1ffc160a2 | ||
| 89bf080dab | |||
| 047f3a7606 | |||
| 7f7c1a85ab | |||
|
|
5aff4b9dab | ||
|
|
2bd30c4423 | ||
| 0641968715 | |||
| d9a2045fca | |||
| ab00c45db0 |
@@ -1,2 +1,2 @@
|
||||
Frappy framework for implementing SEC-nodes (see SECoP protocol on github).
|
||||
SECoP playground for creating specification and testing one implementation.
|
||||
|
||||
|
||||
12
.gitignore
vendored
12
.gitignore
vendored
@@ -1,15 +1,13 @@
|
||||
frappydemo.PID
|
||||
log/*
|
||||
html/*
|
||||
*.pyc
|
||||
pid/*
|
||||
|
||||
# ide
|
||||
# ide
|
||||
.idea
|
||||
|
||||
RELEASE-VERSION
|
||||
build
|
||||
*.egg-info
|
||||
|
||||
# Sphinx
|
||||
doc/_build
|
||||
@@ -22,9 +20,9 @@ doc/_build
|
||||
.coverage
|
||||
._*
|
||||
|
||||
# jupyter
|
||||
.ipynb_checkpoints/
|
||||
*.ipynb
|
||||
|
||||
# pyinstaller
|
||||
dist/
|
||||
|
||||
*.cfg
|
||||
*.bk.tnt
|
||||
*.tps
|
||||
@@ -1,8 +0,0 @@
|
||||
[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
|
||||
31
.pylintrc
31
.pylintrc
@@ -9,7 +9,7 @@
|
||||
|
||||
# Add <file or directory> to the black list. It should be a base name, not a
|
||||
# path. You may set this option multiple times.
|
||||
ignore = .git,resources_qt5.py,resources_qt6.py
|
||||
ignore = .git
|
||||
|
||||
# Pickle collected data for later comparisons.
|
||||
persistent=yes
|
||||
@@ -38,23 +38,26 @@ confidence=
|
||||
# multiple time.
|
||||
disable=missing-docstring
|
||||
,locally-disabled
|
||||
,locally-enabled
|
||||
,fixme
|
||||
,no-member
|
||||
,not-callable
|
||||
,bad-whitespace
|
||||
,wrong-import-position
|
||||
,ungrouped-imports
|
||||
,import-self
|
||||
,bad-continuation
|
||||
,protected-access
|
||||
,unused-argument
|
||||
,duplicate-code
|
||||
,attribute-defined-outside-init
|
||||
,access-member-before-definition
|
||||
,no-self-use
|
||||
,broad-except
|
||||
,unneeded-not
|
||||
,unidiomatic-typecheck
|
||||
,undefined-loop-variable
|
||||
,consider-using-f-string
|
||||
,use-dict-literal
|
||||
,redefined-variable-type
|
||||
,deprecated-lambda
|
||||
|
||||
[REPORTS]
|
||||
|
||||
@@ -64,6 +67,10 @@ disable=missing-docstring
|
||||
|
||||
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
|
||||
|
||||
# Put messages in a separate file for each module / package specified on the
|
||||
# command line instead of printing them on stdout. Reports (if any) will be
|
||||
# written in a file name "pylint_global.[txt|html]".
|
||||
files-output=no
|
||||
|
||||
# Tells whether to display a full report or only the messages
|
||||
reports=no
|
||||
@@ -86,11 +93,14 @@ dummy-variables-rgx=_|dummy
|
||||
|
||||
# List of additional names supposed to be defined in builtins. Remember that
|
||||
# you should avoid to define new builtins when possible.
|
||||
additional-builtins=Node,Mod,Param,Command,Group
|
||||
additional-builtins=
|
||||
|
||||
|
||||
[BASIC]
|
||||
|
||||
# List of builtins function names that should not be used, separated by a comma
|
||||
#bad-functions=map,filter,apply,input
|
||||
bad-functions=apply,input
|
||||
|
||||
# Regular expression which should only match correct module names
|
||||
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9_]+))$
|
||||
@@ -145,6 +155,12 @@ notes=FIXME,XXX,TODO
|
||||
# Maximum number of characters on a single line.
|
||||
max-line-length=132
|
||||
|
||||
# List of optional constructs for which whitespace checking is disabled. `dict-
|
||||
# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
|
||||
# `trailing-comma` allows a space between comma and closing bracket: (a, ).
|
||||
# `empty-line` allows space-only lines.
|
||||
no-space-check=trailing-comma,dict-separator
|
||||
|
||||
# Maximum number of lines in a module
|
||||
max-module-lines=1000
|
||||
|
||||
@@ -202,10 +218,7 @@ max-branches=50
|
||||
max-statements=150
|
||||
|
||||
# Maximum number of parents for a class (see R0901).
|
||||
max-parents=20
|
||||
|
||||
# Maximum number of positional arguments
|
||||
max-positional-arguments=10
|
||||
max-parents=25
|
||||
|
||||
# Maximum number of attributes for a class (see R0902).
|
||||
max-attributes=50
|
||||
|
||||
26
Makefile
26
Makefile
@@ -3,18 +3,12 @@
|
||||
|
||||
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:
|
||||
@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
|
||||
@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
|
||||
|
||||
build:
|
||||
python3 setup.py build
|
||||
@@ -38,18 +32,18 @@ test-verbose:
|
||||
python3 $(shell which pytest) -v test -s
|
||||
|
||||
test-coverage:
|
||||
python3 $(shell which pytest) -v test --cov=frappy
|
||||
python3 $(shell which pytest) -v test --cov=secop
|
||||
|
||||
doc:
|
||||
$(MAKE) -C doc html
|
||||
|
||||
lint:
|
||||
pylint -f colorized -r n --rcfile=.pylintrc frappy frappy_* test
|
||||
pylint -f colorized -r n --rcfile=.pylintrc secop secop_* test
|
||||
|
||||
isort:
|
||||
@find test -name '*.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
|
||||
@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
|
||||
|
||||
release-patch:
|
||||
MODE="patch" $(MAKE) release
|
||||
@@ -61,7 +55,7 @@ release-major:
|
||||
MODE="major" $(MAKE) release
|
||||
|
||||
release:
|
||||
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
|
||||
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
|
||||
|
||||
|
||||
build-pkg:
|
||||
|
||||
76
README.md
76
README.md
@@ -1,33 +1,63 @@
|
||||
Frappy: Framework for programming secnodes in Python
|
||||
====================================================
|
||||
# Frappy Framework
|
||||
|
||||
Frappy is a Python-framework for writing [SECoP](https://github.com/SampleEnvironment/SECoP) servers (called SECNodes or Nodes) and Clients.
|
||||
It comes with its own Graphical client and a collection of example Nodes.
|
||||
It is able to use TCP and Serial connections.
|
||||
current running code at SINQ, with newest changes not yet pushed
|
||||
through the Gerrit workflow at MLZ
|
||||
|
||||
To get started, look at the provided demo, the provided examples, or have a look
|
||||
at the INTRODUCTION section.
|
||||
## Branches
|
||||
|
||||
Main development is done
|
||||
[here](https://forge.frm2.tum.de/review/q/project:secop%252Ffrappy)
|
||||
and a readonly GitHub-mirror for easier access is available
|
||||
[here](https://github.com/SampleEnvironment/frappy).
|
||||
branches:
|
||||
|
||||
Requirements
|
||||
------------
|
||||
- mlz: master from forge.frm2.tum.de:29418/sine2020/secop/playground
|
||||
this is not present at git.psi.ch:sinqdev/frappy.git!
|
||||
- master: the last synced state between mlz and wip/work, except an added README.md
|
||||
(this does NOT contain local repo files only, however, all common files work/mlz should match)
|
||||
- core: the modifications of the core frappy parts (to be going through gerrit)
|
||||
- work: current working version, usually in use on /home/l_samenv/frappy (and on neutron instruments)
|
||||
this should be a copy of an earlier state of the wip branch
|
||||
- wip: current test version, usually in use on /home/l_samenv/frappy_wip
|
||||
IMPORTANT: make commits containing either only files to be pushed to Gerrit or only
|
||||
PSI internal files, not mixed. Mark local commits with '[PSI]' in the commit message.
|
||||
|
||||
See `requirements.txt`.
|
||||
|
||||
Demo
|
||||
----
|
||||
master --> mlz # these branches match after a sync step, but they might have a different history
|
||||
master --> work --> wip
|
||||
|
||||
Use the following command after installing the dependencies:
|
||||
apply commits from mlz to master: (rebase ?) or use cherry-pick:
|
||||
|
||||
```
|
||||
$ make demo
|
||||
```
|
||||
git cherry-pick <sha1>..<sha2>
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
where sha1 is the last commit already in wip, and sha2 ist the last commit to be applied
|
||||
(for a single commit <sha1>.. may be omitted)
|
||||
|
||||
the wip branch is also present in an other directory (currently zolliker/switchdrive/gitmlz/frappy),
|
||||
where commits may be cherry picked for input to Gerrit. As generally in the review process some additional
|
||||
changes are done, eventually a sync step should happen:
|
||||
|
||||
1) ideally, this is done when work and wip match
|
||||
2) make sure branches mlz, master, wip and work are in syns with remote, push/pull otherwise
|
||||
3) cherry-pick commits from mlz to master
|
||||
4) make sure master and mlz branches match (git diff --name-only master..wip should only return README.md)
|
||||
5) create branch new_work from master
|
||||
6) go through commits in wip and sort out:
|
||||
- core commits already pushed through gerrit are skipped
|
||||
- all other commits are to be cherry-picked
|
||||
7) when arrived at the point where the new working version should be,
|
||||
copy new_wip branch to work with 'git checkout -B work'.
|
||||
Not sure if this works, as work is to be pushed to git.psi.ch.
|
||||
We might first remove the remote branch with 'git push origin --delete work'.
|
||||
And then create again (git push origin work)?
|
||||
8) continue with (6) if wip and work should differ, and do like (7) for wip branch
|
||||
9) delete new_wip branch, push master, wip and work branches
|
||||
|
||||
|
||||
## Procedure to update PPMS
|
||||
|
||||
1) git checkout wip (or work, whatever state to copy to ppms)
|
||||
2) git checkout -B ppms # local branch ?
|
||||
3) assume PPMSData is mounted on /Volumes/PPMSData
|
||||
|
||||
cp -r secop_psi /Volumes/PPMSData/zolliker/frappy/secop_psi
|
||||
cp -r secop /Volumes/PPMSData/zolliker/frappy/secop
|
||||
|
||||
it may be that additional folder have to copied ...
|
||||
|
||||
[See here for documentation of Frappy](https://forge.frm2.tum.de/public/doc/frappy/html/)
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# *****************************************************************************
|
||||
# Copyright (c) 2015-2024 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 pathlib import Path
|
||||
|
||||
# Add import path for inplace usage
|
||||
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
|
||||
|
||||
from frappy.client.interactive import init, run, clientenv, interact
|
||||
|
||||
|
||||
def parseArgv(argv):
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-i', '--include',
|
||||
help='file to execute after connecting to the clients', metavar='file',
|
||||
type=Path, 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)
|
||||
|
||||
|
||||
args = parseArgv(sys.argv[1:])
|
||||
|
||||
success = init(*args.node)
|
||||
|
||||
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()
|
||||
interact(run_error)
|
||||
@@ -1,82 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# pylint: disable=invalid-name
|
||||
# *****************************************************************************
|
||||
# Copyright (c) 2015-2024 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>
|
||||
#
|
||||
# *****************************************************************************
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import sys
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
|
||||
# Add import path for inplace usage
|
||||
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
|
||||
|
||||
import logging
|
||||
from mlzlog import ColoredConsoleHandler
|
||||
|
||||
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('-D', '--detailed',
|
||||
help='Start in detailed mode',
|
||||
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
|
||||
|
||||
args = parseArgv(argv[1:])
|
||||
|
||||
loglevel = logging.DEBUG if args.debug else (logging.ERROR if args.quiet else logging.INFO)
|
||||
logger = logging.getLogger('gui')
|
||||
logger.setLevel(logging.DEBUG)
|
||||
if sys.stdout is not None:
|
||||
console = ColoredConsoleHandler()
|
||||
console.setLevel(loglevel)
|
||||
logger.addHandler(console)
|
||||
|
||||
app = QApplication(argv)
|
||||
|
||||
win = MainWindow(args, logger)
|
||||
app.aboutToQuit.connect(win._onQuit)
|
||||
win.show()
|
||||
|
||||
return app.exec()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv))
|
||||
128
bin/frappy-scan
128
bin/frappy-scan
@@ -1,128 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# *****************************************************************************
|
||||
#
|
||||
# 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 Zaft <a.zaft@fz-juelich.de>
|
||||
#
|
||||
# *****************************************************************************
|
||||
|
||||
"""SEC node autodiscovery tool."""
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import select
|
||||
import socket
|
||||
import sys
|
||||
from collections import namedtuple
|
||||
from time import time as currenttime
|
||||
|
||||
UDP_PORT = 10767
|
||||
|
||||
Answer = namedtuple('Answer',
|
||||
'address, port, equipment_id, firmware, description')
|
||||
|
||||
|
||||
def decode(msg, addr):
|
||||
msg = msg.decode('utf-8')
|
||||
try:
|
||||
data = json.loads(msg)
|
||||
except Exception:
|
||||
return None
|
||||
if not isinstance(data, dict):
|
||||
return None
|
||||
if data.get('SECoP') != 'node':
|
||||
return None
|
||||
try:
|
||||
eq_id = data['equipment_id']
|
||||
fw = data['firmware']
|
||||
desc = data['description']
|
||||
port = data['port']
|
||||
except KeyError:
|
||||
return None
|
||||
addr, _scanport = addr
|
||||
return Answer(addr, port, eq_id, fw, desc)
|
||||
|
||||
|
||||
def print_answer(answer, *, short=False):
|
||||
if short:
|
||||
# NOTE: keep this easily parseable!
|
||||
print(f'{answer.equipment_id} {answer.address}:{answer.port}')
|
||||
return
|
||||
print(f'Found {answer.equipment_id} at {answer.address}:')
|
||||
print(f' Port: {answer.port}')
|
||||
print(f' Firmware: {answer.firmware}')
|
||||
desc = answer.description.replace('\n', '\n ')
|
||||
print(f' Node description: {desc}')
|
||||
print()
|
||||
|
||||
|
||||
def scan(max_wait=1.0):
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
|
||||
# send a general broadcast
|
||||
try:
|
||||
s.sendto(json.dumps(dict(SECoP='discover')).encode('utf-8'),
|
||||
('255.255.255.255', UDP_PORT))
|
||||
except OSError as e:
|
||||
print('could not send the broadcast:', e)
|
||||
# we still keep listening for self-announcements
|
||||
start = currenttime()
|
||||
seen = set()
|
||||
while currenttime() < start + max_wait:
|
||||
res = select.select([s], [], [], 0.1)
|
||||
if res[0]:
|
||||
try:
|
||||
msg, addr = s.recvfrom(1024)
|
||||
except socket.error: # pragma: no cover
|
||||
continue
|
||||
answer = decode(msg, addr)
|
||||
if answer is None:
|
||||
continue
|
||||
if (answer.address, answer.equipment_id, answer.port) in seen:
|
||||
continue
|
||||
seen.add((answer.address, answer.equipment_id, answer.port))
|
||||
yield answer
|
||||
|
||||
|
||||
def listen(*, short=False):
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
if os.name == 'nt':
|
||||
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
else:
|
||||
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
|
||||
s.bind(('0.0.0.0', UDP_PORT))
|
||||
while True:
|
||||
try:
|
||||
msg, addr = s.recvfrom(1024)
|
||||
except KeyboardInterrupt:
|
||||
break
|
||||
answer = decode(msg, addr)
|
||||
if answer:
|
||||
print_answer(answer, short=short)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-l', '--listen', action='store_true',
|
||||
help='Print short info. '
|
||||
'Keep listening after the broadcast.')
|
||||
args = parser.parse_args(sys.argv[1:])
|
||||
for answer in scan():
|
||||
print_answer(answer, short=args.listen)
|
||||
if args.listen:
|
||||
listen(short=args.listen)
|
||||
64
bin/make_doc.py
Executable file
64
bin/make_doc.py
Executable file
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- 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>
|
||||
#
|
||||
# *****************************************************************************
|
||||
|
||||
|
||||
import os
|
||||
from os import path
|
||||
|
||||
import markdown
|
||||
|
||||
BASE_PATH = path.abspath(path.join(path.dirname(__file__), '..'))
|
||||
DOC_SRC = path.join(BASE_PATH, 'doc')
|
||||
DOC_DST = path.join(BASE_PATH, 'html')
|
||||
|
||||
conv = markdown.Markdown()
|
||||
|
||||
for dirpath, dirnames, filenames in os.walk(DOC_SRC):
|
||||
# re-create the dir-structure of DOC_SRC into DOC_DST
|
||||
dst_path = path.join(DOC_DST, path.relpath(dirpath, DOC_SRC))
|
||||
try:
|
||||
os.mkdir(dst_path)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
for fn in filenames:
|
||||
full_name = path.join(dirpath, fn)
|
||||
sub_name = path.relpath(full_name, DOC_SRC)
|
||||
final_name = path.join(DOC_DST, sub_name)
|
||||
|
||||
if not fn.endswith('md'):
|
||||
# just copy everything else
|
||||
with open(full_name, 'rb') as fi:
|
||||
with open(final_name, 'wb') as fo:
|
||||
# WARNING: possible Memory hog!
|
||||
fo.write(fi.read())
|
||||
continue
|
||||
# treat .md files special
|
||||
final_sub_name = path.splitext(sub_name)[0] + '.html'
|
||||
final_name = path.join(DOC_DST, final_sub_name)
|
||||
print("Converting %s to %s" %(sub_name, final_sub_name))
|
||||
# transform one file
|
||||
conv.reset()
|
||||
conv.convertFile(input=full_name,
|
||||
output=final_name,
|
||||
encoding="utf-8")
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
# pylint: disable=invalid-name
|
||||
# -*- coding: utf-8 -*-
|
||||
# *****************************************************************************
|
||||
# Copyright (c) 2015-2024 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
|
||||
@@ -29,11 +29,8 @@ from os import path
|
||||
# Add import path for inplace usage
|
||||
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
|
||||
|
||||
import logging
|
||||
from mlzlog import ColoredConsoleHandler
|
||||
|
||||
from frappy.gui.qt import QApplication
|
||||
from frappy.gui.cfg_editor.mainwindow import MainWindow
|
||||
from secop.gui.qt import QApplication
|
||||
from secop.gui.cfg_editor.mainwindow import MainWindow
|
||||
|
||||
|
||||
def main(argv=None):
|
||||
@@ -41,13 +38,9 @@ def main(argv=None):
|
||||
parser.add_argument('-f', '--file', help='Configuration file to open.')
|
||||
args = parser.parse_args()
|
||||
app = QApplication(argv)
|
||||
logger = logging.getLogger('gui')
|
||||
console = ColoredConsoleHandler()
|
||||
console.setLevel(logging.INFO)
|
||||
logger.addHandler(console)
|
||||
window = MainWindow(args.file, log=logger)
|
||||
window = MainWindow(args.file)
|
||||
window.show()
|
||||
return app.exec()
|
||||
return app.exec_()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
71
bin/secop-gui
Executable file
71
bin/secop-gui
Executable file
@@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env python3
|
||||
# pylint: disable=invalid-name
|
||||
# -*- 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>
|
||||
#
|
||||
# *****************************************************************************
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import sys
|
||||
from os import path
|
||||
|
||||
# Add import path for inplace usage
|
||||
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
|
||||
|
||||
import mlzlog
|
||||
|
||||
from secop.gui.qt import QApplication
|
||||
from secop.gui.mainwindow import MainWindow
|
||||
|
||||
|
||||
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)
|
||||
|
||||
if '-d' in argv or '--debug' in argv:
|
||||
mlzlog.initLogging('gui', 'debug')
|
||||
else:
|
||||
mlzlog.initLogging('gui', 'info')
|
||||
|
||||
app = QApplication(argv)
|
||||
|
||||
hosts = [host for host in argv[1:] if not host.startswith('-')]
|
||||
if not hosts:
|
||||
hosts = ['localhost:10767']
|
||||
win = MainWindow(hosts)
|
||||
win.show()
|
||||
|
||||
return app.exec_()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv))
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/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
|
||||
@@ -22,28 +23,20 @@
|
||||
#
|
||||
# *****************************************************************************
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
from pathlib import Path
|
||||
import argparse
|
||||
from os import path
|
||||
|
||||
# Add import path for inplace usage
|
||||
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
|
||||
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
|
||||
|
||||
from frappy.lib import generalConfig
|
||||
from frappy.logging import logger
|
||||
from frappy.server import Server
|
||||
from secop.lib import generalConfig
|
||||
from secop.logging import logger
|
||||
from secop.server import Server
|
||||
|
||||
|
||||
def parseArgv(argv):
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Manage a SECoP server",
|
||||
epilog="""The server needs some configuration, by default from the
|
||||
generalConfig.cfg file. the keys confdir, logdir and piddir have to
|
||||
be set.
|
||||
Alternatively, one can set the environment variables FRAPPY_CONFDIR
|
||||
FRAPPY_LOGDIR and FRAPPY_PIDDIR to set the required values.
|
||||
"""
|
||||
)
|
||||
parser = argparse.ArgumentParser(description="Manage a SECoP server")
|
||||
loggroup = parser.add_mutually_exclusive_group()
|
||||
loggroup.add_argument("-v", "--verbose",
|
||||
help="Output lots of diagnostic information",
|
||||
@@ -68,9 +61,8 @@ def parseArgv(argv):
|
||||
action='store',
|
||||
help="comma separated list of cfg files,\n"
|
||||
"defaults to <name_of_the_instance>.\n"
|
||||
"If a config file contains a slash, it is treated as a"
|
||||
"path, otherwise the file is searched for in the "
|
||||
"configuration directory.",
|
||||
"cfgfiles given without '.cfg' extension are searched in the configuration directory, "
|
||||
"else they are treated as path names",
|
||||
default=None)
|
||||
parser.add_argument('-g',
|
||||
'--gencfg',
|
||||
@@ -98,21 +90,20 @@ def main(argv=None):
|
||||
args = parseArgv(argv[1:])
|
||||
|
||||
loglevel = 'debug' if args.verbose else ('error' if args.quiet else 'info')
|
||||
generalConfig.set_default('lazy_number_validation', args.relaxed)
|
||||
generalConfig.set_default('legacy_hasiodev', args.relaxed)
|
||||
generalConfig.set_default('tolerate_poll_property', args.relaxed)
|
||||
generalConfig.defaults = {k: args.relaxed for k in (
|
||||
'lazy_number_validation', 'disable_value_range_check', 'legacy_hasiodev', 'tolerate_poll_property')}
|
||||
generalConfig.init(args.gencfg)
|
||||
logger.init(loglevel)
|
||||
|
||||
cfgfiles = [s.strip() for s in args.cfgfiles.split(',')] if args.cfgfiles else None
|
||||
|
||||
srv = Server(args.name, logger.log, cfgfiles=cfgfiles,
|
||||
interface=args.port, testonly=args.test)
|
||||
srv = Server(args.name, logger.log, cfgfiles=args.cfgfiles, interface=args.port, testonly=args.test)
|
||||
|
||||
if args.daemonize:
|
||||
srv.start()
|
||||
else:
|
||||
srv.run()
|
||||
try:
|
||||
srv.run()
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
197
bin/sim-server
197
bin/sim-server
@@ -1,197 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# pylint: disable=invalid-name
|
||||
# *****************************************************************************
|
||||
# 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:
|
||||
# Markus Zolliker <markus.zolliker@psi.ch>
|
||||
# *****************************************************************************
|
||||
"""server for a string communicator
|
||||
|
||||
Usage:
|
||||
|
||||
bin/sim-server <communicator class> -p <server port> [-o <option1>=<value> <option2>=<value>]
|
||||
|
||||
open a server on <server port> to communicate with the string based <communicator> over TCP/IP.
|
||||
|
||||
Use cases, mainly for test purposes:
|
||||
|
||||
- relay to a hardware simulation written as a communicator
|
||||
|
||||
> bin/sim-server frappy_psi.ls370sim.Ls370Sim
|
||||
|
||||
- relay to a communicator not using TCP/IP, if Frappy should run on an other host
|
||||
|
||||
> bin/sim-server frappy.io.StringIO -o uri=serial:///dev/tty...
|
||||
|
||||
- as a T, if the hardware allows only one connection, and more than one is needed:
|
||||
|
||||
> bin/sim-server frappy.io.StringIO -o uri=tcp://<host>:<port>
|
||||
|
||||
typically using communicator class frappy.io.StringIO
|
||||
"""
|
||||
|
||||
import sys
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
import socket
|
||||
import time
|
||||
import os
|
||||
from ast import literal_eval
|
||||
from socketserver import BaseRequestHandler, ThreadingTCPServer
|
||||
|
||||
# Add import path for inplace usage
|
||||
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
|
||||
|
||||
from frappy.lib import get_class, formatException, mkthread
|
||||
|
||||
|
||||
class Logger:
|
||||
def debug(self, *args):
|
||||
pass
|
||||
|
||||
def log(self, level, *args):
|
||||
pass
|
||||
|
||||
def info(self, *args):
|
||||
print(*args)
|
||||
|
||||
exception = error = warn = info
|
||||
|
||||
|
||||
class TcpRequestHandler(BaseRequestHandler):
|
||||
def setup(self):
|
||||
print(f'connection opened from {self.client_address}')
|
||||
self.running = True
|
||||
self.request.settimeout(1)
|
||||
self.data = b''
|
||||
|
||||
def finish(self):
|
||||
"""called when handle() terminates, i.e. the socket closed"""
|
||||
# close socket
|
||||
try:
|
||||
self.request.shutdown(socket.SHUT_RDWR)
|
||||
except Exception:
|
||||
pass
|
||||
finally:
|
||||
print(f'connection closed from {self.client_address}')
|
||||
self.request.close()
|
||||
|
||||
def poller(self):
|
||||
while True:
|
||||
time.sleep(1.0)
|
||||
self.module.doPoll()
|
||||
|
||||
def handle(self):
|
||||
"""handle a new connection"""
|
||||
# do a copy of the options, as they are consumed
|
||||
self.module = self.server.modulecls(
|
||||
'mod', Logger(), dict(self.server.options), self.server)
|
||||
self.module.earlyInit()
|
||||
|
||||
mkthread(self.poller)
|
||||
while self.running:
|
||||
try:
|
||||
newdata = self.request.recv(1024)
|
||||
if not newdata:
|
||||
return
|
||||
except socket.timeout:
|
||||
# no new data during read, continue
|
||||
continue
|
||||
self.data += newdata
|
||||
while self.running:
|
||||
message, sep, self.data = self.data.partition(b'\n')
|
||||
if not sep:
|
||||
break
|
||||
cmd = message.decode('latin-1')
|
||||
try:
|
||||
reply = self.module.communicate(cmd.strip())
|
||||
if self.server.verbose:
|
||||
print('%-40s | %s' % (cmd, reply))
|
||||
except Exception:
|
||||
print(formatException(verbose=True))
|
||||
return
|
||||
outdata = reply.encode('latin-1') + b'\n'
|
||||
try:
|
||||
self.request.sendall(outdata)
|
||||
except Exception as e:
|
||||
print(repr(e))
|
||||
self.running = False
|
||||
|
||||
|
||||
class Server(ThreadingTCPServer):
|
||||
allow_reuse_address = os.name != 'nt' # False on Windows systems
|
||||
|
||||
class Dispatcher:
|
||||
def announce_update(self, *_):
|
||||
pass
|
||||
|
||||
def announce_update_error(self, *_):
|
||||
pass
|
||||
|
||||
def __init__(self, port, modulecls, options, verbose=False):
|
||||
super().__init__(('', port), TcpRequestHandler,
|
||||
bind_and_activate=True)
|
||||
self.secnode = None
|
||||
self.dispatcher = self.Dispatcher()
|
||||
self.verbose = verbose
|
||||
self.modulecls = get_class(modulecls)
|
||||
self.options = options
|
||||
print(f'started sim-server listening on port {port}')
|
||||
|
||||
|
||||
def parse_argv(argv):
|
||||
parser = argparse.ArgumentParser(description="Relay to a communicator (simulated HW or other)")
|
||||
parser.add_argument("-v", "--verbose",
|
||||
help="output full communication",
|
||||
action='store_true', default=False)
|
||||
parser.add_argument("cls",
|
||||
type=str,
|
||||
help="communicator class.\n",)
|
||||
parser.add_argument('-p',
|
||||
'--port',
|
||||
action='store',
|
||||
help='server port or uri',
|
||||
default=2089)
|
||||
parser.add_argument('-o',
|
||||
'--options',
|
||||
action='store',
|
||||
nargs='*',
|
||||
help='options in the form key=value',
|
||||
default=None)
|
||||
return parser.parse_args(argv)
|
||||
|
||||
|
||||
def main(argv=None):
|
||||
if argv is None:
|
||||
argv = sys.argv
|
||||
|
||||
args = parse_argv(argv[1:])
|
||||
options = {'description': ''}
|
||||
for item in args.options or ():
|
||||
key, eq, value = item.partition('=')
|
||||
if not eq:
|
||||
raise ValueError(f"missing '=' in {item}")
|
||||
try:
|
||||
value = literal_eval(value)
|
||||
except Exception:
|
||||
pass
|
||||
options[key] = value
|
||||
srv = Server(int(args.port), args.cls, options, args.verbose)
|
||||
srv.serve_forever()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv))
|
||||
154
bin/stringio-server
Executable file
154
bin/stringio-server
Executable file
@@ -0,0 +1,154 @@
|
||||
#!/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:
|
||||
# Markus Zolliker <markus.zolliker@psi.ch>
|
||||
# *****************************************************************************
|
||||
"""server for a string communicator
|
||||
|
||||
Usage:
|
||||
|
||||
bin/stringio-server <communciator> <server port>
|
||||
|
||||
open a server on <server port> to communicate with the string based <communicator> over TCP/IP.
|
||||
|
||||
Use cases, mainly for test purposes:
|
||||
- as a T, if the hardware allows only one connection, and more than one is needed
|
||||
- relay to a communicator not using TCP/IP, if Frappy should run on an other host
|
||||
- relay to a hardware simulation written as a communicator
|
||||
"""
|
||||
|
||||
import sys
|
||||
from os import path
|
||||
import asyncore
|
||||
import socket
|
||||
import ast
|
||||
|
||||
# Add import path for inplace usage
|
||||
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
|
||||
|
||||
from secop.lib import get_class, formatException
|
||||
|
||||
class LineHandler(asyncore.dispatcher_with_send):
|
||||
|
||||
def __init__(self, sock):
|
||||
self.buffer = b""
|
||||
asyncore.dispatcher_with_send.__init__(self, sock)
|
||||
self.crlf = 0
|
||||
|
||||
def handle_read(self):
|
||||
data = self.recv(8192)
|
||||
if data:
|
||||
parts = data.split(b"\n")
|
||||
if len(parts) == 1:
|
||||
self.buffer += data
|
||||
else:
|
||||
self.handle_line((self.buffer + parts[0]).decode('latin_1'))
|
||||
for part in parts[1:-1]:
|
||||
if part[-1] == b"\r":
|
||||
self.crlf = True
|
||||
part = part[:-1]
|
||||
else:
|
||||
self.crlf = False
|
||||
self.handle_line(part.decode('latin_1'))
|
||||
self.buffer = parts[-1]
|
||||
|
||||
def send_line(self, line):
|
||||
self.send((line + ("\r\n" if self.crlf else "\n")).encode('latin_1'))
|
||||
|
||||
|
||||
class LineServer(asyncore.dispatcher):
|
||||
|
||||
def __init__(self, host, port, lineHandlerClass):
|
||||
asyncore.dispatcher.__init__(self)
|
||||
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
self.set_reuse_addr()
|
||||
self.bind((host, port))
|
||||
self.listen(5)
|
||||
self.lineHandlerClass = lineHandlerClass
|
||||
|
||||
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)
|
||||
|
||||
def loop(self):
|
||||
asyncore.loop()
|
||||
|
||||
|
||||
class Server(LineServer):
|
||||
|
||||
class Dispatcher:
|
||||
def announce_update(self, *_):
|
||||
pass
|
||||
|
||||
def announce_update_error(self, *_):
|
||||
pass
|
||||
|
||||
def __init__(self, *args, **kwds):
|
||||
super().__init__(*args, **kwds)
|
||||
self.dispatcher = self.Dispatcher()
|
||||
|
||||
|
||||
class Handler(LineHandler):
|
||||
def handle_line(self, line):
|
||||
try:
|
||||
reply = module.do_communicate(line.strip())
|
||||
if verbose:
|
||||
print('%-40s | %s' % (line, reply))
|
||||
except Exception:
|
||||
print(formatException(verbose=True))
|
||||
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()
|
||||
4
cfg/addons.ini
Normal file
4
cfg/addons.ini
Normal file
@@ -0,0 +1,4 @@
|
||||
[FRAPPY]
|
||||
confdir = ~/frappy/cfg/addons:~/frappy/cfg/develop
|
||||
logdir = ~/frappylog
|
||||
piddir = ~/frappylog/pid
|
||||
13
cfg/addons/ah2700.cfg
Normal file
13
cfg/addons/ah2700.cfg
Normal file
@@ -0,0 +1,13 @@
|
||||
[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
|
||||
20
cfg/addons/ah2700sea.cfg
Normal file
20
cfg/addons/ah2700sea.cfg
Normal file
@@ -0,0 +1,20 @@
|
||||
[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
|
||||
14
cfg/addons/be-filter-boa.cfg
Normal file
14
cfg/addons/be-filter-boa.cfg
Normal file
@@ -0,0 +1,14 @@
|
||||
[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
|
||||
14
cfg/addons/focus-be-filter.cfg
Normal file
14
cfg/addons/focus-be-filter.cfg
Normal file
@@ -0,0 +1,14 @@
|
||||
[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
|
||||
16
cfg/addons/stickmotor.cfg
Normal file
16
cfg/addons/stickmotor.cfg
Normal file
@@ -0,0 +1,16 @@
|
||||
[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
|
||||
|
||||
|
||||
17
cfg/ah2700test.cfg
Normal file
17
cfg/ah2700test.cfg
Normal file
@@ -0,0 +1,17 @@
|
||||
[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
|
||||
@@ -1,10 +0,0 @@
|
||||
Node('AH2700Test.psi.ch',
|
||||
'AH2700 capacitance bridge test',
|
||||
'tcp://5000',
|
||||
)
|
||||
|
||||
Mod('cap',
|
||||
'frappy_psi.ah2700.Capacitance',
|
||||
'capacitance',
|
||||
uri='ldmse3-ts:3015',
|
||||
)
|
||||
111
cfg/amagnet.cfg
Normal file
111
cfg/amagnet.cfg
Normal file
@@ -0,0 +1,111 @@
|
||||
[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
|
||||
@@ -1,91 +0,0 @@
|
||||
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',
|
||||
currentsource = 'currentsource',
|
||||
enable = 'enable',
|
||||
polswitch = 'polarity',
|
||||
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,),
|
||||
)
|
||||
150
cfg/ccr.cfg
Normal file
150
cfg/ccr.cfg
Normal file
@@ -0,0 +1,150 @@
|
||||
[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
148
cfg/ccr_cfg.py
@@ -1,148 +0,0 @@
|
||||
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},
|
||||
)
|
||||
50
cfg/cryo.cfg
Normal file
50
cfg/cryo.cfg
Normal file
@@ -0,0 +1,50 @@
|
||||
[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
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
#####################################################################
|
||||
# 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'),
|
||||
)
|
||||
43
cfg/demo.cfg
Normal file
43
cfg/demo.cfg
Normal file
@@ -0,0 +1,43 @@
|
||||
[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`."
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
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',
|
||||
mf = 'mf',
|
||||
ts = 'ts',
|
||||
)
|
||||
8
cfg/develop/sea.cfg
Normal file
8
cfg/develop/sea.cfg
Normal file
@@ -0,0 +1,8 @@
|
||||
[NODE]
|
||||
description = sea client (communication only)
|
||||
id = comm.sea.psi.ch
|
||||
|
||||
[seaconn]
|
||||
class = secop_psi.sea.SeaClient
|
||||
description = a SEA connection
|
||||
visibility = 1
|
||||
8
cfg/develop/seadesc.cfg
Normal file
8
cfg/develop/seadesc.cfg
Normal file
@@ -0,0 +1,8 @@
|
||||
[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
|
||||
285
cfg/dilsc.cfg
Normal file
285
cfg/dilsc.cfg
Normal file
@@ -0,0 +1,285 @@
|
||||
[NODE]
|
||||
id = dilsc.psi.ch
|
||||
description = triton test
|
||||
|
||||
[INTERFACE]
|
||||
uri = tcp://5000
|
||||
|
||||
[triton]
|
||||
class = secop_psi.mercury.IO
|
||||
description = connection to triton software
|
||||
uri = tcp://192.168.2.33:33576
|
||||
|
||||
[T_mix]
|
||||
class = secop_psi.triton.TemperatureSensor
|
||||
description = mix. chamber temperature
|
||||
slot = T8
|
||||
io = triton
|
||||
|
||||
[T_pt2head]
|
||||
class = secop_psi.triton.TemperatureSensor
|
||||
description = PTR2 head temperature
|
||||
slot = T1
|
||||
io = triton
|
||||
|
||||
[T_pt2plate]
|
||||
class = secop_psi.triton.TemperatureSensor
|
||||
description = PTR2 plate temperature
|
||||
slot = T2
|
||||
io = triton
|
||||
|
||||
[T_still]
|
||||
class = secop_psi.triton.TemperatureSensor
|
||||
description = still temperature
|
||||
slot = T3
|
||||
io = triton
|
||||
|
||||
[htr_still]
|
||||
class = secop_psi.triton.HeaterOutput
|
||||
description = still heater
|
||||
slot = H2
|
||||
io = triton
|
||||
|
||||
[T_coldpl]
|
||||
class = secop_psi.triton.TemperatureSensor
|
||||
description = cold plate temperature
|
||||
slot = T4
|
||||
io = triton
|
||||
|
||||
[T_mixcx]
|
||||
class = secop_psi.triton.TemperatureSensor
|
||||
description = mix. chamber cernox
|
||||
slot = T5
|
||||
io = triton
|
||||
|
||||
[T_pt1head]
|
||||
class = secop_psi.triton.TemperatureSensor
|
||||
description = PTR1 head temperature
|
||||
slot = T6
|
||||
io = triton
|
||||
|
||||
[T_pt1plate]
|
||||
class = secop_psi.triton.TemperatureSensor
|
||||
description = PTR1 plate temperature
|
||||
slot = T7
|
||||
io = triton
|
||||
|
||||
[T_pucksensor]
|
||||
class = secop_psi.triton.TemperatureLoop
|
||||
output_module = htr_pucksensor
|
||||
description = puck sensor temperature
|
||||
slot = TA
|
||||
io = triton
|
||||
|
||||
[htr_pucksensor]
|
||||
class = secop_psi.triton.HeaterOutputWithRange
|
||||
description = mix. chamber heater
|
||||
slot = H1,TA
|
||||
io = triton
|
||||
|
||||
[T_magnet]
|
||||
class = secop_psi.triton.TemperatureSensor
|
||||
description = magnet temperature
|
||||
slot = T13
|
||||
io = triton
|
||||
|
||||
[action]
|
||||
class = secop_psi.triton.Action
|
||||
description = higher level scripts
|
||||
io = triton
|
||||
slot = DR
|
||||
|
||||
[p_dump]
|
||||
class = secop_psi.mercury.PressureSensor
|
||||
description = dump pressure
|
||||
slot = P1
|
||||
io = triton
|
||||
|
||||
[p_cond]
|
||||
class = secop_psi.mercury.PressureSensor
|
||||
description = condenser pressure
|
||||
slot = P2
|
||||
io = triton
|
||||
|
||||
[p_still]
|
||||
class = secop_psi.mercury.PressureSensor
|
||||
description = still pressure
|
||||
slot = P3
|
||||
io = triton
|
||||
|
||||
[p_fore]
|
||||
class = secop_psi.mercury.PressureSensor
|
||||
description = pressure on the pump side
|
||||
slot = P5
|
||||
io = triton
|
||||
|
||||
[p_back]
|
||||
class = secop_psi.mercury.PressureSensor
|
||||
description = pressure on the back side of the pump
|
||||
slot = P4
|
||||
io = triton
|
||||
|
||||
[p_ovc]
|
||||
class = secop_psi.mercury.PressureSensor
|
||||
description = outer vacuum pressure
|
||||
slot = P6
|
||||
io = triton
|
||||
|
||||
#[itc]
|
||||
#class = secop_psi.mercury.IO
|
||||
#description = connection to MercuryiTC
|
||||
#uri = serial:///dev/ttyUSB0
|
||||
#
|
||||
#[T_still_wup]
|
||||
#class = secop_psi.mercury.TemperatureLoop
|
||||
#description = still warmup temperature
|
||||
#slot = MB1.T1
|
||||
#io = itc
|
||||
#
|
||||
#[htr_still_wup]
|
||||
#class = secop_psi.mercury.HeaterOutput
|
||||
#description = still warmup heater
|
||||
#slot = MB0.H1
|
||||
#io = itc
|
||||
#
|
||||
#[T_one_K]
|
||||
#class = secop_psi.mercury.TemperatureLoop
|
||||
#description = 1 K plate warmup temperature
|
||||
#slot = DB5.T1
|
||||
#io = itc
|
||||
#
|
||||
#[htr_one_K]
|
||||
#class = secop_psi.mercury.HeaterOutput
|
||||
#description = 1 K plate warmup heater
|
||||
#slot = DB3.H1
|
||||
#io = itc
|
||||
#
|
||||
#[T_mix_wup]
|
||||
#class = secop_psi.mercury.TemperatureLoop
|
||||
#description = mix. chamber warmup temperature
|
||||
#slot = DB6.T1
|
||||
#io = itc
|
||||
#
|
||||
#[htr_mix_wup]
|
||||
#class = secop_psi.mercury.HeaterOutput
|
||||
#description = mix. chamber warmup heater
|
||||
#slot = DB1.H1
|
||||
#io = itc
|
||||
#
|
||||
#[T_ivc_wup]
|
||||
#class = secop_psi.mercury.TemperatureLoop
|
||||
#description = IVC warmup temperature
|
||||
#slot = DB7.T1
|
||||
#io = itc
|
||||
#
|
||||
#[htr_ivc_wup]
|
||||
#class = secop_psi.mercury.HeaterOutput
|
||||
#description = IVC warmup heater
|
||||
#slot = DB2.H1
|
||||
#io = itc
|
||||
#
|
||||
#[T_cond]
|
||||
#class = secop_psi.mercury.TemperatureLoop
|
||||
#description = condenser temperature
|
||||
#slot = DB8.T1
|
||||
#io = itc
|
||||
#
|
||||
#[htr_cond]
|
||||
#class = secop_psi.mercury.HeaterOutput
|
||||
#description = condenser heater
|
||||
#slot = DB3.H1
|
||||
#io = itc
|
||||
|
||||
[V1]
|
||||
class = secop_psi.triton.Valve
|
||||
description = valve V1
|
||||
slot = V1
|
||||
io = triton
|
||||
|
||||
[V2]
|
||||
class = secop_psi.triton.Valve
|
||||
description = valve V2
|
||||
slot = V2
|
||||
io = triton
|
||||
|
||||
[V4]
|
||||
class = secop_psi.triton.Valve
|
||||
description = valve V4
|
||||
slot = V4
|
||||
io = triton
|
||||
|
||||
[V5]
|
||||
class = secop_psi.triton.Valve
|
||||
description = valve V5
|
||||
slot = V5
|
||||
io = triton
|
||||
|
||||
[V9]
|
||||
class = secop_psi.triton.Valve
|
||||
description = valve V9
|
||||
slot = V9
|
||||
io = triton
|
||||
|
||||
# [turbo]
|
||||
# class = secop_psi.triton.TurboPump
|
||||
# description = still turbo pump
|
||||
# slot = TURB1
|
||||
# io = triton
|
||||
|
||||
# [fp]
|
||||
# class = secop_psi.triton.Pump
|
||||
# description = still fore pump
|
||||
# slot = FP
|
||||
# io = triton
|
||||
|
||||
# [compressor]
|
||||
# class = secop_psi.triton.Pump
|
||||
# description = compressor
|
||||
# slot = COMP
|
||||
# io = triton
|
||||
|
||||
[ips]
|
||||
class = secop_psi.mercury.IO
|
||||
description = IPS for magnet
|
||||
uri = 192.168.127.254:3001
|
||||
|
||||
[mf]
|
||||
class = secop_psi.dilsc.VectorField
|
||||
description = vector field
|
||||
x = mfx
|
||||
y = mfy
|
||||
z = mfz
|
||||
sphere_radius = 0.6
|
||||
cylinders = ((0.23, 5.2), (0.45, 0.8))
|
||||
|
||||
[mfx]
|
||||
class = secop_psi.ips_mercury.SimpleField
|
||||
description = magnetic field, x-axis
|
||||
slot = GRPX
|
||||
io = ips
|
||||
tolerance = 0.0001
|
||||
wait_stable_field = 0
|
||||
nunits = 2
|
||||
target.max = 0.6
|
||||
ramp = 0.225
|
||||
|
||||
[mfy]
|
||||
class = secop_psi.ips_mercury.SimpleField
|
||||
description = magnetic field, y axis
|
||||
slot = GRPY
|
||||
io = ips
|
||||
tolerance = 0.0001
|
||||
wait_stable_field = 0
|
||||
nunits = 2
|
||||
target.max = 0.6
|
||||
ramp = 0.225
|
||||
|
||||
[mfz]
|
||||
class = secop_psi.ips_mercury.Field
|
||||
description = magnetic field, z-axis
|
||||
slot = GRPZ
|
||||
io = ips
|
||||
tolerance = 0.0001
|
||||
target.max = 5.2
|
||||
mode = DRIVEN
|
||||
ramp = 0.52
|
||||
15
cfg/dpm.cfg
Normal file
15
cfg/dpm.cfg
Normal file
@@ -0,0 +1,15 @@
|
||||
[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
|
||||
|
||||
50
cfg/epics.cfg
Normal file
50
cfg/epics.cfg
Normal file
@@ -0,0 +1,50 @@
|
||||
[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"
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
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,
|
||||
)
|
||||
@@ -1,7 +0,0 @@
|
||||
import frappy.core as fc
|
||||
import TNMRExt.FlexibleModule as mod
|
||||
|
||||
Node('example_TNMR.psi.ch', 'The NMR system running the Scout and controlled with TNMR', interface='tcp://5000')
|
||||
|
||||
Mod('sequence0', mod.flexible_module('D:\\Users\\Garrad\\sequence_0.tps', 's0'), 'The zeroth sequence')
|
||||
Mod('sequence1', mod.flexible_module('D:\\Users\\Garrad\\sequence_1.tps', 's1'), 'The first sequence')
|
||||
@@ -3,3 +3,4 @@
|
||||
logdir = ./log
|
||||
piddir = ./pid
|
||||
confdir = ./cfg
|
||||
# comlog = True
|
||||
|
||||
17
cfg/ls240.cfg
Normal file
17
cfg/ls240.cfg
Normal file
@@ -0,0 +1,17 @@
|
||||
[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
|
||||
@@ -1,23 +0,0 @@
|
||||
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
|
||||
)
|
||||
25
cfg/ls370res.cfg
Normal file
25
cfg/ls370res.cfg
Normal file
@@ -0,0 +1,25 @@
|
||||
[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
|
||||
23
cfg/ls370sim.cfg
Normal file
23
cfg/ls370sim.cfg
Normal file
@@ -0,0 +1,23 @@
|
||||
[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
|
||||
@@ -1,30 +0,0 @@
|
||||
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',
|
||||
)
|
||||
21
cfg/ls370test.cfg
Normal file
21
cfg/ls370test.cfg
Normal file
@@ -0,0 +1,21 @@
|
||||
[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
|
||||
@@ -1,29 +0,0 @@
|
||||
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',
|
||||
)
|
||||
52
cfg/magsc.cfg
Normal file
52
cfg/magsc.cfg
Normal file
@@ -0,0 +1,52 @@
|
||||
[NODE]
|
||||
id = magsc.psi.ch
|
||||
description = dilsc mag test
|
||||
|
||||
[INTERFACE]
|
||||
uri = tcp://5000
|
||||
|
||||
[ips]
|
||||
class = secop_psi.mercury.IO
|
||||
description = IPS for magnet
|
||||
uri = 192.168.127.254:3001
|
||||
|
||||
[mf]
|
||||
class = secop_psi.dilsc.VectorField
|
||||
description = vector field
|
||||
x = mfx
|
||||
y = mfy
|
||||
z = mfz
|
||||
sphere_radius = 0.06
|
||||
cylinders = ((0.023, 0.52), (0.045, 0.08))
|
||||
|
||||
[mfx]
|
||||
class = secop_psi.ips_mercury.SimpleField
|
||||
description = magnetic field, x-axis
|
||||
slot = GRPX
|
||||
io = ips
|
||||
tolerance = 0.0001
|
||||
wait_stable_field = 0
|
||||
nunits = 2
|
||||
target.max = 0.6
|
||||
ramp = 0.225
|
||||
|
||||
[mfy]
|
||||
class = secop_psi.ips_mercury.SimpleField
|
||||
description = magnetic field, y axis
|
||||
slot = GRPY
|
||||
io = ips
|
||||
tolerance = 0.0001
|
||||
wait_stable_field = 0
|
||||
nunits = 2
|
||||
target.max = 0.6
|
||||
ramp = 0.225
|
||||
|
||||
[mfz]
|
||||
class = secop_psi.ips_mercury.Field
|
||||
description = magnetic field, z-axis
|
||||
slot = GRPZ
|
||||
io = ips
|
||||
tolerance = 0.0001
|
||||
target.max = 5.2
|
||||
mode = DRIVEN
|
||||
ramp = 0.52
|
||||
4
cfg/main.ini
Normal file
4
cfg/main.ini
Normal file
@@ -0,0 +1,4 @@
|
||||
[FRAPPY]
|
||||
confdir = ~/frappy/cfg/main:~/frappy/cfg/develop
|
||||
logdir = ~/frappylog
|
||||
piddir = ~/frappylog/pid
|
||||
20
cfg/main/ccr2.cfg
Normal file
20
cfg/main/ccr2.cfg
Normal file
@@ -0,0 +1,20 @@
|
||||
[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
|
||||
27
cfg/main/ccr2ht.cfg
Normal file
27
cfg/main/ccr2ht.cfg
Normal file
@@ -0,0 +1,27 @@
|
||||
[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
|
||||
|
||||
14
cfg/main/ccr3.cfg
Normal file
14
cfg/main/ccr3.cfg
Normal file
@@ -0,0 +1,14 @@
|
||||
[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
|
||||
43
cfg/main/cryosim.cfg
Normal file
43
cfg/main/cryosim.cfg
Normal file
@@ -0,0 +1,43 @@
|
||||
[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
|
||||
14
cfg/main/cti5.cfg
Normal file
14
cfg/main/cti5.cfg
Normal file
@@ -0,0 +1,14 @@
|
||||
[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
|
||||
14
cfg/main/cti7.cfg
Normal file
14
cfg/main/cti7.cfg
Normal file
@@ -0,0 +1,14 @@
|
||||
[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
|
||||
14
cfg/main/cti7ht.cfg
Normal file
14
cfg/main/cti7ht.cfg
Normal file
@@ -0,0 +1,14 @@
|
||||
[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
|
||||
36
cfg/main/fftf.cfg
Normal file
36
cfg/main/fftf.cfg
Normal file
@@ -0,0 +1,36 @@
|
||||
[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
|
||||
57
cfg/main/ill1.cfg
Normal file
57
cfg/main/ill1.cfg
Normal file
@@ -0,0 +1,57 @@
|
||||
[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
|
||||
56
cfg/main/ill4.cfg
Normal file
56
cfg/main/ill4.cfg
Normal file
@@ -0,0 +1,56 @@
|
||||
[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
|
||||
56
cfg/main/ill5.cfg
Normal file
56
cfg/main/ill5.cfg
Normal file
@@ -0,0 +1,56 @@
|
||||
[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
|
||||
86
cfg/main/ill5pgas5.cfg
Normal file
86
cfg/main/ill5pgas5.cfg
Normal file
@@ -0,0 +1,86 @@
|
||||
[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
|
||||
112
cfg/main/jtccr.cfg
Normal file
112
cfg/main/jtccr.cfg
Normal file
@@ -0,0 +1,112 @@
|
||||
[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
|
||||
67
cfg/main/ma02.cfg
Normal file
67
cfg/main/ma02.cfg
Normal file
@@ -0,0 +1,67 @@
|
||||
[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
|
||||
|
||||
|
||||
72
cfg/main/ma10.cfg
Normal file
72
cfg/main/ma10.cfg
Normal file
@@ -0,0 +1,72 @@
|
||||
[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 = CHECK
|
||||
|
||||
97
cfg/main/ma11.cfg
Normal file
97
cfg/main/ma11.cfg
Normal file
@@ -0,0 +1,97 @@
|
||||
[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
|
||||
|
||||
67
cfg/main/ma6.cfg
Normal file
67
cfg/main/ma6.cfg
Normal file
@@ -0,0 +1,67 @@
|
||||
[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
|
||||
|
||||
84
cfg/main/ma7.cfg
Normal file
84
cfg/main/ma7.cfg
Normal file
@@ -0,0 +1,84 @@
|
||||
[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
|
||||
|
||||
51
cfg/main/magsim.cfg
Normal file
51
cfg/main/magsim.cfg
Normal file
@@ -0,0 +1,51 @@
|
||||
[NODE]
|
||||
id = magsim.psi.ch
|
||||
description = cryo magnet simulation (similar to ppms simulation)
|
||||
|
||||
[INTERFACE]
|
||||
uri = tcp://5000
|
||||
|
||||
[tt]
|
||||
class = secop_psi.ppms.Temp
|
||||
description = main temperature
|
||||
meaning = ['temperature_regulation', 10]
|
||||
ramp = 20
|
||||
io = ppms
|
||||
|
||||
[mf]
|
||||
class = secop_psi.ppms.Field
|
||||
target.min = -9
|
||||
target.max = 9
|
||||
description = magnetic field
|
||||
io = ppms
|
||||
meaning = ['magneticfield', 10]
|
||||
|
||||
[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
|
||||
180
cfg/main/mb11.cfg
Normal file
180
cfg/main/mb11.cfg
Normal file
@@ -0,0 +1,180 @@
|
||||
[NODE]
|
||||
id = mb11.psi.ch
|
||||
description = MB11 11 Tesla - 100 mm cryomagnet
|
||||
|
||||
[INTERFACE]
|
||||
uri = tcp://5000
|
||||
|
||||
[itc1]
|
||||
class = secop_psi.mercury.IO
|
||||
description = ITC for heat exchanger and pressures
|
||||
uri = mb11-ts:3001
|
||||
|
||||
[itc2]
|
||||
class = secop_psi.mercury.IO
|
||||
description = ITC for neck and nv heaters
|
||||
uri = mb11-ts:3002
|
||||
|
||||
[ips]
|
||||
class = secop_psi.mercury.IO
|
||||
description = IPS for magnet and levels
|
||||
uri = mb11-ts:3003
|
||||
|
||||
[T_stat]
|
||||
class = secop_psi.mercury.TemperatureAutoFlow
|
||||
description = static heat exchanger temperature
|
||||
output_module = htr_stat
|
||||
needle_valve = p_stat
|
||||
slot = DB6.T1
|
||||
io = itc1
|
||||
tolerance = 0.1
|
||||
|
||||
[htr_stat]
|
||||
class = secop_psi.mercury.HeaterOutput
|
||||
description = static heat exchanger heater
|
||||
slot = DB1.H1
|
||||
io = itc1
|
||||
|
||||
[p_stat]
|
||||
class = secop_psi.mercury.PressureLoop
|
||||
description = static needle valve pressure
|
||||
output_module = pos_stat
|
||||
settling_time = 60
|
||||
slot = DB5.P1,DB3.G1
|
||||
io = itc1
|
||||
tolerance = 1
|
||||
value.unit = mbar_flow
|
||||
|
||||
[pos_stat]
|
||||
class = secop_psi.mercury.ValvePos
|
||||
description = static needle valve position
|
||||
slot = DB5.P1,DB3.G1
|
||||
io = itc1
|
||||
|
||||
[T_dyn]
|
||||
class = secop_psi.mercury.TemperatureAutoFlow
|
||||
description = dynamic heat exchanger temperature
|
||||
output_module = htr_dyn
|
||||
needle_valve = p_dyn
|
||||
slot = DB7.T1
|
||||
io = itc1
|
||||
tolerance = 0.1
|
||||
|
||||
[htr_dyn]
|
||||
class = secop_psi.mercury.HeaterOutput
|
||||
description = dynamic heat exchanger heater
|
||||
slot = DB2.H1
|
||||
io = itc1
|
||||
|
||||
[p_dyn]
|
||||
class = secop_psi.mercury.PressureLoop
|
||||
description = dynamic needle valve pressure
|
||||
output_module = pos_dyn
|
||||
settling_time = 60
|
||||
slot = DB8.P1,DB4.G1
|
||||
io = itc1
|
||||
tolerance = 1
|
||||
value.unit = mbar_flow
|
||||
|
||||
[pos_dyn]
|
||||
class = secop_psi.mercury.ValvePos
|
||||
description = dynamic needle valve position
|
||||
slot = DB8.P1,DB4.G1
|
||||
io = itc1
|
||||
|
||||
[mf]
|
||||
class = secop_psi.ips_mercury.Field
|
||||
description = magnetic field
|
||||
slot = GRPZ
|
||||
io = ips
|
||||
tolerance = 0.001
|
||||
wait_stable_field = 60
|
||||
target.max = 11
|
||||
persistent_limit = 7
|
||||
|
||||
[lev]
|
||||
class = secop_psi.mercury.HeLevel
|
||||
description = LHe level
|
||||
slot = DB1.L1
|
||||
io = ips
|
||||
|
||||
[n2lev]
|
||||
class = secop_psi.mercury.N2Level
|
||||
description = LHe level
|
||||
slot = DB1.L1
|
||||
io = ips
|
||||
|
||||
[T_neck1]
|
||||
class = secop_psi.mercury.TemperatureLoop
|
||||
description = neck heater 1 temperature
|
||||
output_module = htr_neck1
|
||||
slot = MB1.T1
|
||||
io = itc2
|
||||
tolerance = 1
|
||||
|
||||
[htr_neck1]
|
||||
class = secop_psi.mercury.HeaterOutput
|
||||
description = neck heater 1 power
|
||||
slot = MB0.H1
|
||||
io = itc2
|
||||
|
||||
[T_neck2]
|
||||
class = secop_psi.mercury.TemperatureLoop
|
||||
description = neck heater 2 temperature
|
||||
output_module = htr_neck2
|
||||
slot = DB6.T1
|
||||
io = itc2
|
||||
tolerance = 1
|
||||
|
||||
[htr_neck2]
|
||||
class = secop_psi.mercury.HeaterOutput
|
||||
description = neck heater 2 power
|
||||
slot = DB1.H1
|
||||
io = itc2
|
||||
|
||||
[T_nvs]
|
||||
class = secop_psi.mercury.TemperatureLoop
|
||||
description = static needle valve temperature
|
||||
output_module = htr_nvs
|
||||
slot = DB7.T1
|
||||
io = itc2
|
||||
tolerance = 0.1
|
||||
|
||||
[htr_nvs]
|
||||
class = secop_psi.mercury.HeaterOutput
|
||||
description = static needle valve heater power
|
||||
slot = DB2.H1
|
||||
io = itc2
|
||||
|
||||
[T_nvd]
|
||||
class = secop_psi.mercury.TemperatureLoop
|
||||
description = dynamic needle valve heater temperature
|
||||
output_module = htr_nvd
|
||||
slot = DB8.T1
|
||||
io = itc2
|
||||
tolerance = 0.1
|
||||
|
||||
[htr_nvd]
|
||||
class = secop_psi.mercury.HeaterOutput
|
||||
description = dynamic needle valve heater power
|
||||
slot = DB3.H1
|
||||
io = itc2
|
||||
|
||||
[T_coil]
|
||||
class = secop_psi.mercury.TemperatureSensor
|
||||
description = coil temperature
|
||||
slot = MB1.T1
|
||||
io = ips
|
||||
|
||||
[om_io]
|
||||
description = dom motor IO
|
||||
class = secop_psi.phytron.PhytronIO
|
||||
uri = mb11-ts.psi.ch:3004
|
||||
|
||||
[om]
|
||||
description = stick rotation, typically used for omega
|
||||
class = secop_psi.phytron.Motor
|
||||
io = om_io
|
||||
sign = -1
|
||||
encoder_mode = NO
|
||||
|
||||
206
cfg/main/mb11std.cfg
Normal file
206
cfg/main/mb11std.cfg
Normal file
@@ -0,0 +1,206 @@
|
||||
[NODE]
|
||||
id = mb11.psi.ch
|
||||
description = MB11 11 Tesla - 100 mm cryomagnet
|
||||
|
||||
[INTERFACE]
|
||||
uri = tcp://5000
|
||||
|
||||
[itc1]
|
||||
class = secop_psi.mercury.IO
|
||||
description = ITC for heat exchanger and pressures
|
||||
uri = mb11-ts:3001
|
||||
|
||||
[itc2]
|
||||
class = secop_psi.mercury.IO
|
||||
description = ITC for neck and nv heaters
|
||||
uri = mb11-ts:3002
|
||||
|
||||
[ips]
|
||||
class = secop_psi.mercury.IO
|
||||
description = IPS for magnet and levels
|
||||
uri = mb11-ts:3003
|
||||
|
||||
[T_stat]
|
||||
class = secop_psi.mercury.TemperatureAutoFlow
|
||||
description = static heat exchanger temperature
|
||||
output_module = htr_stat
|
||||
needle_valve = p_stat
|
||||
slot = DB6.T1
|
||||
io = itc1
|
||||
tolerance = 0.1
|
||||
|
||||
[htr_stat]
|
||||
class = secop_psi.mercury.HeaterOutput
|
||||
description = static heat exchanger heater
|
||||
slot = DB1.H1
|
||||
io = itc1
|
||||
|
||||
[ts]
|
||||
class = secop_psi.mercury.TemperatureLoop
|
||||
description = sample temperature
|
||||
output_module = htr_sample
|
||||
slot = MB1.T1
|
||||
io = itc1
|
||||
tolerance = 1
|
||||
|
||||
[htr_sample]
|
||||
class = secop_psi.mercury.HeaterOutput
|
||||
description = sample stick heater power
|
||||
slot = MB0.H1
|
||||
io = itc1
|
||||
|
||||
[p_stat]
|
||||
class = secop_psi.mercury.PressureLoop
|
||||
description = static needle valve pressure
|
||||
output_module = pos_stat
|
||||
settling_time = 60
|
||||
slot = DB5.P1,DB3.G1
|
||||
io = itc1
|
||||
tolerance = 1
|
||||
value.unit = mbar_flow
|
||||
|
||||
[pos_stat]
|
||||
class = secop_psi.mercury.ValvePos
|
||||
description = static needle valve position
|
||||
slot = DB5.P1,DB3.G1
|
||||
io = itc1
|
||||
|
||||
[T_dyn]
|
||||
class = secop_psi.mercury.TemperatureAutoFlow
|
||||
description = dynamic heat exchanger temperature
|
||||
output_module = htr_dyn
|
||||
needle_valve = p_dyn
|
||||
slot = DB7.T1
|
||||
io = itc1
|
||||
tolerance = 0.1
|
||||
|
||||
[htr_dyn]
|
||||
class = secop_psi.mercury.HeaterOutput
|
||||
description = dynamic heat exchanger heater
|
||||
slot = DB2.H1
|
||||
io = itc1
|
||||
|
||||
[p_dyn]
|
||||
class = secop_psi.mercury.PressureLoop
|
||||
description = dynamic needle valve pressure
|
||||
output_module = pos_dyn
|
||||
settling_time = 60
|
||||
slot = DB8.P1,DB4.G1
|
||||
io = itc1
|
||||
tolerance = 1
|
||||
value.unit = mbar_flow
|
||||
|
||||
[pos_dyn]
|
||||
class = secop_psi.mercury.ValvePos
|
||||
description = dynamic needle valve position
|
||||
slot = DB8.P1,DB4.G1
|
||||
io = itc1
|
||||
|
||||
[mf]
|
||||
class = secop_psi.ips_mercury.Field
|
||||
description = magnetic field
|
||||
slot = GRPZ
|
||||
io = ips
|
||||
tolerance = 0.001
|
||||
wait_stable_field = 60
|
||||
target.max = 11
|
||||
persistent_limit = 7
|
||||
|
||||
[lev]
|
||||
class = secop_psi.mercury.HeLevel
|
||||
description = LHe level
|
||||
slot = DB1.L1
|
||||
io = ips
|
||||
|
||||
[n2lev]
|
||||
class = secop_psi.mercury.N2Level
|
||||
description = LHe level
|
||||
slot = DB1.L1
|
||||
io = ips
|
||||
|
||||
[T_neck1]
|
||||
class = secop_psi.mercury.TemperatureLoop
|
||||
description = neck heater 1 temperature
|
||||
output_module = htr_neck1
|
||||
slot = MB1.T1
|
||||
io = itc2
|
||||
tolerance = 1
|
||||
|
||||
[htr_neck1]
|
||||
class = secop_psi.mercury.HeaterOutput
|
||||
description = neck heater 1 power
|
||||
slot = MB0.H1
|
||||
io = itc2
|
||||
|
||||
[T_neck2]
|
||||
class = secop_psi.mercury.TemperatureLoop
|
||||
description = neck heater 2 temperature
|
||||
output_module = htr_neck2
|
||||
slot = DB6.T1
|
||||
io = itc2
|
||||
tolerance = 1
|
||||
|
||||
[htr_neck2]
|
||||
class = secop_psi.mercury.HeaterOutput
|
||||
description = neck heater 2 power
|
||||
slot = DB1.H1
|
||||
io = itc2
|
||||
|
||||
[T_nvs]
|
||||
class = secop_psi.mercury.TemperatureLoop
|
||||
description = static needle valve temperature
|
||||
output_module = htr_nvs
|
||||
slot = DB7.T1
|
||||
io = itc2
|
||||
tolerance = 0.1
|
||||
|
||||
[htr_nvs]
|
||||
class = secop_psi.mercury.HeaterOutput
|
||||
description = static needle valve heater power
|
||||
slot = DB2.H1
|
||||
io = itc2
|
||||
|
||||
[T_nvd]
|
||||
class = secop_psi.mercury.TemperatureLoop
|
||||
description = dynamic needle valve heater temperature
|
||||
output_module = htr_nvd
|
||||
slot = DB8.T1
|
||||
io = itc2
|
||||
tolerance = 0.1
|
||||
|
||||
[htr_nvd]
|
||||
class = secop_psi.mercury.HeaterOutput
|
||||
description = dynamic needle valve heater power
|
||||
slot = DB3.H1
|
||||
io = itc2
|
||||
|
||||
[T_coil]
|
||||
class = secop_psi.mercury.TemperatureSensor
|
||||
description = coil temperature
|
||||
slot = MB1.T1
|
||||
io = ips
|
||||
|
||||
[om_io]
|
||||
description = dom motor IO
|
||||
class = secop_psi.phytron.PhytronIO
|
||||
uri = mb11-ts.psi.ch:3004
|
||||
|
||||
[om]
|
||||
description = stick rotation, typically used for omega
|
||||
class = secop_psi.phytron.Motor
|
||||
io = om_io
|
||||
sign = -1
|
||||
encoder_mode = NO
|
||||
|
||||
#[sea_main]
|
||||
#class = secop_psi.sea.SeaClient
|
||||
#description = main sea connection for mb11.config
|
||||
#config = mb11.config
|
||||
#service = main
|
||||
|
||||
#[hepump]
|
||||
#class = secop_psi.sea.SeaWritable
|
||||
#io = sea_main
|
||||
#sea_object = hepump
|
||||
|
||||
|
||||
49
cfg/main/ori3.cfg
Normal file
49
cfg/main/ori3.cfg
Normal file
@@ -0,0 +1,49 @@
|
||||
[NODE]
|
||||
description = orange cryostat with 100 mm sample space
|
||||
id = ori3.config.sea.psi.ch
|
||||
|
||||
[sea_main]
|
||||
class = secop_psi.sea.SeaClient
|
||||
description = main sea connection for ori3.config
|
||||
config = ori3.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
|
||||
|
||||
[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
|
||||
60
cfg/main/ori4.cfg
Normal file
60
cfg/main/ori4.cfg
Normal file
@@ -0,0 +1,60 @@
|
||||
[NODE]
|
||||
description = orange cryostat with 100 mm sample space (HRPT)
|
||||
id = ori4.config.sea.psi.ch
|
||||
|
||||
[sea_main]
|
||||
class = secop_psi.sea.SeaClient
|
||||
description = SEA connection to ori4
|
||||
config = ori4.config
|
||||
service = main
|
||||
|
||||
[t]
|
||||
class = secop_psi.sea.SeaDrivable
|
||||
io = sea_main
|
||||
sea_object = tt
|
||||
|
||||
[tm]
|
||||
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
|
||||
|
||||
[nvmot]
|
||||
class = secop_psi.sea.SeaDrivable
|
||||
io = sea_main
|
||||
sea_object = nvmot
|
||||
|
||||
[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
|
||||
54
cfg/main/ori6.cfg
Normal file
54
cfg/main/ori6.cfg
Normal file
@@ -0,0 +1,54 @@
|
||||
[NODE]
|
||||
description = orange cryostat with 100 mm sample space
|
||||
id = ori6.config.sea.psi.ch
|
||||
|
||||
[sea_main]
|
||||
class = secop_psi.sea.SeaClient
|
||||
description = main sea connection for ori6.config
|
||||
config = ori6.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
|
||||
|
||||
[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
|
||||
24
cfg/main/smamor.cfg
Normal file
24
cfg/main/smamor.cfg
Normal file
@@ -0,0 +1,24 @@
|
||||
[NODE]
|
||||
description = Keithley 2450 sourcemeter
|
||||
id = smamor.config.sea.psi.ch
|
||||
|
||||
[sea_main]
|
||||
class = secop_psi.sea.SeaClient
|
||||
description = main sea connection for smamor.config
|
||||
config = smamor.config
|
||||
service = main
|
||||
|
||||
[smi]
|
||||
class = secop_psi.sea.SeaDrivable
|
||||
io = sea_main
|
||||
sea_object = smi
|
||||
|
||||
[smv]
|
||||
class = secop_psi.sea.SeaDrivable
|
||||
io = sea_main
|
||||
sea_object = smv
|
||||
|
||||
[r]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = sea_main
|
||||
sea_object = r
|
||||
49
cfg/main/variox.cfg
Normal file
49
cfg/main/variox.cfg
Normal file
@@ -0,0 +1,49 @@
|
||||
[NODE]
|
||||
description = Variox cryostat with 50 mm sample space
|
||||
id = variox.config.sea.psi.ch
|
||||
|
||||
[sea_main]
|
||||
class = secop_psi.sea.SeaClient
|
||||
description = main sea connection for variox.config
|
||||
config = variox.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
|
||||
|
||||
[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
|
||||
8
cfg/multiplexer.cfg
Normal file
8
cfg/multiplexer.cfg
Normal file
@@ -0,0 +1,8 @@
|
||||
[NODE]
|
||||
class = protocol.router.Router
|
||||
id = multiplexer
|
||||
description = multiplexer node
|
||||
nodes = ['localhost:5000', 'localhost:10769']
|
||||
|
||||
[INTERFACE]
|
||||
uri = tcp://5000
|
||||
@@ -1,6 +0,0 @@
|
||||
Node('multiplexer',
|
||||
'multiplexer node',
|
||||
'tcp://5000',
|
||||
cls = 'protocol.router.Router',
|
||||
nodes = ['localhost:10768', 'localhost:10769'],
|
||||
)
|
||||
@@ -1,5 +0,0 @@
|
||||
import frappy.core as fc
|
||||
|
||||
Node('example_NA.psi.ch', 'A demo system showing how to connect network analysers', interface='tcp://5000')
|
||||
|
||||
Mod('ZVLNode', 'frappy_psi.network_analysers.ZVL.ZVLNode.ZVLNode', 'ZVL Network Analyser', analyser_ip=Param('169.254.150.182')) # must be connected on the same ethernet network
|
||||
@@ -1,14 +0,0 @@
|
||||
import frappy.core as fc
|
||||
|
||||
docstring = 'NMR pulse sequence.\
|
||||
Each pulse ``block`` consists of first a pulse with parameters pulse_width (microseconds), pulse_height (amplitude; for the SCOUT, percentage of max), and phase_cycle, and then a delay with parameter delay_time (microseconds).\
|
||||
\
|
||||
Please use the custom commands, ``generate_pulse``, ``scan_sequence``, and ``scan_sequences``. There exist example scripts in your NICOS install location/nicos_sinq/tnmr/example_scripts.\
|
||||
Durations are in microseconds, excepting post_acquisition_time (ms), and frequencies are in MHz.\
|
||||
'
|
||||
|
||||
Node('example_TNMR.psi.ch', 'The NMR system running the Scout and controlled with TNMR', interface='tcp://5000')
|
||||
|
||||
Mod('daq_scout', 'frappy_psi.tnmr.TNMRModule.TNMRModule', 'Tecmag SCOUT-based NMR System')
|
||||
|
||||
print('TNMR Module loaded - please refer to https://www.psi.ch/en/lin/nmr-spectroscopy for help and documentation')
|
||||
5
cfg/ori.cfg
Normal file
5
cfg/ori.cfg
Normal file
@@ -0,0 +1,5 @@
|
||||
[seaconn]
|
||||
class = secop_psi.sea.SeaClient
|
||||
description = a SEA connection
|
||||
# uri = tcp://samenv.psi.ch:8642
|
||||
|
||||
20
cfg/phytron.cfg
Normal file
20
cfg/phytron.cfg
Normal file
@@ -0,0 +1,20 @@
|
||||
[NODE]
|
||||
id = phytron_test.psi.ch
|
||||
description = phytron motor test
|
||||
|
||||
[INTERFACE]
|
||||
uri = tcp://5000
|
||||
|
||||
[drv_io]
|
||||
description =
|
||||
class = secop_psi.phytron.PhytronIO
|
||||
uri = ma7-ts.psi.ch:3007
|
||||
# uri = serial:///dev/tty.usbserial?baudrate=57600
|
||||
# uri = serial:///dev/ttyUSB0?baudrate=9600
|
||||
|
||||
[drv]
|
||||
description = a phytron motor
|
||||
class = secop_psi.phytron.Motor
|
||||
io = drv_io
|
||||
abslimits = -180,360
|
||||
encoder_mode = CHECK
|
||||
124
cfg/ppms.cfg
Normal file
124
cfg/ppms.cfg
Normal file
@@ -0,0 +1,124 @@
|
||||
[NODE]
|
||||
id = PPMS.psi.ch
|
||||
description = PPMS at PSI
|
||||
|
||||
[INTERFACE]
|
||||
uri = tcp://5000
|
||||
|
||||
[tt]
|
||||
class = secop_psi.ppms.Temp
|
||||
description = main temperature
|
||||
io = ppms
|
||||
|
||||
[mf]
|
||||
class = secop_psi.ppms.Field
|
||||
target.min = -9
|
||||
target.max = 9
|
||||
description = magnetic field
|
||||
io = ppms
|
||||
|
||||
[pos]
|
||||
class = secop_psi.ppms.Position
|
||||
description = sample rotator
|
||||
io = ppms
|
||||
|
||||
[lev]
|
||||
class = secop_psi.ppms.Level
|
||||
description = helium level
|
||||
io = ppms
|
||||
|
||||
[chamber]
|
||||
class = secop_psi.ppms.Chamber
|
||||
description = chamber state
|
||||
io = ppms
|
||||
|
||||
[r1]
|
||||
class = secop_psi.ppms.BridgeChannel
|
||||
description = resistivity channel 1
|
||||
no = 1
|
||||
value.unit = Ohm
|
||||
io = ppms
|
||||
|
||||
[r2]
|
||||
class = secop_psi.ppms.BridgeChannel
|
||||
description = resistivity channel 2
|
||||
no = 2
|
||||
value.unit = Ohm
|
||||
io = ppms
|
||||
|
||||
[r3]
|
||||
class = secop_psi.ppms.BridgeChannel
|
||||
description = resistivity channel 3
|
||||
no = 3
|
||||
value.unit = Ohm
|
||||
io = ppms
|
||||
|
||||
[r4]
|
||||
class = secop_psi.ppms.BridgeChannel
|
||||
description = resistivity channel 4
|
||||
no = 4
|
||||
value.unit = Ohm
|
||||
io = ppms
|
||||
|
||||
[i1]
|
||||
class = secop_psi.ppms.Channel
|
||||
description = current channel 1
|
||||
no = 1
|
||||
value.unit = uA
|
||||
io = ppms
|
||||
|
||||
[i2]
|
||||
class = secop_psi.ppms.Channel
|
||||
description = current channel 2
|
||||
no = 2
|
||||
value.unit = uA
|
||||
io = ppms
|
||||
|
||||
[i3]
|
||||
class = secop_psi.ppms.Channel
|
||||
description = current channel 3
|
||||
no = 3
|
||||
value.unit = uA
|
||||
io = ppms
|
||||
|
||||
[i4]
|
||||
class = secop_psi.ppms.Channel
|
||||
description = current channel 4
|
||||
no = 4
|
||||
value.unit = uA
|
||||
io = ppms
|
||||
|
||||
[v1]
|
||||
class = secop_psi.ppms.DriverChannel
|
||||
description = voltage channel 1
|
||||
no = 1
|
||||
value.unit = V
|
||||
io = ppms
|
||||
|
||||
[v2]
|
||||
class = secop_psi.ppms.DriverChannel
|
||||
description = voltage channel 2
|
||||
no = 2
|
||||
value.unit = V
|
||||
io = ppms
|
||||
|
||||
[tv]
|
||||
class = secop_psi.ppms.UserChannel
|
||||
description = VTI temperature
|
||||
enabled = 1
|
||||
value.unit = K
|
||||
io = ppms
|
||||
|
||||
[ts]
|
||||
class = secop_psi.ppms.UserChannel
|
||||
description = sample temperature
|
||||
enabled = 1
|
||||
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
|
||||
124
cfg/ppms2.cfg
Normal file
124
cfg/ppms2.cfg
Normal file
@@ -0,0 +1,124 @@
|
||||
[NODE]
|
||||
id = PPMS.psi.ch
|
||||
description = PPMS at PSI
|
||||
|
||||
[INTERFACE]
|
||||
uri = 5000
|
||||
|
||||
[tt]
|
||||
class = secop_psi.ppms.Temp
|
||||
description = main temperature
|
||||
io = ppms
|
||||
|
||||
[mf]
|
||||
class = secop_psi.ppms.Field
|
||||
target.min = -9
|
||||
target.max = 9
|
||||
.description = magnetic field
|
||||
.io = ppms
|
||||
|
||||
[pos]
|
||||
class = secop_psi.ppms.Position
|
||||
.description = sample rotator
|
||||
.io = ppms
|
||||
|
||||
[lev]
|
||||
class = secop_psi.ppms.Level
|
||||
.description = helium level
|
||||
.io = ppms
|
||||
|
||||
[chamber]
|
||||
class = secop_psi.ppms.Chamber
|
||||
.description = chamber state
|
||||
.io = ppms
|
||||
|
||||
[r1]
|
||||
class = secop_psi.ppms.BridgeChannel
|
||||
.description = resistivity channel 1
|
||||
.no = 1
|
||||
value.unit = Ohm
|
||||
.io = ppms
|
||||
|
||||
[r2]
|
||||
class = secop_psi.ppms.BridgeChannel
|
||||
.description = resistivity channel 2
|
||||
.no = 2
|
||||
value.unit = Ohm
|
||||
.io = ppms
|
||||
|
||||
[r3]
|
||||
class = secop_psi.ppms.BridgeChannel
|
||||
.description = resistivity channel 3
|
||||
.no = 3
|
||||
value.unit = Ohm
|
||||
.io = ppms
|
||||
|
||||
[r4]
|
||||
class = secop_psi.ppms.BridgeChannel
|
||||
.description = resistivity channel 4
|
||||
.no = 4
|
||||
value.unit = Ohm
|
||||
.io = ppms
|
||||
|
||||
[i1]
|
||||
class = secop_psi.ppms.Channel
|
||||
.description = current channel 1
|
||||
.no = 1
|
||||
value.unit = uA
|
||||
.io = ppms
|
||||
|
||||
[i2]
|
||||
class = secop_psi.ppms.Channel
|
||||
.description = current channel 2
|
||||
.no = 2
|
||||
value.unit = uA
|
||||
.io = ppms
|
||||
|
||||
[i3]
|
||||
class = secop_psi.ppms.Channel
|
||||
.description = current channel 3
|
||||
.no = 3
|
||||
value.unit = uA
|
||||
.io = ppms
|
||||
|
||||
[i4]
|
||||
class = secop_psi.ppms.Channel
|
||||
.description = current channel 4
|
||||
.no = 4
|
||||
value.unit = uA
|
||||
.io = ppms
|
||||
|
||||
[v1]
|
||||
class = secop_psi.ppms.DriverChannel
|
||||
.description = voltage channel 1
|
||||
.no = 1
|
||||
value.unit = V
|
||||
.io = ppms
|
||||
|
||||
[v2]
|
||||
class = secop_psi.ppms.DriverChannel
|
||||
.description = voltage channel 2
|
||||
.no = 2
|
||||
value.unit = V
|
||||
.io = ppms
|
||||
|
||||
[tv]
|
||||
class = secop_psi.ppms.UserChannel
|
||||
.description = VTI temperature
|
||||
enabled = 1
|
||||
value.unit = K
|
||||
.io = ppms
|
||||
|
||||
[ts]
|
||||
class = secop_psi.ppms.UserChannel
|
||||
.description = sample temperature
|
||||
enabled = 1
|
||||
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
|
||||
@@ -1,93 +0,0 @@
|
||||
Node('PPMS.psi.ch',
|
||||
'PPMS at PSI',
|
||||
'tcp://5000',
|
||||
)
|
||||
|
||||
Mod('tt',
|
||||
'frappy_psi.ppms.Temp',
|
||||
'main temperature',
|
||||
io = 'ppms',
|
||||
)
|
||||
|
||||
Mod('mf',
|
||||
'frappy_psi.ppms.Field',
|
||||
'magnetic field',
|
||||
target = Param(min=-9, max=9),
|
||||
io = 'ppms',
|
||||
)
|
||||
|
||||
Mod('pos',
|
||||
'frappy_psi.ppms.Position',
|
||||
'sample rotator',
|
||||
io = 'ppms',
|
||||
)
|
||||
|
||||
Mod('lev',
|
||||
'frappy_psi.ppms.Level',
|
||||
'helium level',
|
||||
io = 'ppms',
|
||||
)
|
||||
|
||||
Mod('chamber',
|
||||
'frappy_psi.ppms.Chamber',
|
||||
'chamber state',
|
||||
io = 'ppms',
|
||||
)
|
||||
|
||||
for i in range(1,5):
|
||||
Mod('r%d' % i,
|
||||
'frappy_psi.ppms.BridgeChannel',
|
||||
'resistivity channel %d' % i,
|
||||
no = i,
|
||||
value = Param(unit = 'Ohm'),
|
||||
io = 'ppms',
|
||||
)
|
||||
|
||||
for i in range(1,5):
|
||||
Mod('i%d' % i,
|
||||
'frappy_psi.ppms.Channel',
|
||||
'current channel %d' % i,
|
||||
no = i,
|
||||
value = Param(unit = 'uA'),
|
||||
io = 'ppms',
|
||||
)
|
||||
|
||||
Mod('v1',
|
||||
'frappy_psi.ppms.DriverChannel',
|
||||
'voltage channel 1',
|
||||
no = 1,
|
||||
value = Param(unit = 'V'),
|
||||
io = 'ppms',
|
||||
)
|
||||
|
||||
Mod('v2',
|
||||
'frappy_psi.ppms.DriverChannel',
|
||||
'voltage channel 2',
|
||||
no = 2,
|
||||
value = Param(unit = 'V'),
|
||||
io = 'ppms',
|
||||
)
|
||||
|
||||
Mod('tv',
|
||||
'frappy_psi.ppms.UserChannel',
|
||||
'VTI temperature',
|
||||
enabled = 1,
|
||||
value = Param(unit = 'K'),
|
||||
io = 'ppms',
|
||||
)
|
||||
|
||||
Mod('ts',
|
||||
'frappy_psi.ppms.UserChannel',
|
||||
'sample temperature',
|
||||
enabled = 1,
|
||||
value = Param(unit = 'K'),
|
||||
io = 'ppms',
|
||||
)
|
||||
|
||||
Mod('ppms',
|
||||
'frappy_psi.ppms.Main',
|
||||
'the main and poller module',
|
||||
class_id = 'QD.MULTIVU.PPMS.1',
|
||||
visibility = 3,
|
||||
pollinterval = 2,
|
||||
)
|
||||
22
cfg/ppms_proxy_test.cfg
Normal file
22
cfg/ppms_proxy_test.cfg
Normal file
@@ -0,0 +1,22 @@
|
||||
[node filtered.PPMS.psi.ch]
|
||||
description = filtered PPMS at PSI
|
||||
|
||||
[interface tcp]
|
||||
type = tcp
|
||||
bindto = 0.0.0.0
|
||||
bindport = 5002
|
||||
|
||||
[module secnode]
|
||||
class = secop.SecNode
|
||||
description = a SEC node
|
||||
uri = tcp://localhost:5000
|
||||
|
||||
[module mf]
|
||||
class = secop.Proxy
|
||||
remote_class = secop_psi.ppms.Field
|
||||
description = magnetic field
|
||||
io = secnode
|
||||
value.min = -0.1
|
||||
value.max = 0.1
|
||||
target.min = -8
|
||||
target.max = 8
|
||||
@@ -1,21 +0,0 @@
|
||||
Node('filtered.PPMS.psi.ch',
|
||||
'filtered PPMS at PSI',
|
||||
'tcp://5002',
|
||||
)
|
||||
|
||||
|
||||
Mod('secnode',
|
||||
'frappy.proxy.SecNode',
|
||||
'a SEC node',
|
||||
uri = 'tcp://localhost:5000',
|
||||
)
|
||||
|
||||
Mod('mf',
|
||||
'frappy.proxy.Proxy',
|
||||
'magnetic field',
|
||||
remote_class = 'frappy_psi.ppms.Field',
|
||||
io = 'secnode',
|
||||
|
||||
value = Param(),
|
||||
target = Param(min=-0.1, max=0.1),
|
||||
)
|
||||
124
cfg/ppmssim.cfg
Normal file
124
cfg/ppmssim.cfg
Normal file
@@ -0,0 +1,124 @@
|
||||
[NODE]
|
||||
id = PPMS.psi.ch
|
||||
description = PPMS at PSI
|
||||
|
||||
[INTERFACE]
|
||||
uri = tcp://5000
|
||||
|
||||
[tt]
|
||||
class = secop_psi.ppms.Temp
|
||||
description = main temperature
|
||||
io = ppms
|
||||
|
||||
[mf]
|
||||
class = secop_psi.ppms.Field
|
||||
target.min = -9
|
||||
target.max = 9
|
||||
description = magnetic field
|
||||
io = ppms
|
||||
|
||||
[pos]
|
||||
class = secop_psi.ppms.Position
|
||||
description = sample rotator
|
||||
io = ppms
|
||||
|
||||
[lev]
|
||||
class = secop_psi.ppms.Level
|
||||
description = helium level
|
||||
io = ppms
|
||||
|
||||
[chamber]
|
||||
class = secop_psi.ppms.Chamber
|
||||
description = chamber state
|
||||
io = ppms
|
||||
|
||||
[r1]
|
||||
class = secop_psi.ppms.BridgeChannel
|
||||
description = resistivity channel 1
|
||||
no = 1
|
||||
value.unit = Ohm
|
||||
io = ppms
|
||||
|
||||
[r2]
|
||||
class = secop_psi.ppms.BridgeChannel
|
||||
description = resistivity channel 2
|
||||
no = 2
|
||||
value.unit = Ohm
|
||||
io = ppms
|
||||
|
||||
[r3]
|
||||
class = secop_psi.ppms.BridgeChannel
|
||||
description = resistivity channel 3
|
||||
no = 3
|
||||
value.unit = Ohm
|
||||
io = ppms
|
||||
|
||||
[r4]
|
||||
class = secop_psi.ppms.BridgeChannel
|
||||
description = resistivity channel 4
|
||||
no = 4
|
||||
value.unit = Ohm
|
||||
io = ppms
|
||||
|
||||
[i1]
|
||||
class = secop_psi.ppms.Channel
|
||||
description = current channel 1
|
||||
no = 1
|
||||
value.unit = uA
|
||||
io = ppms
|
||||
|
||||
[i2]
|
||||
class = secop_psi.ppms.Channel
|
||||
description = current channel 2
|
||||
no = 2
|
||||
value.unit = uA
|
||||
io = ppms
|
||||
|
||||
[i3]
|
||||
class = secop_psi.ppms.Channel
|
||||
description = current channel 3
|
||||
no = 3
|
||||
value.unit = uA
|
||||
io = ppms
|
||||
|
||||
[i4]
|
||||
class = secop_psi.ppms.Channel
|
||||
description = current channel 4
|
||||
no = 4
|
||||
value.unit = uA
|
||||
io = ppms
|
||||
|
||||
[v1]
|
||||
class = secop_psi.ppms.DriverChannel
|
||||
description = voltage channel 1
|
||||
no = 1
|
||||
value.unit = V
|
||||
io = ppms
|
||||
|
||||
[v2]
|
||||
class = secop_psi.ppms.DriverChannel
|
||||
description = voltage channel 2
|
||||
no = 2
|
||||
value.unit = V
|
||||
io = ppms
|
||||
|
||||
[tv]
|
||||
class = secop_psi.ppms.UserChannel
|
||||
description = VTI temperature
|
||||
enabled = 1
|
||||
value.unit = K
|
||||
io = ppms
|
||||
|
||||
[ts]
|
||||
class = secop_psi.ppms.UserChannel
|
||||
description = sample temperature
|
||||
enabled = 1
|
||||
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
|
||||
126
cfg/ppmswin.cfg
Normal file
126
cfg/ppmswin.cfg
Normal file
@@ -0,0 +1,126 @@
|
||||
[NODE]
|
||||
id = PPMS.psi.ch
|
||||
description = PPMS at PSI
|
||||
|
||||
[INTERFACE]
|
||||
uri = tcp://5000
|
||||
|
||||
[tt]
|
||||
class = secop_psi.ppms.Temp
|
||||
description = main temperature
|
||||
io = ppms
|
||||
|
||||
[mf]
|
||||
class = secop_psi.ppms.Field
|
||||
target.min = -9
|
||||
target.max = 9
|
||||
.description = magnetic field
|
||||
.io = ppms
|
||||
|
||||
[pos]
|
||||
class = secop_psi.ppms.Position
|
||||
.description = sample rotator
|
||||
.io = ppms
|
||||
|
||||
[lev]
|
||||
class = secop_psi.ppms.Level
|
||||
.description = helium level
|
||||
.io = ppms
|
||||
|
||||
[chamber]
|
||||
class = secop_psi.ppms.Chamber
|
||||
.description = chamber state
|
||||
.io = ppms
|
||||
|
||||
[r1]
|
||||
class = secop_psi.ppms.BridgeChannel
|
||||
.description = resistivity channel 1
|
||||
.no = 1
|
||||
value.unit = Ohm
|
||||
.io = ppms
|
||||
|
||||
[r2]
|
||||
class = secop_psi.ppms.BridgeChannel
|
||||
.description = resistivity channel 2
|
||||
.no = 2
|
||||
value.unit = Ohm
|
||||
.io = ppms
|
||||
|
||||
[r3]
|
||||
class = secop_psi.ppms.BridgeChannel
|
||||
.description = resistivity channel 3
|
||||
.no = 3
|
||||
value.unit = Ohm
|
||||
.io = ppms
|
||||
|
||||
[r4]
|
||||
class = secop_psi.ppms.BridgeChannel
|
||||
.description = resistivity channel 4
|
||||
.no = 4
|
||||
value.unit = Ohm
|
||||
.io = ppms
|
||||
|
||||
[i1]
|
||||
class = secop_psi.ppms.Channel
|
||||
.description = current channel 1
|
||||
.no = 1
|
||||
value.unit = uA
|
||||
.io = ppms
|
||||
|
||||
[i2]
|
||||
class = secop_psi.ppms.Channel
|
||||
.description = current channel 2
|
||||
.no = 2
|
||||
value.unit = uA
|
||||
.io = ppms
|
||||
|
||||
[i3]
|
||||
class = secop_psi.ppms.Channel
|
||||
.description = current channel 3
|
||||
.no = 3
|
||||
value.unit = uA
|
||||
.io = ppms
|
||||
|
||||
[i4]
|
||||
class = secop_psi.ppms.Channel
|
||||
.description = current channel 4
|
||||
.no = 4
|
||||
value.unit = uA
|
||||
.io = ppms
|
||||
|
||||
[v1]
|
||||
class = secop_psi.ppms.DriverChannel
|
||||
.description = voltage channel 1
|
||||
.no = 1
|
||||
value.unit = V
|
||||
.io = ppms
|
||||
|
||||
[v2]
|
||||
class = secop_psi.ppms.DriverChannel
|
||||
.description = voltage channel 2
|
||||
.no = 2
|
||||
value.unit = V
|
||||
.io = ppms
|
||||
|
||||
[tv]
|
||||
class = secop_psi.ppms.UserChannel
|
||||
.description = VTI temperature
|
||||
enabled = 0
|
||||
linkenable = ts
|
||||
value.unit = K
|
||||
.io = ppms
|
||||
|
||||
[ts]
|
||||
class = secop_psi.ppms.UserChannel
|
||||
.description = sample temperature
|
||||
enabled = 0
|
||||
linkenable = tv
|
||||
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
|
||||
23
cfg/prep2.cfg
Normal file
23
cfg/prep2.cfg
Normal file
@@ -0,0 +1,23 @@
|
||||
[node ori1.psi.ch]
|
||||
description = ori1 over SEA
|
||||
|
||||
[interface tcp]
|
||||
type = tcp
|
||||
bindport = 10767
|
||||
|
||||
[module seaconn]
|
||||
class = secop_psi.sea.SeaClient
|
||||
description = a SEA connection
|
||||
uri = tcp://samenv.psi.ch:8642
|
||||
|
||||
[module tt]
|
||||
class = secop_psi.sea.SeaDrivable
|
||||
io = seaconn
|
||||
json_descr = tt.ori1.config
|
||||
remote_paths = .
|
||||
|
||||
[module nv]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = nv.ori1.config
|
||||
remote_paths = .
|
||||
119
cfg/prep5.cfg
Normal file
119
cfg/prep5.cfg
Normal file
@@ -0,0 +1,119 @@
|
||||
[node ma11_dil4_ultrasound_sr.psi.ch]
|
||||
description = ma11_dil4_ultrasound_sr over SEA
|
||||
|
||||
[interface tcp]
|
||||
type = tcp
|
||||
bindport = 10767
|
||||
|
||||
[module seaconn]
|
||||
class = secop_psi.sea.SeaClient
|
||||
description = a SEA connection
|
||||
uri = tcp://samenv.psi.ch:8645
|
||||
|
||||
[module tt]
|
||||
class = secop_psi.sea.SeaDrivable
|
||||
io = seaconn
|
||||
json_descr = tt.ma11.config
|
||||
remote_paths = .
|
||||
|
||||
[module nv]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = nv.ma11.config
|
||||
remote_paths = .
|
||||
|
||||
[module ln2fill]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = ln2fill.ma11.config
|
||||
remote_paths = .
|
||||
|
||||
[module hefill]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = hefill.ma11.config
|
||||
remote_paths = .
|
||||
|
||||
[module tcoil]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = tcoil.ma11.config
|
||||
remote_paths = .
|
||||
|
||||
[module table]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = table.ma11.config
|
||||
remote_paths = .
|
||||
|
||||
[module lnv]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = lnv.ma11.config
|
||||
remote_paths = .
|
||||
|
||||
[module lpr]
|
||||
class = secop_psi.sea.SeaDrivable
|
||||
io = seaconn
|
||||
json_descr = lpr.ma11.config
|
||||
remote_paths = .
|
||||
|
||||
[module lambdawatch]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = lambdawatch.ma11.config
|
||||
remote_paths = .
|
||||
|
||||
[module ts]
|
||||
class = secop_psi.sea.SeaDrivable
|
||||
io = seaconn
|
||||
json_descr = ts.dil4.stick
|
||||
remote_paths = .
|
||||
|
||||
[module treg]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = treg.dil4.stick
|
||||
remote_paths = .
|
||||
|
||||
[module tmon]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = tmon.dil4.stick
|
||||
remote_paths = .
|
||||
|
||||
[module sorb]
|
||||
class = secop_psi.sea.SeaDrivable
|
||||
io = seaconn
|
||||
json_descr = sorb.dil4.stick
|
||||
remote_paths = .
|
||||
|
||||
[module ultrasound]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = ultrasound.ultrasound.addon
|
||||
remote_paths = .
|
||||
|
||||
[module fn]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = fn.ultrasound.addon
|
||||
remote_paths = .
|
||||
|
||||
[module mirror]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = mirror.ultrasound.addon
|
||||
remote_paths = .
|
||||
|
||||
[module f]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = f.ultrasound.addon
|
||||
remote_paths = .
|
||||
|
||||
[module pars]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = pars.ultrasound.addon
|
||||
remote_paths = .
|
||||
65
cfg/prep6.cfg
Normal file
65
cfg/prep6.cfg
Normal file
@@ -0,0 +1,65 @@
|
||||
[node varioxB_vb.psi.ch]
|
||||
description = varioxB_vb over SEA
|
||||
|
||||
[interface tcp]
|
||||
type = tcp
|
||||
bindport = 10767
|
||||
|
||||
[module seaconn]
|
||||
class = secop_psi.sea.SeaClient
|
||||
description = a SEA connection
|
||||
uri = tcp://samenv.psi.ch:8646
|
||||
|
||||
[module tvs]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = tvs.varioxB.config
|
||||
remote_paths = .
|
||||
|
||||
[module tvd]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = tvd.varioxB.config
|
||||
remote_paths = .
|
||||
|
||||
[module pstat]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = pstat.varioxB.config
|
||||
remote_paths = .
|
||||
|
||||
[module pdyn]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = pdyn.varioxB.config
|
||||
remote_paths = .
|
||||
|
||||
[module tneck1]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = tneck1.varioxB.config
|
||||
remote_paths = .
|
||||
|
||||
[module tneck2]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = tneck2.varioxB.config
|
||||
remote_paths = .
|
||||
|
||||
[module tnvs]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = tnvs.varioxB.config
|
||||
remote_paths = .
|
||||
|
||||
[module tnvd]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = tnvd.varioxB.config
|
||||
remote_paths = .
|
||||
|
||||
[module ts]
|
||||
class = secop_psi.sea.SeaReadable
|
||||
io = seaconn
|
||||
json_descr = ts.vb.stick
|
||||
remote_paths = .
|
||||
@@ -1,34 +0,0 @@
|
||||
import frappy.core as fc
|
||||
|
||||
enabled_modules = [ 'TNMR', 'Razorbill', 'Capacitance', 'NetAnalyser' ] # default
|
||||
#enabled_modules = [ 'Capacitance' ]
|
||||
|
||||
Node('uniaxial_nmr.psi.ch',
|
||||
'The NMR system running the Scout and controlled with TNMR. Also contains a uniaxial cell (Razorbill RP100), a network analyser (ZVL), and a capacitance reader (for more direct measurements of the strain cell\'s status) (TSSOP16 with Arduino Nano V3)',
|
||||
interface='tcp://5000')
|
||||
|
||||
# TNMR
|
||||
if('TNMR' in enabled_modules):
|
||||
Mod('tnmr_otf_module', 'frappy_psi.tnmr.OTFModule.ProgrammedSequence', 'NMR Sequence')
|
||||
|
||||
# Razorbill RP100
|
||||
if('Razorbill' in enabled_modules):
|
||||
Mod('io_razorbill',
|
||||
'frappy_psi.uniaxial_cell.RP100.RP100IO',
|
||||
'communication',
|
||||
uri='serial://COM3?baudrate=9600+bytesize=8+parity=none+stopbits=1')
|
||||
Mod('RP100Node_CH1', 'frappy_psi.uniaxial_cell.RP100.VoltageChannel', 'Razorbill RP100 PSU (CH1)', channel=1, io='io_razorbill')
|
||||
Mod('RP100Node_CH2', 'frappy_psi.uniaxial_cell.RP100.VoltageChannel', 'Razorbill RP100 PSU (CH2)', channel=2, io='io_razorbill')
|
||||
|
||||
# Capacitance readings (TSSOP16 with Arduino Nano V3)
|
||||
if('Capacitance' in enabled_modules):
|
||||
Mod('io_capacitance',
|
||||
'frappy_psi.capacitance_readings.TSSOP16.TSSOP16_IO',
|
||||
'communication',
|
||||
uri='serial://COM5?baudrate=9600+bytesize=8+parity=none+stopbits=1')
|
||||
|
||||
Mod('TSSOP16', 'frappy_psi.capacitance_readings.TSSOP16.TSSOP16', 'Capacitance-reading Arduino (with TSSOP16)', io='io_capacitance')
|
||||
|
||||
# ZVL Network Analyser
|
||||
if('NetAnalyser' in enabled_modules):
|
||||
Mod('ZVLNode', 'frappy_psi.network_analysers.ZVL.ZVLNode.ZVLNode', 'ZVL Network Analyser', analyser_ip=Param('129.129.156.201')) # must be connected on the same ethernet network
|
||||
@@ -1,12 +0,0 @@
|
||||
import frappy.core as fc
|
||||
import serial
|
||||
|
||||
Node('example_RP100.psi.ch', 'A demo system showing how to connect the Razorbill PSU', interface='tcp://5000')
|
||||
|
||||
Mod('io1',
|
||||
'frappy_psi.uniaxial_cell.RP100.RP100IO',
|
||||
'communication',
|
||||
uri='serial://COM10?baudrate=9600+bytesize=8+parity=none+stopbits=1')
|
||||
|
||||
Mod('RP100Node_CH1', 'frappy_psi.uniaxial_cell.RP100.VoltageChannel', 'Razorbill RP100 PSU (CH1)', channel=1, io='io1')
|
||||
Mod('RP100Node_CH2', 'frappy_psi.uniaxial_cell.RP100.VoltageChannel', 'Razorbill RP100 PSU (CH2)', channel=2, io='io1')
|
||||
8
cfg/router.cfg
Normal file
8
cfg/router.cfg
Normal file
@@ -0,0 +1,8 @@
|
||||
[NODE]
|
||||
id = router
|
||||
class = protocol.router.Router
|
||||
description = router node
|
||||
node = localhost:5000
|
||||
|
||||
[INTERFACE]
|
||||
uri=tcp://5002
|
||||
@@ -1,6 +0,0 @@
|
||||
Node('router',
|
||||
'router node',
|
||||
'tcp://5002',
|
||||
cls = 'protocol.router.Router',
|
||||
node = 'localhost:5000',
|
||||
)
|
||||
8
cfg/sea.cfg
Normal file
8
cfg/sea.cfg
Normal file
@@ -0,0 +1,8 @@
|
||||
[NODE]
|
||||
description = sea client (communication only)
|
||||
id = comm.sea.psi.ch
|
||||
|
||||
[seaconn]
|
||||
class = secop_psi.sea.SeaClient
|
||||
description = a SEA connection
|
||||
visibility = 1
|
||||
15
cfg/sea/ah2700.addon.json
Normal file
15
cfg/sea/ah2700.addon.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{"cap": {"base": "/cap", "params": [{"path": "", "type": "none", "kids": 8},
|
||||
{"path": "send", "type": "text", "readonly": false, "cmd": "cap send", "visibility": 3},
|
||||
{"path": "status", "type": "text", "visibility": 3},
|
||||
{"path": "cap", "type": "float"},
|
||||
{"path": "loss", "type": "float"},
|
||||
{"path": "period", "type": "float", "readonly": false, "cmd": "cap period"},
|
||||
{"path": "freq", "type": "float", "readonly": false, "cmd": "cap freq"},
|
||||
{"path": "V", "type": "float", "readonly": false, "cmd": "cap V"},
|
||||
{"path": "average", "type": "int", "readonly": false, "cmd": "cap average"}]}, "capslope": {"base": "/capslope", "params": [{"path": "", "type": "float", "kids": 6},
|
||||
{"path": "send", "type": "text", "readonly": false, "cmd": "capslope send", "visibility": 3},
|
||||
{"path": "status", "type": "text", "visibility": 3},
|
||||
{"path": "node", "type": "text", "readonly": false, "cmd": "capslope node"},
|
||||
{"path": "unit", "type": "float", "readonly": false, "cmd": "capslope unit", "description": "unit=60: mainunits/minutes, unit=1: mainunits/sec"},
|
||||
{"path": "ref", "type": "float", "readonly": false, "cmd": "capslope ref"},
|
||||
{"path": "buffersize", "type": "float", "readonly": false, "cmd": "capslope buffersize"}]}}
|
||||
19
cfg/sea/be-filter-boa.addon.json
Normal file
19
cfg/sea/be-filter-boa.addon.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{"befilter": {"base": "/befilter", "params": [
|
||||
{"path": "", "type": "float", "kids": 12},
|
||||
{"path": "send", "type": "text", "readonly": false, "cmd": "befilter send", "visibility": 3},
|
||||
{"path": "status", "type": "text", "visibility": 3},
|
||||
{"path": "cool", "type": "enum", "enum": {"on": 0, "off": 1}, "readonly": false, "cmd": "befilter cool"},
|
||||
{"path": "control", "type": "enum", "enum": {"auto_power": 1, "manual_power": 0, "controlled_T": 2}, "readonly": false, "cmd": "befilter control", "description": "recommended mode: auto_power, use coolpower or holdpower depending on T"},
|
||||
{"path": "set", "type": "float", "readonly": false, "cmd": "befilter set"},
|
||||
{"path": "setpower", "type": "float", "readonly": false, "cmd": "befilter setpower", "visibility": 3},
|
||||
{"path": "coolpower", "type": "float", "readonly": false, "cmd": "befilter coolpower", "visibility": 3},
|
||||
{"path": "holdpower", "type": "float", "readonly": false, "cmd": "befilter holdpower", "visibility": 3},
|
||||
{"path": "cool_threshold", "type": "float", "readonly": false, "cmd": "befilter cool_threshold", "description": "switch to coolpower above this value", "visibility": 3},
|
||||
{"path": "hold_threshold", "type": "float", "readonly": false, "cmd": "befilter hold_threshold", "description": "switch to holdpower below this value", "visibility": 3},
|
||||
{"path": "power", "type": "float"},
|
||||
{"path": "filter", "type": "none", "kids": 5},
|
||||
{"path": "filter/period", "type": "float", "readonly": false, "cmd": "befilter filter/period", "description": "oszillation period / sec"},
|
||||
{"path": "filter/amplitude", "type": "float", "readonly": false, "cmd": "befilter filter/amplitude", "description": "oszillation amplitude / K (+/-)"},
|
||||
{"path": "filter/precision", "type": "float", "readonly": false, "cmd": "befilter filter/precision"},
|
||||
{"path": "filter/raw", "type": "float"},
|
||||
{"path": "filter/intdif", "type": "float"}]}}
|
||||
155
cfg/sea/ccr2.config.json
Normal file
155
cfg/sea/ccr2.config.json
Normal file
@@ -0,0 +1,155 @@
|
||||
{"tt": {"base": "/tt", "params": [{"path": "", "type": "float", "readonly": false, "cmd": "run tt", "description": "tt", "kids": 17},
|
||||
{"path": "send", "type": "text", "readonly": false, "cmd": "tt send", "visibility": 3},
|
||||
{"path": "status", "type": "text", "visibility": 3},
|
||||
{"path": "is_running", "type": "int", "readonly": false, "cmd": "tt is_running", "visibility": 3},
|
||||
{"path": "target", "type": "float"},
|
||||
{"path": "running", "type": "int"},
|
||||
{"path": "tolerance", "type": "float", "readonly": false, "cmd": "tt tolerance"},
|
||||
{"path": "maxwait", "type": "float", "readonly": false, "cmd": "tt maxwait"},
|
||||
{"path": "settle", "type": "float", "readonly": false, "cmd": "tt settle"},
|
||||
{"path": "log", "type": "text", "readonly": false, "cmd": "tt log", "visibility": 3, "kids": 4},
|
||||
{"path": "log/mean", "type": "float", "visibility": 3},
|
||||
{"path": "log/m2", "type": "float", "visibility": 3},
|
||||
{"path": "log/stddev", "type": "float", "visibility": 3},
|
||||
{"path": "log/n", "type": "float", "visibility": 3},
|
||||
{"path": "dblctrl", "type": "bool", "readonly": false, "cmd": "tt dblctrl", "visibility": 3, "kids": 9},
|
||||
{"path": "dblctrl/tshift", "type": "float", "readonly": false, "cmd": "tt dblctrl/tshift", "visibility": 3},
|
||||
{"path": "dblctrl/mode", "type": "enum", "enum": {"disabled": -1, "inactive": 0, "stable": 1, "up": 2, "down": 3}, "readonly": false, "cmd": "tt dblctrl/mode", "visibility": 3},
|
||||
{"path": "dblctrl/shift_up", "type": "float", "visibility": 3},
|
||||
{"path": "dblctrl/shift_lo", "type": "float", "visibility": 3},
|
||||
{"path": "dblctrl/t_min", "type": "float", "visibility": 3},
|
||||
{"path": "dblctrl/t_max", "type": "float", "visibility": 3},
|
||||
{"path": "dblctrl/int2", "type": "float", "readonly": false, "cmd": "tt dblctrl/int2", "visibility": 3},
|
||||
{"path": "dblctrl/prop_up", "type": "float", "readonly": false, "cmd": "tt dblctrl/prop_up", "visibility": 3},
|
||||
{"path": "dblctrl/prop_lo", "type": "float", "readonly": false, "cmd": "tt dblctrl/prop_lo", "visibility": 3},
|
||||
{"path": "tm", "type": "float", "kids": 4},
|
||||
{"path": "tm/curve", "type": "text", "readonly": false, "cmd": "tt tm/curve", "kids": 1},
|
||||
{"path": "tm/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt tm/curve/points", "visibility": 3},
|
||||
{"path": "tm/alarm", "type": "float", "readonly": false, "cmd": "tt tm/alarm"},
|
||||
{"path": "tm/stddev", "type": "float"},
|
||||
{"path": "tm/raw", "type": "float"},
|
||||
{"path": "te", "type": "float", "kids": 4},
|
||||
{"path": "te/curve", "type": "text", "readonly": false, "cmd": "tt te/curve", "kids": 1},
|
||||
{"path": "te/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt te/curve/points", "visibility": 3},
|
||||
{"path": "te/alarm", "type": "float", "readonly": false, "cmd": "tt te/alarm"},
|
||||
{"path": "te/stddev", "type": "float"},
|
||||
{"path": "te/raw", "type": "float"},
|
||||
{"path": "set", "type": "float", "readonly": false, "cmd": "tt set", "kids": 18},
|
||||
{"path": "set/mode", "type": "enum", "enum": {"disabled": -1, "off": 0, "controlling": 1, "manual": 2}, "readonly": false, "cmd": "tt set/mode"},
|
||||
{"path": "set/reg", "type": "float"},
|
||||
{"path": "set/ramp", "type": "float", "readonly": false, "cmd": "tt set/ramp", "description": "maximum ramp in K/min (0: ramp off)"},
|
||||
{"path": "set/wramp", "type": "float", "readonly": false, "cmd": "tt set/wramp"},
|
||||
{"path": "set/smooth", "type": "float", "readonly": false, "cmd": "tt set/smooth", "description": "smooth time (minutes)"},
|
||||
{"path": "set/channel", "type": "text", "readonly": false, "cmd": "tt set/channel"},
|
||||
{"path": "set/limit", "type": "float", "readonly": false, "cmd": "tt set/limit"},
|
||||
{"path": "set/resist", "type": "float", "readonly": false, "cmd": "tt set/resist"},
|
||||
{"path": "set/maxheater", "type": "text", "readonly": false, "cmd": "tt set/maxheater", "description": "maximum heater limit, units should be given without space: W, mW, A, mA"},
|
||||
{"path": "set/linearpower", "type": "float", "readonly": false, "cmd": "tt set/linearpower", "description": "when not 0, it is the maximum effective power, and the power is linear to the heater output"},
|
||||
{"path": "set/maxpowerlim", "type": "float", "description": "the maximum power limit (before any booster or converter)"},
|
||||
{"path": "set/maxpower", "type": "float", "readonly": false, "cmd": "tt set/maxpower", "description": "maximum power [W]"},
|
||||
{"path": "set/maxcurrent", "type": "float", "description": "the maximum current before any booster or converter"},
|
||||
{"path": "set/manualpower", "type": "float", "readonly": false, "cmd": "tt set/manualpower"},
|
||||
{"path": "set/power", "type": "float"},
|
||||
{"path": "set/prop", "type": "float", "readonly": false, "cmd": "tt set/prop", "description": "bigger means more gain"},
|
||||
{"path": "set/integ", "type": "float", "readonly": false, "cmd": "tt set/integ", "description": "bigger means faster"},
|
||||
{"path": "set/deriv", "type": "float", "readonly": false, "cmd": "tt set/deriv"},
|
||||
{"path": "display", "type": "text", "readonly": false, "cmd": "tt display"},
|
||||
{"path": "dout", "type": "int", "readonly": false, "cmd": "tt dout"},
|
||||
{"path": "dinp", "type": "int"},
|
||||
{"path": "remote", "type": "bool"}]}, "cc": {"base": "/cc", "params": [{"path": "", "type": "bool", "kids": 96},
|
||||
{"path": "send", "type": "text", "readonly": false, "cmd": "cc send", "visibility": 3},
|
||||
{"path": "status", "type": "text", "visibility": 3},
|
||||
{"path": "autodevice", "type": "bool", "readonly": false, "cmd": "cc autodevice"},
|
||||
{"path": "fav", "type": "bool", "readonly": false, "cmd": "cc fav"},
|
||||
{"path": "f", "type": "float"},
|
||||
{"path": "fs", "type": "enum", "enum": {"ok": 0, "no_sens": 1}, "readonly": false, "cmd": "cc fs"},
|
||||
{"path": "mav", "type": "bool", "readonly": false, "cmd": "cc mav"},
|
||||
{"path": "fm", "type": "enum", "enum": {"idle": 0, "opening": 1, "closing": 2, "opened": 3, "closed": 4, "no_motor": 5}},
|
||||
{"path": "fa", "type": "enum", "enum": {"fixed": 0, "controlled": 1, "automatic": 2, "offline": 3}, "readonly": false, "cmd": "cc fa"},
|
||||
{"path": "mp", "type": "float", "readonly": false, "cmd": "cc mp"},
|
||||
{"path": "msp", "type": "float"},
|
||||
{"path": "mmp", "type": "float"},
|
||||
{"path": "mc", "type": "float", "readonly": false, "cmd": "cc mc"},
|
||||
{"path": "mfc", "type": "float", "readonly": false, "cmd": "cc mfc"},
|
||||
{"path": "moc", "type": "float", "readonly": false, "cmd": "cc moc"},
|
||||
{"path": "mtc", "type": "float", "readonly": false, "cmd": "cc mtc"},
|
||||
{"path": "mtl", "type": "float"},
|
||||
{"path": "mft", "type": "float", "readonly": false, "cmd": "cc mft"},
|
||||
{"path": "mt", "type": "float"},
|
||||
{"path": "mo", "type": "float"},
|
||||
{"path": "mcr", "type": "float"},
|
||||
{"path": "mot", "type": "float"},
|
||||
{"path": "mw", "type": "float", "readonly": false, "cmd": "cc mw", "description": "correction pulse after automatic open"},
|
||||
{"path": "hav", "type": "bool", "readonly": false, "cmd": "cc hav"},
|
||||
{"path": "h", "type": "float"},
|
||||
{"path": "hr", "type": "float"},
|
||||
{"path": "hc", "type": "float"},
|
||||
{"path": "hu", "type": "float"},
|
||||
{"path": "hh", "type": "float", "readonly": false, "cmd": "cc hh"},
|
||||
{"path": "hl", "type": "float", "readonly": false, "cmd": "cc hl"},
|
||||
{"path": "htf", "type": "float", "readonly": false, "cmd": "cc htf", "description": "meas. period in fast mode"},
|
||||
{"path": "hts", "type": "float", "readonly": false, "cmd": "cc hts", "description": "meas. period in slow mode"},
|
||||
{"path": "hd", "type": "float", "readonly": false, "cmd": "cc hd"},
|
||||
{"path": "hwr", "type": "float", "readonly": false, "cmd": "cc hwr"},
|
||||
{"path": "hem", "type": "float", "readonly": false, "cmd": "cc hem", "description": "sensor length in mm from top to empty pos."},
|
||||
{"path": "hfu", "type": "float", "readonly": false, "cmd": "cc hfu", "description": "sensor length in mm from top to full pos."},
|
||||
{"path": "hcd", "type": "enum", "enum": {"stop": 0, "fill": 1, "off": 2, "auto": 3, "manual": 7}, "readonly": false, "cmd": "cc hcd"},
|
||||
{"path": "hv", "type": "enum", "enum": {"fill_valve_off": 0, "filling": 1, "no_fill_valve": 2, "timeout": 3, "timeout1": 4}},
|
||||
{"path": "hsf", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "ha", "type": "bool", "readonly": false, "cmd": "cc ha"},
|
||||
{"path": "hm", "type": "bool"},
|
||||
{"path": "hf", "type": "enum", "enum": {"slow": 0, "fast": 1}, "readonly": false, "cmd": "cc hf"},
|
||||
{"path": "hbe", "type": "bool", "readonly": false, "cmd": "cc hbe"},
|
||||
{"path": "hmf", "type": "float"},
|
||||
{"path": "hms", "type": "float"},
|
||||
{"path": "hit", "type": "float", "readonly": false, "cmd": "cc hit"},
|
||||
{"path": "hft", "type": "int", "readonly": false, "cmd": "cc hft"},
|
||||
{"path": "hea", "type": "enum", "enum": {"0": 0, "1": 1, "6": 2}, "readonly": false, "cmd": "cc hea"},
|
||||
{"path": "hch", "type": "int", "readonly": false, "cmd": "cc hch"},
|
||||
{"path": "hwr0", "type": "float", "readonly": false, "cmd": "cc hwr0"},
|
||||
{"path": "hem0", "type": "float", "readonly": false, "cmd": "cc hem0", "description": "sensor length in mm from top to empty pos."},
|
||||
{"path": "hfu0", "type": "float", "readonly": false, "cmd": "cc hfu0", "description": "sensor length in mm from top to full pos."},
|
||||
{"path": "hd0", "type": "float", "readonly": false, "cmd": "cc hd0", "description": "external sensor drive current (mA)"},
|
||||
{"path": "h0", "type": "float"},
|
||||
{"path": "hs0", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "h1", "type": "float"},
|
||||
{"path": "hs1", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "h2", "type": "float"},
|
||||
{"path": "hs2", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "h3", "type": "float"},
|
||||
{"path": "hs3", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "h4", "type": "float"},
|
||||
{"path": "hs4", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "h5", "type": "float"},
|
||||
{"path": "hs5", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "hfb", "type": "float"},
|
||||
{"path": "nav", "type": "bool", "readonly": false, "cmd": "cc nav"},
|
||||
{"path": "nu", "type": "float"},
|
||||
{"path": "nl", "type": "float"},
|
||||
{"path": "nth", "type": "float", "readonly": false, "cmd": "cc nth"},
|
||||
{"path": "ntc", "type": "float", "readonly": false, "cmd": "cc ntc"},
|
||||
{"path": "ntm", "type": "float", "readonly": false, "cmd": "cc ntm"},
|
||||
{"path": "ns", "type": "enum", "enum": {"sens_ok": 0, "no_sens": 1, "short_circuit": 2, "upside_down": 3, "sens_warm": 4, "empty": 5}},
|
||||
{"path": "na", "type": "bool", "readonly": false, "cmd": "cc na"},
|
||||
{"path": "nv", "type": "enum", "enum": {"fill_valve_off": 0, "filling": 1, "no_fill_valve": 2, "timeout": 3, "timeout1": 4, "boost": 5}},
|
||||
{"path": "nc", "type": "enum", "enum": {"stop": 0, "fill": 1, "off": 2, "auto": 3}, "readonly": false, "cmd": "cc nc"},
|
||||
{"path": "nfb", "type": "float"},
|
||||
{"path": "cda", "type": "float"},
|
||||
{"path": "cdb", "type": "float"},
|
||||
{"path": "cba", "type": "float"},
|
||||
{"path": "cbb", "type": "float"},
|
||||
{"path": "cvs", "type": "int"},
|
||||
{"path": "csp", "type": "int"},
|
||||
{"path": "cdv", "type": "text", "readonly": false, "cmd": "cc cdv"},
|
||||
{"path": "cic", "type": "text", "readonly": false, "cmd": "cc cic"},
|
||||
{"path": "cin", "type": "text"},
|
||||
{"path": "cds", "type": "enum", "enum": {"local": 0, "remote": 1, "loading": 2, "by_code": 3, "by_touch": 4}, "readonly": false, "cmd": "cc cds"},
|
||||
{"path": "timing", "type": "bool", "readonly": false, "cmd": "cc timing"},
|
||||
{"path": "tc", "type": "float"},
|
||||
{"path": "tn", "type": "float"},
|
||||
{"path": "th", "type": "float"},
|
||||
{"path": "tf", "type": "float"},
|
||||
{"path": "tm", "type": "float"},
|
||||
{"path": "tv", "type": "float"},
|
||||
{"path": "tq", "type": "float"},
|
||||
{"path": "bdl", "type": "float", "readonly": false, "cmd": "cc bdl"}]}}
|
||||
169
cfg/sea/ccr2ht.config.json
Normal file
169
cfg/sea/ccr2ht.config.json
Normal file
@@ -0,0 +1,169 @@
|
||||
{"tt": {"base": "/tt", "params": [{"path": "", "type": "float", "readonly": false, "cmd": "run tt", "description": "tt", "kids": 18},
|
||||
{"path": "send", "type": "text", "readonly": false, "cmd": "tt send", "visibility": 3},
|
||||
{"path": "status", "type": "text", "visibility": 3},
|
||||
{"path": "is_running", "type": "int", "readonly": false, "cmd": "tt is_running", "visibility": 3},
|
||||
{"path": "target", "type": "float"},
|
||||
{"path": "running", "type": "int"},
|
||||
{"path": "tolerance", "type": "float", "readonly": false, "cmd": "tt tolerance"},
|
||||
{"path": "maxwait", "type": "float", "readonly": false, "cmd": "tt maxwait"},
|
||||
{"path": "settle", "type": "float", "readonly": false, "cmd": "tt settle"},
|
||||
{"path": "log", "type": "text", "readonly": false, "cmd": "tt log", "visibility": 3, "kids": 4},
|
||||
{"path": "log/mean", "type": "float", "visibility": 3},
|
||||
{"path": "log/m2", "type": "float", "visibility": 3},
|
||||
{"path": "log/stddev", "type": "float", "visibility": 3},
|
||||
{"path": "log/n", "type": "float", "visibility": 3},
|
||||
{"path": "dblctrl", "type": "bool", "readonly": false, "cmd": "tt dblctrl", "visibility": 3, "kids": 9},
|
||||
{"path": "dblctrl/tshift", "type": "float", "readonly": false, "cmd": "tt dblctrl/tshift", "visibility": 3},
|
||||
{"path": "dblctrl/mode", "type": "enum", "enum": {"disabled": -1, "inactive": 0, "stable": 1, "up": 2, "down": 3}, "readonly": false, "cmd": "tt dblctrl/mode", "visibility": 3},
|
||||
{"path": "dblctrl/shift_up", "type": "float", "visibility": 3},
|
||||
{"path": "dblctrl/shift_lo", "type": "float", "visibility": 3},
|
||||
{"path": "dblctrl/t_min", "type": "float", "visibility": 3},
|
||||
{"path": "dblctrl/t_max", "type": "float", "visibility": 3},
|
||||
{"path": "dblctrl/int2", "type": "float", "readonly": false, "cmd": "tt dblctrl/int2", "visibility": 3},
|
||||
{"path": "dblctrl/prop_up", "type": "float", "readonly": false, "cmd": "tt dblctrl/prop_up", "visibility": 3},
|
||||
{"path": "dblctrl/prop_lo", "type": "float", "readonly": false, "cmd": "tt dblctrl/prop_lo", "visibility": 3},
|
||||
{"path": "tm", "type": "float", "kids": 4},
|
||||
{"path": "tm/curve", "type": "text", "readonly": false, "cmd": "tt tm/curve", "kids": 1},
|
||||
{"path": "tm/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt tm/curve/points", "visibility": 3},
|
||||
{"path": "tm/alarm", "type": "float", "readonly": false, "cmd": "tt tm/alarm"},
|
||||
{"path": "tm/stddev", "type": "float"},
|
||||
{"path": "tm/raw", "type": "float"},
|
||||
{"path": "te", "type": "float", "kids": 4},
|
||||
{"path": "te/curve", "type": "text", "readonly": false, "cmd": "tt te/curve", "kids": 1},
|
||||
{"path": "te/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt te/curve/points", "visibility": 3},
|
||||
{"path": "te/alarm", "type": "float", "readonly": false, "cmd": "tt te/alarm"},
|
||||
{"path": "te/stddev", "type": "float"},
|
||||
{"path": "te/raw", "type": "float"},
|
||||
{"path": "tk", "type": "float", "kids": 4},
|
||||
{"path": "tk/curve", "type": "text", "readonly": false, "cmd": "tt tk/curve", "kids": 1},
|
||||
{"path": "tk/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt tk/curve/points", "visibility": 3},
|
||||
{"path": "tk/alarm", "type": "float", "readonly": false, "cmd": "tt tk/alarm"},
|
||||
{"path": "tk/stddev", "type": "float"},
|
||||
{"path": "tk/raw", "type": "float"},
|
||||
{"path": "set", "type": "float", "readonly": false, "cmd": "tt set", "kids": 18},
|
||||
{"path": "set/mode", "type": "enum", "enum": {"disabled": -1, "off": 0, "controlling": 1, "manual": 2}, "readonly": false, "cmd": "tt set/mode"},
|
||||
{"path": "set/reg", "type": "float"},
|
||||
{"path": "set/ramp", "type": "float", "readonly": false, "cmd": "tt set/ramp", "description": "maximum ramp in K/min (0: ramp off)"},
|
||||
{"path": "set/wramp", "type": "float", "readonly": false, "cmd": "tt set/wramp"},
|
||||
{"path": "set/smooth", "type": "float", "readonly": false, "cmd": "tt set/smooth", "description": "smooth time (minutes)"},
|
||||
{"path": "set/channel", "type": "text", "readonly": false, "cmd": "tt set/channel"},
|
||||
{"path": "set/limit", "type": "float", "readonly": false, "cmd": "tt set/limit"},
|
||||
{"path": "set/resist", "type": "float", "readonly": false, "cmd": "tt set/resist"},
|
||||
{"path": "set/maxheater", "type": "text", "readonly": false, "cmd": "tt set/maxheater", "description": "maximum heater limit, units should be given without space: W, mW, A, mA"},
|
||||
{"path": "set/linearpower", "type": "float", "readonly": false, "cmd": "tt set/linearpower", "description": "when not 0, it is the maximum effective power, and the power is linear to the heater output"},
|
||||
{"path": "set/maxpowerlim", "type": "float", "description": "the maximum power limit (before any booster or converter)"},
|
||||
{"path": "set/maxpower", "type": "float", "readonly": false, "cmd": "tt set/maxpower", "description": "maximum power [W]"},
|
||||
{"path": "set/maxcurrent", "type": "float", "description": "the maximum current before any booster or converter"},
|
||||
{"path": "set/manualpower", "type": "float", "readonly": false, "cmd": "tt set/manualpower"},
|
||||
{"path": "set/power", "type": "float"},
|
||||
{"path": "set/prop", "type": "float", "readonly": false, "cmd": "tt set/prop", "description": "bigger means more gain"},
|
||||
{"path": "set/integ", "type": "float", "readonly": false, "cmd": "tt set/integ", "description": "bigger means faster"},
|
||||
{"path": "set/deriv", "type": "float", "readonly": false, "cmd": "tt set/deriv"},
|
||||
{"path": "display", "type": "text", "readonly": false, "cmd": "tt display"},
|
||||
{"path": "dout", "type": "int", "readonly": false, "cmd": "tt dout"},
|
||||
{"path": "dinp", "type": "int"},
|
||||
{"path": "remote", "type": "bool"}]}, "cc": {"base": "/cc", "params": [{"path": "", "type": "bool", "kids": 96},
|
||||
{"path": "send", "type": "text", "readonly": false, "cmd": "cc send", "visibility": 3},
|
||||
{"path": "status", "type": "text", "visibility": 3},
|
||||
{"path": "autodevice", "type": "bool", "readonly": false, "cmd": "cc autodevice"},
|
||||
{"path": "fav", "type": "bool", "readonly": false, "cmd": "cc fav"},
|
||||
{"path": "f", "type": "float"},
|
||||
{"path": "fs", "type": "enum", "enum": {"ok": 0, "no_sens": 1}, "readonly": false, "cmd": "cc fs"},
|
||||
{"path": "mav", "type": "bool", "readonly": false, "cmd": "cc mav"},
|
||||
{"path": "fm", "type": "enum", "enum": {"idle": 0, "opening": 1, "closing": 2, "opened": 3, "closed": 4, "no_motor": 5}},
|
||||
{"path": "fa", "type": "enum", "enum": {"fixed": 0, "controlled": 1, "automatic": 2, "offline": 3}, "readonly": false, "cmd": "cc fa"},
|
||||
{"path": "mp", "type": "float", "readonly": false, "cmd": "cc mp"},
|
||||
{"path": "msp", "type": "float"},
|
||||
{"path": "mmp", "type": "float"},
|
||||
{"path": "mc", "type": "float", "readonly": false, "cmd": "cc mc"},
|
||||
{"path": "mfc", "type": "float", "readonly": false, "cmd": "cc mfc"},
|
||||
{"path": "moc", "type": "float", "readonly": false, "cmd": "cc moc"},
|
||||
{"path": "mtc", "type": "float", "readonly": false, "cmd": "cc mtc"},
|
||||
{"path": "mtl", "type": "float"},
|
||||
{"path": "mft", "type": "float", "readonly": false, "cmd": "cc mft"},
|
||||
{"path": "mt", "type": "float"},
|
||||
{"path": "mo", "type": "float"},
|
||||
{"path": "mcr", "type": "float"},
|
||||
{"path": "mot", "type": "float"},
|
||||
{"path": "mw", "type": "float", "readonly": false, "cmd": "cc mw", "description": "correction pulse after automatic open"},
|
||||
{"path": "hav", "type": "bool", "readonly": false, "cmd": "cc hav"},
|
||||
{"path": "h", "type": "float"},
|
||||
{"path": "hr", "type": "float"},
|
||||
{"path": "hc", "type": "float"},
|
||||
{"path": "hu", "type": "float"},
|
||||
{"path": "hh", "type": "float", "readonly": false, "cmd": "cc hh"},
|
||||
{"path": "hl", "type": "float", "readonly": false, "cmd": "cc hl"},
|
||||
{"path": "htf", "type": "float", "readonly": false, "cmd": "cc htf", "description": "meas. period in fast mode"},
|
||||
{"path": "hts", "type": "float", "readonly": false, "cmd": "cc hts", "description": "meas. period in slow mode"},
|
||||
{"path": "hd", "type": "float", "readonly": false, "cmd": "cc hd"},
|
||||
{"path": "hwr", "type": "float", "readonly": false, "cmd": "cc hwr"},
|
||||
{"path": "hem", "type": "float", "readonly": false, "cmd": "cc hem", "description": "sensor length in mm from top to empty pos."},
|
||||
{"path": "hfu", "type": "float", "readonly": false, "cmd": "cc hfu", "description": "sensor length in mm from top to full pos."},
|
||||
{"path": "hcd", "type": "enum", "enum": {"stop": 0, "fill": 1, "off": 2, "auto": 3, "manual": 7}, "readonly": false, "cmd": "cc hcd"},
|
||||
{"path": "hv", "type": "enum", "enum": {"fill_valve_off": 0, "filling": 1, "no_fill_valve": 2, "timeout": 3, "timeout1": 4}},
|
||||
{"path": "hsf", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "ha", "type": "bool", "readonly": false, "cmd": "cc ha"},
|
||||
{"path": "hm", "type": "bool"},
|
||||
{"path": "hf", "type": "enum", "enum": {"slow": 0, "fast": 1}, "readonly": false, "cmd": "cc hf"},
|
||||
{"path": "hbe", "type": "bool", "readonly": false, "cmd": "cc hbe"},
|
||||
{"path": "hmf", "type": "float"},
|
||||
{"path": "hms", "type": "float"},
|
||||
{"path": "hit", "type": "float", "readonly": false, "cmd": "cc hit"},
|
||||
{"path": "hft", "type": "int", "readonly": false, "cmd": "cc hft"},
|
||||
{"path": "hea", "type": "enum", "enum": {"0": 0, "1": 1, "6": 2}, "readonly": false, "cmd": "cc hea"},
|
||||
{"path": "hch", "type": "int", "readonly": false, "cmd": "cc hch"},
|
||||
{"path": "hwr0", "type": "float", "readonly": false, "cmd": "cc hwr0"},
|
||||
{"path": "hem0", "type": "float", "readonly": false, "cmd": "cc hem0", "description": "sensor length in mm from top to empty pos."},
|
||||
{"path": "hfu0", "type": "float", "readonly": false, "cmd": "cc hfu0", "description": "sensor length in mm from top to full pos."},
|
||||
{"path": "hd0", "type": "float", "readonly": false, "cmd": "cc hd0", "description": "external sensor drive current (mA)"},
|
||||
{"path": "h0", "type": "float"},
|
||||
{"path": "hs0", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "h1", "type": "float"},
|
||||
{"path": "hs1", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "h2", "type": "float"},
|
||||
{"path": "hs2", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "h3", "type": "float"},
|
||||
{"path": "hs3", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "h4", "type": "float"},
|
||||
{"path": "hs4", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "h5", "type": "float"},
|
||||
{"path": "hs5", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "hfb", "type": "float"},
|
||||
{"path": "nav", "type": "bool", "readonly": false, "cmd": "cc nav"},
|
||||
{"path": "nu", "type": "float"},
|
||||
{"path": "nl", "type": "float"},
|
||||
{"path": "nth", "type": "float", "readonly": false, "cmd": "cc nth"},
|
||||
{"path": "ntc", "type": "float", "readonly": false, "cmd": "cc ntc"},
|
||||
{"path": "ntm", "type": "float", "readonly": false, "cmd": "cc ntm"},
|
||||
{"path": "ns", "type": "enum", "enum": {"sens_ok": 0, "no_sens": 1, "short_circuit": 2, "upside_down": 3, "sens_warm": 4, "empty": 5}},
|
||||
{"path": "na", "type": "bool", "readonly": false, "cmd": "cc na"},
|
||||
{"path": "nv", "type": "enum", "enum": {"fill_valve_off": 0, "filling": 1, "no_fill_valve": 2, "timeout": 3, "timeout1": 4, "boost": 5}},
|
||||
{"path": "nc", "type": "enum", "enum": {"stop": 0, "fill": 1, "off": 2, "auto": 3}, "readonly": false, "cmd": "cc nc"},
|
||||
{"path": "nfb", "type": "float"},
|
||||
{"path": "cda", "type": "float"},
|
||||
{"path": "cdb", "type": "float"},
|
||||
{"path": "cba", "type": "float"},
|
||||
{"path": "cbb", "type": "float"},
|
||||
{"path": "cvs", "type": "int"},
|
||||
{"path": "csp", "type": "int"},
|
||||
{"path": "cdv", "type": "text", "readonly": false, "cmd": "cc cdv"},
|
||||
{"path": "cic", "type": "text", "readonly": false, "cmd": "cc cic"},
|
||||
{"path": "cin", "type": "text"},
|
||||
{"path": "cds", "type": "enum", "enum": {"local": 0, "remote": 1, "loading": 2, "by_code": 3, "by_touch": 4}, "readonly": false, "cmd": "cc cds"},
|
||||
{"path": "timing", "type": "bool", "readonly": false, "cmd": "cc timing"},
|
||||
{"path": "tc", "type": "float"},
|
||||
{"path": "tn", "type": "float"},
|
||||
{"path": "th", "type": "float"},
|
||||
{"path": "tf", "type": "float"},
|
||||
{"path": "tm", "type": "float"},
|
||||
{"path": "tv", "type": "float"},
|
||||
{"path": "tq", "type": "float"},
|
||||
{"path": "bdl", "type": "float", "readonly": false, "cmd": "cc bdl"}]}, "table": {"base": "/table", "params": [{"path": "", "type": "none", "kids": 8},
|
||||
{"path": "send", "type": "text", "readonly": false, "cmd": "table send", "visibility": 3},
|
||||
{"path": "status", "type": "text", "visibility": 3},
|
||||
{"path": "fix_tt_set_prop", "type": "bool", "readonly": false, "cmd": "table fix_tt_set_prop"},
|
||||
{"path": "val_tt_set_prop", "type": "float"},
|
||||
{"path": "tbl_tt_set_prop", "type": "text", "readonly": false, "cmd": "table tbl_tt_set_prop", "description": "enter value pair separated with colon T1:par1 T2:par2 ..."},
|
||||
{"path": "fix_tt_set_integ", "type": "bool", "readonly": false, "cmd": "table fix_tt_set_integ"},
|
||||
{"path": "val_tt_set_integ", "type": "float"},
|
||||
{"path": "tbl_tt_set_integ", "type": "text", "readonly": false, "cmd": "table tbl_tt_set_integ", "description": "enter value pair separated with colon T1:par1 T2:par2 ..."}]}}
|
||||
160
cfg/sea/ccr3.config.json
Normal file
160
cfg/sea/ccr3.config.json
Normal file
@@ -0,0 +1,160 @@
|
||||
{"tt": {"base": "/tt", "params": [
|
||||
{"path": "", "type": "float", "readonly": false, "cmd": "run tt", "description": "tt", "kids": 18},
|
||||
{"path": "send", "type": "text", "readonly": false, "cmd": "tt send", "visibility": 3},
|
||||
{"path": "status", "type": "text", "visibility": 3},
|
||||
{"path": "is_running", "type": "int", "readonly": false, "cmd": "tt is_running", "visibility": 3},
|
||||
{"path": "mainloop", "type": "text", "readonly": false, "cmd": "tt mainloop", "visibility": 3},
|
||||
{"path": "target", "type": "float"},
|
||||
{"path": "running", "type": "int"},
|
||||
{"path": "tolerance", "type": "float", "readonly": false, "cmd": "tt tolerance"},
|
||||
{"path": "maxwait", "type": "float", "readonly": false, "cmd": "tt maxwait"},
|
||||
{"path": "settle", "type": "float", "readonly": false, "cmd": "tt settle"},
|
||||
{"path": "log", "type": "text", "readonly": false, "cmd": "tt log", "visibility": 3, "kids": 4},
|
||||
{"path": "log/mean", "type": "float", "visibility": 3},
|
||||
{"path": "log/m2", "type": "float", "visibility": 3},
|
||||
{"path": "log/stddev", "type": "float", "visibility": 3},
|
||||
{"path": "log/n", "type": "float", "visibility": 3},
|
||||
{"path": "dblctrl", "type": "bool", "readonly": false, "cmd": "tt dblctrl", "visibility": 3, "kids": 9},
|
||||
{"path": "dblctrl/tshift", "type": "float", "readonly": false, "cmd": "tt dblctrl/tshift", "visibility": 3},
|
||||
{"path": "dblctrl/mode", "type": "enum", "enum": {"disabled": -1, "inactive": 0, "stable": 1, "up": 2, "down": 3}, "readonly": false, "cmd": "tt dblctrl/mode", "visibility": 3},
|
||||
{"path": "dblctrl/shift_up", "type": "float", "visibility": 3},
|
||||
{"path": "dblctrl/shift_lo", "type": "float", "visibility": 3},
|
||||
{"path": "dblctrl/t_min", "type": "float", "visibility": 3},
|
||||
{"path": "dblctrl/t_max", "type": "float", "visibility": 3},
|
||||
{"path": "dblctrl/int2", "type": "float", "readonly": false, "cmd": "tt dblctrl/int2", "visibility": 3},
|
||||
{"path": "dblctrl/prop_up", "type": "float", "readonly": false, "cmd": "tt dblctrl/prop_up", "visibility": 3},
|
||||
{"path": "dblctrl/prop_lo", "type": "float", "readonly": false, "cmd": "tt dblctrl/prop_lo", "visibility": 3},
|
||||
{"path": "tm", "type": "float", "kids": 4},
|
||||
{"path": "tm/curve", "type": "text", "readonly": false, "cmd": "tt tm/curve", "kids": 1},
|
||||
{"path": "tm/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt tm/curve/points", "visibility": 3},
|
||||
{"path": "tm/alarm", "type": "float", "readonly": false, "cmd": "tt tm/alarm"},
|
||||
{"path": "tm/stddev", "type": "float"},
|
||||
{"path": "tm/raw", "type": "float"},
|
||||
{"path": "te", "type": "float", "kids": 4},
|
||||
{"path": "te/curve", "type": "text", "readonly": false, "cmd": "tt te/curve", "kids": 1},
|
||||
{"path": "te/curve/points", "type": "floatvarar", "readonly": false, "cmd": "tt te/curve/points", "visibility": 3},
|
||||
{"path": "te/alarm", "type": "float", "readonly": false, "cmd": "tt te/alarm"},
|
||||
{"path": "te/stddev", "type": "float"},
|
||||
{"path": "te/raw", "type": "float"},
|
||||
{"path": "set", "type": "float", "readonly": false, "cmd": "tt set", "kids": 18},
|
||||
{"path": "set/mode", "type": "enum", "enum": {"disabled": -1, "off": 0, "controlling": 1, "manual": 2}, "readonly": false, "cmd": "tt set/mode"},
|
||||
{"path": "set/reg", "type": "float"},
|
||||
{"path": "set/ramp", "type": "float", "readonly": false, "cmd": "tt set/ramp", "description": "maximum ramp in K/min (0: ramp off)"},
|
||||
{"path": "set/wramp", "type": "float", "readonly": false, "cmd": "tt set/wramp"},
|
||||
{"path": "set/smooth", "type": "float", "readonly": false, "cmd": "tt set/smooth", "description": "smooth time (minutes)"},
|
||||
{"path": "set/channel", "type": "text", "readonly": false, "cmd": "tt set/channel"},
|
||||
{"path": "set/limit", "type": "float", "readonly": false, "cmd": "tt set/limit"},
|
||||
{"path": "set/resist", "type": "float", "readonly": false, "cmd": "tt set/resist"},
|
||||
{"path": "set/maxheater", "type": "text", "readonly": false, "cmd": "tt set/maxheater", "description": "maximum heater limit, units should be given without space: W, mW, A, mA"},
|
||||
{"path": "set/linearpower", "type": "float", "readonly": false, "cmd": "tt set/linearpower", "description": "when not 0, it is the maximum effective power, and the power is linear to the heater output"},
|
||||
{"path": "set/maxpowerlim", "type": "float", "description": "the maximum power limit (before any booster or converter)"},
|
||||
{"path": "set/maxpower", "type": "float", "readonly": false, "cmd": "tt set/maxpower", "description": "maximum power [W]"},
|
||||
{"path": "set/maxcurrent", "type": "float", "description": "the maximum current before any booster or converter"},
|
||||
{"path": "set/manualpower", "type": "float", "readonly": false, "cmd": "tt set/manualpower"},
|
||||
{"path": "set/power", "type": "float"},
|
||||
{"path": "set/prop", "type": "float", "readonly": false, "cmd": "tt set/prop", "description": "bigger means more gain"},
|
||||
{"path": "set/integ", "type": "float", "readonly": false, "cmd": "tt set/integ", "description": "bigger means faster"},
|
||||
{"path": "set/deriv", "type": "float", "readonly": false, "cmd": "tt set/deriv"},
|
||||
{"path": "display", "type": "text", "readonly": false, "cmd": "tt display"},
|
||||
{"path": "dout", "type": "int", "readonly": false, "cmd": "tt dout"},
|
||||
{"path": "dinp", "type": "int"},
|
||||
{"path": "remote", "type": "bool"}]},
|
||||
|
||||
"cc": {"base": "/cc", "params": [
|
||||
{"path": "", "type": "bool", "kids": 96},
|
||||
{"path": "send", "type": "text", "readonly": false, "cmd": "cc send", "visibility": 3},
|
||||
{"path": "status", "type": "text", "visibility": 3},
|
||||
{"path": "autodevice", "type": "bool", "readonly": false, "cmd": "cc autodevice"},
|
||||
{"path": "fav", "type": "bool", "readonly": false, "cmd": "cc fav"},
|
||||
{"path": "f", "type": "float"},
|
||||
{"path": "fs", "type": "enum", "enum": {"ok": 0, "no_sens": 1}, "readonly": false, "cmd": "cc fs"},
|
||||
{"path": "mav", "type": "bool", "readonly": false, "cmd": "cc mav"},
|
||||
{"path": "fm", "type": "enum", "enum": {"idle": 0, "opening": 1, "closing": 2, "opened": 3, "closed": 4, "no_motor": 5}},
|
||||
{"path": "fa", "type": "enum", "enum": {"fixed": 0, "controlled": 1, "automatic": 2, "offline": 3}, "readonly": false, "cmd": "cc fa"},
|
||||
{"path": "mp", "type": "float", "readonly": false, "cmd": "cc mp"},
|
||||
{"path": "msp", "type": "float"},
|
||||
{"path": "mmp", "type": "float"},
|
||||
{"path": "mc", "type": "float", "readonly": false, "cmd": "cc mc"},
|
||||
{"path": "mfc", "type": "float", "readonly": false, "cmd": "cc mfc"},
|
||||
{"path": "moc", "type": "float", "readonly": false, "cmd": "cc moc"},
|
||||
{"path": "mtc", "type": "float", "readonly": false, "cmd": "cc mtc"},
|
||||
{"path": "mtl", "type": "float"},
|
||||
{"path": "mft", "type": "float", "readonly": false, "cmd": "cc mft"},
|
||||
{"path": "mt", "type": "float"},
|
||||
{"path": "mo", "type": "float"},
|
||||
{"path": "mcr", "type": "float"},
|
||||
{"path": "mot", "type": "float"},
|
||||
{"path": "mw", "type": "float", "readonly": false, "cmd": "cc mw", "description": "correction pulse after automatic open"},
|
||||
{"path": "hav", "type": "bool", "readonly": false, "cmd": "cc hav"},
|
||||
{"path": "h", "type": "float"},
|
||||
{"path": "hr", "type": "float"},
|
||||
{"path": "hc", "type": "float"},
|
||||
{"path": "hu", "type": "float"},
|
||||
{"path": "hh", "type": "float", "readonly": false, "cmd": "cc hh"},
|
||||
{"path": "hl", "type": "float", "readonly": false, "cmd": "cc hl"},
|
||||
{"path": "htf", "type": "float", "readonly": false, "cmd": "cc htf", "description": "meas. period in fast mode"},
|
||||
{"path": "hts", "type": "float", "readonly": false, "cmd": "cc hts", "description": "meas. period in slow mode"},
|
||||
{"path": "hd", "type": "float", "readonly": false, "cmd": "cc hd"},
|
||||
{"path": "hwr", "type": "float", "readonly": false, "cmd": "cc hwr"},
|
||||
{"path": "hem", "type": "float", "readonly": false, "cmd": "cc hem", "description": "sensor length in mm from top to empty pos."},
|
||||
{"path": "hfu", "type": "float", "readonly": false, "cmd": "cc hfu", "description": "sensor length in mm from top to full pos."},
|
||||
{"path": "hcd", "type": "enum", "enum": {"stop": 0, "fill": 1, "off": 2, "auto": 3, "manual": 7}, "readonly": false, "cmd": "cc hcd"},
|
||||
{"path": "hv", "type": "enum", "enum": {"fill_valve_off": 0, "filling": 1, "no_fill_valve": 2, "timeout": 3, "timeout1": 4}},
|
||||
{"path": "hsf", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "ha", "type": "bool", "readonly": false, "cmd": "cc ha"},
|
||||
{"path": "hm", "type": "bool"},
|
||||
{"path": "hf", "type": "enum", "enum": {"slow": 0, "fast": 1}, "readonly": false, "cmd": "cc hf"},
|
||||
{"path": "hbe", "type": "bool", "readonly": false, "cmd": "cc hbe"},
|
||||
{"path": "hmf", "type": "float"},
|
||||
{"path": "hms", "type": "float"},
|
||||
{"path": "hit", "type": "float", "readonly": false, "cmd": "cc hit"},
|
||||
{"path": "hft", "type": "int", "readonly": false, "cmd": "cc hft"},
|
||||
{"path": "hea", "type": "enum", "enum": {"0": 0, "1": 1, "6": 2}, "readonly": false, "cmd": "cc hea"},
|
||||
{"path": "hch", "type": "int", "readonly": false, "cmd": "cc hch"},
|
||||
{"path": "hwr0", "type": "float", "readonly": false, "cmd": "cc hwr0"},
|
||||
{"path": "hem0", "type": "float", "readonly": false, "cmd": "cc hem0", "description": "sensor length in mm from top to empty pos."},
|
||||
{"path": "hfu0", "type": "float", "readonly": false, "cmd": "cc hfu0", "description": "sensor length in mm from top to full pos."},
|
||||
{"path": "hd0", "type": "float", "readonly": false, "cmd": "cc hd0", "description": "external sensor drive current (mA)"},
|
||||
{"path": "h0", "type": "float"},
|
||||
{"path": "hs0", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "h1", "type": "float"},
|
||||
{"path": "hs1", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "h2", "type": "float"},
|
||||
{"path": "hs2", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "h3", "type": "float"},
|
||||
{"path": "hs3", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "h4", "type": "float"},
|
||||
{"path": "hs4", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "h5", "type": "float"},
|
||||
{"path": "hs5", "type": "enum", "enum": {"sens_ok": 0, "sens_warm": 1, "no_sens": 2, "timeout": 3, "not_yet_read": 4, "disabled": 5}},
|
||||
{"path": "hfb", "type": "float"},
|
||||
{"path": "nav", "type": "bool", "readonly": false, "cmd": "cc nav"},
|
||||
{"path": "nu", "type": "float"},
|
||||
{"path": "nl", "type": "float"},
|
||||
{"path": "nth", "type": "float", "readonly": false, "cmd": "cc nth"},
|
||||
{"path": "ntc", "type": "float", "readonly": false, "cmd": "cc ntc"},
|
||||
{"path": "ntm", "type": "float", "readonly": false, "cmd": "cc ntm"},
|
||||
{"path": "ns", "type": "enum", "enum": {"sens_ok": 0, "no_sens": 1, "short_circuit": 2, "upside_down": 3, "sens_warm": 4, "empty": 5}},
|
||||
{"path": "na", "type": "bool", "readonly": false, "cmd": "cc na"},
|
||||
{"path": "nv", "type": "enum", "enum": {"fill_valve_off": 0, "filling": 1, "no_fill_valve": 2, "timeout": 3, "timeout1": 4, "boost": 5}},
|
||||
{"path": "nc", "type": "enum", "enum": {"stop": 0, "fill": 1, "off": 2, "auto": 3}, "readonly": false, "cmd": "cc nc"},
|
||||
{"path": "nfb", "type": "float"},
|
||||
{"path": "cda", "type": "float"},
|
||||
{"path": "cdb", "type": "float"},
|
||||
{"path": "cba", "type": "float"},
|
||||
{"path": "cbb", "type": "float"},
|
||||
{"path": "cvs", "type": "int"},
|
||||
{"path": "csp", "type": "int"},
|
||||
{"path": "cdv", "type": "text", "readonly": false, "cmd": "cc cdv"},
|
||||
{"path": "cic", "type": "text", "readonly": false, "cmd": "cc cic"},
|
||||
{"path": "cin", "type": "text"},
|
||||
{"path": "cds", "type": "enum", "enum": {"local": 0, "remote": 1, "loading": 2, "by_code": 3, "by_touch": 4}, "readonly": false, "cmd": "cc cds"},
|
||||
{"path": "timing", "type": "bool", "readonly": false, "cmd": "cc timing"},
|
||||
{"path": "tc", "type": "float"},
|
||||
{"path": "tn", "type": "float"},
|
||||
{"path": "th", "type": "float"},
|
||||
{"path": "tf", "type": "float"},
|
||||
{"path": "tm", "type": "float"},
|
||||
{"path": "tv", "type": "float"},
|
||||
{"path": "tq", "type": "float"},
|
||||
{"path": "bdl", "type": "float", "readonly": false, "cmd": "cc bdl"}]}}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user