Merge branch 'master' of gitlab.psi.ch-samenv:samenv/sea

This commit is contained in:
2023-05-23 18:02:27 +02:00
49 changed files with 811 additions and 664 deletions

9
tcl/ami136.addon Normal file
View File

@ -0,0 +1,9 @@
addonDesc = ami136 He level meter
makenv hel -driver ami136

View File

@ -2,7 +2,7 @@ Comment: 30.07.2021, FP and CMN, 16mK--2.3K extrapolated elsewhere
Sensor Model: RX-1000-BF0.007 Sensor Model: RX-1000-BF0.007
Serial Number: U08127 Serial Number: U08127
Data Format: 4 (Log Ohms/Kelvin) Data Format: 4 (Log Ohms/Kelvin)
SetPoint Limit: 0.0282 (Kelvin) SetPoint Limit: 20 (Kelvin)
Temperature coefficient: 1 (Negative) Temperature coefficient: 1 (Negative)
Number of Breakpoints: 198 Number of Breakpoints: 198

View File

@ -1,7 +1,7 @@
Sensor Model: RX-1000-BF0.007 Sensor Model: RX-1000-BF0.007
Serial Number: U08130 Serial Number: U08130
Data Format: 4 (Log Ohms/Kelvin) Data Format: 4 (Log Ohms/Kelvin)
SetPoint Limit: 0.0167 (Kelvin) SetPoint Limit: 10 (Kelvin)
Temperature coefficient: 1 (Negative) Temperature coefficient: 1 (Negative)
Number of Breakpoints: 198 Number of Breakpoints: 198

View File

@ -1,4 +1,4 @@
Sensor Model: CX-1030-CU 2022-02-21 Sensor Model: CX-1030-SD 2018-11-20
Serial Number: X137461 Serial Number: X137461
Data Format: 4 (Log Ohms/Kelvin) Data Format: 4 (Log Ohms/Kelvin)
SetPoint Limit: 330.0 (Kelvin) SetPoint Limit: 330.0 (Kelvin)
@ -7,202 +7,202 @@ Number of Breakpoints: 199
No. Units Temperature (K) No. Units Temperature (K)
1 1.850262 330.0000 1 1.548341 330.0000
2 1.872411 310.0000 2 1.566886 310.0000
3 1.882317 301.5330 3 1.575186 301.5330
4 1.892304 293.2973 4 1.583533 293.2973
5 1.902354 285.2865 5 1.591922 285.2865
6 1.912463 277.4945 6 1.600348 277.4945
7 1.922624 269.9153 7 1.608807 269.9153
8 1.932832 262.5431 8 1.617293 262.5431
9 1.943081 255.3723 9 1.625802 255.3723
10 1.953365 248.3974 10 1.634326 248.3974
11 1.963678 241.6129 11 1.642863 241.6129
12 1.974018 235.0138 12 1.651409 235.0138
13 1.984381 228.5949 13 1.659960 228.5949
14 1.994764 222.3513 14 1.668514 222.3513
15 2.005163 216.2782 15 1.677068 216.2782
16 2.015577 210.3710 16 1.685619 210.3710
17 2.026001 204.6252 17 1.694164 204.6252
18 2.036432 199.0363 18 1.702701 199.0363
19 2.046867 193.6000 19 1.711225 193.6000
20 2.057303 188.3123 20 1.719734 188.3123
21 2.067736 183.1689 21 1.728225 183.1689
22 2.078163 178.1660 22 1.736695 178.1660
23 2.088580 173.2998 23 1.745141 173.2998
24 2.098985 168.5665 24 1.753560 168.5665
25 2.109374 163.9624 25 1.761950 163.9624
26 2.119744 159.4842 26 1.770307 159.4842
27 2.130095 155.1282 27 1.778629 155.1282
28 2.140425 150.8912 28 1.786913 150.8912
29 2.150733 146.7699 29 1.795158 146.7699
30 2.161020 142.7612 30 1.803361 142.7612
31 2.171286 138.8620 31 1.811523 138.8620
32 2.181533 135.0693 32 1.819645 135.0693
33 2.191754 131.3801 33 1.827726 131.3801
34 2.201938 127.7918 34 1.835766 127.7918
35 2.212076 124.3014 35 1.843766 124.3014
36 2.222164 120.9064 36 1.851726 120.9064
37 2.232210 117.6041 37 1.859646 117.6041
38 2.242221 114.3920 38 1.867526 114.3920
39 2.252206 111.2676 39 1.875366 111.2676
40 2.262166 108.2285 40 1.883166 108.2285
41 2.272098 105.2725 41 1.890927 105.2725
42 2.282004 102.3972 42 1.898649 102.3972
43 2.291883 99.60045 43 1.906332 99.60045
44 2.301733 96.88007 44 1.913976 96.88007
45 2.311557 94.23400 45 1.921583 94.23400
46 2.321355 91.66019 46 1.929152 91.66019
47 2.331126 89.15669 47 1.936686 89.15669
48 2.340872 86.72156 48 1.944184 86.72156
49 2.350593 84.35294 49 1.951649 84.35294
50 2.360289 82.04902 50 1.959080 82.04902
51 2.369962 79.80803 51 1.966479 79.80803
52 2.379611 77.62824 52 1.973846 77.62824
53 2.389238 75.50799 53 1.981182 75.50799
54 2.398844 73.44565 54 1.988488 73.44565
55 2.408430 71.43963 55 1.995763 71.43963
56 2.417996 69.48841 56 2.003008 69.48841
57 2.427542 67.59048 57 2.010223 67.59048
58 2.437071 65.74439 58 2.017406 65.74439
59 2.446581 63.94872 59 2.024559 63.94872
60 2.456075 62.20210 60 2.031681 62.20210
61 2.465551 60.50318 61 2.038773 60.50318
62 2.475011 58.85066 62 2.045833 58.85066
63 2.484456 57.24328 63 2.052862 57.24328
64 2.493886 55.67980 64 2.059860 55.67980
65 2.503301 54.15902 65 2.066827 54.15902
66 2.512701 52.67978 66 2.073763 52.67978
67 2.522088 51.24095 67 2.080667 51.24095
68 2.531459 49.84141 68 2.087541 49.84141
69 2.540815 48.48010 69 2.094382 48.48010
70 2.550156 47.15596 70 2.101193 47.15596
71 2.559481 45.86800 71 2.107971 45.86800
72 2.568790 44.61521 72 2.114719 44.61521
73 2.578084 43.39664 73 2.121434 43.39664
74 2.587360 42.21135 74 2.128118 42.21135
75 2.596621 41.05844 75 2.134770 41.05844
76 2.605864 39.93701 76 2.141391 39.93701
77 2.615090 38.84622 77 2.147979 38.84622
78 2.624300 37.78522 78 2.154536 37.78522
79 2.633492 36.75319 79 2.161061 36.75319
80 2.642669 35.74936 80 2.167554 35.74936
81 2.651832 34.77294 81 2.174016 34.77294
82 2.660985 33.82319 82 2.180448 33.82319
83 2.670129 32.89938 83 2.186849 32.89938
84 2.679266 32.00080 84 2.193220 32.00080
85 2.688398 31.12677 85 2.199562 31.12677
86 2.697526 30.27661 86 2.205874 30.27661
87 2.706648 29.44966 87 2.212157 29.44966
88 2.715760 28.64531 88 2.218411 28.64531
89 2.724862 27.86292 89 2.224634 27.86292
90 2.733951 27.10191 90 2.230828 27.10191
91 2.743025 26.36167 91 2.236992 26.36167
92 2.752082 25.64166 92 2.243126 25.64166
93 2.761123 24.94131 93 2.249231 24.94131
94 2.770148 24.26009 94 2.255307 24.26009
95 2.779160 23.59748 95 2.261356 23.59748
96 2.788161 22.95297 96 2.267380 22.95297
97 2.797154 22.32605 97 2.273381 22.32605
98 2.806142 21.71626 98 2.279361 21.71626
99 2.815129 21.12313 99 2.285321 21.12313
100 2.824117 20.54620 100 2.291265 20.54620
101 2.833110 19.98502 101 2.297194 19.98502
102 2.842110 19.43917 102 2.303110 19.43917
103 2.851119 18.90823 103 2.309015 18.90823
104 2.860139 18.39179 104 2.314910 18.39179
105 2.869171 17.88946 105 2.320796 17.88946
106 2.878218 17.40085 106 2.326676 17.40085
107 2.887281 16.92558 107 2.332551 16.92558
108 2.896361 16.46329 108 2.338422 16.46329
109 2.905459 16.01363 109 2.344290 16.01363
110 2.914579 15.57626 110 2.350157 15.57626
111 2.923720 15.15082 111 2.356025 15.15082
112 2.932886 14.73701 112 2.361895 14.73701
113 2.942077 14.33450 113 2.367769 14.33450
114 2.951295 13.94298 114 2.373647 13.94298
115 2.960544 13.56216 115 2.379533 13.56216
116 2.969824 13.19174 116 2.385427 13.19174
117 2.979138 12.83143 117 2.391331 12.83143
118 2.988488 12.48097 118 2.397247 12.48097
119 2.997878 12.14008 119 2.403176 12.14008
120 3.007311 11.80850 120 2.409121 11.80850
121 3.016788 11.48597 121 2.415084 11.48597
122 3.026314 11.17226 122 2.421066 11.17226
123 3.035891 10.86711 123 2.427070 10.86711
124 3.045522 10.57030 124 2.433098 10.57030
125 3.055212 10.28159 125 2.439152 10.28159
126 3.064964 10.00077 126 2.445235 10.00077
127 3.074781 9.727624 127 2.451348 9.727624
128 3.084665 9.461935 128 2.457494 9.461935
129 3.094618 9.203502 129 2.463672 9.203502
130 3.104643 8.952128 130 2.469884 8.952128
131 3.114742 8.707619 131 2.476132 8.707619
132 3.124920 8.469789 132 2.482415 8.469789
133 3.135180 8.238455 133 2.488736 8.238455
134 3.145525 8.013439 134 2.495095 8.013439
135 3.155959 7.794568 135 2.501494 7.794568
136 3.166484 7.581676 136 2.507934 7.581676
137 3.177102 7.374599 137 2.514417 7.374599
138 3.187813 7.173177 138 2.520944 7.173177
139 3.198620 6.977257 139 2.527516 6.977257
140 3.209523 6.786688 140 2.534135 6.786688
141 3.220523 6.601324 141 2.540803 6.601324
142 3.231622 6.421023 142 2.547520 6.421023
143 3.242822 6.245646 143 2.554290 6.245646
144 3.254129 6.075059 144 2.561112 6.075059
145 3.265545 5.909132 145 2.567989 5.909132
146 3.277075 5.747736 146 2.574924 5.747736
147 3.288724 5.590749 147 2.581917 5.590749
148 3.300497 5.438050 148 2.588971 5.438050
149 3.312397 5.289521 149 2.596087 5.289521
150 3.324427 5.145049 150 2.603266 5.145049
151 3.336590 5.004522 151 2.610509 5.004522
152 3.348889 4.867834 152 2.617817 4.867834
153 3.361329 4.734880 153 2.625191 4.734880
154 3.373911 4.605557 154 2.632632 4.605557
155 3.386639 4.479766 155 2.640141 4.479766
156 3.399516 4.357410 156 2.647719 4.357410
157 3.412545 4.238397 157 2.655367 4.238397
158 3.425730 4.122634 158 2.663087 4.122634
159 3.439074 4.010033 159 2.670879 4.010033
160 3.452584 3.900507 160 2.678747 3.900507
161 3.466264 3.793973 161 2.686691 3.793973
162 3.480120 3.690349 162 2.694714 3.690349
163 3.494156 3.589555 163 2.702819 3.589555
164 3.508381 3.491514 164 2.711006 3.491514
165 3.522798 3.396150 165 2.719280 3.396150
166 3.537416 3.303392 166 2.727642 3.303392
167 3.552240 3.213166 167 2.736094 3.213166
168 3.567277 3.125406 168 2.744640 3.125406
169 3.582534 3.040042 169 2.753281 3.040042
170 3.598016 2.957009 170 2.762020 2.957009
171 3.613729 2.876245 171 2.770857 2.876245
172 3.629679 2.797686 172 2.779795 2.797686
173 3.645872 2.721273 173 2.788836 2.721273
174 3.662313 2.646948 174 2.797980 2.646948
175 3.679009 2.574652 175 2.807230 2.574652
176 3.695966 2.504331 176 2.816587 2.504331
177 3.713188 2.435930 177 2.826052 2.435930
178 3.730682 2.369398 178 2.835627 2.369398
179 3.748450 2.304683 179 2.845314 2.304683
180 3.766493 2.241735 180 2.855112 2.241735
181 3.784809 2.180507 181 2.865023 2.180507
182 3.803400 2.120951 182 2.875048 2.120951
183 3.822270 2.063022 183 2.885191 2.063022
184 3.841422 2.006675 184 2.895456 2.006675
185 3.860861 1.951866 185 2.905846 1.951866
186 3.880608 1.898555 186 2.916367 1.898555
187 3.900697 1.846700 187 2.927021 1.846700
188 3.921159 1.796262 188 2.937815 1.796262
189 3.942012 1.747201 189 2.948752 1.747201
190 3.963250 1.699479 190 2.959837 1.699479
191 3.984864 1.653062 191 2.971076 1.653062
192 4.006851 1.607912 192 2.982472 1.607912
193 4.029226 1.563995 193 2.994032 1.563995
194 4.052005 1.521278 194 3.005760 1.521278
195 4.075207 1.479727 195 3.017662 1.479727
196 4.098850 1.439312 196 3.029742 1.439312
197 4.122955 1.400000 197 3.042006 1.400000
198 4.265975 1.200000 198 3.113873 1.200000
199 4.444104 1.000000 199 3.207682 1.000000

0
tcl/calcurves/X145791.340 Executable file → Normal file
View File

View File

@ -1,207 +1,207 @@
Sensor Model: CX-1050-CU-HT 2021-04-30 Sensor Model: CX-1050-CU-HT 2021-04-30
Serial Number: X154359 Serial Number: X154359
Data Format: 4 (Log Ohms/Kelvin) Data Format: 4 (Log Ohms/Kelvin)
SetPoint Limit: 330.0 (Kelvin) SetPoint Limit: 330.0 (Kelvin)
Temperature coefficient: 1 (Negative) Temperature coefficient: 1 (Negative)
Number of Breakpoints: 198 Number of Breakpoints: 199
No. Units Temperature (K) No. Units Temperature (K)
1 1.728256 351.58
1 1.752240 330.0000 2 1.752240 330
2 1.776224 310.0000 3 1.776224 310
3 1.787015 301.4900 4 1.787015 301.49
4 1.797870 293.2135 5 1.797870 293.2135
5 1.808781 285.1643 6 1.808781 285.1643
6 1.819743 277.3361 7 1.819743 277.3361
7 1.830751 269.7227 8 1.830751 269.7227
8 1.841798 262.3184 9 1.841798 262.3184
9 1.852878 255.1173 10 1.852878 255.1173
10 1.863986 248.1139 11 1.863986 248.1139
11 1.875115 241.3027 12 1.875115 241.3027
12 1.886262 234.6785 13 1.886262 234.6785
13 1.897425 228.2362 14 1.897425 228.2362
14 1.908601 221.9707 15 1.908601 221.9707
15 1.919786 215.8772 16 1.919786 215.8772
16 1.930977 209.9510 17 1.930977 209.951
17 1.942172 204.1875 18 1.942172 204.1875
18 1.953367 198.5822 19 1.953367 198.5822
19 1.964559 193.1308 20 1.964559 193.1308
20 1.975745 187.8290 21 1.975745 187.829
21 1.986922 182.6728 22 1.986922 182.6728
22 1.998087 177.6581 23 1.998087 177.6581
23 2.009237 172.7811 24 2.009237 172.7811
24 2.020368 168.0379 25 2.020368 168.0379
25 2.031478 163.4250 26 2.031478 163.425
26 2.042563 158.9387 27 2.042563 158.9387
27 2.053621 154.5756 28 2.053621 154.5756
28 2.064647 150.3322 29 2.064647 150.3322
29 2.075638 146.2053 30 2.075638 146.2053
30 2.086593 142.1917 31 2.086593 142.1917
31 2.097512 138.2883 32 2.097512 138.2883
32 2.108392 134.4921 33 2.108392 134.4921
33 2.119230 130.8000 34 2.119230 130.8
34 2.130015 127.2093 35 2.130015 127.2093
35 2.140740 123.7172 36 2.140740 123.7172
36 2.151409 120.3210 37 2.151409 120.321
37 2.162048 117.0180 38 2.162048 117.018
38 2.172682 113.8056 39 2.172682 113.8056
39 2.183331 110.6815 40 2.183331 110.6815
40 2.193975 107.6431 41 2.193975 107.6431
41 2.204587 104.6881 42 2.204587 104.6881
42 2.215140 101.8142 43 2.215140 101.8142
43 2.225632 99.01923 44 2.225632 99.01923
44 2.236068 96.30098 45 2.236068 96.30098
45 2.246457 93.65735 46 2.246457 93.65735
46 2.256804 91.08629 47 2.256804 91.08629
47 2.267110 88.58582 48 2.267110 88.58582
48 2.277379 86.15398 49 2.277379 86.15398
49 2.287611 83.78891 50 2.287611 83.78891
50 2.297809 81.48876 51 2.297809 81.48876
51 2.307974 79.25175 52 2.307974 79.25175
52 2.318109 77.07615 53 2.318109 77.07615
53 2.328215 74.96028 54 2.328215 74.96028
54 2.338291 72.90249 55 2.338291 72.90249
55 2.348338 70.90119 56 2.348338 70.90119
56 2.358355 68.95483 57 2.358355 68.95483
57 2.368343 67.06190 58 2.368343 67.0619
58 2.378301 65.22094 59 2.378301 65.22094
59 2.388229 63.43051 60 2.388229 63.43051
60 2.398127 61.68923 61 2.398127 61.68923
61 2.407995 59.99576 62 2.407995 59.99576
62 2.417832 58.34877 63 2.417832 58.34877
63 2.427639 56.74699 64 2.427639 56.74699
64 2.437415 55.18919 65 2.437415 55.18919
65 2.447160 53.67415 66 2.447160 53.67415
66 2.456874 52.20070 67 2.456874 52.2007
67 2.466557 50.76770 68 2.466557 50.7677
68 2.476208 49.37404 69 2.476208 49.37404
69 2.485828 48.01864 70 2.485828 48.01864
70 2.495416 46.70045 71 2.495416 46.70045
71 2.504973 45.41844 72 2.504973 45.41844
72 2.514498 44.17162 73 2.514498 44.17162
73 2.523990 42.95904 74 2.523990 42.95904
74 2.533451 41.77974 75 2.533451 41.77974
75 2.542879 40.63281 76 2.542879 40.63281
76 2.552275 39.51737 77 2.552275 39.51737
77 2.561638 38.43255 78 2.561638 38.43255
78 2.570969 37.37751 79 2.570969 37.37751
79 2.580267 36.35143 80 2.580267 36.35143
80 2.589535 35.35352 81 2.589535 35.35352
81 2.598774 34.38301 82 2.598774 34.38301
82 2.607984 33.43913 83 2.607984 33.43913
83 2.617167 32.52117 84 2.617167 32.52117
84 2.626325 31.62841 85 2.626325 31.62841
85 2.635458 30.76016 86 2.635458 30.76016
86 2.644568 29.91574 87 2.644568 29.91574
87 2.653656 29.09450 88 2.653656 29.0945
88 2.662722 28.29580 89 2.662722 28.2958
89 2.671768 27.51903 90 2.671768 27.51903
90 2.680793 26.76359 91 2.680793 26.76359
91 2.689800 26.02888 92 2.689800 26.02888
92 2.698787 25.31435 93 2.698787 25.31435
93 2.707753 24.61942 94 2.707753 24.61942
94 2.716696 23.94358 95 2.716696 23.94358
95 2.725613 23.28628 96 2.725613 23.28628
96 2.734506 22.64704 97 2.734506 22.64704
97 2.743374 22.02534 98 2.743374 22.02534
98 2.752217 21.42070 99 2.752217 21.4207
99 2.761040 20.83267 100 2.761040 20.83267
100 2.769850 20.26077 101 2.769850 20.26077
101 2.778654 19.70458 102 2.778654 19.70458
102 2.787455 19.16366 103 2.787455 19.16366
103 2.796256 18.63758 104 2.796256 18.63758
104 2.805060 18.12595 105 2.805060 18.12595
105 2.813869 17.62836 106 2.813869 17.62836
106 2.822685 17.14443 107 2.822685 17.14443
107 2.831510 16.67379 108 2.831510 16.67379
108 2.840346 16.21606 109 2.840346 16.21606
109 2.849196 15.77090 110 2.849196 15.7709
110 2.858062 15.33796 111 2.858062 15.33796
111 2.866945 14.91691 112 2.866945 14.91691
112 2.875849 14.50741 113 2.875849 14.50741
113 2.884776 14.10916 114 2.884776 14.10916
114 2.893729 13.72184 115 2.893729 13.72184
115 2.902709 13.34515 116 2.902709 13.34515
116 2.911720 12.97880 117 2.911720 12.9788
117 2.920765 12.62251 118 2.920765 12.62251
118 2.929846 12.27600 119 2.929846 12.276
119 2.938966 11.93901 120 2.938966 11.93901
120 2.948129 11.61126 121 2.948129 11.61126
121 2.957338 11.29251 122 2.957338 11.29251
122 2.966594 10.98251 123 2.966594 10.98251
123 2.975896 10.68102 124 2.975896 10.68102
124 2.985245 10.38781 125 2.985245 10.38781
125 2.994645 10.10265 126 2.994645 10.10265
126 3.004106 9.825312 127 3.004106 9.825312
127 3.013636 9.555591 128 3.013636 9.555591
128 3.023243 9.293273 129 3.023243 9.293273
129 3.032929 9.038157 130 3.032929 9.038157
130 3.042695 8.790044 131 3.042695 8.790044
131 3.052542 8.548742 132 3.052542 8.548742
132 3.062471 8.314064 133 3.062471 8.314064
133 3.072485 8.085829 134 3.072485 8.085829
134 3.082584 7.863859 135 3.082584 7.863859
135 3.092770 7.647982 136 3.092770 7.647982
136 3.103045 7.438032 137 3.103045 7.438032
137 3.113410 7.233845 138 3.113410 7.233845
138 3.123867 7.035263 139 3.123867 7.035263
139 3.134418 6.842133 140 3.134418 6.842133
140 3.145063 6.654305 141 3.145063 6.654305
141 3.155808 6.471633 142 3.155808 6.471633
142 3.166662 6.293975 143 3.166662 6.293975
143 3.177645 6.121195 144 3.177645 6.121195
144 3.188773 5.953157 145 3.188773 5.953157
145 3.200048 5.789733 146 3.200048 5.789733
146 3.211450 5.630795 147 3.211450 5.630795
147 3.222958 5.476220 148 3.222958 5.47622
148 3.234561 5.325888 149 3.234561 5.325888
149 3.246273 5.179683 150 3.246273 5.179683
150 3.258116 5.037492 151 3.258116 5.037492
151 3.270108 4.899204 152 3.270108 4.899204
152 3.282253 4.764712 153 3.282253 4.764712
153 3.294552 4.633913 154 3.294552 4.633913
154 3.307003 4.506704 155 3.307003 4.506704
155 3.319604 4.382987 156 3.319604 4.382987
156 3.332353 4.262667 157 3.332353 4.262667
157 3.345249 4.145649 158 3.345249 4.145649
158 3.358293 4.031844 159 3.358293 4.031844
159 3.371492 3.921163 160 3.371492 3.921163
160 3.384855 3.813520 161 3.384855 3.81352
161 3.398390 3.708832 162 3.398390 3.708832
162 3.412106 3.607018 163 3.412106 3.607018
163 3.426014 3.508000 164 3.426014 3.508
164 3.440124 3.411699 165 3.440124 3.411699
165 3.454443 3.318042 166 3.454443 3.318042
166 3.468975 3.226956 167 3.468975 3.226956
167 3.483725 3.138370 168 3.483725 3.13837
168 3.498697 3.052217 169 3.498697 3.052217
169 3.513895 2.968428 170 3.513895 2.968428
170 3.529321 2.886940 171 3.529321 2.88694
171 3.544979 2.807688 172 3.544979 2.807688
172 3.560872 2.730612 173 3.560872 2.730612
173 3.577000 2.655652 174 3.577000 2.655652
174 3.593367 2.582750 175 3.593367 2.58275
175 3.609974 2.511849 176 3.609974 2.511849
176 3.626821 2.442894 177 3.626821 2.442894
177 3.643911 2.375833 178 3.643911 2.375833
178 3.661254 2.310612 179 3.661254 2.310612
179 3.678878 2.247182 180 3.678878 2.247182
180 3.696815 2.185493 181 3.696815 2.185493
181 3.715081 2.125497 182 3.715081 2.125497
182 3.733661 2.067149 183 3.733661 2.067149
183 3.752526 2.010402 184 3.752526 2.010402
184 3.771651 1.955213 185 3.771651 1.955213
185 3.791042 1.901539 186 3.791042 1.901539
186 3.810742 1.849338 187 3.810742 1.849338
187 3.830800 1.798571 188 3.830800 1.798571
188 3.851256 1.749197 189 3.851256 1.749197
189 3.872108 1.701178 190 3.872108 1.701178
190 3.893346 1.654478 191 3.893346 1.654478
191 3.914960 1.609060 192 3.914960 1.60906
192 3.936960 1.564888 193 3.936960 1.564888
193 3.959369 1.521930 194 3.959369 1.52193
194 3.982210 1.480150 195 3.982210 1.48015
195 4.005509 1.439517 196 4.005509 1.439517
196 4.029281 1.400000 197 4.029281 1.4
197 4.166155 1.200000 198 4.166155 1.2
198 4.336041 1.000000 199 4.336041 1.000001

15
tcl/ccr4.config Normal file
View File

@ -0,0 +1,15 @@
deviceDesc = sumitomo closed cycle cryostat from IFE norway
defineTemperature tt
GraphAdd tt K T_main
makenv tt -driver [lsdriver] {
lsc_sensor tm A -sensor dt-670 -sensorname main
lsc_loop set -loop 1 -channel A -maxheater 100W -resist 25Ohm
}
tt set/limit 310
tt set/prop 25
tt set/integ 10
catch {
enableTable 0
}

View File

@ -23,7 +23,7 @@ catch {
#obj_list ep EuroThermPressure #obj_list ep EuroThermPressure
#appendVars ep/%/Pressure #appendVars ep/%/Pressure
makeCCU4 ccrpe makeCCU4 ccrpe nv
makenv warmup -driver piloop -invar "tt" -outvar "tt current/manualpower" \ makenv warmup -driver piloop -invar "tt" -outvar "tt current/manualpower" \

View File

@ -41,7 +41,6 @@ MA10 22 fNH
MB11 NH MB11 NH
#CTI1 0.22 #CTI1 0.22
CTI2 0.33 CTI2 0.33
CTI3 0.47
CTI4 0.68 CTI4 0.68
CTI5 0.82 CTI5 0.82
#CTI7 1 #CTI7 1
@ -50,7 +49,8 @@ DISE 1.5
APD 1.8 APD 1.8
CCR2HT 2.7 CCR2HT 2.7
CCR3 3.3 CCR3 3.3
CCRPE 3.9 CCR4 0.47
CCRPE 3.9 f
RSE 12 RSE 12
RT 15 RT 15
JTVALV 10 n JTVALV 10 n

View File

@ -6,6 +6,9 @@ GROUP orange and other 4He cryostats
hfflow* hfflow*
lemflow* lemflow*
END END
GROUP muSR
flame*
END
GROUP closed cycle refrigerators GROUP closed cycle refrigerators
apd* apd*
ccr* ccr*

View File

@ -1,4 +1,4 @@
deviceDesc = 30 K - 475 K closed cycle cryostat deviceDesc = 30 K - 310 K closed cycle cryostat without hot stage
defineTemperature tt defineTemperature tt
makenv tt -driver [lsdriver] { makenv tt -driver [lsdriver] {

View File

@ -1,4 +1,4 @@
deviceDesc = 30 K - 475 K closed cycle cryostat with hot stagge deviceDesc = 30 K - 475 K closed cycle cryostat with hot stage
defineTemperature tt defineTemperature tt
makenv tt -driver [lsdriver] { makenv tt -driver [lsdriver] {

View File

@ -6,6 +6,8 @@ set diln dil2
makenv ts -driver dil12 -reg370 /treg -mon370 /tmon -hasturbo 1 makenv ts -driver dil12 -reg370 /treg -mon370 /tmon -hasturbo 1
ts auto/pumptime1 3600
# lakeshore 370 ctrl # lakeshore 370 ctrl
makenv treg -driver 370_lsc -port ${diln}-ts:3001 { makenv treg -driver 370_lsc -port ${diln}-ts:3001 {
# curves for sample: # curves for sample:

View File

@ -6,6 +6,8 @@ set dilts dil3-ts.psi.ch
makenv ts -driver dil12 -reg370 /treg -mon370 /tmon -hasturbo 1 makenv ts -driver dil12 -reg370 /treg -mon370 /tmon -hasturbo 1
ts auto/pumptime1 3600
# lakeshore 370 ctrl # lakeshore 370 ctrl
makenv treg -driver 370_lsc -port ${dilts}:3001 { makenv treg -driver 370_lsc -port ${dilts}:3001 {
# curves for sample: # curves for sample:
@ -73,6 +75,6 @@ dil extVersion 1
catch {default ts control} catch {default ts control}
catch {default ts heaterselect} catch {default ts heaterselect}
#makeMotorValve vb ${dilts}:3004 makeMotorValve vb ${dilts}:3004
#makeMotorValve vm ${dilts}:3006 makeMotorValve vm ${dilts}:3006

View File

@ -6,6 +6,8 @@ set diln dil4
makenv ts -driver dil12 -reg370 /treg -mon370 /tmon -hasturbo 1 makenv ts -driver dil12 -reg370 /treg -mon370 /tmon -hasturbo 1
ts auto/pumptime1 3600
# lakeshore 370 ctrl # lakeshore 370 ctrl
makenv treg -driver 370_lsc -port ${diln}-ts:3001 { makenv treg -driver 370_lsc -port ${diln}-ts:3001 {
# curves for sample: # curves for sample:

View File

@ -22,6 +22,7 @@ triton temp tpt1head pt1head T6 cyan
triton temp tpt1plate pt1plate T7 cyan triton temp tpt1plate pt1plate T7 cyan
triton temp tmix mix T8 cyan triton temp tmix mix T8 cyan
triton temp pucksensor puck TA red triton temp pucksensor puck TA red
triton temp tmagnet tmagnet T13 black
triton press pdump dump P1 cyan triton press pdump dump P1 cyan
triton press pcond cond P2 blue triton press pcond cond P2 blue
@ -33,17 +34,18 @@ triton press pfore fore P5 green
makenv res -driver 372_lsc -port dilsc.psi.ch:7777 { makenv res -driver 372_lsc -port dilsc.psi.ch:7777 {
#lsc_sensor atto_mid 1 -sensor U08127 -excitation 200uV -filter 1 lsc_sensor foil 1 -sensor U08130 -excitation 200uV -filter 1
#lsc_sensor atto_top 2 -sensor U08130 -excitation 200uV -filter 1 #lsc_sensor atto_mid 1 -sensor U08127 -excitation 200uV -filter 1
#lsc_sensor ch3 3 -sensor raw -excitation 20uV -filter 1 #lsc_sensor atto_top 2 -sensor U08130 -excitation 200uV -filter 1
#lsc_sensor ch4 4 -sensor raw -excitation 20uV -filter 1 #lsc_sensor ch3 3 -sensor raw -excitation 20uV -filter 1
lsc_sensor foil 5 -sensor U08130 -excitation 200uV -filter 1 #lsc_sensor ch4 4 -sensor raw -excitation 20uV -filter 1
#lsc_sensor ch6 6 -sensor raw -excitation 20uV -filter 1 lsc_sensor Al_1 7 -sensor raw -excitation 1uA -filter 1
#lsc_sensor ch7 7 -sensor raw -excitation 20uV -filter 1 lsc_sensor Al_2 8 -sensor raw -excitation 1uA -filter 1
#lsc_sensor ch8 8 -sensor raw -excitation 20uV -filter 1 #lsc_sensor ch7 7 -sensor raw -excitation 20uV -filter 1
#lsc_sensor ch8 8 -sensor raw -excitation 20uV -filter 1
# heater output 0 (=sample heater) for channel 4 (still) # heater output 0 (=sample heater) for channel 4 (still)
#lsc_loop set -loop 0 -channel 1 -maxheater 100mA -resist 100 #lsc_loop set -loop 0 -channel 1 -maxheater 100mA -resist 100
} }
@ -69,9 +71,9 @@ makenv res -driver 372_lsc -port dilsc.psi.ch:7777 {
#GraphAdd res.ch4 Ohm #GraphAdd res.ch4 Ohm
#GraphAdd res.ch5 Ohm #GraphAdd res.ch5 Ohm
#GraphAdd res.ch6 Ohm #GraphAdd res.ch6 Ohm
#GraphAdd res.ch7 Ohm GraphAdd res.Al_1 Ohm
#GraphAdd res.ch8 Ohm GraphAdd res.Al_2 Ohm
GraphAdd res.atto_mid.raw Ohm #GraphAdd res.atto_mid.raw Ohm
GraphAdd res.atto_top.raw Ohm #GraphAdd res.atto_top.raw Ohm

View File

@ -228,7 +228,7 @@ proc stdConfig::ccu4 {{title CCU4} args} {
node hea out node hea out
prop label "add. He channels" prop label "add. He channels"
prop enum 0,1,6 prop enum 0,1,6=6
node hch out -int node hch out -int
prop label "LHe channel" prop label "LHe channel"
@ -539,7 +539,13 @@ proc ccu4::update {} {
set errvar [silent "" hgetpropval [sct]/$name errvar] set errvar [silent "" hgetpropval [sct]/$name errvar]
if {$errvar ne ""} { if {$errvar ne ""} {
set errval [hvali [sct]/$errvar] set errval [hvali [sct]/$errvar]
if {$errval > 0} { if {$errval == 1} {
# sens warm
updateval [sct]/$name -11
} elseif {$errval == 3} {
# timeout
updateval [sct]/$name 111
} elseif {$errval > 0} {
hsetprop [sct]/$name geterror [lindex [split [hgetpropval [sct]/$errvar enum] ,] $errval] hsetprop [sct]/$name geterror [lindex [split [hgetpropval [sct]/$errvar enum] ,] $errval]
hupdate [sct]/$name $value hupdate [sct]/$name $value
} else { } else {

View File

@ -15,7 +15,7 @@ proc stdConfig::ccu4ext {type {readlevel 0}} {
prop write ccu4ext::writeExt $type prop write ccu4ext::writeExt $type
prop read ccu4ext::fillExt $type prop read ccu4ext::fillExt $type
prop enum watching=0,filling=1,inactive=2 prop enum watching=0,filling=1,inactive=2,manualfill=3
prop label "filling state" prop label "filling state"
if {$type eq "n2"} { if {$type eq "n2"} {
@ -72,6 +72,7 @@ proc ccu4ext::changestate {type state} {
cc $auto 1 cc $auto 1
} }
fill { fill {
clientlog FILL$type
cc $cmd 1 cc $cmd 1
cc $auto 1 cc $auto 1
} }
@ -144,7 +145,6 @@ proc ccu4ext::fillExt {type} {
set valve [sctval /cc/hv] set valve [sctval /cc/hv]
set auto [sctval /cc/ha] set auto [sctval /cc/ha]
} }
set enumtxt "watching,fill,inactive"
set errtxt "" set errtxt ""
set sm [expr [DoubleTime] > [silent 0 sct change_time] + 10] set sm [expr [DoubleTime] > [silent 0 sct change_time] + 10]
switch -- $valve { switch -- $valve {
@ -165,7 +165,6 @@ proc ccu4ext::fillExt {type} {
2 { 2 {
set txt "no fill valve" set txt "no fill valve"
if {$sm} {setmode $type 2} if {$sm} {setmode $type 2}
set enumtxt "$txt=2"
} }
3 { 3 {
set errtxt timeout set errtxt timeout
@ -177,7 +176,6 @@ proc ccu4ext::fillExt {type} {
set errtxt "unknown error" set errtxt "unknown error"
} }
} }
sct enum ${enumtxt}
if {$errtxt eq ""} { if {$errtxt eq ""} {
updateval [sct]/state $txt updateval [sct]/state $txt
hupdate [sct]/status "" hupdate [sct]/status ""
@ -185,7 +183,10 @@ proc ccu4ext::fillExt {type} {
hupdate [sct]/status $errtxt hupdate [sct]/status $errtxt
updateval [sct]/state $errtxt updateval [sct]/state $errtxt
} }
if {[sctval [sct]] == 3} { # manualfill
changestate $type fill
return idle
}
set level [silent invalid result [hvali [sct]/readlevel]] set level [silent invalid result [hvali [sct]/readlevel]]
if {! [string is double $level]} { if {! [string is double $level]} {
hsetprop [sct]/readlevel geterror "illegal $type level reading" hsetprop [sct]/readlevel geterror "illegal $type level reading"
@ -375,6 +376,10 @@ proc ccu4ext::writeExt {type {activate 1}} {
} }
return idle return idle
} }
# manualfill
3 {
changestate $type fill
}
} }
return idle return idle
} }

View File

@ -41,7 +41,7 @@ proc stdConfig::ccu4flow {args} {
node flow upd -secop=nvflow node flow upd -secop=nvflow
node set out node set out
default 2.0 default 1.0
prop check ccu4flow::checkset prop check ccu4flow::checkset
prop write stdSct::complete prop write stdSct::complete
prop label "flow set" prop label "flow set"
@ -89,11 +89,11 @@ proc stdConfig::ccu4flow {args} {
node hystpulse_c par 0 node hystpulse_c par 0
prop help {motor pulse to overcome hysteresis when closing} prop help {motor pulse to overcome hysteresis when closing}
node tol par 0.1 node tol par 0.25
prop label tolerance prop label tolerance
prop help {valid below 3 mbar} prop help {valid below 3 mbar}
node tolhigh par 0.2 node tolhigh par 0.5
prop label tol. above 4 prop label tol. above 4
prop help {valid above 4 mbar} prop help {valid above 4 mbar}

View File

@ -180,9 +180,10 @@ proc fictrl::update_power {} {
set vout [expr $keyval(h) * 0.01 * [sct @voltscale]] set vout [expr $keyval(h) * 0.01 * [sct @voltscale]]
# set vpercent [expr $v * 100.0 / [sct @voltscale]] # set vpercent [expr $v * 100.0 / [sct @voltscale]]
# difference output voltage % - read voltage % # difference output voltage % - read voltage %
clientput "v $v vout $vout last [silent None sct last_v]"
if {abs($v - $vout) > 0.5} { if {abs($v - $vout) > 0.5} {
clientput "v $v vout $vout last [silent "" sct last_v]" if {abs($v - [silent 100 sct last_v]) > 100.02} {
if {abs($v - [silent 100 sct last_v]) < 0.02} { clientput "power supply feedback does not follow"
enum_decode [sct parent]/ctrlmode power_supply_off new enum_decode [sct parent]/ctrlmode power_supply_off new
sct @power_supply_off 1 sct @power_supply_off 1
if {$new != [sctval [sct parent]/ctrlmode]} { if {$new != [sctval [sct parent]/ctrlmode]} {

View File

@ -27,16 +27,30 @@ proc stdConfig::heliox {} {
node pot_state -text upd node pot_state -text upd
node target_hours par 60 node target_hours par 48
prop help "how many hours the pot should last (< 75)" prop help "how many hours the pot should last (< 75)"
node holdflow out
default 1.5
prop check heliox::check_holdflow
prop help "flow for holding pressure"
prop write stdSct::complete
node condenseflow out
default 3
prop check heliox::check_condenseflow
prop help "flow for condensing"
prop write stdSct::complete
} }
catch { catch {
hsetprop /tt getsample hvali /ts/pot hsetprop /tt getsample hvali /th/pot
} msg } msg
clientput $msg clientput $msg
} }
proc heliox::check_set {} { proc heliox::check_set {} {
# save for later
sct goto [sct target]
if {[sct target] < 1.6} { if {[sct target] < 1.6} {
set condense_text "" set condense_text ""
if {[hvali [sct]/lasts_until] > [DoubleTime]} { if {[hvali [sct]/lasts_until] > [DoubleTime]} {
@ -49,7 +63,7 @@ proc heliox::check_set {} {
hupdate [sct]/mode 4 hupdate [sct]/mode 4
set condense_text "started" set condense_text "started"
} }
sct goto [sct target] # sct goto [sct target]
if {$condense_text ne ""} { if {$condense_text ne ""} {
sct print "going to [sct target] K might take a while - condense process is $condense_text" sct print "going to [sct target] K might take a while - condense process is $condense_text"
} }
@ -65,7 +79,7 @@ proc heliox::check_set {} {
set mainsensor /th/pot set mainsensor /th/pot
switch [sctval [sct]/mode] { switch [sctval [sct]/mode] {
1 { 1 {
nv set 2.5 nv set [hvali [sct]/holdflow]
th setsorb/channel C th setsorb/channel C
th setsorb 20 th setsorb 20
th mainloop set th mainloop set
@ -73,7 +87,7 @@ proc heliox::check_set {} {
run tt [sct target] run tt [sct target]
} }
2 { 2 {
nv set 2.5 nv set [hvali [sct]/holdflow]
th setsorb/channel C th setsorb/channel C
th setsorb 20 th setsorb 20
th mainloop set th mainloop set
@ -82,7 +96,7 @@ proc heliox::check_set {} {
th set [sct target] th set [sct target]
} }
3 { 3 {
nv set 2.5 nv set [hvali [sct]/holdflow]
th setsorb/channel B th setsorb/channel B
th mainloop setsorb th mainloop setsorb
th set 0 th set 0
@ -111,13 +125,14 @@ proc heliox::check_set {} {
} }
proc heliox::setmainsensor {mainsensor} { proc heliox::setmainsensor {mainsensor} {
set old [silent "" hgetpropval [sct objectPath] mainsensor] if {$mainsensor eq "/th/low"} {
if {$mainsensor ne $old} { set old /th/pot
if {$old ne ""} { } else {
catch {[sct controller] killupdatescript $old "updateval [sct objectPath]"} set old /th/low
}
[sct controller] updatescript $mainsensor "updateval [sct objectPath]"
} }
catch {[sct controller] killupdatescript $old "updateval [sct objectPath]"}
[sct controller] updatescript $mainsensor "updateval [sct objectPath]"
hsetprop [sct objectPath] mainsensor $mainsensor
} }
proc heliox::check_mode {} { proc heliox::check_mode {} {
@ -126,7 +141,7 @@ proc heliox::check_mode {} {
0 { 0 {
} }
1 { 1 {
nv set 2.5 nv set [hvali [sct parent]/holdflow]
if {[sct target] != [hvali [sct]]} { if {[sct target] != [hvali [sct]]} {
th set [hvali /th/target] th set [hvali /th/target]
} }
@ -136,7 +151,7 @@ proc heliox::check_mode {} {
set state "hi-T mode" set state "hi-T mode"
} }
2 { 2 {
nv set 2.5 nv set [hvali [sct parent]/holdflow]
if {[sct target] != [hvali [sct]]} { if {[sct target] != [hvali [sct]]} {
th set [hvali /th/target] th set [hvali /th/target]
} }
@ -146,7 +161,7 @@ proc heliox::check_mode {} {
set state "mid-T mode" set state "mid-T mode"
} }
3 { 3 {
nv set 2.5 nv set [hvali [sct parent]/holdflow]
if {[hvali [sct parent]/lasts_until] > [DoubleTime]} { if {[hvali [sct parent]/lasts_until] > [DoubleTime]} {
th set 0 th set 0
th setsorb/channel B th setsorb/channel B
@ -178,6 +193,20 @@ proc heliox::check_mode {} {
sct update [sct target] sct update [sct target]
} }
proc heliox::check_condenseflow {} {
if {[sctval [sct parent]/mode] == 4} {
nv set [sct target]
}
sct update [sct target]
}
proc heliox::check_holdflow {} {
if {[sctval [sct parent]/mode] != 4} {
nv set [sct target]
}
sct update [sct target]
}
proc heliox::complete {} { proc heliox::complete {} {
sct print [lindex {undefined "hi-T mode" "mid-T mode" "low-T mode" "-> condense"} [sct target]] sct print [lindex {undefined "hi-T mode" "mid-T mode" "low-T mode" "-> condense"} [sct target]]
return idle return idle
@ -215,11 +244,11 @@ proc heliox::read {} {
} }
if {[hvali [sct]] == 4} { if {[hvali [sct]] == 4} {
if {$ts > 3} { if {$ts > 3} {
nv set 4 nv set [hvali [sct parent]/condenseflow]
set lasts_until 0 set lasts_until 0
sct condense_deadline [expr $now + 36000] # timeout: should be 3600 sct condense_deadline [expr $now + 36000] # timeout: should be 3600
} elseif {[result th sorb] > 39} { } elseif {[result th sorb] > 39} {
nv set 4 nv set [hvali [sct parent]/condenseflow]
# 3He vapor pressure: 200 mbar at 2 K, power law # 3He vapor pressure: 200 mbar at 2 K, power law
set p [expr 200 * ($ts / 2.0) ** 3.5] set p [expr 200 * ($ts / 2.0) ** 3.5]
# dump pressure at condensation start # dump pressure at condensation start
@ -241,8 +270,9 @@ proc heliox::read {} {
th setsorb/channel B th setsorb/channel B
th mainloop setsorb th mainloop setsorb
th setsorb [silent 0.25 hgetpropval [sct parent] goto] th setsorb [silent 0.25 hgetpropval [sct parent] goto]
sct update 3 # switch to lowT and trigger check_mode
nv set 2.5 hset [sct] 3
nv set [hvali [sct parent]/holdflow]
clientput "the 3He pot [hvali [sct parent]/pot_state]" clientput "the 3He pot [hvali [sct parent]/pot_state]"
} }
} }

View File

@ -10,7 +10,7 @@ proc stdConfig::hepump {{motname hemot}} {
obj HePump -int wr obj HePump -int wr
default 0 default 0
prop enum xds35_auto,xds35_manual,sv65,other,no=-1 prop enum xds35_auto,xds35_manual,sv65,other,neodry=8,no=-1
prop help "xds35: scroll pump, sv65: leybold" prop help "xds35: scroll pump, sv65: leybold"
prop read hepump::read prop read hepump::read
prop write hepump::set_type prop write hepump::set_type
@ -67,17 +67,26 @@ proc hepump::visible {pumpcode} {
} else { } else {
set rv true set rv true
} }
set runv true
} elseif {$pumpcode == 8} {
set rv true
set runv true
set v true
} else { } else {
set v false set v false
set rv false set rv false
set runv false
} }
foreach node "valve [sct @motname]" { foreach node "valve [sct @motname]" {
if {[silent true hgetpropval [sct]/$node visible] ne $v} { if {[silent true hgetpropval [sct]/$node visible] ne $v} {
hsetprop [sct]/$node visible $v hsetprop [sct]/$node visible $v
} }
} }
foreach node "running eco auto eco_t_lim" { if {[silent true hgetpropval [sct]/running visible] ne $runv} {
hsetprop [sct]/running visible $runv
}
foreach node "eco auto eco_t_lim" {
if {[silent true hgetpropval [sct]/$node visible] ne $rv} { if {[silent true hgetpropval [sct]/$node visible] ne $rv} {
hsetprop [sct]/$node visible $rv hsetprop [sct]/$node visible $rv
} }
@ -125,6 +134,19 @@ proc hepump::set_calib {} {
} else { } else {
set f 0.6 ;# 0.95 at 30 mbar set f 0.6 ;# 0.95 at 30 mbar
} }
} elseif {$pumpcode == 8} { # neodry
set status [string trim [_[sct @motname] status]]
if {$status eq "disconnected" || $status eq "offline"} {
# clientput [_[sct @motname] hostport]
_[sct @motname] reconnect
}
if {$status eq "no response"} {
set pumpcode 1 ;# treat as manual
hsetprop [sct]/[sct @motname] group "hepump valve motor (not connected)"
} else {
hsetprop [sct]/[sct @motname] group "hepump valve motor"
}
set f 0.6
} elseif {$pumpcode == 3} { # other } elseif {$pumpcode == 3} { # other
hsetprop [sct]/[sct @motname] group "hepump valve motor" hsetprop [sct]/[sct @motname] group "hepump valve motor"
set f [hval [sct]/calib] set f [hval [sct]/calib]
@ -352,7 +374,10 @@ proc hepump::set_eco {} {
} }
proc hepump::get_eco {} { proc hepump::get_eco {} {
if {[sctval [sct parent]] != 0} {return idle} if {[sctval [sct parent]] != 0} {
sct update 0
return idle
}
set eco [sctval [sct parent]/[sct @motname]/output1] set eco [sctval [sct parent]/[sct @motname]/output1]
sct update $eco sct update $eco
[sct controller] queue [sct parent] write hepump::set_calib [sct controller] queue [sct parent] write hepump::set_calib

View File

@ -303,7 +303,7 @@ proc ipsmag::update_leads {{n_of_slaves 3}} {
set msg "slave currents ($currents) are not within $mincur .. $maxcur" set msg "slave currents ($currents) are not within $mincur .. $maxcur"
hupdate [sct objectPath]/status $msg hupdate [sct objectPath]/status $msg
if {$status eq ""} { if {$status eq ""} {
# clientlog "ERROR: $msg" clientlog "WARNING: $msg"
} }
} elseif {[string match {slave currents *} $status]} { } elseif {[string match {slave currents *} $status]} {
hupdate [sct objectPath]/status "" hupdate [sct objectPath]/status ""

View File

@ -624,7 +624,7 @@ proc lsc::read_curve {} {
return return
} }
switch [sct target] { switch [sct target] {
raw - code - vacuum - undefined { raw - abs - code - vacuum - undefined {
sct Serial_Number [sct target] sct Serial_Number [sct target]
return return
} }
@ -852,7 +852,7 @@ proc lsc::set_curve {} {
if {[string match "manual*" $sno]} { if {[string match "manual*" $sno]} {
return lsc::detect_sensor return lsc::detect_sensor
} }
if {$sno eq "raw"} { if {[regexp (raw|abs) $sno]} {
sct update $sno sct update $sno
return stdSct::complete return stdSct::complete
} }
@ -1613,7 +1613,6 @@ proc lsc::invalidate_after_commerror {objectPath} {
proc lsc::get370T1 {} { proc lsc::get370T1 {} {
stdSct::scanf "%d,%d" chan auto stdSct::scanf "%d,%d" chan auto
set now [DoubleTime] set now [DoubleTime]
set actchan [silent -1 sct actchan] set actchan [silent -1 sct actchan]
sct actchan $chan sct actchan $chan
@ -1631,7 +1630,7 @@ proc lsc::get370T1 {} {
if {$chan ne $actchan} { if {$chan ne $actchan} {
set apath [silent 0 sct channel_$actchan] set apath [silent 0 sct channel_$actchan]
if {$apath ne "0"} { if {$apath ne "0"} {
if {[hvali $cpath/active]} { if {$cpath ne "0" && [hvali $cpath/active]} {
set updatechan $actchan set updatechan $actchan
} }
} }
@ -1772,10 +1771,11 @@ proc lsc::update370stat {chan} {
set statxt "" set statxt ""
} }
if {[string index $statxt 0] == "t"} { if {[string index $statxt 0] == "t"} {
if {[hvali $sensor/curve] eq "raw"} { if {[regexp (raw|abs) [hvali $sensor/curve]]} {
silent 0 updateval $sensor/status 0 silent 0 updateval $sensor/status 0
} else { } else {
silent 0 updateval $sensor/status "$stat $statxt" silent 0 updateval $sensor/status "$stat $statxt"
hsetprop $sensor geterror "$stat $statxt"
} }
sct send "RDGR?$chan" sct send "RDGR?$chan"
return "lsc::update370R $chan" return "lsc::update370R $chan"
@ -1793,7 +1793,7 @@ proc lsc::update370stat {chan} {
return stdSct::complete return stdSct::complete
} }
silent 0 updateval $sensor/status $stat silent 0 updateval $sensor/status $stat
if {[sctval $sensor/curve] eq "raw"} { if {[regexp (raw|abs) [sctval $sensor/curve]]} {
sct send "RDGR?$chan" sct send "RDGR?$chan"
return "lsc::update370R $chan" return "lsc::update370R $chan"
} }
@ -1813,6 +1813,8 @@ proc lsc::update370R {chan} {
updateval $sensor/raw [sct result] updateval $sensor/raw [sct result]
if {[sctval $sensor/curve] eq "raw"} { if {[sctval $sensor/curve] eq "raw"} {
updateval $sensor [sct result] updateval $sensor [sct result]
} elseif {[sctval $sensor/curve] eq "abs"} {
updateval $sensor [expr abs([sct result])]
} }
hsetprop $sensor updatetime [clock seconds] hsetprop $sensor updatetime [clock seconds]
if {$chan != "A" && [sct model] eq "372" && [silent "" sct channel_A] ne ""} { if {$chan != "A" && [sct model] eq "372" && [silent "" sct channel_A] ne ""} {
@ -3550,7 +3552,7 @@ proc lsc::wrrdgrng370 {} {
} }
proc lsc::wrrdgrng372 {} { proc lsc::wrrdgrng372 {} {
stdSct::scanf "%d,%d,%d,%d,%d,%d" mode exc rng auto csoff oldunit stdSct::scanf "%d,%d,%d,%d,%d,%d" mode exc auto rng csoff oldunit
if {[sctval [sct]/curve] eq "raw"} { if {[sctval [sct]/curve] eq "raw"} {
set unit 2 set unit 2
} else { } else {
@ -3605,7 +3607,7 @@ proc lsc::setrdgrng37x {mode exc rng auto csoff {unit 0} {doit 0}} {
if {[sct model] eq "370"} { if {[sct model] eq "370"} {
sct send "RDGRNG [sct @channel],$mode,$exc,$rng,$auto,$csoff;*OPC?" sct send "RDGRNG [sct @channel],$mode,$exc,$rng,$auto,$csoff;*OPC?"
} else { } else {
sct send "INTYPE [sct @channel],$mode,$exc,$rng,$auto,$csoff,$unit;*OPC?" sct send "INTYPE [sct @channel],$mode,$exc,$auto,$rng,$csoff,$unit;*OPC?"
} }
return stdSct::complete return stdSct::complete
} }

View File

@ -45,8 +45,8 @@ proc luft::writeCf {} {
} else { } else {
luft::set_error "epics error: $val $errtxt" luft::set_error "epics error: $val $errtxt"
} }
if {[scan [lindex [sct target] 0] %d period]} { catch {
sct timeout [expr [clock seconds] + $period + 10] sct timeout [expr [clock seconds] + $timeout + 10]
} }
return idle return idle
} }

View File

@ -3,7 +3,10 @@
namespace eval secop {} { namespace eval secop {} {
} }
proc stdConfig::secop {{shownUnits ALL} {restart no}} { proc stdConfig::secop {{shownUnits ALL} {restart no} {sepUnits ""}} {
# shown units: restrict units shown
# restart: whether to restart on reconnect
# sepUnits: append sepUnits to unis for different graphic window
variable node variable node
variable name variable name
@ -23,6 +26,7 @@ proc stdConfig::secop {{shownUnits ALL} {restart no}} {
prop secopPath /$name prop secopPath /$name
prop active 0 prop active 0
prop shownUnits $shownUnits prop shownUnits $shownUnits
prop sepUnits $sepUnits
set node $node/tasks set node $node/tasks
prop start secop::start prop start secop::start
@ -48,7 +52,7 @@ proc secop::errorscript_ {} {
return secop::update_ return secop::update_
} }
sct connection_lost 1 sct connection_lost 1
[sct controller] poll [sct secopPath] 1 [sct controller] poll [sct secopPath] 5
error [sct result] error [sct result]
} }
@ -76,6 +80,7 @@ proc secop::writemsg {} {
proc secop::readmsg_ {} { # ending with _: invisible on debug proc secop::readmsg_ {} { # ending with _: invisible on debug
if {[sct connection_lost]} { if {[sct connection_lost]} {
[sct controller] poll [sct] 0.001
sct connection_lost 0 sct connection_lost 0
return [secop::start] return [secop::start]
} }
@ -90,14 +95,15 @@ proc secop::test {} {
proc secop::check {} { proc secop::check {} {
if {[silent "" sct secopar] eq ""} return if {[silent "" sct secopar] eq ""} return
set validator [silent {} sct validator] set value [sct target]
eval $validator set validator [silent "" sct validator]
lassign [split [hinfo [sct]] ","] type if {$validator ne ""} {
set msg "change [sct secopar] [sct target]" lappend validator $value
hsetprop [sct] secoprequested [sct target] set value [eval $validator]
if {[string match "f:*" [sct secopar]]} {
clientput "REQ: $msg"
} }
lassign [split [hinfo [sct]] ","] type
set msg "change [sct secopar] $value"
hsetprop [sct] secoprequested [sct target]
[sct controller] que [sct secopPath] write [list secop::queuedwrite $msg] [sct controller] que [sct secopPath] write [list secop::queuedwrite $msg]
} }
@ -133,44 +139,80 @@ proc secop::get {} {
return secop::update_ return secop::update_
} }
proc secop::check_range {min max {absolute_resolution 0} {relative_resolution 0}} { proc secop::check_double {datainfo value} {
set prec [expr max($absolute_resolution, $relative_resolution * abs([sct target]))] set min [silent -inf dict get $datainfo min]
if {[sct target] < $min} { set max [silent inf dict get $datainfo max]
if {[sct target] >= $min - $prec} { set absolute_resolution [silent 0 dict get $datainfo absolute_resolution]
sct target $min set relative_resolution [silent 1.2e-7 dict get $datainfo relative_resolution]
return set prec [expr max($absolute_resolution, $relative_resolution * abs($value))]
if {$value < $min} {
if {$value >= $min - $prec} {
return $min
} }
} elseif {[sct target] > $max} { } elseif {$value > $max} {
if {[sct target] <= $max + $prec} { if {$value <= $max + $prec} {
sct target $max return $max
return
} }
} else { } else {
return return $value
} }
error "[sct] value must be within \[$min, $max\]" error "[sct]: value must be within \[$min, $max\]"
} }
proc secop::check_string {min max} { proc secop::check_int {datainfo value} {
set len [string length [sct target]] return [check_double $datainfo $value]
}
proc secop::check_string {datainfo value} {
set len [string length $value]
set min [silent -inf dict get $datainfo minlen]
set max [silent inf dict get $datainfo maxlen]
if {$len < $min || $len > $max} { if {$len < $min || $len > $max} {
error "[sct] string length must be within \[$min, $max\]" error "[sct]: string length must be within \[$min, $max\]"
} }
sct target [format {"%s"} [sct target]] return [format {"%s"} $value]
} }
proc secop::check_bool {} {
switch -- [string tolower [sct target]] { proc secop::check_bool {datainfo value} {
off - false - no - 0 - on - true - yes - 1 { switch -- [string tolower $value] {
return off - false - no - 0 {
return 0
}
on - true - yes - 1 {
return 1
} }
} }
error "illegal value for boolean: [sct target]" error "[sct]: illegal value for boolean: $value"
} }
proc secop::check_tuple args { proc secop::check_tuple {datainfo value} {
sct target [format {[%s]} [join [sct target] ,]] set items [list]
clientput [sct target] foreach v $value dt [dict get $datainfo members] {
set type [dict get $dt type]
lappend items [check_$type $dt $v]
}
return [format {[%s]} [join $items ,]]
}
proc secop::check_array {datainfo value} {
set items [list]
set dt [dict get $datainfo members]
set type [dict get $dt type]
foreach v $value {
lappend items [check_$type $dt $v]
}
return [format {[%s]} [join $items ,]]
}
proc secop::check_struct {datainfo value} {
set items [list]
foreach {k dt} [dict get $datainfo members] {
set type [dict get $dt type]
set v [check_$type $dt [dict get $value $k]]
lappend items [format {"%s": %s} $k $v]
}
return [format {{%s}} [join $items ", "]]
} }
proc secop::make_par {secopar desc {kind ""}} { proc secop::make_par {secopar desc {kind ""}} {
@ -201,9 +243,8 @@ proc secop::make_par {secopar desc {kind ""}} {
# can not use SICS drivable for string # can not use SICS drivable for string
set kind "" set kind ""
} }
bool {set type text} bool - tuple - array - struct {set type text}
none {set type none} none {set type none}
tuple {set type text}
default { default {
clientput "unknown type for $secopar (use text): $secoptype ($datadesc)" clientput "unknown type for $secopar (use text): $secoptype ($datadesc)"
set type text set type text
@ -224,8 +265,17 @@ proc secop::make_par {secopar desc {kind ""}} {
set fmtunit [format { [%s]} $unit] set fmtunit [format { [%s]} $unit]
} }
if {$par eq "" || $par eq "target"} { if {$par eq "" || $par eq "target"} {
set label [join [split $secopar :] .]
set prevlabel [silent "" result graph_label [string tolower $label]]
if {$prevlabel ne ""} {
set label $prevlabel
}
if {[sct shownUnits] eq "ALL" || [lsearch [sct shownUnits] $unit] >= 0} { if {[sct shownUnits] eq "ALL" || [lsearch [sct shownUnits] $unit] >= 0} {
GraphAdd $path $unit [join [split $secopar :] .] set sepUnits [silent "" sct sepUnits]
if {$sepUnits ne ""} {
set unit "${unit}_$sepUnits"
}
GraphAdd $path $unit $label
} }
} }
} }
@ -251,7 +301,7 @@ proc secop::make_par {secopar desc {kind ""}} {
} }
hsetprop $path enum [join $enumprop ,] hsetprop $path enum [join $enumprop ,]
if {[silent "" hgetpropval $path type] eq "drivable"} { if {[silent "" hgetpropval $path type] eq "drivable"} {
hsetprop $path visible false hsetprop $path visible readonly
} }
if {$wid > 8} { if {$wid > 8} {
hsetprop $path width $wid hsetprop $path width $wid
@ -260,29 +310,18 @@ proc secop::make_par {secopar desc {kind ""}} {
} }
bool { bool {
hsetprop $path enum 1 hsetprop $path enum 1
hsetprop $path validator secop::check_bool hsetprop $path validator [list secop::check_bool $datadesc]
} }
double { double {
set min [silent -inf dict get $datadesc min] hsetprop $path validator [list secop::check_double $datadesc]
set max [silent inf dict get $datadesc max]
set absolute_resolution [silent 0 dict get $datadesc absolute_resolution]
set relative_resolution [silent 1.2e-7 dict get $datadesc relative_resolution]
hsetprop $path validator [concat secop::check_range $min $max $absolute_resolution $relative_resolution]
} }
int { int {
set min [silent -inf dict get $datadesc min] hsetprop $path validator [list secop::check_int $datadesc]
set max [silent inf dict get $datadesc max]
hsetprop $path validator [concat secop::check_range $min $max]
} }
string { string - tuple - struct - array {
set min [silent -inf dict get $datadesc min] set type [dict get $datadesc type]
set max [silent inf dict get $datadesc max] hsetprop $path width 36
hsetprop $path width 16 hsetprop $path validator [list secop::check_$type $datadesc]
hsetprop $path validator [concat secop::check_string $min $max]
}
tuple { # TODO: make it work for more complex than number tuples
set args [dict get $datadesc members]
hsetprop $path validator [linsert $args 0 secop::check_tuple]
} }
} }
return $path return $path
@ -349,12 +388,14 @@ proc secop::make_par0 {type path secopar desc {kind std}} {
# logsetup $path 1 # logsetup $path 1
logsetup $path 5 logsetup $path 5
if {[info exists props(value)]} { if {[info exists props(value)]} {
clientput "VALUE in descr $path"
if {[catch {hupdate /$path $props(value)} msg]} { if {[catch {hupdate /$path $props(value)} msg]} {
clientput $msg clientput $msg
} }
unset props(value) unset props(value)
} }
if {![catch {set fmtstr [dict get $props(datainfo) fmtstr]}]} {
hsetprop $path fmtstr $fmtstr
}
foreach {prop item} [array get props] { foreach {prop item} [array get props] {
hsetprop $path s_$prop $item hsetprop $path s_$prop $item
} }
@ -571,6 +612,7 @@ proc secop::update_ {} {
if {$messagetype eq "changed"} { if {$messagetype eq "changed"} {
if {[string match *:target $par]} { if {[string match *:target $par]} {
hsetprop /$obj writestatus done hsetprop /$obj writestatus done
hsetprop /$obj changetime 0
} }
hsetprop $path changed 0 hsetprop $path changed 0
catch {hdelprop $path secoprequested} catch {hdelprop $path secoprequested}
@ -609,8 +651,9 @@ proc secop::update_ {} {
set shown 0 set shown 0
} }
set writestatus [silent done hgetpropval $objpath writestatus] set writestatus [silent done hgetpropval $objpath writestatus]
set changetime [silent 0 hgetpropval $objpath changetime]
if {$value < 100 || $value >= 400} { # error if {$value < 100 || $value >= 400} { # error
updateerror $objpath $text_value # updateerror $objpath $text_value
catch { catch {
updateerror $objpath/target $text_value updateerror $objpath/target $text_value
} }
@ -618,12 +661,12 @@ proc secop::update_ {} {
hsetprop $objpath status posfault hsetprop $objpath status posfault
} }
} else { } else {
if {[silent idle hgetpropval $objpath status] eq "run" && $writestatus ne "done" # if {[silent idle hgetpropval $objpath status] eq "run" && $writestatus ne "done"
&& ($value < 300 || $value >= 390)} { # && ($value < 300 || $value >= 390)} {
clientput "$objpath/target changed, but status not BUSY: $value $text_value ($writestatus)" # clientput "$objpath/target changed, but status not BUSY: $value $text_value ($writestatus)"
set value 300 # set value 300
set text_value "target changed ($text_value)" # set text_value "target changed ($text_value)"
} # }
if {$value < 300 || $value >= 390} { # not busy or finalizing if {$value < 300 || $value >= 390} { # not busy or finalizing
hsetprop $objpath status idle hsetprop $objpath status idle
} }
@ -638,7 +681,12 @@ proc secop::update_ {} {
} }
GraphItem shown $objpath $shown GraphItem shown $objpath $shown
if {[silent "" hgetpropval $objpath/target logger_name] ne ""} { if {[silent "" hgetpropval $objpath/target logger_name] ne ""} {
GraphItem shown $objpath/target $shown if {[string match *Drivable* [silent "" hgetpropval $objpath sm_interface_classes]]
&& [silent "enum" hgetpropval $objpath/target secoptype] ne "enum"} {
GraphItem shown $objpath/target $shown
} else {
GraphItem shown $objpath/target 0
}
} }
set text_path [regsub {status_code$} $path status_text] set text_path [regsub {status_code$} $path status_text]
if {[catch {updateval $text_path $text_value}]} { if {[catch {updateval $text_path $text_value}]} {
@ -715,6 +763,7 @@ proc secop::update_ {} {
hsetprop $path geterror "${etype}: $etext" hsetprop $path geterror "${etype}: $etext"
} }
error_* { error_* {
clientlog $val
lassign $val etype etext lassign $val etype etext
set requesttype [string range $messagetype 6 end] set requesttype [string range $messagetype 6 end]
if {$requesttype eq "change" && $path ne ""} { if {$requesttype eq "change" && $path ne ""} {
@ -768,6 +817,7 @@ proc secop::checklimits {} {
[sct target] != [silent "x" hgetpropval [sct]/target target]} { [sct target] != [silent "x" hgetpropval [sct]/target target]} {
hset [sct]/target [sct target] hset [sct]/target [sct target]
sct writestatus checked sct writestatus checked
sct changetime [DoubleTime]
sct status run sct status run
} }
} }
@ -804,6 +854,7 @@ proc secop::halt {} {
sct stop_issued [DoubleTime] sct stop_issued [DoubleTime]
} else { } else {
sct writestatus done sct writestatus done
sct changetime 0
sct status idle sct status idle
} }
return idle return idle
@ -816,6 +867,7 @@ proc secop::finish_halt {} {
return idle return idle
} }
sct writestatus done sct writestatus done
sct changetime 0
sct status idle sct status idle
return unpoll return unpoll
} }

View File

@ -18,7 +18,7 @@ proc stdConfig::sensirion {} {
prop read stdSct::read prop read stdSct::read
prop update sensirion::updateFlow prop update sensirion::updateFlow
kids "$name settings" { kids "n.v. flow" {
node stddev upd node stddev upd

View File

@ -1,11 +1,11 @@
deviceDesc = SECoP test (version v1.0) deviceDesc = FRAPPY history recorder, with He pump
set ::secop_version 4 set ::secop_version 4
makenv frappy_main -driver secop -port pc12694:5000 foreach {service port} [exec frappy getports [result instrument]] {
#makenv frappy_stick -driver secop -port localhost:15201 makenv frappy_$service -driver secop -port localhost:$port
makenv frappy_addons -driver secop -port localhost:15301 }
#debug _secop set hepump [silent undefined hval /cfg_env/_hepump]
if {$hepump ne "undefined"} {
#dolater 0 _secop poll /secop 1 read test makeHePump
}

View File

@ -12,6 +12,6 @@ makenv tt -driver [lsdriver] {
} }
tt set/limit 310 tt set/limit 310
makeCCU4 ill2 nv n2 he makeCCU4 ill2 nv n2 he
hupdate /nv/set 2.0 hupdate /nv/set 1.0
source std_orange.table source std_orange.table

View File

@ -11,6 +11,7 @@ makenv tt -driver [lsdriver] {
} }
tt set/limit 310 tt set/limit 310
makeCCU4 ill5 nv n2 he makeCCU4 ill5 nv n2 he
nv set 1
source maxi_orange.table source maxi_orange.table

View File

@ -32,6 +32,7 @@ makenv pccu -driver ccu4 pressure_ccu
makenv p -driver ccupressure pccu 28 makenv p -driver ccupressure pccu 28
GraphAdd p bar p auto GraphAdd p bar p auto
# needed for TASMAD: must be drivable
makenv i1 -driver drvpar /p makenv i1 -driver drvpar /p
hsetprop /tc group "capillary temperature" hsetprop /tc group "capillary temperature"

View File

@ -3,3 +3,4 @@ instconfig makeitem n2fill 1
instconfig makeitem hefill 1 instconfig makeitem hefill 1
# he vessel with RS232 # he vessel with RS232
instconfig makeitem hevessel 1 instconfig makeitem hevessel 1
instconfig makeitem sensirion 1

View File

@ -1,2 +1,3 @@
# enable automatic N2 filling # enable automatic N2 filling
instconfig makeitem n2fill 1 instconfig makeitem n2fill 1
instconfig makeitem sensirion 1

View File

@ -3,7 +3,8 @@ deviceDesc = flow cryo for LEM
defineTemperature tt defineTemperature tt
makenv tt -driver [lsdriver] { makenv tt -driver [lsdriver] {
lsc_sensor tm A -sensor x174783 -sensorname HX # lsc_sensor tm A -sensor x174783 -sensorname HX #(this got replaced 1.3.2023)
lsc_sensor tm A -sensor x70263 -sensorname HX
# lsc_sensor tsep B -sensor x86021 -sensorname sep # lsc_sensor tsep B -sensor x86021 -sensorname sep
lsc_sensor ts C -sensorname sample lsc_sensor ts C -sensorname sample
lsc_sensor tsh D -sensor pt1000e -sensorname shield lsc_sensor tsh D -sensor pt1000e -sensorname shield

View File

@ -16,6 +16,7 @@ proc readpipe {} {
puts stdout "> $line" puts stdout "> $line"
} }
if {[eof $sea(pipe)]} { if {[eof $sea(pipe)]} {
puts stdout EOF
exit exit
} }
lassign $line adr date time value lassign $line adr date time value
@ -65,7 +66,12 @@ set env(EPICS_CA_AUTO_ADDR_LIST) NO
set env(PATH) $env(PATH):/afs/psi.ch/project/sinq/rhel7/stow/base-3.15.5/bin/linux-x86_64-debug/ set env(PATH) $env(PATH):/afs/psi.ch/project/sinq/rhel7/stow/base-3.15.5/bin/linux-x86_64-debug/
set sea(debug) [lindex "$argv 0" 0] set sea(debug) [lindex "$argv 0" 0]
set sea(heartbeat) 300 if {$sea(debug) eq "1"} {
set sea(heartbeat) 20
} else {
set sea(heartbeat) 300
set sea(debug) 0
}
# connect to sea server prep0 # connect to sea server prep0
set sea(sock) [socket samenv.psi.ch 8640] set sea(sock) [socket samenv.psi.ch 8640]
@ -78,15 +84,14 @@ if {$sea(debug)} {
set cmd "/afs/psi.ch/project/sinq/rhel7/stow/base-3.15.5/bin/linux-x86_64-debug/camonitor [array names values]" set cmd "/afs/psi.ch/project/sinq/rhel7/stow/base-3.15.5/bin/linux-x86_64-debug/camonitor [array names values]"
set ret [catch {set proc [exec ps ax -o pid,args | grep $cmd]} msg] set ret [catch {set proc [exec ps ax -o pid,args | grep $cmd]} msg]
set killed [list]
if {$ret == 0} { if {$ret == 0} {
foreach line [split $proc "\n"] { foreach line [split $proc "\n"] {
set l [split [string trim $line]] set l [split [string trim $line]]
set c [lrange $l 1 end] set c [lrange $l 1 end]
if {"$c" eq "$cmd"} { if {"$c" eq "$cmd"} {
# process was still running # process was still running
if {$sea(debug)} { lappend killed [lindex $l 0]
puts stdout "kill $proc ($c)"
}
exec kill -9 [lindex $l 0] exec kill -9 [lindex $l 0]
} }
} }
@ -95,5 +100,15 @@ if {$ret == 0} {
set sea(pipe) [open "|$cmd" r] set sea(pipe) [open "|$cmd" r]
fileevent $sea(pipe) readable readpipe fileevent $sea(pipe) readable readpipe
puts stdout [pid $sea(pipe)] set mypid [pid $sea(pipe)]
set f [open $env(HOME)/monitfiles/luft_camonitor.pid w]
puts $f $mypid
close $f
puts stdout $mypid
if {[llength $killed] > 0 && $sea(debug)} {
puts stdout "killed $killed"
}
seacom "clientlog luft started"
vwait forever vwait forever

View File

@ -19,7 +19,7 @@ tt set/integ 10
makeCCU4 ma02 nv n2 makeCCU4 ma02 nv n2
hupdate /nv/set 1.8 hupdate /nv/set 1.2
makeIps -limit 1.8 -startRamp 0.5 -port ma02-ts:3002 makeIps -limit 1.8 -startRamp 0.5 -port ma02-ts:3002

View File

@ -38,6 +38,8 @@ mf gen/limit 10
mf gen/wait_switch_on 15 mf gen/wait_switch_on 15
mf gen/wait_switch_off 30 mf gen/wait_switch_off 30
mf gen/wait_stable_leads 5
mf gen/wait_stable_field 15
makeIpsLev -port ma10-ts:3001 -controller _mf makeIpsLev -port ma10-ts:3001 -controller _mf

View File

@ -1,3 +1,4 @@
stickDesc = standard MA10 stick stickDesc = standard MA10 stick
stick_sensors x88932 code=22000 #stick_sensors x88932 code=22000 #until May 2023
stick_sensors x154359 none

View File

@ -16,8 +16,8 @@ makenv tt -driver [lsdriver] {
#tt set/limit 310 #tt set/limit 310
makeCCU4 ma6 nv makeCCU4 ma6 nv he_ilm
hupdate /nv/set 2.0 hupdate /nv/set 1.2
makeN2Fill ccu4ilm { makeN2Fill ccu4ilm {
ln2fill lowlevel 10 ln2fill lowlevel 10
ln2fill highlevel 100 ln2fill highlevel 100
@ -29,6 +29,9 @@ makeN2Fill ccu4ilm {
makeHeFill ccu4ilm makeHeFill ccu4ilm
makeIps -limit 6 -startRamp 0.3844 -port ma6-ts:3002 makeIps -limit 6 -startRamp 0.3844 -port ma6-ts:3002
if {[result instrument] eq "tasp"} {
mf limit 4
}
makeIlm -channels 2 -port ma6-ts:3001 makeIlm -channels 2 -port ma6-ts:3001

View File

@ -1,3 +1,3 @@
stickDesc = standard MA6 stick stickDesc = standard MA6 stick
stick_sensors x63161 x63163 stick_sensors x63161 undefined

View File

@ -1,10 +1,15 @@
deviceDesc = 5T System (1975) deviceDesc = 5T System (1975)
device stick_menu "dilmango dilRDR5 dilRDR2 dilRDRN" device stick_menu "dilmango dilRDR5 dilRDR2 dilRDRN"
GraphOrder K W makenv temp -driver 370_lsc {
lsc_sensor main -channel 1 -sensor manual -excitation 10uA
}
GraphAdd temp.main K T
GraphAdd temp.main.raw Ohm R
# levelmeter # levelmeter
makeCCU4 mango nv he makeCCU4 mango he
cc hts 40 cc hts 40
cc htf 10 cc htf 10
@ -14,6 +19,8 @@ cc hem 550
# 250 l vessel: # 250 l vessel:
cc hem0 720 cc hem0 720
if {0} { # magnet manually
makenv mf -driver smc -port Prologix-00-21-69-01-19-57:1234 makenv mf -driver smc -port Prologix-00-21-69-01-19-57:1234
mf gen/profile 5:1 mf gen/profile 5:1
mf gen/profile_training 5:1 mf gen/profile_training 5:1
@ -21,3 +28,6 @@ GraphAdd mf T mf
GraphAdd mf.smc.leads_set T mf_set GraphAdd mf.smc.leads_set T mf_set
GraphAdd mf.smc.leads_meas T mf_cur GraphAdd mf.smc.leads_meas T mf_cur
}

View File

@ -1,89 +1,12 @@
deviceDesc = 11 Tesla vertical 100mm cryomagnet deviceDesc = FRAPPY history recorder, with stick
device stick_menu "mb11 dil5 varioxB" set ::secop_version 4
makenv tvs -driver itctemp -port mb11-ts:3001 -controller _tt DB6.T1 DB1.H1 set ins [result instrument]
GraphAdd tvs K T_VTIs red if {[string match "prep*" $ins]} {
GraphAdd tvs.set K T_stat_set orange set nr [string range $ins end end]
GraphAdd tvs.pow W pow_tvs red } else {
# GraphAdd tvs.raw Ohm R_tvs red error "runs on prep0-9 only"
makenv tvd -driver itctemp -port mb11-ts:3001 -controller _tt DB7.T1 DB2.H1
GraphAdd tvd K T_VTId magenta
GraphAdd tvd.set K T_dyn_set violet
GraphAdd tvd.pow W pow_tvd magenta
# GraphAdd tvd.raw Ohm R_tvd magenta
makeIpsLev -port mb11-ts:3003 -controller _mf -slot DB1
makenv pstat -driver itcpress -port mb11-ts:3001 -controller _tt DB5.P1 DB3.G1
GraphAdd pstat mbar p_stat
# GraphAdd pstat.pos % nv_stat
GraphAdd pstat.set mbar p_stat_set
makenv pdyn -driver itcpress -port mb11-ts:3001 -controller _tt DB8.P1 DB4.G1
GraphAdd pdyn mbar p_dyn
# GraphAdd pdyn.pos % nv_dyn
GraphAdd pdyn.set mbar p_dyn_set
makenv tneck1 -driver itctemp -port mb11-ts:3002 -controller _ta MB1.T1 MB0.H1
makenv tneck2 -driver itctemp -port mb11-ts:3002 -controller _ta DB6.T1 DB1.H1
makenv tnvs -driver itctemp -port mb11-ts:3002 -controller _ta DB7.T1 DB2.H1
makenv tnvd -driver itctemp -port mb11-ts:3002 -controller _ta DB8.T1 DB3.H1
# GraphAdd tneck1 K_2 T_neck1
# GraphAdd tneck1.pow W pow_neck1
# GraphAdd tneck2 K_2 T_neck2
# GraphAdd tneck2.pow W pow_neck2
# GraphAdd tnvs K_2 T_nvs
# GraphAdd tnvs.pow W pow_nvs
# GraphAdd tnvd K_2 T_nvd
# GraphAdd tnvd.pow W pow_nvd
makenv mf -driver ipsmag -port mb11-ts:3003 -controller _mf
makeCCU4 mb11
makeHeFill ccu4ilm
makeN2Fill ccu4ilm {
ln2fill lowlevel 10
ln2fill highlevel 90
ln2fill minfillminutes 8
ln2fill maxfillminutes 60
ln2fill minholdhours 12
ln2fill maxholdhours 96
} }
makenv frappy_main -driver secop -port localhost:1511$nr
makeHePump makeHePump
GraphAdd mf T mf
GraphAdd mf.ips.leads_meas T mf_leads green
GraphAdd mf.ips.slave1 A I_master red
GraphAdd mf.ips.slave2 A I_slave2 green
GraphAdd mf.ips.slave3 A I_slavw3 blue
hupdate /mf/ips/symode symmetric
mf gen/profile 11:0.25
mf gen/profile_training 11:0.25
mf gen/limit 10
mf gen/wait_switch_on 60
mf gen/wait_switch_off 60
mf gen/wait_stable_leads 5
mf gen/wait_stable_field 30
makeCCU4 mb11
makeN2Fill ccu4ilm {
ln2fill lowlevel 10
# ln2fill highlevel 95
ln2fill minfillminutes 8
ln2fill maxfillminutes 40
ln2fill minholdhours 24
ln2fill maxholdhours 96
# appendVars ln2fill.smooth/%/N2smooth/13
}
makenv tcoil -driver itctemp -port mb11-ts:3003 -controller _mf MB1.T1
# GraphAdd tcoil K_2 T_coil
setstickrot mb11-ts:3004

View File

@ -1,9 +0,0 @@
stickDesc = stick for MB11
defineTemperature ts
makenv ts -driver itctemp -port mb11-ts:3001 -controller _tt MB1.T1 MB0.H1
GraphAdd ts K T_sam blue
GraphAdd ts.set K T_sam_set cyan
GraphAdd ts.pow W pow_ts blue
GraphAdd ts.raw Ohm R_ts blue

View File

@ -1695,6 +1695,7 @@ proc autodevice_cnt {value} {
proc autodeviceCron {} { proc autodeviceCron {} {
global change_device_to_none unplugged_device global change_device_to_none unplugged_device
logconfig flush
rack_check_connection rack_check_connection
set act [silent "" result device action] set act [silent "" result device action]
set now [clock seconds] set now [clock seconds]

View File

@ -57,6 +57,7 @@ ServerOption TelWord sealogin
allowexec [pwd]/plugin/safeplugin allowexec [pwd]/plugin/safeplugin
allowexec ping allowexec ping
allowexec dig allowexec dig
allowexec frappy
definealias tem temperature definealias tem temperature

View File

@ -81,12 +81,20 @@ proc makeCCU4 {args} {
helium_register _cc /cc/h0 vessel helium_register _cc /cc/h0 vessel
if {$vessel ne "0"} { if {$vessel ne "0"} {
catch {cc hea 1} catch {cc hea 1}
catch {cc hem0 475}
catch {cc hfu0 0}
} }
} }
helium_register _cc /cc/h helium_register _cc /cc/h
} }
he_ilm { he_ilm {
makenv hefill -driver ccu4ext he lev makenv hefill -driver ccu4ext he lev
set vessel [silent 0 result instconfig hevessel]
if {$vessel ne "0"} {
catch {cc hea 1}
catch {cc hem0 475}
catch {cc hfu0 0}
}
GraphAdd lev % He_Level brown GraphAdd lev % He_Level brown
GraphAdd cc.h0 % HeVessel blue GraphAdd cc.h0 % HeVessel blue
hsetprop /hefill fast_cmd "lev mode 1\ncc hf 1" hsetprop /hefill fast_cmd "lev mode 1\ncc hf 1"

View File

@ -91,9 +91,13 @@ proc hdbItem {path title} {
set buttons [silent "" hgetpropval $path buttons] set buttons [silent "" hgetpropval $path buttons]
set val "" set val ""
if {[string match "run *" $cmd]} { if {[string match "run *" $cmd]} {
set val [silent "" hgetpropval $path target] set cmd2 [string range $cmd 4 end]
set cmd2 [string range $cmd 4 end] if {[silent 0 hgetpropval $path visible] eq "readonly"} {
set val [silent $val result $cmd2 target] set val [silent "" hvali $path]
} else {
# set val [silent "" hgetpropval $path target]
set val [silent $val result $cmd2 target]
}
clientput "-P" clientput "-P"
} elseif {$type eq "func"} { } elseif {$type eq "func"} {
clientput "-T$title" clientput "-T$title"
@ -102,7 +106,8 @@ proc hdbItem {path title} {
return return
} else { } else {
set cmd2 "" set cmd2 ""
if {[catch {set val [result $cmd]} msg]} { # using {set val [result $cmd]} will have strange effects: 'xatto info' is like 'run xatto inf'!
if {[catch {set val [hval $path]} msg]} {
if {$msg eq "ERROR: not read yet"} { if {$msg eq "ERROR: not read yet"} {
set val "" set val ""
} else { } else {
@ -117,10 +122,20 @@ proc hdbItem {path title} {
set priv internal set priv internal
clientput "-P" clientput "-P"
} }
set fmtstr [silent "" hgetpropval $path fmtstr]
if {$fmtstr ne ""} {
set val [format $fmtstr $val]
}
if {[silent "" hgetpropval $path visible] eq "readonly"} {
set priv internal
}
switch $priv { switch $priv {
user - spy { user - spy {
set val [silent $val hgetpropval $path requested] set val [silent $val hgetpropval $path requested]
set val [silent $val hgetpropval $path secoprequested] set val [silent $val hgetpropval $path secoprequested]
#if {$fmtstr ne ""} {
# set val [format $fmtstr $val]
#}
set enum [silent "" hgetpropval $path enum] set enum [silent "" hgetpropval $path enum]
if {$enum eq ""} { if {$enum eq ""} {
# experimental # experimental
@ -292,6 +307,8 @@ proc nodeVisible {path {key visible}} {
set vis [silent true hgetpropval $path $key] set vis [silent true hgetpropval $path $key]
if {$vis eq "expert"} { if {$vis eq "expert"} {
return [info exists shown_groups(expertMode)] return [info exists shown_groups(expertMode)]
} elseif {$vis eq "readonly"} {
return 1
} }
return $vis return $vis
} }
@ -305,7 +322,9 @@ proc hdbLayout {path} {
# clientput "L $path G $group [nodeVisible $path groupMode]" # clientput "L $path G $group [nodeVisible $path groupMode]"
if {! [string equal 0 $group] && [nodeVisible $path groupMode]} { if {! [string equal 0 $group] && [nodeVisible $path groupMode]} {
lassign [split $path /] _ obj lassign [split $path /] _ obj
if {![string match *$obj* $group]} { if {[string tolower $obj] eq $group} {
set group $obj
} elseif {![string match *$obj* $group]} {
set group "$group \[$obj\]" set group "$group \[$obj\]"
} }
clientput "-T$group" clientput "-T$group"

View File

@ -8,6 +8,8 @@ proc makeHePump {} {
set type 1 set type 1
} elseif {$type eq "sv65"} { } elseif {$type eq "sv65"} {
set type 2 set type 2
} elseif {$type eq "neodry"} {
set type 8
} else { } else {
error "unknown hepump type: $type" error "unknown hepump type: $type"
} }
@ -37,8 +39,8 @@ proc pump_is_off {} {
} }
} }
hupdate [sct]/status $pmsg hupdate [sct]/status $pmsg
return 1 return 1
} }
if {[string match ${msghead}* [hvali [sct]/status]]} { if {[string match ${msghead}* [hvali [sct]/status]]} {
hupdate [sct]/status "" hupdate [sct]/status ""
} }
@ -58,3 +60,4 @@ proc pump_health_update {instrument value} {
} }
publishLazy pump_health_update Spy

9
tcl/uniax.stick Normal file
View File

@ -0,0 +1,9 @@
stickDesc = Uniax stick via SECoP on the apu (via network)
set ::secop_version 4
makenv frappy-stick -driver secop -port linse-uniax:5000
stick_sensors undefined undefined
defineTemperature t