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
Serial Number: U08127
Data Format: 4 (Log Ohms/Kelvin)
SetPoint Limit: 0.0282 (Kelvin)
SetPoint Limit: 20 (Kelvin)
Temperature coefficient: 1 (Negative)
Number of Breakpoints: 198

View File

@ -1,7 +1,7 @@
Sensor Model: RX-1000-BF0.007
Serial Number: U08130
Data Format: 4 (Log Ohms/Kelvin)
SetPoint Limit: 0.0167 (Kelvin)
SetPoint Limit: 10 (Kelvin)
Temperature coefficient: 1 (Negative)
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
Data Format: 4 (Log Ohms/Kelvin)
SetPoint Limit: 330.0 (Kelvin)
@ -7,202 +7,202 @@ Number of Breakpoints: 199
No. Units Temperature (K)
1 1.850262 330.0000
2 1.872411 310.0000
3 1.882317 301.5330
4 1.892304 293.2973
5 1.902354 285.2865
6 1.912463 277.4945
7 1.922624 269.9153
8 1.932832 262.5431
9 1.943081 255.3723
10 1.953365 248.3974
11 1.963678 241.6129
12 1.974018 235.0138
13 1.984381 228.5949
14 1.994764 222.3513
15 2.005163 216.2782
16 2.015577 210.3710
17 2.026001 204.6252
18 2.036432 199.0363
19 2.046867 193.6000
20 2.057303 188.3123
21 2.067736 183.1689
22 2.078163 178.1660
23 2.088580 173.2998
24 2.098985 168.5665
25 2.109374 163.9624
26 2.119744 159.4842
27 2.130095 155.1282
28 2.140425 150.8912
29 2.150733 146.7699
30 2.161020 142.7612
31 2.171286 138.8620
32 2.181533 135.0693
33 2.191754 131.3801
34 2.201938 127.7918
35 2.212076 124.3014
36 2.222164 120.9064
37 2.232210 117.6041
38 2.242221 114.3920
39 2.252206 111.2676
40 2.262166 108.2285
41 2.272098 105.2725
42 2.282004 102.3972
43 2.291883 99.60045
44 2.301733 96.88007
45 2.311557 94.23400
46 2.321355 91.66019
47 2.331126 89.15669
48 2.340872 86.72156
49 2.350593 84.35294
50 2.360289 82.04902
51 2.369962 79.80803
52 2.379611 77.62824
53 2.389238 75.50799
54 2.398844 73.44565
55 2.408430 71.43963
56 2.417996 69.48841
57 2.427542 67.59048
58 2.437071 65.74439
59 2.446581 63.94872
60 2.456075 62.20210
61 2.465551 60.50318
62 2.475011 58.85066
63 2.484456 57.24328
64 2.493886 55.67980
65 2.503301 54.15902
66 2.512701 52.67978
67 2.522088 51.24095
68 2.531459 49.84141
69 2.540815 48.48010
70 2.550156 47.15596
71 2.559481 45.86800
72 2.568790 44.61521
73 2.578084 43.39664
74 2.587360 42.21135
75 2.596621 41.05844
76 2.605864 39.93701
77 2.615090 38.84622
78 2.624300 37.78522
79 2.633492 36.75319
80 2.642669 35.74936
81 2.651832 34.77294
82 2.660985 33.82319
83 2.670129 32.89938
84 2.679266 32.00080
85 2.688398 31.12677
86 2.697526 30.27661
87 2.706648 29.44966
88 2.715760 28.64531
89 2.724862 27.86292
90 2.733951 27.10191
91 2.743025 26.36167
92 2.752082 25.64166
93 2.761123 24.94131
94 2.770148 24.26009
95 2.779160 23.59748
96 2.788161 22.95297
97 2.797154 22.32605
98 2.806142 21.71626
99 2.815129 21.12313
100 2.824117 20.54620
101 2.833110 19.98502
102 2.842110 19.43917
103 2.851119 18.90823
104 2.860139 18.39179
105 2.869171 17.88946
106 2.878218 17.40085
107 2.887281 16.92558
108 2.896361 16.46329
109 2.905459 16.01363
110 2.914579 15.57626
111 2.923720 15.15082
112 2.932886 14.73701
113 2.942077 14.33450
114 2.951295 13.94298
115 2.960544 13.56216
116 2.969824 13.19174
117 2.979138 12.83143
118 2.988488 12.48097
119 2.997878 12.14008
120 3.007311 11.80850
121 3.016788 11.48597
122 3.026314 11.17226
123 3.035891 10.86711
124 3.045522 10.57030
125 3.055212 10.28159
126 3.064964 10.00077
127 3.074781 9.727624
128 3.084665 9.461935
129 3.094618 9.203502
130 3.104643 8.952128
131 3.114742 8.707619
132 3.124920 8.469789
133 3.135180 8.238455
134 3.145525 8.013439
135 3.155959 7.794568
136 3.166484 7.581676
137 3.177102 7.374599
138 3.187813 7.173177
139 3.198620 6.977257
140 3.209523 6.786688
141 3.220523 6.601324
142 3.231622 6.421023
143 3.242822 6.245646
144 3.254129 6.075059
145 3.265545 5.909132
146 3.277075 5.747736
147 3.288724 5.590749
148 3.300497 5.438050
149 3.312397 5.289521
150 3.324427 5.145049
151 3.336590 5.004522
152 3.348889 4.867834
153 3.361329 4.734880
154 3.373911 4.605557
155 3.386639 4.479766
156 3.399516 4.357410
157 3.412545 4.238397
158 3.425730 4.122634
159 3.439074 4.010033
160 3.452584 3.900507
161 3.466264 3.793973
162 3.480120 3.690349
163 3.494156 3.589555
164 3.508381 3.491514
165 3.522798 3.396150
166 3.537416 3.303392
167 3.552240 3.213166
168 3.567277 3.125406
169 3.582534 3.040042
170 3.598016 2.957009
171 3.613729 2.876245
172 3.629679 2.797686
173 3.645872 2.721273
174 3.662313 2.646948
175 3.679009 2.574652
176 3.695966 2.504331
177 3.713188 2.435930
178 3.730682 2.369398
179 3.748450 2.304683
180 3.766493 2.241735
181 3.784809 2.180507
182 3.803400 2.120951
183 3.822270 2.063022
184 3.841422 2.006675
185 3.860861 1.951866
186 3.880608 1.898555
187 3.900697 1.846700
188 3.921159 1.796262
189 3.942012 1.747201
190 3.963250 1.699479
191 3.984864 1.653062
192 4.006851 1.607912
193 4.029226 1.563995
194 4.052005 1.521278
195 4.075207 1.479727
196 4.098850 1.439312
197 4.122955 1.400000
198 4.265975 1.200000
199 4.444104 1.000000
1 1.548341 330.0000
2 1.566886 310.0000
3 1.575186 301.5330
4 1.583533 293.2973
5 1.591922 285.2865
6 1.600348 277.4945
7 1.608807 269.9153
8 1.617293 262.5431
9 1.625802 255.3723
10 1.634326 248.3974
11 1.642863 241.6129
12 1.651409 235.0138
13 1.659960 228.5949
14 1.668514 222.3513
15 1.677068 216.2782
16 1.685619 210.3710
17 1.694164 204.6252
18 1.702701 199.0363
19 1.711225 193.6000
20 1.719734 188.3123
21 1.728225 183.1689
22 1.736695 178.1660
23 1.745141 173.2998
24 1.753560 168.5665
25 1.761950 163.9624
26 1.770307 159.4842
27 1.778629 155.1282
28 1.786913 150.8912
29 1.795158 146.7699
30 1.803361 142.7612
31 1.811523 138.8620
32 1.819645 135.0693
33 1.827726 131.3801
34 1.835766 127.7918
35 1.843766 124.3014
36 1.851726 120.9064
37 1.859646 117.6041
38 1.867526 114.3920
39 1.875366 111.2676
40 1.883166 108.2285
41 1.890927 105.2725
42 1.898649 102.3972
43 1.906332 99.60045
44 1.913976 96.88007
45 1.921583 94.23400
46 1.929152 91.66019
47 1.936686 89.15669
48 1.944184 86.72156
49 1.951649 84.35294
50 1.959080 82.04902
51 1.966479 79.80803
52 1.973846 77.62824
53 1.981182 75.50799
54 1.988488 73.44565
55 1.995763 71.43963
56 2.003008 69.48841
57 2.010223 67.59048
58 2.017406 65.74439
59 2.024559 63.94872
60 2.031681 62.20210
61 2.038773 60.50318
62 2.045833 58.85066
63 2.052862 57.24328
64 2.059860 55.67980
65 2.066827 54.15902
66 2.073763 52.67978
67 2.080667 51.24095
68 2.087541 49.84141
69 2.094382 48.48010
70 2.101193 47.15596
71 2.107971 45.86800
72 2.114719 44.61521
73 2.121434 43.39664
74 2.128118 42.21135
75 2.134770 41.05844
76 2.141391 39.93701
77 2.147979 38.84622
78 2.154536 37.78522
79 2.161061 36.75319
80 2.167554 35.74936
81 2.174016 34.77294
82 2.180448 33.82319
83 2.186849 32.89938
84 2.193220 32.00080
85 2.199562 31.12677
86 2.205874 30.27661
87 2.212157 29.44966
88 2.218411 28.64531
89 2.224634 27.86292
90 2.230828 27.10191
91 2.236992 26.36167
92 2.243126 25.64166
93 2.249231 24.94131
94 2.255307 24.26009
95 2.261356 23.59748
96 2.267380 22.95297
97 2.273381 22.32605
98 2.279361 21.71626
99 2.285321 21.12313
100 2.291265 20.54620
101 2.297194 19.98502
102 2.303110 19.43917
103 2.309015 18.90823
104 2.314910 18.39179
105 2.320796 17.88946
106 2.326676 17.40085
107 2.332551 16.92558
108 2.338422 16.46329
109 2.344290 16.01363
110 2.350157 15.57626
111 2.356025 15.15082
112 2.361895 14.73701
113 2.367769 14.33450
114 2.373647 13.94298
115 2.379533 13.56216
116 2.385427 13.19174
117 2.391331 12.83143
118 2.397247 12.48097
119 2.403176 12.14008
120 2.409121 11.80850
121 2.415084 11.48597
122 2.421066 11.17226
123 2.427070 10.86711
124 2.433098 10.57030
125 2.439152 10.28159
126 2.445235 10.00077
127 2.451348 9.727624
128 2.457494 9.461935
129 2.463672 9.203502
130 2.469884 8.952128
131 2.476132 8.707619
132 2.482415 8.469789
133 2.488736 8.238455
134 2.495095 8.013439
135 2.501494 7.794568
136 2.507934 7.581676
137 2.514417 7.374599
138 2.520944 7.173177
139 2.527516 6.977257
140 2.534135 6.786688
141 2.540803 6.601324
142 2.547520 6.421023
143 2.554290 6.245646
144 2.561112 6.075059
145 2.567989 5.909132
146 2.574924 5.747736
147 2.581917 5.590749
148 2.588971 5.438050
149 2.596087 5.289521
150 2.603266 5.145049
151 2.610509 5.004522
152 2.617817 4.867834
153 2.625191 4.734880
154 2.632632 4.605557
155 2.640141 4.479766
156 2.647719 4.357410
157 2.655367 4.238397
158 2.663087 4.122634
159 2.670879 4.010033
160 2.678747 3.900507
161 2.686691 3.793973
162 2.694714 3.690349
163 2.702819 3.589555
164 2.711006 3.491514
165 2.719280 3.396150
166 2.727642 3.303392
167 2.736094 3.213166
168 2.744640 3.125406
169 2.753281 3.040042
170 2.762020 2.957009
171 2.770857 2.876245
172 2.779795 2.797686
173 2.788836 2.721273
174 2.797980 2.646948
175 2.807230 2.574652
176 2.816587 2.504331
177 2.826052 2.435930
178 2.835627 2.369398
179 2.845314 2.304683
180 2.855112 2.241735
181 2.865023 2.180507
182 2.875048 2.120951
183 2.885191 2.063022
184 2.895456 2.006675
185 2.905846 1.951866
186 2.916367 1.898555
187 2.927021 1.846700
188 2.937815 1.796262
189 2.948752 1.747201
190 2.959837 1.699479
191 2.971076 1.653062
192 2.982472 1.607912
193 2.994032 1.563995
194 3.005760 1.521278
195 3.017662 1.479727
196 3.029742 1.439312
197 3.042006 1.400000
198 3.113873 1.200000
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
Serial Number: X154359
Data Format: 4 (Log Ohms/Kelvin)
SetPoint Limit: 330.0 (Kelvin)
Temperature coefficient: 1 (Negative)
Number of Breakpoints: 198
No. Units Temperature (K)
1 1.752240 330.0000
2 1.776224 310.0000
3 1.787015 301.4900
4 1.797870 293.2135
5 1.808781 285.1643
6 1.819743 277.3361
7 1.830751 269.7227
8 1.841798 262.3184
9 1.852878 255.1173
10 1.863986 248.1139
11 1.875115 241.3027
12 1.886262 234.6785
13 1.897425 228.2362
14 1.908601 221.9707
15 1.919786 215.8772
16 1.930977 209.9510
17 1.942172 204.1875
18 1.953367 198.5822
19 1.964559 193.1308
20 1.975745 187.8290
21 1.986922 182.6728
22 1.998087 177.6581
23 2.009237 172.7811
24 2.020368 168.0379
25 2.031478 163.4250
26 2.042563 158.9387
27 2.053621 154.5756
28 2.064647 150.3322
29 2.075638 146.2053
30 2.086593 142.1917
31 2.097512 138.2883
32 2.108392 134.4921
33 2.119230 130.8000
34 2.130015 127.2093
35 2.140740 123.7172
36 2.151409 120.3210
37 2.162048 117.0180
38 2.172682 113.8056
39 2.183331 110.6815
40 2.193975 107.6431
41 2.204587 104.6881
42 2.215140 101.8142
43 2.225632 99.01923
44 2.236068 96.30098
45 2.246457 93.65735
46 2.256804 91.08629
47 2.267110 88.58582
48 2.277379 86.15398
49 2.287611 83.78891
50 2.297809 81.48876
51 2.307974 79.25175
52 2.318109 77.07615
53 2.328215 74.96028
54 2.338291 72.90249
55 2.348338 70.90119
56 2.358355 68.95483
57 2.368343 67.06190
58 2.378301 65.22094
59 2.388229 63.43051
60 2.398127 61.68923
61 2.407995 59.99576
62 2.417832 58.34877
63 2.427639 56.74699
64 2.437415 55.18919
65 2.447160 53.67415
66 2.456874 52.20070
67 2.466557 50.76770
68 2.476208 49.37404
69 2.485828 48.01864
70 2.495416 46.70045
71 2.504973 45.41844
72 2.514498 44.17162
73 2.523990 42.95904
74 2.533451 41.77974
75 2.542879 40.63281
76 2.552275 39.51737
77 2.561638 38.43255
78 2.570969 37.37751
79 2.580267 36.35143
80 2.589535 35.35352
81 2.598774 34.38301
82 2.607984 33.43913
83 2.617167 32.52117
84 2.626325 31.62841
85 2.635458 30.76016
86 2.644568 29.91574
87 2.653656 29.09450
88 2.662722 28.29580
89 2.671768 27.51903
90 2.680793 26.76359
91 2.689800 26.02888
92 2.698787 25.31435
93 2.707753 24.61942
94 2.716696 23.94358
95 2.725613 23.28628
96 2.734506 22.64704
97 2.743374 22.02534
98 2.752217 21.42070
99 2.761040 20.83267
100 2.769850 20.26077
101 2.778654 19.70458
102 2.787455 19.16366
103 2.796256 18.63758
104 2.805060 18.12595
105 2.813869 17.62836
106 2.822685 17.14443
107 2.831510 16.67379
108 2.840346 16.21606
109 2.849196 15.77090
110 2.858062 15.33796
111 2.866945 14.91691
112 2.875849 14.50741
113 2.884776 14.10916
114 2.893729 13.72184
115 2.902709 13.34515
116 2.911720 12.97880
117 2.920765 12.62251
118 2.929846 12.27600
119 2.938966 11.93901
120 2.948129 11.61126
121 2.957338 11.29251
122 2.966594 10.98251
123 2.975896 10.68102
124 2.985245 10.38781
125 2.994645 10.10265
126 3.004106 9.825312
127 3.013636 9.555591
128 3.023243 9.293273
129 3.032929 9.038157
130 3.042695 8.790044
131 3.052542 8.548742
132 3.062471 8.314064
133 3.072485 8.085829
134 3.082584 7.863859
135 3.092770 7.647982
136 3.103045 7.438032
137 3.113410 7.233845
138 3.123867 7.035263
139 3.134418 6.842133
140 3.145063 6.654305
141 3.155808 6.471633
142 3.166662 6.293975
143 3.177645 6.121195
144 3.188773 5.953157
145 3.200048 5.789733
146 3.211450 5.630795
147 3.222958 5.476220
148 3.234561 5.325888
149 3.246273 5.179683
150 3.258116 5.037492
151 3.270108 4.899204
152 3.282253 4.764712
153 3.294552 4.633913
154 3.307003 4.506704
155 3.319604 4.382987
156 3.332353 4.262667
157 3.345249 4.145649
158 3.358293 4.031844
159 3.371492 3.921163
160 3.384855 3.813520
161 3.398390 3.708832
162 3.412106 3.607018
163 3.426014 3.508000
164 3.440124 3.411699
165 3.454443 3.318042
166 3.468975 3.226956
167 3.483725 3.138370
168 3.498697 3.052217
169 3.513895 2.968428
170 3.529321 2.886940
171 3.544979 2.807688
172 3.560872 2.730612
173 3.577000 2.655652
174 3.593367 2.582750
175 3.609974 2.511849
176 3.626821 2.442894
177 3.643911 2.375833
178 3.661254 2.310612
179 3.678878 2.247182
180 3.696815 2.185493
181 3.715081 2.125497
182 3.733661 2.067149
183 3.752526 2.010402
184 3.771651 1.955213
185 3.791042 1.901539
186 3.810742 1.849338
187 3.830800 1.798571
188 3.851256 1.749197
189 3.872108 1.701178
190 3.893346 1.654478
191 3.914960 1.609060
192 3.936960 1.564888
193 3.959369 1.521930
194 3.982210 1.480150
195 4.005509 1.439517
196 4.029281 1.400000
197 4.166155 1.200000
198 4.336041 1.000000
Sensor Model: CX-1050-CU-HT 2021-04-30
Serial Number: X154359
Data Format: 4 (Log Ohms/Kelvin)
SetPoint Limit: 330.0 (Kelvin)
Temperature coefficient: 1 (Negative)
Number of Breakpoints: 199
No. Units Temperature (K)
1 1.728256 351.58
2 1.752240 330
3 1.776224 310
4 1.787015 301.49
5 1.797870 293.2135
6 1.808781 285.1643
7 1.819743 277.3361
8 1.830751 269.7227
9 1.841798 262.3184
10 1.852878 255.1173
11 1.863986 248.1139
12 1.875115 241.3027
13 1.886262 234.6785
14 1.897425 228.2362
15 1.908601 221.9707
16 1.919786 215.8772
17 1.930977 209.951
18 1.942172 204.1875
19 1.953367 198.5822
20 1.964559 193.1308
21 1.975745 187.829
22 1.986922 182.6728
23 1.998087 177.6581
24 2.009237 172.7811
25 2.020368 168.0379
26 2.031478 163.425
27 2.042563 158.9387
28 2.053621 154.5756
29 2.064647 150.3322
30 2.075638 146.2053
31 2.086593 142.1917
32 2.097512 138.2883
33 2.108392 134.4921
34 2.119230 130.8
35 2.130015 127.2093
36 2.140740 123.7172
37 2.151409 120.321
38 2.162048 117.018
39 2.172682 113.8056
40 2.183331 110.6815
41 2.193975 107.6431
42 2.204587 104.6881
43 2.215140 101.8142
44 2.225632 99.01923
45 2.236068 96.30098
46 2.246457 93.65735
47 2.256804 91.08629
48 2.267110 88.58582
49 2.277379 86.15398
50 2.287611 83.78891
51 2.297809 81.48876
52 2.307974 79.25175
53 2.318109 77.07615
54 2.328215 74.96028
55 2.338291 72.90249
56 2.348338 70.90119
57 2.358355 68.95483
58 2.368343 67.0619
59 2.378301 65.22094
60 2.388229 63.43051
61 2.398127 61.68923
62 2.407995 59.99576
63 2.417832 58.34877
64 2.427639 56.74699
65 2.437415 55.18919
66 2.447160 53.67415
67 2.456874 52.2007
68 2.466557 50.7677
69 2.476208 49.37404
70 2.485828 48.01864
71 2.495416 46.70045
72 2.504973 45.41844
73 2.514498 44.17162
74 2.523990 42.95904
75 2.533451 41.77974
76 2.542879 40.63281
77 2.552275 39.51737
78 2.561638 38.43255
79 2.570969 37.37751
80 2.580267 36.35143
81 2.589535 35.35352
82 2.598774 34.38301
83 2.607984 33.43913
84 2.617167 32.52117
85 2.626325 31.62841
86 2.635458 30.76016
87 2.644568 29.91574
88 2.653656 29.0945
89 2.662722 28.2958
90 2.671768 27.51903
91 2.680793 26.76359
92 2.689800 26.02888
93 2.698787 25.31435
94 2.707753 24.61942
95 2.716696 23.94358
96 2.725613 23.28628
97 2.734506 22.64704
98 2.743374 22.02534
99 2.752217 21.4207
100 2.761040 20.83267
101 2.769850 20.26077
102 2.778654 19.70458
103 2.787455 19.16366
104 2.796256 18.63758
105 2.805060 18.12595
106 2.813869 17.62836
107 2.822685 17.14443
108 2.831510 16.67379
109 2.840346 16.21606
110 2.849196 15.7709
111 2.858062 15.33796
112 2.866945 14.91691
113 2.875849 14.50741
114 2.884776 14.10916
115 2.893729 13.72184
116 2.902709 13.34515
117 2.911720 12.9788
118 2.920765 12.62251
119 2.929846 12.276
120 2.938966 11.93901
121 2.948129 11.61126
122 2.957338 11.29251
123 2.966594 10.98251
124 2.975896 10.68102
125 2.985245 10.38781
126 2.994645 10.10265
127 3.004106 9.825312
128 3.013636 9.555591
129 3.023243 9.293273
130 3.032929 9.038157
131 3.042695 8.790044
132 3.052542 8.548742
133 3.062471 8.314064
134 3.072485 8.085829
135 3.082584 7.863859
136 3.092770 7.647982
137 3.103045 7.438032
138 3.113410 7.233845
139 3.123867 7.035263
140 3.134418 6.842133
141 3.145063 6.654305
142 3.155808 6.471633
143 3.166662 6.293975
144 3.177645 6.121195
145 3.188773 5.953157
146 3.200048 5.789733
147 3.211450 5.630795
148 3.222958 5.47622
149 3.234561 5.325888
150 3.246273 5.179683
151 3.258116 5.037492
152 3.270108 4.899204
153 3.282253 4.764712
154 3.294552 4.633913
155 3.307003 4.506704
156 3.319604 4.382987
157 3.332353 4.262667
158 3.345249 4.145649
159 3.358293 4.031844
160 3.371492 3.921163
161 3.384855 3.81352
162 3.398390 3.708832
163 3.412106 3.607018
164 3.426014 3.508
165 3.440124 3.411699
166 3.454443 3.318042
167 3.468975 3.226956
168 3.483725 3.13837
169 3.498697 3.052217
170 3.513895 2.968428
171 3.529321 2.88694
172 3.544979 2.807688
173 3.560872 2.730612
174 3.577000 2.655652
175 3.593367 2.58275
176 3.609974 2.511849
177 3.626821 2.442894
178 3.643911 2.375833
179 3.661254 2.310612
180 3.678878 2.247182
181 3.696815 2.185493
182 3.715081 2.125497
183 3.733661 2.067149
184 3.752526 2.010402
185 3.771651 1.955213
186 3.791042 1.901539
187 3.810742 1.849338
188 3.830800 1.798571
189 3.851256 1.749197
190 3.872108 1.701178
191 3.893346 1.654478
192 3.914960 1.60906
193 3.936960 1.564888
194 3.959369 1.52193
195 3.982210 1.48015
196 4.005509 1.439517
197 4.029281 1.4
198 4.166155 1.2
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
#appendVars ep/%/Pressure
makeCCU4 ccrpe
makeCCU4 ccrpe nv
makenv warmup -driver piloop -invar "tt" -outvar "tt current/manualpower" \

View File

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

View File

@ -6,6 +6,9 @@ GROUP orange and other 4He cryostats
hfflow*
lemflow*
END
GROUP muSR
flame*
END
GROUP closed cycle refrigerators
apd*
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
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
makenv tt -driver [lsdriver] {

View File

@ -6,6 +6,8 @@ set diln dil2
makenv ts -driver dil12 -reg370 /treg -mon370 /tmon -hasturbo 1
ts auto/pumptime1 3600
# lakeshore 370 ctrl
makenv treg -driver 370_lsc -port ${diln}-ts:3001 {
# 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
ts auto/pumptime1 3600
# lakeshore 370 ctrl
makenv treg -driver 370_lsc -port ${dilts}:3001 {
# curves for sample:
@ -73,6 +75,6 @@ dil extVersion 1
catch {default ts control}
catch {default ts heaterselect}
#makeMotorValve vb ${dilts}:3004
#makeMotorValve vm ${dilts}:3006
makeMotorValve vb ${dilts}:3004
makeMotorValve vm ${dilts}:3006

View File

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

View File

@ -22,6 +22,7 @@ triton temp tpt1head pt1head T6 cyan
triton temp tpt1plate pt1plate T7 cyan
triton temp tmix mix T8 cyan
triton temp pucksensor puck TA red
triton temp tmagnet tmagnet T13 black
triton press pdump dump P1 cyan
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 {
#lsc_sensor atto_mid 1 -sensor U08127 -excitation 200uV -filter 1
#lsc_sensor atto_top 2 -sensor U08130 -excitation 200uV -filter 1
#lsc_sensor ch3 3 -sensor raw -excitation 20uV -filter 1
#lsc_sensor ch4 4 -sensor raw -excitation 20uV -filter 1
lsc_sensor foil 5 -sensor U08130 -excitation 200uV -filter 1
#lsc_sensor ch6 6 -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
lsc_sensor foil 1 -sensor U08130 -excitation 200uV -filter 1
#lsc_sensor atto_mid 1 -sensor U08127 -excitation 200uV -filter 1
#lsc_sensor atto_top 2 -sensor U08130 -excitation 200uV -filter 1
#lsc_sensor ch3 3 -sensor raw -excitation 20uV -filter 1
#lsc_sensor ch4 4 -sensor raw -excitation 20uV -filter 1
lsc_sensor Al_1 7 -sensor raw -excitation 1uA -filter 1
lsc_sensor Al_2 8 -sensor raw -excitation 1uA -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)
#lsc_loop set -loop 0 -channel 1 -maxheater 100mA -resist 100
# heater output 0 (=sample heater) for channel 4 (still)
#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.ch5 Ohm
#GraphAdd res.ch6 Ohm
#GraphAdd res.ch7 Ohm
#GraphAdd res.ch8 Ohm
GraphAdd res.Al_1 Ohm
GraphAdd res.Al_2 Ohm
GraphAdd res.atto_mid.raw Ohm
GraphAdd res.atto_top.raw Ohm
#GraphAdd res.atto_mid.raw Ohm
#GraphAdd res.atto_top.raw Ohm

View File

@ -228,7 +228,7 @@ proc stdConfig::ccu4 {{title CCU4} args} {
node hea out
prop label "add. He channels"
prop enum 0,1,6
prop enum 0,1,6=6
node hch out -int
prop label "LHe channel"
@ -539,7 +539,13 @@ proc ccu4::update {} {
set errvar [silent "" hgetpropval [sct]/$name errvar]
if {$errvar ne ""} {
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]
hupdate [sct]/$name $value
} else {

View File

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

View File

@ -41,7 +41,7 @@ proc stdConfig::ccu4flow {args} {
node flow upd -secop=nvflow
node set out
default 2.0
default 1.0
prop check ccu4flow::checkset
prop write stdSct::complete
prop label "flow set"
@ -89,11 +89,11 @@ proc stdConfig::ccu4flow {args} {
node hystpulse_c par 0
prop help {motor pulse to overcome hysteresis when closing}
node tol par 0.1
node tol par 0.25
prop label tolerance
prop help {valid below 3 mbar}
node tolhigh par 0.2
node tolhigh par 0.5
prop label tol. above 4
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 vpercent [expr $v * 100.0 / [sct @voltscale]]
# difference output voltage % - read voltage %
clientput "v $v vout $vout last [silent None sct last_v]"
if {abs($v - $vout) > 0.5} {
clientput "v $v vout $vout last [silent "" sct last_v]"
if {abs($v - [silent 100 sct last_v]) < 0.02} {
if {abs($v - [silent 100 sct last_v]) > 100.02} {
clientput "power supply feedback does not follow"
enum_decode [sct parent]/ctrlmode power_supply_off new
sct @power_supply_off 1
if {$new != [sctval [sct parent]/ctrlmode]} {

View File

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

View File

@ -10,7 +10,7 @@ proc stdConfig::hepump {{motname hemot}} {
obj HePump -int wr
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 read hepump::read
prop write hepump::set_type
@ -67,17 +67,26 @@ proc hepump::visible {pumpcode} {
} else {
set rv true
}
set runv true
} elseif {$pumpcode == 8} {
set rv true
set runv true
set v true
} else {
set v false
set rv false
set runv false
}
foreach node "valve [sct @motname]" {
if {[silent true hgetpropval [sct]/$node visible] ne $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} {
hsetprop [sct]/$node visible $rv
}
@ -125,6 +134,19 @@ proc hepump::set_calib {} {
} else {
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
hsetprop [sct]/[sct @motname] group "hepump valve motor"
set f [hval [sct]/calib]
@ -352,7 +374,10 @@ proc hepump::set_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]
sct update $eco
[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"
hupdate [sct objectPath]/status $msg
if {$status eq ""} {
# clientlog "ERROR: $msg"
clientlog "WARNING: $msg"
}
} elseif {[string match {slave currents *} $status]} {
hupdate [sct objectPath]/status ""

View File

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

View File

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

View File

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

View File

@ -18,7 +18,7 @@ proc stdConfig::sensirion {} {
prop read stdSct::read
prop update sensirion::updateFlow
kids "$name settings" {
kids "n.v. flow" {
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
makenv frappy_main -driver secop -port pc12694:5000
#makenv frappy_stick -driver secop -port localhost:15201
makenv frappy_addons -driver secop -port localhost:15301
#debug _secop
#dolater 0 _secop poll /secop 1 read test
foreach {service port} [exec frappy getports [result instrument]] {
makenv frappy_$service -driver secop -port localhost:$port
}
set hepump [silent undefined hval /cfg_env/_hepump]
if {$hepump ne "undefined"} {
makeHePump
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -3,7 +3,8 @@ deviceDesc = flow cryo for LEM
defineTemperature tt
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 ts C -sensorname sample
lsc_sensor tsh D -sensor pt1000e -sensorname shield

View File

@ -16,6 +16,7 @@ proc readpipe {} {
puts stdout "> $line"
}
if {[eof $sea(pipe)]} {
puts stdout EOF
exit
}
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 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
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 ret [catch {set proc [exec ps ax -o pid,args | grep $cmd]} msg]
set killed [list]
if {$ret == 0} {
foreach line [split $proc "\n"] {
set l [split [string trim $line]]
set c [lrange $l 1 end]
if {"$c" eq "$cmd"} {
# process was still running
if {$sea(debug)} {
puts stdout "kill $proc ($c)"
}
lappend killed [lindex $l 0]
exec kill -9 [lindex $l 0]
}
}
@ -95,5 +100,15 @@ if {$ret == 0} {
set sea(pipe) [open "|$cmd" r]
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

View File

@ -19,7 +19,7 @@ tt set/integ 10
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

View File

@ -38,6 +38,8 @@ mf gen/limit 10
mf gen/wait_switch_on 15
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

View File

@ -1,3 +1,4 @@
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
makeCCU4 ma6 nv
hupdate /nv/set 2.0
makeCCU4 ma6 nv he_ilm
hupdate /nv/set 1.2
makeN2Fill ccu4ilm {
ln2fill lowlevel 10
ln2fill highlevel 100
@ -29,6 +29,9 @@ makeN2Fill ccu4ilm {
makeHeFill ccu4ilm
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

View File

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

View File

@ -1,10 +1,15 @@
deviceDesc = 5T System (1975)
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
makeCCU4 mango nv he
makeCCU4 mango he
cc hts 40
cc htf 10
@ -14,6 +19,8 @@ cc hem 550
# 250 l vessel:
cc hem0 720
if {0} { # magnet manually
makenv mf -driver smc -port Prologix-00-21-69-01-19-57:1234
mf gen/profile 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_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
GraphAdd tvs K T_VTIs red
GraphAdd tvs.set K T_stat_set orange
GraphAdd tvs.pow W pow_tvs red
# GraphAdd tvs.raw Ohm R_tvs red
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
set ins [result instrument]
if {[string match "prep*" $ins]} {
set nr [string range $ins end end]
} else {
error "runs on prep0-9 only"
}
makenv frappy_main -driver secop -port localhost:1511$nr
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 {} {
global change_device_to_none unplugged_device
logconfig flush
rack_check_connection
set act [silent "" result device action]
set now [clock seconds]

View File

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

View File

@ -81,12 +81,20 @@ proc makeCCU4 {args} {
helium_register _cc /cc/h0 vessel
if {$vessel ne "0"} {
catch {cc hea 1}
catch {cc hem0 475}
catch {cc hfu0 0}
}
}
helium_register _cc /cc/h
}
he_ilm {
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 cc.h0 % HeVessel blue
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 val ""
if {[string match "run *" $cmd]} {
set val [silent "" hgetpropval $path target]
set cmd2 [string range $cmd 4 end]
set val [silent $val result $cmd2 target]
set cmd2 [string range $cmd 4 end]
if {[silent 0 hgetpropval $path visible] eq "readonly"} {
set val [silent "" hvali $path]
} else {
# set val [silent "" hgetpropval $path target]
set val [silent $val result $cmd2 target]
}
clientput "-P"
} elseif {$type eq "func"} {
clientput "-T$title"
@ -102,7 +106,8 @@ proc hdbItem {path title} {
return
} else {
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"} {
set val ""
} else {
@ -117,10 +122,20 @@ proc hdbItem {path title} {
set priv internal
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 {
user - spy {
set val [silent $val hgetpropval $path requested]
set val [silent $val hgetpropval $path secoprequested]
#if {$fmtstr ne ""} {
# set val [format $fmtstr $val]
#}
set enum [silent "" hgetpropval $path enum]
if {$enum eq ""} {
# experimental
@ -292,6 +307,8 @@ proc nodeVisible {path {key visible}} {
set vis [silent true hgetpropval $path $key]
if {$vis eq "expert"} {
return [info exists shown_groups(expertMode)]
} elseif {$vis eq "readonly"} {
return 1
}
return $vis
}
@ -305,7 +322,9 @@ proc hdbLayout {path} {
# clientput "L $path G $group [nodeVisible $path groupMode]"
if {! [string equal 0 $group] && [nodeVisible $path groupMode]} {
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\]"
}
clientput "-T$group"

View File

@ -8,6 +8,8 @@ proc makeHePump {} {
set type 1
} elseif {$type eq "sv65"} {
set type 2
} elseif {$type eq "neodry"} {
set type 8
} else {
error "unknown hepump type: $type"
}
@ -37,8 +39,8 @@ proc pump_is_off {} {
}
}
hupdate [sct]/status $pmsg
return 1
}
return 1
}
if {[string match ${msghead}* [hvali [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