|
1 # $Source: /cvs/G/DRV/SATECO/SATECO_base.template,v $ |
|
2 # $Date: 2008/10/28 14:01:25 $ |
|
3 # $Revision: 1.20 $ |
|
4 # $Author: wang_x1 $ |
|
5 |
|
6 |
|
7 # Required substitutions: |
|
8 # NAME - prefix, e.g. X99SA-ES1-CRYOJET: |
|
9 # UNIT - temperature unit |
|
10 # PTCOLS - StreamDevice protocol file |
|
11 # PORT - port name |
|
12 |
|
13 # The Alarm Status of this record is used to trigger WATCHDOG |
|
14 record(stringin, "$(NAME):VERSION") |
|
15 { |
|
16 field(DESC, "control version") |
|
17 field(DTYP, "stream") |
|
18 field(INP, "@$(PTCOLS) GET_VERSION $(PORT)") |
|
19 field(SCAN, "1 second") |
|
20 field(DISV, "0") |
|
21 field(SDIS, "$(NAME):WATCHDOG.VAL") |
|
22 |
|
23 field(FLNK, "$(NAME):ONESHOT") |
|
24 } |
|
25 |
|
26 ############################################## |
|
27 # Controller Mode |
|
28 ############################################## |
|
29 record(mbbi, "$(NAME):MODE_RBV") |
|
30 { |
|
31 field(DESC, "control mode") |
|
32 field(DTYP, "stream") |
|
33 field(INP, "@$(PTCOLS) GET_MODE $(PORT)") |
|
34 |
|
35 field(ZRVL, "0") |
|
36 field(ONVL, "1") |
|
37 |
|
38 field(ZRST, "Local") |
|
39 field(ONST, "Remote") |
|
40 |
|
41 field(SCAN, "1 second") |
|
42 field(DISV, "0") |
|
43 field(SDIS, "$(NAME):WATCHDOG.VAL") |
|
44 } |
|
45 |
|
46 record(mbbo, "$(NAME):MODE") |
|
47 { |
|
48 field(DESC, "control mode") |
|
49 field(DTYP, "stream") |
|
50 field(OUT, "@$(PTCOLS) SET_MODE $(PORT)") |
|
51 |
|
52 field(ZRVL, "0") |
|
53 field(ONVL, "1") |
|
54 |
|
55 field(ZRST, "Local") |
|
56 field(ONST, "Remote") |
|
57 |
|
58 field(DISV, "0") |
|
59 field(SDIS, "$(NAME):WATCHDOG.VAL") |
|
60 } |
|
61 |
|
62 |
|
63 ############################################## |
|
64 # Connection Status Monitor |
|
65 ############################################## |
|
66 record(mbbo, "$(NAME):CONN-STAT") |
|
67 { |
|
68 field(DESC, "connection status") |
|
69 |
|
70 field(ZRVL, "0") |
|
71 field(ONVL, "1") |
|
72 field(TWVL, "2") |
|
73 |
|
74 field(ZRST, "Disconnected") |
|
75 field(ONST, "Connected") |
|
76 field(TWST, "Connecting") |
|
77 |
|
78 field(ZRSV, "MAJOR") |
|
79 field(ONSV, "NO_ALARM") |
|
80 field(TWSV, "MINOR") |
|
81 } |
|
82 record(bo, "$(NAME):CONN") |
|
83 { |
|
84 field(DESC, "turn on/off connection") |
|
85 |
|
86 field(ZNAM, "Disconnect") |
|
87 field(ONAM, "Connect") |
|
88 field(ZSV, "MAJOR") |
|
89 field(OSV, "NO_ALARM") |
|
90 |
|
91 field(OUT, "$(NAME):CONN-DFAN.VAL PP") |
|
92 field(FLNK, "$(NAME):CONN-CALC") |
|
93 } |
|
94 |
|
95 record(dfanout, "$(NAME):CONN-DFAN") |
|
96 { |
|
97 field(DESC, "fanout connect action") |
|
98 field(OMSL, "supervisory") |
|
99 |
|
100 field(OUTA, "$(NAME):ASYNIO.ENBL") |
|
101 # field(OUTB, "$(NAME):ENBLSCAN.VAL") |
|
102 field(OUTC, "$(NAME):WATCHDOG.VAL PP") |
|
103 } |
|
104 |
|
105 record(calcout, "$(NAME):CONN-CALC") |
|
106 { |
|
107 field(DESC, "connecting") |
|
108 field(INPA, "$(NAME):CONN.VAL") |
|
109 field(CALC, "A=1?2:0") |
|
110 field(DOPT, "Use CALC") |
|
111 field(OOPT, "Transition To Non-zero") |
|
112 field(OUT, "$(NAME):CONN-STAT.VAL PP MS") |
|
113 field(SCAN, "Passive") |
|
114 } |
|
115 |
|
116 record(calcout, "$(NAME):ONESHOT") |
|
117 { |
|
118 field(DESC, "watchdog trigger") |
|
119 field(INPA, "$(NAME):VERSION.STAT") |
|
120 field(CALC, "A=0?1:0") |
|
121 field(OOPT, "When Non-zero") |
|
122 field(OUT, "$(NAME):WATCHDOG.VAL PP MS") |
|
123 field(SCAN, "Passive") |
|
124 } |
|
125 |
|
126 record(bo, "$(NAME):ENBLSCAN") |
|
127 { |
|
128 field(DESC, "enable/disable record scan") |
|
129 field(DTYP, "Soft Channel") |
|
130 field(SCAN, "Passive") |
|
131 |
|
132 field(ZNAM, "Disable") |
|
133 field(ONAM, "Enable") |
|
134 } |
|
135 |
|
136 record(bo, "$(NAME):WATCHDOG") |
|
137 { |
|
138 field(DESC, "connection indicator") |
|
139 field(DTYP, "Soft Channel") |
|
140 |
|
141 field(HIGH, "15") |
|
142 field(SCAN, "Passive") |
|
143 |
|
144 field(OUT, "$(NAME):CONN-STAT.VAL PP") |
|
145 |
|
146 field(ZNAM, "Disconnected") |
|
147 field(ONAM, "Connected") |
|
148 field(ZSV, "MAJOR") |
|
149 field(OSV, "NO_ALARM") |
|
150 } |
|
151 |
|
152 record(asyn, "$(NAME):ASYNIO") |
|
153 { |
|
154 field(DESC, "asyn port") |
|
155 field(PORT, "$(PORT)") |
|
156 } |
|
157 |
|
158 record(calcout, "$(NAME):TRIG-CONN") |
|
159 { |
|
160 field(DESC, "trigger scan") |
|
161 field(INPA, "$(NAME):WATCHDOG.VAL CPP MS") |
|
162 field(CALC, "A") |
|
163 field(OUT, "$(NAME):CONN.VAL PP MS") |
|
164 field(OOPT, "Transition To Zero") |
|
165 } |
|
166 |
|
167 ########################################### |
|
168 # PID |
|
169 ########################################### |
|
170 record(ao, "$(NAME):P") |
|
171 { |
|
172 field(DESC, "PID - proportion set-point") |
|
173 field(DTYP, "stream") |
|
174 field(OUT, "@$(PTCOLS) SET_P($(NAME)) $(PORT)") |
|
175 |
|
176 field(DISV, "0") |
|
177 field(SDIS, "$(NAME):WATCHDOG.VAL") |
|
178 field(PREC, "1") |
|
179 } |
|
180 |
|
181 record(ai, "$(NAME):P_RBV") |
|
182 { |
|
183 field(DESC, "PID - proportion readback") |
|
184 field(DTYP, "stream") |
|
185 field(INP, "@$(PTCOLS) GET_P $(PORT)") |
|
186 |
|
187 field(SCAN, "1 second") |
|
188 field(DISV, "0") |
|
189 field(SDIS, "$(NAME):WATCHDOG.VAL") |
|
190 field(PREC, "1") |
|
191 } |
|
192 record(ao, "$(NAME):I") |
|
193 { |
|
194 field(DESC, "PID - integral set-point") |
|
195 field(DTYP, "stream") |
|
196 field(OUT, "@$(PTCOLS) SET_I($(NAME)) $(PORT)") |
|
197 |
|
198 field(DISV, "0") |
|
199 field(SDIS, "$(NAME):WATCHDOG.VAL") |
|
200 field(PREC, "1") |
|
201 } |
|
202 |
|
203 record(ai, "$(NAME):I_RBV") |
|
204 { |
|
205 field(DESC, "PID - integral readback") |
|
206 field(DTYP, "stream") |
|
207 field(INP, "@$(PTCOLS) GET_I $(PORT)") |
|
208 |
|
209 field(SCAN, "1 second") |
|
210 field(DISV, "0") |
|
211 field(SDIS, "$(NAME):WATCHDOG.VAL") |
|
212 field(PREC, "1") |
|
213 } |
|
214 record(ao, "$(NAME):D") |
|
215 { |
|
216 field(DESC, "PID - derivative set-point") |
|
217 field(DTYP, "stream") |
|
218 field(OUT, "@$(PTCOLS) SET_D($(NAME)) $(PORT)") |
|
219 |
|
220 field(DISV, "0") |
|
221 field(SDIS, "$(NAME):WATCHDOG.VAL") |
|
222 field(PREC, "1") |
|
223 } |
|
224 |
|
225 record(ai, "$(NAME):D_RBV") |
|
226 { |
|
227 field(DESC, "PID - derivative readback") |
|
228 field(DTYP, "stream") |
|
229 field(INP, "@$(PTCOLS) GET_D $(PORT)") |
|
230 |
|
231 field(SCAN, "1 second") |
|
232 field(DISV, "0") |
|
233 field(SDIS, "$(NAME):WATCHDOG.VAL") |
|
234 field(PREC, "1") |
|
235 } |
|
236 |
|
237 ########################################### |
|
238 # Heating Level |
|
239 ########################################### |
|
240 record(ao, "$(NAME):HT-LVL") |
|
241 { |
|
242 field(DESC, "heater level set-point") |
|
243 field(DTYP, "stream") |
|
244 field(OUT, "@$(PTCOLS) SET_HEAT-LEVEL $(PORT)") |
|
245 |
|
246 |
|
247 field(DISV, "0") |
|
248 field(SDIS, "$(NAME):WATCHDOG.VAL") |
|
249 |
|
250 field(HOPR, "100") |
|
251 field(LOPR, "0") |
|
252 field(PREC, "1") |
|
253 field(EGU, "%") |
|
254 } |
|
255 |
|
256 record(ai, "$(NAME):HT-LVL_RBV") |
|
257 { |
|
258 field(DESC, "heater level readback") |
|
259 field(DTYP, "stream") |
|
260 field(INP, "@$(PTCOLS) GET_HEAT-LEVEL $(PORT)") |
|
261 |
|
262 field(SCAN, "1 second") |
|
263 field(DISV, "0") |
|
264 field(SDIS, "$(NAME):WATCHDOG.VAL") |
|
265 |
|
266 field(HOPR, "100") |
|
267 field(LOPR, "0") |
|
268 field(PREC, "1") |
|
269 field(EGU, "%") |
|
270 } |
|
271 |
|
272 ########################################### |
|
273 # Temperature |
|
274 ########################################### |
|
275 |
|
276 record(ai, "$(NAME):TEMP_RBV") |
|
277 { |
|
278 field(DESC, "temperature") |
|
279 field(DTYP, "stream") |
|
280 field(INP, "@$(PTCOLS) GET_TEMP $(PORT)") |
|
281 field(FLNK, "$(NAME):TEMP-AVG") |
|
282 |
|
283 field(SCAN, "1 second") |
|
284 field(DISV, "0") |
|
285 field(SDIS, "$(NAME):WATCHDOG.VAL") |
|
286 |
|
287 field(PREC, "2") |
|
288 field(EGU, "$(UNIT)") |
|
289 } |
|
290 |
|
291 record(ao, "$(NAME):TEMP") |
|
292 { |
|
293 field(DESC, "temperature") |
|
294 field(DTYP, "stream") |
|
295 field(OUT, "@$(PTCOLS) SET_TEMP $(PORT)") |
|
296 |
|
297 field(DISV, "0") |
|
298 field(SDIS, "$(NAME):WATCHDOG.VAL") |
|
299 |
|
300 field(PREC, "2") |
|
301 field(EGU, "$(UNIT)") |
|
302 |
|
303 field(FLNK, "$(NAME):GO-1 PP MS") |
|
304 } |
|
305 |
|
306 #! |
|
307 record(ai, "$(NAME):TEMP-SP") |
|
308 { |
|
309 field(DESC, "temperature setpoint") |
|
310 field(DTYP, "stream") |
|
311 field(INP, "@$(PTCOLS) GET_TEMP-SP $(PORT)") |
|
312 |
|
313 field(DISV, "0") |
|
314 field(SDIS, "$(NAME):WATCHDOG.VAL") |
|
315 |
|
316 field(PREC, "2") |
|
317 field(EGU, "$(UNIT)") |
|
318 } |
|
319 |
|
320 ########################################### |
|
321 # busy record for temperature set-point |
|
322 ########################################### |
|
323 record(calcout, "$(NAME):GO-1") |
|
324 { |
|
325 field(DESC, "") |
|
326 field(INPA, "$(NAME):TEMP.SIMM") |
|
327 field(CALC, "A=1?0:1") |
|
328 |
|
329 field(OUT, "$(NAME):GO-2 PP MS") |
|
330 field(OOPT, "When Non-zero") |
|
331 } |
|
332 |
|
333 record(bo, "$(NAME):GO-2") |
|
334 { |
|
335 field(DESC, "") |
|
336 field(DTYP, "Soft Channel") |
|
337 field(OMSL, "supervisory") |
|
338 field(VAL, "1") |
|
339 field(OUT, "$(NAME):BUSY.VAL PP MS") |
|
340 # update TEMP-STAT, not waiting for next readback |
|
341 field(FLNK, "$(NAME):RNG-CALC") |
|
342 } |
|
343 |
|
344 record(busy, "$(NAME):BUSY") |
|
345 { |
|
346 } |
|
347 |
|
348 ########################################### |
|
349 # Temperature Status Monitor |
|
350 ########################################### |
|
351 |
|
352 record(longout, "$(NAME):SETTL-PRD") |
|
353 { |
|
354 field(DESC, "settling time") |
|
355 field(EGU, "s") |
|
356 field(VAL, "120") |
|
357 field(FLNK, "$(NAME):TEMP-AVG") |
|
358 } |
|
359 |
|
360 record(ao, "$(NAME):TOLERANCE") |
|
361 { |
|
362 field(DESC, "tolerance band width") |
|
363 field(EGU, "$(UNIT)") |
|
364 field(VAL, "1") |
|
365 field(PREC, "2") |
|
366 } |
|
367 |
|
368 record(sub, "$(NAME):TEMP-AVG") |
|
369 { |
|
370 field(DESC, "temperature average") |
|
371 field(INPA, "$(NAME):SETTL-PRD.VAL") |
|
372 field(INPB, "$(NAME):TEMP_RBV.VAL") |
|
373 field(INPD, "0") # Continuous Mode |
|
374 field(INAM, "initSubAve") |
|
375 field(SNAM, "SubAve") |
|
376 field(PREC, "2") |
|
377 field(SCAN, "Passive") |
|
378 |
|
379 field(FLNK, "$(NAME):RNG-CALC") |
|
380 } |
|
381 |
|
382 record(calcout, "$(NAME):RNG-CALC") |
|
383 { |
|
384 field(DESC, "temperature status calc") |
|
385 field(INPA, "$(NAME):TEMP-AVG.VAL") |
|
386 field(INPB, "$(NAME):TEMP.VAL") |
|
387 field(INPC, "$(NAME):TOLERANCE.VAL") |
|
388 field(INPD, "$(NAME):TEMP_RBV.VAL") |
|
389 |
|
390 field(CALC, "(ABS(A-B)<=C)&&(ABS(D-B)<=C)?0:1") |
|
391 field(DOPT, "Use CALC") |
|
392 field(OOPT, "When Zero") |
|
393 |
|
394 field(OUT, "$(NAME):BUSY.VAL PP MS") |
|
395 field(FLNK, "$(NAME):TEMP-STAT.VAL PP MS") |
|
396 |
|
397 field(SCAN, "Passive") |
|
398 } |
|
399 |
|
400 record(mbbo, "$(NAME):TEMP-STAT") |
|
401 { |
|
402 field(DESC, "temperature status") |
|
403 |
|
404 field(DOL, "$(NAME):RNG-CALC MS") |
|
405 field(OMSL, "closed_loop") |
|
406 |
|
407 field(ZRVL, "0") |
|
408 field(ONVL, "1") |
|
409 |
|
410 field(ZRST, "Inside Range") |
|
411 field(ONST, "Out of Range") |
|
412 |
|
413 field(ZRSV, "NO_ALARM") |
|
414 field(ONSV, "MAJOR") |
|
415 |
|
416 field(SCAN, "Passive") |
|
417 } |
|
418 ########################################### |
|
419 # For Debug Use |
|
420 ########################################### |
|
421 record(stringout, "$(NAME):QUERY") |
|
422 { |
|
423 field(DESC, "debug - query") |
|
424 field(DTYP, "stream") |
|
425 field(OUT, "@$(PTCOLS) QUERY($(NAME):RECV.VAL) $(PORT)") |
|
426 field(DISV, "0") |
|
427 field(SDIS, "$(NAME):WATCHDOG.VAL") |
|
428 } |
|
429 record(stringout, "$(NAME):RECV") |
|
430 { |
|
431 field(DESC, "debug - received message") |
|
432 field(DTYP, "Soft Channel") |
|
433 } |
|
434 |
|
435 ########################################### |
|
436 # retrieve temp set-point when connected |
|
437 ########################################### |
|
438 record(calcout, "$(NAME):TRIG-STAT") |
|
439 { |
|
440 field(DESC, "trigger TRIG-SP") |
|
441 field(INPA, "$(NAME):CONN-STAT.VAL CPP MS") |
|
442 field(CALC, "A=1?1:0") |
|
443 field(OUT, "$(NAME):TEMP-SIMM1.VAL PP MS") |
|
444 field(OOPT, "Transition To Non-zero") |
|
445 } |
|
446 record(bo, "$(NAME):TEMP-SIMM1") |
|
447 { |
|
448 field(DESC, "set TEMP in simulation") |
|
449 field(OUT, "$(NAME):TEMP.SIMM") |
|
450 field(FLNK, "$(NAME):SEQ") |
|
451 } |
|
452 |
|
453 record(sseq, "$(NAME):SEQ") |
|
454 { |
|
455 field(SELM, "All") |
|
456 |
|
457 field(WAIT1,"Wait") |
|
458 field(DO1, "1") |
|
459 field(LNK1, "$(NAME):TEMP-SP.PROC CA") |
|
460 |
|
461 field(DOL2, "$(NAME):TEMP-SP.VAL") |
|
462 field(LNK2, "$(NAME):TEMP.VAL PP") |
|
463 |
|
464 field(FLNK, "$(NAME):TEMP-SIMM2") |
|
465 } |
|
466 |
|
467 record(bo, "$(NAME):TEMP-SIMM2") |
|
468 { |
|
469 field(DESC, "reset TEMP out simulation") |
|
470 field(DOL, "0") |
|
471 field(OUT, "$(NAME):TEMP.SIMM") |
|
472 field(OMSL, "closed_loop") |
|
473 } |