Compare commits
796 Commits
Author | SHA1 | Date | |
---|---|---|---|
421eb67b93 | |||
3048b8cb7d | |||
0ef484e082 | |||
8560384529 | |||
![]() |
16d419c0f3 | ||
![]() |
8c548da2e0 | ||
![]() |
d9f340dce6 | ||
![]() |
1325c8924d | ||
![]() |
f8e3bd9ad2 | ||
6f547f0781 | |||
![]() |
322cd39e0a | ||
![]() |
41b51b35fd | ||
19571ab83d | |||
b35c97f311 | |||
5d175b89ca | |||
f8c52af3ac | |||
bf9c946b1d | |||
09e596f847 | |||
![]() |
7e2ccd214e | ||
907a52ccdb | |||
51dba895a5 | |||
![]() |
d86718b81e | ||
![]() |
42a6bfb5d2 | ||
895f66f713 | |||
3663c62b46 | |||
![]() |
8c2588a5ed | ||
![]() |
95dc8b186e | ||
![]() |
265dbb1a57 | ||
73e9c8915b | |||
2e99e45aea | |||
b7bc81710d | |||
eee63ee3df | |||
fd43687465 | |||
a25a368491 | |||
4397d8db1a | |||
e60ac5e655 | |||
0b5b40cfba | |||
2a617fbaf0 | |||
72d09ea73a | |||
1ae19d03b3 | |||
41cb107f50 | |||
8b0c4c78a9 | |||
7ac10d2260 | |||
6cbb3a094b | |||
![]() |
405d316568 | ||
![]() |
ac92a6ca3d | ||
![]() |
a9e3489325 | ||
654a472a7e | |||
![]() |
ddc72d0ea7 | ||
ede07e266c | |||
4b543d02a0 | |||
a4d5d8d3b7 | |||
b37e625df3 | |||
1dbd7c145a | |||
2aa27f1ea5 | |||
b28cdefe8a | |||
e0e442814f | |||
66895f4f82 | |||
49bf0d21a9 | |||
e8cd193d0d | |||
142add9109 | |||
![]() |
c2673952f4 | ||
![]() |
9fc2aa65d5 | ||
09fbaedb16 | |||
![]() |
5deaf4cfd9 | ||
81f7426739 | |||
![]() |
c69e516873 | ||
![]() |
64732eb0c8 | ||
![]() |
1535448090 | ||
![]() |
554996ffd3 | ||
![]() |
2d824978a9 | ||
![]() |
35dd166fee | ||
![]() |
aee99df2d0 | ||
8e05090795 | |||
![]() |
eac58982d9 | ||
![]() |
0f34418435 | ||
![]() |
1423800ff4 | ||
![]() |
e333763105 | ||
![]() |
c09e02a01e | ||
![]() |
337be1b2bc | ||
![]() |
752942483f | ||
0204bdfe2f | |||
facaca94eb | |||
0f0a177254 | |||
![]() |
ada696e72b | ||
![]() |
1d70a90270 | ||
![]() |
20da7592da | ||
![]() |
e750e69045 | ||
![]() |
11a65b485b | ||
edf5a5568b | |||
f382a01d86 | |||
![]() |
3c69dcb170 | ||
![]() |
b889a86461 | ||
![]() |
c7143a6dc7 | ||
![]() |
c2a3821000 | ||
![]() |
1cebf3998f | ||
![]() |
bea994aaa2 | ||
![]() |
bc0925fca7 | ||
![]() |
09235cb145 | ||
![]() |
824d3e7b7a | ||
![]() |
dab963f1bb | ||
![]() |
b93254b553 | ||
![]() |
ec667c8151 | ||
![]() |
56c7bbc831 | ||
![]() |
c3a87e43be | ||
![]() |
1fcd8d13fc | ||
![]() |
f697b9ad57 | ||
![]() |
e4a14bc27f | ||
03867c1f43 | |||
16abfdc65e | |||
601ad9d301 | |||
4892c2fd8f | |||
25986d67aa | |||
f8d8cbd76d | |||
f9f713811e | |||
![]() |
72eb00fb27 | ||
![]() |
7111d73226 | ||
![]() |
19d5756eb0 | ||
![]() |
d6b31222b6 | ||
![]() |
b3a2f33151 | ||
![]() |
380c8108eb | ||
![]() |
cde09694a5 | ||
73a54dfc44 | |||
![]() |
025eb5fff5 | ||
![]() |
f36af47b98 | ||
![]() |
13db0d6bc6 | ||
![]() |
fe0aa3d7d5 | ||
6c2b1ea355 | |||
7ee219ce7a | |||
ba2b5ac786 | |||
abfb8afdc5 | |||
7fdb2e7e2f | |||
dd0cb2e1dc | |||
227f67a4c7 | |||
![]() |
c92d6471eb | ||
![]() |
991f4781c4 | ||
![]() |
5083db8d92 | ||
![]() |
7c54ac735d | ||
![]() |
d6b28075d5 | ||
![]() |
d555a58781 | ||
![]() |
e6639fbc08 | ||
![]() |
d9f2fb291a | ||
![]() |
27be8c11fd | ||
![]() |
bd84a69537 | ||
![]() |
a1dd8e2168 | ||
![]() |
f0f12d6d96 | ||
![]() |
96a388eae9 | ||
![]() |
c272a8d619 | ||
![]() |
f2940d3f23 | ||
![]() |
925df6f4fa | ||
![]() |
ff772e578e | ||
![]() |
6f465be567 | ||
![]() |
1f5bba5575 | ||
![]() |
a7fc1e4342 | ||
![]() |
6e1cd30678 | ||
![]() |
acf9a03aa4 | ||
![]() |
79827baf2a | ||
![]() |
12d7b5dae9 | ||
![]() |
318b3ad412 | ||
![]() |
4305d84ef8 | ||
![]() |
177f49ca3f | ||
fb5e468048 | |||
![]() |
6c01a1e48a | ||
![]() |
96412cb480 | ||
![]() |
807afba53b | ||
![]() |
97032193bf | ||
![]() |
a3c1399854 | ||
![]() |
f0eb7d95f1 | ||
![]() |
c1403763f4 | ||
![]() |
d38b672a9a | ||
![]() |
7c96b83aff | ||
![]() |
3ee6e32a46 | ||
![]() |
c20801c8fe | ||
![]() |
a5e698163b | ||
![]() |
5376490a7e | ||
![]() |
9d50412a38 | ||
![]() |
39dbe1149c | ||
a281583cd2 | |||
ad15ef3cdb | |||
7536454e96 | |||
bfbb8172e0 | |||
![]() |
258ec60b4c | ||
![]() |
2f396e5897 | ||
2c102ad38b | |||
b3519c7317 | |||
9caa3f3e08 | |||
bb11f7cc20 | |||
ffe6f3cce0 | |||
91a91d6483 | |||
7131536770 | |||
82c1081b69 | |||
![]() |
ff2fcf7651 | ||
21dae2d9ce | |||
![]() |
476d2087f6 | ||
![]() |
bb6cf9caa1 | ||
![]() |
c3b1ce4b8c | ||
![]() |
e4eb5989c3 | ||
![]() |
48393b2332 | ||
![]() |
9eb8f2efc8 | ||
46f815af38 | |||
09f4f1d192 | |||
15fc9ca16c | |||
c6056ad1de | |||
4da6aa95d7 | |||
fa37b43be2 | |||
986065e1f6 | |||
![]() |
455f15d975 | ||
![]() |
cefd0fe8b5 | ||
9cd38375c0 | |||
86b888b43a | |||
9eb83df7de | |||
20596744f9 | |||
0a98776e27 | |||
f5667a9267 | |||
8b27e4012c | |||
![]() |
6837b82791 | ||
e093bdae96 | |||
a4ee261744 | |||
e09ed9ebe3 | |||
8bc0671f73 | |||
26f9c177f7 | |||
4c6bc2ba68 | |||
![]() |
ce7de98dc7 | ||
![]() |
1c229c33bd | ||
![]() |
2d08f25993 | ||
![]() |
89df37462c | ||
69938f7ce8 | |||
913b40ac92 | |||
070e78f626 | |||
![]() |
a44f3fae50 | ||
5a54503fe7 | |||
![]() |
f702854066 | ||
![]() |
67fa50a9e0 | ||
5e5f262472 | |||
9995ac8165 | |||
b1f9c74269 | |||
63210c9924 | |||
![]() |
47c5e297d4 | ||
![]() |
6cd83eabcc | ||
![]() |
caaefec6db | ||
![]() |
6dfb3bcee8 | ||
![]() |
d492f7326f | ||
![]() |
7929c37027 | ||
76349e38f9 | |||
647d87f70f | |||
798c268eb4 | |||
9467f5233c | |||
a7ff73a34d | |||
bf018e74ba | |||
801f80af7f | |||
26fa5371e9 | |||
2bad1ffee5 | |||
b2b77c70ea | |||
192cde605e | |||
c7d23e40e9 | |||
2561e82086 | |||
55c96ffe4f | |||
17a44ef42a | |||
![]() |
fcdee8e3ec | ||
dddf74df9e | |||
![]() |
ac251ea515 | ||
![]() |
9e4f9b7b95 | ||
4f65ae7e46 | |||
![]() |
a73b7e7d88 | ||
![]() |
76a78871b4 | ||
![]() |
118e22ee44 | ||
![]() |
c63f98f3cb | ||
![]() |
6514a1b2ee | ||
aeec940659 | |||
4571af8534 | |||
![]() |
adfb561308 | ||
70a31b5cae | |||
![]() |
8ee97ade63 | ||
1715f95dd4 | |||
db29776dd5 | |||
a2905d9fbc | |||
16b826394f | |||
![]() |
ea8570d422 | ||
1169e0cd09 | |||
7d02498b3d | |||
694b121c01 | |||
0f50de9a7f | |||
b454f47a12 | |||
6e7be6b4c7 | |||
af28511403 | |||
9d9d31693b | |||
3a7fff713d | |||
2acab33faa | |||
8c589cc138 | |||
![]() |
2b42e3fa0a | ||
![]() |
5b0da3ba98 | ||
![]() |
c80b4ac5fb | ||
![]() |
8cb9154bb5 | ||
![]() |
813d1b76ef | ||
![]() |
183709b7ce | ||
2cdf1fc58e | |||
ffaa9c83bd | |||
f9a0fdf7e4 | |||
7dfb2ff4e3 | |||
84c0017c03 | |||
2126956160 | |||
4cdd3b0709 | |||
![]() |
15d38d7cc1 | ||
![]() |
9904d31f0b | ||
![]() |
b07d2ae8a3 | ||
![]() |
7d7cb02f17 | ||
![]() |
1017925ca0 | ||
bb14d02884 | |||
4c499cf048 | |||
e403396941 | |||
5b42df4a5e | |||
841ef224f6 | |||
8142ba746d | |||
![]() |
5358412b7a | ||
010f0747e1 | |||
![]() |
047c52b5a5 | ||
![]() |
f846c5cb31 | ||
![]() |
0e4a427bc3 | ||
![]() |
2d8b609a3c | ||
![]() |
6e3865b345 | ||
0004dc7620 | |||
158477792f | |||
fd0e762d18 | |||
![]() |
a16ec6cc91 | ||
![]() |
777a2cb6a9 | ||
cb3e98f86d | |||
a8bafde64e | |||
36c512d50b | |||
![]() |
17b7a01ce1 | ||
be66faa591 | |||
e27b4f72b5 | |||
![]() |
bc7922f5c8 | ||
![]() |
99a58933ec | ||
9e000528d2 | |||
4a2ce62dd8 | |||
9e6699dd1e | |||
![]() |
416cdd5a88 | ||
![]() |
1bd188e326 | ||
![]() |
f7b29ee959 | ||
![]() |
f6a0ccb38b | ||
![]() |
b93a0cd87b | ||
be6ba73c89 | |||
c075738584 | |||
0fa2e8332d | |||
afb49199a1 | |||
416fe6ddc0 | |||
e3cb5d2e60 | |||
![]() |
998367a727 | ||
![]() |
ab918a33ae | ||
![]() |
397ec2efbd | ||
67032ff59b | |||
03c356590b | |||
06bec41ed3 | |||
4cd6929d4b | |||
a89f7a3c44 | |||
a4330081b7 | |||
3b997d7d86 | |||
612295d360 | |||
9e39a43193 | |||
6adfafaa27 | |||
f6c4090b96 | |||
ecef2b8974 | |||
![]() |
96a7e2109b | ||
![]() |
2f3c68a5c5 | ||
![]() |
e9a195d61e | ||
![]() |
6ac3938b78 | ||
![]() |
b4cfdcfc1a | ||
![]() |
d32fb647a6 | ||
![]() |
abf7859fd6 | ||
![]() |
55ea2b8cc4 | ||
27600e3ddf | |||
![]() |
6b4244f071 | ||
1d81fc6fcd | |||
dfce0bdfbc | |||
c39aef10aa | |||
45dd87060b | |||
8019b359c4 | |||
4c5109e5a3 | |||
bf4b3e5683 | |||
af34fef1e1 | |||
5e1c22ba28 | |||
0bc4a63aa7 | |||
cb2c10655c | |||
6c49abea74 | |||
dee8f8929e | |||
2e143963df | |||
4bc82c2896 | |||
833a68db51 | |||
b9f046a665 | |||
9d9b5b2694 | |||
255adbf8d9 | |||
![]() |
bc0133f55a | ||
![]() |
09e59b93d8 | ||
2474dc5e72 | |||
![]() |
9dab41441f | ||
![]() |
4af46a0ea2 | ||
![]() |
b844b83352 | ||
![]() |
3b63e32395 | ||
![]() |
5168e0133d | ||
![]() |
9ea6082ed8 | ||
![]() |
f205cf76aa | ||
db9ce02028 | |||
c4a39306e4 | |||
024de0bd32 | |||
d2d63c47e1 | |||
565e8e6fd3 | |||
89bc7f6dfe | |||
c69fe1571a | |||
c40033a816 | |||
da37175cbb | |||
2020928289 | |||
9df6794678 | |||
41f3b7526e | |||
![]() |
f80624b48d | ||
![]() |
9e2e6074c8 | ||
5a13888498 | |||
5a8a6b88ff | |||
b84b7964e3 | |||
![]() |
6c5dddc449 | ||
78fa49ef74 | |||
d92b154292 | |||
073fe1a08b | |||
f80c793cd9 | |||
519e9e2ed7 | |||
14036160f7 | |||
131dc60807 | |||
49722a858f | |||
c61b674382 | |||
091543be56 | |||
d2885bdd72 | |||
975593dd6b | |||
![]() |
4fe28363d3 | ||
28b19dbf57 | |||
05189d094a | |||
47da14eef9 | |||
![]() |
7904f243cb | ||
a2fed8df03 | |||
19f965bced | |||
3e4ea2515e | |||
714c820115 | |||
a8e1d0e1e8 | |||
![]() |
d7a1604bd5 | ||
b92095974b | |||
![]() |
8dc9c57e9d | ||
![]() |
7c95f1f8ee | ||
3786d2f209 | |||
138b84e84c | |||
997e8e26e9 | |||
644d005dad | |||
36dfe968e8 | |||
0932228596 | |||
![]() |
dff0c819de | ||
![]() |
fd917724d8 | ||
bf43858031 | |||
f354b19cf0 | |||
f304ac019e | |||
9a9a22588f | |||
3e26dd49d0 | |||
5a456a82b0 | |||
f6868da3b9 | |||
ee31f8fb45 | |||
a6a3f80e30 | |||
ad36ab1067 | |||
f2d795cfba | |||
c04337c3a4 | |||
57d5298c92 | |||
9a6421a54f | |||
c5d429346d | |||
726665ebd8 | |||
004533655f | |||
c4d5d2e284 | |||
75f156beef | |||
459a80b4d2 | |||
bef190b77d | |||
e4dbb90065 | |||
0cbaffd4b6 | |||
![]() |
1de5455ef6 | ||
![]() |
db94def694 | ||
1407514458 | |||
050a2dc8dc | |||
df4a37085a | |||
6697462f15 | |||
84d0d44f38 | |||
![]() |
fa9525fd4c | ||
![]() |
087036922a | ||
![]() |
1ce43a567b | ||
c46947afd4 | |||
3099c813d1 | |||
8039351395 | |||
750b5a7794 | |||
a9fe8577c3 | |||
![]() |
74729872a8 | ||
6b78e69dbe | |||
3b95013b69 | |||
85166344d2 | |||
ca6b7a65c0 | |||
f528cc4808 | |||
3314241631 | |||
3fcd72b189 | |||
![]() |
5bc0b94c6d | ||
bbe70fb3cb | |||
31be98c62e | |||
94070121c7 | |||
1961f91567 | |||
e38139089f | |||
e2c51b3dd1 | |||
b77c222b72 | |||
b55af7b20b | |||
72add69b65 | |||
1a44c2d513 | |||
0fb10a0a10 | |||
748ea1400a | |||
5784aa0f5d | |||
6c02f37bbb | |||
d6d564f4aa | |||
da15df076a | |||
9fc6b6c0fd | |||
b19a8c2e5c | |||
68b45978a7 | |||
7d4dfdebbd | |||
6c325460f7 | |||
c70b61e4e5 | |||
![]() |
589b857039 | ||
![]() |
ad4a6d2e09 | ||
![]() |
766f15beee | ||
![]() |
79b8cd7b2d | ||
![]() |
bd0f3a0b07 | ||
![]() |
c4f9f2ef4b | ||
![]() |
0820d537c3 | ||
1a6aa893e4 | |||
b10c722ff6 | |||
b7a1f17e5e | |||
![]() |
a0d14c30be | ||
![]() |
e668b6a439 | ||
![]() |
3483c3374d | ||
![]() |
d71a512454 | ||
![]() |
b1608c4d7f | ||
![]() |
e4c1f35e4a | ||
![]() |
3ab7eb99ab | ||
![]() |
ef9d89993c | ||
![]() |
9887ba0721 | ||
397ca350f8 | |||
99220400f1 | |||
4e8636a620 | |||
f14bd553a8 | |||
2845a82236 | |||
4f5cc3059e | |||
![]() |
d845fedc03 | ||
![]() |
1b2e364f70 | ||
![]() |
4405b2b02c | ||
![]() |
49b9bfa11d | ||
![]() |
df428f4c0c | ||
0c93ca8c75 | |||
971c1dcfee | |||
498dbd4179 | |||
![]() |
00b0a54f12 | ||
![]() |
48076edd99 | ||
![]() |
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 |
.description.gitignore.isort.cfg.pylintrcMakefileREADME.md
bin
frappy-cfg-editorfrappy-clifrappy-guifrappy-playfrappy-scanfrappy-servermake_doc.pypeus-plotsecop-convertsecop-guisim-serverstringio-serverus-plot
calibtest.pycfg
PEUS_cfg.pyQnwTC1_cfg.pyRUS_cfg.pyTFA10_cfg.pyaddons.ini
addons
ah2550sea_cfg.pyah2700_cfg.pyah2700sea_cfg.pybe-filter-boa_cfg.pycamea-be-filter_cfg.pyflamesample_cfg.pyfocus-be-filter_cfg.pyls372_cfg.pyrazorbill_cfg.pystickmotor_cfg.pyvsource_cfg.py
ah2700test.cfgah2700test_cfg.pyamagnet.cfgamagnet_cfg.pyattocube_cfg.pyccr.cfgccr_cfg.pycryo.cfgcryo_cfg.pydemo.cfgdemo_cfg.pydevelop
dilsc_cfg.pydpm_cfg.pydrums_cfg.pyepics.cfgepics_cfg.pyflowsas_cfg.pygeneralConfig.cfglockin70_cfg.pylockin830_cfg.pylockin_cfg.pyls240_cfg.pyls336_cfg.pyls340_cfg.pyls370res.cfgls370res_cfg.pyls370sim.cfgls370sim_cfg.pyls370test.cfgls370test_cfg.pymain.inimain
ccr2_cfg.pyccr2ht_cfg.pyccr3_cfg.pyccrpe_cfg.pyccrpe_lowT_cfg.pycryosim_cfg.pycti5_cfg.pycti7_cfg.pycti7ht_cfg.pyeurotherm_cfg.pyfftf_cfg.pyflamemag_cfg.pyflamp_cfg.pyfs_cfg.pyft_cfg.pyfw_cfg.pyhaake_cfg.pyhaakeuro_cfg.pyill1_cfg.pyill2_cfg.pyill3_cfg.pyill4_cfg.pyill5_cfg.pyill5pgas5_cfg.pyjtccr_cfg.pyma02_cfg.pyma10_cfg.pyma10heat_cfg.pyma10high_t_cfg.pyma11_cfg.pyma15_cfg.py
@ -1,2 +1,2 @@
|
|||||||
SECoP playground for creating specification and testing one implementation.
|
Frappy framework for implementing SEC-nodes (see SECoP protocol on github).
|
||||||
|
|
||||||
|
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,3 +1,4 @@
|
|||||||
|
frappydemo.PID
|
||||||
log/*
|
log/*
|
||||||
html/*
|
html/*
|
||||||
*.pyc
|
*.pyc
|
||||||
@ -20,5 +21,9 @@ doc/_build
|
|||||||
.coverage
|
.coverage
|
||||||
._*
|
._*
|
||||||
|
|
||||||
|
# jupyter
|
||||||
|
.ipynb_checkpoints/
|
||||||
|
*.ipynb
|
||||||
|
|
||||||
# pyinstaller
|
# pyinstaller
|
||||||
dist/
|
dist/
|
8
.isort.cfg
Normal file
8
.isort.cfg
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
[settings]
|
||||||
|
multi_line_output=2
|
||||||
|
combine_as_imports=True
|
||||||
|
|
||||||
|
known_qt=frappy.gui.qt
|
||||||
|
known_core=frappy
|
||||||
|
|
||||||
|
sections=FUTURE,STDLIB,QT,THIRDPARTY,CORE,FIRSTPARTY,LOCALFOLDER
|
33
.pylintrc
33
.pylintrc
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
# Add <file or directory> to the black list. It should be a base name, not a
|
# Add <file or directory> to the black list. It should be a base name, not a
|
||||||
# path. You may set this option multiple times.
|
# path. You may set this option multiple times.
|
||||||
ignore = .git
|
ignore = .git,resources_qt5.py,resources_qt6.py
|
||||||
|
|
||||||
# Pickle collected data for later comparisons.
|
# Pickle collected data for later comparisons.
|
||||||
persistent=yes
|
persistent=yes
|
||||||
@ -38,26 +38,23 @@ confidence=
|
|||||||
# multiple time.
|
# multiple time.
|
||||||
disable=missing-docstring
|
disable=missing-docstring
|
||||||
,locally-disabled
|
,locally-disabled
|
||||||
,locally-enabled
|
|
||||||
,fixme
|
,fixme
|
||||||
,no-member
|
,no-member
|
||||||
,bad-whitespace
|
,not-callable
|
||||||
,wrong-import-position
|
,wrong-import-position
|
||||||
,ungrouped-imports
|
,ungrouped-imports
|
||||||
,import-self
|
,import-self
|
||||||
,bad-continuation
|
|
||||||
,protected-access
|
,protected-access
|
||||||
,unused-argument
|
,unused-argument
|
||||||
,duplicate-code
|
,duplicate-code
|
||||||
,attribute-defined-outside-init
|
,attribute-defined-outside-init
|
||||||
,access-member-before-definition
|
,access-member-before-definition
|
||||||
,no-self-use
|
|
||||||
,broad-except
|
,broad-except
|
||||||
,unneeded-not
|
,unneeded-not
|
||||||
,unidiomatic-typecheck
|
,unidiomatic-typecheck
|
||||||
,undefined-loop-variable
|
,undefined-loop-variable
|
||||||
,redefined-variable-type
|
,consider-using-f-string
|
||||||
,deprecated-lambda
|
,use-dict-literal
|
||||||
|
|
||||||
[REPORTS]
|
[REPORTS]
|
||||||
|
|
||||||
@ -67,10 +64,6 @@ disable=missing-docstring
|
|||||||
|
|
||||||
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
|
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
|
# Tells whether to display a full report or only the messages
|
||||||
reports=no
|
reports=no
|
||||||
@ -93,14 +86,11 @@ dummy-variables-rgx=_|dummy
|
|||||||
|
|
||||||
# List of additional names supposed to be defined in builtins. Remember that
|
# List of additional names supposed to be defined in builtins. Remember that
|
||||||
# you should avoid to define new builtins when possible.
|
# you should avoid to define new builtins when possible.
|
||||||
additional-builtins=
|
additional-builtins=Node,Mod,Param,Command,Group
|
||||||
|
|
||||||
|
|
||||||
[BASIC]
|
[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
|
# Regular expression which should only match correct module names
|
||||||
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9_]+))$
|
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9_]+))$
|
||||||
@ -155,14 +145,8 @@ notes=FIXME,XXX,TODO
|
|||||||
# Maximum number of characters on a single line.
|
# Maximum number of characters on a single line.
|
||||||
max-line-length=132
|
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
|
# Maximum number of lines in a module
|
||||||
max-module-lines=1200
|
max-module-lines=1000
|
||||||
|
|
||||||
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
|
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
|
||||||
# tab).
|
# tab).
|
||||||
@ -218,7 +202,10 @@ max-branches=50
|
|||||||
max-statements=150
|
max-statements=150
|
||||||
|
|
||||||
# Maximum number of parents for a class (see R0901).
|
# Maximum number of parents for a class (see R0901).
|
||||||
max-parents=15
|
max-parents=20
|
||||||
|
|
||||||
|
# Maximum number of positional arguments
|
||||||
|
max-positional-arguments=10
|
||||||
|
|
||||||
# Maximum number of attributes for a class (see R0902).
|
# Maximum number of attributes for a class (see R0902).
|
||||||
max-attributes=50
|
max-attributes=50
|
||||||
|
28
Makefile
28
Makefile
@ -3,12 +3,18 @@
|
|||||||
|
|
||||||
all: clean doc
|
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:
|
demo:
|
||||||
@bin/secop-server -q demo &
|
@rm -f frappydemo.PID || true
|
||||||
@bin/secop-server -q test &
|
@{ bin/frappy-server -q demo & echo $$! >> frappydemo.PID; }
|
||||||
@bin/secop-server -q cryo &
|
@{ bin/frappy-server -q test & echo $$! >> frappydemo.PID; }
|
||||||
@bin/secop-gui localhost:10767 localhost:10768 localhost:10769
|
@{ bin/frappy-server -q cryo & echo $$! >> frappydemo.PID; }
|
||||||
@ps aux|grep [s]ecop-server|awk '{print $$2}'|xargs kill
|
@sleep 0.2
|
||||||
|
@bin/frappy-gui localhost:10767 localhost:10768 localhost:10769
|
||||||
|
@cat frappydemo.PID | xargs kill || true
|
||||||
|
@rm frappydemo.PID
|
||||||
|
|
||||||
build:
|
build:
|
||||||
python3 setup.py build
|
python3 setup.py build
|
||||||
@ -32,18 +38,18 @@ test-verbose:
|
|||||||
python3 $(shell which pytest) -v test -s
|
python3 $(shell which pytest) -v test -s
|
||||||
|
|
||||||
test-coverage:
|
test-coverage:
|
||||||
python3 $(shell which pytest) -v test --cov=secop
|
python3 $(shell which pytest) -v test --cov=frappy
|
||||||
|
|
||||||
doc:
|
doc:
|
||||||
$(MAKE) -C doc html
|
$(MAKE) -C doc html
|
||||||
|
|
||||||
lint:
|
lint:
|
||||||
pylint -j 0 -f colorized -r n --rcfile=.pylintrc secop secop_* test
|
pylint -f colorized -r n --rcfile=.pylintrc frappy frappy_* test
|
||||||
|
|
||||||
isort:
|
isort:
|
||||||
@find test -name '*.py' -print0 | xargs -0 isort -e -m 2 -w 80 -ns __init__.py
|
@find test -name '*.py' -print0 | xargs -0 isort -e -m 2 -w 80 -ns __init__.py
|
||||||
@find secop -name '*.py' -print0 | xargs -0 isort -e -m 2 -w 80 -ns __init__.py
|
@find frappy -name '*.py' -print0 | xargs -0 isort -e -m 2 -w 80 -ns __init__.py
|
||||||
@find . -wholename './secop_*.py' -print0 | xargs -0 isort -e -m 2 -w 80 -ns __init__.py
|
@find . -wholename './frappy_*.py' -print0 | xargs -0 isort -e -m 2 -w 80 -ns __init__.py
|
||||||
|
|
||||||
release-patch:
|
release-patch:
|
||||||
MODE="patch" $(MAKE) release
|
MODE="patch" $(MAKE) release
|
||||||
@ -55,8 +61,8 @@ release-major:
|
|||||||
MODE="major" $(MAKE) release
|
MODE="major" $(MAKE) release
|
||||||
|
|
||||||
release:
|
release:
|
||||||
ssh jenkinsng.admin.frm2 -p 29417 build -v -s -p GERRIT_PROJECT=$(shell git config --get remote.origin.url | rev | cut -d '/' -f -3 | rev) -p ARCH=all -p MODE=$(MODE) ReleasePipeline
|
ssh jenkins.admin.frm2.tum.de -p 29417 build -v -s -p GERRIT_PROJECT=$(shell git config --get remote.origin.url | rev | cut -d '/' -f -2 | rev) -p ARCH=all -p MODE=$(MODE) ReleasePipeline
|
||||||
|
|
||||||
|
|
||||||
build-pkg:
|
build-pkg:
|
||||||
debocker build --image jenkinsng.admin.frm2:5000/mlzbase/buster
|
debocker build --image docker.ictrl.frm2.tum.de:5443/mlzbase/buster
|
||||||
|
12
README.md
12
README.md
@ -42,11 +42,12 @@ changes are done, eventually a sync step should happen:
|
|||||||
- core commits already pushed through gerrit are skipped
|
- core commits already pushed through gerrit are skipped
|
||||||
- all other commits are to be cherry-picked
|
- all other commits are to be cherry-picked
|
||||||
7) when arrived at the point where the new working version should be,
|
7) when arrived at the point where the new working version should be,
|
||||||
copy new_wip branch to work with 'git checkout work;git checkout new_wip .'
|
copy new_wip branch to work with 'git checkout -B work'.
|
||||||
(note the dot!) and then commit this.
|
Not sure if this works, as work is to be pushed to git.psi.ch.
|
||||||
8) continue with (6) if wip and work should differ
|
We might first remove the remote branch with 'git push origin --delete work'.
|
||||||
9) do like (7), but for wip branch
|
And then create again (git push origin work)?
|
||||||
10) delete new_wip branch, push master, wip and work branches
|
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
|
## Procedure to update PPMS
|
||||||
@ -59,4 +60,3 @@ changes are done, eventually a sync step should happen:
|
|||||||
cp -r secop /Volumes/PPMSData/zolliker/frappy/secop
|
cp -r secop /Volumes/PPMSData/zolliker/frappy/secop
|
||||||
|
|
||||||
it may be that additional folder have to copied ...
|
it may be that additional folder have to copied ...
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# pylint: disable=invalid-name
|
# 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
|
# 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
|
# the terms of the GNU General Public License as published by the Free Software
|
||||||
@ -29,8 +29,11 @@ from os import path
|
|||||||
# Add import path for inplace usage
|
# Add import path for inplace usage
|
||||||
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
|
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
|
||||||
|
|
||||||
from secop.gui.qt import QApplication
|
import logging
|
||||||
from secop.gui.cfg_editor.mainwindow import MainWindow
|
from mlzlog import ColoredConsoleHandler
|
||||||
|
|
||||||
|
from frappy.gui.qt import QApplication
|
||||||
|
from frappy.gui.cfg_editor.mainwindow import MainWindow
|
||||||
|
|
||||||
|
|
||||||
def main(argv=None):
|
def main(argv=None):
|
||||||
@ -38,9 +41,13 @@ def main(argv=None):
|
|||||||
parser.add_argument('-f', '--file', help='Configuration file to open.')
|
parser.add_argument('-f', '--file', help='Configuration file to open.')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
app = QApplication(argv)
|
app = QApplication(argv)
|
||||||
window = MainWindow(args.file)
|
logger = logging.getLogger('gui')
|
||||||
|
console = ColoredConsoleHandler()
|
||||||
|
console.setLevel(logging.INFO)
|
||||||
|
logger.addHandler(console)
|
||||||
|
window = MainWindow(args.file, log=logger)
|
||||||
window.show()
|
window.show()
|
||||||
return app.exec_()
|
return app.exec()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
66
bin/frappy-cli
Executable file
66
bin/frappy-cli
Executable file
@ -0,0 +1,66 @@
|
|||||||
|
#!/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)
|
82
bin/frappy-gui
Executable file
82
bin/frappy-gui
Executable file
@ -0,0 +1,82 @@
|
|||||||
|
#!/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, organizationName='frappy', applicationName='frappy_gui')
|
||||||
|
|
||||||
|
win = MainWindow(args, logger)
|
||||||
|
app.aboutToQuit.connect(win._onQuit)
|
||||||
|
win.show()
|
||||||
|
|
||||||
|
return app.exec()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.exit(main(sys.argv))
|
42
bin/frappy-play
Executable file
42
bin/frappy-play
Executable file
@ -0,0 +1,42 @@
|
|||||||
|
#!/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:
|
||||||
|
# Markus Zolliker <markus.zolliker@psi.ch>
|
||||||
|
#
|
||||||
|
# *****************************************************************************
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
from frappy.lib import generalConfig
|
||||||
|
from frappy.logging import logger
|
||||||
|
|
||||||
|
# Add import path for inplace usage
|
||||||
|
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
|
||||||
|
|
||||||
|
from frappy.client.interactive import Console
|
||||||
|
from frappy.playground import play, USAGE
|
||||||
|
|
||||||
|
generalConfig.init()
|
||||||
|
logger.init()
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
play(sys.argv[1])
|
||||||
|
else:
|
||||||
|
print(USAGE)
|
||||||
|
|
||||||
|
Console('play', sys.modules['__main__'].__dict__)
|
139
bin/frappy-scan
Executable file
139
bin/frappy-scan
Executable file
@ -0,0 +1,139 @@
|
|||||||
|
#!/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):
|
||||||
|
try:
|
||||||
|
hostname = socket.gethostbyaddr(answer.address)[0]
|
||||||
|
address = hostname
|
||||||
|
numeric = f' ({answer.address})'
|
||||||
|
except Exception:
|
||||||
|
address = answer.address
|
||||||
|
numeric = ''
|
||||||
|
if short:
|
||||||
|
# NOTE: keep this easily parseable!
|
||||||
|
print(f'{answer.equipment_id} {address}:{answer.port}')
|
||||||
|
return
|
||||||
|
print(f'Found {answer.equipment_id} at {address}{numeric}:')
|
||||||
|
print(f' Port: {answer.port}')
|
||||||
|
print(f' Firmware: {answer.firmware}')
|
||||||
|
desc = answer.description.replace('\n', '\n ')
|
||||||
|
print(f' Node description: {desc}')
|
||||||
|
print('-' * 80)
|
||||||
|
|
||||||
|
|
||||||
|
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='Keep listening after the broadcast.')
|
||||||
|
parser.add_argument('-s', '--short', action='store_true',
|
||||||
|
help='Print short info (always on when listen).')
|
||||||
|
args = parser.parse_args(sys.argv[1:])
|
||||||
|
short = args.listen or args.short
|
||||||
|
if not short:
|
||||||
|
print('-' * 80)
|
||||||
|
for answer in scan():
|
||||||
|
print_answer(answer, short=short)
|
||||||
|
if args.listen:
|
||||||
|
listen(short=short)
|
@ -1,6 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# pylint: disable=invalid-name
|
# pylint: disable=invalid-name
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# *****************************************************************************
|
# *****************************************************************************
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify it under
|
# This program is free software; you can redistribute it and/or modify it under
|
||||||
@ -23,21 +22,28 @@
|
|||||||
#
|
#
|
||||||
# *****************************************************************************
|
# *****************************************************************************
|
||||||
|
|
||||||
import sys
|
|
||||||
import argparse
|
import argparse
|
||||||
from os import path
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
import mlzlog
|
|
||||||
|
|
||||||
# Add import path for inplace usage
|
# Add import path for inplace usage
|
||||||
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
|
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
|
||||||
|
|
||||||
from secop.lib import getGeneralConfig
|
from frappy.lib import generalConfig
|
||||||
from secop.server import Server
|
from frappy.logging import logger
|
||||||
|
from frappy.server import Server
|
||||||
|
|
||||||
|
|
||||||
def parseArgv(argv):
|
def parseArgv(argv):
|
||||||
parser = argparse.ArgumentParser(description="Manage a SECoP server")
|
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.
|
||||||
|
"""
|
||||||
|
)
|
||||||
loggroup = parser.add_mutually_exclusive_group()
|
loggroup = parser.add_mutually_exclusive_group()
|
||||||
loggroup.add_argument("-v", "--verbose",
|
loggroup.add_argument("-v", "--verbose",
|
||||||
help="Output lots of diagnostic information",
|
help="Output lots of diagnostic information",
|
||||||
@ -60,15 +66,27 @@ def parseArgv(argv):
|
|||||||
parser.add_argument('-c',
|
parser.add_argument('-c',
|
||||||
'--cfgfiles',
|
'--cfgfiles',
|
||||||
action='store',
|
action='store',
|
||||||
help="comma separated list of cfg files\n"
|
help="comma separated list of cfg files,\n"
|
||||||
"defaults to <name_of_the_instance>\n"
|
"defaults to <name_of_the_instance>.\n"
|
||||||
"cfgfiles given without '.cfg' extension are searched in the configuration directory,"
|
"If a config file contains a slash, it is treated as a"
|
||||||
"else they are treated as path names",
|
"path, otherwise the file is searched for in the "
|
||||||
|
"configuration directory.",
|
||||||
|
default=None)
|
||||||
|
parser.add_argument('-g',
|
||||||
|
'--gencfg',
|
||||||
|
action='store',
|
||||||
|
help="full path of general config file,\n"
|
||||||
|
"defaults to env. variable FRAPPY_CONFIG_FILE\n",
|
||||||
default=None)
|
default=None)
|
||||||
parser.add_argument('-t',
|
parser.add_argument('-t',
|
||||||
'--test',
|
'--test',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help='Check cfg files only',
|
help='check cfg files only',
|
||||||
|
default=False)
|
||||||
|
parser.add_argument('-r',
|
||||||
|
'--relaxed',
|
||||||
|
action='store_true',
|
||||||
|
help='no checking of problematic behaviour',
|
||||||
default=False)
|
default=False)
|
||||||
return parser.parse_args(argv)
|
return parser.parse_args(argv)
|
||||||
|
|
||||||
@ -80,17 +98,21 @@ def main(argv=None):
|
|||||||
args = parseArgv(argv[1:])
|
args = parseArgv(argv[1:])
|
||||||
|
|
||||||
loglevel = 'debug' if args.verbose else ('error' if args.quiet else 'info')
|
loglevel = 'debug' if args.verbose else ('error' if args.quiet else 'info')
|
||||||
mlzlog.initLogging('secop', loglevel, getGeneralConfig()['logdir'])
|
generalConfig.set_default('lazy_number_validation', args.relaxed)
|
||||||
|
generalConfig.set_default('legacy_hasiodev', args.relaxed)
|
||||||
|
generalConfig.set_default('tolerate_poll_property', args.relaxed)
|
||||||
|
generalConfig.init(args.gencfg)
|
||||||
|
logger.init(loglevel)
|
||||||
|
|
||||||
srv = Server(args.name, mlzlog.log, cfgfiles=args.cfgfiles, interface=args.port, testonly=args.test)
|
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)
|
||||||
|
|
||||||
if args.daemonize:
|
if args.daemonize:
|
||||||
srv.start()
|
srv.start()
|
||||||
else:
|
else:
|
||||||
try:
|
|
||||||
srv.run()
|
srv.run()
|
||||||
except KeyboardInterrupt:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
@ -1,64 +0,0 @@
|
|||||||
#!/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")
|
|
50
bin/peus-plot
Executable file
50
bin/peus-plot
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import sys
|
||||||
|
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 Client
|
||||||
|
from frappy_psi.iqplot import Plot
|
||||||
|
import numpy as np
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print('Usage: peus-plot <maxY>')
|
||||||
|
|
||||||
|
|
||||||
|
def get_modules(name):
|
||||||
|
return list(filter(None, (globals().get(name % i) for i in range(10))))
|
||||||
|
|
||||||
|
|
||||||
|
secnode = Client('pc13252:5000')
|
||||||
|
time_size = {'time', 'size'}
|
||||||
|
int_mods = [u] + get_modules('roi%d')
|
||||||
|
t_rois = get_modules('roi%d')
|
||||||
|
i_rois = get_modules('roi%di')
|
||||||
|
q_rois = get_modules('roi%dq')
|
||||||
|
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
maxy = float(sys.argv[1])
|
||||||
|
else:
|
||||||
|
maxy = 0.02
|
||||||
|
|
||||||
|
|
||||||
|
iqplot = Plot(maxy)
|
||||||
|
|
||||||
|
for i in range(99):
|
||||||
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
while True:
|
||||||
|
curves = np.array(u.get_curves())
|
||||||
|
iqplot.plot(curves,
|
||||||
|
rois=[(r.time - r.size * 0.5, r.time + r.size * 0.5) for r in int_mods],
|
||||||
|
average=([r.time for r in t_rois],
|
||||||
|
[r.value for r in i_rois],
|
||||||
|
[r.value for r in q_rois]))
|
||||||
|
if not iqplot.pause(0.5):
|
||||||
|
break
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
iqplot.close()
|
174
bin/secop-convert
Executable file
174
bin/secop-convert
Executable file
@ -0,0 +1,174 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# pylint: disable=invalid-name
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# *****************************************************************************
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify it under
|
||||||
|
# the terms of the GNU General Public License as published by the Free Software
|
||||||
|
# Foundation; either version 2 of the License, or (at your option) any later
|
||||||
|
# version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||||
|
# details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License along with
|
||||||
|
# this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
# Module authors:
|
||||||
|
# Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
|
||||||
|
# Alexander Lenz <alexander.lenz@frm2.tum.de>
|
||||||
|
#
|
||||||
|
# *****************************************************************************
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from os import path
|
||||||
|
|
||||||
|
# Add import path for inplace usage
|
||||||
|
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
|
||||||
|
|
||||||
|
from secop.lib import generalConfig
|
||||||
|
from secop.logging import logger
|
||||||
|
from secop.server import Server
|
||||||
|
from secop.core import Attached
|
||||||
|
from secop.lib.enum import EnumMember
|
||||||
|
|
||||||
|
|
||||||
|
def rep(value):
|
||||||
|
if isinstance(value, EnumMember):
|
||||||
|
return repr(value.name)
|
||||||
|
return repr(value)
|
||||||
|
|
||||||
|
|
||||||
|
def guess(value):
|
||||||
|
try:
|
||||||
|
return '%.16g' % float(value)
|
||||||
|
except (TypeError, ValueError):
|
||||||
|
return rep(value)
|
||||||
|
|
||||||
|
|
||||||
|
def triplequote(description):
|
||||||
|
if '\n' in description:
|
||||||
|
return "'''%s'''" % '\n '.join(description.split('\n'))
|
||||||
|
else:
|
||||||
|
return repr(description)
|
||||||
|
|
||||||
|
|
||||||
|
def get_value(modobj, pname, value):
|
||||||
|
prop = modobj.propertyDict.get(pname)
|
||||||
|
if isinstance(prop, Attached):
|
||||||
|
return value
|
||||||
|
clsname = type(modobj).__qualname__
|
||||||
|
if pname in {'extra_modules', 'single_module', 'rel_paths', 'json_file'} and clsname.startswith('Sea'):
|
||||||
|
return value.split()
|
||||||
|
if pname == 'extra_params' and clsname.startswith('Sim'):
|
||||||
|
return [v.strip() for v in value.split(',')]
|
||||||
|
if pname == 'remote_class' and type(modobj).__bases__[0].__name__.startswith('Proxy'):
|
||||||
|
return value
|
||||||
|
return getattr(modobj, pname)
|
||||||
|
|
||||||
|
|
||||||
|
generalConfig.defaults = {k: True for k in (
|
||||||
|
'lazy_number_validation', 'disable_value_range_check', 'legacy_hasiodev', 'tolerate_poll_property')}
|
||||||
|
generalConfig.init()
|
||||||
|
logger.init('off')
|
||||||
|
|
||||||
|
|
||||||
|
def main(cfgs):
|
||||||
|
stats = {}
|
||||||
|
for name in cfgs:
|
||||||
|
try:
|
||||||
|
content = []
|
||||||
|
srv = Server(name, logger.log, cfgfiles=name, interface=5000, testonly=True)
|
||||||
|
if srv.node_cfg.get('class') is not None:
|
||||||
|
stats[name] = 'skip router'
|
||||||
|
continue
|
||||||
|
if 'FRAPPY' in srv.module_cfg:
|
||||||
|
stats[name] = 'skip genconfig'
|
||||||
|
continue
|
||||||
|
for modname, params in srv.module_cfg.items():
|
||||||
|
classname = params['class']
|
||||||
|
if classname == 'secop_psi.sea.SeaClient':
|
||||||
|
params['uri'] = 'none'
|
||||||
|
if 'iodev' in params:
|
||||||
|
params['io'] = params.pop('iodev')
|
||||||
|
if '.iodev' in params:
|
||||||
|
params['io'] = params.pop('.iodev')
|
||||||
|
node = dict(srv.node_cfg)
|
||||||
|
if 'description' in node:
|
||||||
|
content.append('Node(%r,\n %s,' % (node.pop('id'), triplequote(node.pop('description'))))
|
||||||
|
interface = srv.interface_cfg.get('uri')
|
||||||
|
if interface:
|
||||||
|
content.append(' interface=%r,' % interface)
|
||||||
|
for k, v in node.items():
|
||||||
|
content.append(' %s=%s,' % (k, guess(v)))
|
||||||
|
content.append(')\n')
|
||||||
|
errors = srv._processCfg()
|
||||||
|
if errors:
|
||||||
|
content = ['# %s' % e[:120] for e in errors] + content
|
||||||
|
stats[name] = ', '.join(errors[:2])
|
||||||
|
for modname, modcfg in srv.module_cfg.items():
|
||||||
|
modobj = srv.dispatcher._modules.get(modname)
|
||||||
|
classname = modcfg.pop('class')
|
||||||
|
content.append('Mod(%r,\n %r,' % (modname, classname))
|
||||||
|
description = modcfg.pop('description', None)
|
||||||
|
if description is not None:
|
||||||
|
content.append(' %s,' % triplequote(description))
|
||||||
|
result = {}
|
||||||
|
for key, value in modcfg.items():
|
||||||
|
pname, _, prop = key.partition('.')
|
||||||
|
if not pname:
|
||||||
|
pname, prop = prop, ''
|
||||||
|
elif pname == 'uri' and value == 'none':
|
||||||
|
continue
|
||||||
|
if prop:
|
||||||
|
pobj = modobj.parameters[pname] if modobj else None
|
||||||
|
if pobj:
|
||||||
|
try:
|
||||||
|
propvalue = rep(getattr(pobj, prop))
|
||||||
|
except AttributeError:
|
||||||
|
propvalue = rep(getattr(pobj.datatype, prop))
|
||||||
|
else:
|
||||||
|
propvalue = guess(value)
|
||||||
|
else:
|
||||||
|
prop = 'value'
|
||||||
|
if modobj:
|
||||||
|
propvalue = rep(get_value(modobj, pname, value))
|
||||||
|
else:
|
||||||
|
propvalue = guess(value)
|
||||||
|
result.setdefault(pname, {})[prop] = propvalue
|
||||||
|
undef = object()
|
||||||
|
for pname, cfg in result.items():
|
||||||
|
value = cfg.pop('value', undef)
|
||||||
|
if not cfg:
|
||||||
|
content.append(' %s=%s,' % (pname, value))
|
||||||
|
else:
|
||||||
|
args = ['%s=%s' % kv for kv in cfg.items()]
|
||||||
|
if value is not undef:
|
||||||
|
args.insert(0, value)
|
||||||
|
joined = ' '.join(args)
|
||||||
|
head = ' %s=Param(' % pname
|
||||||
|
if len(joined) < 8:
|
||||||
|
content.append('%s%s),' % (head, ', '.join(args)))
|
||||||
|
else:
|
||||||
|
content.append('%s\n %s,\n ),' % (head, ',\n '.join(args)))
|
||||||
|
content.append(')\n')
|
||||||
|
with open('%s' % name.replace('.cfg', '_cfg.py'), 'w') as f:
|
||||||
|
f.write('\n'.join(content))
|
||||||
|
stats[name] = '*' if name in stats else ''
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
break
|
||||||
|
except BaseException as e:
|
||||||
|
stats[name] = repr(e)
|
||||||
|
if len(cfgs) == 1:
|
||||||
|
raise
|
||||||
|
|
||||||
|
if len(cfgs) > 1:
|
||||||
|
with open('convert.log', 'w') as f:
|
||||||
|
f.write('\n'.join('%s: %s' % kv for kv in stats.items())+'\n')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main(sys.argv[1:])
|
@ -1,71 +0,0 @@
|
|||||||
#!/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))
|
|
197
bin/sim-server
Executable file
197
bin/sim-server
Executable file
@ -0,0 +1,197 @@
|
|||||||
|
#!/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))
|
@ -1,154 +0,0 @@
|
|||||||
#!/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()
|
|
65
bin/us-plot
Executable file
65
bin/us-plot
Executable file
@ -0,0 +1,65 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import sys
|
||||||
|
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 Client
|
||||||
|
import numpy as np
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
from frappy_psi.iqplot import Pause
|
||||||
|
|
||||||
|
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print("""
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
us-plot <end> [<start> [<npoints>]]
|
||||||
|
|
||||||
|
end: end of window [ns]
|
||||||
|
start: start of window [n2], default: 0
|
||||||
|
npoints: number fo points (default 1000)
|
||||||
|
""")
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
Client('pc13252:5000')
|
||||||
|
|
||||||
|
|
||||||
|
def plot(array, ax, style, xs):
|
||||||
|
xaxis = np.arange(len(array)) * xs
|
||||||
|
return ax.plot(xaxis, array, style)[0]
|
||||||
|
|
||||||
|
|
||||||
|
def update(array, line, xs):
|
||||||
|
xaxis = np.arange(len(array)) * xs
|
||||||
|
line.set_data(np.array([xaxis, array]))
|
||||||
|
|
||||||
|
def on_close(event):
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
start = 0
|
||||||
|
end = float(sys.argv[1])
|
||||||
|
npoints = 1000
|
||||||
|
if len(sys.argv) > 2:
|
||||||
|
start = float(sys.argv[2])
|
||||||
|
if len(sys.argv) > 3:
|
||||||
|
npoints = float(sys.argv[3])
|
||||||
|
|
||||||
|
fig, ax = plt.subplots(figsize=(15,3))
|
||||||
|
pause = Pause(fig)
|
||||||
|
try:
|
||||||
|
get_signal = iq.get_signal
|
||||||
|
print('plotting RUS signal')
|
||||||
|
except NameError:
|
||||||
|
get_signal = u.get_signal
|
||||||
|
print('plotting PE signal')
|
||||||
|
|
||||||
|
xs, signal = get_signal(start, end, npoints)
|
||||||
|
|
||||||
|
lines = [plot(s, ax, '-', xs) for s in signal]
|
||||||
|
|
||||||
|
while pause(0.5):
|
||||||
|
plt.draw()
|
||||||
|
xs, signal = get_signal(start, end, npoints)
|
||||||
|
for line, sig in zip(lines, signal):
|
||||||
|
update(sig, line, xs)
|
22
calibtest.py
Normal file
22
calibtest.py
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import sys
|
||||||
|
import os
|
||||||
|
from glob import glob
|
||||||
|
from frappy_psi.calcurve import CalCurve
|
||||||
|
|
||||||
|
os.chdir('/Users/zolliker/gitpsi/calcurves')
|
||||||
|
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
calib = sys.argv[1]
|
||||||
|
c = CalCurve(calib)
|
||||||
|
else:
|
||||||
|
for file in sorted(glob('*.*')):
|
||||||
|
if file.endswith('.md') or file.endswith('.std'):
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
c = CalCurve(file)
|
||||||
|
xy = c.export()
|
||||||
|
print('%9.4g %12.7g %9.4g %9.4g %s' % (tuple(c.extx) + tuple(c.exty) + (file,)))
|
||||||
|
except Exception as e:
|
||||||
|
print(file, e)
|
||||||
|
calib = file
|
||||||
|
|
87
cfg/PEUS_cfg.py
Normal file
87
cfg/PEUS_cfg.py
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
Node('PEUS.psi.ch',
|
||||||
|
'ultrasound, pulse_echo configuration',
|
||||||
|
interface='5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('u',
|
||||||
|
'frappy_psi.ultrasound.PulseEcho',
|
||||||
|
'ultrasound acquisition loop',
|
||||||
|
freq='f',
|
||||||
|
# pollinterval=0.1,
|
||||||
|
time=900.0,
|
||||||
|
size=5000.0,
|
||||||
|
nr=500,
|
||||||
|
sr=32768,
|
||||||
|
bw=1e7,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('fio',
|
||||||
|
'frappy_psi.ultrasound.FreqStringIO', '',
|
||||||
|
uri='serial:///dev/ttyS1?baudrate=57600',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('f',
|
||||||
|
'frappy_psi.ultrasound.Frequency',
|
||||||
|
'writable for frequency',
|
||||||
|
output='R', # L for LF (bnc), R for RF (type N)
|
||||||
|
io='fio',
|
||||||
|
amp=0.5, # VPP
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('fdif',
|
||||||
|
'frappy_psi.ultrasound.FrequencyDif',
|
||||||
|
'writable for frequency minus base frequency',
|
||||||
|
freq='f',
|
||||||
|
base=41490200.0,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Mod('curves',
|
||||||
|
# 'frappy_psi.ultrasound.Curves',
|
||||||
|
# 't, I, Q and pulse arrays for plot',
|
||||||
|
# )
|
||||||
|
|
||||||
|
def roi(name, time, size, components='iqpa', enable=True, control=False, freq=None, **kwds):
|
||||||
|
description = 'I/Q of region {name}'
|
||||||
|
if freq:
|
||||||
|
kwds.update(cls='frappy_psi.ultrasound.ControlRoi',
|
||||||
|
description=f'{description} as control loop',
|
||||||
|
freq=freq, **kwds)
|
||||||
|
else:
|
||||||
|
kwds.update(cls='frappy_psi.ultrasound.Roi',
|
||||||
|
description=description, **kwds)
|
||||||
|
kwds.update({c: name + c for c in components})
|
||||||
|
Mod(name,
|
||||||
|
main='u',
|
||||||
|
time=time,
|
||||||
|
size=size,
|
||||||
|
enable=enable,
|
||||||
|
**kwds,
|
||||||
|
)
|
||||||
|
for c in components:
|
||||||
|
Mod(name + c,
|
||||||
|
'frappy.modules.Readable',
|
||||||
|
f'{name}{c} component',
|
||||||
|
)
|
||||||
|
|
||||||
|
# control loop
|
||||||
|
roi('roi0', 2450, 300, freq='f', maxstep=100000, minstep=4000)
|
||||||
|
# other rois
|
||||||
|
roi('roi1', 5950, 300)
|
||||||
|
roi('roi2', 9475, 300)
|
||||||
|
roi('roi3', 12900, 300)
|
||||||
|
#roi('roi4', 400, 30, False)
|
||||||
|
#roi('roi5', 400, 30, False)
|
||||||
|
#roi('roi6', 400, 30, False)
|
||||||
|
#roi('roi7', 400, 30, False)
|
||||||
|
#roi('roi8', 400, 30, False)
|
||||||
|
#roi('roi9', 400, 30, False)
|
||||||
|
|
||||||
|
Mod('delay',
|
||||||
|
'frappy_psi.dg645.Delay',
|
||||||
|
'delay line with 2 channels',
|
||||||
|
uri='serial:///dev/ttyS2',
|
||||||
|
on1=1e-09,
|
||||||
|
on2=1e-09,
|
||||||
|
off1=4e-07,
|
||||||
|
off2=6e-07,
|
||||||
|
)
|
24
cfg/QnwTC1_cfg.py
Normal file
24
cfg/QnwTC1_cfg.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
Node('QnwTC1test.psi.ch',
|
||||||
|
'QnwTC1 test',
|
||||||
|
'tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('io',
|
||||||
|
'frappy_psi.qnw.QnwIO',
|
||||||
|
'connection for Quantum northwest',
|
||||||
|
uri='tcp://ldm-fi-ts:3001',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T',
|
||||||
|
'frappy_psi.qnw.TemperatureLoopTC1',
|
||||||
|
'holder temperature',
|
||||||
|
channel='CT',
|
||||||
|
io='io',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('Th',
|
||||||
|
'frappy_psi.qnw.SensorTC1',
|
||||||
|
'heat exch. temperature',
|
||||||
|
channel='HT',
|
||||||
|
io='io',
|
||||||
|
)
|
39
cfg/RUS_cfg.py
Normal file
39
cfg/RUS_cfg.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
Node(equipment_id = 'r_ultrasound.psi.ch',
|
||||||
|
description = 'resonant ultra sound setup',
|
||||||
|
interface = 'tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('iq',
|
||||||
|
cls = 'frappy_psi.ultrasound.RUS',
|
||||||
|
description = 'ultrasound iq mesurement',
|
||||||
|
imod = 'i',
|
||||||
|
qmod = 'q',
|
||||||
|
freq='f',
|
||||||
|
input_range=10, # VPP
|
||||||
|
input_delay = 0,
|
||||||
|
periods = 163,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('freqio',
|
||||||
|
'frappy_psi.ultrasound.FreqStringIO',
|
||||||
|
' ',
|
||||||
|
uri = 'serial:///dev/ttyS1?baudrate=57600',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('f',
|
||||||
|
cls = 'frappy_psi.ultrasound.Frequency',
|
||||||
|
description = 'ultrasound frequency',
|
||||||
|
io='freqio',
|
||||||
|
output='L', # L for LF (bnc), R for RF (type N)
|
||||||
|
target=10000,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('i',
|
||||||
|
cls='frappy.modules.Readable',
|
||||||
|
description='I component',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('q',
|
||||||
|
cls='frappy.modules.Readable',
|
||||||
|
description='Q component',
|
||||||
|
)
|
19
cfg/TFA10_cfg.py
Normal file
19
cfg/TFA10_cfg.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
Node('TFA10.psi.ch',
|
||||||
|
'TFA10 test',
|
||||||
|
'tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('io',
|
||||||
|
'frappy_psi.thermofisher.ThermFishIO',
|
||||||
|
'connection for ThermoFisher A10',
|
||||||
|
uri='tcp://ldm-fi-ts:3002',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T',
|
||||||
|
'frappy_psi.thermofisher.TemperatureLoopA10',
|
||||||
|
'holder temperature',
|
||||||
|
io='io',
|
||||||
|
target=Param(max=100),
|
||||||
|
tolerance=0.5,
|
||||||
|
settling_time=20,
|
||||||
|
)
|
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
|
37
cfg/addons/ah2550sea_cfg.py
Normal file
37
cfg/addons/ah2550sea_cfg.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
Node('ah2550.addon.sea.psi.ch',
|
||||||
|
'Andeen Hagerlin 2550 Capacitance Bridge using SEA',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_addons',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'SEA connection to mbe_ah2550',
|
||||||
|
config='ah2550.addon',
|
||||||
|
export=False,
|
||||||
|
service='addons',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ah',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_addons',
|
||||||
|
sea_object='cap',
|
||||||
|
extra_modules = ['cap', 'loss']
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cap',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_addons',
|
||||||
|
single_module='ah.cap',
|
||||||
|
value=Param(fmtstr='%.12g'),
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('loss',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_addons',
|
||||||
|
single_module='ah.loss',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('capslope',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_addons',
|
||||||
|
sea_object='capslope',
|
||||||
|
)
|
22
cfg/addons/ah2700_cfg.py
Executable file
22
cfg/addons/ah2700_cfg.py
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
Node('ah2700.frappy.psi.ch',
|
||||||
|
'Andeen Hagerlin 2700 Capacitance Bridge',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cap_io',
|
||||||
|
'frappy_psi.ah2700.Ah2700IO',
|
||||||
|
'',
|
||||||
|
uri='linse-976d-ts:3006',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cap',
|
||||||
|
'frappy_psi.ah2700.Capacitance',
|
||||||
|
'capacitance',
|
||||||
|
io = 'cap_io',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('loss',
|
||||||
|
'frappy_psi.parmod.Par',
|
||||||
|
'loss parameter',
|
||||||
|
read='cap.loss',
|
||||||
|
unit='deg',
|
||||||
|
)
|
39
cfg/addons/ah2700sea_cfg.py
Normal file
39
cfg/addons/ah2700sea_cfg.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
Node('ah2700.addon.sea.psi.ch',
|
||||||
|
'Andeen Hagerlin 2700 Capacitance Bridge using SEA',
|
||||||
|
)
|
||||||
|
|
||||||
|
sea_cfg='ah2700.addon'
|
||||||
|
|
||||||
|
Mod('sea_addons',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'SEA connection to mbe_ah2700',
|
||||||
|
config='ah2700.addon',
|
||||||
|
export=False,
|
||||||
|
service='addons',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ah',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_addons',
|
||||||
|
sea_object='cap',
|
||||||
|
extra_modules = ['cap', 'loss']
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cap',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_addons',
|
||||||
|
single_module='ah.cap',
|
||||||
|
value=Param(fmtstr='%.12g'),
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('loss',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_addons',
|
||||||
|
single_module='ah.loss',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('capslope',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_addons',
|
||||||
|
sea_object='capslope',
|
||||||
|
)
|
16
cfg/addons/be-filter-boa_cfg.py
Normal file
16
cfg/addons/be-filter-boa_cfg.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
Node('be-filter-boa.addon.sea.psi.ch',
|
||||||
|
'CryoTel be-filter BOA',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_addons',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'addons sea connection for be-filter-boa.addon',
|
||||||
|
config='be-filter-boa.addon',
|
||||||
|
service='addons',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('befilter',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
sea_object='befilter',
|
||||||
|
io='sea_addons',
|
||||||
|
)
|
49
cfg/addons/camea-be-filter_cfg.py
Normal file
49
cfg/addons/camea-be-filter_cfg.py
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
Node('cfg/sea/camea-be-filter.cfg',
|
||||||
|
'Camea Be-Filter',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_addons',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'addons sea connection for camea-be-filter.addon',
|
||||||
|
config='camea-be-filter.addon',
|
||||||
|
service='addons',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('t_be_filter',
|
||||||
|
'frappy_psi.sea.SeaReadable',
|
||||||
|
'Be filter T',
|
||||||
|
io='sea_addons',
|
||||||
|
sea_object='t_be_filter',
|
||||||
|
extra_modules=['a', 'b', 'c', 'd', 'det'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('t_be_fil_top_m',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_addons',
|
||||||
|
single_module='t_be_filter.a',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('t_be_fil_top_r',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_addons',
|
||||||
|
single_module='t_be_filter.b',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('t_be_fil_bot_l',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_addons',
|
||||||
|
single_module='t_be_filter.c',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('t_be_fil_bot_r',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_addons',
|
||||||
|
single_module='t_be_filter.d',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('t_detector',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_addons',
|
||||||
|
single_module='t_be_filter.det',
|
||||||
|
)
|
||||||
|
|
56
cfg/addons/flamesample_cfg.py
Normal file
56
cfg/addons/flamesample_cfg.py
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
Node('flamesample.psi.ch',
|
||||||
|
'flame sample thermometers and heater',
|
||||||
|
interface = 'tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lscio',
|
||||||
|
'frappy_psi.ls372.StringIO',
|
||||||
|
'sample channels LS372 io',
|
||||||
|
uri = 'flamedil-ls.psi.ch:7777',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lsc_channel',
|
||||||
|
'frappy_psi.ls372.Switcher',
|
||||||
|
'channel switcher sample ls372',
|
||||||
|
io='lscio',
|
||||||
|
value = 3,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ts_low',
|
||||||
|
'frappy_psi.ls372.TemperatureLoop',
|
||||||
|
'sample RuOX',
|
||||||
|
channel = 3,
|
||||||
|
switcher = 'lsc_channel',
|
||||||
|
minrange=13,
|
||||||
|
range=22,
|
||||||
|
tolerance = 0.1,
|
||||||
|
vexc = 3,
|
||||||
|
htrrng=4,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ts_high',
|
||||||
|
'frappy_psi.ls372.TemperatureLoop',
|
||||||
|
'sample Cernox',
|
||||||
|
channel = 1,
|
||||||
|
switcher = 'lsc_channel',
|
||||||
|
minrange=11,
|
||||||
|
vexc = 5,
|
||||||
|
range=22,
|
||||||
|
tolerance = 0.1,
|
||||||
|
htrrng=5,
|
||||||
|
minheater=5e-4,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ts',
|
||||||
|
'frappy_psi.parmod.SwitchDriv',
|
||||||
|
'automatically switching between ts_low and ts_high',
|
||||||
|
meaning=['temperature', 40],
|
||||||
|
value=Param(unit='K'),
|
||||||
|
low='ts_low',
|
||||||
|
high='ts_high',
|
||||||
|
#min_high=0.6035,
|
||||||
|
#max_low=1.6965,
|
||||||
|
min_high=0.6,
|
||||||
|
max_low=1.7,
|
||||||
|
tolerance=0.1,
|
||||||
|
)
|
16
cfg/addons/focus-be-filter_cfg.py
Normal file
16
cfg/addons/focus-be-filter_cfg.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
Node('focus-be-filter.addon.sea.psi.ch',
|
||||||
|
'FOCUS Beryllium filter with cryotel closed cycle',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_addons',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'SEA connection to addons',
|
||||||
|
config='focus-be-filter.addon',
|
||||||
|
service='addons',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('befilter',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_addons',
|
||||||
|
sea_object='cryo',
|
||||||
|
)
|
26
cfg/addons/ls372_cfg.py
Normal file
26
cfg/addons/ls372_cfg.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
Mod('lsc',
|
||||||
|
'frappy.io.StringIO',
|
||||||
|
'',
|
||||||
|
wait_before=0.05,
|
||||||
|
uri='flamedil-ls:7777',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('r1',
|
||||||
|
'frappy_psi.ls372.ResChannel',
|
||||||
|
'resistivity from LS 372',
|
||||||
|
switcher='channel',
|
||||||
|
channel=1,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('r3',
|
||||||
|
'frappy_psi.ls372.ResChannel',
|
||||||
|
'resistivity from LS 372',
|
||||||
|
switcher='channel',
|
||||||
|
channel=3,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('channel',
|
||||||
|
'frappy_psi.ls372.Switcher',
|
||||||
|
'LS 372 channel switcher',
|
||||||
|
io='lsc',
|
||||||
|
)
|
34
cfg/addons/razorbill_cfg.py
Normal file
34
cfg/addons/razorbill_cfg.py
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
Node('cfg/addons/razorbill.cfg',
|
||||||
|
'razorbill forwarder',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_addons',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'SEA stick connection',
|
||||||
|
config='razorbill.addon',
|
||||||
|
service='addons',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ts',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_addons',
|
||||||
|
sea_object='tt',
|
||||||
|
json_file='ori6.config.json',
|
||||||
|
rel_paths=['ts'],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Mod('T_remote',
|
||||||
|
'frappy.proxy.Proxy',
|
||||||
|
'dummy (remote) T',
|
||||||
|
remote_class = 'frappy_psi.dummy.Temp',
|
||||||
|
uri='razorbill:3000',
|
||||||
|
module='T',
|
||||||
|
# export=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('forwarder',
|
||||||
|
'frappy_psi.dummy.Forwarder',
|
||||||
|
'forwarder',
|
||||||
|
src='ts',
|
||||||
|
dst='T_remote')
|
17
cfg/addons/stickmotor_cfg.py
Normal file
17
cfg/addons/stickmotor_cfg.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
Node('stickmotor.linse.psi.ch',
|
||||||
|
'mobile rotation stage (from MA02)',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('stick_io',
|
||||||
|
'frappy_psi.phytron.PhytronIO',
|
||||||
|
'dom motor IO',
|
||||||
|
uri='ldmcc08-ts:3006',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('stickrot',
|
||||||
|
'frappy_psi.phytron.Motor',
|
||||||
|
'stick rotation, typically not used as omega',
|
||||||
|
io='stick_io',
|
||||||
|
encoder_mode='CHECK',
|
||||||
|
backlash=-1,
|
||||||
|
)
|
44
cfg/addons/vsource_cfg.py
Normal file
44
cfg/addons/vsource_cfg.py
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
Node('k2601b.psi.ch',
|
||||||
|
'source meter keithley 2601b',
|
||||||
|
interface='tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Mod('vsource_io',
|
||||||
|
'frappy_psi.k2601b.K2601bIO',
|
||||||
|
'source meter',
|
||||||
|
# uri = '129.129.156.90:5025',
|
||||||
|
uri = "sans-sample-ts:3011"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Mod('source',
|
||||||
|
'frappy_psi.k2601b.SourceMeter'
|
||||||
|
'',
|
||||||
|
description = "keithley sourcemeter",
|
||||||
|
mode = 1,
|
||||||
|
vlimit = 6.0,
|
||||||
|
ilimit = 2.,
|
||||||
|
io = 'vsource_io',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('volt',
|
||||||
|
'frappy_psi.k2601b.Voltage'
|
||||||
|
'',
|
||||||
|
description = "Voltage Source",
|
||||||
|
active = True,
|
||||||
|
limit = 5.0,
|
||||||
|
target = 0.0,
|
||||||
|
sourcemeter = 'source',
|
||||||
|
io = 'vsource_io',
|
||||||
|
)
|
||||||
|
Mod('cur',
|
||||||
|
'frappy_psi.k2601b.Current'
|
||||||
|
'',
|
||||||
|
description = "Current Source",
|
||||||
|
active = False,
|
||||||
|
limit = 0.10,
|
||||||
|
target = 0.0,
|
||||||
|
sourcemeter = 'source',
|
||||||
|
io = 'vsource_io',
|
||||||
|
)
|
@ -1,17 +0,0 @@
|
|||||||
[node AH2700Test.psi.ch]
|
|
||||||
description = AH2700 capacitance bridge test
|
|
||||||
|
|
||||||
[interface tcp]
|
|
||||||
type = tcp
|
|
||||||
bindto = 0.0.0.0
|
|
||||||
bindport = 5000
|
|
||||||
|
|
||||||
[module cap]
|
|
||||||
class = secop_psi.ah2700.Capacitance
|
|
||||||
description = capacitance
|
|
||||||
uri=ldmse3-ts:3015
|
|
||||||
|
|
||||||
#[module ahcom]
|
|
||||||
#class = secop_psi.ah2700.StringIO
|
|
||||||
#uri=ldmse3-ts:3015
|
|
||||||
#description = serial communicator to an AH2700
|
|
10
cfg/ah2700test_cfg.py
Normal file
10
cfg/ah2700test_cfg.py
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
Node('AH2700Test.psi.ch',
|
||||||
|
'AH2700 capacitance bridge test',
|
||||||
|
'tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cap',
|
||||||
|
'frappy_psi.ah2700.Capacitance',
|
||||||
|
'capacitance',
|
||||||
|
uri='ldmse3-ts:3015',
|
||||||
|
)
|
111
cfg/amagnet.cfg
111
cfg/amagnet.cfg
@ -1,111 +0,0 @@
|
|||||||
[node MLZ_amagnet(Garfield)]
|
|
||||||
description=MLZ-Amagnet
|
|
||||||
.
|
|
||||||
Water cooled magnet from ANTARES@MLZ.
|
|
||||||
.
|
|
||||||
Use module to control the magnetic field.
|
|
||||||
Don't forget to select symmetry first (can be moved only at zero field!).
|
|
||||||
.
|
|
||||||
Monitor T1..T4 (Coil temps), if they get to hot, field will ramp down!
|
|
||||||
.
|
|
||||||
In case of Problems, contact the ANTARES people at MLZ.
|
|
||||||
|
|
||||||
visibility=expert
|
|
||||||
foo=bar
|
|
||||||
|
|
||||||
[interface tcp]
|
|
||||||
type=tcp
|
|
||||||
bindto=0.0.0.0
|
|
||||||
bindport=10767
|
|
||||||
|
|
||||||
[module enable]
|
|
||||||
class=secop_mlz.entangle.NamedDigitalOutput
|
|
||||||
tangodevice='tango://localhost:10000/box/plc/_enable'
|
|
||||||
value.datatype=["enum", {'On':1,'Off':0}]
|
|
||||||
target.datatype=["enum", {'On':1,'Off':0}]
|
|
||||||
.description='Enables to Output of the Powersupply'
|
|
||||||
.visibility='advanced'
|
|
||||||
|
|
||||||
[module polarity]
|
|
||||||
class=secop_mlz.entangle.NamedDigitalOutput
|
|
||||||
tangodevice=tango://localhost:10000/box/plc/_polarity
|
|
||||||
value.datatype=["enum", {'+1':1,'0':0,'-1':-1}]
|
|
||||||
target.datatype=["enum", {'+1':1,'0':0,'-1':-1}]
|
|
||||||
.description=polarity (+/-) switch
|
|
||||||
.
|
|
||||||
there is an interlock in the plc:
|
|
||||||
if there is current, switching polarity is forbidden
|
|
||||||
if polarity is short, powersupply is disabled
|
|
||||||
.visibility=advanced
|
|
||||||
comtries=50
|
|
||||||
|
|
||||||
|
|
||||||
[module symmetry]
|
|
||||||
class=secop_mlz.entangle.NamedDigitalOutput
|
|
||||||
tangodevice=tango://localhost:10000/box/plc/_symmetric
|
|
||||||
value.datatype=["enum",{'symmetric':1,'short':0, 'asymmetric':-1}]
|
|
||||||
target.datatype=["enum",{'symmetric':1,'short':0, 'asymmetric':-1}]
|
|
||||||
.description=par/ser switch selecting (a)symmetric mode
|
|
||||||
.
|
|
||||||
symmetric is ser, asymmetric is par
|
|
||||||
.visibility=advanced
|
|
||||||
|
|
||||||
[module T1]
|
|
||||||
class=secop_mlz.entangle.AnalogInput
|
|
||||||
tangodevice=tango://localhost:10000/box/plc/_t1
|
|
||||||
.description=Temperature1 of the coils system
|
|
||||||
#warnlimits=(0, 50)
|
|
||||||
value.unit='degC'
|
|
||||||
|
|
||||||
[module T2]
|
|
||||||
class=secop_mlz.entangle.AnalogInput
|
|
||||||
tangodevice=tango://localhost:10000/box/plc/_t2
|
|
||||||
.description=Temperature2 of the coils system
|
|
||||||
#warnlimits=(0, 50)
|
|
||||||
value.unit='degC'
|
|
||||||
|
|
||||||
[module T3]
|
|
||||||
class=secop_mlz.entangle.AnalogInput
|
|
||||||
tangodevice=tango://localhost:10000/box/plc/_t3
|
|
||||||
.description=Temperature3 of the coils system
|
|
||||||
#warnlimits=(0, 50)
|
|
||||||
value.unit='degC'
|
|
||||||
|
|
||||||
[module T4]
|
|
||||||
class=secop_mlz.entangle.AnalogInput
|
|
||||||
tangodevice=tango://localhost:10000/box/plc/_t4
|
|
||||||
.description=Temperature4 of the coils system
|
|
||||||
#warnlimits=(0, 50)
|
|
||||||
value.unit='degC'
|
|
||||||
|
|
||||||
[module currentsource]
|
|
||||||
class=secop_mlz.entangle.PowerSupply
|
|
||||||
tangodevice=tango://localhost:10000/box/lambda/curr
|
|
||||||
.description=Device for the magnet power supply (current mode)
|
|
||||||
abslimits=(0,200)
|
|
||||||
speed=1
|
|
||||||
ramp=60
|
|
||||||
precision=0.02
|
|
||||||
current=0
|
|
||||||
voltage=10
|
|
||||||
#unit=A
|
|
||||||
.visibility=advanced
|
|
||||||
|
|
||||||
[module mf]
|
|
||||||
class=secop_mlz.amagnet.GarfieldMagnet
|
|
||||||
.description=magnetic field module, handling polarity switching and stuff
|
|
||||||
subdev_currentsource=currentsource
|
|
||||||
subdev_enable=enable
|
|
||||||
subdev_polswitch=polarity
|
|
||||||
subdev_symmetry=symmetry
|
|
||||||
target.unit='T'
|
|
||||||
value.unit='T'
|
|
||||||
userlimits=(-0.35, 0.35)
|
|
||||||
calibrationtable={'symmetric':[0.00186517, 0.0431937, -0.185956, 0.0599757, 0.194042],
|
|
||||||
'short': [0.0, 0.0, 0.0, 0.0, 0.0],
|
|
||||||
'asymmetric':[0.00136154, 0.027454, -0.120951, 0.0495289, 0.110689]}
|
|
||||||
.meaning=The magnetic field
|
|
||||||
.priority=100
|
|
||||||
.visibility=user
|
|
||||||
|
|
||||||
abslimits.default=-0.4,0.4
|
|
91
cfg/amagnet_cfg.py
Normal file
91
cfg/amagnet_cfg.py
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
Node('MLZ_amagnet(Garfield)',
|
||||||
|
'MLZ-Amagnet\n'
|
||||||
|
'\n'
|
||||||
|
'Water cooled magnet from ANTARES@MLZ.\n'
|
||||||
|
'\n'
|
||||||
|
'Use module to control the magnetic field.\n'
|
||||||
|
'Don\'t forget to select symmetry first (can be moved only at zero field!).\n'
|
||||||
|
'\n'
|
||||||
|
'Monitor T1..T4 (Coil temps), if they get to hot, field will ramp down!\n'
|
||||||
|
'\n'
|
||||||
|
'In case of Problems, contact the ANTARES people at MLZ.',
|
||||||
|
'tcp://10767',
|
||||||
|
visibility = 'expert',
|
||||||
|
foo = 'bar',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('enable',
|
||||||
|
'frappy_mlz.entangle.NamedDigitalOutput',
|
||||||
|
'Enables to Output of the Powersupply',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/plc/_enable',
|
||||||
|
value = Param(datatype=["enum", {'On':1,'Off':0}]),
|
||||||
|
target = Param(datatype=["enum", {'On':1,'Off':0}]),
|
||||||
|
visibility = 'advanced',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('polarity',
|
||||||
|
'frappy_mlz.entangle.NamedDigitalOutput',
|
||||||
|
'polarity (+/-) switch\n'
|
||||||
|
'\n'
|
||||||
|
'there is an interlock in the plc:\n'
|
||||||
|
'if there is current, switching polarity is forbidden\n'
|
||||||
|
'if polarity is short, powersupply is disabled',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/plc/_polarity',
|
||||||
|
value = Param(datatype=["enum", {'+1':1,'0':0,'-1':-1}]),
|
||||||
|
target = Param(datatype=["enum", {'+1':1,'0':0,'-1':-1}]),
|
||||||
|
visibility = 'advanced',
|
||||||
|
comtries = 50,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('symmetry',
|
||||||
|
'frappy_mlz.entangle.NamedDigitalOutput',
|
||||||
|
'par/ser switch selecting (a)symmetric mode\n'
|
||||||
|
'\n'
|
||||||
|
'symmetric is ser, asymmetric is par',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/plc/_symmetric',
|
||||||
|
value = Param(datatype=["enum",{'symmetric':1,'short':0, 'asymmetric':-1}]),
|
||||||
|
target = Param(datatype=["enum",{'symmetric':1,'short':0, 'asymmetric':-1}]),
|
||||||
|
visibility = 'advanced',
|
||||||
|
)
|
||||||
|
|
||||||
|
for i in range(1,5):
|
||||||
|
Mod('T%d' % i,
|
||||||
|
'frappy_mlz.entangle.AnalogInput',
|
||||||
|
'Temperature %d of the coils system' % i,
|
||||||
|
tangodevice = 'tango://localhost:10000/box/plc/_t%d' % i,
|
||||||
|
#warnlimits=(0, 50),
|
||||||
|
value = Param(unit='degC'),
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('currentsource',
|
||||||
|
'frappy_mlz.entangle.PowerSupply',
|
||||||
|
'Device for the magnet power supply (current mode)',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/lambda/curr',
|
||||||
|
abslimits = (0,200),
|
||||||
|
speed = 1,
|
||||||
|
ramp = 60,
|
||||||
|
precision = 0.02,
|
||||||
|
current = 0,
|
||||||
|
voltage = 10,
|
||||||
|
#value=Param(unit='A')
|
||||||
|
visibility = 'advanced',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('mf',
|
||||||
|
'frappy_mlz.amagnet.GarfieldMagnet',
|
||||||
|
'magnetic field module, handling polarity switching and stuff',
|
||||||
|
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,),
|
||||||
|
)
|
19
cfg/attocube_cfg.py
Normal file
19
cfg/attocube_cfg.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
Node('attocube_test.psi.ch',
|
||||||
|
'a single attocube axis',
|
||||||
|
interface='tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('r',
|
||||||
|
'frappy_psi.attocube.Axis',
|
||||||
|
'ANRv220-F3-02882',
|
||||||
|
axis = 1,
|
||||||
|
value = Param(unit='deg'),
|
||||||
|
tolerance = 0.1,
|
||||||
|
target_min = 0,
|
||||||
|
target_max = 360,
|
||||||
|
steps_fwd = 45,
|
||||||
|
steps_bwd = 85,
|
||||||
|
step_mode = True,
|
||||||
|
# gear = 1.2,
|
||||||
|
)
|
||||||
|
|
150
cfg/ccr.cfg
150
cfg/ccr.cfg
@ -1,150 +0,0 @@
|
|||||||
[node MLZ_ccr12]
|
|
||||||
description = CCR box of MLZ Sample environment group
|
|
||||||
.
|
|
||||||
Contains a Lakeshore 336 and an PLC controlling the compressor
|
|
||||||
and some valves.
|
|
||||||
|
|
||||||
|
|
||||||
[interface tcp]
|
|
||||||
type=tcp
|
|
||||||
bindto=0.0.0.0
|
|
||||||
bindport=10767
|
|
||||||
|
|
||||||
[module automatik]
|
|
||||||
class=secop_mlz.entangle.NamedDigitalOutput
|
|
||||||
tangodevice=tango://localhost:10000/box/plc/_automatik
|
|
||||||
mapping=dict(Off=0,p1=1,p2=2)
|
|
||||||
description="controls the (simple) pressure regulation
|
|
||||||
.
|
|
||||||
selects between off, regulate on p1 or regulate on p2 sensor"
|
|
||||||
|
|
||||||
[module compressor]
|
|
||||||
class=secop_mlz.entangle.NamedDigitalOutput
|
|
||||||
tangodevice=tango://localhost:10000/box/plc/_cooler_onoff
|
|
||||||
mapping=dict(Off=0,On=1)
|
|
||||||
description=control the compressor (on/off)
|
|
||||||
|
|
||||||
[module gas]
|
|
||||||
class=secop_mlz.entangle.NamedDigitalOutput
|
|
||||||
tangodevice=tango://localhost:10000/box/plc/_gas_onoff
|
|
||||||
mapping=dict(Off=0,On=1)
|
|
||||||
description=control the gas inlet into the ccr (on/off)
|
|
||||||
.
|
|
||||||
note: this switches off automatically after 15 min.
|
|
||||||
note: activation de-activates the vacuum inlet
|
|
||||||
note: if the pressure regulation is active, it enslave this device
|
|
||||||
|
|
||||||
[module vacuum]
|
|
||||||
class=secop_mlz.entangle.NamedDigitalOutput
|
|
||||||
tangodevice=tango://localhost:10000/box/plc/_vacuum_Onoff
|
|
||||||
mapping=dict(Off=0,On=1)
|
|
||||||
description=control the vacuum inlet into the ccr (on/off)
|
|
||||||
.
|
|
||||||
note: activation de-activates the gas inlet
|
|
||||||
note: if the pressure regulation is active, it enslave this device
|
|
||||||
|
|
||||||
[module p1]
|
|
||||||
class=secop_mlz.entangle.AnalogInput
|
|
||||||
tangodevice=tango://localhost:10000/box/plc/_p1
|
|
||||||
value.unit='mbar'
|
|
||||||
description=pressure sensor 1 (linear scale)
|
|
||||||
|
|
||||||
[module p2]
|
|
||||||
class=secop_mlz.entangle.AnalogInput
|
|
||||||
tangodevice=tango://localhost:10000/box/plc/_p2
|
|
||||||
value.unit='mbar'
|
|
||||||
description=pressure sensor 2 (selectable curve)
|
|
||||||
|
|
||||||
[module curve_p2]
|
|
||||||
class=secop_mlz.entangle.NamedDigitalInput
|
|
||||||
tangodevice=tango://localhost:10000/box/plc/_curve
|
|
||||||
value.default=0
|
|
||||||
description=calibration curve for pressure sensor 2
|
|
||||||
mapping="{'0-10V':0, '0-1000mbar':1, '1-9V to 0-1 mbar':2,
|
|
||||||
'DI200':3, 'DI2000':4, 'TTR100':7, 'PTR90':8,
|
|
||||||
'PTR225/237':9, 'ITR90':10, 'ITR100-D':11,
|
|
||||||
'ITR100-2':12, 'ITR100-3':13, 'ITR100-4':14,
|
|
||||||
'ITR100-5':15, 'ITR100-6':16, 'ITR100-7':17,
|
|
||||||
'ITR100-8':18, 'ITR100-9':19, 'ITR100-A':20,
|
|
||||||
'CMR361':21, 'CMR362':22, 'CMR363':23,
|
|
||||||
'CMR364':24, 'CMR365':25}"
|
|
||||||
|
|
||||||
# sensors
|
|
||||||
[module T_sample]
|
|
||||||
class=secop_mlz.entangle.Sensor
|
|
||||||
tangodevice=tango://localhost:10000/box/sample/sensora
|
|
||||||
value.unit='K'
|
|
||||||
description=sample temperature
|
|
||||||
|
|
||||||
[module T_stick]
|
|
||||||
class=secop_mlz.entangle.Sensor
|
|
||||||
tangodevice=tango://localhost:10000/box/stick/sensorb
|
|
||||||
value.unit='K'
|
|
||||||
description=temperature at bottom of sample stick
|
|
||||||
|
|
||||||
[module T_coldhead]
|
|
||||||
class=secop_mlz.entangle.Sensor
|
|
||||||
tangodevice=tango://localhost:10000/box/coldhead/sensorc
|
|
||||||
value.unit='K'
|
|
||||||
description=temperature at coldhead
|
|
||||||
|
|
||||||
[module T_tube]
|
|
||||||
class=secop_mlz.entangle.Sensor
|
|
||||||
tangodevice=tango://localhost:10000/box/tube/sensord
|
|
||||||
value.unit='K'
|
|
||||||
description=temperature at thermal coupling tube <-> stick
|
|
||||||
|
|
||||||
|
|
||||||
# regulations
|
|
||||||
|
|
||||||
[module T_stick_regulation]
|
|
||||||
class=secop_mlz.entangle.TemperatureController
|
|
||||||
tangodevice=tango://localhost:10000/box/stick/control2
|
|
||||||
heateroutput.default=0
|
|
||||||
description=regulation of stick temperature
|
|
||||||
ramp.default=6
|
|
||||||
speed.default=0.1
|
|
||||||
setpoint.default=0
|
|
||||||
pid.default=(40,10,1)
|
|
||||||
p.default=40
|
|
||||||
i.default=10
|
|
||||||
d.default=1
|
|
||||||
abslimits=(0,500)
|
|
||||||
value.unit='K'
|
|
||||||
|
|
||||||
# OMG! a NamedDigitalOutput, but with float'ints' 0..3
|
|
||||||
[module T_stick_regulation_heaterrange]
|
|
||||||
class=secop_mlz.entangle.AnalogOutput
|
|
||||||
tangodevice=tango://localhost:10000/box/stick/range2
|
|
||||||
precision.default=1
|
|
||||||
abslimits=(0,3)
|
|
||||||
description=heaterrange for stick regulation
|
|
||||||
|
|
||||||
|
|
||||||
[module T_tube_regulation]
|
|
||||||
class=secop_mlz.entangle.TemperatureController
|
|
||||||
tangodevice=tango://localhost:10000/box/tube/control1
|
|
||||||
description=regulation of tube temperature
|
|
||||||
heateroutput.default=0
|
|
||||||
ramp.default=6
|
|
||||||
speed.default=0.1
|
|
||||||
setpoint.default=0
|
|
||||||
pid.default=(40,10,1)
|
|
||||||
p.default=40
|
|
||||||
i.default=10
|
|
||||||
d.default=1
|
|
||||||
abslimits=(0,500)
|
|
||||||
value.unit='K'
|
|
||||||
|
|
||||||
# OMG! a NamedDigitalOutput, but with float'ints' 0..3
|
|
||||||
#[module T_tube_regulation_heaterrange]
|
|
||||||
#class=secop_mlz.entangle.AnalogOutput
|
|
||||||
#tangodevice=tango://localhost:10000/box/tube/range1
|
|
||||||
#precision.default=1
|
|
||||||
#abslimits=(0,3)
|
|
||||||
|
|
||||||
[module T_tube_regulation_heaterrange]
|
|
||||||
class=secop_mlz.entangle.NamedDigitalOutput
|
|
||||||
tangodevice=tango://localhost:10000/box/tube/range1
|
|
||||||
mapping=dict(Off=0, Low=1, Medium=2, High=3)
|
|
||||||
description=heaterrange for tube regulation
|
|
148
cfg/ccr_cfg.py
Normal file
148
cfg/ccr_cfg.py
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
desc = '''CCR box of MLZ Sample environment group
|
||||||
|
|
||||||
|
Contains a Lakeshore 336 and an PLC controlling the compressor
|
||||||
|
and some valves.'''
|
||||||
|
Node('MLZ_ccr',
|
||||||
|
desc,
|
||||||
|
'tcp://10767',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('automatik',
|
||||||
|
'frappy_mlz.entangle.NamedDigitalOutput',
|
||||||
|
'controls the (simple) pressure regulation\n'
|
||||||
|
'\n'
|
||||||
|
'selects between off, regulate on p1 or regulate on p2 sensor',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/plc/_automatik',
|
||||||
|
mapping={'Off':0,'p1':1,'p2':2},
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('compressor',
|
||||||
|
'frappy_mlz.entangle.NamedDigitalOutput',
|
||||||
|
'control the compressor (on/off)',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/plc/_cooler_onoff',
|
||||||
|
mapping={'Off':0,'On':1},
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('gas',
|
||||||
|
'frappy_mlz.entangle.NamedDigitalOutput',
|
||||||
|
'control the gas inlet into the ccr (on/off)\n'
|
||||||
|
'\n'
|
||||||
|
'note: this switches off automatically after 15 min.\n'
|
||||||
|
'note: activation de-activates the vacuum inlet\n'
|
||||||
|
'note: if the pressure regulation is active, it enslave this device',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/plc/_gas_onoff',
|
||||||
|
mapping={'Off':0,'On':1},
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('vacuum',
|
||||||
|
'frappy_mlz.entangle.NamedDigitalOutput',
|
||||||
|
'control the vacuum inlet into the ccr (on/off)\n'
|
||||||
|
'\n'
|
||||||
|
'note: activation de-activates the gas inlet\n'
|
||||||
|
'note: if the pressure regulation is active, it enslave this device',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/plc/_vacuum_onoff',
|
||||||
|
mapping={'Off':0,'On':1},
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('p1',
|
||||||
|
'frappy_mlz.entangle.AnalogInput',
|
||||||
|
'pressure sensor 1 (linear scale)',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/plc/_p1',
|
||||||
|
value = Param(unit='mbar')
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('p2',
|
||||||
|
'frappy_mlz.entangle.AnalogInput',
|
||||||
|
'pressure sensor 2 (selectable curve)',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/plc/_p2',
|
||||||
|
value = Param(unit='mbar'),
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('curve_p2',
|
||||||
|
'frappy_mlz.entangle.NamedDigitalInput',
|
||||||
|
'calibration curve for pressure sensor 2',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/plc/_curve',
|
||||||
|
value = 0,
|
||||||
|
mapping = {'0-10V':0, '0-1000mbar':1, '1-9V to 0-1 mbar':2,
|
||||||
|
'DI200':3, 'DI2000':4, 'TTR100':7, 'PTR90':8,
|
||||||
|
'PTR225/237':9, 'ITR90':10, 'ITR100-D':11,
|
||||||
|
'ITR100-2':12, 'ITR100-3':13, 'ITR100-4':14,
|
||||||
|
'ITR100-5':15, 'ITR100-6':16, 'ITR100-7':17,
|
||||||
|
'ITR100-8':18, 'ITR100-9':19, 'ITR100-A':20,
|
||||||
|
'CMR361':21, 'CMR362':22, 'CMR363':23,
|
||||||
|
'CMR364':24, 'CMR365':25},
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_tube_regulation',
|
||||||
|
'frappy_mlz.entangle.TemperatureController',
|
||||||
|
'regulation of tube temperature',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/tube/control1',
|
||||||
|
value = Param(unit = 'K'),
|
||||||
|
heateroutput = 0,
|
||||||
|
ramp = 6,
|
||||||
|
speed = 0.1,
|
||||||
|
setpoint = 0,
|
||||||
|
pid = (40, 10, 1),
|
||||||
|
p = 40,
|
||||||
|
i = 10,
|
||||||
|
d = 1,
|
||||||
|
abslimits = (0, 500),
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_stick_regulation',
|
||||||
|
'frappy_mlz.entangle.TemperatureController',
|
||||||
|
'regualtion of stick temperature',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/stick/control2',
|
||||||
|
value = Param(unit = 'K'),
|
||||||
|
heateroutput = 0,
|
||||||
|
ramp = 6,
|
||||||
|
speed = 0.1,
|
||||||
|
setpoint = 0,
|
||||||
|
pid = (40, 10, 1),
|
||||||
|
p = 40,
|
||||||
|
i = 10,
|
||||||
|
d = 1,
|
||||||
|
abslimits = (0, 500),
|
||||||
|
)
|
||||||
|
Mod('T_sample',
|
||||||
|
'frappy_mlz.entangle.Sensor',
|
||||||
|
'sample temperature',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/sample/sensora',
|
||||||
|
value = Param(unit = 'K'),
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_stick',
|
||||||
|
'frappy_mlz.entangle.Sensor',
|
||||||
|
'temperature at bottom of sample stick',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/stick/sensorb',
|
||||||
|
value = Param(unit = 'K'),
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_coldhead',
|
||||||
|
'frappy_mlz.entangle.Sensor',
|
||||||
|
'temperature at coldhead',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/coldhead/sensorc',
|
||||||
|
value = Param(unit = 'K'),
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_tube',
|
||||||
|
'frappy_mlz.entangle.Sensor',
|
||||||
|
'temperature at thermal coupling tube <-> stick',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/tube/sensord',
|
||||||
|
value = Param(unit = 'K'),
|
||||||
|
)
|
||||||
|
|
||||||
|
# THIS IS A HACK: due to entangle (in controller)
|
||||||
|
Mod('T_tube_regulation_heaterrange',
|
||||||
|
'frappy_mlz.entangle.NamedDigitalOutput',
|
||||||
|
'heaterrange for tube regulation',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/tube/range1',
|
||||||
|
mapping={'Off':0,'Low':1,'Medium':2, 'High':3},
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_stick_regulation_heaterrange',
|
||||||
|
'frappy_mlz.entangle.NamedDigitalOutput',
|
||||||
|
'heaterrange for stick regulation',
|
||||||
|
tangodevice = 'tango://localhost:10000/box/stick/range2',
|
||||||
|
mapping={'Off':0,'Low':1,'Medium':2, 'High':3},
|
||||||
|
)
|
50
cfg/cryo.cfg
50
cfg/cryo.cfg
@ -1,50 +0,0 @@
|
|||||||
[node cryo_7]
|
|
||||||
# set SEC-node properties
|
|
||||||
description = short description
|
|
||||||
.
|
|
||||||
This is a very long description providing all the glory details in all the glory details about the stuff we are describing
|
|
||||||
|
|
||||||
|
|
||||||
[interface tcp]
|
|
||||||
type=tcp
|
|
||||||
bindto=0.0.0.0
|
|
||||||
bindport=10769
|
|
||||||
|
|
||||||
[module cryo]
|
|
||||||
# some (non-defaut) module properties
|
|
||||||
.group=very important/stuff
|
|
||||||
.description=A simulated cc cryostat with heat-load, specific heat for the sample
|
|
||||||
and a temperature dependend heat-link between sample and regulation.
|
|
||||||
|
|
||||||
# class of module:
|
|
||||||
class=secop_demo.cryo.Cryostat
|
|
||||||
|
|
||||||
# some parameters
|
|
||||||
jitter=0.1
|
|
||||||
T_start=10.0
|
|
||||||
target=10.0
|
|
||||||
looptime=1
|
|
||||||
ramp=6
|
|
||||||
maxpower=20.0
|
|
||||||
heater=4.1
|
|
||||||
p=40
|
|
||||||
i=10
|
|
||||||
d=2
|
|
||||||
mode=pid
|
|
||||||
tolerance=0.1
|
|
||||||
window=30
|
|
||||||
timeout=900
|
|
||||||
|
|
||||||
# some (non-default) parameter properties
|
|
||||||
pollinterval.export=False
|
|
||||||
|
|
||||||
# some parameter grouping
|
|
||||||
p.group=pid
|
|
||||||
i.group=pid
|
|
||||||
d.group=pid
|
|
||||||
|
|
||||||
value.unit=K
|
|
||||||
|
|
||||||
# test custom properties
|
|
||||||
value.test=customized value
|
|
||||||
|
|
35
cfg/cryo_cfg.py
Normal file
35
cfg/cryo_cfg.py
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#####################################################################
|
||||||
|
# Python version of frappy config
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
Node('cryo_7.frappy.demo',
|
||||||
|
'short description\n\n'
|
||||||
|
'This is a very long description providing all the gory details '
|
||||||
|
'about the stuff we are describing.',
|
||||||
|
'tcp://10769',
|
||||||
|
more="blub",
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cryo',
|
||||||
|
'frappy_demo.cryo.Cryostat',
|
||||||
|
'A simulated cc cryostat with heat-load, specific heat for the sample and a '
|
||||||
|
'temperature dependent heat-link between sample and regulation.',
|
||||||
|
group='very important/stuff',
|
||||||
|
jitter=0.1,
|
||||||
|
T_start=10.0,
|
||||||
|
target=10.0,
|
||||||
|
looptime=1,
|
||||||
|
ramp=6,
|
||||||
|
maxpower=20.0,
|
||||||
|
heater=4.1,
|
||||||
|
mode='pid',
|
||||||
|
tolerance=0.1,
|
||||||
|
window=30,
|
||||||
|
timeout=900,
|
||||||
|
p = Param(40, unit='%/K'), # in case 'default' is the first arg, we can omit 'default='
|
||||||
|
i = 10,
|
||||||
|
d = 2,
|
||||||
|
pid = Group('p', 'i', 'd'),
|
||||||
|
pollinterval = Param(export=False),
|
||||||
|
value = Param(unit = 'K', test = 'customized value'),
|
||||||
|
)
|
43
cfg/demo.cfg
43
cfg/demo.cfg
@ -1,43 +0,0 @@
|
|||||||
[node Equipment_ID_for_demonstration]
|
|
||||||
description = virtual modules to play around with
|
|
||||||
|
|
||||||
[interface tcp]
|
|
||||||
bindto=0.0.0.0
|
|
||||||
bindport=10767
|
|
||||||
|
|
||||||
[module heatswitch]
|
|
||||||
class=secop_demo.modules.Switch
|
|
||||||
switch_on_time=5
|
|
||||||
switch_off_time=10
|
|
||||||
.description="Heatswitch for `mf` device"
|
|
||||||
|
|
||||||
[module mf]
|
|
||||||
class=secop_demo.modules.MagneticField
|
|
||||||
heatswitch = heatswitch
|
|
||||||
.description="simulates some cryomagnet with persistent/non-persistent switching"
|
|
||||||
|
|
||||||
[module ts]
|
|
||||||
class=secop_demo.modules.SampleTemp
|
|
||||||
sensor = 'Q1329V7R3'
|
|
||||||
ramp = 4
|
|
||||||
target = 10
|
|
||||||
value = 10
|
|
||||||
.description = "some temperature"
|
|
||||||
|
|
||||||
[module tc1]
|
|
||||||
class=secop_demo.modules.CoilTemp
|
|
||||||
sensor="X34598T7"
|
|
||||||
.description = "some temperature"
|
|
||||||
|
|
||||||
[module tc2]
|
|
||||||
class=secop_demo.modules.CoilTemp
|
|
||||||
sensor="X39284Q8'
|
|
||||||
.description = "some temperature"
|
|
||||||
|
|
||||||
[module label]
|
|
||||||
class=secop_demo.modules.Label
|
|
||||||
system=Cryomagnet MX15
|
|
||||||
subdev_mf=mf
|
|
||||||
subdev_ts=ts
|
|
||||||
.description = "some label indicating the state of the magnet `mf`."
|
|
||||||
|
|
46
cfg/demo_cfg.py
Normal file
46
cfg/demo_cfg.py
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
Node('demo.frappy.demo',
|
||||||
|
'Basic demo server for frappy',
|
||||||
|
'tcp://10767',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('heatswitch',
|
||||||
|
'frappy_demo.modules.Switch',
|
||||||
|
'Heatswitch for `mf` device',
|
||||||
|
switch_on_time = 5,
|
||||||
|
switch_off_time = 10,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('mf',
|
||||||
|
'frappy_demo.modules.MagneticField',
|
||||||
|
'simulates some cryomagnet with persistent/non-persistent switching',
|
||||||
|
heatswitch = 'heatswitch',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ts',
|
||||||
|
'frappy_demo.modules.SampleTemp',
|
||||||
|
'some temperature',
|
||||||
|
sensor = 'Q1329V7R3',
|
||||||
|
ramp = 4,
|
||||||
|
target = 10,
|
||||||
|
value = 10,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tc1',
|
||||||
|
'frappy_demo.modules.CoilTemp',
|
||||||
|
'some temperature',
|
||||||
|
sensor = 'X34598T7',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tc2',
|
||||||
|
'frappy_demo.modules.CoilTemp',
|
||||||
|
'some temperature',
|
||||||
|
sensor = 'X39284Q8',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('label',
|
||||||
|
'frappy_demo.modules.Label',
|
||||||
|
'some label indicating the state of the magnet `mf`.',
|
||||||
|
system = 'Cryomagnet MX15',
|
||||||
|
mf = 'mf',
|
||||||
|
ts = 'ts',
|
||||||
|
)
|
9
cfg/develop/sea_cfg.py
Normal file
9
cfg/develop/sea_cfg.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
Node('comm.sea.psi.ch',
|
||||||
|
'sea client (communication only)',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('seaconn',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'a SEA connection',
|
||||||
|
visibility='expert',
|
||||||
|
)
|
11
cfg/develop/seadesc_cfg.py
Normal file
11
cfg/develop/seadesc_cfg.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# error creating module seaconn:
|
||||||
|
# missing sea port for seadesc
|
||||||
|
Node('comm.sea.psi.ch',
|
||||||
|
'sea client (tool for creating cfg)',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('seaconn',
|
||||||
|
'frappy_psi.sea.SeaConfigCreator',
|
||||||
|
'a SEA connection. will shut down after getting the description',
|
||||||
|
visibility=1,
|
||||||
|
)
|
231
cfg/dilsc_cfg.py
Normal file
231
cfg/dilsc_cfg.py
Normal file
@ -0,0 +1,231 @@
|
|||||||
|
Node('cfg/dilsc1.cfg',
|
||||||
|
'triton test',
|
||||||
|
interface='5000',
|
||||||
|
name='dilsc1',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('triton',
|
||||||
|
'frappy_psi.mercury.IO',
|
||||||
|
'connection to triton software',
|
||||||
|
uri='tcp://192.168.2.33:33576',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_mix',
|
||||||
|
'frappy_psi.triton.TemperatureSensor',
|
||||||
|
'mix. chamber temperature',
|
||||||
|
slot='T8',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_pt2head',
|
||||||
|
'frappy_psi.triton.TemperatureSensor',
|
||||||
|
'PTR2 head temperature',
|
||||||
|
slot='T1',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_pt2plate',
|
||||||
|
'frappy_psi.triton.TemperatureSensor',
|
||||||
|
'PTR2 plate temperature',
|
||||||
|
slot='T2',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_still',
|
||||||
|
'frappy_psi.triton.TemperatureSensor',
|
||||||
|
'still temperature',
|
||||||
|
slot='T3',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('htr_still',
|
||||||
|
'frappy_psi.triton.HeaterOutput',
|
||||||
|
'still heater',
|
||||||
|
slot='H2',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_coldpl',
|
||||||
|
'frappy_psi.triton.TemperatureSensor',
|
||||||
|
'cold plate temperature',
|
||||||
|
slot='T4',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_mixcx',
|
||||||
|
'frappy_psi.triton.TemperatureSensor',
|
||||||
|
'mix. chamber cernox',
|
||||||
|
slot='T5',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_pt1head',
|
||||||
|
'frappy_psi.triton.TemperatureSensor',
|
||||||
|
'PTR1 head temperature',
|
||||||
|
slot='T6',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_pt1plate',
|
||||||
|
'frappy_psi.triton.TemperatureSensor',
|
||||||
|
'PTR1 plate temperature',
|
||||||
|
slot='T7',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_pucksensor',
|
||||||
|
'frappy_psi.triton.TemperatureLoop',
|
||||||
|
'puck sensor temperature',
|
||||||
|
output_module='htr_pucksensor',
|
||||||
|
slot='TA',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('htr_pucksensor',
|
||||||
|
'frappy_psi.triton.HeaterOutputWithRange',
|
||||||
|
'mix. chamber heater',
|
||||||
|
slot='H1,TA',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_magnet',
|
||||||
|
'frappy_psi.triton.TemperatureSensor',
|
||||||
|
'magnet temperature',
|
||||||
|
slot='T13',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('action',
|
||||||
|
'frappy_psi.triton.Action',
|
||||||
|
'higher level scripts',
|
||||||
|
io='triton',
|
||||||
|
slot='DR',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('p_dump',
|
||||||
|
'frappy_psi.mercury.PressureSensor',
|
||||||
|
'dump pressure',
|
||||||
|
slot='P1',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('p_cond',
|
||||||
|
'frappy_psi.mercury.PressureSensor',
|
||||||
|
'condenser pressure',
|
||||||
|
slot='P2',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('p_still',
|
||||||
|
'frappy_psi.mercury.PressureSensor',
|
||||||
|
'still pressure',
|
||||||
|
slot='P3',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('p_fore',
|
||||||
|
'frappy_psi.mercury.PressureSensor',
|
||||||
|
'pressure on the pump side',
|
||||||
|
slot='P5',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('p_back',
|
||||||
|
'frappy_psi.mercury.PressureSensor',
|
||||||
|
'pressure on the back side of the pump',
|
||||||
|
slot='P4',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('p_ovc',
|
||||||
|
'frappy_psi.mercury.PressureSensor',
|
||||||
|
'outer vacuum pressure',
|
||||||
|
slot='P6',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('V1',
|
||||||
|
'frappy_psi.triton.Valve',
|
||||||
|
'valve V1',
|
||||||
|
slot='V1',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('V2',
|
||||||
|
'frappy_psi.triton.Valve',
|
||||||
|
'valve V2',
|
||||||
|
slot='V2',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('V4',
|
||||||
|
'frappy_psi.triton.Valve',
|
||||||
|
'valve V4',
|
||||||
|
slot='V4',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('V5',
|
||||||
|
'frappy_psi.triton.Valve',
|
||||||
|
'valve V5',
|
||||||
|
slot='V5',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('V9',
|
||||||
|
'frappy_psi.triton.Valve',
|
||||||
|
'valve V9',
|
||||||
|
slot='V9',
|
||||||
|
io='triton',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ips',
|
||||||
|
'frappy_psi.mercury.IO',
|
||||||
|
'IPS for magnet',
|
||||||
|
uri='192.168.127.254:3001',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('mf',
|
||||||
|
'frappy_psi.dilsc.VectorField',
|
||||||
|
'vector field',
|
||||||
|
x='mfx',
|
||||||
|
y='mfy',
|
||||||
|
z='mfz',
|
||||||
|
sphere_radius=0.6,
|
||||||
|
cylinders=((0.23, 5.2), (0.45, 0.8)),
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('mfx',
|
||||||
|
'frappy_psi.ips_mercury.SimpleField',
|
||||||
|
'magnetic field, x-axis',
|
||||||
|
slot='GRPX',
|
||||||
|
io='ips',
|
||||||
|
tolerance=0.0001,
|
||||||
|
wait_stable_field=0.0,
|
||||||
|
nunits=2,
|
||||||
|
target=Param(max=0.6),
|
||||||
|
ramp=0.225,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('mfy',
|
||||||
|
'frappy_psi.ips_mercury.SimpleField',
|
||||||
|
'magnetic field, y axis',
|
||||||
|
slot='GRPY',
|
||||||
|
io='ips',
|
||||||
|
tolerance=0.0001,
|
||||||
|
wait_stable_field=0.0,
|
||||||
|
nunits=2,
|
||||||
|
target=Param(max=0.6),
|
||||||
|
ramp=0.225,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('mfz',
|
||||||
|
'frappy_psi.ips_mercury.Field',
|
||||||
|
'magnetic field, z-axis',
|
||||||
|
slot='GRPZ',
|
||||||
|
io='ips',
|
||||||
|
tolerance=0.0001,
|
||||||
|
target=Param(max=5.2),
|
||||||
|
mode='DRIVEN',
|
||||||
|
ramp=0.52,
|
||||||
|
)
|
12
cfg/dpm_cfg.py
Normal file
12
cfg/dpm_cfg.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
Node('dpm.psi.ch',
|
||||||
|
'DPM driver for pressure cell',
|
||||||
|
interface='tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('force',
|
||||||
|
'frappy_psi.dpm.DPM3',
|
||||||
|
'DPM driver to read out the transducer value, write and read the offset and scale factor',
|
||||||
|
uri='serial:///dev/ttyUSB1',
|
||||||
|
digits=2,
|
||||||
|
scale_factor=0.0156,
|
||||||
|
)
|
27
cfg/drums_cfg.py
Normal file
27
cfg/drums_cfg.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
Node('relais.psi.ch',
|
||||||
|
'relais test',
|
||||||
|
'tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('rl',
|
||||||
|
'frappy_psi.ionopimax.DigitalOutput',
|
||||||
|
'left relais',
|
||||||
|
addr = 'o1',
|
||||||
|
value = 0, # start with relais off
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('rr',
|
||||||
|
'frappy_psi.ionopimax.DigitalOutput',
|
||||||
|
'right relais',
|
||||||
|
addr = 'o2',
|
||||||
|
value = 0, # start with relais off
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('drummer',
|
||||||
|
'frappy_psi.drums.Drums',
|
||||||
|
'drummer',
|
||||||
|
target = 150,
|
||||||
|
pattern='l2L2rl1R1L2',
|
||||||
|
left='rl',
|
||||||
|
right='rr',
|
||||||
|
)
|
@ -1,50 +0,0 @@
|
|||||||
[node see_demo_equipment]
|
|
||||||
description=Do not use, it needs to be rewritten....
|
|
||||||
|
|
||||||
[interface testing]
|
|
||||||
type=tcp
|
|
||||||
bindto=0.0.0.0
|
|
||||||
bindport=10767
|
|
||||||
|
|
||||||
[module tc1]
|
|
||||||
class=secop_demo.modules.CoilTemp
|
|
||||||
sensor="X34598T7"
|
|
||||||
|
|
||||||
[module tc2]
|
|
||||||
class=secop_demo.modules.CoilTemp
|
|
||||||
sensor="X39284Q8'
|
|
||||||
|
|
||||||
|
|
||||||
[module sensor1]
|
|
||||||
class=secop_ess.epics.EpicsReadable
|
|
||||||
epics_version="v4"
|
|
||||||
.group="Lakeshore336"
|
|
||||||
value_pv="DEV:KRDG1"
|
|
||||||
|
|
||||||
|
|
||||||
[module loop1]
|
|
||||||
class=secop_ess.epics.EpicsTempCtrl
|
|
||||||
epics_version="v4"
|
|
||||||
.group="Lakeshore336"
|
|
||||||
|
|
||||||
value_pv="DEV:KRDG1"
|
|
||||||
target_pv="DEV:SETP_S1"
|
|
||||||
heaterrange_pv="DEV:RANGE_S1"
|
|
||||||
|
|
||||||
|
|
||||||
[module sensor2]
|
|
||||||
class=secop_ess.epics.EpicsReadable
|
|
||||||
epics_version="v4"
|
|
||||||
.group="Lakeshore336"
|
|
||||||
value_pv="DEV:KRDG2"
|
|
||||||
|
|
||||||
|
|
||||||
[module loop2]
|
|
||||||
class=secop_ess.epics.EpicsTempCtrl
|
|
||||||
epics_version="v4"
|
|
||||||
.group="Lakeshore336"
|
|
||||||
|
|
||||||
value_pv="DEV:KRDG2"
|
|
||||||
target_pv="DEV:SETP_S2"
|
|
||||||
heaterrange_pv="DEV:RANGE_S2"
|
|
||||||
|
|
36
cfg/epics_cfg.py
Normal file
36
cfg/epics_cfg.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
Node('see_demo_equipment',
|
||||||
|
'Do not use, it needs to be rewritten....',
|
||||||
|
'tcp://10767',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tc1',
|
||||||
|
'frappy_demo.modules.CoilTemp',
|
||||||
|
'',
|
||||||
|
sensor="X34598T7",
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tc2',
|
||||||
|
'frappy_demo.modules.CoilTemp',
|
||||||
|
'',
|
||||||
|
sensor="X39284Q8",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
for i in [1,2]:
|
||||||
|
Mod('sensor%d' % i,
|
||||||
|
'frappy_ess.epics.EpicsReadable',
|
||||||
|
'',
|
||||||
|
epics_version="v4",
|
||||||
|
value_pv="DEV:KRDG%d" % i,
|
||||||
|
group="Lakeshore336",
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('loop%d' % i,
|
||||||
|
'frappy_ess.epics.EpicsTempCtrl',
|
||||||
|
'',
|
||||||
|
epics_version="v4",
|
||||||
|
group="Lakeshore336",
|
||||||
|
value_pv="DEV:KRDG%d" % i,
|
||||||
|
target_pv="DEV:SETP_S%d" % i,
|
||||||
|
heaterrange_pv="DEV:RANGE_S%d" % i,
|
||||||
|
)
|
52
cfg/flowsas_cfg.py
Normal file
52
cfg/flowsas_cfg.py
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
Node('flowsas.psi.ch',
|
||||||
|
'flowsas test motors',
|
||||||
|
'tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
#Mod('mot_io',
|
||||||
|
# 'frappy_psi.phytron.PhytronIO',
|
||||||
|
# 'io for motor control',
|
||||||
|
# uri = 'serial:///dev/ttyUSB0',
|
||||||
|
# )
|
||||||
|
|
||||||
|
#Mod('hmot',
|
||||||
|
# 'frappy_psi.phytron.Motor',
|
||||||
|
# 'horizontal axis',
|
||||||
|
# axis = 'X',
|
||||||
|
# io = 'mot_io',
|
||||||
|
# encoder_mode= 'NO',
|
||||||
|
# )
|
||||||
|
|
||||||
|
#Mod('vmot',
|
||||||
|
# 'frappy_psi.phytron.Motor',
|
||||||
|
# 'vertical axis',
|
||||||
|
# axis = 'Y',
|
||||||
|
# io = 'mot_io',
|
||||||
|
# encoder_mode= 'NO',
|
||||||
|
# )
|
||||||
|
|
||||||
|
Mod('syr_io',
|
||||||
|
'frappy_psi.cetoni_pump.LabCannBus',
|
||||||
|
'Module for bus',
|
||||||
|
deviceconfig = "/home/l_samenv/frappy/cetoniSDK/CETONI_SDK_Raspi_64bit_v20220627/config/dual_pumps",
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('syr1',
|
||||||
|
'frappy_psi.cetoni_pump.SyringePump',
|
||||||
|
'First syringe pump',
|
||||||
|
io='syr_io',
|
||||||
|
pump_name = "Nemesys_S_1_Pump",
|
||||||
|
valve_name = "Nemesys_S_1_Valve",
|
||||||
|
inner_diameter_set = 10,
|
||||||
|
piston_stroke_set = 60,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('syr2',
|
||||||
|
'frappy_psi.cetoni_pump.SyringePump',
|
||||||
|
'Second syringe pump',
|
||||||
|
io='syr_io',
|
||||||
|
pump_name = "Nemesys_S_2_Pump",
|
||||||
|
valve_name = "Nemesys_S_2_Valve",
|
||||||
|
inner_diameter_set = 1,
|
||||||
|
piston_stroke_set = 60,
|
||||||
|
)
|
7
cfg/generalConfig.cfg
Normal file
7
cfg/generalConfig.cfg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[FRAPPY]
|
||||||
|
# general config for running in git repo
|
||||||
|
logdir = ./log
|
||||||
|
piddir = ./pid
|
||||||
|
confdir = ./cfg
|
||||||
|
comlog = True
|
||||||
|
|
16
cfg/lockin70_cfg.py
Normal file
16
cfg/lockin70_cfg.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
Node('lockin70test.psi.ch',
|
||||||
|
'lockin70 test',
|
||||||
|
'tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('io',
|
||||||
|
'frappy_psi.SR.SR_IO',
|
||||||
|
'lockin communication',
|
||||||
|
uri='10105266.psi.ch:50000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('XY',
|
||||||
|
'frappy_psi.SR.XY70',
|
||||||
|
'XY channels',
|
||||||
|
io='io',
|
||||||
|
)
|
16
cfg/lockin830_cfg.py
Normal file
16
cfg/lockin830_cfg.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
Node('lockin830test.psi.ch',
|
||||||
|
'lockin830 test',
|
||||||
|
'tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('io',
|
||||||
|
'frappy_psi.SR830.SR830_IO',
|
||||||
|
'lockin communication',
|
||||||
|
uri='tcp://linse-976d-ts:3002',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('XY',
|
||||||
|
'frappy_psi.SR830.XY',
|
||||||
|
'XY channels',
|
||||||
|
io='io',
|
||||||
|
)
|
16
cfg/lockin_cfg.py
Normal file
16
cfg/lockin_cfg.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
Node('lockintest.psi.ch',
|
||||||
|
'lockin test',
|
||||||
|
'tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('io',
|
||||||
|
'frappy_psi.SR.SR_IO',
|
||||||
|
'lockin communication',
|
||||||
|
uri='10105266.psi.ch:50000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('XY',
|
||||||
|
'frappy_psi.SR.XY',
|
||||||
|
'XY channels',
|
||||||
|
io='io',
|
||||||
|
)
|
20
cfg/ls240_cfg.py
Normal file
20
cfg/ls240_cfg.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# error importing secop.bytesio.BytesIO
|
||||||
|
# module T, attached io: Module 'T_io' does not exist on this SEC-Node!
|
||||||
|
# error initializing T: AttributeError("'NoneType' object has no attribute 'polledModules'")
|
||||||
|
Node('ls240.psi.ch',
|
||||||
|
'ls240 test',
|
||||||
|
interface='tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T',
|
||||||
|
'frappy_psi.ls240.Ls240',
|
||||||
|
'temperature on uniax stick',
|
||||||
|
io='T_io',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_io',
|
||||||
|
'frappy.bytesio.BytesIO',
|
||||||
|
'IO device for LS240',
|
||||||
|
uri='serial:///dev/ttyUSB0?baudrate=9600+parity=EVEN',
|
||||||
|
timeout=0.2,
|
||||||
|
)
|
23
cfg/ls336_cfg.py
Normal file
23
cfg/ls336_cfg.py
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
from os import environ
|
||||||
|
|
||||||
|
# either change the uri or set the environment variable 'LS_URI'
|
||||||
|
lakeshore_uri = environ.get('LS_URI', 'tcp://<host>:7777')
|
||||||
|
|
||||||
|
Node('example_cryo.psi.ch', # a globally unique identification
|
||||||
|
'this is an example cryostat for the Frappy tutorial', # describes the node
|
||||||
|
interface='tcp://10767') # you might choose any port number > 1024
|
||||||
|
Mod('io', # the name of the module
|
||||||
|
'frappy_demo.lakeshore.LakeshoreIO', # the class used for communication
|
||||||
|
'communication to main controller', # a description
|
||||||
|
uri=lakeshore_uri, # the serial connection
|
||||||
|
)
|
||||||
|
Mod('T',
|
||||||
|
'frappy_demo.lakeshore.TemperatureLoop',
|
||||||
|
'Sample Temperature',
|
||||||
|
io='io',
|
||||||
|
channel='A', # the channel on the LakeShore for this module
|
||||||
|
loop=1, # the loop to be used
|
||||||
|
value=Param(max=470), # set the maximum expected T
|
||||||
|
target=Param(max=420), # set the maximum allowed target T
|
||||||
|
heater_range=3, # 5 for model 350
|
||||||
|
)
|
25
cfg/ls340_cfg.py
Normal file
25
cfg/ls340_cfg.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
Node('ls340test.psi.ch',
|
||||||
|
'ls340 test',
|
||||||
|
'tcp://5000'
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('io',
|
||||||
|
'frappy_psi.lakeshore.IO340',
|
||||||
|
'communication to ls340',
|
||||||
|
uri='tcp://localhost:7777'
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('dev',
|
||||||
|
'frappy_psi.lakeshore.Device340',
|
||||||
|
'device for calcurve',
|
||||||
|
io='io',
|
||||||
|
curve_handling=True,
|
||||||
|
)
|
||||||
|
Mod('T',
|
||||||
|
'frappy_psi.lakeshore.Sensor340',
|
||||||
|
'sample temperature',
|
||||||
|
# output_module='Heater',
|
||||||
|
device='dev',
|
||||||
|
channel='A',
|
||||||
|
calcurve='x29746',
|
||||||
|
)
|
@ -1,25 +0,0 @@
|
|||||||
[NODE]
|
|
||||||
id = ls370res.psi.ch
|
|
||||||
description = Lsc370 Test
|
|
||||||
|
|
||||||
[INTERFACE]
|
|
||||||
uri = tcp://5000
|
|
||||||
|
|
||||||
[lsmain_iodev]
|
|
||||||
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:
|
|
||||||
iodev = lsmain_iodev
|
|
25
cfg/ls370res_cfg.py
Normal file
25
cfg/ls370res_cfg.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
Node('ls370res.psi.ch',
|
||||||
|
'Lsc370 Test',
|
||||||
|
interface='tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lsmain_io',
|
||||||
|
'frappy_psi.ls370res.StringIO',
|
||||||
|
'the communication device',
|
||||||
|
uri='lollypop-ts:3001',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lsmain',
|
||||||
|
'frappy_psi.ls370res.Main',
|
||||||
|
'main control of Lsc controller',
|
||||||
|
uri='lollypop-ts:3001',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('res',
|
||||||
|
'frappy_psi.ls370res.ResChannel',
|
||||||
|
'resistivity',
|
||||||
|
iexc='1mA',
|
||||||
|
channel=5,
|
||||||
|
main='lsmain',
|
||||||
|
io='lsmain_io',
|
||||||
|
)
|
@ -1,24 +0,0 @@
|
|||||||
[node LscSIM.psi.ch]
|
|
||||||
description = Lsc Simulation at PSI
|
|
||||||
|
|
||||||
[interface tcp]
|
|
||||||
type = tcp
|
|
||||||
bindto = 0.0.0.0
|
|
||||||
bindport = 5000
|
|
||||||
|
|
||||||
[module res]
|
|
||||||
class = secop_psi.ls370res.ResChannel
|
|
||||||
.channel = 3
|
|
||||||
.description = resistivity
|
|
||||||
.main = lsmain
|
|
||||||
.iodev = lscom
|
|
||||||
|
|
||||||
[module lsmain]
|
|
||||||
class = secop_psi.ls370res.Main
|
|
||||||
.description = main control of Lsc controller
|
|
||||||
.iodev = lscom
|
|
||||||
|
|
||||||
[module lscom]
|
|
||||||
class = secop_psi.ls370sim.Ls370Sim
|
|
||||||
.description = simulated serial communicator to a LS 370
|
|
||||||
.visibility = 3
|
|
30
cfg/ls370sim_cfg.py
Normal file
30
cfg/ls370sim_cfg.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
Node('LscSIM.psi.ch',
|
||||||
|
'Lsc Simulation at PSI',
|
||||||
|
'tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lscom',
|
||||||
|
'frappy_psi.ls370sim.Ls370Sim',
|
||||||
|
'simulated serial communicator to a LS 370',
|
||||||
|
visibility = 3
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sw',
|
||||||
|
'frappy_psi.ls370res.Switcher',
|
||||||
|
'channel switcher for Lsc controller',
|
||||||
|
io = 'lscom',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('a',
|
||||||
|
'frappy_psi.ls370res.ResChannel',
|
||||||
|
'resistivity',
|
||||||
|
channel = 1,
|
||||||
|
switcher = 'sw',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('b',
|
||||||
|
'frappy_psi.ls370res.ResChannel',
|
||||||
|
'resistivity',
|
||||||
|
channel = 3,
|
||||||
|
switcher = 'sw',
|
||||||
|
)
|
@ -1,25 +0,0 @@
|
|||||||
[NODE]
|
|
||||||
id = ls370res.psi.ch
|
|
||||||
description = Lsc370 Test
|
|
||||||
|
|
||||||
[INTERFACE]
|
|
||||||
uri = tcp://5000
|
|
||||||
|
|
||||||
[lsmain_iodev]
|
|
||||||
description = the communication device
|
|
||||||
class = secop_psi.ls370res.StringIO
|
|
||||||
uri = localhost:4567
|
|
||||||
|
|
||||||
[lsmain]
|
|
||||||
class = secop_psi.ls370res.Main
|
|
||||||
description = main control of Lsc controller
|
|
||||||
iodev = lsmain_iodev
|
|
||||||
|
|
||||||
[res]
|
|
||||||
class = secop_psi.ls370res.ResChannel
|
|
||||||
iexc = '1mA'
|
|
||||||
channel = 5
|
|
||||||
description = resistivity
|
|
||||||
main = lsmain
|
|
||||||
# the auto created iodev from lsmain:
|
|
||||||
iodev = lsmain_iodev
|
|
29
cfg/ls370test_cfg.py
Normal file
29
cfg/ls370test_cfg.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
Node('LscSIM.psi.ch',
|
||||||
|
'Lsc370 Test',
|
||||||
|
'tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('io',
|
||||||
|
'frappy_psi.ls370res.StringIO',
|
||||||
|
'io for Ls370',
|
||||||
|
uri = 'localhost:2089',
|
||||||
|
)
|
||||||
|
Mod('sw',
|
||||||
|
'frappy_psi.ls370res.Switcher',
|
||||||
|
'channel switcher',
|
||||||
|
io = 'io',
|
||||||
|
)
|
||||||
|
Mod('res1',
|
||||||
|
'frappy_psi.ls370res.ResChannel',
|
||||||
|
'resistivity chan 1',
|
||||||
|
vexc = '2mV',
|
||||||
|
channel = 1,
|
||||||
|
switcher = 'sw',
|
||||||
|
)
|
||||||
|
Mod('res2',
|
||||||
|
'frappy_psi.ls370res.ResChannel',
|
||||||
|
'resistivity chn 3',
|
||||||
|
vexc = '2mV',
|
||||||
|
channel = 3,
|
||||||
|
switcher = 'sw',
|
||||||
|
)
|
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
|
17
cfg/main/ccr2_cfg.py
Normal file
17
cfg/main/ccr2_cfg.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
Node('ccr2.config.sea.psi.ch',
|
||||||
|
'sumitomo 4 K closed cycle refrigerator (FOCUS)',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'SEA connection to main',
|
||||||
|
config='ccr2.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
meaning=['temperature', 20],
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
)
|
24
cfg/main/ccr2ht_cfg.py
Normal file
24
cfg/main/ccr2ht_cfg.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
Node('ccr2ht.config.sea.psi.ch',
|
||||||
|
'sumitomo 4 K closed cycle refrigerator with hot stage (FOCUS)',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main SEA connection',
|
||||||
|
config='ccr2ht.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature', 20],
|
||||||
|
sea_object='tt',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tcoldfinger',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['tk'],
|
||||||
|
)
|
17
cfg/main/ccr3_cfg.py
Normal file
17
cfg/main/ccr3_cfg.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
Node('ccr3.config.sea.psi.ch',
|
||||||
|
'4 K closed cycle cryostat (ZEBRA)',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for ccr3.config',
|
||||||
|
config='ccr3.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature', 20],
|
||||||
|
sea_object='tt',
|
||||||
|
)
|
40
cfg/main/ccrpe_cfg.py
Normal file
40
cfg/main/ccrpe_cfg.py
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
Node('ccrpe.config.sea.psi.ch',
|
||||||
|
'''4 K closed cycle cryostat (PE cell)''',
|
||||||
|
)
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for ccrpe.config',
|
||||||
|
config = 'ccrpe.config',
|
||||||
|
service = 'main',
|
||||||
|
)
|
||||||
|
Mod('ts',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature', 20],
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['ts', 'set'],
|
||||||
|
)
|
||||||
|
Mod('tm',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['ts'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('te',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['te'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('warmup',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'warmup',
|
||||||
|
)
|
||||||
|
Mod('p',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'p',
|
||||||
|
)
|
38
cfg/main/ccrpe_lowT_cfg.py
Normal file
38
cfg/main/ccrpe_lowT_cfg.py
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
Node('cfg/main/ccrpe_lowT.cfg',
|
||||||
|
'4 K closed cycle cryostat (PE cell)',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for ccrpe_lowT.config',
|
||||||
|
config='ccrpe_lowT.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ts',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature', 20],
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['ts', 'set'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tm',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['tm'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('te',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['te'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('warmup',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='warmup',
|
||||||
|
)
|
49
cfg/main/cryosim_cfg.py
Normal file
49
cfg/main/cryosim_cfg.py
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
Node('cyrosim.psi.ch',
|
||||||
|
'cryo simulation (similar ppms simulation)',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.ppms.Temp',
|
||||||
|
'main temperature',
|
||||||
|
meaning=('temperature_regulation', 10),
|
||||||
|
ramp=20.0,
|
||||||
|
io='ppms',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lev',
|
||||||
|
'frappy_psi.ppms.Level',
|
||||||
|
'helium level',
|
||||||
|
io='ppms',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ts',
|
||||||
|
'frappy_psi.ppms.UserChannel',
|
||||||
|
'sample temperature',
|
||||||
|
enabled=True,
|
||||||
|
linkenable='tv',
|
||||||
|
value=Param(
|
||||||
|
unit='K',
|
||||||
|
),
|
||||||
|
meaning=('temperature', 10),
|
||||||
|
io='ppms',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tv',
|
||||||
|
'frappy_psi.ppms.UserChannel',
|
||||||
|
'exchanger temperature',
|
||||||
|
enabled=True,
|
||||||
|
linkenable='ts',
|
||||||
|
value=Param(
|
||||||
|
unit='K',
|
||||||
|
),
|
||||||
|
io='ppms',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ppms',
|
||||||
|
'frappy_psi.ppms.Main',
|
||||||
|
'the main and poller module',
|
||||||
|
class_id='QD.MULTIVU.PPMS.1',
|
||||||
|
visibility='expert',
|
||||||
|
pollinterval=2.0,
|
||||||
|
export=False,
|
||||||
|
)
|
17
cfg/main/cti5_cfg.py
Normal file
17
cfg/main/cti5_cfg.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
Node('cti5.config.sea.psi.ch',
|
||||||
|
'15 K closed cycle cryostat',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for cti5.config',
|
||||||
|
config='cti5.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature', 20],
|
||||||
|
sea_object='tt',
|
||||||
|
)
|
17
cfg/main/cti7_cfg.py
Normal file
17
cfg/main/cti7_cfg.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
Node('cti7.config.sea.psi.ch',
|
||||||
|
'30 K - 475 K closed cycle cryostat',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for cti7.config',
|
||||||
|
config='cti7.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature', 20],
|
||||||
|
sea_object='tt',
|
||||||
|
)
|
24
cfg/main/cti7ht_cfg.py
Normal file
24
cfg/main/cti7ht_cfg.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
Node('cti7ht.config.sea.psi.ch',
|
||||||
|
'30 K - 475 K closed cycle cryostat with hot stagge',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for cti7ht.config',
|
||||||
|
config='cti7ht.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
meaning=['temperature', 20],
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('th',
|
||||||
|
'frappy_psi.sea.SeaReadable', 'CTI cold finger temperature',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths = ['te'],
|
||||||
|
)
|
16
cfg/main/eurotherm_cfg.py
Normal file
16
cfg/main/eurotherm_cfg.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
Node('eurotherm.config.sea.psi.ch',
|
||||||
|
'Eurotherm controller',
|
||||||
|
)
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for haakeuro.config',
|
||||||
|
config = 'eurotherm.config',
|
||||||
|
service = 'main',
|
||||||
|
)
|
||||||
|
Mod('te',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
meaning=['temperature', 20],
|
||||||
|
sea_object = 'te',
|
||||||
|
meaning=('temperature', 11),
|
||||||
|
)
|
43
cfg/main/fftf_cfg.py
Normal file
43
cfg/main/fftf_cfg.py
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
Node('fftf.config.sea.psi.ch',
|
||||||
|
'thin film oven for AMOR',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for fftf.config',
|
||||||
|
config='fftf.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature', 20],
|
||||||
|
sea_object='tt',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('p',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='p',
|
||||||
|
extra_modules=['vacuumpump', 'gasflow', 'tlimit', 'tlimit_without_vacuum'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('gasflow',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='p.gasflow',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('vacuumpump',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='p',
|
||||||
|
rel_paths=['vacuumpump', 'tlimit', 'tlimit_without_vacuum'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('table',
|
||||||
|
'frappy_psi.sea.SeaModule', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='table',
|
||||||
|
)
|
226
cfg/main/flamemag_cfg.py
Normal file
226
cfg/main/flamemag_cfg.py
Normal file
@ -0,0 +1,226 @@
|
|||||||
|
Node('flamemag.psi.ch',
|
||||||
|
'flame magnet',
|
||||||
|
interface='tcp://5000',
|
||||||
|
)
|
||||||
|
|
||||||
|
sea_cfg = 'flamemag.config'
|
||||||
|
|
||||||
|
Mod('cio',
|
||||||
|
'frappy_psi.cryoltd.IO',
|
||||||
|
'IO to cryo ltd software',
|
||||||
|
uri='tcp://flamemag:3128',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('main',
|
||||||
|
'frappy_psi.cryoltd.Main',
|
||||||
|
'master module',
|
||||||
|
io='cio',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('B',
|
||||||
|
'frappy_psi.cryoltd.MainField',
|
||||||
|
'magnetic field',
|
||||||
|
channel='Main',
|
||||||
|
main='main',
|
||||||
|
constraint=80000.0,
|
||||||
|
target=Param(
|
||||||
|
max=35000.0,
|
||||||
|
),
|
||||||
|
mode='PERSISTENT',
|
||||||
|
hw_units='T',
|
||||||
|
A_to_G=285.73,
|
||||||
|
ramp=Param(
|
||||||
|
max=412.0,
|
||||||
|
),
|
||||||
|
overshoot={'o': 1.0, 't': 180.0},
|
||||||
|
degauss={'s': 500.0, 'd': 30.0, 'f': 5.0, 't': 120.0},
|
||||||
|
tolerance=5.0,
|
||||||
|
wait_switch_on = 30,
|
||||||
|
wait_switch_off = 30,
|
||||||
|
wait_stable_field=180.0,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('Bx',
|
||||||
|
'frappy_psi.cryoltd.ComponentField',
|
||||||
|
'magnetic field x component',
|
||||||
|
channel='VMX',
|
||||||
|
main='main',
|
||||||
|
check_against='B',
|
||||||
|
target=Param(
|
||||||
|
max=200.0,
|
||||||
|
),
|
||||||
|
hw_units='A',
|
||||||
|
A_to_G=4.134,
|
||||||
|
ramp=Param(
|
||||||
|
max=23.0,
|
||||||
|
),
|
||||||
|
tolerance=1.0,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('By',
|
||||||
|
'frappy_psi.cryoltd.ComponentField',
|
||||||
|
'magnetic field y component',
|
||||||
|
channel='VMY',
|
||||||
|
main='main',
|
||||||
|
check_against='B',
|
||||||
|
target=Param(
|
||||||
|
max=100.0,
|
||||||
|
),
|
||||||
|
hw_units='A',
|
||||||
|
A_to_G=4.1117,
|
||||||
|
ramp=Param(
|
||||||
|
max=22.9,
|
||||||
|
),
|
||||||
|
tolerance=1.0,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('Bz',
|
||||||
|
'frappy_psi.cryoltd.ComponentField',
|
||||||
|
'magnetic field z component',
|
||||||
|
channel='VMZ',
|
||||||
|
main='main',
|
||||||
|
check_against='B',
|
||||||
|
target=Param(
|
||||||
|
max=100.0,
|
||||||
|
),
|
||||||
|
hw_units='A',
|
||||||
|
A_to_G=5.74,
|
||||||
|
ramp=Param(
|
||||||
|
max=33.6,
|
||||||
|
),
|
||||||
|
tolerance=1.0,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('compressorA',
|
||||||
|
'frappy_psi.cryoltd.Compressor',
|
||||||
|
'compressor A',
|
||||||
|
channel='A',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('compressorB',
|
||||||
|
'frappy_psi.cryoltd.Compressor',
|
||||||
|
'compressor B',
|
||||||
|
channel='B',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_stage1_A',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='1st Stage A',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_stage2_A',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='2nd Stage A',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_stage1_B',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='1st Stage B',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_stage2_B',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='2nd Stage B',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_top_A',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='Inner Magnet A (Top)',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_bottom_A',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='Inner Magnet A (Bottom)',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_top_B',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='Inner Magnet B (Top)',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_bottom_B',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='Inner Magnet B (Bottom)',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_Z_shim',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='Z Shim Former',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_XY_shim',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='XY Shim Former',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_XY_vector',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='XY Vector Former',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_radiation_shield',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='Radiation Shield',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_persistent_joints',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='Persistent Joints',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_outer_A',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='Outer Magnet A',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_outer_B',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='Outer Magnet B',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_shim_B',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='Z Shim Former B',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_bore_shield',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='Bore Radiation Shield',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_XYZ_shim',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='XYZ Shim Plate',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_Z_shim_switch',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='Z Shim Switch',
|
||||||
|
main='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_main_switch',
|
||||||
|
'frappy_psi.cryoltd.Temperature', '',
|
||||||
|
channel='Main Coil Switch',
|
||||||
|
main='main',
|
||||||
|
)
|
61
cfg/main/flamp_cfg.py
Normal file
61
cfg/main/flamp_cfg.py
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
Node('flamp.config.sea.psi.ch',
|
||||||
|
'lamp oven control (from manuel knecht)',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for flamp.config',
|
||||||
|
config='flamp.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['.', 't1'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('t2',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['t2'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('current',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='current',
|
||||||
|
extra_modules=['i1,', 'i2,', 'i3,', 'i4'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('i1',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='current.i1',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('i2',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='current.i2',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('i3',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='current.i3',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('i4',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='current.i4',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('pv',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='pv',
|
||||||
|
)
|
24
cfg/main/fs_cfg.py
Normal file
24
cfg/main/fs_cfg.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
Node('fs.config.sea.psi.ch',
|
||||||
|
'small furnace',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for fs.config',
|
||||||
|
config='fs.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['tm'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ts',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['ts'],
|
||||||
|
)
|
25
cfg/main/ft_cfg.py
Normal file
25
cfg/main/ft_cfg.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
Node('ft.config.sea.psi.ch',
|
||||||
|
'FT tantalum furnace (1400 K)',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for fw.config',
|
||||||
|
config='ft.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ts',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
meaning=['temperature', 20],
|
||||||
|
rel_paths=['ts', 'set'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('t2',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['tm'],
|
||||||
|
)
|
25
cfg/main/fw_cfg.py
Normal file
25
cfg/main/fw_cfg.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
Node('ft.config.sea.psi.ch',
|
||||||
|
'FW ILL furnace with W5 thermnocouple (1800 K), old power rack',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for fw.config',
|
||||||
|
config='fw.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ts',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature', 20],
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['ts', 'set'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('t2',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['t2'],
|
||||||
|
)
|
21
cfg/main/haake_cfg.py
Normal file
21
cfg/main/haake_cfg.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
Node('haakeuro.config.sea.psi.ch',
|
||||||
|
'Haake thermostat + Eurotherm controller',
|
||||||
|
)
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for haakeuro.config',
|
||||||
|
config = 'haake.config',
|
||||||
|
service = 'main',
|
||||||
|
)
|
||||||
|
Mod('th',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
meaning = ('temperature', 10),
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'th',
|
||||||
|
extra_modules=['t2'],
|
||||||
|
)
|
||||||
|
Mod('ts',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='th.t2',
|
||||||
|
)
|
19
cfg/main/haakeuro_cfg.py
Normal file
19
cfg/main/haakeuro_cfg.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
Node('haakeuro.config.sea.psi.ch',
|
||||||
|
'Haake thermostat + Eurotherm controller',
|
||||||
|
)
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for haakeuro.config',
|
||||||
|
config = 'haakeuro.config',
|
||||||
|
service = 'main',
|
||||||
|
)
|
||||||
|
Mod('th',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'th',
|
||||||
|
)
|
||||||
|
Mod('te',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'te',
|
||||||
|
)
|
68
cfg/main/ill1_cfg.py
Normal file
68
cfg/main/ill1_cfg.py
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
Node('ill1.config.sea.psi.ch',
|
||||||
|
'orange cryostat with 50 mm sample space',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for ill1.config',
|
||||||
|
config='ill1.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature_regulation', 27],
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['tm', '.', 'set', 'dblctrl'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cc',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='cc',
|
||||||
|
extra_modules=['h'],
|
||||||
|
visibility=2,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lev',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='cc.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('nv',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='nv',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ln2fill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='ln2fill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hefill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hefill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hepump',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hepump',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hemot',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hemot',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('table',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='table',
|
||||||
|
)
|
68
cfg/main/ill2_cfg.py
Normal file
68
cfg/main/ill2_cfg.py
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
Node('ill2.config.sea.psi.ch',
|
||||||
|
'orange cryostat with 70 mm sample space',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for ill2.config',
|
||||||
|
config='ill2.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature_regulation', 27],
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['tm', '.', 'set', 'dblctrl'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cc',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='cc',
|
||||||
|
extra_modules=['h'],
|
||||||
|
visibility=2,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lev',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='cc.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('nv',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='nv',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ln2fill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='ln2fill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hefill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hefill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hepump',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hepump',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hemot',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hemot',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('table',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='table',
|
||||||
|
)
|
74
cfg/main/ill3_cfg.py
Normal file
74
cfg/main/ill3_cfg.py
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
Node('cfg/main/ill3.cfg',
|
||||||
|
'orange cryofurnace with 70 mm sample space (low T)',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for ill3.config',
|
||||||
|
config='ill3.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature_regulation', 27],
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['tm', '.', 'set', 'dblctrl'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cc',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='cc',
|
||||||
|
extra_modules=['h'],
|
||||||
|
visibility=2,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lev',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='cc.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('nv',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='nv',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ln2fill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='ln2fill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hefill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hefill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hepump',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hepump',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hemot',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hemot',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('nvflow',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='nvflow',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('table',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='table',
|
||||||
|
)
|
68
cfg/main/ill4_cfg.py
Normal file
68
cfg/main/ill4_cfg.py
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
Node('ill4.config.sea.psi.ch',
|
||||||
|
'orange cryostat with 70 mm sample space (FOCUS)',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for ill4.config',
|
||||||
|
config='ill4.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature_regulation', 27],
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['tm', '.', 'set', 'dblctrl'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cc',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='cc',
|
||||||
|
extra_modules=['h'],
|
||||||
|
visibility=2,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lev',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='cc.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('nv',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='nv',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ln2fill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='ln2fill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hefill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hefill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hepump',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hepump',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hemot',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hemot',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('table',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='table',
|
||||||
|
)
|
68
cfg/main/ill5_cfg.py
Normal file
68
cfg/main/ill5_cfg.py
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
Node('ill5.config.sea.psi.ch',
|
||||||
|
'orange cryostat with 100 mm sample space',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main SEA connection to ill5.config',
|
||||||
|
config='ill5.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature_regulation', 27],
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['tm', '.', 'set', 'dblctrl'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cc',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='cc',
|
||||||
|
extra_modules=['h'],
|
||||||
|
visibility=2,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lev',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='cc.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('nv',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='nv',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ln2fill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='ln2fill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hefill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hefill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hepump',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hepump',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hemot',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hemot',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('table',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='table',
|
||||||
|
)
|
104
cfg/main/ill5pgas5_cfg.py
Normal file
104
cfg/main/ill5pgas5_cfg.py
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
Node('ill5pgas5.config.sea.psi.ch',
|
||||||
|
'orange cryostat with 100 mm sample space and pgas5 pressure cell',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for ill5pgas5.config',
|
||||||
|
config='ill5pgas5.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature_regulation', 27],
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['tm', '.', 'set', 'dblctrl'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('pauto',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='pauto',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_capillary',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tc',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cc',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='cc',
|
||||||
|
extra_modules=['h'],
|
||||||
|
visibility=2,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lev',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='cc.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('nv',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='nv',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ln2fill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='ln2fill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hefill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hefill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hepump',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hepump',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hemot',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hemot',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('nvflow',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='nvflow',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('table',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='table',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('pccu',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='pccu',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('p',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='p',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('i1',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='i1',
|
||||||
|
)
|
134
cfg/main/jtccr_cfg.py
Normal file
134
cfg/main/jtccr_cfg.py
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
Node('jtccr.config.sea.psi.ch',
|
||||||
|
'CCR with JT-stage',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for jtccr.config',
|
||||||
|
config='jtccr.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature_regulation', 27],
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['tt', 'set'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('T_ccr',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['ccr'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('jtccr',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='jtccr',
|
||||||
|
extra_modules=['v1','v2','v3','v4','v5','v6','v7','v8','v9','v10','vm'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('v1',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='jtccr.v1',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('v2',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='jtccr.v2',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('v3',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='jtccr.v3',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('v4',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='jtccr.v4',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('v5',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='jtccr.v5',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('v6',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='jtccr.v6',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('v7',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='jtccr.v7',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('v8',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='jtccr.v8',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('v9',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='jtccr.v9',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('v10',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='jtccr.v10',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('vm',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
single_module='jtccr.vm',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('p1',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='p1',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('p2',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='p2',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('p3',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='p3',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('p4',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='p4',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('pressreg',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='pressreg',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('epc',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='epc',
|
||||||
|
)
|
79
cfg/main/ma02_cfg.py
Normal file
79
cfg/main/ma02_cfg.py
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
Node('ma02.config.sea.psi.ch',
|
||||||
|
'1.8 Tesla horizontal cryomagnet',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for ma02.config',
|
||||||
|
config='ma02.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature_regulation', 27],
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['tm', '.', 'set', 'dblctrl'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cc',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='cc',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('nv',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='nv',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ln2fill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='ln2fill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hepump',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hepump',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hemot',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hemot',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('mf',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='mf',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lev',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='lev',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hefill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hefill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('stick_io',
|
||||||
|
'frappy_psi.phytron.PhytronIO',
|
||||||
|
'dom motor IO',
|
||||||
|
uri='ma02-ts.psi.ch:3003',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('stickrot',
|
||||||
|
'frappy_psi.phytron.Motor',
|
||||||
|
'stick rotation, typically not used as omega',
|
||||||
|
io='stick_io',
|
||||||
|
encoder_mode='CHECK',
|
||||||
|
)
|
89
cfg/main/ma10_cfg.py
Normal file
89
cfg/main/ma10_cfg.py
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
Node('ma10.config.sea.psi.ch',
|
||||||
|
'10 Tesla vertical cryomagnet',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for ma10.config',
|
||||||
|
config='ma10.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature_regulation', 27],
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['tm', '.', 'set', 'dblctrl'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cc',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='cc',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('nv',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='nv',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hepump',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hepump',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hemot',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hemot',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('mf',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='mf',
|
||||||
|
rel_paths=['.', 'gen', 'ips'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lev',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='lev',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ln2fill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='ln2fill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hefill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hefill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('table',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='table',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('om_io',
|
||||||
|
'frappy_psi.phytron.PhytronIO',
|
||||||
|
'dom motor IO',
|
||||||
|
uri='ma10-ts.psi.ch:3004',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('om',
|
||||||
|
'frappy_psi.phytron.Motor',
|
||||||
|
'stick rotation, typically used for omega',
|
||||||
|
io='om_io',
|
||||||
|
target_min = -180,
|
||||||
|
target_max = 360,
|
||||||
|
encoder_mode='READ',
|
||||||
|
backlash=-1,
|
||||||
|
)
|
102
cfg/main/ma10heat_cfg.py
Normal file
102
cfg/main/ma10heat_cfg.py
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
Node('ma10.config.sea.psi.ch',
|
||||||
|
'10 Tesla vertical cryomagnet',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for ma10.config',
|
||||||
|
config='ma10heat.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ts',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature_regulation', 27],
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['ts', 'set']
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tm',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['tm', 'setvti']
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ts2',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['ts_2']
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cc',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='cc',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('nv',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='nv',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hepump',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hepump',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hemot',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hemot',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('mf',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='mf',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lev',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='lev',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ln2fill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='ln2fill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hefill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hefill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('table',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='table',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('om_io',
|
||||||
|
'frappy_psi.phytron.PhytronIO',
|
||||||
|
'dom motor IO',
|
||||||
|
uri='ma10-ts.psi.ch:3004',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('om',
|
||||||
|
'frappy_psi.phytron.Motor',
|
||||||
|
'stick rotation, typically used for omega',
|
||||||
|
io='om_io',
|
||||||
|
sign=-1,
|
||||||
|
target_min = -180,
|
||||||
|
target_max = 360,
|
||||||
|
encoder_mode='READ',
|
||||||
|
)
|
109
cfg/main/ma10high_t_cfg.py
Normal file
109
cfg/main/ma10high_t_cfg.py
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
Node('ma10.config.sea.psi.ch',
|
||||||
|
'10 Tesla vertical cryomagnet',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for ma10.config',
|
||||||
|
config='ma10high_t.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('th',
|
||||||
|
'frappy_psi.sea.SeaReadable',
|
||||||
|
'sample heater temperature',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature_regulation', 27],
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['ts', 'setsamp']
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tm',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['tm', '.', 'set']
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ts',
|
||||||
|
'frappy_psi.parmod.Converging',
|
||||||
|
'test for parmod',
|
||||||
|
unit='K',
|
||||||
|
read='th.value',
|
||||||
|
write='th.setsamp',
|
||||||
|
meaning=['temperature', 20],
|
||||||
|
settling_time=20,
|
||||||
|
tolerance=1,
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ts2',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['ts_2']
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cc',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='cc',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('nv',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='nv',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hepump',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hepump',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hemot',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hemot',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('mf',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='mf',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lev',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='lev',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ln2fill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='ln2fill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hefill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hefill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('om_io',
|
||||||
|
'frappy_psi.phytron.PhytronIO',
|
||||||
|
'dom motor IO',
|
||||||
|
uri='ma10-ts.psi.ch:3004',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('om',
|
||||||
|
'frappy_psi.phytron.Motor',
|
||||||
|
'stick rotation, typically used for omega',
|
||||||
|
io='om_io',
|
||||||
|
sign=-1,
|
||||||
|
target_min = -180,
|
||||||
|
target_max = 360,
|
||||||
|
encoder_mode='READ',
|
||||||
|
)
|
||||||
|
|
115
cfg/main/ma11_cfg.py
Normal file
115
cfg/main/ma11_cfg.py
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
Node('ma11.config.sea.psi.ch',
|
||||||
|
'MA11 cryomagnet for SANS',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for ma11.config',
|
||||||
|
config='ma11.config',
|
||||||
|
service='main',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
meaning=['temperature_regulation', 27],
|
||||||
|
sea_object='tt',
|
||||||
|
rel_paths=['tm', '.', 'set', 'dblctrl'],
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('cc',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='cc',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('nv',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='nv',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hepump',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hepump',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hemot',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hemot',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ln2fill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='ln2fill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('hefill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='hefill',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lev',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='lev',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('mf',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='mf',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('tcoil',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='tcoil',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('table',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='table',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('ccu2',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='ccu2',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lnv',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='lnv',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lpr',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='lpr',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('lambdawatch',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io='sea_main',
|
||||||
|
sea_object='lambdawatch',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('stick_io',
|
||||||
|
'frappy_psi.phytron.PhytronIO',
|
||||||
|
'dom motor IO',
|
||||||
|
uri='ma11-ts.psi.ch:3005',
|
||||||
|
)
|
||||||
|
|
||||||
|
Mod('stickrot',
|
||||||
|
'frappy_psi.phytron.Motor',
|
||||||
|
'stick rotation, typically not used as omega',
|
||||||
|
io='stick_io',
|
||||||
|
encoder_mode='NO',
|
||||||
|
)
|
98
cfg/main/ma15_cfg.py
Normal file
98
cfg/main/ma15_cfg.py
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
Node('ma15.config.sea.psi.ch',
|
||||||
|
'''14.9 Tesla superconducting cryomagnet''',
|
||||||
|
)
|
||||||
|
Mod('sea_main',
|
||||||
|
'frappy_psi.sea.SeaClient',
|
||||||
|
'main sea connection for ma15.config',
|
||||||
|
config = 'ma15.config',
|
||||||
|
service = 'main',
|
||||||
|
)
|
||||||
|
Mod('tt',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
meaning=['temperature_regulation', 27],
|
||||||
|
sea_object = 'tt',
|
||||||
|
rel_paths=['tm', '.', 'set', 'dblctrl'],
|
||||||
|
)
|
||||||
|
Mod('cc',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'cc',
|
||||||
|
)
|
||||||
|
Mod('nv',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'nv',
|
||||||
|
)
|
||||||
|
Mod('hefill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'hefill',
|
||||||
|
)
|
||||||
|
Mod('hepump',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'hepump',
|
||||||
|
)
|
||||||
|
Mod('hemot',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'hemot',
|
||||||
|
)
|
||||||
|
Mod('nvflow',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'nvflow',
|
||||||
|
)
|
||||||
|
Mod('mf',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'mf',
|
||||||
|
)
|
||||||
|
Mod('lev',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'lev',
|
||||||
|
)
|
||||||
|
Mod('ln2fill',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'ln2fill',
|
||||||
|
)
|
||||||
|
Mod('tcoil',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'tcoil',
|
||||||
|
)
|
||||||
|
Mod('ccu2',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'ccu2',
|
||||||
|
)
|
||||||
|
Mod('lnv',
|
||||||
|
'frappy_psi.sea.SeaWritable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'lnv',
|
||||||
|
)
|
||||||
|
Mod('lpr',
|
||||||
|
'frappy_psi.sea.SeaDrivable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'lpr',
|
||||||
|
)
|
||||||
|
Mod('table',
|
||||||
|
'frappy_psi.sea.SeaReadable', '',
|
||||||
|
io = 'sea_main',
|
||||||
|
sea_object = 'table',
|
||||||
|
)
|
||||||
|
Mod('stick_io',
|
||||||
|
'frappy_psi.phytron.PhytronIO',
|
||||||
|
'om motor IO',
|
||||||
|
uri='ma15-ts.psi.ch:3005',
|
||||||
|
)
|
||||||
|
Mod('om',
|
||||||
|
'frappy_psi.phytron.Motor',
|
||||||
|
'stick rotation, typically used as omega',
|
||||||
|
io='stick_io',
|
||||||
|
encoder_mode='CHECK',
|
||||||
|
)
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user