1 ################################################################
3 # Lakeshore 336/350 Temperature Controller template file.
6 # P - Prefix for PV name
7 # PORT - Bus/Port Address (eg. ASYN Port).
8 # ADDR - Address on the bus (optional)
9 # TEMPSCAN - SCAN rate for the temperature/voltage readings
10 # SCAN - SCAN rate for non-temperature/voltage parameters.
11 # ADEL (optional) - Archive deadband for temperatures
12 # MDEL (optional) - Monitor deadband for temperatures
14 # Notes: The loop/output dependant PVs are in a seperate template file, included in this one.
15 # Generally, set records forward process the associated read records in order
16 # to update the read record faster than their SCAN rate otherwise would do (but they
17 # are not processed in the same processing chain).
19 # Matt Pearson, June 2013
21 # June 2014 - modified to support Lakeshore 350. The 350 is almost
22 # identical to the 336 so I just had to modify menu
23 # options. I also added in support for the 3062 option card.
25 # June 2014 - factor out input sensor records into lakeshore_input.template
26 # and add support for reading input sensor descriptions. This
27 # is also used in lakeshore_option_3062.template.
29 ################################################################
32 field(DESC,
"Disable set records")
35 field(OMSL,
"supervisory")
36 field(ZNAM,
"Set Enabled")
37 field(ONAM,
"Set Disabled")
38 field(ZSV,
"NO_ALARM")
42 record(bo,
"$(P):LS01:DISABLE_POLL") {
43 field(DESC,
"Disable polling")
46 field(OMSL,
"supervisory")
47 field(ZNAM,
"Poll Enabled")
48 field(ONAM,
"Poll Disabled")
49 field(ZSV,
"NO_ALARM")
53 ################################################################
55 ################################################################
58 ## Read the ID string from the device.
62 field(SDIS,
"$(P):LS01:DISABLE")
63 field(INP,
"@ls336.proto getID L0 0")
64 field(SCAN,
"Passive")
69 ## Read the model number from the device.
71 record(stringin,
"$(P):LS01:MODEL") {
73 field(SDIS,
"$(P):LS01:DISABLE")
74 field(INP,
"@ls336.proto getMODEL L0 0")
75 field(SCAN,
"I/O Intr")
79 ## Read the serial number from the device.
81 record(stringin,
"$(P):LS01:SERIAL") {
83 field(SDIS,
"$(P):LS01:DISABLE")
84 field(INP,
"@ls336.proto getSERIAL L0 0")
85 field(SCAN,
"I/O Intr")
89 ## Read the firmware from the device.
91 record(stringin,
"$(P):LS01:FIRMWARE") {
93 field(SDIS,
"$(P):LS01:DISABLE")
94 field(INP,
"@ls336.proto getFIRMWARE L0 0")
95 field(SCAN,
"I/O Intr")
100 ## Read the tuning status from the device.
102 #record(stringin, "$(P):LS01:TUNEST") {
103 # field(DTYP, "stream")
104 # field(SDIS, "$(P):LS01:DISABLE_POLL")
105 # field(INP, "@ls336.proto getTUNEST L0 0")
106 # field(SCAN, "5 second")
110 ## Read the tuning status success parameter
112 #record(bi, "$(P):LS01:TUNESTSUCCESS") {
113 # field(DTYP, "stream")
114 # field(SDIS, "$(P):LS01:DISABLE_POLL")
115 # field(INP, "@ls336.proto getTUNESTSUCCESS L0 0")
116 # field(SCAN, "5 second")
117 # field(ZNAM, "No Error")
118 # field(ONAM, "Error (see manual)")
121 ################################################################
122 # Input sensor records
123 ################################################################
126 field(DESC,
"Disable A polling")
129 field(OMSL,
"supervisory")
130 field(ZNAM,
"Enabled")
131 field(ONAM,
"Disabled")
132 field(ZSV,
"NO_ALARM")
134 info(autosaveFields,
"VAL")
138 field(DESC,
"Disable B polling")
141 field(OMSL,
"supervisory")
142 field(ZNAM,
"Enabled")
143 field(ONAM,
"Disabled")
144 field(ZSV,
"NO_ALARM")
146 info(autosaveFields,
"VAL")
150 field(DESC,
"Disable C polling")
153 field(OMSL,
"supervisory")
154 field(ZNAM,
"Enabled")
155 field(ONAM,
"Disabled")
156 field(ZSV,
"NO_ALARM")
158 info(autosaveFields,
"VAL")
162 field(DESC,
"Disable D polling")
165 field(OMSL,
"supervisory")
166 field(ZNAM,
"Enabled")
167 field(ONAM,
"Disabled")
168 field(ZSV,
"NO_ALARM")
170 info(autosaveFields,
"VAL")
174 # Template to provide the records required for an input.
175 # This makes use of the macros required by lakeshore336.template
176 # but also requires macros to specify the input channel and index.
177 # The index is to provide a way for the developer to use a different
178 # channel naming scheme.
180 # For some commands, I hard coded the last part of the record names into
181 # the protocol file. This seems the easiest way to deal with commands
182 # will lots of params returned back, and avoid problematic long INP fields.
183 # For the ZONE commands I used waveforms and subarrays, but that is not as simple.
186 # INPUT - A to D, or D1 to D5
187 # INDEX - Index to use for the input channel PV name and DESC (eg. 0 to 3)
188 # DISABLE - PV name to use for SDIS
191 ## Alarm summary record for input
192 ## This summarizes the software limits on the temperature readings,
193 ## the alarm status reading from the controller and the input reading status.
195 record(calc,
"$(P):LS01:ALARM0_SUMMARY_CALC") {
196 field(INPA,
"$(P):LS01:KRDG0 CP MS")
197 field(INPB,
"$(P):LS01:ALARM0_HIGH CP MS")
198 field(INPC,
"$(P):LS01:ALARM0_LOW CP MS")
199 field(INPD,
"$(P):LS01:RDGST0 CP MS")
201 field(FLNK,
"$(P):LS01:ALARM0_SUMMARY_CALC2")
202 field(SDIS,
"$(P):LS01:DISABLE_0")
205 record(calcout,
"$(P):LS01:ALARM0_SUMMARY_CALC2") {
206 field(INPA,
"$(P):LS01:ALARM0_SUMMARY_CALC.STAT")
207 field(CALC,
"A!=0?1:0")
208 field(DOPT,
"Use CALC")
209 field(OOPT,
"Every Time")
210 field(OUT,
"$(P):LS01:ALARM0_SUMMARY PP")
214 field(ZNAM,
"No Alarm")
219 info(archive,
"Monitor, 00:00:01, VAL")
223 ## If we disable polling this input, disable the alarm
225 record(calcout,
"$(P):LS01:ALARM0_SUMMARY_DISABLE") {
226 field(INPA,
"$(P):LS01:DISABLE_0 CP")
227 field(CALC,
"A==1?0:1")
228 field(DOPT,
"Use CALC")
229 field(OOPT,
"When Zero")
230 field(OUT,
"$(P):LS01:ALARM0_SUMMARY.VAL PP")
235 ## Read the temperature on channel 0 in Kelvin.
238 field(DTYP,
"stream")
239 field(SDIS,
"$(P):LS01:DISABLE_0")
240 field(DESC,
"Channel 0 Temperature")
241 field(INP,
"@ls336.proto getKRDG(A) L0 0")
242 field(SCAN,
"1 second")
256 info(autosaveFields,
"HIHI HIGH LOW LOLO ADEL MDEL")
257 info(archive,
"Monitor, 00:00:01, VAL")
261 ## Read the raw voltage on channel 0.
264 field(DTYP,
"stream")
265 field(SDIS,
"$(P):LS01:DISABLE_0")
266 field(INP,
"@ls336.proto getSRDG(A) L0 0")
267 field(SCAN,
"1 second")
277 record(stringout,
"$(P):LS01:INNAME_S0") {
278 field(DESC,
"Input 0 Name")
279 field(DTYP,
"stream")
280 field(SDIS,
"$(P):LS01:DISABLE")
281 field(OUT,
"@ls336.proto setINNAME(A) L0 0")
282 field(FLNK,
"$(P):LS01:INNAME0.PROC CA")
286 ## Read input sensor 0 name
289 field(DTYP,
"stream")
290 field(SDIS,
"$(P):LS01:DISABLE")
291 field(INP,
"@ls336.proto getINNAME(A) L0 0")
293 field(SCAN,
"Passive")
297 ## Read the high alarm status for input 0.
298 ## This also populates ALARM0_LOW
301 field(DTYP,
"stream")
302 field(SDIS,
"$(P):LS01:DISABLE_0")
303 field(INP,
"@ls336.proto getALARMST(A,$(P):LS01:ALARM0_LOW) L0 0")
304 field(SCAN,
"5 second")
308 info(archive,
"Monitor, 00:00:01, VAL")
312 ## Read the low alarm status for input 0
315 field(DTYP,
"Soft Channel")
319 info(archive,
"Monitor, 00:00:01, VAL")
323 ## Read the alarm parameters.
324 ## NOTE: the last part of the record name is hard coded into protocol file.
327 field(DESC,
"Read Alarm Params")
328 field(DTYP,
"stream")
329 field(SDIS,
"$(P):LS01:DISABLE_0")
330 field(INP,
"@ls336.proto getALARM(A,$(P):LS01:ALARM0) L0 0")
331 field(SCAN,
"5 second")
335 ## Read the rest of the alarm params.
336 ## NOTE: the last part of the record names are hard coded into protocol file.
339 field(DESC,
"Alarm Enabled")
340 field(ZNAM,
"Disabled")
341 field(ONAM,
"Enabled")
344 field(DESC,
"Alarm High Value")
348 field(DESC,
"Alarm Low Value")
352 field(DESC,
"Alarm Deadband")
356 field(DESC,
"Alarm Latch Enable")
357 field(ZNAM,
"Non Latching")
358 field(ONAM,
"Latching")
361 field(DESC,
"Alarm Audible")
363 field(ONAM,
"Audible")
366 field(DESC,
"Alarm Visible")
367 field(ZNAM,
"Non Visible")
368 field(ONAM,
"Visible")
373 ## Read the input reading status
376 field(DTYP,
"stream")
377 field(SDIS,
"$(P):LS01:DISABLE_0")
380 field(ONST,
"Invalid")
382 field(TWST,
"Temp Under")
384 field(THST,
"Temp Over")
386 field(FRST,
"Sensor Zero")
388 field(FVST,
"Sensor Over")
395 field(SCAN,
"5 second")
396 field(INP,
"@ls336.proto getRDGST(A) L0 0")
397 info(archive,
"Monitor, 00:00:01, VAL")
401 ## Read the input curve number
404 field(DTYP,
"stream")
405 field(SDIS,
"$(P):LS01:DISABLE_0")
406 field(SCAN,
"5 second")
407 field(INP,
"@ls336.proto getINCRV(A) L0 0")
412 ## Read the input type information.
413 ## NOTE: the last part of the record name is hard coded into protocol file.
416 field(DESC,
"Read Input Type Params")
417 field(DTYP,
"stream")
418 field(SDIS,
"$(P):LS01:DISABLE_0")
419 field(INP,
"@ls336.proto getINTYPE(A,$(P):LS01:INTYPE0) L0 0")
420 field(SCAN,
"5 second")
424 ## Read the rest of the input type params.
425 ## NOTE: the last part of the record names are hard coded into protocol file.
428 field(DESC,
"Sensor Type")
429 field(ZRST,
"Disabled")
433 field(TWST,
"Platinum RTD")
435 field(THST,
"NTC RTD")
437 field(FRST,
"Thermocouple")
439 field(FVST,
"Capacitance")
443 field(DESC,
"Auto Range")
449 field(ZRST,
"10 Ohm / 2.5V / 50mV")
451 field(ONST,
"30 Ohm / 10V")
453 field(TWST,
"100 Ohm")
455 field(THST,
"300 Ohm")
457 field(FRST,
"1 KOhm")
459 field(FVST,
"3 KOhm")
461 field(SXST,
"10 KOhm")
463 field(SVST,
"30 KOhm")
465 field(EIST,
"100 KOhm")
469 field(DESC,
"Compensation")
477 field(ONST,
"Kelvin")
479 field(TWST,
"Celcius")
481 field(THST,
"Sensor")
488 # Template to provide the records required for an input.
489 # This makes use of the macros required by lakeshore336.template
490 # but also requires macros to specify the input channel and index.
491 # The index is to provide a way for the developer to use a different
492 # channel naming scheme.
494 # For some commands, I hard coded the last part of the record names into
495 # the protocol file. This seems the easiest way to deal with commands
496 # will lots of params returned back, and avoid problematic long INP fields.
497 # For the ZONE commands I used waveforms and subarrays, but that is not as simple.
500 # INPUT - A to D, or D1 to D5
501 # INDEX - Index to use for the input channel PV name and DESC (eg. 0 to 3)
502 # DISABLE - PV name to use for SDIS
505 ## Alarm summary record for input
506 ## This summarizes the software limits on the temperature readings,
507 ## the alarm status reading from the controller and the input reading status.
509 record(calc,
"$(P):LS01:ALARM1_SUMMARY_CALC") {
510 field(INPA,
"$(P):LS01:KRDG1 CP MS")
511 field(INPB,
"$(P):LS01:ALARM1_HIGH CP MS")
512 field(INPC,
"$(P):LS01:ALARM1_LOW CP MS")
513 field(INPD,
"$(P):LS01:RDGST1 CP MS")
515 field(FLNK,
"$(P):LS01:ALARM1_SUMMARY_CALC2")
516 field(SDIS,
"$(P):LS01:DISABLE_1")
519 record(calcout,
"$(P):LS01:ALARM1_SUMMARY_CALC2") {
520 field(INPA,
"$(P):LS01:ALARM1_SUMMARY_CALC.STAT")
521 field(CALC,
"A!=0?1:0")
522 field(DOPT,
"Use CALC")
523 field(OOPT,
"Every Time")
524 field(OUT,
"$(P):LS01:ALARM1_SUMMARY PP")
528 field(ZNAM,
"No Alarm")
533 info(archive,
"Monitor, 00:00:01, VAL")
537 ## If we disable polling this input, disable the alarm
539 record(calcout,
"$(P):LS01:ALARM1_SUMMARY_DISABLE") {
540 field(INPA,
"$(P):LS01:DISABLE_1 CP")
541 field(CALC,
"A==1?0:1")
542 field(DOPT,
"Use CALC")
543 field(OOPT,
"When Zero")
544 field(OUT,
"$(P):LS01:ALARM1_SUMMARY.VAL PP")
549 ## Read the temperature on channel 1 in Kelvin.
552 field(DTYP,
"stream")
553 field(SDIS,
"$(P):LS01:DISABLE_1")
554 field(DESC,
"Channel 1 Temperature")
555 field(INP,
"@ls336.proto getKRDG(B) L0 0")
556 field(SCAN,
"1 second")
570 info(autosaveFields,
"HIHI HIGH LOW LOLO ADEL MDEL")
571 info(archive,
"Monitor, 00:00:01, VAL")
575 ## Read the raw voltage on channel 1.
578 field(DTYP,
"stream")
579 field(SDIS,
"$(P):LS01:DISABLE_1")
580 field(INP,
"@ls336.proto getSRDG(B) L0 0")
581 field(SCAN,
"1 second")
591 record(stringout,
"$(P):LS01:INNAME_S1") {
592 field(DESC,
"Input 1 Name")
593 field(DTYP,
"stream")
594 field(SDIS,
"$(P):LS01:DISABLE")
595 field(OUT,
"@ls336.proto setINNAME(B) L0 0")
596 field(FLNK,
"$(P):LS01:INNAME1.PROC CA")
600 ## Read input sensor 1 name
603 field(DTYP,
"stream")
604 field(SDIS,
"$(P):LS01:DISABLE")
605 field(INP,
"@ls336.proto getINNAME(B) L0 0")
607 field(SCAN,
"Passive")
611 ## Read the high alarm status for input 1.
612 ## This also populates ALARM1_LOW
615 field(DTYP,
"stream")
616 field(SDIS,
"$(P):LS01:DISABLE_1")
617 field(INP,
"@ls336.proto getALARMST(B,$(P):LS01:ALARM1_LOW) L0 0")
618 field(SCAN,
"5 second")
622 info(archive,
"Monitor, 00:00:01, VAL")
626 ## Read the low alarm status for input 1
629 field(DTYP,
"Soft Channel")
633 info(archive,
"Monitor, 00:00:01, VAL")
637 ## Read the alarm parameters.
638 ## NOTE: the last part of the record name is hard coded into protocol file.
641 field(DESC,
"Read Alarm Params")
642 field(DTYP,
"stream")
643 field(SDIS,
"$(P):LS01:DISABLE_1")
644 field(INP,
"@ls336.proto getALARM(B,$(P):LS01:ALARM1) L0 0")
645 field(SCAN,
"5 second")
649 ## Read the rest of the alarm params.
650 ## NOTE: the last part of the record names are hard coded into protocol file.
653 field(DESC,
"Alarm Enabled")
654 field(ZNAM,
"Disabled")
655 field(ONAM,
"Enabled")
658 field(DESC,
"Alarm High Value")
662 field(DESC,
"Alarm Low Value")
666 field(DESC,
"Alarm Deadband")
670 field(DESC,
"Alarm Latch Enable")
671 field(ZNAM,
"Non Latching")
672 field(ONAM,
"Latching")
675 field(DESC,
"Alarm Audible")
677 field(ONAM,
"Audible")
680 field(DESC,
"Alarm Visible")
681 field(ZNAM,
"Non Visible")
682 field(ONAM,
"Visible")
687 ## Read the input reading status
690 field(DTYP,
"stream")
691 field(SDIS,
"$(P):LS01:DISABLE_1")
694 field(ONST,
"Invalid")
696 field(TWST,
"Temp Under")
698 field(THST,
"Temp Over")
700 field(FRST,
"Sensor Zero")
702 field(FVST,
"Sensor Over")
709 field(SCAN,
"5 second")
710 field(INP,
"@ls336.proto getRDGST(B) L0 0")
711 info(archive,
"Monitor, 00:00:01, VAL")
715 ## Read the input curve number
718 field(DTYP,
"stream")
719 field(SDIS,
"$(P):LS01:DISABLE_1")
720 field(SCAN,
"5 second")
721 field(INP,
"@ls336.proto getINCRV(B) L0 0")
726 ## Read the input type information.
727 ## NOTE: the last part of the record name is hard coded into protocol file.
730 field(DESC,
"Read Input Type Params")
731 field(DTYP,
"stream")
732 field(SDIS,
"$(P):LS01:DISABLE_1")
733 field(INP,
"@ls336.proto getINTYPE(B,$(P):LS01:INTYPE1) L0 0")
734 field(SCAN,
"5 second")
738 ## Read the rest of the input type params.
739 ## NOTE: the last part of the record names are hard coded into protocol file.
742 field(DESC,
"Sensor Type")
743 field(ZRST,
"Disabled")
747 field(TWST,
"Platinum RTD")
749 field(THST,
"NTC RTD")
751 field(FRST,
"Thermocouple")
753 field(FVST,
"Capacitance")
757 field(DESC,
"Auto Range")
763 field(ZRST,
"10 Ohm / 2.5V / 50mV")
765 field(ONST,
"30 Ohm / 10V")
767 field(TWST,
"100 Ohm")
769 field(THST,
"300 Ohm")
771 field(FRST,
"1 KOhm")
773 field(FVST,
"3 KOhm")
775 field(SXST,
"10 KOhm")
777 field(SVST,
"30 KOhm")
779 field(EIST,
"100 KOhm")
783 field(DESC,
"Compensation")
791 field(ONST,
"Kelvin")
793 field(TWST,
"Celcius")
795 field(THST,
"Sensor")
802 # Template to provide the records required for an input.
803 # This makes use of the macros required by lakeshore336.template
804 # but also requires macros to specify the input channel and index.
805 # The index is to provide a way for the developer to use a different
806 # channel naming scheme.
808 # For some commands, I hard coded the last part of the record names into
809 # the protocol file. This seems the easiest way to deal with commands
810 # will lots of params returned back, and avoid problematic long INP fields.
811 # For the ZONE commands I used waveforms and subarrays, but that is not as simple.
814 # INPUT - A to D, or D1 to D5
815 # INDEX - Index to use for the input channel PV name and DESC (eg. 0 to 3)
816 # DISABLE - PV name to use for SDIS
819 ## Alarm summary record for input
820 ## This summarizes the software limits on the temperature readings,
821 ## the alarm status reading from the controller and the input reading status.
823 record(calc,
"$(P):LS01:ALARM2_SUMMARY_CALC") {
824 field(INPA,
"$(P):LS01:KRDG2 CP MS")
825 field(INPB,
"$(P):LS01:ALARM2_HIGH CP MS")
826 field(INPC,
"$(P):LS01:ALARM2_LOW CP MS")
827 field(INPD,
"$(P):LS01:RDGST2 CP MS")
829 field(FLNK,
"$(P):LS01:ALARM2_SUMMARY_CALC2")
830 field(SDIS,
"$(P):LS01:DISABLE_2")
833 record(calcout,
"$(P):LS01:ALARM2_SUMMARY_CALC2") {
834 field(INPA,
"$(P):LS01:ALARM2_SUMMARY_CALC.STAT")
835 field(CALC,
"A!=0?1:0")
836 field(DOPT,
"Use CALC")
837 field(OOPT,
"Every Time")
838 field(OUT,
"$(P):LS01:ALARM2_SUMMARY PP")
842 field(ZNAM,
"No Alarm")
847 info(archive,
"Monitor, 00:00:01, VAL")
851 ## If we disable polling this input, disable the alarm
853 record(calcout,
"$(P):LS01:ALARM2_SUMMARY_DISABLE") {
854 field(INPA,
"$(P):LS01:DISABLE_2 CP")
855 field(CALC,
"A==1?0:1")
856 field(DOPT,
"Use CALC")
857 field(OOPT,
"When Zero")
858 field(OUT,
"$(P):LS01:ALARM2_SUMMARY.VAL PP")
863 ## Read the temperature on channel 2 in Kelvin.
866 field(DTYP,
"stream")
867 field(SDIS,
"$(P):LS01:DISABLE_2")
868 field(DESC,
"Channel 2 Temperature")
869 field(INP,
"@ls336.proto getKRDG(C) L0 0")
870 field(SCAN,
"1 second")
884 info(autosaveFields,
"HIHI HIGH LOW LOLO ADEL MDEL")
885 info(archive,
"Monitor, 00:00:01, VAL")
889 ## Read the raw voltage on channel 2.
892 field(DTYP,
"stream")
893 field(SDIS,
"$(P):LS01:DISABLE_2")
894 field(INP,
"@ls336.proto getSRDG(C) L0 0")
895 field(SCAN,
"1 second")
905 record(stringout,
"$(P):LS01:INNAME_S2") {
906 field(DESC,
"Input 2 Name")
907 field(DTYP,
"stream")
908 field(SDIS,
"$(P):LS01:DISABLE")
909 field(OUT,
"@ls336.proto setINNAME(C) L0 0")
910 field(FLNK,
"$(P):LS01:INNAME2.PROC CA")
914 ## Read input sensor 2 name
917 field(DTYP,
"stream")
918 field(SDIS,
"$(P):LS01:DISABLE")
919 field(INP,
"@ls336.proto getINNAME(C) L0 0")
921 field(SCAN,
"Passive")
925 ## Read the high alarm status for input 2.
926 ## This also populates ALARM2_LOW
929 field(DTYP,
"stream")
930 field(SDIS,
"$(P):LS01:DISABLE_2")
931 field(INP,
"@ls336.proto getALARMST(C,$(P):LS01:ALARM2_LOW) L0 0")
932 field(SCAN,
"5 second")
936 info(archive,
"Monitor, 00:00:01, VAL")
940 ## Read the low alarm status for input 2
943 field(DTYP,
"Soft Channel")
947 info(archive,
"Monitor, 00:00:01, VAL")
951 ## Read the alarm parameters.
952 ## NOTE: the last part of the record name is hard coded into protocol file.
955 field(DESC,
"Read Alarm Params")
956 field(DTYP,
"stream")
957 field(SDIS,
"$(P):LS01:DISABLE_2")
958 field(INP,
"@ls336.proto getALARM(C,$(P):LS01:ALARM2) L0 0")
959 field(SCAN,
"5 second")
963 ## Read the rest of the alarm params.
964 ## NOTE: the last part of the record names are hard coded into protocol file.
967 field(DESC,
"Alarm Enabled")
968 field(ZNAM,
"Disabled")
969 field(ONAM,
"Enabled")
972 field(DESC,
"Alarm High Value")
976 field(DESC,
"Alarm Low Value")
980 field(DESC,
"Alarm Deadband")
984 field(DESC,
"Alarm Latch Enable")
985 field(ZNAM,
"Non Latching")
986 field(ONAM,
"Latching")
989 field(DESC,
"Alarm Audible")
991 field(ONAM,
"Audible")
994 field(DESC,
"Alarm Visible")
995 field(ZNAM,
"Non Visible")
996 field(ONAM,
"Visible")
1001 ## Read the input reading status
1004 field(DTYP,
"stream")
1005 field(SDIS,
"$(P):LS01:DISABLE_2")
1006 field(ZRST,
"Valid")
1008 field(ONST,
"Invalid")
1010 field(TWST,
"Temp Under")
1012 field(THST,
"Temp Over")
1014 field(FRST,
"Sensor Zero")
1016 field(FVST,
"Sensor Over")
1018 field(ONSV,
"MAJOR")
1019 field(TWSV,
"MAJOR")
1020 field(THSV,
"MAJOR")
1021 field(FRSV,
"MAJOR")
1022 field(FVSV,
"MAJOR")
1023 field(SCAN,
"5 second")
1024 field(INP,
"@ls336.proto getRDGST(C) L0 0")
1025 info(archive,
"Monitor, 00:00:01, VAL")
1029 ## Read the input curve number
1032 field(DTYP,
"stream")
1033 field(SDIS,
"$(P):LS01:DISABLE_2")
1034 field(SCAN,
"5 second")
1035 field(INP,
"@ls336.proto getINCRV(C) L0 0")
1040 ## Read the input type information.
1041 ## NOTE: the last part of the record name is hard coded into protocol file.
1044 field(DESC,
"Read Input Type Params")
1045 field(DTYP,
"stream")
1046 field(SDIS,
"$(P):LS01:DISABLE_2")
1047 field(INP,
"@ls336.proto getINTYPE(C,$(P):LS01:INTYPE2) L0 0")
1048 field(SCAN,
"5 second")
1052 ## Read the rest of the input type params.
1053 ## NOTE: the last part of the record names are hard coded into protocol file.
1056 field(DESC,
"Sensor Type")
1057 field(ZRST,
"Disabled")
1059 field(ONST,
"Diode")
1061 field(TWST,
"Platinum RTD")
1063 field(THST,
"NTC RTD")
1065 field(FRST,
"Thermocouple")
1067 field(FVST,
"Capacitance")
1071 field(DESC,
"Auto Range")
1076 field(DESC,
"Range")
1077 field(ZRST,
"10 Ohm / 2.5V / 50mV")
1079 field(ONST,
"30 Ohm / 10V")
1081 field(TWST,
"100 Ohm")
1083 field(THST,
"300 Ohm")
1085 field(FRST,
"1 KOhm")
1087 field(FVST,
"3 KOhm")
1089 field(SXST,
"10 KOhm")
1091 field(SVST,
"30 KOhm")
1093 field(EIST,
"100 KOhm")
1097 field(DESC,
"Compensation")
1102 field(DESC,
"Units")
1105 field(ONST,
"Kelvin")
1107 field(TWST,
"Celcius")
1109 field(THST,
"Sensor")
1116 # Template to provide the records required for an input.
1117 # This makes use of the macros required by lakeshore336.template
1118 # but also requires macros to specify the input channel and index.
1119 # The index is to provide a way for the developer to use a different
1120 # channel naming scheme.
1122 # For some commands, I hard coded the last part of the record names into
1123 # the protocol file. This seems the easiest way to deal with commands
1124 # will lots of params returned back, and avoid problematic long INP fields.
1125 # For the ZONE commands I used waveforms and subarrays, but that is not as simple.
1128 # INPUT - A to D, or D1 to D5
1129 # INDEX - Index to use for the input channel PV name and DESC (eg. 0 to 3)
1130 # DISABLE - PV name to use for SDIS
1133 ## Alarm summary record for input
1134 ## This summarizes the software limits on the temperature readings,
1135 ## the alarm status reading from the controller and the input reading status.
1137 record(calc,
"$(P):LS01:ALARM3_SUMMARY_CALC") {
1138 field(INPA,
"$(P):LS01:KRDG3 CP MS")
1139 field(INPB,
"$(P):LS01:ALARM3_HIGH CP MS")
1140 field(INPC,
"$(P):LS01:ALARM3_LOW CP MS")
1141 field(INPD,
"$(P):LS01:RDGST3 CP MS")
1143 field(FLNK,
"$(P):LS01:ALARM3_SUMMARY_CALC2")
1144 field(SDIS,
"$(P):LS01:DISABLE_3")
1147 record(calcout,
"$(P):LS01:ALARM3_SUMMARY_CALC2") {
1148 field(INPA,
"$(P):LS01:ALARM3_SUMMARY_CALC.STAT")
1149 field(CALC,
"A!=0?1:0")
1150 field(DOPT,
"Use CALC")
1151 field(OOPT,
"Every Time")
1152 field(OUT,
"$(P):LS01:ALARM3_SUMMARY PP")
1156 field(ZNAM,
"No Alarm")
1157 field(ONAM,
"Alarm")
1161 info(archive,
"Monitor, 00:00:01, VAL")
1165 ## If we disable polling this input, disable the alarm
1167 record(calcout,
"$(P):LS01:ALARM3_SUMMARY_DISABLE") {
1168 field(INPA,
"$(P):LS01:DISABLE_3 CP")
1169 field(CALC,
"A==1?0:1")
1170 field(DOPT,
"Use CALC")
1171 field(OOPT,
"When Zero")
1172 field(OUT,
"$(P):LS01:ALARM3_SUMMARY.VAL PP")
1177 ## Read the temperature on channel 3 in Kelvin.
1180 field(DTYP,
"stream")
1181 field(SDIS,
"$(P):LS01:DISABLE_3")
1182 field(DESC,
"Channel 3 Temperature")
1183 field(INP,
"@ls336.proto getKRDG(D) L0 0")
1184 field(SCAN,
"1 second")
1198 info(autosaveFields,
"HIHI HIGH LOW LOLO ADEL MDEL")
1199 info(archive,
"Monitor, 00:00:01, VAL")
1203 ## Read the raw voltage on channel 3.
1206 field(DTYP,
"stream")
1207 field(SDIS,
"$(P):LS01:DISABLE_3")
1208 field(INP,
"@ls336.proto getSRDG(D) L0 0")
1209 field(SCAN,
"1 second")
1217 ## Set sensor 3 name
1220 field(DESC,
"Input 3 Name")
1221 field(DTYP,
"stream")
1222 field(SDIS,
"$(P):LS01:DISABLE")
1223 field(OUT,
"@ls336.proto setINNAME(D) L0 0")
1224 field(FLNK,
"$(P):LS01:INNAME3.PROC CA")
1228 ## Read input sensor 3 name
1231 field(DTYP,
"stream")
1232 field(SDIS,
"$(P):LS01:DISABLE")
1233 field(INP,
"@ls336.proto getINNAME(D) L0 0")
1235 field(SCAN,
"Passive")
1239 ## Read the high alarm status for input 3.
1240 ## This also populates ALARM3_LOW
1243 field(DTYP,
"stream")
1244 field(SDIS,
"$(P):LS01:DISABLE_3")
1245 field(INP,
"@ls336.proto getALARMST(D,$(P):LS01:ALARM3_LOW) L0 0")
1246 field(SCAN,
"5 second")
1250 info(archive,
"Monitor, 00:00:01, VAL")
1254 ## Read the low alarm status for input 3
1257 field(DTYP,
"Soft Channel")
1261 info(archive,
"Monitor, 00:00:01, VAL")
1265 ## Read the alarm parameters.
1266 ## NOTE: the last part of the record name is hard coded into protocol file.
1269 field(DESC,
"Read Alarm Params")
1270 field(DTYP,
"stream")
1271 field(SDIS,
"$(P):LS01:DISABLE_3")
1272 field(INP,
"@ls336.proto getALARM(D,$(P):LS01:ALARM3) L0 0")
1273 field(SCAN,
"5 second")
1277 ## Read the rest of the alarm params.
1278 ## NOTE: the last part of the record names are hard coded into protocol file.
1281 field(DESC,
"Alarm Enabled")
1282 field(ZNAM,
"Disabled")
1283 field(ONAM,
"Enabled")
1286 field(DESC,
"Alarm High Value")
1290 field(DESC,
"Alarm Low Value")
1294 field(DESC,
"Alarm Deadband")
1298 field(DESC,
"Alarm Latch Enable")
1299 field(ZNAM,
"Non Latching")
1300 field(ONAM,
"Latching")
1303 field(DESC,
"Alarm Audible")
1304 field(ZNAM,
"Quiet")
1305 field(ONAM,
"Audible")
1308 field(DESC,
"Alarm Visible")
1309 field(ZNAM,
"Non Visible")
1310 field(ONAM,
"Visible")
1315 ## Read the input reading status
1318 field(DTYP,
"stream")
1319 field(SDIS,
"$(P):LS01:DISABLE_3")
1320 field(ZRST,
"Valid")
1322 field(ONST,
"Invalid")
1324 field(TWST,
"Temp Under")
1326 field(THST,
"Temp Over")
1328 field(FRST,
"Sensor Zero")
1330 field(FVST,
"Sensor Over")
1332 field(ONSV,
"MAJOR")
1333 field(TWSV,
"MAJOR")
1334 field(THSV,
"MAJOR")
1335 field(FRSV,
"MAJOR")
1336 field(FVSV,
"MAJOR")
1337 field(SCAN,
"5 second")
1338 field(INP,
"@ls336.proto getRDGST(D) L0 0")
1339 info(archive,
"Monitor, 00:00:01, VAL")
1343 ## Read the input curve number
1346 field(DTYP,
"stream")
1347 field(SDIS,
"$(P):LS01:DISABLE_3")
1348 field(SCAN,
"5 second")
1349 field(INP,
"@ls336.proto getINCRV(D) L0 0")
1354 ## Read the input type information.
1355 ## NOTE: the last part of the record name is hard coded into protocol file.
1358 field(DESC,
"Read Input Type Params")
1359 field(DTYP,
"stream")
1360 field(SDIS,
"$(P):LS01:DISABLE_3")
1361 field(INP,
"@ls336.proto getINTYPE(D,$(P):LS01:INTYPE3) L0 0")
1362 field(SCAN,
"5 second")
1366 ## Read the rest of the input type params.
1367 ## NOTE: the last part of the record names are hard coded into protocol file.
1370 field(DESC,
"Sensor Type")
1371 field(ZRST,
"Disabled")
1373 field(ONST,
"Diode")
1375 field(TWST,
"Platinum RTD")
1377 field(THST,
"NTC RTD")
1379 field(FRST,
"Thermocouple")
1381 field(FVST,
"Capacitance")
1385 field(DESC,
"Auto Range")
1390 field(DESC,
"Range")
1391 field(ZRST,
"10 Ohm / 2.5V / 50mV")
1393 field(ONST,
"30 Ohm / 10V")
1395 field(TWST,
"100 Ohm")
1397 field(THST,
"300 Ohm")
1399 field(FRST,
"1 KOhm")
1401 field(FVST,
"3 KOhm")
1403 field(SXST,
"10 KOhm")
1405 field(SVST,
"30 KOhm")
1407 field(EIST,
"100 KOhm")
1411 field(DESC,
"Compensation")
1416 field(DESC,
"Units")
1419 field(ONST,
"Kelvin")
1421 field(TWST,
"Celcius")
1423 field(THST,
"Sensor")
1429 ################################################################
1431 ################################################################
1432 # Include 3062 option
1433 ################################################################
1436 # This file provides records to read inputs D1 to D5
1437 # that are provided by the 3062 option. This option card
1438 # can be used with both the 336 and 350. By default these
1439 # records are disabled (there is a record to control this).
1441 # This file can be included in the lakeshore336.template
1442 # so does not need to be instantiated separately. It will
1443 # make use of the macros used in lakeshore336.template.
1445 # Seperate polling records to control which inputs we are
1446 # reading. If an input is not being polled, it won't
1447 # affect the top level lakeshore alarm.
1450 field(DESC,
"Disable D2 polling")
1453 field(OMSL,
"supervisory")
1454 field(ZNAM,
"Enabled")
1455 field(ONAM,
"Disabled")
1456 field(ZSV,
"NO_ALARM")
1458 info(autosaveFields,
"VAL")
1462 field(DESC,
"Disable D3 polling")
1465 field(OMSL,
"supervisory")
1466 field(ZNAM,
"Enabled")
1467 field(ONAM,
"Disabled")
1468 field(ZSV,
"NO_ALARM")
1470 info(autosaveFields,
"VAL")
1474 field(DESC,
"Disable D4 polling")
1477 field(OMSL,
"supervisory")
1478 field(ZNAM,
"Enabled")
1479 field(ONAM,
"Disabled")
1480 field(ZSV,
"NO_ALARM")
1482 info(autosaveFields,
"VAL")
1486 field(DESC,
"Disable D5 polling")
1489 field(OMSL,
"supervisory")
1490 field(ZNAM,
"Enabled")
1491 field(ONAM,
"Disabled")
1492 field(ZSV,
"NO_ALARM")
1494 info(autosaveFields,
"VAL")
1498 # Template to provide the records required for an input.
1499 # This makes use of the macros required by lakeshore336.template
1500 # but also requires macros to specify the input channel and index.
1501 # The index is to provide a way for the developer to use a different
1502 # channel naming scheme.
1504 # For some commands, I hard coded the last part of the record names into
1505 # the protocol file. This seems the easiest way to deal with commands
1506 # will lots of params returned back, and avoid problematic long INP fields.
1507 # For the ZONE commands I used waveforms and subarrays, but that is not as simple.
1510 # INPUT - A to D, or D1 to D5
1511 # INDEX - Index to use for the input channel PV name and DESC (eg. 0 to 3)
1512 # DISABLE - PV name to use for SDIS
1515 ## Alarm summary record for input
1516 ## This summarizes the software limits on the temperature readings,
1517 ## the alarm status reading from the controller and the input reading status.
1519 record(calc,
"$(P):LS01:ALARMD2_SUMMARY_CALC") {
1520 field(INPA,
"$(P):LS01:KRDGD2 CP MS")
1521 field(INPB,
"$(P):LS01:ALARMD2_HIGH CP MS")
1522 field(INPC,
"$(P):LS01:ALARMD2_LOW CP MS")
1523 field(INPD,
"$(P):LS01:RDGSTD2 CP MS")
1525 field(FLNK,
"$(P):LS01:ALARMD2_SUMMARY_CALC2")
1526 field(SDIS,
"$(P):LS01:DISABLE_D2")
1529 record(calcout,
"$(P):LS01:ALARMD2_SUMMARY_CALC2") {
1530 field(INPA,
"$(P):LS01:ALARMD2_SUMMARY_CALC.STAT")
1531 field(CALC,
"A!=0?1:0")
1532 field(DOPT,
"Use CALC")
1533 field(OOPT,
"Every Time")
1534 field(OUT,
"$(P):LS01:ALARMD2_SUMMARY PP")
1538 field(ZNAM,
"No Alarm")
1539 field(ONAM,
"Alarm")
1543 info(archive,
"Monitor, 00:00:01, VAL")
1547 ## If we disable polling this input, disable the alarm
1549 record(calcout,
"$(P):LS01:ALARMD2_SUMMARY_DISABLE") {
1550 field(INPA,
"$(P):LS01:DISABLE_D2 CP")
1551 field(CALC,
"A==1?0:1")
1552 field(DOPT,
"Use CALC")
1553 field(OOPT,
"When Zero")
1554 field(OUT,
"$(P):LS01:ALARMD2_SUMMARY.VAL PP")
1559 ## Read the temperature on channel D2 in Kelvin.
1562 field(DTYP,
"stream")
1563 field(SDIS,
"$(P):LS01:DISABLE_D2")
1564 field(DESC,
"Channel D2 Temperature")
1565 field(INP,
"@ls336.proto getKRDG(D2) L0 0")
1566 field(SCAN,
"1 second")
1580 info(autosaveFields,
"HIHI HIGH LOW LOLO ADEL MDEL")
1581 info(archive,
"Monitor, 00:00:01, VAL")
1585 ## Read the raw voltage on channel D2.
1588 field(DTYP,
"stream")
1589 field(SDIS,
"$(P):LS01:DISABLE_D2")
1590 field(INP,
"@ls336.proto getSRDG(D2) L0 0")
1591 field(SCAN,
"1 second")
1599 ## Set sensor D2 name
1602 field(DESC,
"Input D2 Name")
1603 field(DTYP,
"stream")
1604 field(SDIS,
"$(P):LS01:DISABLE")
1605 field(OUT,
"@ls336.proto setINNAME(D2) L0 0")
1606 field(FLNK,
"$(P):LS01:INNAMED2.PROC CA")
1610 ## Read input sensor D2 name
1613 field(DTYP,
"stream")
1614 field(SDIS,
"$(P):LS01:DISABLE")
1615 field(INP,
"@ls336.proto getINNAME(D2) L0 0")
1617 field(SCAN,
"Passive")
1621 ## Read the high alarm status for input D2.
1622 ## This also populates ALARMD2_LOW
1625 field(DTYP,
"stream")
1626 field(SDIS,
"$(P):LS01:DISABLE_D2")
1627 field(INP,
"@ls336.proto getALARMST(D2,$(P):LS01:ALARMD2_LOW) L0 0")
1628 field(SCAN,
"5 second")
1632 info(archive,
"Monitor, 00:00:01, VAL")
1636 ## Read the low alarm status for input D2
1639 field(DTYP,
"Soft Channel")
1643 info(archive,
"Monitor, 00:00:01, VAL")
1647 ## Read the alarm parameters.
1648 ## NOTE: the last part of the record name is hard coded into protocol file.
1651 field(DESC,
"Read Alarm Params")
1652 field(DTYP,
"stream")
1653 field(SDIS,
"$(P):LS01:DISABLE_D2")
1654 field(INP,
"@ls336.proto getALARM(D2,$(P):LS01:ALARMD2) L0 0")
1655 field(SCAN,
"5 second")
1659 ## Read the rest of the alarm params.
1660 ## NOTE: the last part of the record names are hard coded into protocol file.
1663 field(DESC,
"Alarm Enabled")
1664 field(ZNAM,
"Disabled")
1665 field(ONAM,
"Enabled")
1668 field(DESC,
"Alarm High Value")
1672 field(DESC,
"Alarm Low Value")
1676 field(DESC,
"Alarm Deadband")
1680 field(DESC,
"Alarm Latch Enable")
1681 field(ZNAM,
"Non Latching")
1682 field(ONAM,
"Latching")
1685 field(DESC,
"Alarm Audible")
1686 field(ZNAM,
"Quiet")
1687 field(ONAM,
"Audible")
1690 field(DESC,
"Alarm Visible")
1691 field(ZNAM,
"Non Visible")
1692 field(ONAM,
"Visible")
1697 ## Read the input reading status
1700 field(DTYP,
"stream")
1701 field(SDIS,
"$(P):LS01:DISABLE_D2")
1702 field(ZRST,
"Valid")
1704 field(ONST,
"Invalid")
1706 field(TWST,
"Temp Under")
1708 field(THST,
"Temp Over")
1710 field(FRST,
"Sensor Zero")
1712 field(FVST,
"Sensor Over")
1714 field(ONSV,
"MAJOR")
1715 field(TWSV,
"MAJOR")
1716 field(THSV,
"MAJOR")
1717 field(FRSV,
"MAJOR")
1718 field(FVSV,
"MAJOR")
1719 field(SCAN,
"5 second")
1720 field(INP,
"@ls336.proto getRDGST(D2) L0 0")
1721 info(archive,
"Monitor, 00:00:01, VAL")
1725 ## Read the input curve number
1728 field(DTYP,
"stream")
1729 field(SDIS,
"$(P):LS01:DISABLE_D2")
1730 field(SCAN,
"5 second")
1731 field(INP,
"@ls336.proto getINCRV(D2) L0 0")
1736 ## Read the input type information.
1737 ## NOTE: the last part of the record name is hard coded into protocol file.
1740 field(DESC,
"Read Input Type Params")
1741 field(DTYP,
"stream")
1742 field(SDIS,
"$(P):LS01:DISABLE_D2")
1743 field(INP,
"@ls336.proto getINTYPE(D2,$(P):LS01:INTYPED2) L0 0")
1744 field(SCAN,
"5 second")
1748 ## Read the rest of the input type params.
1749 ## NOTE: the last part of the record names are hard coded into protocol file.
1752 field(DESC,
"Sensor Type")
1753 field(ZRST,
"Disabled")
1755 field(ONST,
"Diode")
1757 field(TWST,
"Platinum RTD")
1759 field(THST,
"NTC RTD")
1761 field(FRST,
"Thermocouple")
1763 field(FVST,
"Capacitance")
1767 field(DESC,
"Auto Range")
1772 field(DESC,
"Range")
1773 field(ZRST,
"10 Ohm / 2.5V / 50mV")
1775 field(ONST,
"30 Ohm / 10V")
1777 field(TWST,
"100 Ohm")
1779 field(THST,
"300 Ohm")
1781 field(FRST,
"1 KOhm")
1783 field(FVST,
"3 KOhm")
1785 field(SXST,
"10 KOhm")
1787 field(SVST,
"30 KOhm")
1789 field(EIST,
"100 KOhm")
1793 field(DESC,
"Compensation")
1798 field(DESC,
"Units")
1801 field(ONST,
"Kelvin")
1803 field(TWST,
"Celcius")
1805 field(THST,
"Sensor")
1812 # Template to provide the records required for an input.
1813 # This makes use of the macros required by lakeshore336.template
1814 # but also requires macros to specify the input channel and index.
1815 # The index is to provide a way for the developer to use a different
1816 # channel naming scheme.
1818 # For some commands, I hard coded the last part of the record names into
1819 # the protocol file. This seems the easiest way to deal with commands
1820 # will lots of params returned back, and avoid problematic long INP fields.
1821 # For the ZONE commands I used waveforms and subarrays, but that is not as simple.
1824 # INPUT - A to D, or D1 to D5
1825 # INDEX - Index to use for the input channel PV name and DESC (eg. 0 to 3)
1826 # DISABLE - PV name to use for SDIS
1829 ## Alarm summary record for input
1830 ## This summarizes the software limits on the temperature readings,
1831 ## the alarm status reading from the controller and the input reading status.
1833 record(calc,
"$(P):LS01:ALARMD3_SUMMARY_CALC") {
1834 field(INPA,
"$(P):LS01:KRDGD3 CP MS")
1835 field(INPB,
"$(P):LS01:ALARMD3_HIGH CP MS")
1836 field(INPC,
"$(P):LS01:ALARMD3_LOW CP MS")
1837 field(INPD,
"$(P):LS01:RDGSTD3 CP MS")
1839 field(FLNK,
"$(P):LS01:ALARMD3_SUMMARY_CALC2")
1840 field(SDIS,
"$(P):LS01:DISABLE_D3")
1843 record(calcout,
"$(P):LS01:ALARMD3_SUMMARY_CALC2") {
1844 field(INPA,
"$(P):LS01:ALARMD3_SUMMARY_CALC.STAT")
1845 field(CALC,
"A!=0?1:0")
1846 field(DOPT,
"Use CALC")
1847 field(OOPT,
"Every Time")
1848 field(OUT,
"$(P):LS01:ALARMD3_SUMMARY PP")
1852 field(ZNAM,
"No Alarm")
1853 field(ONAM,
"Alarm")
1857 info(archive,
"Monitor, 00:00:01, VAL")
1861 ## If we disable polling this input, disable the alarm
1863 record(calcout,
"$(P):LS01:ALARMD3_SUMMARY_DISABLE") {
1864 field(INPA,
"$(P):LS01:DISABLE_D3 CP")
1865 field(CALC,
"A==1?0:1")
1866 field(DOPT,
"Use CALC")
1867 field(OOPT,
"When Zero")
1868 field(OUT,
"$(P):LS01:ALARMD3_SUMMARY.VAL PP")
1873 ## Read the temperature on channel D3 in Kelvin.
1876 field(DTYP,
"stream")
1877 field(SDIS,
"$(P):LS01:DISABLE_D3")
1878 field(DESC,
"Channel D3 Temperature")
1879 field(INP,
"@ls336.proto getKRDG(D3) L0 0")
1880 field(SCAN,
"1 second")
1894 info(autosaveFields,
"HIHI HIGH LOW LOLO ADEL MDEL")
1895 info(archive,
"Monitor, 00:00:01, VAL")
1899 ## Read the raw voltage on channel D3.
1902 field(DTYP,
"stream")
1903 field(SDIS,
"$(P):LS01:DISABLE_D3")
1904 field(INP,
"@ls336.proto getSRDG(D3) L0 0")
1905 field(SCAN,
"1 second")
1913 ## Set sensor D3 name
1916 field(DESC,
"Input D3 Name")
1917 field(DTYP,
"stream")
1918 field(SDIS,
"$(P):LS01:DISABLE")
1919 field(OUT,
"@ls336.proto setINNAME(D3) L0 0")
1920 field(FLNK,
"$(P):LS01:INNAMED3.PROC CA")
1924 ## Read input sensor D3 name
1927 field(DTYP,
"stream")
1928 field(SDIS,
"$(P):LS01:DISABLE")
1929 field(INP,
"@ls336.proto getINNAME(D3) L0 0")
1931 field(SCAN,
"Passive")
1935 ## Read the high alarm status for input D3.
1936 ## This also populates ALARMD3_LOW
1939 field(DTYP,
"stream")
1940 field(SDIS,
"$(P):LS01:DISABLE_D3")
1941 field(INP,
"@ls336.proto getALARMST(D3,$(P):LS01:ALARMD3_LOW) L0 0")
1942 field(SCAN,
"5 second")
1946 info(archive,
"Monitor, 00:00:01, VAL")
1950 ## Read the low alarm status for input D3
1953 field(DTYP,
"Soft Channel")
1957 info(archive,
"Monitor, 00:00:01, VAL")
1961 ## Read the alarm parameters.
1962 ## NOTE: the last part of the record name is hard coded into protocol file.
1965 field(DESC,
"Read Alarm Params")
1966 field(DTYP,
"stream")
1967 field(SDIS,
"$(P):LS01:DISABLE_D3")
1968 field(INP,
"@ls336.proto getALARM(D3,$(P):LS01:ALARMD3) L0 0")
1969 field(SCAN,
"5 second")
1973 ## Read the rest of the alarm params.
1974 ## NOTE: the last part of the record names are hard coded into protocol file.
1977 field(DESC,
"Alarm Enabled")
1978 field(ZNAM,
"Disabled")
1979 field(ONAM,
"Enabled")
1982 field(DESC,
"Alarm High Value")
1986 field(DESC,
"Alarm Low Value")
1990 field(DESC,
"Alarm Deadband")
1994 field(DESC,
"Alarm Latch Enable")
1995 field(ZNAM,
"Non Latching")
1996 field(ONAM,
"Latching")
1999 field(DESC,
"Alarm Audible")
2000 field(ZNAM,
"Quiet")
2001 field(ONAM,
"Audible")
2004 field(DESC,
"Alarm Visible")
2005 field(ZNAM,
"Non Visible")
2006 field(ONAM,
"Visible")
2011 ## Read the input reading status
2014 field(DTYP,
"stream")
2015 field(SDIS,
"$(P):LS01:DISABLE_D3")
2016 field(ZRST,
"Valid")
2018 field(ONST,
"Invalid")
2020 field(TWST,
"Temp Under")
2022 field(THST,
"Temp Over")
2024 field(FRST,
"Sensor Zero")
2026 field(FVST,
"Sensor Over")
2028 field(ONSV,
"MAJOR")
2029 field(TWSV,
"MAJOR")
2030 field(THSV,
"MAJOR")
2031 field(FRSV,
"MAJOR")
2032 field(FVSV,
"MAJOR")
2033 field(SCAN,
"5 second")
2034 field(INP,
"@ls336.proto getRDGST(D3) L0 0")
2035 info(archive,
"Monitor, 00:00:01, VAL")
2039 ## Read the input curve number
2042 field(DTYP,
"stream")
2043 field(SDIS,
"$(P):LS01:DISABLE_D3")
2044 field(SCAN,
"5 second")
2045 field(INP,
"@ls336.proto getINCRV(D3) L0 0")
2050 ## Read the input type information.
2051 ## NOTE: the last part of the record name is hard coded into protocol file.
2054 field(DESC,
"Read Input Type Params")
2055 field(DTYP,
"stream")
2056 field(SDIS,
"$(P):LS01:DISABLE_D3")
2057 field(INP,
"@ls336.proto getINTYPE(D3,$(P):LS01:INTYPED3) L0 0")
2058 field(SCAN,
"5 second")
2062 ## Read the rest of the input type params.
2063 ## NOTE: the last part of the record names are hard coded into protocol file.
2066 field(DESC,
"Sensor Type")
2067 field(ZRST,
"Disabled")
2069 field(ONST,
"Diode")
2071 field(TWST,
"Platinum RTD")
2073 field(THST,
"NTC RTD")
2075 field(FRST,
"Thermocouple")
2077 field(FVST,
"Capacitance")
2081 field(DESC,
"Auto Range")
2086 field(DESC,
"Range")
2087 field(ZRST,
"10 Ohm / 2.5V / 50mV")
2089 field(ONST,
"30 Ohm / 10V")
2091 field(TWST,
"100 Ohm")
2093 field(THST,
"300 Ohm")
2095 field(FRST,
"1 KOhm")
2097 field(FVST,
"3 KOhm")
2099 field(SXST,
"10 KOhm")
2101 field(SVST,
"30 KOhm")
2103 field(EIST,
"100 KOhm")
2107 field(DESC,
"Compensation")
2112 field(DESC,
"Units")
2115 field(ONST,
"Kelvin")
2117 field(TWST,
"Celcius")
2119 field(THST,
"Sensor")
2126 # Template to provide the records required for an input.
2127 # This makes use of the macros required by lakeshore336.template
2128 # but also requires macros to specify the input channel and index.
2129 # The index is to provide a way for the developer to use a different
2130 # channel naming scheme.
2132 # For some commands, I hard coded the last part of the record names into
2133 # the protocol file. This seems the easiest way to deal with commands
2134 # will lots of params returned back, and avoid problematic long INP fields.
2135 # For the ZONE commands I used waveforms and subarrays, but that is not as simple.
2138 # INPUT - A to D, or D1 to D5
2139 # INDEX - Index to use for the input channel PV name and DESC (eg. 0 to 3)
2140 # DISABLE - PV name to use for SDIS
2143 ## Alarm summary record for input
2144 ## This summarizes the software limits on the temperature readings,
2145 ## the alarm status reading from the controller and the input reading status.
2147 record(calc,
"$(P):LS01:ALARMD4_SUMMARY_CALC") {
2148 field(INPA,
"$(P):LS01:KRDGD4 CP MS")
2149 field(INPB,
"$(P):LS01:ALARMD4_HIGH CP MS")
2150 field(INPC,
"$(P):LS01:ALARMD4_LOW CP MS")
2151 field(INPD,
"$(P):LS01:RDGSTD4 CP MS")
2153 field(FLNK,
"$(P):LS01:ALARMD4_SUMMARY_CALC2")
2154 field(SDIS,
"$(P):LS01:DISABLE_D4")
2157 record(calcout,
"$(P):LS01:ALARMD4_SUMMARY_CALC2") {
2158 field(INPA,
"$(P):LS01:ALARMD4_SUMMARY_CALC.STAT")
2159 field(CALC,
"A!=0?1:0")
2160 field(DOPT,
"Use CALC")
2161 field(OOPT,
"Every Time")
2162 field(OUT,
"$(P):LS01:ALARMD4_SUMMARY PP")
2166 field(ZNAM,
"No Alarm")
2167 field(ONAM,
"Alarm")
2171 info(archive,
"Monitor, 00:00:01, VAL")
2175 ## If we disable polling this input, disable the alarm
2177 record(calcout,
"$(P):LS01:ALARMD4_SUMMARY_DISABLE") {
2178 field(INPA,
"$(P):LS01:DISABLE_D4 CP")
2179 field(CALC,
"A==1?0:1")
2180 field(DOPT,
"Use CALC")
2181 field(OOPT,
"When Zero")
2182 field(OUT,
"$(P):LS01:ALARMD4_SUMMARY.VAL PP")
2187 ## Read the temperature on channel D4 in Kelvin.
2190 field(DTYP,
"stream")
2191 field(SDIS,
"$(P):LS01:DISABLE_D4")
2192 field(DESC,
"Channel D4 Temperature")
2193 field(INP,
"@ls336.proto getKRDG(D4) L0 0")
2194 field(SCAN,
"1 second")
2208 info(autosaveFields,
"HIHI HIGH LOW LOLO ADEL MDEL")
2209 info(archive,
"Monitor, 00:00:01, VAL")
2213 ## Read the raw voltage on channel D4.
2216 field(DTYP,
"stream")
2217 field(SDIS,
"$(P):LS01:DISABLE_D4")
2218 field(INP,
"@ls336.proto getSRDG(D4) L0 0")
2219 field(SCAN,
"1 second")
2227 ## Set sensor D4 name
2230 field(DESC,
"Input D4 Name")
2231 field(DTYP,
"stream")
2232 field(SDIS,
"$(P):LS01:DISABLE")
2233 field(OUT,
"@ls336.proto setINNAME(D4) L0 0")
2234 field(FLNK,
"$(P):LS01:INNAMED4.PROC CA")
2238 ## Read input sensor D4 name
2241 field(DTYP,
"stream")
2242 field(SDIS,
"$(P):LS01:DISABLE")
2243 field(INP,
"@ls336.proto getINNAME(D4) L0 0")
2245 field(SCAN,
"Passive")
2249 ## Read the high alarm status for input D4.
2250 ## This also populates ALARMD4_LOW
2253 field(DTYP,
"stream")
2254 field(SDIS,
"$(P):LS01:DISABLE_D4")
2255 field(INP,
"@ls336.proto getALARMST(D4,$(P):LS01:ALARMD4_LOW) L0 0")
2256 field(SCAN,
"5 second")
2260 info(archive,
"Monitor, 00:00:01, VAL")
2264 ## Read the low alarm status for input D4
2267 field(DTYP,
"Soft Channel")
2271 info(archive,
"Monitor, 00:00:01, VAL")
2275 ## Read the alarm parameters.
2276 ## NOTE: the last part of the record name is hard coded into protocol file.
2279 field(DESC,
"Read Alarm Params")
2280 field(DTYP,
"stream")
2281 field(SDIS,
"$(P):LS01:DISABLE_D4")
2282 field(INP,
"@ls336.proto getALARM(D4,$(P):LS01:ALARMD4) L0 0")
2283 field(SCAN,
"5 second")
2287 ## Read the rest of the alarm params.
2288 ## NOTE: the last part of the record names are hard coded into protocol file.
2291 field(DESC,
"Alarm Enabled")
2292 field(ZNAM,
"Disabled")
2293 field(ONAM,
"Enabled")
2296 field(DESC,
"Alarm High Value")
2300 field(DESC,
"Alarm Low Value")
2304 field(DESC,
"Alarm Deadband")
2308 field(DESC,
"Alarm Latch Enable")
2309 field(ZNAM,
"Non Latching")
2310 field(ONAM,
"Latching")
2313 field(DESC,
"Alarm Audible")
2314 field(ZNAM,
"Quiet")
2315 field(ONAM,
"Audible")
2318 field(DESC,
"Alarm Visible")
2319 field(ZNAM,
"Non Visible")
2320 field(ONAM,
"Visible")
2325 ## Read the input reading status
2328 field(DTYP,
"stream")
2329 field(SDIS,
"$(P):LS01:DISABLE_D4")
2330 field(ZRST,
"Valid")
2332 field(ONST,
"Invalid")
2334 field(TWST,
"Temp Under")
2336 field(THST,
"Temp Over")
2338 field(FRST,
"Sensor Zero")
2340 field(FVST,
"Sensor Over")
2342 field(ONSV,
"MAJOR")
2343 field(TWSV,
"MAJOR")
2344 field(THSV,
"MAJOR")
2345 field(FRSV,
"MAJOR")
2346 field(FVSV,
"MAJOR")
2347 field(SCAN,
"5 second")
2348 field(INP,
"@ls336.proto getRDGST(D4) L0 0")
2349 info(archive,
"Monitor, 00:00:01, VAL")
2353 ## Read the input curve number
2356 field(DTYP,
"stream")
2357 field(SDIS,
"$(P):LS01:DISABLE_D4")
2358 field(SCAN,
"5 second")
2359 field(INP,
"@ls336.proto getINCRV(D4) L0 0")
2364 ## Read the input type information.
2365 ## NOTE: the last part of the record name is hard coded into protocol file.
2368 field(DESC,
"Read Input Type Params")
2369 field(DTYP,
"stream")
2370 field(SDIS,
"$(P):LS01:DISABLE_D4")
2371 field(INP,
"@ls336.proto getINTYPE(D4,$(P):LS01:INTYPED4) L0 0")
2372 field(SCAN,
"5 second")
2376 ## Read the rest of the input type params.
2377 ## NOTE: the last part of the record names are hard coded into protocol file.
2380 field(DESC,
"Sensor Type")
2381 field(ZRST,
"Disabled")
2383 field(ONST,
"Diode")
2385 field(TWST,
"Platinum RTD")
2387 field(THST,
"NTC RTD")
2389 field(FRST,
"Thermocouple")
2391 field(FVST,
"Capacitance")
2395 field(DESC,
"Auto Range")
2400 field(DESC,
"Range")
2401 field(ZRST,
"10 Ohm / 2.5V / 50mV")
2403 field(ONST,
"30 Ohm / 10V")
2405 field(TWST,
"100 Ohm")
2407 field(THST,
"300 Ohm")
2409 field(FRST,
"1 KOhm")
2411 field(FVST,
"3 KOhm")
2413 field(SXST,
"10 KOhm")
2415 field(SVST,
"30 KOhm")
2417 field(EIST,
"100 KOhm")
2421 field(DESC,
"Compensation")
2426 field(DESC,
"Units")
2429 field(ONST,
"Kelvin")
2431 field(TWST,
"Celcius")
2433 field(THST,
"Sensor")
2440 # Template to provide the records required for an input.
2441 # This makes use of the macros required by lakeshore336.template
2442 # but also requires macros to specify the input channel and index.
2443 # The index is to provide a way for the developer to use a different
2444 # channel naming scheme.
2446 # For some commands, I hard coded the last part of the record names into
2447 # the protocol file. This seems the easiest way to deal with commands
2448 # will lots of params returned back, and avoid problematic long INP fields.
2449 # For the ZONE commands I used waveforms and subarrays, but that is not as simple.
2452 # INPUT - A to D, or D1 to D5
2453 # INDEX - Index to use for the input channel PV name and DESC (eg. 0 to 3)
2454 # DISABLE - PV name to use for SDIS
2457 ## Alarm summary record for input
2458 ## This summarizes the software limits on the temperature readings,
2459 ## the alarm status reading from the controller and the input reading status.
2461 record(calc,
"$(P):LS01:ALARMD5_SUMMARY_CALC") {
2462 field(INPA,
"$(P):LS01:KRDGD5 CP MS")
2463 field(INPB,
"$(P):LS01:ALARMD5_HIGH CP MS")
2464 field(INPC,
"$(P):LS01:ALARMD5_LOW CP MS")
2465 field(INPD,
"$(P):LS01:RDGSTD5 CP MS")
2467 field(FLNK,
"$(P):LS01:ALARMD5_SUMMARY_CALC2")
2468 field(SDIS,
"$(P):LS01:DISABLE_D5")
2471 record(calcout,
"$(P):LS01:ALARMD5_SUMMARY_CALC2") {
2472 field(INPA,
"$(P):LS01:ALARMD5_SUMMARY_CALC.STAT")
2473 field(CALC,
"A!=0?1:0")
2474 field(DOPT,
"Use CALC")
2475 field(OOPT,
"Every Time")
2476 field(OUT,
"$(P):LS01:ALARMD5_SUMMARY PP")
2480 field(ZNAM,
"No Alarm")
2481 field(ONAM,
"Alarm")
2485 info(archive,
"Monitor, 00:00:01, VAL")
2489 ## If we disable polling this input, disable the alarm
2491 record(calcout,
"$(P):LS01:ALARMD5_SUMMARY_DISABLE") {
2492 field(INPA,
"$(P):LS01:DISABLE_D5 CP")
2493 field(CALC,
"A==1?0:1")
2494 field(DOPT,
"Use CALC")
2495 field(OOPT,
"When Zero")
2496 field(OUT,
"$(P):LS01:ALARMD5_SUMMARY.VAL PP")
2501 ## Read the temperature on channel D5 in Kelvin.
2504 field(DTYP,
"stream")
2505 field(SDIS,
"$(P):LS01:DISABLE_D5")
2506 field(DESC,
"Channel D5 Temperature")
2507 field(INP,
"@ls336.proto getKRDG(D5) L0 0")
2508 field(SCAN,
"1 second")
2522 info(autosaveFields,
"HIHI HIGH LOW LOLO ADEL MDEL")
2523 info(archive,
"Monitor, 00:00:01, VAL")
2527 ## Read the raw voltage on channel D5.
2530 field(DTYP,
"stream")
2531 field(SDIS,
"$(P):LS01:DISABLE_D5")
2532 field(INP,
"@ls336.proto getSRDG(D5) L0 0")
2533 field(SCAN,
"1 second")
2541 ## Set sensor D5 name
2544 field(DESC,
"Input D5 Name")
2545 field(DTYP,
"stream")
2546 field(SDIS,
"$(P):LS01:DISABLE")
2547 field(OUT,
"@ls336.proto setINNAME(D5) L0 0")
2548 field(FLNK,
"$(P):LS01:INNAMED5.PROC CA")
2552 ## Read input sensor D5 name
2555 field(DTYP,
"stream")
2556 field(SDIS,
"$(P):LS01:DISABLE")
2557 field(INP,
"@ls336.proto getINNAME(D5) L0 0")
2559 field(SCAN,
"Passive")
2563 ## Read the high alarm status for input D5.
2564 ## This also populates ALARMD5_LOW
2567 field(DTYP,
"stream")
2568 field(SDIS,
"$(P):LS01:DISABLE_D5")
2569 field(INP,
"@ls336.proto getALARMST(D5,$(P):LS01:ALARMD5_LOW) L0 0")
2570 field(SCAN,
"5 second")
2574 info(archive,
"Monitor, 00:00:01, VAL")
2578 ## Read the low alarm status for input D5
2581 field(DTYP,
"Soft Channel")
2585 info(archive,
"Monitor, 00:00:01, VAL")
2589 ## Read the alarm parameters.
2590 ## NOTE: the last part of the record name is hard coded into protocol file.
2593 field(DESC,
"Read Alarm Params")
2594 field(DTYP,
"stream")
2595 field(SDIS,
"$(P):LS01:DISABLE_D5")
2596 field(INP,
"@ls336.proto getALARM(D5,$(P):LS01:ALARMD5) L0 0")
2597 field(SCAN,
"5 second")
2601 ## Read the rest of the alarm params.
2602 ## NOTE: the last part of the record names are hard coded into protocol file.
2605 field(DESC,
"Alarm Enabled")
2606 field(ZNAM,
"Disabled")
2607 field(ONAM,
"Enabled")
2610 field(DESC,
"Alarm High Value")
2614 field(DESC,
"Alarm Low Value")
2618 field(DESC,
"Alarm Deadband")
2622 field(DESC,
"Alarm Latch Enable")
2623 field(ZNAM,
"Non Latching")
2624 field(ONAM,
"Latching")
2627 field(DESC,
"Alarm Audible")
2628 field(ZNAM,
"Quiet")
2629 field(ONAM,
"Audible")
2632 field(DESC,
"Alarm Visible")
2633 field(ZNAM,
"Non Visible")
2634 field(ONAM,
"Visible")
2639 ## Read the input reading status
2642 field(DTYP,
"stream")
2643 field(SDIS,
"$(P):LS01:DISABLE_D5")
2644 field(ZRST,
"Valid")
2646 field(ONST,
"Invalid")
2648 field(TWST,
"Temp Under")
2650 field(THST,
"Temp Over")
2652 field(FRST,
"Sensor Zero")
2654 field(FVST,
"Sensor Over")
2656 field(ONSV,
"MAJOR")
2657 field(TWSV,
"MAJOR")
2658 field(THSV,
"MAJOR")
2659 field(FRSV,
"MAJOR")
2660 field(FVSV,
"MAJOR")
2661 field(SCAN,
"5 second")
2662 field(INP,
"@ls336.proto getRDGST(D5) L0 0")
2663 info(archive,
"Monitor, 00:00:01, VAL")
2667 ## Read the input curve number
2670 field(DTYP,
"stream")
2671 field(SDIS,
"$(P):LS01:DISABLE_D5")
2672 field(SCAN,
"5 second")
2673 field(INP,
"@ls336.proto getINCRV(D5) L0 0")
2678 ## Read the input type information.
2679 ## NOTE: the last part of the record name is hard coded into protocol file.
2682 field(DESC,
"Read Input Type Params")
2683 field(DTYP,
"stream")
2684 field(SDIS,
"$(P):LS01:DISABLE_D5")
2685 field(INP,
"@ls336.proto getINTYPE(D5,$(P):LS01:INTYPED5) L0 0")
2686 field(SCAN,
"5 second")
2690 ## Read the rest of the input type params.
2691 ## NOTE: the last part of the record names are hard coded into protocol file.
2694 field(DESC,
"Sensor Type")
2695 field(ZRST,
"Disabled")
2697 field(ONST,
"Diode")
2699 field(TWST,
"Platinum RTD")
2701 field(THST,
"NTC RTD")
2703 field(FRST,
"Thermocouple")
2705 field(FVST,
"Capacitance")
2709 field(DESC,
"Auto Range")
2714 field(DESC,
"Range")
2715 field(ZRST,
"10 Ohm / 2.5V / 50mV")
2717 field(ONST,
"30 Ohm / 10V")
2719 field(TWST,
"100 Ohm")
2721 field(THST,
"300 Ohm")
2723 field(FRST,
"1 KOhm")
2725 field(FVST,
"3 KOhm")
2727 field(SXST,
"10 KOhm")
2729 field(SVST,
"30 KOhm")
2731 field(EIST,
"100 KOhm")
2735 field(DESC,
"Compensation")
2740 field(DESC,
"Units")
2743 field(ONST,
"Kelvin")
2745 field(TWST,
"Celcius")
2747 field(THST,
"Sensor")
2754 ################################################################
2755 # Now include the loop dependant records, for outputs 1, 2, 3 and 4.
2756 # The common records are in lakeshore336output.template.
2757 ################################################################
2759 #substitute "TOLERANCE=1"
2761 # This is included in lakeshore336.template
2762 # This template is for the common functionality shared by all 4 outputs.
2764 # There is some logic in this database to provide put_callback functionality
2765 # for setting the temperature and waiting for it to be in range. The input
2766 # sensor PV name used for the in-window calculation changes depending on
2767 # the input sensor selected. In order for this to work it requires the following
2770 # INPUTA - Sensor 1 PV name
2771 # INPUTB - Sensor 2 PV name
2772 # INPUTC - Sensor 3 PV name
2773 # INPUTD - Sensor 4 PV name
2774 # INPUTD2 - Sensor D2 PV name
2775 # INPUTD3 - Sensor D3 PV name
2776 # INPUTD4 - Sensor D4 PV name
2777 # INPUTD5 - Sensor D5 PV name
2778 # TOLERANCE (optional - defaults to 1)
2780 # The input link names must fit into a stringout record for this to work.
2781 # The above link names default to a dummy record.
2783 ################################################################
2785 ################################################################
2788 ## Record holding the output number
2791 field(DTYP,
"Soft Channel")
2797 ## Read the setpoint temperature.
2800 field(DTYP,
"stream")
2801 field(SDIS,
"$(P):LS01:DISABLE_POLL")
2802 field(INP,
"@ls336.proto getSETP(1) L0 0")
2803 field(SCAN,
"1 second")
2806 info(archive,
"Monitor, 00:00:01, VAL")
2810 ## Read the setpoint limit
2814 ## Read the ramp parameter. This also populates the ramp status $(P):LS01:RAMPST1,
2817 field(DTYP,
"stream")
2818 field(SDIS,
"$(P):LS01:DISABLE_POLL")
2819 field(INP,
"@ls336.proto getRAMP(1,$(P):LS01:RAMPST1) L0 0")
2820 field(SCAN,
"5 second")
2822 field(EGU,
"K/minute")
2826 ## Read the ramp status parameter.
2832 field(DTYP,
"Soft Channel")
2838 ## Read the range parameter (the heater output power range).
2839 ## This is output specific and is defined in another file.
2842 field(DTYP,
"stream")
2843 field(SDIS,
"$(P):LS01:DISABLE_POLL")
2850 field(SCAN,
"5 second")
2851 field(INP,
"@ls336.proto getRANGE(1) L0 0")
2855 ## Read the mode to use for outmode
2856 ## This is output specific and is defined in another file.
2862 ## Read the manual output parameter.
2865 field(DTYP,
"stream")
2866 field(SDIS,
"$(P):LS01:DISABLE_POLL")
2867 field(INP,
"@ls336.proto getMOUT(1) L0 0")
2868 field(SCAN,
"5 second")
2872 ## Read the PID P parameter. Pass the I and D records into the protocol to read those as well.
2875 field(DTYP,
"stream")
2876 field(SDIS,
"$(P):LS01:DISABLE_POLL")
2877 field(INP,
"@ls336.proto getPID(1,$(P):LS01:I1,$(P):LS01:D1) L0 0")
2878 field(SCAN,
"5 second")
2882 ## Read the PID I parameter.
2885 field(DTYP,
"Soft Channel")
2886 field(SCAN,
"Passive")
2890 ## Read the PID D parameter.
2893 field(DTYP,
"Soft Channel")
2894 field(SCAN,
"Passive")
2898 ## Read the mode to use for outmode.
2899 ## This also populates the OMI and OMP records.
2900 ## The mbbi strings and values are defined in the output specific templates.
2903 field(DTYP,
"stream")
2904 field(SDIS,
"$(P):LS01:DISABLE_POLL")
2911 field(SCAN,
"5 second")
2912 field(INP,
"@ls336.proto getOM(1,$(P):LS01:OMI1,$(P):LS01:OMP1) L0 0")
2916 ## Read the input to use for outmode
2919 field(DTYP,
"Soft Channel")
2922 field(ONST,
"Input A")
2924 field(TWST,
"Input B")
2926 field(THST,
"Input C")
2928 field(FRST,
"Input D")
2930 field(FVST,
"Input D2")
2932 field(SXST,
"Input D3")
2934 field(SVST,
"Input D4")
2936 field(EIST,
"Input D5")
2941 ## Read the power up mode to use for outmode
2944 field(DTYP,
"Soft Channel")
2951 ################################################################
2953 ################################################################
2956 ## Set the setpoint temperature.
2959 field(DTYP,
"stream")
2960 field(SDIS,
"$(P):LS01:DISABLE")
2961 field(DESC,
"Setpoint temperature")
2962 field(OUT,
"@ls336.proto setSETP(1) L0 0")
2964 field(FLNK,
"$(P):LS01:SETP_S1_BUSYSET.PROC")
2966 info(archive,
"Monitor, 00:00:01, VAL")
2969 ###############################################################################
2972 ## A few records to support put_callback on the setpoint. We use the busy record.
2973 ## A temperature window is used. The temperature must be within
2974 ## the window, before the callback is done.
2980 field(OUTA,
"$(P):LS01:IN_WINDOW1.VAL PP")
2981 field(FLNK,
"$(P):LS01:SETP_S1_BUSYSET2")
2983 record(dfanout,
"$(P):LS01:SETP_S1_BUSYSET2")
2986 field(OUTA,
"$(P):LS01:SETP1.PROC PP")
2987 field(OUTB,
"$(P):LS01:SETP_S1_BUSY PP")
2988 field(FLNK,
"$(P):LS01:CALC_IN_WINDOW1")
2993 record(calcout,
"$(P):LS01:CALC_IN_WINDOW1") {
2996 field(INPB,
"$(P):LS01:DUMMY1.VAL")
2997 field(INPC,
"$(P):LS01:SETP_S1.VAL")
2998 field(CALC,
"((B>=(C-A))&&(B<=(C+A)))?1:0")
2999 field(OOPT,
"Every Time")
3000 field(OUT,
"$(P):LS01:IN_WINDOW1.VAL PP")
3001 field(DOPT,
"Use CALC")
3002 field(SCAN,
"1 second")
3004 info(autosaveFields,
"A")
3005 info(archive,
"Monitor, 00:00:01, A B C VAL")
3008 field(DESC,
"Temperature In Window")
3011 field(OMSL,
"supervisory")
3012 field(ZNAM,
"Not In Window")
3013 field(ONAM,
"In Window")
3014 info(archive,
"Monitor, 00:00:01, VAL")
3018 ## Set busy record 'done' when TIME_WINDOW1=1
3020 record(calcout,
"$(P):LS01:CALC_BUSY_DONE1") {
3021 field(INPA,
"$(P):LS01:IN_WINDOW1.VAL CP")
3022 field(CALC,
"(A=1)?0:1")
3023 field(OOPT,
"Every Time")
3024 field(OUT,
"$(P):LS01:SETP_S1_BUSY.VAL PP")
3027 ###############################################################################
3030 ## Dummy record to use for input link name default
3036 ## Monitor $(P):LS01:OMI1 to determin which input sensor to use
3037 ## to deal with the callback. The below set of records automatically
3038 ## switch the input when the 'control input' is changed. They make
3039 ## use of the input sensor PV names passed into this template.
3043 field(INPA,
"$(P):LS01:OMI1.VAL CP")
3044 field(DOPT,
"Use OCAL")
3046 field(OOPT,
"When Non-zero")
3047 field(OUT,
"$(P):LS01:SET_1_INPUTA_LINK.PROC")
3049 record(stringout,
"$(P):LS01:SET_1_INPUTA_LINK") {
3050 field(VAL,
"$(P):LS01:KRDG0.VAL CP")
3051 field(OUT,
"$(P):LS01:CALC_IN_WINDOW1.INPB CA")
3056 field(INPA,
"$(P):LS01:OMI1.VAL CP")
3057 field(DOPT,
"Use OCAL")
3059 field(OOPT,
"When Non-zero")
3060 field(OUT,
"$(P):LS01:SET_1_INPUTB_LINK.PROC")
3062 record(stringout,
"$(P):LS01:SET_1_INPUTB_LINK") {
3063 field(VAL,
"$(P):LS01:KRDG1.VAL CP")
3064 field(OUT,
"$(P):LS01:CALC_IN_WINDOW1.INPB CA")
3069 field(INPA,
"$(P):LS01:OMI1.VAL CP")
3070 field(DOPT,
"Use OCAL")
3072 field(OOPT,
"When Non-zero")
3073 field(OUT,
"$(P):LS01:SET_1_INPUTC_LINK.PROC")
3075 record(stringout,
"$(P):LS01:SET_1_INPUTC_LINK") {
3076 field(VAL,
"$(P):LS01:KRDG2.VAL CP")
3077 field(OUT,
"$(P):LS01:CALC_IN_WINDOW1.INPB CA")
3082 field(INPA,
"$(P):LS01:OMI1.VAL CP")
3083 field(DOPT,
"Use OCAL")
3085 field(OOPT,
"When Non-zero")
3086 field(OUT,
"$(P):LS01:SET_1_INPUTD_LINK.PROC")
3088 record(stringout,
"$(P):LS01:SET_1_INPUTD_LINK") {
3089 field(VAL,
"$(P):LS01:KRDG3.VAL CP")
3090 field(OUT,
"$(P):LS01:CALC_IN_WINDOW1.INPB CA")
3095 field(INPA,
"$(P):LS01:OMI1.VAL CP")
3096 field(DOPT,
"Use OCAL")
3098 field(OOPT,
"When Non-zero")
3099 field(OUT,
"$(P):LS01:SET_1_INPUTD2_LINK.PROC")
3101 record(stringout,
"$(P):LS01:SET_1_INPUTD2_LINK") {
3102 field(VAL,
"$(P):LS01:KRDGD2.VAL CP")
3103 field(OUT,
"$(P):LS01:CALC_IN_WINDOW1.INPB CA")
3108 field(INPA,
"$(P):LS01:OMI1.VAL CP")
3109 field(DOPT,
"Use OCAL")
3111 field(OOPT,
"When Non-zero")
3112 field(OUT,
"$(P):LS01:SET_1_INPUTD3_LINK.PROC")
3114 record(stringout,
"$(P):LS01:SET_1_INPUTD3_LINK") {
3115 field(VAL,
"$(P):LS01:KRDGD3.VAL CP")
3116 field(OUT,
"$(P):LS01:CALC_IN_WINDOW1.INPB CA")
3121 field(INPA,
"$(P):LS01:OMI1.VAL CP")
3122 field(DOPT,
"Use OCAL")
3124 field(OOPT,
"When Non-zero")
3125 field(OUT,
"$(P):LS01:SET_1_INPUTD4_LINK.PROC")
3127 record(stringout,
"$(P):LS01:SET_1_INPUTD4_LINK") {
3128 field(VAL,
"$(P):LS01:KRDGD4.VAL CP")
3129 field(OUT,
"$(P):LS01:CALC_IN_WINDOW1.INPB CA")
3134 field(INPA,
"$(P):LS01:OMI1.VAL CP")
3135 field(DOPT,
"Use OCAL")
3137 field(OOPT,
"When Non-zero")
3138 field(OUT,
"$(P):LS01:SET_1_INPUTD5_LINK.PROC")
3140 record(stringout,
"$(P):LS01:SET_1_INPUTD5_LINK") {
3141 field(VAL,
"$(P):LS01:KRDGD5.VAL CP")
3142 field(OUT,
"$(P):LS01:CALC_IN_WINDOW1.INPB CA")
3148 ## Set the range parameter.
3149 ## The strings are output specific and is defined in another file.
3152 field(DTYP,
"stream")
3153 field(SDIS,
"$(P):LS01:DISABLE")
3154 field(OUT,
"@ls336.proto setRANGE(1) L0 0")
3155 field(FLNK,
"$(P):LS01:RANGE1.PROC CA")
3159 ## Set the ramp rate parameter.
3161 ## This is the desired temperate increase/decrease rate
3162 ## per second when heating/cooling.
3164 ## The ramp and ramp status parameters are actually one command
3165 ## for the lakeshore. Therefore one must pass into this
3166 ## record the existing/desired ramp status, as well as the
3167 ## desired ramp. This is done automatically by reading the
3168 ## PV which holds the current ramp status.
3171 field(DTYP,
"stream")
3172 field(SDIS,
"$(P):LS01:DISABLE")
3173 field(OUT,
"@ls336.proto setRAMP($(P):LS01:RAMPST1,1) L0 0")
3175 field(FLNK,
"$(P):LS01:RAMP1.PROC CA")
3176 field(EGU,
"K/minute")
3180 ## Set the ramp status parameter.
3185 ## The ramp and ramp status parameters are actually one command
3186 ## for the lakeshore. Therefore one must pass into this
3187 ## record the existing/desired ramp, as well as the
3188 ## desired ramp status. This is done automatically by reading the
3189 ## PV which holds the current ramp value.
3192 field(DTYP,
"stream")
3193 field(SDIS,
"$(P):LS01:DISABLE")
3194 field(OUT,
"@ls336.proto setRAMPSTATUS($(P):LS01:RAMP1,1) L0 0")
3195 field(FLNK,
"$(P):LS01:RAMP1.PROC CA")
3201 ## Set the manual output value.
3204 field(DTYP,
"stream")
3205 field(SDIS,
"$(P):LS01:DISABLE")
3206 field(OUT,
"@ls336.proto setMOUT(1) L0 0")
3207 field(FLNK,
"$(P):LS01:MOUT1.PROC CA")
3211 ## Set the PID P parameter.
3214 field(DTYP,
"stream")
3215 field(SDIS,
"$(P):LS01:DISABLE")
3216 field(OUT,
"@ls336.proto setP(1,$(P):LS01:I1,$(P):LS01:D1) L0 0")
3217 field(FLNK,
"$(P):LS01:P1.PROC CA")
3221 ## Set the PID I parameter.
3224 field(DTYP,
"stream")
3225 field(SDIS,
"$(P):LS01:DISABLE")
3226 field(OUT,
"@ls336.proto setI($(P):LS01:P1,1,$(P):LS01:D1) L0 0")
3227 field(FLNK,
"$(P):LS01:P1.PROC CA")
3231 ## Set the PID D parameter.
3234 field(DTYP,
"stream")
3235 field(SDIS,
"$(P):LS01:DISABLE")
3236 field(OUT,
"@ls336.proto setD($(P):LS01:P1,$(P):LS01:I1,1) L0 0")
3237 field(FLNK,
"$(P):LS01:P1.PROC CA")
3241 ## Set the mode to use for outmode
3242 ## The strings are output specific. This is defined in another file.
3245 field(DTYP,
"stream")
3246 field(SDIS,
"$(P):LS01:DISABLE")
3253 field(OUT,
"@ls336.proto setOM(1,$(P):LS01:OMI1,$(P):LS01:OMP1) L0 0")
3254 field(FLNK,
"$(P):LS01:OMM1.PROC CA")
3258 ## Set the input to use for outmode
3261 field(DTYP,
"stream")
3262 field(SDIS,
"$(P):LS01:DISABLE")
3265 field(ONST,
"Input A")
3267 field(TWST,
"Input B")
3269 field(THST,
"Input C")
3271 field(FRST,
"Input D")
3273 field(FVST,
"Input D2")
3275 field(SXST,
"Input D3")
3277 field(SVST,
"Input D4")
3279 field(EIST,
"Input D5")
3281 field(OUT,
"@ls336.proto setOMI(1,$(P):LS01:OMM1,$(P):LS01:OMP1) L0 0")
3282 field(FLNK,
"$(P):LS01:OMM1.PROC CA")
3286 ## Set the power up mode to use for outmode
3289 field(DTYP,
"stream")
3290 field(SDIS,
"$(P):LS01:DISABLE")
3295 field(OUT,
"@ls336.proto setOMP(1,$(P):LS01:OMM1,$(P):LS01:OMI1) L0 0")
3296 field(FLNK,
"$(P):LS01:OMM1.PROC CA")
3300 ## Set the type of tuning mode
3303 field(SDIS,
"$(P):LS01:DISABLE")
3304 field(ZRST,
"P Only")
3306 field(ONST,
"P and I")
3308 field(TWST,
"P, I and D")
3314 ## Start the tuning process
3317 field(DTYP,
"stream")
3318 field(SDIS,
"$(P):LS01:DISABLE")
3319 field(DESC,
"Start the auto tuning")
3320 field(OUT,
"@ls336.proto setATUNE(1,$(P):LS01:TUNEMODE_S1) L0 0")
3325 ## Read all ZONE settings
3328 field(DESC,
"Read Output 1 ZONE")
3331 field(LNK1,
"$(P):LS01:Z1:ALL1.PROC")
3334 field(LNK2,
"$(P):LS01:Z2:ALL1.PROC")
3337 field(LNK3,
"$(P):LS01:Z3:ALL1.PROC")
3340 field(LNK4,
"$(P):LS01:Z4:ALL1.PROC")
3343 field(LNK5,
"$(P):LS01:Z5:ALL1.PROC")
3346 field(LNK6,
"$(P):LS01:Z6:ALL1.PROC")
3349 field(LNK7,
"$(P):LS01:Z7:ALL1.PROC")
3352 field(LNK8,
"$(P):LS01:Z8:ALL1.PROC")
3355 field(LNK9,
"$(P):LS01:Z9:ALL1.PROC")
3358 field(LNKA,
"$(P):LS01:Z10:ALL1.PROC")
3362 ###############################################
3363 # This is included in lakeshore336.template
3364 # This template is for outputs 1 and 2, which can provide heater power.
3366 ################################################################
3368 ################################################################
3371 ## Read the heater output value.
3374 field(DTYP,
"stream")
3375 field(SDIS,
"$(P):LS01:DISABLE_POLL")
3376 field(INP,
"@ls336.proto getHTR(1) L0 0")
3377 field(SCAN,
"5 second")
3380 info(archive,
"Monitor, 00:00:01, VAL")
3384 ## Define the strings and values for this record.
3386 record(mbbi,
"$(P):LS01:RANGE1") {
3388 field(ONST, "Range1/Low")
3389 field(TWST, "Range2/Medium")
3390 field(THST, "Range3/High")
3391 field(FRST, "Range4")
3392 field(FVST, "Range5")
3396 ## Define the strings and values for this record.
3398 record(mbbi,
"$(P):LS01:OMM1") {
3400 field(ONST, "Closed Loop PID")
3402 field(THST, "Open Loop")
3406 ## Define the strings and values for this record.
3408 record(mbbo,
"$(P):LS01:RANGE_S1") {
3410 field(ONST, "Range1/Low")
3411 field(TWST, "Range2/Medium")
3412 field(THST, "Range3/High")
3413 field(FRST, "Range4")
3414 field(FVST, "Range5")
3418 ## Define the strings and values for this record.
3420 record(mbbo,
"$(P):LS01:OMM_S1") {
3422 field(ONST, "Closed Loop PID")
3424 field(THST, "Open Loop")
3428 ## Read the heater status
3431 field(DTYP,
"stream")
3432 field(SDIS,
"$(P):LS01:DISABLE_POLL")
3433 field(SCAN,
"5 second")
3434 field(INP,
"@ls336.proto getHTRST(D5) L0 0")
3435 field(FLNK,
"$(P):LS01:HTRST1_CALC")
3436 info(archive,
"Monitor, 00:00:01, VAL")
3440 ## Cache the heater status because this is cleared on a read on the controller.
3443 field(INPA,
"$(P):LS01:HTRST1.VAL")
3444 field(CALC,
"A!=0?A:0")
3445 field(DOPT,
"Use CALC")
3446 field(OOPT,
"When Non-zero")
3447 field(OUT,
"$(P):LS01:HTRST1_CACHE.RVAL PP")
3450 field(DESC,
"Cached HTRST")
3451 field(DTYP,
"Raw Soft Channel")
3452 field(ZRST,
"No Error")
3454 field(ONST,
"Open Load")
3456 field(TWST,
"Short/Compliance")
3460 field(ONSV,
"MAJOR")
3461 field(TWSV,
"MAJOR")
3462 info(archive,
"Monitor, 00:00:01, VAL")
3466 ## Provide record to reset the cached value
3469 field(DESC,
"Reset Cached HTRST")
3471 field(OUT,
"$(P):LS01:HTRST1_CACHE.RVAL PP")
3474 ###############################################
3475 # Add in ZONE support
3476 ###############################################
3478 #######################################
3480 # Template to support reading and setting
3481 # controller ZONE parameters. It reads the ZONE
3482 # parameters into an array, then uses subArrays to
3483 # extract each parameter.
3485 # This template is used by the output template
3486 # and it needs the following macros:
3489 # OUT: output number
3491 #######################################
3494 ## Read the ZONE setting into an array (8 values)
3497 field(DTYP,
"stream")
3498 field(SDIS,
"$(P):LS01:DISABLE_POLL")
3499 field(INP,
"@ls336.proto getZONE(1,1) L0 0")
3500 field(SCAN,
"Passive")
3502 field(FTVL,
"DOUBLE")
3504 field(FLNK,
"$(P):LS01:Z1:UB1:ARRAY.PROC")
3508 ## Read the ZONE upper boundary setting.
3511 field(SCAN,
"Passive")
3512 field(FTVL,
"DOUBLE")
3513 field(INP,
"$(P):LS01:Z1:ALL1.VAL MS")
3518 field(FLNK,
"$(P):LS01:Z1:UB1.PROC")
3521 field(SCAN,
"Passive")
3522 field(INP,
"$(P):LS01:Z1:UB1:ARRAY.VAL MS")
3524 field(FLNK,
"$(P):LS01:Z1:P1:ARRAY.PROC")
3528 ## Read the ZONE P setting.
3531 field(SCAN,
"Passive")
3532 field(FTVL,
"DOUBLE")
3533 field(INP,
"$(P):LS01:Z1:ALL1.VAL MS")
3538 field(FLNK,
"$(P):LS01:Z1:P1.PROC")
3541 field(SCAN,
"Passive")
3542 field(INP,
"$(P):LS01:Z1:P1:ARRAY.VAL MS")
3544 field(FLNK,
"$(P):LS01:Z1:I1:ARRAY.PROC")
3548 ## Read the ZONE I setting.
3551 field(SCAN,
"Passive")
3552 field(FTVL,
"DOUBLE")
3553 field(INP,
"$(P):LS01:Z1:ALL1.VAL MS")
3558 field(FLNK,
"$(P):LS01:Z1:I1.PROC")
3561 field(SCAN,
"Passive")
3562 field(INP,
"$(P):LS01:Z1:I1:ARRAY.VAL MS")
3564 field(FLNK,
"$(P):LS01:Z1:D1:ARRAY.PROC")
3568 ## Read the ZONE D setting.
3571 field(SCAN,
"Passive")
3572 field(FTVL,
"DOUBLE")
3573 field(INP,
"$(P):LS01:Z1:ALL1.VAL MS")
3578 field(FLNK,
"$(P):LS01:Z1:D1.PROC")
3581 field(SCAN,
"Passive")
3582 field(INP,
"$(P):LS01:Z1:D1:ARRAY.VAL MS")
3584 field(FLNK,
"$(P):LS01:Z1:MOUT1:ARRAY.PROC")
3588 ## Read the ZONE MOUT setting.
3590 record(subArray,
"$(P):LS01:Z1:MOUT1:ARRAY") {
3591 field(SCAN,
"Passive")
3592 field(FTVL,
"DOUBLE")
3593 field(INP,
"$(P):LS01:Z1:ALL1.VAL MS")
3598 field(FLNK,
"$(P):LS01:Z1:MOUT1.PROC")
3601 field(SCAN,
"Passive")
3602 field(INP,
"$(P):LS01:Z1:MOUT1:ARRAY.VAL MS")
3604 field(FLNK,
"$(P):LS01:Z1:RANGE1:ARRAY.PROC")
3608 ## Read the ZONE RANGE setting.
3610 record(subArray,
"$(P):LS01:Z1:RANGE1:ARRAY") {
3611 field(SCAN,
"Passive")
3612 field(FTVL,
"DOUBLE")
3613 field(INP,
"$(P):LS01:Z1:ALL1.VAL MS")
3618 field(FLNK,
"$(P):LS01:Z1:RANGE1.PROC")
3621 field(INP,
"$(P):LS01:Z1:RANGE1:ARRAY.VAL")
3622 field(SCAN,
"Passive")
3625 field(ONST,
"Range1/Low")
3627 field(TWST,
"Range2/Medium")
3629 field(THST,
"Range3/High")
3631 field(FRST,
"Range4")
3633 field(FVST,
"Range5")
3635 field(FLNK,
"$(P):LS01:Z1:INPUT1:ARRAY.PROC")
3639 ## Read the ZONE INPUT setting.
3641 record(subArray,
"$(P):LS01:Z1:INPUT1:ARRAY") {
3642 field(SCAN,
"Passive")
3643 field(FTVL,
"DOUBLE")
3644 field(INP,
"$(P):LS01:Z1:ALL1.VAL MS")
3649 field(FLNK,
"$(P):LS01:Z1:INPUT1.PROC")
3652 field(INP,
"$(P):LS01:Z1:INPUT1:ARRAY.VAL")
3653 field(SCAN,
"Passive")
3656 field(ONST,
"Input A")
3658 field(TWST,
"Input B")
3660 field(THST,
"Input C")
3662 field(FRST,
"Input D")
3664 field(FVST,
"Input D2")
3666 field(SXST,
"Input D3")
3668 field(SVST,
"Input D4")
3670 field(EIST,
"Input D5")
3672 field(FLNK,
"$(P):LS01:Z1:RATE1:ARRAY.PROC")
3676 ## Read the ZONE RATE setting.
3678 record(subArray,
"$(P):LS01:Z1:RATE1:ARRAY") {
3679 field(SCAN,
"Passive")
3680 field(FTVL,
"DOUBLE")
3681 field(INP,
"$(P):LS01:Z1:ALL1.VAL MS")
3686 field(FLNK,
"$(P):LS01:Z1:RATE1.PROC")
3689 field(SCAN,
"Passive")
3690 field(INP,
"$(P):LS01:Z1:RATE1:ARRAY.VAL MS")
3692 field(FLNK,
"$(P):LS01:Z1:INITCALC1.PROC")
3695 ##############################################################
3697 ## Populate the write records below with the current values.
3698 ## Only do this once at startup.
3700 ###############################################################
3706 field(DOPT,
"Use OCAL")
3707 field(OOPT,
"When Zero")
3709 field(OUT,
"$(P):LS01:Z1:INITUB1.PROC")
3713 field(OMSL,
"closed_loop")
3714 field(DOL,
"$(P):LS01:Z1:UB1.VAL")
3715 field(OUTA,
"$(P):LS01:Z1:UB_S1.VAL PP")
3716 field(FLNK,
"$(P):LS01:Z1:INITP1.PROC")
3719 field(OMSL,
"closed_loop")
3720 field(DOL,
"$(P):LS01:Z1:P1.VAL")
3721 field(OUTA,
"$(P):LS01:Z1:P_S1.VAL PP")
3722 field(FLNK,
"$(P):LS01:Z1:INITI1.PROC")
3725 field(OMSL,
"closed_loop")
3726 field(DOL,
"$(P):LS01:Z1:I1.VAL")
3727 field(OUTA,
"$(P):LS01:Z1:I_S1.VAL PP")
3728 field(FLNK,
"$(P):LS01:Z1:INITD1.PROC")
3731 field(OMSL,
"closed_loop")
3732 field(DOL,
"$(P):LS01:Z1:D1.VAL")
3733 field(OUTA,
"$(P):LS01:Z1:D_S1.VAL PP")
3734 field(FLNK,
"$(P):LS01:Z1:INITMOUT1.PROC")
3737 field(OMSL,
"closed_loop")
3738 field(DOL,
"$(P):LS01:Z1:MOUT1.VAL")
3739 field(OUTA,
"$(P):LS01:Z1:MOUT_S1.VAL PP")
3740 field(FLNK,
"$(P):LS01:Z1:INITRANGE1.PROC")
3743 field(OMSL,
"closed_loop")
3744 field(DOL,
"$(P):LS01:Z1:RANGE1.VAL")
3745 field(OUTA,
"$(P):LS01:Z1:RANGE_S1.VAL PP")
3746 field(FLNK,
"$(P):LS01:Z1:INITINPUT1.PROC")
3749 field(OMSL,
"closed_loop")
3750 field(DOL,
"$(P):LS01:Z1:INPUT1.VAL")
3751 field(OUTA,
"$(P):LS01:Z1:INPUT_S1.VAL PP")
3752 field(FLNK,
"$(P):LS01:Z1:INITRATE1.PROC")
3755 field(OMSL,
"closed_loop")
3756 field(DOL,
"$(P):LS01:Z1:RATE1.VAL")
3757 field(OUTA,
"$(P):LS01:Z1:RATE_S1.VAL PP")
3758 field(FLNK,
"$(P):LS01:Z1:INITCOUNT1.PROC")
3763 field(OUTA,
"$(P):LS01:Z1:INITCALC1.A")
3768 #############################################
3769 # Write records. There is a calcout record to
3770 # do the actual write.
3771 #############################################
3774 ## Set the ZONE upper boundary setting.
3777 field(SCAN,
"Passive")
3779 field(SDIS,
"$(P):LS01:DISABLE")
3783 ## Set the ZONE P setting.
3786 field(SCAN,
"Passive")
3788 field(SDIS,
"$(P):LS01:DISABLE")
3792 ## Set the ZONE I setting.
3795 field(SCAN,
"Passive")
3797 field(SDIS,
"$(P):LS01:DISABLE")
3801 ## Set the ZONE D setting.
3804 field(SCAN,
"Passive")
3806 field(SDIS,
"$(P):LS01:DISABLE")
3810 ## Set the ZONE MOUT setting.
3813 field(SCAN,
"Passive")
3815 field(SDIS,
"$(P):LS01:DISABLE")
3819 ## Set the ZONE RANGE setting.
3822 field(SCAN,
"Passive")
3825 field(ONST,
"Range1/Low")
3827 field(TWST,
"Range2/Medium")
3829 field(THST,
"Range3/High")
3831 field(FRST,
"Range4")
3833 field(FVST,
"Range5")
3835 field(SDIS,
"$(P):LS01:DISABLE")
3839 ## Set the ZONE INPUT setting.
3844 field(ONST,
"Input A")
3846 field(TWST,
"Input B")
3848 field(THST,
"Input C")
3850 field(FRST,
"Input D")
3852 field(FVST,
"Input D2")
3854 field(SXST,
"Input D3")
3856 field(SVST,
"Input D4")
3858 field(EIST,
"Input D5")
3860 field(SDIS,
"$(P):LS01:DISABLE")
3864 ## Set the ZONE RATE setting.
3867 field(SCAN,
"Passive")
3869 field(SDIS,
"$(P):LS01:DISABLE")
3873 ## Record to write the ZONE parameters.
3876 field(INPA,
"$(P):LS01:Z1:UB_S1")
3877 field(INPB,
"$(P):LS01:Z1:P_S1")
3878 field(INPC,
"$(P):LS01:Z1:I_S1")
3879 field(INPD,
"$(P):LS01:Z1:D_S1")
3880 field(INPE,
"$(P):LS01:Z1:MOUT_S1")
3881 field(INPF,
"$(P):LS01:Z1:RANGE_S1")
3882 field(INPG,
"$(P):LS01:Z1:INPUT_S1")
3883 field(INPH,
"$(P):LS01:Z1:RATE_S1")
3885 field(DTYP,
"stream")
3886 field(OUT,
"@ls336.proto setZONE(1,1) L0 0")
3887 field(SDIS,
"$(P):LS01:DISABLE")
3888 field(FLNK,
"$(P):LS01:Z1:ALL1.PROC")
3900 #######################################
3902 # Template to support reading and setting
3903 # controller ZONE parameters. It reads the ZONE
3904 # parameters into an array, then uses subArrays to
3905 # extract each parameter.
3907 # This template is used by the output template
3908 # and it needs the following macros:
3911 # OUT: output number
3913 #######################################
3916 ## Read the ZONE setting into an array (8 values)
3919 field(DTYP,
"stream")
3920 field(SDIS,
"$(P):LS01:DISABLE_POLL")
3921 field(INP,
"@ls336.proto getZONE(1,2) L0 0")
3922 field(SCAN,
"Passive")
3924 field(FTVL,
"DOUBLE")
3926 field(FLNK,
"$(P):LS01:Z2:UB1:ARRAY.PROC")
3930 ## Read the ZONE upper boundary setting.
3933 field(SCAN,
"Passive")
3934 field(FTVL,
"DOUBLE")
3935 field(INP,
"$(P):LS01:Z2:ALL1.VAL MS")
3940 field(FLNK,
"$(P):LS01:Z2:UB1.PROC")
3943 field(SCAN,
"Passive")
3944 field(INP,
"$(P):LS01:Z2:UB1:ARRAY.VAL MS")
3946 field(FLNK,
"$(P):LS01:Z2:P1:ARRAY.PROC")
3950 ## Read the ZONE P setting.
3953 field(SCAN,
"Passive")
3954 field(FTVL,
"DOUBLE")
3955 field(INP,
"$(P):LS01:Z2:ALL1.VAL MS")
3960 field(FLNK,
"$(P):LS01:Z2:P1.PROC")
3963 field(SCAN,
"Passive")
3964 field(INP,
"$(P):LS01:Z2:P1:ARRAY.VAL MS")
3966 field(FLNK,
"$(P):LS01:Z2:I1:ARRAY.PROC")
3970 ## Read the ZONE I setting.
3973 field(SCAN,
"Passive")
3974 field(FTVL,
"DOUBLE")
3975 field(INP,
"$(P):LS01:Z2:ALL1.VAL MS")
3980 field(FLNK,
"$(P):LS01:Z2:I1.PROC")
3983 field(SCAN,
"Passive")
3984 field(INP,
"$(P):LS01:Z2:I1:ARRAY.VAL MS")
3986 field(FLNK,
"$(P):LS01:Z2:D1:ARRAY.PROC")
3990 ## Read the ZONE D setting.
3993 field(SCAN,
"Passive")
3994 field(FTVL,
"DOUBLE")
3995 field(INP,
"$(P):LS01:Z2:ALL1.VAL MS")
4000 field(FLNK,
"$(P):LS01:Z2:D1.PROC")
4003 field(SCAN,
"Passive")
4004 field(INP,
"$(P):LS01:Z2:D1:ARRAY.VAL MS")
4006 field(FLNK,
"$(P):LS01:Z2:MOUT1:ARRAY.PROC")
4010 ## Read the ZONE MOUT setting.
4012 record(subArray,
"$(P):LS01:Z2:MOUT1:ARRAY") {
4013 field(SCAN,
"Passive")
4014 field(FTVL,
"DOUBLE")
4015 field(INP,
"$(P):LS01:Z2:ALL1.VAL MS")
4020 field(FLNK,
"$(P):LS01:Z2:MOUT1.PROC")
4023 field(SCAN,
"Passive")
4024 field(INP,
"$(P):LS01:Z2:MOUT1:ARRAY.VAL MS")
4026 field(FLNK,
"$(P):LS01:Z2:RANGE1:ARRAY.PROC")
4030 ## Read the ZONE RANGE setting.
4032 record(subArray,
"$(P):LS01:Z2:RANGE1:ARRAY") {
4033 field(SCAN,
"Passive")
4034 field(FTVL,
"DOUBLE")
4035 field(INP,
"$(P):LS01:Z2:ALL1.VAL MS")
4040 field(FLNK,
"$(P):LS01:Z2:RANGE1.PROC")
4043 field(INP,
"$(P):LS01:Z2:RANGE1:ARRAY.VAL")
4044 field(SCAN,
"Passive")
4047 field(ONST,
"Range1/Low")
4049 field(TWST,
"Range2/Medium")
4051 field(THST,
"Range3/High")
4053 field(FRST,
"Range4")
4055 field(FVST,
"Range5")
4057 field(FLNK,
"$(P):LS01:Z2:INPUT1:ARRAY.PROC")
4061 ## Read the ZONE INPUT setting.
4063 record(subArray,
"$(P):LS01:Z2:INPUT1:ARRAY") {
4064 field(SCAN,
"Passive")
4065 field(FTVL,
"DOUBLE")
4066 field(INP,
"$(P):LS01:Z2:ALL1.VAL MS")
4071 field(FLNK,
"$(P):LS01:Z2:INPUT1.PROC")
4074 field(INP,
"$(P):LS01:Z2:INPUT1:ARRAY.VAL")
4075 field(SCAN,
"Passive")
4078 field(ONST,
"Input A")
4080 field(TWST,
"Input B")
4082 field(THST,
"Input C")
4084 field(FRST,
"Input D")
4086 field(FVST,
"Input D2")
4088 field(SXST,
"Input D3")
4090 field(SVST,
"Input D4")
4092 field(EIST,
"Input D5")
4094 field(FLNK,
"$(P):LS01:Z2:RATE1:ARRAY.PROC")
4098 ## Read the ZONE RATE setting.
4100 record(subArray,
"$(P):LS01:Z2:RATE1:ARRAY") {
4101 field(SCAN,
"Passive")
4102 field(FTVL,
"DOUBLE")
4103 field(INP,
"$(P):LS01:Z2:ALL1.VAL MS")
4108 field(FLNK,
"$(P):LS01:Z2:RATE1.PROC")
4111 field(SCAN,
"Passive")
4112 field(INP,
"$(P):LS01:Z2:RATE1:ARRAY.VAL MS")
4114 field(FLNK,
"$(P):LS01:Z2:INITCALC1.PROC")
4117 ##############################################################
4119 ## Populate the write records below with the current values.
4120 ## Only do this once at startup.
4122 ###############################################################
4128 field(DOPT,
"Use OCAL")
4129 field(OOPT,
"When Zero")
4131 field(OUT,
"$(P):LS01:Z2:INITUB1.PROC")
4135 field(OMSL,
"closed_loop")
4136 field(DOL,
"$(P):LS01:Z2:UB1.VAL")
4137 field(OUTA,
"$(P):LS01:Z2:UB_S1.VAL PP")
4138 field(FLNK,
"$(P):LS01:Z2:INITP1.PROC")
4141 field(OMSL,
"closed_loop")
4142 field(DOL,
"$(P):LS01:Z2:P1.VAL")
4143 field(OUTA,
"$(P):LS01:Z2:P_S1.VAL PP")
4144 field(FLNK,
"$(P):LS01:Z2:INITI1.PROC")
4147 field(OMSL,
"closed_loop")
4148 field(DOL,
"$(P):LS01:Z2:I1.VAL")
4149 field(OUTA,
"$(P):LS01:Z2:I_S1.VAL PP")
4150 field(FLNK,
"$(P):LS01:Z2:INITD1.PROC")
4153 field(OMSL,
"closed_loop")
4154 field(DOL,
"$(P):LS01:Z2:D1.VAL")
4155 field(OUTA,
"$(P):LS01:Z2:D_S1.VAL PP")
4156 field(FLNK,
"$(P):LS01:Z2:INITMOUT1.PROC")
4159 field(OMSL,
"closed_loop")
4160 field(DOL,
"$(P):LS01:Z2:MOUT1.VAL")
4161 field(OUTA,
"$(P):LS01:Z2:MOUT_S1.VAL PP")
4162 field(FLNK,
"$(P):LS01:Z2:INITRANGE1.PROC")
4165 field(OMSL,
"closed_loop")
4166 field(DOL,
"$(P):LS01:Z2:RANGE1.VAL")
4167 field(OUTA,
"$(P):LS01:Z2:RANGE_S1.VAL PP")
4168 field(FLNK,
"$(P):LS01:Z2:INITINPUT1.PROC")
4171 field(OMSL,
"closed_loop")
4172 field(DOL,
"$(P):LS01:Z2:INPUT1.VAL")
4173 field(OUTA,
"$(P):LS01:Z2:INPUT_S1.VAL PP")
4174 field(FLNK,
"$(P):LS01:Z2:INITRATE1.PROC")
4177 field(OMSL,
"closed_loop")
4178 field(DOL,
"$(P):LS01:Z2:RATE1.VAL")
4179 field(OUTA,
"$(P):LS01:Z2:RATE_S1.VAL PP")
4180 field(FLNK,
"$(P):LS01:Z2:INITCOUNT1.PROC")
4185 field(OUTA,
"$(P):LS01:Z2:INITCALC1.A")
4190 #############################################
4191 # Write records. There is a calcout record to
4192 # do the actual write.
4193 #############################################
4196 ## Set the ZONE upper boundary setting.
4199 field(SCAN,
"Passive")
4201 field(SDIS,
"$(P):LS01:DISABLE")
4205 ## Set the ZONE P setting.
4208 field(SCAN,
"Passive")
4210 field(SDIS,
"$(P):LS01:DISABLE")
4214 ## Set the ZONE I setting.
4217 field(SCAN,
"Passive")
4219 field(SDIS,
"$(P):LS01:DISABLE")
4223 ## Set the ZONE D setting.
4226 field(SCAN,
"Passive")
4228 field(SDIS,
"$(P):LS01:DISABLE")
4232 ## Set the ZONE MOUT setting.
4235 field(SCAN,
"Passive")
4237 field(SDIS,
"$(P):LS01:DISABLE")
4241 ## Set the ZONE RANGE setting.
4244 field(SCAN,
"Passive")
4247 field(ONST,
"Range1/Low")
4249 field(TWST,
"Range2/Medium")
4251 field(THST,
"Range3/High")
4253 field(FRST,
"Range4")
4255 field(FVST,
"Range5")
4257 field(SDIS,
"$(P):LS01:DISABLE")
4261 ## Set the ZONE INPUT setting.
4266 field(ONST,
"Input A")
4268 field(TWST,
"Input B")
4270 field(THST,
"Input C")
4272 field(FRST,
"Input D")
4274 field(FVST,
"Input D2")
4276 field(SXST,
"Input D3")
4278 field(SVST,
"Input D4")
4280 field(EIST,
"Input D5")
4282 field(SDIS,
"$(P):LS01:DISABLE")
4286 ## Set the ZONE RATE setting.
4289 field(SCAN,
"Passive")
4291 field(SDIS,
"$(P):LS01:DISABLE")
4295 ## Record to write the ZONE parameters.
4298 field(INPA,
"$(P):LS01:Z2:UB_S1")
4299 field(INPB,
"$(P):LS01:Z2:P_S1")
4300 field(INPC,
"$(P):LS01:Z2:I_S1")
4301 field(INPD,
"$(P):LS01:Z2:D_S1")
4302 field(INPE,
"$(P):LS01:Z2:MOUT_S1")
4303 field(INPF,
"$(P):LS01:Z2:RANGE_S1")
4304 field(INPG,
"$(P):LS01:Z2:INPUT_S1")
4305 field(INPH,
"$(P):LS01:Z2:RATE_S1")
4307 field(DTYP,
"stream")
4308 field(OUT,
"@ls336.proto setZONE(1,2) L0 0")
4309 field(SDIS,
"$(P):LS01:DISABLE")
4310 field(FLNK,
"$(P):LS01:Z2:ALL1.PROC")
4322 #######################################
4324 # Template to support reading and setting
4325 # controller ZONE parameters. It reads the ZONE
4326 # parameters into an array, then uses subArrays to
4327 # extract each parameter.
4329 # This template is used by the output template
4330 # and it needs the following macros:
4333 # OUT: output number
4335 #######################################
4338 ## Read the ZONE setting into an array (8 values)
4340 record(waveform,
"$(P):LS01:Z2:ALL1") {
4341 field(DTYP,
"stream")
4342 field(SDIS, "$(P):LS01:DISABLE_POLL")
4343 field(INP, "@ls336.proto getZONE(1,2) L0 0")
4344 field(SCAN, "Passive")
4346 field(FTVL, "DOUBLE")
4348 field(FLNK, "$(P):LS01:Z2:UB1:ARRAY.PROC")
4352 ## Read the ZONE upper boundary setting.
4354 record(subArray,
"$(P):LS01:Z2:UB1:ARRAY") {
4355 field(SCAN,
"Passive")
4356 field(FTVL, "DOUBLE")
4357 field(INP, "$(P):LS01:Z2:ALL1.VAL MS")
4362 field(FLNK, "$(P):LS01:Z2:UB1.PROC")
4364 record(ai, "$(P):LS01:Z2:UB1") {
4365 field(SCAN,
"Passive")
4366 field(INP, "$(P):LS01:Z2:UB1:ARRAY.VAL MS")
4368 field(FLNK, "$(P):LS01:Z2:P1:ARRAY.PROC")
4372 ## Read the ZONE P setting.
4374 record(subArray,
"$(P):LS01:Z2:P1:ARRAY") {
4375 field(SCAN,
"Passive")
4376 field(FTVL, "DOUBLE")
4377 field(INP, "$(P):LS01:Z2:ALL1.VAL MS")
4382 field(FLNK, "$(P):LS01:Z2:P1.PROC")
4384 record(ai, "$(P):LS01:Z2:P1") {
4385 field(SCAN,
"Passive")
4386 field(INP, "$(P):LS01:Z2:P1:ARRAY.VAL MS")
4388 field(FLNK, "$(P):LS01:Z2:I1:ARRAY.PROC")
4392 ## Read the ZONE I setting.
4394 record(subArray,
"$(P):LS01:Z2:I1:ARRAY") {
4395 field(SCAN,
"Passive")
4396 field(FTVL, "DOUBLE")
4397 field(INP, "$(P):LS01:Z2:ALL1.VAL MS")
4402 field(FLNK, "$(P):LS01:Z2:I1.PROC")
4404 record(ai, "$(P):LS01:Z2:I1") {
4405 field(SCAN,
"Passive")
4406 field(INP, "$(P):LS01:Z2:I1:ARRAY.VAL MS")
4408 field(FLNK, "$(P):LS01:Z2:D1:ARRAY.PROC")
4412 ## Read the ZONE D setting.
4414 record(subArray,
"$(P):LS01:Z2:D1:ARRAY") {
4415 field(SCAN,
"Passive")
4416 field(FTVL, "DOUBLE")
4417 field(INP, "$(P):LS01:Z2:ALL1.VAL MS")
4422 field(FLNK, "$(P):LS01:Z2:D1.PROC")
4424 record(ai, "$(P):LS01:Z2:D1") {
4425 field(SCAN,
"Passive")
4426 field(INP, "$(P):LS01:Z2:D1:ARRAY.VAL MS")
4428 field(FLNK, "$(P):LS01:Z2:MOUT1:ARRAY.PROC")
4432 ## Read the ZONE MOUT setting.
4434 record(subArray,
"$(P):LS01:Z2:MOUT1:ARRAY") {
4435 field(SCAN,
"Passive")
4436 field(FTVL, "DOUBLE")
4437 field(INP, "$(P):LS01:Z2:ALL1.VAL MS")
4442 field(FLNK, "$(P):LS01:Z2:MOUT1.PROC")
4444 record(ai, "$(P):LS01:Z2:MOUT1") {
4445 field(SCAN,
"Passive")
4446 field(INP, "$(P):LS01:Z2:MOUT1:ARRAY.VAL MS")
4448 field(FLNK, "$(P):LS01:Z2:RANGE1:ARRAY.PROC")
4452 ## Read the ZONE RANGE setting.
4454 record(subArray,
"$(P):LS01:Z2:RANGE1:ARRAY") {
4455 field(SCAN,
"Passive")
4456 field(FTVL, "DOUBLE")
4457 field(INP, "$(P):LS01:Z2:ALL1.VAL MS")
4462 field(FLNK, "$(P):LS01:Z2:RANGE1.PROC")
4464 record(mbbi, "$(P):LS01:Z2:RANGE1") {
4465 field(INP,
"$(P):LS01:Z2:RANGE1:ARRAY.VAL")
4466 field(SCAN, "Passive")
4469 field(ONST, "Range1/Low")
4471 field(TWST, "Range2/Medium")
4473 field(THST, "Range3/High")
4475 field(FRST, "Range4")
4477 field(FVST, "Range5")
4479 field(FLNK, "$(P):LS01:Z2:INPUT1:ARRAY.PROC")
4483 ## Read the ZONE INPUT setting.
4485 record(subArray,
"$(P):LS01:Z2:INPUT1:ARRAY") {
4486 field(SCAN,
"Passive")
4487 field(FTVL, "DOUBLE")
4488 field(INP, "$(P):LS01:Z2:ALL1.VAL MS")
4493 field(FLNK, "$(P):LS01:Z2:INPUT1.PROC")
4495 record(mbbi, "$(P):LS01:Z2:INPUT1") {
4496 field(INP,
"$(P):LS01:Z2:INPUT1:ARRAY.VAL")
4497 field(SCAN, "Passive")
4500 field(ONST, "Input A")
4502 field(TWST, "Input B")
4504 field(THST, "Input C")
4506 field(FRST, "Input D")
4508 field(FVST, "Input D2")
4510 field(SXST, "Input D3")
4512 field(SVST, "Input D4")
4514 field(EIST, "Input D5")
4516 field(FLNK, "$(P):LS01:Z2:RATE1:ARRAY.PROC")
4520 ## Read the ZONE RATE setting.
4522 record(subArray,
"$(P):LS01:Z2:RATE1:ARRAY") {
4523 field(SCAN,
"Passive")
4524 field(FTVL, "DOUBLE")
4525 field(INP, "$(P):LS01:Z2:ALL1.VAL MS")
4530 field(FLNK, "$(P):LS01:Z2:RATE1.PROC")
4532 record(ai, "$(P):LS01:Z2:RATE1") {
4533 field(SCAN,
"Passive")
4534 field(INP, "$(P):LS01:Z2:RATE1:ARRAY.VAL MS")
4536 field(FLNK, "$(P):LS01:Z2:INITCALC1.PROC")
4539 ##############################################################
4541 ## Populate the write records below with the current values.
4542 ## Only do this once at startup.
4544 ###############################################################
4546 record(calcout,
"$(P):LS01:Z2:INITCALC1") {
4550 field(DOPT, "Use OCAL")
4551 field(OOPT, "When Zero")
4553 field(OUT, "$(P):LS01:Z2:INITUB1.PROC")
4556 record(dfanout, "$(P):LS01:Z2:INITUB1") {
4557 field(OMSL,
"closed_loop")
4558 field(DOL, "$(P):LS01:Z2:UB1.VAL")
4559 field(OUTA, "$(P):LS01:Z2:UB_S1.VAL PP")
4560 field(FLNK, "$(P):LS01:Z2:INITP1.PROC")
4562 record(dfanout, "$(P):LS01:Z2:INITP1") {
4563 field(OMSL,
"closed_loop")
4564 field(DOL, "$(P):LS01:Z2:P1.VAL")
4565 field(OUTA, "$(P):LS01:Z2:P_S1.VAL PP")
4566 field(FLNK, "$(P):LS01:Z2:INITI1.PROC")
4568 record(dfanout, "$(P):LS01:Z2:INITI1") {
4569 field(OMSL,
"closed_loop")
4570 field(DOL, "$(P):LS01:Z2:I1.VAL")
4571 field(OUTA, "$(P):LS01:Z2:I_S1.VAL PP")
4572 field(FLNK, "$(P):LS01:Z2:INITD1.PROC")
4574 record(dfanout, "$(P):LS01:Z2:INITD1") {
4575 field(OMSL,
"closed_loop")
4576 field(DOL, "$(P):LS01:Z2:D1.VAL")
4577 field(OUTA, "$(P):LS01:Z2:D_S1.VAL PP")
4578 field(FLNK, "$(P):LS01:Z2:INITMOUT1.PROC")
4580 record(dfanout, "$(P):LS01:Z2:INITMOUT1") {
4581 field(OMSL,
"closed_loop")
4582 field(DOL, "$(P):LS01:Z2:MOUT1.VAL")
4583 field(OUTA, "$(P):LS01:Z2:MOUT_S1.VAL PP")
4584 field(FLNK, "$(P):LS01:Z2:INITRANGE1.PROC")
4586 record(dfanout, "$(P):LS01:Z2:INITRANGE1") {
4587 field(OMSL,
"closed_loop")
4588 field(DOL, "$(P):LS01:Z2:RANGE1.VAL")
4589 field(OUTA, "$(P):LS01:Z2:RANGE_S1.VAL PP")
4590 field(FLNK, "$(P):LS01:Z2:INITINPUT1.PROC")
4592 record(dfanout, "$(P):LS01:Z2:INITINPUT1") {
4593 field(OMSL,
"closed_loop")
4594 field(DOL, "$(P):LS01:Z2:INPUT1.VAL")
4595 field(OUTA, "$(P):LS01:Z2:INPUT_S1.VAL PP")
4596 field(FLNK, "$(P):LS01:Z2:INITRATE1.PROC")
4598 record(dfanout, "$(P):LS01:Z2:INITRATE1") {
4599 field(OMSL,
"closed_loop")
4600 field(DOL, "$(P):LS01:Z2:RATE1.VAL")
4601 field(OUTA, "$(P):LS01:Z2:RATE_S1.VAL PP")
4602 field(FLNK, "$(P):LS01:Z2:INITCOUNT1.PROC")
4605 record(dfanout, "$(P):LS01:Z2:INITCOUNT1") {
4607 field(OUTA, "$(P):LS01:Z2:INITCALC1.A")
4612 #############################################
4613 # Write records. There is a calcout record to
4614 # do the actual write.
4615 #############################################
4618 ## Set the ZONE upper boundary setting.
4620 record(ao,
"$(P):LS01:Z2:UB_S1") {
4621 field(SCAN,
"Passive")
4623 field(SDIS, "$(P):LS01:DISABLE")
4627 ## Set the ZONE P setting.
4629 record(ao,
"$(P):LS01:Z2:P_S1") {
4630 field(SCAN,
"Passive")
4632 field(SDIS, "$(P):LS01:DISABLE")
4636 ## Set the ZONE I setting.
4638 record(ao,
"$(P):LS01:Z2:I_S1") {
4639 field(SCAN,
"Passive")
4641 field(SDIS, "$(P):LS01:DISABLE")
4645 ## Set the ZONE D setting.
4647 record(ao,
"$(P):LS01:Z2:D_S1") {
4648 field(SCAN,
"Passive")
4650 field(SDIS, "$(P):LS01:DISABLE")
4654 ## Set the ZONE MOUT setting.
4656 record(ao,
"$(P):LS01:Z2:MOUT_S1") {
4657 field(SCAN,
"Passive")
4659 field(SDIS, "$(P):LS01:DISABLE")
4663 ## Set the ZONE RANGE setting.
4665 record(mbbo,
"$(P):LS01:Z2:RANGE_S1") {
4666 field(SCAN,
"Passive")
4669 field(ONST, "Range1/Low")
4671 field(TWST, "Range2/Medium")
4673 field(THST, "Range3/High")
4675 field(FRST, "Range4")
4677 field(FVST, "Range5")
4679 field(SDIS, "$(P):LS01:DISABLE")
4683 ## Set the ZONE INPUT setting.
4685 record(mbbo,
"$(P):LS01:Z2:INPUT_S1") {
4688 field(ONST, "Input A")
4690 field(TWST, "Input B")
4692 field(THST, "Input C")
4694 field(FRST, "Input D")
4696 field(FVST, "Input D2")
4698 field(SXST, "Input D3")
4700 field(SVST, "Input D4")
4702 field(EIST, "Input D5")
4704 field(SDIS, "$(P):LS01:DISABLE")
4708 ## Set the ZONE RATE setting.
4710 record(ao,
"$(P):LS01:Z2:RATE_S1") {
4711 field(SCAN,
"Passive")
4713 field(SDIS, "$(P):LS01:DISABLE")
4717 ## Record to write the ZONE parameters.
4719 record(calcout,
"$(P):LS01:Z2:SET1") {
4720 field(INPA,
"$(P):LS01:Z2:UB_S1")
4721 field(INPB, "$(P):LS01:Z2:P_S1")
4722 field(INPC, "$(P):LS01:Z2:I_S1")
4723 field(INPD, "$(P):LS01:Z2:D_S1")
4724 field(INPE, "$(P):LS01:Z2:MOUT_S1")
4725 field(INPF, "$(P):LS01:Z2:RANGE_S1")
4726 field(INPG, "$(P):LS01:Z2:INPUT_S1")
4727 field(INPH, "$(P):LS01:Z2:RATE_S1")
4729 field(DTYP, "stream")
4730 field(OUT, "@ls336.proto setZONE(1,2) L0 0")
4731 field(SDIS, "$(P):LS01:DISABLE")
4732 field(FLNK, "$(P):LS01:Z2:ALL1.PROC")
4744 #######################################
4746 # Template to support reading and setting
4747 # controller ZONE parameters. It reads the ZONE
4748 # parameters into an array, then uses subArrays to
4749 # extract each parameter.
4751 # This template is used by the output template
4752 # and it needs the following macros:
4755 # OUT: output number
4757 #######################################
4760 ## Read the ZONE setting into an array (8 values)
4763 field(DTYP,
"stream")
4764 field(SDIS,
"$(P):LS01:DISABLE_POLL")
4765 field(INP,
"@ls336.proto getZONE(1,3) L0 0")
4766 field(SCAN,
"Passive")
4768 field(FTVL,
"DOUBLE")
4770 field(FLNK,
"$(P):LS01:Z3:UB1:ARRAY.PROC")
4774 ## Read the ZONE upper boundary setting.
4777 field(SCAN,
"Passive")
4778 field(FTVL,
"DOUBLE")
4779 field(INP,
"$(P):LS01:Z3:ALL1.VAL MS")
4784 field(FLNK,
"$(P):LS01:Z3:UB1.PROC")
4787 field(SCAN,
"Passive")
4788 field(INP,
"$(P):LS01:Z3:UB1:ARRAY.VAL MS")
4790 field(FLNK,
"$(P):LS01:Z3:P1:ARRAY.PROC")
4794 ## Read the ZONE P setting.
4797 field(SCAN,
"Passive")
4798 field(FTVL,
"DOUBLE")
4799 field(INP,
"$(P):LS01:Z3:ALL1.VAL MS")
4804 field(FLNK,
"$(P):LS01:Z3:P1.PROC")
4807 field(SCAN,
"Passive")
4808 field(INP,
"$(P):LS01:Z3:P1:ARRAY.VAL MS")
4810 field(FLNK,
"$(P):LS01:Z3:I1:ARRAY.PROC")
4814 ## Read the ZONE I setting.
4817 field(SCAN,
"Passive")
4818 field(FTVL,
"DOUBLE")
4819 field(INP,
"$(P):LS01:Z3:ALL1.VAL MS")
4824 field(FLNK,
"$(P):LS01:Z3:I1.PROC")
4827 field(SCAN,
"Passive")
4828 field(INP,
"$(P):LS01:Z3:I1:ARRAY.VAL MS")
4830 field(FLNK,
"$(P):LS01:Z3:D1:ARRAY.PROC")
4834 ## Read the ZONE D setting.
4837 field(SCAN,
"Passive")
4838 field(FTVL,
"DOUBLE")
4839 field(INP,
"$(P):LS01:Z3:ALL1.VAL MS")
4844 field(FLNK,
"$(P):LS01:Z3:D1.PROC")
4847 field(SCAN,
"Passive")
4848 field(INP,
"$(P):LS01:Z3:D1:ARRAY.VAL MS")
4850 field(FLNK,
"$(P):LS01:Z3:MOUT1:ARRAY.PROC")
4854 ## Read the ZONE MOUT setting.
4856 record(subArray,
"$(P):LS01:Z3:MOUT1:ARRAY") {
4857 field(SCAN,
"Passive")
4858 field(FTVL,
"DOUBLE")
4859 field(INP,
"$(P):LS01:Z3:ALL1.VAL MS")
4864 field(FLNK,
"$(P):LS01:Z3:MOUT1.PROC")
4867 field(SCAN,
"Passive")
4868 field(INP,
"$(P):LS01:Z3:MOUT1:ARRAY.VAL MS")
4870 field(FLNK,
"$(P):LS01:Z3:RANGE1:ARRAY.PROC")
4874 ## Read the ZONE RANGE setting.
4876 record(subArray,
"$(P):LS01:Z3:RANGE1:ARRAY") {
4877 field(SCAN,
"Passive")
4878 field(FTVL,
"DOUBLE")
4879 field(INP,
"$(P):LS01:Z3:ALL1.VAL MS")
4884 field(FLNK,
"$(P):LS01:Z3:RANGE1.PROC")
4887 field(INP,
"$(P):LS01:Z3:RANGE1:ARRAY.VAL")
4888 field(SCAN,
"Passive")
4891 field(ONST,
"Range1/Low")
4893 field(TWST,
"Range2/Medium")
4895 field(THST,
"Range3/High")
4897 field(FRST,
"Range4")
4899 field(FVST,
"Range5")
4901 field(FLNK,
"$(P):LS01:Z3:INPUT1:ARRAY.PROC")
4905 ## Read the ZONE INPUT setting.
4907 record(subArray,
"$(P):LS01:Z3:INPUT1:ARRAY") {
4908 field(SCAN,
"Passive")
4909 field(FTVL,
"DOUBLE")
4910 field(INP,
"$(P):LS01:Z3:ALL1.VAL MS")
4915 field(FLNK,
"$(P):LS01:Z3:INPUT1.PROC")
4918 field(INP,
"$(P):LS01:Z3:INPUT1:ARRAY.VAL")
4919 field(SCAN,
"Passive")
4922 field(ONST,
"Input A")
4924 field(TWST,
"Input B")
4926 field(THST,
"Input C")
4928 field(FRST,
"Input D")
4930 field(FVST,
"Input D2")
4932 field(SXST,
"Input D3")
4934 field(SVST,
"Input D4")
4936 field(EIST,
"Input D5")
4938 field(FLNK,
"$(P):LS01:Z3:RATE1:ARRAY.PROC")
4942 ## Read the ZONE RATE setting.
4944 record(subArray,
"$(P):LS01:Z3:RATE1:ARRAY") {
4945 field(SCAN,
"Passive")
4946 field(FTVL,
"DOUBLE")
4947 field(INP,
"$(P):LS01:Z3:ALL1.VAL MS")
4952 field(FLNK,
"$(P):LS01:Z3:RATE1.PROC")
4955 field(SCAN,
"Passive")
4956 field(INP,
"$(P):LS01:Z3:RATE1:ARRAY.VAL MS")
4958 field(FLNK,
"$(P):LS01:Z3:INITCALC1.PROC")
4961 ##############################################################
4963 ## Populate the write records below with the current values.
4964 ## Only do this once at startup.
4966 ###############################################################
4972 field(DOPT,
"Use OCAL")
4973 field(OOPT,
"When Zero")
4975 field(OUT,
"$(P):LS01:Z3:INITUB1.PROC")
4979 field(OMSL,
"closed_loop")
4980 field(DOL,
"$(P):LS01:Z3:UB1.VAL")
4981 field(OUTA,
"$(P):LS01:Z3:UB_S1.VAL PP")
4982 field(FLNK,
"$(P):LS01:Z3:INITP1.PROC")
4985 field(OMSL,
"closed_loop")
4986 field(DOL,
"$(P):LS01:Z3:P1.VAL")
4987 field(OUTA,
"$(P):LS01:Z3:P_S1.VAL PP")
4988 field(FLNK,
"$(P):LS01:Z3:INITI1.PROC")
4991 field(OMSL,
"closed_loop")
4992 field(DOL,
"$(P):LS01:Z3:I1.VAL")
4993 field(OUTA,
"$(P):LS01:Z3:I_S1.VAL PP")
4994 field(FLNK,
"$(P):LS01:Z3:INITD1.PROC")
4997 field(OMSL,
"closed_loop")
4998 field(DOL,
"$(P):LS01:Z3:D1.VAL")
4999 field(OUTA,
"$(P):LS01:Z3:D_S1.VAL PP")
5000 field(FLNK,
"$(P):LS01:Z3:INITMOUT1.PROC")
5003 field(OMSL,
"closed_loop")
5004 field(DOL,
"$(P):LS01:Z3:MOUT1.VAL")
5005 field(OUTA,
"$(P):LS01:Z3:MOUT_S1.VAL PP")
5006 field(FLNK,
"$(P):LS01:Z3:INITRANGE1.PROC")
5009 field(OMSL,
"closed_loop")
5010 field(DOL,
"$(P):LS01:Z3:RANGE1.VAL")
5011 field(OUTA,
"$(P):LS01:Z3:RANGE_S1.VAL PP")
5012 field(FLNK,
"$(P):LS01:Z3:INITINPUT1.PROC")
5015 field(OMSL,
"closed_loop")
5016 field(DOL,
"$(P):LS01:Z3:INPUT1.VAL")
5017 field(OUTA,
"$(P):LS01:Z3:INPUT_S1.VAL PP")
5018 field(FLNK,
"$(P):LS01:Z3:INITRATE1.PROC")
5021 field(OMSL,
"closed_loop")
5022 field(DOL,
"$(P):LS01:Z3:RATE1.VAL")
5023 field(OUTA,
"$(P):LS01:Z3:RATE_S1.VAL PP")
5024 field(FLNK,
"$(P):LS01:Z3:INITCOUNT1.PROC")
5029 field(OUTA,
"$(P):LS01:Z3:INITCALC1.A")
5034 #############################################
5035 # Write records. There is a calcout record to
5036 # do the actual write.
5037 #############################################
5040 ## Set the ZONE upper boundary setting.
5043 field(SCAN,
"Passive")
5045 field(SDIS,
"$(P):LS01:DISABLE")
5049 ## Set the ZONE P setting.
5052 field(SCAN,
"Passive")
5054 field(SDIS,
"$(P):LS01:DISABLE")
5058 ## Set the ZONE I setting.
5061 field(SCAN,
"Passive")
5063 field(SDIS,
"$(P):LS01:DISABLE")
5067 ## Set the ZONE D setting.
5070 field(SCAN,
"Passive")
5072 field(SDIS,
"$(P):LS01:DISABLE")
5076 ## Set the ZONE MOUT setting.
5079 field(SCAN,
"Passive")
5081 field(SDIS,
"$(P):LS01:DISABLE")
5085 ## Set the ZONE RANGE setting.
5088 field(SCAN,
"Passive")
5091 field(ONST,
"Range1/Low")
5093 field(TWST,
"Range2/Medium")
5095 field(THST,
"Range3/High")
5097 field(FRST,
"Range4")
5099 field(FVST,
"Range5")
5101 field(SDIS,
"$(P):LS01:DISABLE")
5105 ## Set the ZONE INPUT setting.
5110 field(ONST,
"Input A")
5112 field(TWST,
"Input B")
5114 field(THST,
"Input C")
5116 field(FRST,
"Input D")
5118 field(FVST,
"Input D2")
5120 field(SXST,
"Input D3")
5122 field(SVST,
"Input D4")
5124 field(EIST,
"Input D5")
5126 field(SDIS,
"$(P):LS01:DISABLE")
5130 ## Set the ZONE RATE setting.
5133 field(SCAN,
"Passive")
5135 field(SDIS,
"$(P):LS01:DISABLE")
5139 ## Record to write the ZONE parameters.
5142 field(INPA,
"$(P):LS01:Z3:UB_S1")
5143 field(INPB,
"$(P):LS01:Z3:P_S1")
5144 field(INPC,
"$(P):LS01:Z3:I_S1")
5145 field(INPD,
"$(P):LS01:Z3:D_S1")
5146 field(INPE,
"$(P):LS01:Z3:MOUT_S1")
5147 field(INPF,
"$(P):LS01:Z3:RANGE_S1")
5148 field(INPG,
"$(P):LS01:Z3:INPUT_S1")
5149 field(INPH,
"$(P):LS01:Z3:RATE_S1")
5151 field(DTYP,
"stream")
5152 field(OUT,
"@ls336.proto setZONE(1,3) L0 0")
5153 field(SDIS,
"$(P):LS01:DISABLE")
5154 field(FLNK,
"$(P):LS01:Z3:ALL1.PROC")
5166 #######################################
5168 # Template to support reading and setting
5169 # controller ZONE parameters. It reads the ZONE
5170 # parameters into an array, then uses subArrays to
5171 # extract each parameter.
5173 # This template is used by the output template
5174 # and it needs the following macros:
5177 # OUT: output number
5179 #######################################
5182 ## Read the ZONE setting into an array (8 values)
5185 field(DTYP,
"stream")
5186 field(SDIS,
"$(P):LS01:DISABLE_POLL")
5187 field(INP,
"@ls336.proto getZONE(1,4) L0 0")
5188 field(SCAN,
"Passive")
5190 field(FTVL,
"DOUBLE")
5192 field(FLNK,
"$(P):LS01:Z4:UB1:ARRAY.PROC")
5196 ## Read the ZONE upper boundary setting.
5199 field(SCAN,
"Passive")
5200 field(FTVL,
"DOUBLE")
5201 field(INP,
"$(P):LS01:Z4:ALL1.VAL MS")
5206 field(FLNK,
"$(P):LS01:Z4:UB1.PROC")
5209 field(SCAN,
"Passive")
5210 field(INP,
"$(P):LS01:Z4:UB1:ARRAY.VAL MS")
5212 field(FLNK,
"$(P):LS01:Z4:P1:ARRAY.PROC")
5216 ## Read the ZONE P setting.
5219 field(SCAN,
"Passive")
5220 field(FTVL,
"DOUBLE")
5221 field(INP,
"$(P):LS01:Z4:ALL1.VAL MS")
5226 field(FLNK,
"$(P):LS01:Z4:P1.PROC")
5229 field(SCAN,
"Passive")
5230 field(INP,
"$(P):LS01:Z4:P1:ARRAY.VAL MS")
5232 field(FLNK,
"$(P):LS01:Z4:I1:ARRAY.PROC")
5236 ## Read the ZONE I setting.
5239 field(SCAN,
"Passive")
5240 field(FTVL,
"DOUBLE")
5241 field(INP,
"$(P):LS01:Z4:ALL1.VAL MS")
5246 field(FLNK,
"$(P):LS01:Z4:I1.PROC")
5249 field(SCAN,
"Passive")
5250 field(INP,
"$(P):LS01:Z4:I1:ARRAY.VAL MS")
5252 field(FLNK,
"$(P):LS01:Z4:D1:ARRAY.PROC")
5256 ## Read the ZONE D setting.
5259 field(SCAN,
"Passive")
5260 field(FTVL,
"DOUBLE")
5261 field(INP,
"$(P):LS01:Z4:ALL1.VAL MS")
5266 field(FLNK,
"$(P):LS01:Z4:D1.PROC")
5269 field(SCAN,
"Passive")
5270 field(INP,
"$(P):LS01:Z4:D1:ARRAY.VAL MS")
5272 field(FLNK,
"$(P):LS01:Z4:MOUT1:ARRAY.PROC")
5276 ## Read the ZONE MOUT setting.
5278 record(subArray,
"$(P):LS01:Z4:MOUT1:ARRAY") {
5279 field(SCAN,
"Passive")
5280 field(FTVL,
"DOUBLE")
5281 field(INP,
"$(P):LS01:Z4:ALL1.VAL MS")
5286 field(FLNK,
"$(P):LS01:Z4:MOUT1.PROC")
5289 field(SCAN,
"Passive")
5290 field(INP,
"$(P):LS01:Z4:MOUT1:ARRAY.VAL MS")
5292 field(FLNK,
"$(P):LS01:Z4:RANGE1:ARRAY.PROC")
5296 ## Read the ZONE RANGE setting.
5298 record(subArray,
"$(P):LS01:Z4:RANGE1:ARRAY") {
5299 field(SCAN,
"Passive")
5300 field(FTVL,
"DOUBLE")
5301 field(INP,
"$(P):LS01:Z4:ALL1.VAL MS")
5306 field(FLNK,
"$(P):LS01:Z4:RANGE1.PROC")
5309 field(INP,
"$(P):LS01:Z4:RANGE1:ARRAY.VAL")
5310 field(SCAN,
"Passive")
5313 field(ONST,
"Range1/Low")
5315 field(TWST,
"Range2/Medium")
5317 field(THST,
"Range3/High")
5319 field(FRST,
"Range4")
5321 field(FVST,
"Range5")
5323 field(FLNK,
"$(P):LS01:Z4:INPUT1:ARRAY.PROC")
5327 ## Read the ZONE INPUT setting.
5329 record(subArray,
"$(P):LS01:Z4:INPUT1:ARRAY") {
5330 field(SCAN,
"Passive")
5331 field(FTVL,
"DOUBLE")
5332 field(INP,
"$(P):LS01:Z4:ALL1.VAL MS")
5337 field(FLNK,
"$(P):LS01:Z4:INPUT1.PROC")
5340 field(INP,
"$(P):LS01:Z4:INPUT1:ARRAY.VAL")
5341 field(SCAN,
"Passive")
5344 field(ONST,
"Input A")
5346 field(TWST,
"Input B")
5348 field(THST,
"Input C")
5350 field(FRST,
"Input D")
5352 field(FVST,
"Input D2")
5354 field(SXST,
"Input D3")
5356 field(SVST,
"Input D4")
5358 field(EIST,
"Input D5")
5360 field(FLNK,
"$(P):LS01:Z4:RATE1:ARRAY.PROC")
5364 ## Read the ZONE RATE setting.
5366 record(subArray,
"$(P):LS01:Z4:RATE1:ARRAY") {
5367 field(SCAN,
"Passive")
5368 field(FTVL,
"DOUBLE")
5369 field(INP,
"$(P):LS01:Z4:ALL1.VAL MS")
5374 field(FLNK,
"$(P):LS01:Z4:RATE1.PROC")
5377 field(SCAN,
"Passive")
5378 field(INP,
"$(P):LS01:Z4:RATE1:ARRAY.VAL MS")
5380 field(FLNK,
"$(P):LS01:Z4:INITCALC1.PROC")
5383 ##############################################################
5385 ## Populate the write records below with the current values.
5386 ## Only do this once at startup.
5388 ###############################################################
5394 field(DOPT,
"Use OCAL")
5395 field(OOPT,
"When Zero")
5397 field(OUT,
"$(P):LS01:Z4:INITUB1.PROC")
5401 field(OMSL,
"closed_loop")
5402 field(DOL,
"$(P):LS01:Z4:UB1.VAL")
5403 field(OUTA,
"$(P):LS01:Z4:UB_S1.VAL PP")
5404 field(FLNK,
"$(P):LS01:Z4:INITP1.PROC")
5407 field(OMSL,
"closed_loop")
5408 field(DOL,
"$(P):LS01:Z4:P1.VAL")
5409 field(OUTA,
"$(P):LS01:Z4:P_S1.VAL PP")
5410 field(FLNK,
"$(P):LS01:Z4:INITI1.PROC")
5413 field(OMSL,
"closed_loop")
5414 field(DOL,
"$(P):LS01:Z4:I1.VAL")
5415 field(OUTA,
"$(P):LS01:Z4:I_S1.VAL PP")
5416 field(FLNK,
"$(P):LS01:Z4:INITD1.PROC")
5419 field(OMSL,
"closed_loop")
5420 field(DOL,
"$(P):LS01:Z4:D1.VAL")
5421 field(OUTA,
"$(P):LS01:Z4:D_S1.VAL PP")
5422 field(FLNK,
"$(P):LS01:Z4:INITMOUT1.PROC")
5425 field(OMSL,
"closed_loop")
5426 field(DOL,
"$(P):LS01:Z4:MOUT1.VAL")
5427 field(OUTA,
"$(P):LS01:Z4:MOUT_S1.VAL PP")
5428 field(FLNK,
"$(P):LS01:Z4:INITRANGE1.PROC")
5431 field(OMSL,
"closed_loop")
5432 field(DOL,
"$(P):LS01:Z4:RANGE1.VAL")
5433 field(OUTA,
"$(P):LS01:Z4:RANGE_S1.VAL PP")
5434 field(FLNK,
"$(P):LS01:Z4:INITINPUT1.PROC")
5437 field(OMSL,
"closed_loop")
5438 field(DOL,
"$(P):LS01:Z4:INPUT1.VAL")
5439 field(OUTA,
"$(P):LS01:Z4:INPUT_S1.VAL PP")
5440 field(FLNK,
"$(P):LS01:Z4:INITRATE1.PROC")
5443 field(OMSL,
"closed_loop")
5444 field(DOL,
"$(P):LS01:Z4:RATE1.VAL")
5445 field(OUTA,
"$(P):LS01:Z4:RATE_S1.VAL PP")
5446 field(FLNK,
"$(P):LS01:Z4:INITCOUNT1.PROC")
5451 field(OUTA,
"$(P):LS01:Z4:INITCALC1.A")
5456 #############################################
5457 # Write records. There is a calcout record to
5458 # do the actual write.
5459 #############################################
5462 ## Set the ZONE upper boundary setting.
5465 field(SCAN,
"Passive")
5467 field(SDIS,
"$(P):LS01:DISABLE")
5471 ## Set the ZONE P setting.
5474 field(SCAN,
"Passive")
5476 field(SDIS,
"$(P):LS01:DISABLE")
5480 ## Set the ZONE I setting.
5483 field(SCAN,
"Passive")
5485 field(SDIS,
"$(P):LS01:DISABLE")
5489 ## Set the ZONE D setting.
5492 field(SCAN,
"Passive")
5494 field(SDIS,
"$(P):LS01:DISABLE")
5498 ## Set the ZONE MOUT setting.
5501 field(SCAN,
"Passive")
5503 field(SDIS,
"$(P):LS01:DISABLE")
5507 ## Set the ZONE RANGE setting.
5510 field(SCAN,
"Passive")
5513 field(ONST,
"Range1/Low")
5515 field(TWST,
"Range2/Medium")
5517 field(THST,
"Range3/High")
5519 field(FRST,
"Range4")
5521 field(FVST,
"Range5")
5523 field(SDIS,
"$(P):LS01:DISABLE")
5527 ## Set the ZONE INPUT setting.
5532 field(ONST,
"Input A")
5534 field(TWST,
"Input B")
5536 field(THST,
"Input C")
5538 field(FRST,
"Input D")
5540 field(FVST,
"Input D2")
5542 field(SXST,
"Input D3")
5544 field(SVST,
"Input D4")
5546 field(EIST,
"Input D5")
5548 field(SDIS,
"$(P):LS01:DISABLE")
5552 ## Set the ZONE RATE setting.
5555 field(SCAN,
"Passive")
5557 field(SDIS,
"$(P):LS01:DISABLE")
5561 ## Record to write the ZONE parameters.
5564 field(INPA,
"$(P):LS01:Z4:UB_S1")
5565 field(INPB,
"$(P):LS01:Z4:P_S1")
5566 field(INPC,
"$(P):LS01:Z4:I_S1")
5567 field(INPD,
"$(P):LS01:Z4:D_S1")
5568 field(INPE,
"$(P):LS01:Z4:MOUT_S1")
5569 field(INPF,
"$(P):LS01:Z4:RANGE_S1")
5570 field(INPG,
"$(P):LS01:Z4:INPUT_S1")
5571 field(INPH,
"$(P):LS01:Z4:RATE_S1")
5573 field(DTYP,
"stream")
5574 field(OUT,
"@ls336.proto setZONE(1,4) L0 0")
5575 field(SDIS,
"$(P):LS01:DISABLE")
5576 field(FLNK,
"$(P):LS01:Z4:ALL1.PROC")
5588 #######################################
5590 # Template to support reading and setting
5591 # controller ZONE parameters. It reads the ZONE
5592 # parameters into an array, then uses subArrays to
5593 # extract each parameter.
5595 # This template is used by the output template
5596 # and it needs the following macros:
5599 # OUT: output number
5601 #######################################
5604 ## Read the ZONE setting into an array (8 values)
5607 field(DTYP,
"stream")
5608 field(SDIS,
"$(P):LS01:DISABLE_POLL")
5609 field(INP,
"@ls336.proto getZONE(1,5) L0 0")
5610 field(SCAN,
"Passive")
5612 field(FTVL,
"DOUBLE")
5614 field(FLNK,
"$(P):LS01:Z5:UB1:ARRAY.PROC")
5618 ## Read the ZONE upper boundary setting.
5621 field(SCAN,
"Passive")
5622 field(FTVL,
"DOUBLE")
5623 field(INP,
"$(P):LS01:Z5:ALL1.VAL MS")
5628 field(FLNK,
"$(P):LS01:Z5:UB1.PROC")
5631 field(SCAN,
"Passive")
5632 field(INP,
"$(P):LS01:Z5:UB1:ARRAY.VAL MS")
5634 field(FLNK,
"$(P):LS01:Z5:P1:ARRAY.PROC")
5638 ## Read the ZONE P setting.
5641 field(SCAN,
"Passive")
5642 field(FTVL,
"DOUBLE")
5643 field(INP,
"$(P):LS01:Z5:ALL1.VAL MS")
5648 field(FLNK,
"$(P):LS01:Z5:P1.PROC")
5651 field(SCAN,
"Passive")
5652 field(INP,
"$(P):LS01:Z5:P1:ARRAY.VAL MS")
5654 field(FLNK,
"$(P):LS01:Z5:I1:ARRAY.PROC")
5658 ## Read the ZONE I setting.
5661 field(SCAN,
"Passive")
5662 field(FTVL,
"DOUBLE")
5663 field(INP,
"$(P):LS01:Z5:ALL1.VAL MS")
5668 field(FLNK,
"$(P):LS01:Z5:I1.PROC")
5671 field(SCAN,
"Passive")
5672 field(INP,
"$(P):LS01:Z5:I1:ARRAY.VAL MS")
5674 field(FLNK,
"$(P):LS01:Z5:D1:ARRAY.PROC")
5678 ## Read the ZONE D setting.
5681 field(SCAN,
"Passive")
5682 field(FTVL,
"DOUBLE")
5683 field(INP,
"$(P):LS01:Z5:ALL1.VAL MS")
5688 field(FLNK,
"$(P):LS01:Z5:D1.PROC")
5691 field(SCAN,
"Passive")
5692 field(INP,
"$(P):LS01:Z5:D1:ARRAY.VAL MS")
5694 field(FLNK,
"$(P):LS01:Z5:MOUT1:ARRAY.PROC")
5698 ## Read the ZONE MOUT setting.
5700 record(subArray,
"$(P):LS01:Z5:MOUT1:ARRAY") {
5701 field(SCAN,
"Passive")
5702 field(FTVL,
"DOUBLE")
5703 field(INP,
"$(P):LS01:Z5:ALL1.VAL MS")
5708 field(FLNK,
"$(P):LS01:Z5:MOUT1.PROC")
5711 field(SCAN,
"Passive")
5712 field(INP,
"$(P):LS01:Z5:MOUT1:ARRAY.VAL MS")
5714 field(FLNK,
"$(P):LS01:Z5:RANGE1:ARRAY.PROC")
5718 ## Read the ZONE RANGE setting.
5720 record(subArray,
"$(P):LS01:Z5:RANGE1:ARRAY") {
5721 field(SCAN,
"Passive")
5722 field(FTVL,
"DOUBLE")
5723 field(INP,
"$(P):LS01:Z5:ALL1.VAL MS")
5728 field(FLNK,
"$(P):LS01:Z5:RANGE1.PROC")
5731 field(INP,
"$(P):LS01:Z5:RANGE1:ARRAY.VAL")
5732 field(SCAN,
"Passive")
5735 field(ONST,
"Range1/Low")
5737 field(TWST,
"Range2/Medium")
5739 field(THST,
"Range3/High")
5741 field(FRST,
"Range4")
5743 field(FVST,
"Range5")
5745 field(FLNK,
"$(P):LS01:Z5:INPUT1:ARRAY.PROC")
5749 ## Read the ZONE INPUT setting.
5751 record(subArray,
"$(P):LS01:Z5:INPUT1:ARRAY") {
5752 field(SCAN,
"Passive")
5753 field(FTVL,
"DOUBLE")
5754 field(INP,
"$(P):LS01:Z5:ALL1.VAL MS")
5759 field(FLNK,
"$(P):LS01:Z5:INPUT1.PROC")
5762 field(INP,
"$(P):LS01:Z5:INPUT1:ARRAY.VAL")
5763 field(SCAN,
"Passive")
5766 field(ONST,
"Input A")
5768 field(TWST,
"Input B")
5770 field(THST,
"Input C")
5772 field(FRST,
"Input D")
5774 field(FVST,
"Input D2")
5776 field(SXST,
"Input D3")
5778 field(SVST,
"Input D4")
5780 field(EIST,
"Input D5")
5782 field(FLNK,
"$(P):LS01:Z5:RATE1:ARRAY.PROC")
5786 ## Read the ZONE RATE setting.
5788 record(subArray,
"$(P):LS01:Z5:RATE1:ARRAY") {
5789 field(SCAN,
"Passive")
5790 field(FTVL,
"DOUBLE")
5791 field(INP,
"$(P):LS01:Z5:ALL1.VAL MS")
5796 field(FLNK,
"$(P):LS01:Z5:RATE1.PROC")
5799 field(SCAN,
"Passive")
5800 field(INP,
"$(P):LS01:Z5:RATE1:ARRAY.VAL MS")
5802 field(FLNK,
"$(P):LS01:Z5:INITCALC1.PROC")
5805 ##############################################################
5807 ## Populate the write records below with the current values.
5808 ## Only do this once at startup.
5810 ###############################################################
5816 field(DOPT,
"Use OCAL")
5817 field(OOPT,
"When Zero")
5819 field(OUT,
"$(P):LS01:Z5:INITUB1.PROC")
5823 field(OMSL,
"closed_loop")
5824 field(DOL,
"$(P):LS01:Z5:UB1.VAL")
5825 field(OUTA,
"$(P):LS01:Z5:UB_S1.VAL PP")
5826 field(FLNK,
"$(P):LS01:Z5:INITP1.PROC")
5829 field(OMSL,
"closed_loop")
5830 field(DOL,
"$(P):LS01:Z5:P1.VAL")
5831 field(OUTA,
"$(P):LS01:Z5:P_S1.VAL PP")
5832 field(FLNK,
"$(P):LS01:Z5:INITI1.PROC")
5835 field(OMSL,
"closed_loop")
5836 field(DOL,
"$(P):LS01:Z5:I1.VAL")
5837 field(OUTA,
"$(P):LS01:Z5:I_S1.VAL PP")
5838 field(FLNK,
"$(P):LS01:Z5:INITD1.PROC")
5841 field(OMSL,
"closed_loop")
5842 field(DOL,
"$(P):LS01:Z5:D1.VAL")
5843 field(OUTA,
"$(P):LS01:Z5:D_S1.VAL PP")
5844 field(FLNK,
"$(P):LS01:Z5:INITMOUT1.PROC")
5847 field(OMSL,
"closed_loop")
5848 field(DOL,
"$(P):LS01:Z5:MOUT1.VAL")
5849 field(OUTA,
"$(P):LS01:Z5:MOUT_S1.VAL PP")
5850 field(FLNK,
"$(P):LS01:Z5:INITRANGE1.PROC")
5853 field(OMSL,
"closed_loop")
5854 field(DOL,
"$(P):LS01:Z5:RANGE1.VAL")
5855 field(OUTA,
"$(P):LS01:Z5:RANGE_S1.VAL PP")
5856 field(FLNK,
"$(P):LS01:Z5:INITINPUT1.PROC")
5859 field(OMSL,
"closed_loop")
5860 field(DOL,
"$(P):LS01:Z5:INPUT1.VAL")
5861 field(OUTA,
"$(P):LS01:Z5:INPUT_S1.VAL PP")
5862 field(FLNK,
"$(P):LS01:Z5:INITRATE1.PROC")
5865 field(OMSL,
"closed_loop")
5866 field(DOL,
"$(P):LS01:Z5:RATE1.VAL")
5867 field(OUTA,
"$(P):LS01:Z5:RATE_S1.VAL PP")
5868 field(FLNK,
"$(P):LS01:Z5:INITCOUNT1.PROC")
5873 field(OUTA,
"$(P):LS01:Z5:INITCALC1.A")
5878 #############################################
5879 # Write records. There is a calcout record to
5880 # do the actual write.
5881 #############################################
5884 ## Set the ZONE upper boundary setting.
5887 field(SCAN,
"Passive")
5889 field(SDIS,
"$(P):LS01:DISABLE")
5893 ## Set the ZONE P setting.
5896 field(SCAN,
"Passive")
5898 field(SDIS,
"$(P):LS01:DISABLE")
5902 ## Set the ZONE I setting.
5905 field(SCAN,
"Passive")
5907 field(SDIS,
"$(P):LS01:DISABLE")
5911 ## Set the ZONE D setting.
5914 field(SCAN,
"Passive")
5916 field(SDIS,
"$(P):LS01:DISABLE")
5920 ## Set the ZONE MOUT setting.
5923 field(SCAN,
"Passive")
5925 field(SDIS,
"$(P):LS01:DISABLE")
5929 ## Set the ZONE RANGE setting.
5932 field(SCAN,
"Passive")
5935 field(ONST,
"Range1/Low")
5937 field(TWST,
"Range2/Medium")
5939 field(THST,
"Range3/High")
5941 field(FRST,
"Range4")
5943 field(FVST,
"Range5")
5945 field(SDIS,
"$(P):LS01:DISABLE")
5949 ## Set the ZONE INPUT setting.
5954 field(ONST,
"Input A")
5956 field(TWST,
"Input B")
5958 field(THST,
"Input C")
5960 field(FRST,
"Input D")
5962 field(FVST,
"Input D2")
5964 field(SXST,
"Input D3")
5966 field(SVST,
"Input D4")
5968 field(EIST,
"Input D5")
5970 field(SDIS,
"$(P):LS01:DISABLE")
5974 ## Set the ZONE RATE setting.
5977 field(SCAN,
"Passive")
5979 field(SDIS,
"$(P):LS01:DISABLE")
5983 ## Record to write the ZONE parameters.
5986 field(INPA,
"$(P):LS01:Z5:UB_S1")
5987 field(INPB,
"$(P):LS01:Z5:P_S1")
5988 field(INPC,
"$(P):LS01:Z5:I_S1")
5989 field(INPD,
"$(P):LS01:Z5:D_S1")
5990 field(INPE,
"$(P):LS01:Z5:MOUT_S1")
5991 field(INPF,
"$(P):LS01:Z5:RANGE_S1")
5992 field(INPG,
"$(P):LS01:Z5:INPUT_S1")
5993 field(INPH,
"$(P):LS01:Z5:RATE_S1")
5995 field(DTYP,
"stream")
5996 field(OUT,
"@ls336.proto setZONE(1,5) L0 0")
5997 field(SDIS,
"$(P):LS01:DISABLE")
5998 field(FLNK,
"$(P):LS01:Z5:ALL1.PROC")
6010 #######################################
6012 # Template to support reading and setting
6013 # controller ZONE parameters. It reads the ZONE
6014 # parameters into an array, then uses subArrays to
6015 # extract each parameter.
6017 # This template is used by the output template
6018 # and it needs the following macros:
6021 # OUT: output number
6023 #######################################
6026 ## Read the ZONE setting into an array (8 values)
6029 field(DTYP,
"stream")
6030 field(SDIS,
"$(P):LS01:DISABLE_POLL")
6031 field(INP,
"@ls336.proto getZONE(1,6) L0 0")
6032 field(SCAN,
"Passive")
6034 field(FTVL,
"DOUBLE")
6036 field(FLNK,
"$(P):LS01:Z6:UB1:ARRAY.PROC")
6040 ## Read the ZONE upper boundary setting.
6043 field(SCAN,
"Passive")
6044 field(FTVL,
"DOUBLE")
6045 field(INP,
"$(P):LS01:Z6:ALL1.VAL MS")
6050 field(FLNK,
"$(P):LS01:Z6:UB1.PROC")
6053 field(SCAN,
"Passive")
6054 field(INP,
"$(P):LS01:Z6:UB1:ARRAY.VAL MS")
6056 field(FLNK,
"$(P):LS01:Z6:P1:ARRAY.PROC")
6060 ## Read the ZONE P setting.
6063 field(SCAN,
"Passive")
6064 field(FTVL,
"DOUBLE")
6065 field(INP,
"$(P):LS01:Z6:ALL1.VAL MS")
6070 field(FLNK,
"$(P):LS01:Z6:P1.PROC")
6073 field(SCAN,
"Passive")
6074 field(INP,
"$(P):LS01:Z6:P1:ARRAY.VAL MS")
6076 field(FLNK,
"$(P):LS01:Z6:I1:ARRAY.PROC")
6080 ## Read the ZONE I setting.
6083 field(SCAN,
"Passive")
6084 field(FTVL,
"DOUBLE")
6085 field(INP,
"$(P):LS01:Z6:ALL1.VAL MS")
6090 field(FLNK,
"$(P):LS01:Z6:I1.PROC")
6093 field(SCAN,
"Passive")
6094 field(INP,
"$(P):LS01:Z6:I1:ARRAY.VAL MS")
6096 field(FLNK,
"$(P):LS01:Z6:D1:ARRAY.PROC")
6100 ## Read the ZONE D setting.
6103 field(SCAN,
"Passive")
6104 field(FTVL,
"DOUBLE")
6105 field(INP,
"$(P):LS01:Z6:ALL1.VAL MS")
6110 field(FLNK,
"$(P):LS01:Z6:D1.PROC")
6113 field(SCAN,
"Passive")
6114 field(INP,
"$(P):LS01:Z6:D1:ARRAY.VAL MS")
6116 field(FLNK,
"$(P):LS01:Z6:MOUT1:ARRAY.PROC")
6120 ## Read the ZONE MOUT setting.
6122 record(subArray,
"$(P):LS01:Z6:MOUT1:ARRAY") {
6123 field(SCAN,
"Passive")
6124 field(FTVL,
"DOUBLE")
6125 field(INP,
"$(P):LS01:Z6:ALL1.VAL MS")
6130 field(FLNK,
"$(P):LS01:Z6:MOUT1.PROC")
6133 field(SCAN,
"Passive")
6134 field(INP,
"$(P):LS01:Z6:MOUT1:ARRAY.VAL MS")
6136 field(FLNK,
"$(P):LS01:Z6:RANGE1:ARRAY.PROC")
6140 ## Read the ZONE RANGE setting.
6142 record(subArray,
"$(P):LS01:Z6:RANGE1:ARRAY") {
6143 field(SCAN,
"Passive")
6144 field(FTVL,
"DOUBLE")
6145 field(INP,
"$(P):LS01:Z6:ALL1.VAL MS")
6150 field(FLNK,
"$(P):LS01:Z6:RANGE1.PROC")
6153 field(INP,
"$(P):LS01:Z6:RANGE1:ARRAY.VAL")
6154 field(SCAN,
"Passive")
6157 field(ONST,
"Range1/Low")
6159 field(TWST,
"Range2/Medium")
6161 field(THST,
"Range3/High")
6163 field(FRST,
"Range4")
6165 field(FVST,
"Range5")
6167 field(FLNK,
"$(P):LS01:Z6:INPUT1:ARRAY.PROC")
6171 ## Read the ZONE INPUT setting.
6173 record(subArray,
"$(P):LS01:Z6:INPUT1:ARRAY") {
6174 field(SCAN,
"Passive")
6175 field(FTVL,
"DOUBLE")
6176 field(INP,
"$(P):LS01:Z6:ALL1.VAL MS")
6181 field(FLNK,
"$(P):LS01:Z6:INPUT1.PROC")
6184 field(INP,
"$(P):LS01:Z6:INPUT1:ARRAY.VAL")
6185 field(SCAN,
"Passive")
6188 field(ONST,
"Input A")
6190 field(TWST,
"Input B")
6192 field(THST,
"Input C")
6194 field(FRST,
"Input D")
6196 field(FVST,
"Input D2")
6198 field(SXST,
"Input D3")
6200 field(SVST,
"Input D4")
6202 field(EIST,
"Input D5")
6204 field(FLNK,
"$(P):LS01:Z6:RATE1:ARRAY.PROC")
6208 ## Read the ZONE RATE setting.
6210 record(subArray,
"$(P):LS01:Z6:RATE1:ARRAY") {
6211 field(SCAN,
"Passive")
6212 field(FTVL,
"DOUBLE")
6213 field(INP,
"$(P):LS01:Z6:ALL1.VAL MS")
6218 field(FLNK,
"$(P):LS01:Z6:RATE1.PROC")
6221 field(SCAN,
"Passive")
6222 field(INP,
"$(P):LS01:Z6:RATE1:ARRAY.VAL MS")
6224 field(FLNK,
"$(P):LS01:Z6:INITCALC1.PROC")
6227 ##############################################################
6229 ## Populate the write records below with the current values.
6230 ## Only do this once at startup.
6232 ###############################################################
6238 field(DOPT,
"Use OCAL")
6239 field(OOPT,
"When Zero")
6241 field(OUT,
"$(P):LS01:Z6:INITUB1.PROC")
6245 field(OMSL,
"closed_loop")
6246 field(DOL,
"$(P):LS01:Z6:UB1.VAL")
6247 field(OUTA,
"$(P):LS01:Z6:UB_S1.VAL PP")
6248 field(FLNK,
"$(P):LS01:Z6:INITP1.PROC")
6251 field(OMSL,
"closed_loop")
6252 field(DOL,
"$(P):LS01:Z6:P1.VAL")
6253 field(OUTA,
"$(P):LS01:Z6:P_S1.VAL PP")
6254 field(FLNK,
"$(P):LS01:Z6:INITI1.PROC")
6257 field(OMSL,
"closed_loop")
6258 field(DOL,
"$(P):LS01:Z6:I1.VAL")
6259 field(OUTA,
"$(P):LS01:Z6:I_S1.VAL PP")
6260 field(FLNK,
"$(P):LS01:Z6:INITD1.PROC")
6263 field(OMSL,
"closed_loop")
6264 field(DOL,
"$(P):LS01:Z6:D1.VAL")
6265 field(OUTA,
"$(P):LS01:Z6:D_S1.VAL PP")
6266 field(FLNK,
"$(P):LS01:Z6:INITMOUT1.PROC")
6269 field(OMSL,
"closed_loop")
6270 field(DOL,
"$(P):LS01:Z6:MOUT1.VAL")
6271 field(OUTA,
"$(P):LS01:Z6:MOUT_S1.VAL PP")
6272 field(FLNK,
"$(P):LS01:Z6:INITRANGE1.PROC")
6275 field(OMSL,
"closed_loop")
6276 field(DOL,
"$(P):LS01:Z6:RANGE1.VAL")
6277 field(OUTA,
"$(P):LS01:Z6:RANGE_S1.VAL PP")
6278 field(FLNK,
"$(P):LS01:Z6:INITINPUT1.PROC")
6281 field(OMSL,
"closed_loop")
6282 field(DOL,
"$(P):LS01:Z6:INPUT1.VAL")
6283 field(OUTA,
"$(P):LS01:Z6:INPUT_S1.VAL PP")
6284 field(FLNK,
"$(P):LS01:Z6:INITRATE1.PROC")
6287 field(OMSL,
"closed_loop")
6288 field(DOL,
"$(P):LS01:Z6:RATE1.VAL")
6289 field(OUTA,
"$(P):LS01:Z6:RATE_S1.VAL PP")
6290 field(FLNK,
"$(P):LS01:Z6:INITCOUNT1.PROC")
6295 field(OUTA,
"$(P):LS01:Z6:INITCALC1.A")
6300 #############################################
6301 # Write records. There is a calcout record to
6302 # do the actual write.
6303 #############################################
6306 ## Set the ZONE upper boundary setting.
6309 field(SCAN,
"Passive")
6311 field(SDIS,
"$(P):LS01:DISABLE")
6315 ## Set the ZONE P setting.
6318 field(SCAN,
"Passive")
6320 field(SDIS,
"$(P):LS01:DISABLE")
6324 ## Set the ZONE I setting.
6327 field(SCAN,
"Passive")
6329 field(SDIS,
"$(P):LS01:DISABLE")
6333 ## Set the ZONE D setting.
6336 field(SCAN,
"Passive")
6338 field(SDIS,
"$(P):LS01:DISABLE")
6342 ## Set the ZONE MOUT setting.
6345 field(SCAN,
"Passive")
6347 field(SDIS,
"$(P):LS01:DISABLE")
6351 ## Set the ZONE RANGE setting.
6354 field(SCAN,
"Passive")
6357 field(ONST,
"Range1/Low")
6359 field(TWST,
"Range2/Medium")
6361 field(THST,
"Range3/High")
6363 field(FRST,
"Range4")
6365 field(FVST,
"Range5")
6367 field(SDIS,
"$(P):LS01:DISABLE")
6371 ## Set the ZONE INPUT setting.
6376 field(ONST,
"Input A")
6378 field(TWST,
"Input B")
6380 field(THST,
"Input C")
6382 field(FRST,
"Input D")
6384 field(FVST,
"Input D2")
6386 field(SXST,
"Input D3")
6388 field(SVST,
"Input D4")
6390 field(EIST,
"Input D5")
6392 field(SDIS,
"$(P):LS01:DISABLE")
6396 ## Set the ZONE RATE setting.
6399 field(SCAN,
"Passive")
6401 field(SDIS,
"$(P):LS01:DISABLE")
6405 ## Record to write the ZONE parameters.
6408 field(INPA,
"$(P):LS01:Z6:UB_S1")
6409 field(INPB,
"$(P):LS01:Z6:P_S1")
6410 field(INPC,
"$(P):LS01:Z6:I_S1")
6411 field(INPD,
"$(P):LS01:Z6:D_S1")
6412 field(INPE,
"$(P):LS01:Z6:MOUT_S1")
6413 field(INPF,
"$(P):LS01:Z6:RANGE_S1")
6414 field(INPG,
"$(P):LS01:Z6:INPUT_S1")
6415 field(INPH,
"$(P):LS01:Z6:RATE_S1")
6417 field(DTYP,
"stream")
6418 field(OUT,
"@ls336.proto setZONE(1,6) L0 0")
6419 field(SDIS,
"$(P):LS01:DISABLE")
6420 field(FLNK,
"$(P):LS01:Z6:ALL1.PROC")
6432 #######################################
6434 # Template to support reading and setting
6435 # controller ZONE parameters. It reads the ZONE
6436 # parameters into an array, then uses subArrays to
6437 # extract each parameter.
6439 # This template is used by the output template
6440 # and it needs the following macros:
6443 # OUT: output number
6445 #######################################
6448 ## Read the ZONE setting into an array (8 values)
6451 field(DTYP,
"stream")
6452 field(SDIS,
"$(P):LS01:DISABLE_POLL")
6453 field(INP,
"@ls336.proto getZONE(1,7) L0 0")
6454 field(SCAN,
"Passive")
6456 field(FTVL,
"DOUBLE")
6458 field(FLNK,
"$(P):LS01:Z7:UB1:ARRAY.PROC")
6462 ## Read the ZONE upper boundary setting.
6465 field(SCAN,
"Passive")
6466 field(FTVL,
"DOUBLE")
6467 field(INP,
"$(P):LS01:Z7:ALL1.VAL MS")
6472 field(FLNK,
"$(P):LS01:Z7:UB1.PROC")
6475 field(SCAN,
"Passive")
6476 field(INP,
"$(P):LS01:Z7:UB1:ARRAY.VAL MS")
6478 field(FLNK,
"$(P):LS01:Z7:P1:ARRAY.PROC")
6482 ## Read the ZONE P setting.
6485 field(SCAN,
"Passive")
6486 field(FTVL,
"DOUBLE")
6487 field(INP,
"$(P):LS01:Z7:ALL1.VAL MS")
6492 field(FLNK,
"$(P):LS01:Z7:P1.PROC")
6495 field(SCAN,
"Passive")
6496 field(INP,
"$(P):LS01:Z7:P1:ARRAY.VAL MS")
6498 field(FLNK,
"$(P):LS01:Z7:I1:ARRAY.PROC")
6502 ## Read the ZONE I setting.
6505 field(SCAN,
"Passive")
6506 field(FTVL,
"DOUBLE")
6507 field(INP,
"$(P):LS01:Z7:ALL1.VAL MS")
6512 field(FLNK,
"$(P):LS01:Z7:I1.PROC")
6515 field(SCAN,
"Passive")
6516 field(INP,
"$(P):LS01:Z7:I1:ARRAY.VAL MS")
6518 field(FLNK,
"$(P):LS01:Z7:D1:ARRAY.PROC")
6522 ## Read the ZONE D setting.
6525 field(SCAN,
"Passive")
6526 field(FTVL,
"DOUBLE")
6527 field(INP,
"$(P):LS01:Z7:ALL1.VAL MS")
6532 field(FLNK,
"$(P):LS01:Z7:D1.PROC")
6535 field(SCAN,
"Passive")
6536 field(INP,
"$(P):LS01:Z7:D1:ARRAY.VAL MS")
6538 field(FLNK,
"$(P):LS01:Z7:MOUT1:ARRAY.PROC")
6542 ## Read the ZONE MOUT setting.
6544 record(subArray,
"$(P):LS01:Z7:MOUT1:ARRAY") {
6545 field(SCAN,
"Passive")
6546 field(FTVL,
"DOUBLE")
6547 field(INP,
"$(P):LS01:Z7:ALL1.VAL MS")
6552 field(FLNK,
"$(P):LS01:Z7:MOUT1.PROC")
6555 field(SCAN,
"Passive")
6556 field(INP,
"$(P):LS01:Z7:MOUT1:ARRAY.VAL MS")
6558 field(FLNK,
"$(P):LS01:Z7:RANGE1:ARRAY.PROC")
6562 ## Read the ZONE RANGE setting.
6564 record(subArray,
"$(P):LS01:Z7:RANGE1:ARRAY") {
6565 field(SCAN,
"Passive")
6566 field(FTVL,
"DOUBLE")
6567 field(INP,
"$(P):LS01:Z7:ALL1.VAL MS")
6572 field(FLNK,
"$(P):LS01:Z7:RANGE1.PROC")
6575 field(INP,
"$(P):LS01:Z7:RANGE1:ARRAY.VAL")
6576 field(SCAN,
"Passive")
6579 field(ONST,
"Range1/Low")
6581 field(TWST,
"Range2/Medium")
6583 field(THST,
"Range3/High")
6585 field(FRST,
"Range4")
6587 field(FVST,
"Range5")
6589 field(FLNK,
"$(P):LS01:Z7:INPUT1:ARRAY.PROC")
6593 ## Read the ZONE INPUT setting.
6595 record(subArray,
"$(P):LS01:Z7:INPUT1:ARRAY") {
6596 field(SCAN,
"Passive")
6597 field(FTVL,
"DOUBLE")
6598 field(INP,
"$(P):LS01:Z7:ALL1.VAL MS")
6603 field(FLNK,
"$(P):LS01:Z7:INPUT1.PROC")
6606 field(INP,
"$(P):LS01:Z7:INPUT1:ARRAY.VAL")
6607 field(SCAN,
"Passive")
6610 field(ONST,
"Input A")
6612 field(TWST,
"Input B")
6614 field(THST,
"Input C")
6616 field(FRST,
"Input D")
6618 field(FVST,
"Input D2")
6620 field(SXST,
"Input D3")
6622 field(SVST,
"Input D4")
6624 field(EIST,
"Input D5")
6626 field(FLNK,
"$(P):LS01:Z7:RATE1:ARRAY.PROC")
6630 ## Read the ZONE RATE setting.
6632 record(subArray,
"$(P):LS01:Z7:RATE1:ARRAY") {
6633 field(SCAN,
"Passive")
6634 field(FTVL,
"DOUBLE")
6635 field(INP,
"$(P):LS01:Z7:ALL1.VAL MS")
6640 field(FLNK,
"$(P):LS01:Z7:RATE1.PROC")
6643 field(SCAN,
"Passive")
6644 field(INP,
"$(P):LS01:Z7:RATE1:ARRAY.VAL MS")
6646 field(FLNK,
"$(P):LS01:Z7:INITCALC1.PROC")
6649 ##############################################################
6651 ## Populate the write records below with the current values.
6652 ## Only do this once at startup.
6654 ###############################################################
6660 field(DOPT,
"Use OCAL")
6661 field(OOPT,
"When Zero")
6663 field(OUT,
"$(P):LS01:Z7:INITUB1.PROC")
6667 field(OMSL,
"closed_loop")
6668 field(DOL,
"$(P):LS01:Z7:UB1.VAL")
6669 field(OUTA,
"$(P):LS01:Z7:UB_S1.VAL PP")
6670 field(FLNK,
"$(P):LS01:Z7:INITP1.PROC")
6673 field(OMSL,
"closed_loop")
6674 field(DOL,
"$(P):LS01:Z7:P1.VAL")
6675 field(OUTA,
"$(P):LS01:Z7:P_S1.VAL PP")
6676 field(FLNK,
"$(P):LS01:Z7:INITI1.PROC")
6679 field(OMSL,
"closed_loop")
6680 field(DOL,
"$(P):LS01:Z7:I1.VAL")
6681 field(OUTA,
"$(P):LS01:Z7:I_S1.VAL PP")
6682 field(FLNK,
"$(P):LS01:Z7:INITD1.PROC")
6685 field(OMSL,
"closed_loop")
6686 field(DOL,
"$(P):LS01:Z7:D1.VAL")
6687 field(OUTA,
"$(P):LS01:Z7:D_S1.VAL PP")
6688 field(FLNK,
"$(P):LS01:Z7:INITMOUT1.PROC")
6691 field(OMSL,
"closed_loop")
6692 field(DOL,
"$(P):LS01:Z7:MOUT1.VAL")
6693 field(OUTA,
"$(P):LS01:Z7:MOUT_S1.VAL PP")
6694 field(FLNK,
"$(P):LS01:Z7:INITRANGE1.PROC")
6697 field(OMSL,
"closed_loop")
6698 field(DOL,
"$(P):LS01:Z7:RANGE1.VAL")
6699 field(OUTA,
"$(P):LS01:Z7:RANGE_S1.VAL PP")
6700 field(FLNK,
"$(P):LS01:Z7:INITINPUT1.PROC")
6703 field(OMSL,
"closed_loop")
6704 field(DOL,
"$(P):LS01:Z7:INPUT1.VAL")
6705 field(OUTA,
"$(P):LS01:Z7:INPUT_S1.VAL PP")
6706 field(FLNK,
"$(P):LS01:Z7:INITRATE1.PROC")
6709 field(OMSL,
"closed_loop")
6710 field(DOL,
"$(P):LS01:Z7:RATE1.VAL")
6711 field(OUTA,
"$(P):LS01:Z7:RATE_S1.VAL PP")
6712 field(FLNK,
"$(P):LS01:Z7:INITCOUNT1.PROC")
6717 field(OUTA,
"$(P):LS01:Z7:INITCALC1.A")
6722 #############################################
6723 # Write records. There is a calcout record to
6724 # do the actual write.
6725 #############################################
6728 ## Set the ZONE upper boundary setting.
6731 field(SCAN,
"Passive")
6733 field(SDIS,
"$(P):LS01:DISABLE")
6737 ## Set the ZONE P setting.
6740 field(SCAN,
"Passive")
6742 field(SDIS,
"$(P):LS01:DISABLE")
6746 ## Set the ZONE I setting.
6749 field(SCAN,
"Passive")
6751 field(SDIS,
"$(P):LS01:DISABLE")
6755 ## Set the ZONE D setting.
6758 field(SCAN,
"Passive")
6760 field(SDIS,
"$(P):LS01:DISABLE")
6764 ## Set the ZONE MOUT setting.
6767 field(SCAN,
"Passive")
6769 field(SDIS,
"$(P):LS01:DISABLE")
6773 ## Set the ZONE RANGE setting.
6776 field(SCAN,
"Passive")
6779 field(ONST,
"Range1/Low")
6781 field(TWST,
"Range2/Medium")
6783 field(THST,
"Range3/High")
6785 field(FRST,
"Range4")
6787 field(FVST,
"Range5")
6789 field(SDIS,
"$(P):LS01:DISABLE")
6793 ## Set the ZONE INPUT setting.
6798 field(ONST,
"Input A")
6800 field(TWST,
"Input B")
6802 field(THST,
"Input C")
6804 field(FRST,
"Input D")
6806 field(FVST,
"Input D2")
6808 field(SXST,
"Input D3")
6810 field(SVST,
"Input D4")
6812 field(EIST,
"Input D5")
6814 field(SDIS,
"$(P):LS01:DISABLE")
6818 ## Set the ZONE RATE setting.
6821 field(SCAN,
"Passive")
6823 field(SDIS,
"$(P):LS01:DISABLE")
6827 ## Record to write the ZONE parameters.
6830 field(INPA,
"$(P):LS01:Z7:UB_S1")
6831 field(INPB,
"$(P):LS01:Z7:P_S1")
6832 field(INPC,
"$(P):LS01:Z7:I_S1")
6833 field(INPD,
"$(P):LS01:Z7:D_S1")
6834 field(INPE,
"$(P):LS01:Z7:MOUT_S1")
6835 field(INPF,
"$(P):LS01:Z7:RANGE_S1")
6836 field(INPG,
"$(P):LS01:Z7:INPUT_S1")
6837 field(INPH,
"$(P):LS01:Z7:RATE_S1")
6839 field(DTYP,
"stream")
6840 field(OUT,
"@ls336.proto setZONE(1,7) L0 0")
6841 field(SDIS,
"$(P):LS01:DISABLE")
6842 field(FLNK,
"$(P):LS01:Z7:ALL1.PROC")
6854 #######################################
6856 # Template to support reading and setting
6857 # controller ZONE parameters. It reads the ZONE
6858 # parameters into an array, then uses subArrays to
6859 # extract each parameter.
6861 # This template is used by the output template
6862 # and it needs the following macros:
6865 # OUT: output number
6867 #######################################
6870 ## Read the ZONE setting into an array (8 values)
6873 field(DTYP,
"stream")
6874 field(SDIS,
"$(P):LS01:DISABLE_POLL")
6875 field(INP,
"@ls336.proto getZONE(1,8) L0 0")
6876 field(SCAN,
"Passive")
6878 field(FTVL,
"DOUBLE")
6880 field(FLNK,
"$(P):LS01:Z8:UB1:ARRAY.PROC")
6884 ## Read the ZONE upper boundary setting.
6887 field(SCAN,
"Passive")
6888 field(FTVL,
"DOUBLE")
6889 field(INP,
"$(P):LS01:Z8:ALL1.VAL MS")
6894 field(FLNK,
"$(P):LS01:Z8:UB1.PROC")
6897 field(SCAN,
"Passive")
6898 field(INP,
"$(P):LS01:Z8:UB1:ARRAY.VAL MS")
6900 field(FLNK,
"$(P):LS01:Z8:P1:ARRAY.PROC")
6904 ## Read the ZONE P setting.
6907 field(SCAN,
"Passive")
6908 field(FTVL,
"DOUBLE")
6909 field(INP,
"$(P):LS01:Z8:ALL1.VAL MS")
6914 field(FLNK,
"$(P):LS01:Z8:P1.PROC")
6917 field(SCAN,
"Passive")
6918 field(INP,
"$(P):LS01:Z8:P1:ARRAY.VAL MS")
6920 field(FLNK,
"$(P):LS01:Z8:I1:ARRAY.PROC")
6924 ## Read the ZONE I setting.
6927 field(SCAN,
"Passive")
6928 field(FTVL,
"DOUBLE")
6929 field(INP,
"$(P):LS01:Z8:ALL1.VAL MS")
6934 field(FLNK,
"$(P):LS01:Z8:I1.PROC")
6937 field(SCAN,
"Passive")
6938 field(INP,
"$(P):LS01:Z8:I1:ARRAY.VAL MS")
6940 field(FLNK,
"$(P):LS01:Z8:D1:ARRAY.PROC")
6944 ## Read the ZONE D setting.
6947 field(SCAN,
"Passive")
6948 field(FTVL,
"DOUBLE")
6949 field(INP,
"$(P):LS01:Z8:ALL1.VAL MS")
6954 field(FLNK,
"$(P):LS01:Z8:D1.PROC")
6957 field(SCAN,
"Passive")
6958 field(INP,
"$(P):LS01:Z8:D1:ARRAY.VAL MS")
6960 field(FLNK,
"$(P):LS01:Z8:MOUT1:ARRAY.PROC")
6964 ## Read the ZONE MOUT setting.
6966 record(subArray,
"$(P):LS01:Z8:MOUT1:ARRAY") {
6967 field(SCAN,
"Passive")
6968 field(FTVL,
"DOUBLE")
6969 field(INP,
"$(P):LS01:Z8:ALL1.VAL MS")
6974 field(FLNK,
"$(P):LS01:Z8:MOUT1.PROC")
6977 field(SCAN,
"Passive")
6978 field(INP,
"$(P):LS01:Z8:MOUT1:ARRAY.VAL MS")
6980 field(FLNK,
"$(P):LS01:Z8:RANGE1:ARRAY.PROC")
6984 ## Read the ZONE RANGE setting.
6986 record(subArray,
"$(P):LS01:Z8:RANGE1:ARRAY") {
6987 field(SCAN,
"Passive")
6988 field(FTVL,
"DOUBLE")
6989 field(INP,
"$(P):LS01:Z8:ALL1.VAL MS")
6994 field(FLNK,
"$(P):LS01:Z8:RANGE1.PROC")
6997 field(INP,
"$(P):LS01:Z8:RANGE1:ARRAY.VAL")
6998 field(SCAN,
"Passive")
7001 field(ONST,
"Range1/Low")
7003 field(TWST,
"Range2/Medium")
7005 field(THST,
"Range3/High")
7007 field(FRST,
"Range4")
7009 field(FVST,
"Range5")
7011 field(FLNK,
"$(P):LS01:Z8:INPUT1:ARRAY.PROC")
7015 ## Read the ZONE INPUT setting.
7017 record(subArray,
"$(P):LS01:Z8:INPUT1:ARRAY") {
7018 field(SCAN,
"Passive")
7019 field(FTVL,
"DOUBLE")
7020 field(INP,
"$(P):LS01:Z8:ALL1.VAL MS")
7025 field(FLNK,
"$(P):LS01:Z8:INPUT1.PROC")
7028 field(INP,
"$(P):LS01:Z8:INPUT1:ARRAY.VAL")
7029 field(SCAN,
"Passive")
7032 field(ONST,
"Input A")
7034 field(TWST,
"Input B")
7036 field(THST,
"Input C")
7038 field(FRST,
"Input D")
7040 field(FVST,
"Input D2")
7042 field(SXST,
"Input D3")
7044 field(SVST,
"Input D4")
7046 field(EIST,
"Input D5")
7048 field(FLNK,
"$(P):LS01:Z8:RATE1:ARRAY.PROC")
7052 ## Read the ZONE RATE setting.
7054 record(subArray,
"$(P):LS01:Z8:RATE1:ARRAY") {
7055 field(SCAN,
"Passive")
7056 field(FTVL,
"DOUBLE")
7057 field(INP,
"$(P):LS01:Z8:ALL1.VAL MS")
7062 field(FLNK,
"$(P):LS01:Z8:RATE1.PROC")
7065 field(SCAN,
"Passive")
7066 field(INP,
"$(P):LS01:Z8:RATE1:ARRAY.VAL MS")
7068 field(FLNK,
"$(P):LS01:Z8:INITCALC1.PROC")
7071 ##############################################################
7073 ## Populate the write records below with the current values.
7074 ## Only do this once at startup.
7076 ###############################################################
7082 field(DOPT,
"Use OCAL")
7083 field(OOPT,
"When Zero")
7085 field(OUT,
"$(P):LS01:Z8:INITUB1.PROC")
7089 field(OMSL,
"closed_loop")
7090 field(DOL,
"$(P):LS01:Z8:UB1.VAL")
7091 field(OUTA,
"$(P):LS01:Z8:UB_S1.VAL PP")
7092 field(FLNK,
"$(P):LS01:Z8:INITP1.PROC")
7095 field(OMSL,
"closed_loop")
7096 field(DOL,
"$(P):LS01:Z8:P1.VAL")
7097 field(OUTA,
"$(P):LS01:Z8:P_S1.VAL PP")
7098 field(FLNK,
"$(P):LS01:Z8:INITI1.PROC")
7101 field(OMSL,
"closed_loop")
7102 field(DOL,
"$(P):LS01:Z8:I1.VAL")
7103 field(OUTA,
"$(P):LS01:Z8:I_S1.VAL PP")
7104 field(FLNK,
"$(P):LS01:Z8:INITD1.PROC")
7107 field(OMSL,
"closed_loop")
7108 field(DOL,
"$(P):LS01:Z8:D1.VAL")
7109 field(OUTA,
"$(P):LS01:Z8:D_S1.VAL PP")
7110 field(FLNK,
"$(P):LS01:Z8:INITMOUT1.PROC")
7113 field(OMSL,
"closed_loop")
7114 field(DOL,
"$(P):LS01:Z8:MOUT1.VAL")
7115 field(OUTA,
"$(P):LS01:Z8:MOUT_S1.VAL PP")
7116 field(FLNK,
"$(P):LS01:Z8:INITRANGE1.PROC")
7119 field(OMSL,
"closed_loop")
7120 field(DOL,
"$(P):LS01:Z8:RANGE1.VAL")
7121 field(OUTA,
"$(P):LS01:Z8:RANGE_S1.VAL PP")
7122 field(FLNK,
"$(P):LS01:Z8:INITINPUT1.PROC")
7125 field(OMSL,
"closed_loop")
7126 field(DOL,
"$(P):LS01:Z8:INPUT1.VAL")
7127 field(OUTA,
"$(P):LS01:Z8:INPUT_S1.VAL PP")
7128 field(FLNK,
"$(P):LS01:Z8:INITRATE1.PROC")
7131 field(OMSL,
"closed_loop")
7132 field(DOL,
"$(P):LS01:Z8:RATE1.VAL")
7133 field(OUTA,
"$(P):LS01:Z8:RATE_S1.VAL PP")
7134 field(FLNK,
"$(P):LS01:Z8:INITCOUNT1.PROC")
7139 field(OUTA,
"$(P):LS01:Z8:INITCALC1.A")
7144 #############################################
7145 # Write records. There is a calcout record to
7146 # do the actual write.
7147 #############################################
7150 ## Set the ZONE upper boundary setting.
7153 field(SCAN,
"Passive")
7155 field(SDIS,
"$(P):LS01:DISABLE")
7159 ## Set the ZONE P setting.
7162 field(SCAN,
"Passive")
7164 field(SDIS,
"$(P):LS01:DISABLE")
7168 ## Set the ZONE I setting.
7171 field(SCAN,
"Passive")
7173 field(SDIS,
"$(P):LS01:DISABLE")
7177 ## Set the ZONE D setting.
7180 field(SCAN,
"Passive")
7182 field(SDIS,
"$(P):LS01:DISABLE")
7186 ## Set the ZONE MOUT setting.
7189 field(SCAN,
"Passive")
7191 field(SDIS,
"$(P):LS01:DISABLE")
7195 ## Set the ZONE RANGE setting.
7198 field(SCAN,
"Passive")
7201 field(ONST,
"Range1/Low")
7203 field(TWST,
"Range2/Medium")
7205 field(THST,
"Range3/High")
7207 field(FRST,
"Range4")
7209 field(FVST,
"Range5")
7211 field(SDIS,
"$(P):LS01:DISABLE")
7215 ## Set the ZONE INPUT setting.
7220 field(ONST,
"Input A")
7222 field(TWST,
"Input B")
7224 field(THST,
"Input C")
7226 field(FRST,
"Input D")
7228 field(FVST,
"Input D2")
7230 field(SXST,
"Input D3")
7232 field(SVST,
"Input D4")
7234 field(EIST,
"Input D5")
7236 field(SDIS,
"$(P):LS01:DISABLE")
7240 ## Set the ZONE RATE setting.
7243 field(SCAN,
"Passive")
7245 field(SDIS,
"$(P):LS01:DISABLE")
7249 ## Record to write the ZONE parameters.
7252 field(INPA,
"$(P):LS01:Z8:UB_S1")
7253 field(INPB,
"$(P):LS01:Z8:P_S1")
7254 field(INPC,
"$(P):LS01:Z8:I_S1")
7255 field(INPD,
"$(P):LS01:Z8:D_S1")
7256 field(INPE,
"$(P):LS01:Z8:MOUT_S1")
7257 field(INPF,
"$(P):LS01:Z8:RANGE_S1")
7258 field(INPG,
"$(P):LS01:Z8:INPUT_S1")
7259 field(INPH,
"$(P):LS01:Z8:RATE_S1")
7261 field(DTYP,
"stream")
7262 field(OUT,
"@ls336.proto setZONE(1,8) L0 0")
7263 field(SDIS,
"$(P):LS01:DISABLE")
7264 field(FLNK,
"$(P):LS01:Z8:ALL1.PROC")
7276 #######################################
7278 # Template to support reading and setting
7279 # controller ZONE parameters. It reads the ZONE
7280 # parameters into an array, then uses subArrays to
7281 # extract each parameter.
7283 # This template is used by the output template
7284 # and it needs the following macros:
7287 # OUT: output number
7289 #######################################
7292 ## Read the ZONE setting into an array (8 values)
7295 field(DTYP,
"stream")
7296 field(SDIS,
"$(P):LS01:DISABLE_POLL")
7297 field(INP,
"@ls336.proto getZONE(1,9) L0 0")
7298 field(SCAN,
"Passive")
7300 field(FTVL,
"DOUBLE")
7302 field(FLNK,
"$(P):LS01:Z9:UB1:ARRAY.PROC")
7306 ## Read the ZONE upper boundary setting.
7309 field(SCAN,
"Passive")
7310 field(FTVL,
"DOUBLE")
7311 field(INP,
"$(P):LS01:Z9:ALL1.VAL MS")
7316 field(FLNK,
"$(P):LS01:Z9:UB1.PROC")
7319 field(SCAN,
"Passive")
7320 field(INP,
"$(P):LS01:Z9:UB1:ARRAY.VAL MS")
7322 field(FLNK,
"$(P):LS01:Z9:P1:ARRAY.PROC")
7326 ## Read the ZONE P setting.
7329 field(SCAN,
"Passive")
7330 field(FTVL,
"DOUBLE")
7331 field(INP,
"$(P):LS01:Z9:ALL1.VAL MS")
7336 field(FLNK,
"$(P):LS01:Z9:P1.PROC")
7339 field(SCAN,
"Passive")
7340 field(INP,
"$(P):LS01:Z9:P1:ARRAY.VAL MS")
7342 field(FLNK,
"$(P):LS01:Z9:I1:ARRAY.PROC")
7346 ## Read the ZONE I setting.
7349 field(SCAN,
"Passive")
7350 field(FTVL,
"DOUBLE")
7351 field(INP,
"$(P):LS01:Z9:ALL1.VAL MS")
7356 field(FLNK,
"$(P):LS01:Z9:I1.PROC")
7359 field(SCAN,
"Passive")
7360 field(INP,
"$(P):LS01:Z9:I1:ARRAY.VAL MS")
7362 field(FLNK,
"$(P):LS01:Z9:D1:ARRAY.PROC")
7366 ## Read the ZONE D setting.
7369 field(SCAN,
"Passive")
7370 field(FTVL,
"DOUBLE")
7371 field(INP,
"$(P):LS01:Z9:ALL1.VAL MS")
7376 field(FLNK,
"$(P):LS01:Z9:D1.PROC")
7379 field(SCAN,
"Passive")
7380 field(INP,
"$(P):LS01:Z9:D1:ARRAY.VAL MS")
7382 field(FLNK,
"$(P):LS01:Z9:MOUT1:ARRAY.PROC")
7386 ## Read the ZONE MOUT setting.
7388 record(subArray,
"$(P):LS01:Z9:MOUT1:ARRAY") {
7389 field(SCAN,
"Passive")
7390 field(FTVL,
"DOUBLE")
7391 field(INP,
"$(P):LS01:Z9:ALL1.VAL MS")
7396 field(FLNK,
"$(P):LS01:Z9:MOUT1.PROC")
7399 field(SCAN,
"Passive")
7400 field(INP,
"$(P):LS01:Z9:MOUT1:ARRAY.VAL MS")
7402 field(FLNK,
"$(P):LS01:Z9:RANGE1:ARRAY.PROC")
7406 ## Read the ZONE RANGE setting.
7408 record(subArray,
"$(P):LS01:Z9:RANGE1:ARRAY") {
7409 field(SCAN,
"Passive")
7410 field(FTVL,
"DOUBLE")
7411 field(INP,
"$(P):LS01:Z9:ALL1.VAL MS")
7416 field(FLNK,
"$(P):LS01:Z9:RANGE1.PROC")
7419 field(INP,
"$(P):LS01:Z9:RANGE1:ARRAY.VAL")
7420 field(SCAN,
"Passive")
7423 field(ONST,
"Range1/Low")
7425 field(TWST,
"Range2/Medium")
7427 field(THST,
"Range3/High")
7429 field(FRST,
"Range4")
7431 field(FVST,
"Range5")
7433 field(FLNK,
"$(P):LS01:Z9:INPUT1:ARRAY.PROC")
7437 ## Read the ZONE INPUT setting.
7439 record(subArray,
"$(P):LS01:Z9:INPUT1:ARRAY") {
7440 field(SCAN,
"Passive")
7441 field(FTVL,
"DOUBLE")
7442 field(INP,
"$(P):LS01:Z9:ALL1.VAL MS")
7447 field(FLNK,
"$(P):LS01:Z9:INPUT1.PROC")
7450 field(INP,
"$(P):LS01:Z9:INPUT1:ARRAY.VAL")
7451 field(SCAN,
"Passive")
7454 field(ONST,
"Input A")
7456 field(TWST,
"Input B")
7458 field(THST,
"Input C")
7460 field(FRST,
"Input D")
7462 field(FVST,
"Input D2")
7464 field(SXST,
"Input D3")
7466 field(SVST,
"Input D4")
7468 field(EIST,
"Input D5")
7470 field(FLNK,
"$(P):LS01:Z9:RATE1:ARRAY.PROC")
7474 ## Read the ZONE RATE setting.
7476 record(subArray,
"$(P):LS01:Z9:RATE1:ARRAY") {
7477 field(SCAN,
"Passive")
7478 field(FTVL,
"DOUBLE")
7479 field(INP,
"$(P):LS01:Z9:ALL1.VAL MS")
7484 field(FLNK,
"$(P):LS01:Z9:RATE1.PROC")
7487 field(SCAN,
"Passive")
7488 field(INP,
"$(P):LS01:Z9:RATE1:ARRAY.VAL MS")
7490 field(FLNK,
"$(P):LS01:Z9:INITCALC1.PROC")
7493 ##############################################################
7495 ## Populate the write records below with the current values.
7496 ## Only do this once at startup.
7498 ###############################################################
7504 field(DOPT,
"Use OCAL")
7505 field(OOPT,
"When Zero")
7507 field(OUT,
"$(P):LS01:Z9:INITUB1.PROC")
7511 field(OMSL,
"closed_loop")
7512 field(DOL,
"$(P):LS01:Z9:UB1.VAL")
7513 field(OUTA,
"$(P):LS01:Z9:UB_S1.VAL PP")
7514 field(FLNK,
"$(P):LS01:Z9:INITP1.PROC")
7517 field(OMSL,
"closed_loop")
7518 field(DOL,
"$(P):LS01:Z9:P1.VAL")
7519 field(OUTA,
"$(P):LS01:Z9:P_S1.VAL PP")
7520 field(FLNK,
"$(P):LS01:Z9:INITI1.PROC")
7523 field(OMSL,
"closed_loop")
7524 field(DOL,
"$(P):LS01:Z9:I1.VAL")
7525 field(OUTA,
"$(P):LS01:Z9:I_S1.VAL PP")
7526 field(FLNK,
"$(P):LS01:Z9:INITD1.PROC")
7529 field(OMSL,
"closed_loop")
7530 field(DOL,
"$(P):LS01:Z9:D1.VAL")
7531 field(OUTA,
"$(P):LS01:Z9:D_S1.VAL PP")
7532 field(FLNK,
"$(P):LS01:Z9:INITMOUT1.PROC")
7535 field(OMSL,
"closed_loop")
7536 field(DOL,
"$(P):LS01:Z9:MOUT1.VAL")
7537 field(OUTA,
"$(P):LS01:Z9:MOUT_S1.VAL PP")
7538 field(FLNK,
"$(P):LS01:Z9:INITRANGE1.PROC")
7541 field(OMSL,
"closed_loop")
7542 field(DOL,
"$(P):LS01:Z9:RANGE1.VAL")
7543 field(OUTA,
"$(P):LS01:Z9:RANGE_S1.VAL PP")
7544 field(FLNK,
"$(P):LS01:Z9:INITINPUT1.PROC")
7547 field(OMSL,
"closed_loop")
7548 field(DOL,
"$(P):LS01:Z9:INPUT1.VAL")
7549 field(OUTA,
"$(P):LS01:Z9:INPUT_S1.VAL PP")
7550 field(FLNK,
"$(P):LS01:Z9:INITRATE1.PROC")
7553 field(OMSL,
"closed_loop")
7554 field(DOL,
"$(P):LS01:Z9:RATE1.VAL")
7555 field(OUTA,
"$(P):LS01:Z9:RATE_S1.VAL PP")
7556 field(FLNK,
"$(P):LS01:Z9:INITCOUNT1.PROC")
7561 field(OUTA,
"$(P):LS01:Z9:INITCALC1.A")
7566 #############################################
7567 # Write records. There is a calcout record to
7568 # do the actual write.
7569 #############################################
7572 ## Set the ZONE upper boundary setting.
7575 field(SCAN,
"Passive")
7577 field(SDIS,
"$(P):LS01:DISABLE")
7581 ## Set the ZONE P setting.
7584 field(SCAN,
"Passive")
7586 field(SDIS,
"$(P):LS01:DISABLE")
7590 ## Set the ZONE I setting.
7593 field(SCAN,
"Passive")
7595 field(SDIS,
"$(P):LS01:DISABLE")
7599 ## Set the ZONE D setting.
7602 field(SCAN,
"Passive")
7604 field(SDIS,
"$(P):LS01:DISABLE")
7608 ## Set the ZONE MOUT setting.
7611 field(SCAN,
"Passive")
7613 field(SDIS,
"$(P):LS01:DISABLE")
7617 ## Set the ZONE RANGE setting.
7620 field(SCAN,
"Passive")
7623 field(ONST,
"Range1/Low")
7625 field(TWST,
"Range2/Medium")
7627 field(THST,
"Range3/High")
7629 field(FRST,
"Range4")
7631 field(FVST,
"Range5")
7633 field(SDIS,
"$(P):LS01:DISABLE")
7637 ## Set the ZONE INPUT setting.
7642 field(ONST,
"Input A")
7644 field(TWST,
"Input B")
7646 field(THST,
"Input C")
7648 field(FRST,
"Input D")
7650 field(FVST,
"Input D2")
7652 field(SXST,
"Input D3")
7654 field(SVST,
"Input D4")
7656 field(EIST,
"Input D5")
7658 field(SDIS,
"$(P):LS01:DISABLE")
7662 ## Set the ZONE RATE setting.
7665 field(SCAN,
"Passive")
7667 field(SDIS,
"$(P):LS01:DISABLE")
7671 ## Record to write the ZONE parameters.
7674 field(INPA,
"$(P):LS01:Z9:UB_S1")
7675 field(INPB,
"$(P):LS01:Z9:P_S1")
7676 field(INPC,
"$(P):LS01:Z9:I_S1")
7677 field(INPD,
"$(P):LS01:Z9:D_S1")
7678 field(INPE,
"$(P):LS01:Z9:MOUT_S1")
7679 field(INPF,
"$(P):LS01:Z9:RANGE_S1")
7680 field(INPG,
"$(P):LS01:Z9:INPUT_S1")
7681 field(INPH,
"$(P):LS01:Z9:RATE_S1")
7683 field(DTYP,
"stream")
7684 field(OUT,
"@ls336.proto setZONE(1,9) L0 0")
7685 field(SDIS,
"$(P):LS01:DISABLE")
7686 field(FLNK,
"$(P):LS01:Z9:ALL1.PROC")
7698 #######################################
7700 # Template to support reading and setting
7701 # controller ZONE parameters. It reads the ZONE
7702 # parameters into an array, then uses subArrays to
7703 # extract each parameter.
7705 # This template is used by the output template
7706 # and it needs the following macros:
7709 # OUT: output number
7711 #######################################
7714 ## Read the ZONE setting into an array (8 values)
7717 field(DTYP,
"stream")
7718 field(SDIS,
"$(P):LS01:DISABLE_POLL")
7719 field(INP,
"@ls336.proto getZONE(1,10) L0 0")
7720 field(SCAN,
"Passive")
7722 field(FTVL,
"DOUBLE")
7724 field(FLNK,
"$(P):LS01:Z10:UB1:ARRAY.PROC")
7728 ## Read the ZONE upper boundary setting.
7730 record(subArray,
"$(P):LS01:Z10:UB1:ARRAY") {
7731 field(SCAN,
"Passive")
7732 field(FTVL,
"DOUBLE")
7733 field(INP,
"$(P):LS01:Z10:ALL1.VAL MS")
7738 field(FLNK,
"$(P):LS01:Z10:UB1.PROC")
7741 field(SCAN,
"Passive")
7742 field(INP,
"$(P):LS01:Z10:UB1:ARRAY.VAL MS")
7744 field(FLNK,
"$(P):LS01:Z10:P1:ARRAY.PROC")
7748 ## Read the ZONE P setting.
7751 field(SCAN,
"Passive")
7752 field(FTVL,
"DOUBLE")
7753 field(INP,
"$(P):LS01:Z10:ALL1.VAL MS")
7758 field(FLNK,
"$(P):LS01:Z10:P1.PROC")
7761 field(SCAN,
"Passive")
7762 field(INP,
"$(P):LS01:Z10:P1:ARRAY.VAL MS")
7764 field(FLNK,
"$(P):LS01:Z10:I1:ARRAY.PROC")
7768 ## Read the ZONE I setting.
7771 field(SCAN,
"Passive")
7772 field(FTVL,
"DOUBLE")
7773 field(INP,
"$(P):LS01:Z10:ALL1.VAL MS")
7778 field(FLNK,
"$(P):LS01:Z10:I1.PROC")
7781 field(SCAN,
"Passive")
7782 field(INP,
"$(P):LS01:Z10:I1:ARRAY.VAL MS")
7784 field(FLNK,
"$(P):LS01:Z10:D1:ARRAY.PROC")
7788 ## Read the ZONE D setting.
7791 field(SCAN,
"Passive")
7792 field(FTVL,
"DOUBLE")
7793 field(INP,
"$(P):LS01:Z10:ALL1.VAL MS")
7798 field(FLNK,
"$(P):LS01:Z10:D1.PROC")
7801 field(SCAN,
"Passive")
7802 field(INP,
"$(P):LS01:Z10:D1:ARRAY.VAL MS")
7804 field(FLNK,
"$(P):LS01:Z10:MOUT1:ARRAY.PROC")
7808 ## Read the ZONE MOUT setting.
7810 record(subArray,
"$(P):LS01:Z10:MOUT1:ARRAY") {
7811 field(SCAN,
"Passive")
7812 field(FTVL,
"DOUBLE")
7813 field(INP,
"$(P):LS01:Z10:ALL1.VAL MS")
7818 field(FLNK,
"$(P):LS01:Z10:MOUT1.PROC")
7821 field(SCAN,
"Passive")
7822 field(INP,
"$(P):LS01:Z10:MOUT1:ARRAY.VAL MS")
7824 field(FLNK,
"$(P):LS01:Z10:RANGE1:ARRAY.PROC")
7828 ## Read the ZONE RANGE setting.
7830 record(subArray,
"$(P):LS01:Z10:RANGE1:ARRAY") {
7831 field(SCAN,
"Passive")
7832 field(FTVL,
"DOUBLE")
7833 field(INP,
"$(P):LS01:Z10:ALL1.VAL MS")
7838 field(FLNK,
"$(P):LS01:Z10:RANGE1.PROC")
7841 field(INP,
"$(P):LS01:Z10:RANGE1:ARRAY.VAL")
7842 field(SCAN,
"Passive")
7845 field(ONST,
"Range1/Low")
7847 field(TWST,
"Range2/Medium")
7849 field(THST,
"Range3/High")
7851 field(FRST,
"Range4")
7853 field(FVST,
"Range5")
7855 field(FLNK,
"$(P):LS01:Z10:INPUT1:ARRAY.PROC")
7859 ## Read the ZONE INPUT setting.
7861 record(subArray,
"$(P):LS01:Z10:INPUT1:ARRAY") {
7862 field(SCAN,
"Passive")
7863 field(FTVL,
"DOUBLE")
7864 field(INP,
"$(P):LS01:Z10:ALL1.VAL MS")
7869 field(FLNK,
"$(P):LS01:Z10:INPUT1.PROC")
7872 field(INP,
"$(P):LS01:Z10:INPUT1:ARRAY.VAL")
7873 field(SCAN,
"Passive")
7876 field(ONST,
"Input A")
7878 field(TWST,
"Input B")
7880 field(THST,
"Input C")
7882 field(FRST,
"Input D")
7884 field(FVST,
"Input D2")
7886 field(SXST,
"Input D3")
7888 field(SVST,
"Input D4")
7890 field(EIST,
"Input D5")
7892 field(FLNK,
"$(P):LS01:Z10:RATE1:ARRAY.PROC")
7896 ## Read the ZONE RATE setting.
7898 record(subArray,
"$(P):LS01:Z10:RATE1:ARRAY") {
7899 field(SCAN,
"Passive")
7900 field(FTVL,
"DOUBLE")
7901 field(INP,
"$(P):LS01:Z10:ALL1.VAL MS")
7906 field(FLNK,
"$(P):LS01:Z10:RATE1.PROC")
7909 field(SCAN,
"Passive")
7910 field(INP,
"$(P):LS01:Z10:RATE1:ARRAY.VAL MS")
7912 field(FLNK,
"$(P):LS01:Z10:INITCALC1.PROC")
7915 ##############################################################
7917 ## Populate the write records below with the current values.
7918 ## Only do this once at startup.
7920 ###############################################################
7926 field(DOPT,
"Use OCAL")
7927 field(OOPT,
"When Zero")
7929 field(OUT,
"$(P):LS01:Z10:INITUB1.PROC")
7933 field(OMSL,
"closed_loop")
7934 field(DOL,
"$(P):LS01:Z10:UB1.VAL")
7935 field(OUTA,
"$(P):LS01:Z10:UB_S1.VAL PP")
7936 field(FLNK,
"$(P):LS01:Z10:INITP1.PROC")
7939 field(OMSL,
"closed_loop")
7940 field(DOL,
"$(P):LS01:Z10:P1.VAL")
7941 field(OUTA,
"$(P):LS01:Z10:P_S1.VAL PP")
7942 field(FLNK,
"$(P):LS01:Z10:INITI1.PROC")
7945 field(OMSL,
"closed_loop")
7946 field(DOL,
"$(P):LS01:Z10:I1.VAL")
7947 field(OUTA,
"$(P):LS01:Z10:I_S1.VAL PP")
7948 field(FLNK,
"$(P):LS01:Z10:INITD1.PROC")
7951 field(OMSL,
"closed_loop")
7952 field(DOL,
"$(P):LS01:Z10:D1.VAL")
7953 field(OUTA,
"$(P):LS01:Z10:D_S1.VAL PP")
7954 field(FLNK,
"$(P):LS01:Z10:INITMOUT1.PROC")
7957 field(OMSL,
"closed_loop")
7958 field(DOL,
"$(P):LS01:Z10:MOUT1.VAL")
7959 field(OUTA,
"$(P):LS01:Z10:MOUT_S1.VAL PP")
7960 field(FLNK,
"$(P):LS01:Z10:INITRANGE1.PROC")
7962 record(dfanout,
"$(P):LS01:Z10:INITRANGE1") {
7963 field(OMSL,
"closed_loop")
7964 field(DOL,
"$(P):LS01:Z10:RANGE1.VAL")
7965 field(OUTA,
"$(P):LS01:Z10:RANGE_S1.VAL PP")
7966 field(FLNK,
"$(P):LS01:Z10:INITINPUT1.PROC")
7968 record(dfanout,
"$(P):LS01:Z10:INITINPUT1") {
7969 field(OMSL,
"closed_loop")
7970 field(DOL,
"$(P):LS01:Z10:INPUT1.VAL")
7971 field(OUTA,
"$(P):LS01:Z10:INPUT_S1.VAL PP")
7972 field(FLNK,
"$(P):LS01:Z10:INITRATE1.PROC")
7975 field(OMSL,
"closed_loop")
7976 field(DOL,
"$(P):LS01:Z10:RATE1.VAL")
7977 field(OUTA,
"$(P):LS01:Z10:RATE_S1.VAL PP")
7978 field(FLNK,
"$(P):LS01:Z10:INITCOUNT1.PROC")
7981 record(dfanout,
"$(P):LS01:Z10:INITCOUNT1") {
7983 field(OUTA,
"$(P):LS01:Z10:INITCALC1.A")
7988 #############################################
7989 # Write records. There is a calcout record to
7990 # do the actual write.
7991 #############################################
7994 ## Set the ZONE upper boundary setting.
7997 field(SCAN,
"Passive")
7999 field(SDIS,
"$(P):LS01:DISABLE")
8003 ## Set the ZONE P setting.
8006 field(SCAN,
"Passive")
8008 field(SDIS,
"$(P):LS01:DISABLE")
8012 ## Set the ZONE I setting.
8015 field(SCAN,
"Passive")
8017 field(SDIS,
"$(P):LS01:DISABLE")
8021 ## Set the ZONE D setting.
8024 field(SCAN,
"Passive")
8026 field(SDIS,
"$(P):LS01:DISABLE")
8030 ## Set the ZONE MOUT setting.
8033 field(SCAN,
"Passive")
8035 field(SDIS,
"$(P):LS01:DISABLE")
8039 ## Set the ZONE RANGE setting.
8042 field(SCAN,
"Passive")
8045 field(ONST,
"Range1/Low")
8047 field(TWST,
"Range2/Medium")
8049 field(THST,
"Range3/High")
8051 field(FRST,
"Range4")
8053 field(FVST,
"Range5")
8055 field(SDIS,
"$(P):LS01:DISABLE")
8059 ## Set the ZONE INPUT setting.
8064 field(ONST,
"Input A")
8066 field(TWST,
"Input B")
8068 field(THST,
"Input C")
8070 field(FRST,
"Input D")
8072 field(FVST,
"Input D2")
8074 field(SXST,
"Input D3")
8076 field(SVST,
"Input D4")
8078 field(EIST,
"Input D5")
8080 field(SDIS,
"$(P):LS01:DISABLE")
8084 ## Set the ZONE RATE setting.
8087 field(SCAN,
"Passive")
8089 field(SDIS,
"$(P):LS01:DISABLE")
8093 ## Record to write the ZONE parameters.
8096 field(INPA,
"$(P):LS01:Z10:UB_S1")
8097 field(INPB,
"$(P):LS01:Z10:P_S1")
8098 field(INPC,
"$(P):LS01:Z10:I_S1")
8099 field(INPD,
"$(P):LS01:Z10:D_S1")
8100 field(INPE,
"$(P):LS01:Z10:MOUT_S1")
8101 field(INPF,
"$(P):LS01:Z10:RANGE_S1")
8102 field(INPG,
"$(P):LS01:Z10:INPUT_S1")
8103 field(INPH,
"$(P):LS01:Z10:RATE_S1")
8105 field(DTYP,
"stream")
8106 field(OUT,
"@ls336.proto setZONE(1,10) L0 0")
8107 field(SDIS,
"$(P):LS01:DISABLE")
8108 field(FLNK,
"$(P):LS01:Z10:ALL1.PROC")
8124 # This is included in lakeshore336.template
8125 # This template is for the common functionality shared by all 4 outputs.
8127 # There is some logic in this database to provide put_callback functionality
8128 # for setting the temperature and waiting for it to be in range. The input
8129 # sensor PV name used for the in-window calculation changes depending on
8130 # the input sensor selected. In order for this to work it requires the following
8133 # INPUTA - Sensor 1 PV name
8134 # INPUTB - Sensor 2 PV name
8135 # INPUTC - Sensor 3 PV name
8136 # INPUTD - Sensor 4 PV name
8137 # INPUTD2 - Sensor D2 PV name
8138 # INPUTD3 - Sensor D3 PV name
8139 # INPUTD4 - Sensor D4 PV name
8140 # INPUTD5 - Sensor D5 PV name
8141 # TOLERANCE (optional - defaults to 1)
8143 # The input link names must fit into a stringout record for this to work.
8144 # The above link names default to a dummy record.
8146 ################################################################
8148 ################################################################
8151 ## Record holding the output number
8154 field(DTYP,
"Soft Channel")
8160 ## Read the setpoint temperature.
8163 field(DTYP,
"stream")
8164 field(SDIS,
"$(P):LS01:DISABLE_POLL")
8165 field(INP,
"@ls336.proto getSETP(2) L0 0")
8166 field(SCAN,
"1 second")
8169 info(archive,
"Monitor, 00:00:01, VAL")
8173 ## Read the setpoint limit
8177 ## Read the ramp parameter. This also populates the ramp status $(P):LS01:RAMPST2,
8180 field(DTYP,
"stream")
8181 field(SDIS,
"$(P):LS01:DISABLE_POLL")
8182 field(INP,
"@ls336.proto getRAMP(2,$(P):LS01:RAMPST2) L0 0")
8183 field(SCAN,
"5 second")
8185 field(EGU,
"K/minute")
8189 ## Read the ramp status parameter.
8195 field(DTYP,
"Soft Channel")
8201 ## Read the range parameter (the heater output power range).
8202 ## This is output specific and is defined in another file.
8205 field(DTYP,
"stream")
8206 field(SDIS,
"$(P):LS01:DISABLE_POLL")
8213 field(SCAN,
"5 second")
8214 field(INP,
"@ls336.proto getRANGE(2) L0 0")
8218 ## Read the mode to use for outmode
8219 ## This is output specific and is defined in another file.
8225 ## Read the manual output parameter.
8228 field(DTYP,
"stream")
8229 field(SDIS,
"$(P):LS01:DISABLE_POLL")
8230 field(INP,
"@ls336.proto getMOUT(2) L0 0")
8231 field(SCAN,
"5 second")
8235 ## Read the PID P parameter. Pass the I and D records into the protocol to read those as well.
8238 field(DTYP,
"stream")
8239 field(SDIS,
"$(P):LS01:DISABLE_POLL")
8240 field(INP,
"@ls336.proto getPID(2,$(P):LS01:I2,$(P):LS01:D2) L0 0")
8241 field(SCAN,
"5 second")
8245 ## Read the PID I parameter.
8248 field(DTYP,
"Soft Channel")
8249 field(SCAN,
"Passive")
8253 ## Read the PID D parameter.
8256 field(DTYP,
"Soft Channel")
8257 field(SCAN,
"Passive")
8261 ## Read the mode to use for outmode.
8262 ## This also populates the OMI and OMP records.
8263 ## The mbbi strings and values are defined in the output specific templates.
8266 field(DTYP,
"stream")
8267 field(SDIS,
"$(P):LS01:DISABLE_POLL")
8274 field(SCAN,
"5 second")
8275 field(INP,
"@ls336.proto getOM(2,$(P):LS01:OMI2,$(P):LS01:OMP2) L0 0")
8279 ## Read the input to use for outmode
8282 field(DTYP,
"Soft Channel")
8285 field(ONST,
"Input A")
8287 field(TWST,
"Input B")
8289 field(THST,
"Input C")
8291 field(FRST,
"Input D")
8293 field(FVST,
"Input D2")
8295 field(SXST,
"Input D3")
8297 field(SVST,
"Input D4")
8299 field(EIST,
"Input D5")
8304 ## Read the power up mode to use for outmode
8307 field(DTYP,
"Soft Channel")
8314 ################################################################
8316 ################################################################
8319 ## Set the setpoint temperature.
8322 field(DTYP,
"stream")
8323 field(SDIS,
"$(P):LS01:DISABLE")
8324 field(DESC,
"Setpoint temperature")
8325 field(OUT,
"@ls336.proto setSETP(2) L0 0")
8327 field(FLNK,
"$(P):LS01:SETP_S2_BUSYSET.PROC")
8329 info(archive,
"Monitor, 00:00:01, VAL")
8332 ###############################################################################
8335 ## A few records to support put_callback on the setpoint. We use the busy record.
8336 ## A temperature window is used. The temperature must be within
8337 ## the window, before the callback is done.
8343 field(OUTA,
"$(P):LS01:IN_WINDOW2.VAL PP")
8344 field(FLNK,
"$(P):LS01:SETP_S2_BUSYSET2")
8346 record(dfanout,
"$(P):LS01:SETP_S2_BUSYSET2")
8349 field(OUTA,
"$(P):LS01:SETP2.PROC PP")
8350 field(OUTB,
"$(P):LS01:SETP_S2_BUSY PP")
8351 field(FLNK,
"$(P):LS01:CALC_IN_WINDOW2")
8356 record(calcout,
"$(P):LS01:CALC_IN_WINDOW2") {
8359 field(INPB,
"$(P):LS01:DUMMY2.VAL")
8360 field(INPC,
"$(P):LS01:SETP_S2.VAL")
8361 field(CALC,
"((B>=(C-A))&&(B<=(C+A)))?1:0")
8362 field(OOPT,
"Every Time")
8363 field(OUT,
"$(P):LS01:IN_WINDOW2.VAL PP")
8364 field(DOPT,
"Use CALC")
8365 field(SCAN,
"1 second")
8367 info(autosaveFields,
"A")
8368 info(archive,
"Monitor, 00:00:01, A B C VAL")
8371 field(DESC,
"Temperature In Window")
8374 field(OMSL,
"supervisory")
8375 field(ZNAM,
"Not In Window")
8376 field(ONAM,
"In Window")
8377 info(archive,
"Monitor, 00:00:01, VAL")
8381 ## Set busy record 'done' when TIME_WINDOW2=1
8383 record(calcout,
"$(P):LS01:CALC_BUSY_DONE2") {
8384 field(INPA,
"$(P):LS01:IN_WINDOW2.VAL CP")
8385 field(CALC,
"(A=1)?0:1")
8386 field(OOPT,
"Every Time")
8387 field(OUT,
"$(P):LS01:SETP_S2_BUSY.VAL PP")
8390 ###############################################################################
8393 ## Dummy record to use for input link name default
8399 ## Monitor $(P):LS01:OMI2 to determin which input sensor to use
8400 ## to deal with the callback. The below set of records automatically
8401 ## switch the input when the 'control input' is changed. They make
8402 ## use of the input sensor PV names passed into this template.
8406 field(INPA,
"$(P):LS01:OMI2.VAL CP")
8407 field(DOPT,
"Use OCAL")
8409 field(OOPT,
"When Non-zero")
8410 field(OUT,
"$(P):LS01:SET_2_INPUTA_LINK.PROC")
8412 record(stringout,
"$(P):LS01:SET_2_INPUTA_LINK") {
8413 field(VAL,
"$(P):LS01:KRDG0.VAL CP")
8414 field(OUT,
"$(P):LS01:CALC_IN_WINDOW2.INPB CA")
8419 field(INPA,
"$(P):LS01:OMI2.VAL CP")
8420 field(DOPT,
"Use OCAL")
8422 field(OOPT,
"When Non-zero")
8423 field(OUT,
"$(P):LS01:SET_2_INPUTB_LINK.PROC")
8425 record(stringout,
"$(P):LS01:SET_2_INPUTB_LINK") {
8426 field(VAL,
"$(P):LS01:KRDG1.VAL CP")
8427 field(OUT,
"$(P):LS01:CALC_IN_WINDOW2.INPB CA")
8432 field(INPA,
"$(P):LS01:OMI2.VAL CP")
8433 field(DOPT,
"Use OCAL")
8435 field(OOPT,
"When Non-zero")
8436 field(OUT,
"$(P):LS01:SET_2_INPUTC_LINK.PROC")
8438 record(stringout,
"$(P):LS01:SET_2_INPUTC_LINK") {
8439 field(VAL,
"$(P):LS01:KRDG2.VAL CP")
8440 field(OUT,
"$(P):LS01:CALC_IN_WINDOW2.INPB CA")
8445 field(INPA,
"$(P):LS01:OMI2.VAL CP")
8446 field(DOPT,
"Use OCAL")
8448 field(OOPT,
"When Non-zero")
8449 field(OUT,
"$(P):LS01:SET_2_INPUTD_LINK.PROC")
8451 record(stringout,
"$(P):LS01:SET_2_INPUTD_LINK") {
8452 field(VAL,
"$(P):LS01:KRDG3.VAL CP")
8453 field(OUT,
"$(P):LS01:CALC_IN_WINDOW2.INPB CA")
8458 field(INPA,
"$(P):LS01:OMI2.VAL CP")
8459 field(DOPT,
"Use OCAL")
8461 field(OOPT,
"When Non-zero")
8462 field(OUT,
"$(P):LS01:SET_2_INPUTD2_LINK.PROC")
8464 record(stringout,
"$(P):LS01:SET_2_INPUTD2_LINK") {
8465 field(VAL,
"$(P):LS01:KRDGD2.VAL CP")
8466 field(OUT,
"$(P):LS01:CALC_IN_WINDOW2.INPB CA")
8471 field(INPA,
"$(P):LS01:OMI2.VAL CP")
8472 field(DOPT,
"Use OCAL")
8474 field(OOPT,
"When Non-zero")
8475 field(OUT,
"$(P):LS01:SET_2_INPUTD3_LINK.PROC")
8477 record(stringout,
"$(P):LS01:SET_2_INPUTD3_LINK") {
8478 field(VAL,
"$(P):LS01:KRDGD3.VAL CP")
8479 field(OUT,
"$(P):LS01:CALC_IN_WINDOW2.INPB CA")
8484 field(INPA,
"$(P):LS01:OMI2.VAL CP")
8485 field(DOPT,
"Use OCAL")
8487 field(OOPT,
"When Non-zero")
8488 field(OUT,
"$(P):LS01:SET_2_INPUTD4_LINK.PROC")
8490 record(stringout,
"$(P):LS01:SET_2_INPUTD4_LINK") {
8491 field(VAL,
"$(P):LS01:KRDGD4.VAL CP")
8492 field(OUT,
"$(P):LS01:CALC_IN_WINDOW2.INPB CA")
8497 field(INPA,
"$(P):LS01:OMI2.VAL CP")
8498 field(DOPT,
"Use OCAL")
8500 field(OOPT,
"When Non-zero")
8501 field(OUT,
"$(P):LS01:SET_2_INPUTD5_LINK.PROC")
8503 record(stringout,
"$(P):LS01:SET_2_INPUTD5_LINK") {
8504 field(VAL,
"$(P):LS01:KRDGD5.VAL CP")
8505 field(OUT,
"$(P):LS01:CALC_IN_WINDOW2.INPB CA")
8511 ## Set the range parameter.
8512 ## The strings are output specific and is defined in another file.
8515 field(DTYP,
"stream")
8516 field(SDIS,
"$(P):LS01:DISABLE")
8517 field(OUT,
"@ls336.proto setRANGE(2) L0 0")
8518 field(FLNK,
"$(P):LS01:RANGE2.PROC CA")
8522 ## Set the ramp rate parameter.
8524 ## This is the desired temperate increase/decrease rate
8525 ## per second when heating/cooling.
8527 ## The ramp and ramp status parameters are actually one command
8528 ## for the lakeshore. Therefore one must pass into this
8529 ## record the existing/desired ramp status, as well as the
8530 ## desired ramp. This is done automatically by reading the
8531 ## PV which holds the current ramp status.
8534 field(DTYP,
"stream")
8535 field(SDIS,
"$(P):LS01:DISABLE")
8536 field(OUT,
"@ls336.proto setRAMP($(P):LS01:RAMPST2,2) L0 0")
8538 field(FLNK,
"$(P):LS01:RAMP2.PROC CA")
8539 field(EGU,
"K/minute")
8543 ## Set the ramp status parameter.
8548 ## The ramp and ramp status parameters are actually one command
8549 ## for the lakeshore. Therefore one must pass into this
8550 ## record the existing/desired ramp, as well as the
8551 ## desired ramp status. This is done automatically by reading the
8552 ## PV which holds the current ramp value.
8555 field(DTYP,
"stream")
8556 field(SDIS,
"$(P):LS01:DISABLE")
8557 field(OUT,
"@ls336.proto setRAMPSTATUS($(P):LS01:RAMP2,2) L0 0")
8558 field(FLNK,
"$(P):LS01:RAMP2.PROC CA")
8564 ## Set the manual output value.
8567 field(DTYP,
"stream")
8568 field(SDIS,
"$(P):LS01:DISABLE")
8569 field(OUT,
"@ls336.proto setMOUT(2) L0 0")
8570 field(FLNK,
"$(P):LS01:MOUT2.PROC CA")
8574 ## Set the PID P parameter.
8577 field(DTYP,
"stream")
8578 field(SDIS,
"$(P):LS01:DISABLE")
8579 field(OUT,
"@ls336.proto setP(2,$(P):LS01:I2,$(P):LS01:D2) L0 0")
8580 field(FLNK,
"$(P):LS01:P2.PROC CA")
8584 ## Set the PID I parameter.
8587 field(DTYP,
"stream")
8588 field(SDIS,
"$(P):LS01:DISABLE")
8589 field(OUT,
"@ls336.proto setI($(P):LS01:P2,2,$(P):LS01:D2) L0 0")
8590 field(FLNK,
"$(P):LS01:P2.PROC CA")
8594 ## Set the PID D parameter.
8597 field(DTYP,
"stream")
8598 field(SDIS,
"$(P):LS01:DISABLE")
8599 field(OUT,
"@ls336.proto setD($(P):LS01:P2,$(P):LS01:I2,2) L0 0")
8600 field(FLNK,
"$(P):LS01:P2.PROC CA")
8604 ## Set the mode to use for outmode
8605 ## The strings are output specific. This is defined in another file.
8608 field(DTYP,
"stream")
8609 field(SDIS,
"$(P):LS01:DISABLE")
8616 field(OUT,
"@ls336.proto setOM(2,$(P):LS01:OMI2,$(P):LS01:OMP2) L0 0")
8617 field(FLNK,
"$(P):LS01:OMM2.PROC CA")
8621 ## Set the input to use for outmode
8624 field(DTYP,
"stream")
8625 field(SDIS,
"$(P):LS01:DISABLE")
8628 field(ONST,
"Input A")
8630 field(TWST,
"Input B")
8632 field(THST,
"Input C")
8634 field(FRST,
"Input D")
8636 field(FVST,
"Input D2")
8638 field(SXST,
"Input D3")
8640 field(SVST,
"Input D4")
8642 field(EIST,
"Input D5")
8644 field(OUT,
"@ls336.proto setOMI(2,$(P):LS01:OMM2,$(P):LS01:OMP2) L0 0")
8645 field(FLNK,
"$(P):LS01:OMM2.PROC CA")
8649 ## Set the power up mode to use for outmode
8652 field(DTYP,
"stream")
8653 field(SDIS,
"$(P):LS01:DISABLE")
8658 field(OUT,
"@ls336.proto setOMP(2,$(P):LS01:OMM2,$(P):LS01:OMI2) L0 0")
8659 field(FLNK,
"$(P):LS01:OMM2.PROC CA")
8663 ## Set the type of tuning mode
8666 field(SDIS,
"$(P):LS01:DISABLE")
8667 field(ZRST,
"P Only")
8669 field(ONST,
"P and I")
8671 field(TWST,
"P, I and D")
8677 ## Start the tuning process
8680 field(DTYP,
"stream")
8681 field(SDIS,
"$(P):LS01:DISABLE")
8682 field(DESC,
"Start the auto tuning")
8683 field(OUT,
"@ls336.proto setATUNE(2,$(P):LS01:TUNEMODE_S2) L0 0")
8688 ## Read all ZONE settings
8691 field(DESC,
"Read Output 2 ZONE")
8694 field(LNK1,
"$(P):LS01:Z1:ALL2.PROC")
8697 field(LNK2,
"$(P):LS01:Z2:ALL2.PROC")
8700 field(LNK3,
"$(P):LS01:Z3:ALL2.PROC")
8703 field(LNK4,
"$(P):LS01:Z4:ALL2.PROC")
8706 field(LNK5,
"$(P):LS01:Z5:ALL2.PROC")
8709 field(LNK6,
"$(P):LS01:Z6:ALL2.PROC")
8712 field(LNK7,
"$(P):LS01:Z7:ALL2.PROC")
8715 field(LNK8,
"$(P):LS01:Z8:ALL2.PROC")
8718 field(LNK9,
"$(P):LS01:Z9:ALL2.PROC")
8721 field(LNKA,
"$(P):LS01:Z10:ALL2.PROC")
8725 ###############################################
8726 # This is included in lakeshore336.template
8727 # This template is for outputs 1 and 2, which can provide heater power.
8729 ################################################################
8731 ################################################################
8734 ## Read the heater output value.
8737 field(DTYP,
"stream")
8738 field(SDIS,
"$(P):LS01:DISABLE_POLL")
8739 field(INP,
"@ls336.proto getHTR(2) L0 0")
8740 field(SCAN,
"5 second")
8743 info(archive,
"Monitor, 00:00:01, VAL")
8747 ## Define the strings and values for this record.
8749 record(mbbi,
"$(P):LS01:RANGE2") {
8751 field(ONST, "Range1/Low")
8752 field(TWST, "Range2/Medium")
8753 field(THST, "Range3/High")
8754 field(FRST, "Range4")
8755 field(FVST, "Range5")
8759 ## Define the strings and values for this record.
8761 record(mbbi,
"$(P):LS01:OMM2") {
8763 field(ONST, "Closed Loop PID")
8765 field(THST, "Open Loop")
8769 ## Define the strings and values for this record.
8771 record(mbbo,
"$(P):LS01:RANGE_S2") {
8773 field(ONST, "Range1/Low")
8774 field(TWST, "Range2/Medium")
8775 field(THST, "Range3/High")
8776 field(FRST, "Range4")
8777 field(FVST, "Range5")
8781 ## Define the strings and values for this record.
8783 record(mbbo,
"$(P):LS01:OMM_S2") {
8785 field(ONST, "Closed Loop PID")
8787 field(THST, "Open Loop")
8791 ## Read the heater status
8794 field(DTYP,
"stream")
8795 field(SDIS,
"$(P):LS01:DISABLE_POLL")
8796 field(SCAN,
"5 second")
8797 field(INP,
"@ls336.proto getHTRST(D5) L0 0")
8798 field(FLNK,
"$(P):LS01:HTRST2_CALC")
8799 info(archive,
"Monitor, 00:00:01, VAL")
8803 ## Cache the heater status because this is cleared on a read on the controller.
8806 field(INPA,
"$(P):LS01:HTRST2.VAL")
8807 field(CALC,
"A!=0?A:0")
8808 field(DOPT,
"Use CALC")
8809 field(OOPT,
"When Non-zero")
8810 field(OUT,
"$(P):LS01:HTRST2_CACHE.RVAL PP")
8813 field(DESC,
"Cached HTRST")
8814 field(DTYP,
"Raw Soft Channel")
8815 field(ZRST,
"No Error")
8817 field(ONST,
"Open Load")
8819 field(TWST,
"Short/Compliance")
8823 field(ONSV,
"MAJOR")
8824 field(TWSV,
"MAJOR")
8825 info(archive,
"Monitor, 00:00:01, VAL")
8829 ## Provide record to reset the cached value
8832 field(DESC,
"Reset Cached HTRST")
8834 field(OUT,
"$(P):LS01:HTRST2_CACHE.RVAL PP")
8837 ###############################################
8838 # Add in ZONE support
8839 ###############################################
8841 #######################################
8843 # Template to support reading and setting
8844 # controller ZONE parameters. It reads the ZONE
8845 # parameters into an array, then uses subArrays to
8846 # extract each parameter.
8848 # This template is used by the output template
8849 # and it needs the following macros:
8852 # OUT: output number
8854 #######################################
8857 ## Read the ZONE setting into an array (8 values)
8860 field(DTYP,
"stream")
8861 field(SDIS,
"$(P):LS01:DISABLE_POLL")
8862 field(INP,
"@ls336.proto getZONE(2,1) L0 0")
8863 field(SCAN,
"Passive")
8865 field(FTVL,
"DOUBLE")
8867 field(FLNK,
"$(P):LS01:Z1:UB2:ARRAY.PROC")
8871 ## Read the ZONE upper boundary setting.
8874 field(SCAN,
"Passive")
8875 field(FTVL,
"DOUBLE")
8876 field(INP,
"$(P):LS01:Z1:ALL2.VAL MS")
8881 field(FLNK,
"$(P):LS01:Z1:UB2.PROC")
8884 field(SCAN,
"Passive")
8885 field(INP,
"$(P):LS01:Z1:UB2:ARRAY.VAL MS")
8887 field(FLNK,
"$(P):LS01:Z1:P2:ARRAY.PROC")
8891 ## Read the ZONE P setting.
8894 field(SCAN,
"Passive")
8895 field(FTVL,
"DOUBLE")
8896 field(INP,
"$(P):LS01:Z1:ALL2.VAL MS")
8901 field(FLNK,
"$(P):LS01:Z1:P2.PROC")
8904 field(SCAN,
"Passive")
8905 field(INP,
"$(P):LS01:Z1:P2:ARRAY.VAL MS")
8907 field(FLNK,
"$(P):LS01:Z1:I2:ARRAY.PROC")
8911 ## Read the ZONE I setting.
8914 field(SCAN,
"Passive")
8915 field(FTVL,
"DOUBLE")
8916 field(INP,
"$(P):LS01:Z1:ALL2.VAL MS")
8921 field(FLNK,
"$(P):LS01:Z1:I2.PROC")
8924 field(SCAN,
"Passive")
8925 field(INP,
"$(P):LS01:Z1:I2:ARRAY.VAL MS")
8927 field(FLNK,
"$(P):LS01:Z1:D2:ARRAY.PROC")
8931 ## Read the ZONE D setting.
8934 field(SCAN,
"Passive")
8935 field(FTVL,
"DOUBLE")
8936 field(INP,
"$(P):LS01:Z1:ALL2.VAL MS")
8941 field(FLNK,
"$(P):LS01:Z1:D2.PROC")
8944 field(SCAN,
"Passive")
8945 field(INP,
"$(P):LS01:Z1:D2:ARRAY.VAL MS")
8947 field(FLNK,
"$(P):LS01:Z1:MOUT2:ARRAY.PROC")
8951 ## Read the ZONE MOUT setting.
8953 record(subArray,
"$(P):LS01:Z1:MOUT2:ARRAY") {
8954 field(SCAN,
"Passive")
8955 field(FTVL,
"DOUBLE")
8956 field(INP,
"$(P):LS01:Z1:ALL2.VAL MS")
8961 field(FLNK,
"$(P):LS01:Z1:MOUT2.PROC")
8964 field(SCAN,
"Passive")
8965 field(INP,
"$(P):LS01:Z1:MOUT2:ARRAY.VAL MS")
8967 field(FLNK,
"$(P):LS01:Z1:RANGE2:ARRAY.PROC")
8971 ## Read the ZONE RANGE setting.
8973 record(subArray,
"$(P):LS01:Z1:RANGE2:ARRAY") {
8974 field(SCAN,
"Passive")
8975 field(FTVL,
"DOUBLE")
8976 field(INP,
"$(P):LS01:Z1:ALL2.VAL MS")
8981 field(FLNK,
"$(P):LS01:Z1:RANGE2.PROC")
8984 field(INP,
"$(P):LS01:Z1:RANGE2:ARRAY.VAL")
8985 field(SCAN,
"Passive")
8988 field(ONST,
"Range1/Low")
8990 field(TWST,
"Range2/Medium")
8992 field(THST,
"Range3/High")
8994 field(FRST,
"Range4")
8996 field(FVST,
"Range5")
8998 field(FLNK,
"$(P):LS01:Z1:INPUT2:ARRAY.PROC")
9002 ## Read the ZONE INPUT setting.
9004 record(subArray,
"$(P):LS01:Z1:INPUT2:ARRAY") {
9005 field(SCAN,
"Passive")
9006 field(FTVL,
"DOUBLE")
9007 field(INP,
"$(P):LS01:Z1:ALL2.VAL MS")
9012 field(FLNK,
"$(P):LS01:Z1:INPUT2.PROC")
9015 field(INP,
"$(P):LS01:Z1:INPUT2:ARRAY.VAL")
9016 field(SCAN,
"Passive")
9019 field(ONST,
"Input A")
9021 field(TWST,
"Input B")
9023 field(THST,
"Input C")
9025 field(FRST,
"Input D")
9027 field(FVST,
"Input D2")
9029 field(SXST,
"Input D3")
9031 field(SVST,
"Input D4")
9033 field(EIST,
"Input D5")
9035 field(FLNK,
"$(P):LS01:Z1:RATE2:ARRAY.PROC")
9039 ## Read the ZONE RATE setting.
9041 record(subArray,
"$(P):LS01:Z1:RATE2:ARRAY") {
9042 field(SCAN,
"Passive")
9043 field(FTVL,
"DOUBLE")
9044 field(INP,
"$(P):LS01:Z1:ALL2.VAL MS")
9049 field(FLNK,
"$(P):LS01:Z1:RATE2.PROC")
9052 field(SCAN,
"Passive")
9053 field(INP,
"$(P):LS01:Z1:RATE2:ARRAY.VAL MS")
9055 field(FLNK,
"$(P):LS01:Z1:INITCALC2.PROC")
9058 ##############################################################
9060 ## Populate the write records below with the current values.
9061 ## Only do this once at startup.
9063 ###############################################################
9069 field(DOPT,
"Use OCAL")
9070 field(OOPT,
"When Zero")
9072 field(OUT,
"$(P):LS01:Z1:INITUB2.PROC")
9076 field(OMSL,
"closed_loop")
9077 field(DOL,
"$(P):LS01:Z1:UB2.VAL")
9078 field(OUTA,
"$(P):LS01:Z1:UB_S2.VAL PP")
9079 field(FLNK,
"$(P):LS01:Z1:INITP2.PROC")
9082 field(OMSL,
"closed_loop")
9083 field(DOL,
"$(P):LS01:Z1:P2.VAL")
9084 field(OUTA,
"$(P):LS01:Z1:P_S2.VAL PP")
9085 field(FLNK,
"$(P):LS01:Z1:INITI2.PROC")
9088 field(OMSL,
"closed_loop")
9089 field(DOL,
"$(P):LS01:Z1:I2.VAL")
9090 field(OUTA,
"$(P):LS01:Z1:I_S2.VAL PP")
9091 field(FLNK,
"$(P):LS01:Z1:INITD2.PROC")
9094 field(OMSL,
"closed_loop")
9095 field(DOL,
"$(P):LS01:Z1:D2.VAL")
9096 field(OUTA,
"$(P):LS01:Z1:D_S2.VAL PP")
9097 field(FLNK,
"$(P):LS01:Z1:INITMOUT2.PROC")
9100 field(OMSL,
"closed_loop")
9101 field(DOL,
"$(P):LS01:Z1:MOUT2.VAL")
9102 field(OUTA,
"$(P):LS01:Z1:MOUT_S2.VAL PP")
9103 field(FLNK,
"$(P):LS01:Z1:INITRANGE2.PROC")
9106 field(OMSL,
"closed_loop")
9107 field(DOL,
"$(P):LS01:Z1:RANGE2.VAL")
9108 field(OUTA,
"$(P):LS01:Z1:RANGE_S2.VAL PP")
9109 field(FLNK,
"$(P):LS01:Z1:INITINPUT2.PROC")
9112 field(OMSL,
"closed_loop")
9113 field(DOL,
"$(P):LS01:Z1:INPUT2.VAL")
9114 field(OUTA,
"$(P):LS01:Z1:INPUT_S2.VAL PP")
9115 field(FLNK,
"$(P):LS01:Z1:INITRATE2.PROC")
9118 field(OMSL,
"closed_loop")
9119 field(DOL,
"$(P):LS01:Z1:RATE2.VAL")
9120 field(OUTA,
"$(P):LS01:Z1:RATE_S2.VAL PP")
9121 field(FLNK,
"$(P):LS01:Z1:INITCOUNT2.PROC")
9126 field(OUTA,
"$(P):LS01:Z1:INITCALC2.A")
9131 #############################################
9132 # Write records. There is a calcout record to
9133 # do the actual write.
9134 #############################################
9137 ## Set the ZONE upper boundary setting.
9140 field(SCAN,
"Passive")
9142 field(SDIS,
"$(P):LS01:DISABLE")
9146 ## Set the ZONE P setting.
9149 field(SCAN,
"Passive")
9151 field(SDIS,
"$(P):LS01:DISABLE")
9155 ## Set the ZONE I setting.
9158 field(SCAN,
"Passive")
9160 field(SDIS,
"$(P):LS01:DISABLE")
9164 ## Set the ZONE D setting.
9167 field(SCAN,
"Passive")
9169 field(SDIS,
"$(P):LS01:DISABLE")
9173 ## Set the ZONE MOUT setting.
9176 field(SCAN,
"Passive")
9178 field(SDIS,
"$(P):LS01:DISABLE")
9182 ## Set the ZONE RANGE setting.
9185 field(SCAN,
"Passive")
9188 field(ONST,
"Range1/Low")
9190 field(TWST,
"Range2/Medium")
9192 field(THST,
"Range3/High")
9194 field(FRST,
"Range4")
9196 field(FVST,
"Range5")
9198 field(SDIS,
"$(P):LS01:DISABLE")
9202 ## Set the ZONE INPUT setting.
9207 field(ONST,
"Input A")
9209 field(TWST,
"Input B")
9211 field(THST,
"Input C")
9213 field(FRST,
"Input D")
9215 field(FVST,
"Input D2")
9217 field(SXST,
"Input D3")
9219 field(SVST,
"Input D4")
9221 field(EIST,
"Input D5")
9223 field(SDIS,
"$(P):LS01:DISABLE")
9227 ## Set the ZONE RATE setting.
9230 field(SCAN,
"Passive")
9232 field(SDIS,
"$(P):LS01:DISABLE")
9236 ## Record to write the ZONE parameters.
9239 field(INPA,
"$(P):LS01:Z1:UB_S2")
9240 field(INPB,
"$(P):LS01:Z1:P_S2")
9241 field(INPC,
"$(P):LS01:Z1:I_S2")
9242 field(INPD,
"$(P):LS01:Z1:D_S2")
9243 field(INPE,
"$(P):LS01:Z1:MOUT_S2")
9244 field(INPF,
"$(P):LS01:Z1:RANGE_S2")
9245 field(INPG,
"$(P):LS01:Z1:INPUT_S2")
9246 field(INPH,
"$(P):LS01:Z1:RATE_S2")
9248 field(DTYP,
"stream")
9249 field(OUT,
"@ls336.proto setZONE(2,1) L0 0")
9250 field(SDIS,
"$(P):LS01:DISABLE")
9251 field(FLNK,
"$(P):LS01:Z1:ALL2.PROC")
9263 #######################################
9265 # Template to support reading and setting
9266 # controller ZONE parameters. It reads the ZONE
9267 # parameters into an array, then uses subArrays to
9268 # extract each parameter.
9270 # This template is used by the output template
9271 # and it needs the following macros:
9274 # OUT: output number
9276 #######################################
9279 ## Read the ZONE setting into an array (8 values)
9282 field(DTYP,
"stream")
9283 field(SDIS,
"$(P):LS01:DISABLE_POLL")
9284 field(INP,
"@ls336.proto getZONE(2,2) L0 0")
9285 field(SCAN,
"Passive")
9287 field(FTVL,
"DOUBLE")
9289 field(FLNK,
"$(P):LS01:Z2:UB2:ARRAY.PROC")
9293 ## Read the ZONE upper boundary setting.
9296 field(SCAN,
"Passive")
9297 field(FTVL,
"DOUBLE")
9298 field(INP,
"$(P):LS01:Z2:ALL2.VAL MS")
9303 field(FLNK,
"$(P):LS01:Z2:UB2.PROC")
9306 field(SCAN,
"Passive")
9307 field(INP,
"$(P):LS01:Z2:UB2:ARRAY.VAL MS")
9309 field(FLNK,
"$(P):LS01:Z2:P2:ARRAY.PROC")
9313 ## Read the ZONE P setting.
9316 field(SCAN,
"Passive")
9317 field(FTVL,
"DOUBLE")
9318 field(INP,
"$(P):LS01:Z2:ALL2.VAL MS")
9323 field(FLNK,
"$(P):LS01:Z2:P2.PROC")
9326 field(SCAN,
"Passive")
9327 field(INP,
"$(P):LS01:Z2:P2:ARRAY.VAL MS")
9329 field(FLNK,
"$(P):LS01:Z2:I2:ARRAY.PROC")
9333 ## Read the ZONE I setting.
9336 field(SCAN,
"Passive")
9337 field(FTVL,
"DOUBLE")
9338 field(INP,
"$(P):LS01:Z2:ALL2.VAL MS")
9343 field(FLNK,
"$(P):LS01:Z2:I2.PROC")
9346 field(SCAN,
"Passive")
9347 field(INP,
"$(P):LS01:Z2:I2:ARRAY.VAL MS")
9349 field(FLNK,
"$(P):LS01:Z2:D2:ARRAY.PROC")
9353 ## Read the ZONE D setting.
9356 field(SCAN,
"Passive")
9357 field(FTVL,
"DOUBLE")
9358 field(INP,
"$(P):LS01:Z2:ALL2.VAL MS")
9363 field(FLNK,
"$(P):LS01:Z2:D2.PROC")
9366 field(SCAN,
"Passive")
9367 field(INP,
"$(P):LS01:Z2:D2:ARRAY.VAL MS")
9369 field(FLNK,
"$(P):LS01:Z2:MOUT2:ARRAY.PROC")
9373 ## Read the ZONE MOUT setting.
9375 record(subArray,
"$(P):LS01:Z2:MOUT2:ARRAY") {
9376 field(SCAN,
"Passive")
9377 field(FTVL,
"DOUBLE")
9378 field(INP,
"$(P):LS01:Z2:ALL2.VAL MS")
9383 field(FLNK,
"$(P):LS01:Z2:MOUT2.PROC")
9386 field(SCAN,
"Passive")
9387 field(INP,
"$(P):LS01:Z2:MOUT2:ARRAY.VAL MS")
9389 field(FLNK,
"$(P):LS01:Z2:RANGE2:ARRAY.PROC")
9393 ## Read the ZONE RANGE setting.
9395 record(subArray,
"$(P):LS01:Z2:RANGE2:ARRAY") {
9396 field(SCAN,
"Passive")
9397 field(FTVL,
"DOUBLE")
9398 field(INP,
"$(P):LS01:Z2:ALL2.VAL MS")
9403 field(FLNK,
"$(P):LS01:Z2:RANGE2.PROC")
9406 field(INP,
"$(P):LS01:Z2:RANGE2:ARRAY.VAL")
9407 field(SCAN,
"Passive")
9410 field(ONST,
"Range1/Low")
9412 field(TWST,
"Range2/Medium")
9414 field(THST,
"Range3/High")
9416 field(FRST,
"Range4")
9418 field(FVST,
"Range5")
9420 field(FLNK,
"$(P):LS01:Z2:INPUT2:ARRAY.PROC")
9424 ## Read the ZONE INPUT setting.
9426 record(subArray,
"$(P):LS01:Z2:INPUT2:ARRAY") {
9427 field(SCAN,
"Passive")
9428 field(FTVL,
"DOUBLE")
9429 field(INP,
"$(P):LS01:Z2:ALL2.VAL MS")
9434 field(FLNK,
"$(P):LS01:Z2:INPUT2.PROC")
9437 field(INP,
"$(P):LS01:Z2:INPUT2:ARRAY.VAL")
9438 field(SCAN,
"Passive")
9441 field(ONST,
"Input A")
9443 field(TWST,
"Input B")
9445 field(THST,
"Input C")
9447 field(FRST,
"Input D")
9449 field(FVST,
"Input D2")
9451 field(SXST,
"Input D3")
9453 field(SVST,
"Input D4")
9455 field(EIST,
"Input D5")
9457 field(FLNK,
"$(P):LS01:Z2:RATE2:ARRAY.PROC")
9461 ## Read the ZONE RATE setting.
9463 record(subArray,
"$(P):LS01:Z2:RATE2:ARRAY") {
9464 field(SCAN,
"Passive")
9465 field(FTVL,
"DOUBLE")
9466 field(INP,
"$(P):LS01:Z2:ALL2.VAL MS")
9471 field(FLNK,
"$(P):LS01:Z2:RATE2.PROC")
9474 field(SCAN,
"Passive")
9475 field(INP,
"$(P):LS01:Z2:RATE2:ARRAY.VAL MS")
9477 field(FLNK,
"$(P):LS01:Z2:INITCALC2.PROC")
9480 ##############################################################
9482 ## Populate the write records below with the current values.
9483 ## Only do this once at startup.
9485 ###############################################################
9491 field(DOPT,
"Use OCAL")
9492 field(OOPT,
"When Zero")
9494 field(OUT,
"$(P):LS01:Z2:INITUB2.PROC")
9498 field(OMSL,
"closed_loop")
9499 field(DOL,
"$(P):LS01:Z2:UB2.VAL")
9500 field(OUTA,
"$(P):LS01:Z2:UB_S2.VAL PP")
9501 field(FLNK,
"$(P):LS01:Z2:INITP2.PROC")
9504 field(OMSL,
"closed_loop")
9505 field(DOL,
"$(P):LS01:Z2:P2.VAL")
9506 field(OUTA,
"$(P):LS01:Z2:P_S2.VAL PP")
9507 field(FLNK,
"$(P):LS01:Z2:INITI2.PROC")
9510 field(OMSL,
"closed_loop")
9511 field(DOL,
"$(P):LS01:Z2:I2.VAL")
9512 field(OUTA,
"$(P):LS01:Z2:I_S2.VAL PP")
9513 field(FLNK,
"$(P):LS01:Z2:INITD2.PROC")
9516 field(OMSL,
"closed_loop")
9517 field(DOL,
"$(P):LS01:Z2:D2.VAL")
9518 field(OUTA,
"$(P):LS01:Z2:D_S2.VAL PP")
9519 field(FLNK,
"$(P):LS01:Z2:INITMOUT2.PROC")
9522 field(OMSL,
"closed_loop")
9523 field(DOL,
"$(P):LS01:Z2:MOUT2.VAL")
9524 field(OUTA,
"$(P):LS01:Z2:MOUT_S2.VAL PP")
9525 field(FLNK,
"$(P):LS01:Z2:INITRANGE2.PROC")
9528 field(OMSL,
"closed_loop")
9529 field(DOL,
"$(P):LS01:Z2:RANGE2.VAL")
9530 field(OUTA,
"$(P):LS01:Z2:RANGE_S2.VAL PP")
9531 field(FLNK,
"$(P):LS01:Z2:INITINPUT2.PROC")
9534 field(OMSL,
"closed_loop")
9535 field(DOL,
"$(P):LS01:Z2:INPUT2.VAL")
9536 field(OUTA,
"$(P):LS01:Z2:INPUT_S2.VAL PP")
9537 field(FLNK,
"$(P):LS01:Z2:INITRATE2.PROC")
9540 field(OMSL,
"closed_loop")
9541 field(DOL,
"$(P):LS01:Z2:RATE2.VAL")
9542 field(OUTA,
"$(P):LS01:Z2:RATE_S2.VAL PP")
9543 field(FLNK,
"$(P):LS01:Z2:INITCOUNT2.PROC")
9548 field(OUTA,
"$(P):LS01:Z2:INITCALC2.A")
9553 #############################################
9554 # Write records. There is a calcout record to
9555 # do the actual write.
9556 #############################################
9559 ## Set the ZONE upper boundary setting.
9562 field(SCAN,
"Passive")
9564 field(SDIS,
"$(P):LS01:DISABLE")
9568 ## Set the ZONE P setting.
9571 field(SCAN,
"Passive")
9573 field(SDIS,
"$(P):LS01:DISABLE")
9577 ## Set the ZONE I setting.
9580 field(SCAN,
"Passive")
9582 field(SDIS,
"$(P):LS01:DISABLE")
9586 ## Set the ZONE D setting.
9589 field(SCAN,
"Passive")
9591 field(SDIS,
"$(P):LS01:DISABLE")
9595 ## Set the ZONE MOUT setting.
9598 field(SCAN,
"Passive")
9600 field(SDIS,
"$(P):LS01:DISABLE")
9604 ## Set the ZONE RANGE setting.
9607 field(SCAN,
"Passive")
9610 field(ONST,
"Range1/Low")
9612 field(TWST,
"Range2/Medium")
9614 field(THST,
"Range3/High")
9616 field(FRST,
"Range4")
9618 field(FVST,
"Range5")
9620 field(SDIS,
"$(P):LS01:DISABLE")
9624 ## Set the ZONE INPUT setting.
9629 field(ONST,
"Input A")
9631 field(TWST,
"Input B")
9633 field(THST,
"Input C")
9635 field(FRST,
"Input D")
9637 field(FVST,
"Input D2")
9639 field(SXST,
"Input D3")
9641 field(SVST,
"Input D4")
9643 field(EIST,
"Input D5")
9645 field(SDIS,
"$(P):LS01:DISABLE")
9649 ## Set the ZONE RATE setting.
9652 field(SCAN,
"Passive")
9654 field(SDIS,
"$(P):LS01:DISABLE")
9658 ## Record to write the ZONE parameters.
9661 field(INPA,
"$(P):LS01:Z2:UB_S2")
9662 field(INPB,
"$(P):LS01:Z2:P_S2")
9663 field(INPC,
"$(P):LS01:Z2:I_S2")
9664 field(INPD,
"$(P):LS01:Z2:D_S2")
9665 field(INPE,
"$(P):LS01:Z2:MOUT_S2")
9666 field(INPF,
"$(P):LS01:Z2:RANGE_S2")
9667 field(INPG,
"$(P):LS01:Z2:INPUT_S2")
9668 field(INPH,
"$(P):LS01:Z2:RATE_S2")
9670 field(DTYP,
"stream")
9671 field(OUT,
"@ls336.proto setZONE(2,2) L0 0")
9672 field(SDIS,
"$(P):LS01:DISABLE")
9673 field(FLNK,
"$(P):LS01:Z2:ALL2.PROC")
9685 #######################################
9687 # Template to support reading and setting
9688 # controller ZONE parameters. It reads the ZONE
9689 # parameters into an array, then uses subArrays to
9690 # extract each parameter.
9692 # This template is used by the output template
9693 # and it needs the following macros:
9696 # OUT: output number
9698 #######################################
9701 ## Read the ZONE setting into an array (8 values)
9703 record(waveform,
"$(P):LS01:Z2:ALL2") {
9704 field(DTYP,
"stream")
9705 field(SDIS, "$(P):LS01:DISABLE_POLL")
9706 field(INP, "@ls336.proto getZONE(2,2) L0 0")
9707 field(SCAN, "Passive")
9709 field(FTVL, "DOUBLE")
9711 field(FLNK, "$(P):LS01:Z2:UB2:ARRAY.PROC")
9715 ## Read the ZONE upper boundary setting.
9717 record(subArray,
"$(P):LS01:Z2:UB2:ARRAY") {
9718 field(SCAN,
"Passive")
9719 field(FTVL, "DOUBLE")
9720 field(INP, "$(P):LS01:Z2:ALL2.VAL MS")
9725 field(FLNK, "$(P):LS01:Z2:UB2.PROC")
9727 record(ai, "$(P):LS01:Z2:UB2") {
9728 field(SCAN,
"Passive")
9729 field(INP, "$(P):LS01:Z2:UB2:ARRAY.VAL MS")
9731 field(FLNK, "$(P):LS01:Z2:P2:ARRAY.PROC")
9735 ## Read the ZONE P setting.
9737 record(subArray,
"$(P):LS01:Z2:P2:ARRAY") {
9738 field(SCAN,
"Passive")
9739 field(FTVL, "DOUBLE")
9740 field(INP, "$(P):LS01:Z2:ALL2.VAL MS")
9745 field(FLNK, "$(P):LS01:Z2:P2.PROC")
9747 record(ai, "$(P):LS01:Z2:P2") {
9748 field(SCAN,
"Passive")
9749 field(INP, "$(P):LS01:Z2:P2:ARRAY.VAL MS")
9751 field(FLNK, "$(P):LS01:Z2:I2:ARRAY.PROC")
9755 ## Read the ZONE I setting.
9757 record(subArray,
"$(P):LS01:Z2:I2:ARRAY") {
9758 field(SCAN,
"Passive")
9759 field(FTVL, "DOUBLE")
9760 field(INP, "$(P):LS01:Z2:ALL2.VAL MS")
9765 field(FLNK, "$(P):LS01:Z2:I2.PROC")
9767 record(ai, "$(P):LS01:Z2:I2") {
9768 field(SCAN,
"Passive")
9769 field(INP, "$(P):LS01:Z2:I2:ARRAY.VAL MS")
9771 field(FLNK, "$(P):LS01:Z2:D2:ARRAY.PROC")
9775 ## Read the ZONE D setting.
9777 record(subArray,
"$(P):LS01:Z2:D2:ARRAY") {
9778 field(SCAN,
"Passive")
9779 field(FTVL, "DOUBLE")
9780 field(INP, "$(P):LS01:Z2:ALL2.VAL MS")
9785 field(FLNK, "$(P):LS01:Z2:D2.PROC")
9787 record(ai, "$(P):LS01:Z2:D2") {
9788 field(SCAN,
"Passive")
9789 field(INP, "$(P):LS01:Z2:D2:ARRAY.VAL MS")
9791 field(FLNK, "$(P):LS01:Z2:MOUT2:ARRAY.PROC")
9795 ## Read the ZONE MOUT setting.
9797 record(subArray,
"$(P):LS01:Z2:MOUT2:ARRAY") {
9798 field(SCAN,
"Passive")
9799 field(FTVL, "DOUBLE")
9800 field(INP, "$(P):LS01:Z2:ALL2.VAL MS")
9805 field(FLNK, "$(P):LS01:Z2:MOUT2.PROC")
9807 record(ai, "$(P):LS01:Z2:MOUT2") {
9808 field(SCAN,
"Passive")
9809 field(INP, "$(P):LS01:Z2:MOUT2:ARRAY.VAL MS")
9811 field(FLNK, "$(P):LS01:Z2:RANGE2:ARRAY.PROC")
9815 ## Read the ZONE RANGE setting.
9817 record(subArray,
"$(P):LS01:Z2:RANGE2:ARRAY") {
9818 field(SCAN,
"Passive")
9819 field(FTVL, "DOUBLE")
9820 field(INP, "$(P):LS01:Z2:ALL2.VAL MS")
9825 field(FLNK, "$(P):LS01:Z2:RANGE2.PROC")
9827 record(mbbi, "$(P):LS01:Z2:RANGE2") {
9828 field(INP,
"$(P):LS01:Z2:RANGE2:ARRAY.VAL")
9829 field(SCAN, "Passive")
9832 field(ONST, "Range1/Low")
9834 field(TWST, "Range2/Medium")
9836 field(THST, "Range3/High")
9838 field(FRST, "Range4")
9840 field(FVST, "Range5")
9842 field(FLNK, "$(P):LS01:Z2:INPUT2:ARRAY.PROC")
9846 ## Read the ZONE INPUT setting.
9848 record(subArray,
"$(P):LS01:Z2:INPUT2:ARRAY") {
9849 field(SCAN,
"Passive")
9850 field(FTVL, "DOUBLE")
9851 field(INP, "$(P):LS01:Z2:ALL2.VAL MS")
9856 field(FLNK, "$(P):LS01:Z2:INPUT2.PROC")
9858 record(mbbi, "$(P):LS01:Z2:INPUT2") {
9859 field(INP,
"$(P):LS01:Z2:INPUT2:ARRAY.VAL")
9860 field(SCAN, "Passive")
9863 field(ONST, "Input A")
9865 field(TWST, "Input B")
9867 field(THST, "Input C")
9869 field(FRST, "Input D")
9871 field(FVST, "Input D2")
9873 field(SXST, "Input D3")
9875 field(SVST, "Input D4")
9877 field(EIST, "Input D5")
9879 field(FLNK, "$(P):LS01:Z2:RATE2:ARRAY.PROC")
9883 ## Read the ZONE RATE setting.
9885 record(subArray,
"$(P):LS01:Z2:RATE2:ARRAY") {
9886 field(SCAN,
"Passive")
9887 field(FTVL, "DOUBLE")
9888 field(INP, "$(P):LS01:Z2:ALL2.VAL MS")
9893 field(FLNK, "$(P):LS01:Z2:RATE2.PROC")
9895 record(ai, "$(P):LS01:Z2:RATE2") {
9896 field(SCAN,
"Passive")
9897 field(INP, "$(P):LS01:Z2:RATE2:ARRAY.VAL MS")
9899 field(FLNK, "$(P):LS01:Z2:INITCALC2.PROC")
9902 ##############################################################
9904 ## Populate the write records below with the current values.
9905 ## Only do this once at startup.
9907 ###############################################################
9909 record(calcout,
"$(P):LS01:Z2:INITCALC2") {
9913 field(DOPT, "Use OCAL")
9914 field(OOPT, "When Zero")
9916 field(OUT, "$(P):LS01:Z2:INITUB2.PROC")
9919 record(dfanout, "$(P):LS01:Z2:INITUB2") {
9920 field(OMSL,
"closed_loop")
9921 field(DOL, "$(P):LS01:Z2:UB2.VAL")
9922 field(OUTA, "$(P):LS01:Z2:UB_S2.VAL PP")
9923 field(FLNK, "$(P):LS01:Z2:INITP2.PROC")
9925 record(dfanout, "$(P):LS01:Z2:INITP2") {
9926 field(OMSL,
"closed_loop")
9927 field(DOL, "$(P):LS01:Z2:P2.VAL")
9928 field(OUTA, "$(P):LS01:Z2:P_S2.VAL PP")
9929 field(FLNK, "$(P):LS01:Z2:INITI2.PROC")
9931 record(dfanout, "$(P):LS01:Z2:INITI2") {
9932 field(OMSL,
"closed_loop")
9933 field(DOL, "$(P):LS01:Z2:I2.VAL")
9934 field(OUTA, "$(P):LS01:Z2:I_S2.VAL PP")
9935 field(FLNK, "$(P):LS01:Z2:INITD2.PROC")
9937 record(dfanout, "$(P):LS01:Z2:INITD2") {
9938 field(OMSL,
"closed_loop")
9939 field(DOL, "$(P):LS01:Z2:D2.VAL")
9940 field(OUTA, "$(P):LS01:Z2:D_S2.VAL PP")
9941 field(FLNK, "$(P):LS01:Z2:INITMOUT2.PROC")
9943 record(dfanout, "$(P):LS01:Z2:INITMOUT2") {
9944 field(OMSL,
"closed_loop")
9945 field(DOL, "$(P):LS01:Z2:MOUT2.VAL")
9946 field(OUTA, "$(P):LS01:Z2:MOUT_S2.VAL PP")
9947 field(FLNK, "$(P):LS01:Z2:INITRANGE2.PROC")
9949 record(dfanout, "$(P):LS01:Z2:INITRANGE2") {
9950 field(OMSL,
"closed_loop")
9951 field(DOL, "$(P):LS01:Z2:RANGE2.VAL")
9952 field(OUTA, "$(P):LS01:Z2:RANGE_S2.VAL PP")
9953 field(FLNK, "$(P):LS01:Z2:INITINPUT2.PROC")
9955 record(dfanout, "$(P):LS01:Z2:INITINPUT2") {
9956 field(OMSL,
"closed_loop")
9957 field(DOL, "$(P):LS01:Z2:INPUT2.VAL")
9958 field(OUTA, "$(P):LS01:Z2:INPUT_S2.VAL PP")
9959 field(FLNK, "$(P):LS01:Z2:INITRATE2.PROC")
9961 record(dfanout, "$(P):LS01:Z2:INITRATE2") {
9962 field(OMSL,
"closed_loop")
9963 field(DOL, "$(P):LS01:Z2:RATE2.VAL")
9964 field(OUTA, "$(P):LS01:Z2:RATE_S2.VAL PP")
9965 field(FLNK, "$(P):LS01:Z2:INITCOUNT2.PROC")
9968 record(dfanout, "$(P):LS01:Z2:INITCOUNT2") {
9970 field(OUTA, "$(P):LS01:Z2:INITCALC2.A")
9975 #############################################
9976 # Write records. There is a calcout record to
9977 # do the actual write.
9978 #############################################
9981 ## Set the ZONE upper boundary setting.
9983 record(ao,
"$(P):LS01:Z2:UB_S2") {
9984 field(SCAN,
"Passive")
9986 field(SDIS, "$(P):LS01:DISABLE")
9990 ## Set the ZONE P setting.
9992 record(ao,
"$(P):LS01:Z2:P_S2") {
9993 field(SCAN,
"Passive")
9995 field(SDIS, "$(P):LS01:DISABLE")
9999 ## Set the ZONE I setting.
10001 record(ao,
"$(P):LS01:Z2:I_S2") {
10002 field(SCAN,
"Passive")
10004 field(SDIS, "$(P):LS01:DISABLE")
10008 ## Set the ZONE D setting.
10010 record(ao,
"$(P):LS01:Z2:D_S2") {
10011 field(SCAN,
"Passive")
10013 field(SDIS, "$(P):LS01:DISABLE")
10017 ## Set the ZONE MOUT setting.
10019 record(ao,
"$(P):LS01:Z2:MOUT_S2") {
10020 field(SCAN,
"Passive")
10022 field(SDIS, "$(P):LS01:DISABLE")
10026 ## Set the ZONE RANGE setting.
10028 record(mbbo,
"$(P):LS01:Z2:RANGE_S2") {
10029 field(SCAN,
"Passive")
10032 field(ONST, "Range1/Low")
10034 field(TWST, "Range2/Medium")
10036 field(THST, "Range3/High")
10038 field(FRST, "Range4")
10040 field(FVST, "Range5")
10042 field(SDIS, "$(P):LS01:DISABLE")
10046 ## Set the ZONE INPUT setting.
10048 record(mbbo,
"$(P):LS01:Z2:INPUT_S2") {
10049 field(ZRST,
"None")
10051 field(ONST, "Input A")
10053 field(TWST, "Input B")
10055 field(THST, "Input C")
10057 field(FRST, "Input D")
10059 field(FVST, "Input D2")
10061 field(SXST, "Input D3")
10063 field(SVST, "Input D4")
10065 field(EIST, "Input D5")
10067 field(SDIS, "$(P):LS01:DISABLE")
10071 ## Set the ZONE RATE setting.
10073 record(ao,
"$(P):LS01:Z2:RATE_S2") {
10074 field(SCAN,
"Passive")
10076 field(SDIS, "$(P):LS01:DISABLE")
10080 ## Record to write the ZONE parameters.
10082 record(calcout,
"$(P):LS01:Z2:SET2") {
10083 field(INPA,
"$(P):LS01:Z2:UB_S2")
10084 field(INPB, "$(P):LS01:Z2:P_S2")
10085 field(INPC, "$(P):LS01:Z2:I_S2")
10086 field(INPD, "$(P):LS01:Z2:D_S2")
10087 field(INPE, "$(P):LS01:Z2:MOUT_S2")
10088 field(INPF, "$(P):LS01:Z2:RANGE_S2")
10089 field(INPG, "$(P):LS01:Z2:INPUT_S2")
10090 field(INPH, "$(P):LS01:Z2:RATE_S2")
10092 field(DTYP, "stream")
10093 field(OUT, "@ls336.proto setZONE(2,2) L0 0")
10094 field(SDIS, "$(P):LS01:DISABLE")
10095 field(FLNK, "$(P):LS01:Z2:ALL2.PROC")
10107 #######################################
10109 # Template to support reading and setting
10110 # controller ZONE parameters. It reads the ZONE
10111 # parameters into an array, then uses subArrays to
10112 # extract each parameter.
10114 # This template is used by the output template
10115 # and it needs the following macros:
10117 # ZONE: zone number
10118 # OUT: output number
10120 #######################################
10123 ## Read the ZONE setting into an array (8 values)
10126 field(DTYP,
"stream")
10127 field(SDIS,
"$(P):LS01:DISABLE_POLL")
10128 field(INP,
"@ls336.proto getZONE(2,3) L0 0")
10129 field(SCAN,
"Passive")
10131 field(FTVL,
"DOUBLE")
10133 field(FLNK,
"$(P):LS01:Z3:UB2:ARRAY.PROC")
10137 ## Read the ZONE upper boundary setting.
10140 field(SCAN,
"Passive")
10141 field(FTVL,
"DOUBLE")
10142 field(INP,
"$(P):LS01:Z3:ALL2.VAL MS")
10147 field(FLNK,
"$(P):LS01:Z3:UB2.PROC")
10150 field(SCAN,
"Passive")
10151 field(INP,
"$(P):LS01:Z3:UB2:ARRAY.VAL MS")
10153 field(FLNK,
"$(P):LS01:Z3:P2:ARRAY.PROC")
10157 ## Read the ZONE P setting.
10160 field(SCAN,
"Passive")
10161 field(FTVL,
"DOUBLE")
10162 field(INP,
"$(P):LS01:Z3:ALL2.VAL MS")
10167 field(FLNK,
"$(P):LS01:Z3:P2.PROC")
10170 field(SCAN,
"Passive")
10171 field(INP,
"$(P):LS01:Z3:P2:ARRAY.VAL MS")
10173 field(FLNK,
"$(P):LS01:Z3:I2:ARRAY.PROC")
10177 ## Read the ZONE I setting.
10180 field(SCAN,
"Passive")
10181 field(FTVL,
"DOUBLE")
10182 field(INP,
"$(P):LS01:Z3:ALL2.VAL MS")
10187 field(FLNK,
"$(P):LS01:Z3:I2.PROC")
10190 field(SCAN,
"Passive")
10191 field(INP,
"$(P):LS01:Z3:I2:ARRAY.VAL MS")
10193 field(FLNK,
"$(P):LS01:Z3:D2:ARRAY.PROC")
10197 ## Read the ZONE D setting.
10200 field(SCAN,
"Passive")
10201 field(FTVL,
"DOUBLE")
10202 field(INP,
"$(P):LS01:Z3:ALL2.VAL MS")
10207 field(FLNK,
"$(P):LS01:Z3:D2.PROC")
10210 field(SCAN,
"Passive")
10211 field(INP,
"$(P):LS01:Z3:D2:ARRAY.VAL MS")
10213 field(FLNK,
"$(P):LS01:Z3:MOUT2:ARRAY.PROC")
10217 ## Read the ZONE MOUT setting.
10220 field(SCAN,
"Passive")
10221 field(FTVL,
"DOUBLE")
10222 field(INP,
"$(P):LS01:Z3:ALL2.VAL MS")
10227 field(FLNK,
"$(P):LS01:Z3:MOUT2.PROC")
10230 field(SCAN,
"Passive")
10231 field(INP,
"$(P):LS01:Z3:MOUT2:ARRAY.VAL MS")
10233 field(FLNK,
"$(P):LS01:Z3:RANGE2:ARRAY.PROC")
10237 ## Read the ZONE RANGE setting.
10240 field(SCAN,
"Passive")
10241 field(FTVL,
"DOUBLE")
10242 field(INP,
"$(P):LS01:Z3:ALL2.VAL MS")
10247 field(FLNK,
"$(P):LS01:Z3:RANGE2.PROC")
10250 field(INP,
"$(P):LS01:Z3:RANGE2:ARRAY.VAL")
10251 field(SCAN,
"Passive")
10254 field(ONST,
"Range1/Low")
10256 field(TWST,
"Range2/Medium")
10258 field(THST,
"Range3/High")
10260 field(FRST,
"Range4")
10262 field(FVST,
"Range5")
10264 field(FLNK,
"$(P):LS01:Z3:INPUT2:ARRAY.PROC")
10268 ## Read the ZONE INPUT setting.
10271 field(SCAN,
"Passive")
10272 field(FTVL,
"DOUBLE")
10273 field(INP,
"$(P):LS01:Z3:ALL2.VAL MS")
10278 field(FLNK,
"$(P):LS01:Z3:INPUT2.PROC")
10281 field(INP,
"$(P):LS01:Z3:INPUT2:ARRAY.VAL")
10282 field(SCAN,
"Passive")
10283 field(ZRST,
"None")
10285 field(ONST,
"Input A")
10287 field(TWST,
"Input B")
10289 field(THST,
"Input C")
10291 field(FRST,
"Input D")
10293 field(FVST,
"Input D2")
10295 field(SXST,
"Input D3")
10297 field(SVST,
"Input D4")
10299 field(EIST,
"Input D5")
10301 field(FLNK,
"$(P):LS01:Z3:RATE2:ARRAY.PROC")
10305 ## Read the ZONE RATE setting.
10308 field(SCAN,
"Passive")
10309 field(FTVL,
"DOUBLE")
10310 field(INP,
"$(P):LS01:Z3:ALL2.VAL MS")
10315 field(FLNK,
"$(P):LS01:Z3:RATE2.PROC")
10318 field(SCAN,
"Passive")
10319 field(INP,
"$(P):LS01:Z3:RATE2:ARRAY.VAL MS")
10321 field(FLNK,
"$(P):LS01:Z3:INITCALC2.PROC")
10324 ##############################################################
10326 ## Populate the write records below with the current values.
10327 ## Only do this once at startup.
10329 ###############################################################
10335 field(DOPT,
"Use OCAL")
10336 field(OOPT,
"When Zero")
10338 field(OUT,
"$(P):LS01:Z3:INITUB2.PROC")
10342 field(OMSL,
"closed_loop")
10343 field(DOL,
"$(P):LS01:Z3:UB2.VAL")
10344 field(OUTA,
"$(P):LS01:Z3:UB_S2.VAL PP")
10345 field(FLNK,
"$(P):LS01:Z3:INITP2.PROC")
10348 field(OMSL,
"closed_loop")
10349 field(DOL,
"$(P):LS01:Z3:P2.VAL")
10350 field(OUTA,
"$(P):LS01:Z3:P_S2.VAL PP")
10351 field(FLNK,
"$(P):LS01:Z3:INITI2.PROC")
10354 field(OMSL,
"closed_loop")
10355 field(DOL,
"$(P):LS01:Z3:I2.VAL")
10356 field(OUTA,
"$(P):LS01:Z3:I_S2.VAL PP")
10357 field(FLNK,
"$(P):LS01:Z3:INITD2.PROC")
10360 field(OMSL,
"closed_loop")
10361 field(DOL,
"$(P):LS01:Z3:D2.VAL")
10362 field(OUTA,
"$(P):LS01:Z3:D_S2.VAL PP")
10363 field(FLNK,
"$(P):LS01:Z3:INITMOUT2.PROC")
10366 field(OMSL,
"closed_loop")
10367 field(DOL,
"$(P):LS01:Z3:MOUT2.VAL")
10368 field(OUTA,
"$(P):LS01:Z3:MOUT_S2.VAL PP")
10369 field(FLNK,
"$(P):LS01:Z3:INITRANGE2.PROC")
10372 field(OMSL,
"closed_loop")
10373 field(DOL,
"$(P):LS01:Z3:RANGE2.VAL")
10374 field(OUTA,
"$(P):LS01:Z3:RANGE_S2.VAL PP")
10375 field(FLNK,
"$(P):LS01:Z3:INITINPUT2.PROC")
10378 field(OMSL,
"closed_loop")
10379 field(DOL,
"$(P):LS01:Z3:INPUT2.VAL")
10380 field(OUTA,
"$(P):LS01:Z3:INPUT_S2.VAL PP")
10381 field(FLNK,
"$(P):LS01:Z3:INITRATE2.PROC")
10384 field(OMSL,
"closed_loop")
10385 field(DOL,
"$(P):LS01:Z3:RATE2.VAL")
10386 field(OUTA,
"$(P):LS01:Z3:RATE_S2.VAL PP")
10387 field(FLNK,
"$(P):LS01:Z3:INITCOUNT2.PROC")
10392 field(OUTA,
"$(P):LS01:Z3:INITCALC2.A")
10397 #############################################
10398 # Write records. There is a calcout record to
10399 # do the actual write.
10400 #############################################
10403 ## Set the ZONE upper boundary setting.
10406 field(SCAN,
"Passive")
10408 field(SDIS,
"$(P):LS01:DISABLE")
10412 ## Set the ZONE P setting.
10415 field(SCAN,
"Passive")
10417 field(SDIS,
"$(P):LS01:DISABLE")
10421 ## Set the ZONE I setting.
10424 field(SCAN,
"Passive")
10426 field(SDIS,
"$(P):LS01:DISABLE")
10430 ## Set the ZONE D setting.
10433 field(SCAN,
"Passive")
10435 field(SDIS,
"$(P):LS01:DISABLE")
10439 ## Set the ZONE MOUT setting.
10442 field(SCAN,
"Passive")
10444 field(SDIS,
"$(P):LS01:DISABLE")
10448 ## Set the ZONE RANGE setting.
10451 field(SCAN,
"Passive")
10454 field(ONST,
"Range1/Low")
10456 field(TWST,
"Range2/Medium")
10458 field(THST,
"Range3/High")
10460 field(FRST,
"Range4")
10462 field(FVST,
"Range5")
10464 field(SDIS,
"$(P):LS01:DISABLE")
10468 ## Set the ZONE INPUT setting.
10471 field(ZRST,
"None")
10473 field(ONST,
"Input A")
10475 field(TWST,
"Input B")
10477 field(THST,
"Input C")
10479 field(FRST,
"Input D")
10481 field(FVST,
"Input D2")
10483 field(SXST,
"Input D3")
10485 field(SVST,
"Input D4")
10487 field(EIST,
"Input D5")
10489 field(SDIS,
"$(P):LS01:DISABLE")
10493 ## Set the ZONE RATE setting.
10496 field(SCAN,
"Passive")
10498 field(SDIS,
"$(P):LS01:DISABLE")
10502 ## Record to write the ZONE parameters.
10505 field(INPA,
"$(P):LS01:Z3:UB_S2")
10506 field(INPB,
"$(P):LS01:Z3:P_S2")
10507 field(INPC,
"$(P):LS01:Z3:I_S2")
10508 field(INPD,
"$(P):LS01:Z3:D_S2")
10509 field(INPE,
"$(P):LS01:Z3:MOUT_S2")
10510 field(INPF,
"$(P):LS01:Z3:RANGE_S2")
10511 field(INPG,
"$(P):LS01:Z3:INPUT_S2")
10512 field(INPH,
"$(P):LS01:Z3:RATE_S2")
10514 field(DTYP,
"stream")
10515 field(OUT,
"@ls336.proto setZONE(2,3) L0 0")
10516 field(SDIS,
"$(P):LS01:DISABLE")
10517 field(FLNK,
"$(P):LS01:Z3:ALL2.PROC")
10529 #######################################
10531 # Template to support reading and setting
10532 # controller ZONE parameters. It reads the ZONE
10533 # parameters into an array, then uses subArrays to
10534 # extract each parameter.
10536 # This template is used by the output template
10537 # and it needs the following macros:
10539 # ZONE: zone number
10540 # OUT: output number
10542 #######################################
10545 ## Read the ZONE setting into an array (8 values)
10548 field(DTYP,
"stream")
10549 field(SDIS,
"$(P):LS01:DISABLE_POLL")
10550 field(INP,
"@ls336.proto getZONE(2,4) L0 0")
10551 field(SCAN,
"Passive")
10553 field(FTVL,
"DOUBLE")
10555 field(FLNK,
"$(P):LS01:Z4:UB2:ARRAY.PROC")
10559 ## Read the ZONE upper boundary setting.
10562 field(SCAN,
"Passive")
10563 field(FTVL,
"DOUBLE")
10564 field(INP,
"$(P):LS01:Z4:ALL2.VAL MS")
10569 field(FLNK,
"$(P):LS01:Z4:UB2.PROC")
10572 field(SCAN,
"Passive")
10573 field(INP,
"$(P):LS01:Z4:UB2:ARRAY.VAL MS")
10575 field(FLNK,
"$(P):LS01:Z4:P2:ARRAY.PROC")
10579 ## Read the ZONE P setting.
10582 field(SCAN,
"Passive")
10583 field(FTVL,
"DOUBLE")
10584 field(INP,
"$(P):LS01:Z4:ALL2.VAL MS")
10589 field(FLNK,
"$(P):LS01:Z4:P2.PROC")
10592 field(SCAN,
"Passive")
10593 field(INP,
"$(P):LS01:Z4:P2:ARRAY.VAL MS")
10595 field(FLNK,
"$(P):LS01:Z4:I2:ARRAY.PROC")
10599 ## Read the ZONE I setting.
10602 field(SCAN,
"Passive")
10603 field(FTVL,
"DOUBLE")
10604 field(INP,
"$(P):LS01:Z4:ALL2.VAL MS")
10609 field(FLNK,
"$(P):LS01:Z4:I2.PROC")
10612 field(SCAN,
"Passive")
10613 field(INP,
"$(P):LS01:Z4:I2:ARRAY.VAL MS")
10615 field(FLNK,
"$(P):LS01:Z4:D2:ARRAY.PROC")
10619 ## Read the ZONE D setting.
10622 field(SCAN,
"Passive")
10623 field(FTVL,
"DOUBLE")
10624 field(INP,
"$(P):LS01:Z4:ALL2.VAL MS")
10629 field(FLNK,
"$(P):LS01:Z4:D2.PROC")
10632 field(SCAN,
"Passive")
10633 field(INP,
"$(P):LS01:Z4:D2:ARRAY.VAL MS")
10635 field(FLNK,
"$(P):LS01:Z4:MOUT2:ARRAY.PROC")
10639 ## Read the ZONE MOUT setting.
10642 field(SCAN,
"Passive")
10643 field(FTVL,
"DOUBLE")
10644 field(INP,
"$(P):LS01:Z4:ALL2.VAL MS")
10649 field(FLNK,
"$(P):LS01:Z4:MOUT2.PROC")
10652 field(SCAN,
"Passive")
10653 field(INP,
"$(P):LS01:Z4:MOUT2:ARRAY.VAL MS")
10655 field(FLNK,
"$(P):LS01:Z4:RANGE2:ARRAY.PROC")
10659 ## Read the ZONE RANGE setting.
10662 field(SCAN,
"Passive")
10663 field(FTVL,
"DOUBLE")
10664 field(INP,
"$(P):LS01:Z4:ALL2.VAL MS")
10669 field(FLNK,
"$(P):LS01:Z4:RANGE2.PROC")
10672 field(INP,
"$(P):LS01:Z4:RANGE2:ARRAY.VAL")
10673 field(SCAN,
"Passive")
10676 field(ONST,
"Range1/Low")
10678 field(TWST,
"Range2/Medium")
10680 field(THST,
"Range3/High")
10682 field(FRST,
"Range4")
10684 field(FVST,
"Range5")
10686 field(FLNK,
"$(P):LS01:Z4:INPUT2:ARRAY.PROC")
10690 ## Read the ZONE INPUT setting.
10693 field(SCAN,
"Passive")
10694 field(FTVL,
"DOUBLE")
10695 field(INP,
"$(P):LS01:Z4:ALL2.VAL MS")
10700 field(FLNK,
"$(P):LS01:Z4:INPUT2.PROC")
10703 field(INP,
"$(P):LS01:Z4:INPUT2:ARRAY.VAL")
10704 field(SCAN,
"Passive")
10705 field(ZRST,
"None")
10707 field(ONST,
"Input A")
10709 field(TWST,
"Input B")
10711 field(THST,
"Input C")
10713 field(FRST,
"Input D")
10715 field(FVST,
"Input D2")
10717 field(SXST,
"Input D3")
10719 field(SVST,
"Input D4")
10721 field(EIST,
"Input D5")
10723 field(FLNK,
"$(P):LS01:Z4:RATE2:ARRAY.PROC")
10727 ## Read the ZONE RATE setting.
10730 field(SCAN,
"Passive")
10731 field(FTVL,
"DOUBLE")
10732 field(INP,
"$(P):LS01:Z4:ALL2.VAL MS")
10737 field(FLNK,
"$(P):LS01:Z4:RATE2.PROC")
10740 field(SCAN,
"Passive")
10741 field(INP,
"$(P):LS01:Z4:RATE2:ARRAY.VAL MS")
10743 field(FLNK,
"$(P):LS01:Z4:INITCALC2.PROC")
10746 ##############################################################
10748 ## Populate the write records below with the current values.
10749 ## Only do this once at startup.
10751 ###############################################################
10757 field(DOPT,
"Use OCAL")
10758 field(OOPT,
"When Zero")
10760 field(OUT,
"$(P):LS01:Z4:INITUB2.PROC")
10764 field(OMSL,
"closed_loop")
10765 field(DOL,
"$(P):LS01:Z4:UB2.VAL")
10766 field(OUTA,
"$(P):LS01:Z4:UB_S2.VAL PP")
10767 field(FLNK,
"$(P):LS01:Z4:INITP2.PROC")
10770 field(OMSL,
"closed_loop")
10771 field(DOL,
"$(P):LS01:Z4:P2.VAL")
10772 field(OUTA,
"$(P):LS01:Z4:P_S2.VAL PP")
10773 field(FLNK,
"$(P):LS01:Z4:INITI2.PROC")
10776 field(OMSL,
"closed_loop")
10777 field(DOL,
"$(P):LS01:Z4:I2.VAL")
10778 field(OUTA,
"$(P):LS01:Z4:I_S2.VAL PP")
10779 field(FLNK,
"$(P):LS01:Z4:INITD2.PROC")
10782 field(OMSL,
"closed_loop")
10783 field(DOL,
"$(P):LS01:Z4:D2.VAL")
10784 field(OUTA,
"$(P):LS01:Z4:D_S2.VAL PP")
10785 field(FLNK,
"$(P):LS01:Z4:INITMOUT2.PROC")
10788 field(OMSL,
"closed_loop")
10789 field(DOL,
"$(P):LS01:Z4:MOUT2.VAL")
10790 field(OUTA,
"$(P):LS01:Z4:MOUT_S2.VAL PP")
10791 field(FLNK,
"$(P):LS01:Z4:INITRANGE2.PROC")
10794 field(OMSL,
"closed_loop")
10795 field(DOL,
"$(P):LS01:Z4:RANGE2.VAL")
10796 field(OUTA,
"$(P):LS01:Z4:RANGE_S2.VAL PP")
10797 field(FLNK,
"$(P):LS01:Z4:INITINPUT2.PROC")
10800 field(OMSL,
"closed_loop")
10801 field(DOL,
"$(P):LS01:Z4:INPUT2.VAL")
10802 field(OUTA,
"$(P):LS01:Z4:INPUT_S2.VAL PP")
10803 field(FLNK,
"$(P):LS01:Z4:INITRATE2.PROC")
10806 field(OMSL,
"closed_loop")
10807 field(DOL,
"$(P):LS01:Z4:RATE2.VAL")
10808 field(OUTA,
"$(P):LS01:Z4:RATE_S2.VAL PP")
10809 field(FLNK,
"$(P):LS01:Z4:INITCOUNT2.PROC")
10814 field(OUTA,
"$(P):LS01:Z4:INITCALC2.A")
10819 #############################################
10820 # Write records. There is a calcout record to
10821 # do the actual write.
10822 #############################################
10825 ## Set the ZONE upper boundary setting.
10828 field(SCAN,
"Passive")
10830 field(SDIS,
"$(P):LS01:DISABLE")
10834 ## Set the ZONE P setting.
10837 field(SCAN,
"Passive")
10839 field(SDIS,
"$(P):LS01:DISABLE")
10843 ## Set the ZONE I setting.
10846 field(SCAN,
"Passive")
10848 field(SDIS,
"$(P):LS01:DISABLE")
10852 ## Set the ZONE D setting.
10855 field(SCAN,
"Passive")
10857 field(SDIS,
"$(P):LS01:DISABLE")
10861 ## Set the ZONE MOUT setting.
10864 field(SCAN,
"Passive")
10866 field(SDIS,
"$(P):LS01:DISABLE")
10870 ## Set the ZONE RANGE setting.
10873 field(SCAN,
"Passive")
10876 field(ONST,
"Range1/Low")
10878 field(TWST,
"Range2/Medium")
10880 field(THST,
"Range3/High")
10882 field(FRST,
"Range4")
10884 field(FVST,
"Range5")
10886 field(SDIS,
"$(P):LS01:DISABLE")
10890 ## Set the ZONE INPUT setting.
10893 field(ZRST,
"None")
10895 field(ONST,
"Input A")
10897 field(TWST,
"Input B")
10899 field(THST,
"Input C")
10901 field(FRST,
"Input D")
10903 field(FVST,
"Input D2")
10905 field(SXST,
"Input D3")
10907 field(SVST,
"Input D4")
10909 field(EIST,
"Input D5")
10911 field(SDIS,
"$(P):LS01:DISABLE")
10915 ## Set the ZONE RATE setting.
10918 field(SCAN,
"Passive")
10920 field(SDIS,
"$(P):LS01:DISABLE")
10924 ## Record to write the ZONE parameters.
10927 field(INPA,
"$(P):LS01:Z4:UB_S2")
10928 field(INPB,
"$(P):LS01:Z4:P_S2")
10929 field(INPC,
"$(P):LS01:Z4:I_S2")
10930 field(INPD,
"$(P):LS01:Z4:D_S2")
10931 field(INPE,
"$(P):LS01:Z4:MOUT_S2")
10932 field(INPF,
"$(P):LS01:Z4:RANGE_S2")
10933 field(INPG,
"$(P):LS01:Z4:INPUT_S2")
10934 field(INPH,
"$(P):LS01:Z4:RATE_S2")
10936 field(DTYP,
"stream")
10937 field(OUT,
"@ls336.proto setZONE(2,4) L0 0")
10938 field(SDIS,
"$(P):LS01:DISABLE")
10939 field(FLNK,
"$(P):LS01:Z4:ALL2.PROC")
10951 #######################################
10953 # Template to support reading and setting
10954 # controller ZONE parameters. It reads the ZONE
10955 # parameters into an array, then uses subArrays to
10956 # extract each parameter.
10958 # This template is used by the output template
10959 # and it needs the following macros:
10961 # ZONE: zone number
10962 # OUT: output number
10964 #######################################
10967 ## Read the ZONE setting into an array (8 values)
10970 field(DTYP,
"stream")
10971 field(SDIS,
"$(P):LS01:DISABLE_POLL")
10972 field(INP,
"@ls336.proto getZONE(2,5) L0 0")
10973 field(SCAN,
"Passive")
10975 field(FTVL,
"DOUBLE")
10977 field(FLNK,
"$(P):LS01:Z5:UB2:ARRAY.PROC")
10981 ## Read the ZONE upper boundary setting.
10984 field(SCAN,
"Passive")
10985 field(FTVL,
"DOUBLE")
10986 field(INP,
"$(P):LS01:Z5:ALL2.VAL MS")
10991 field(FLNK,
"$(P):LS01:Z5:UB2.PROC")
10994 field(SCAN,
"Passive")
10995 field(INP,
"$(P):LS01:Z5:UB2:ARRAY.VAL MS")
10997 field(FLNK,
"$(P):LS01:Z5:P2:ARRAY.PROC")
11001 ## Read the ZONE P setting.
11004 field(SCAN,
"Passive")
11005 field(FTVL,
"DOUBLE")
11006 field(INP,
"$(P):LS01:Z5:ALL2.VAL MS")
11011 field(FLNK,
"$(P):LS01:Z5:P2.PROC")
11014 field(SCAN,
"Passive")
11015 field(INP,
"$(P):LS01:Z5:P2:ARRAY.VAL MS")
11017 field(FLNK,
"$(P):LS01:Z5:I2:ARRAY.PROC")
11021 ## Read the ZONE I setting.
11024 field(SCAN,
"Passive")
11025 field(FTVL,
"DOUBLE")
11026 field(INP,
"$(P):LS01:Z5:ALL2.VAL MS")
11031 field(FLNK,
"$(P):LS01:Z5:I2.PROC")
11034 field(SCAN,
"Passive")
11035 field(INP,
"$(P):LS01:Z5:I2:ARRAY.VAL MS")
11037 field(FLNK,
"$(P):LS01:Z5:D2:ARRAY.PROC")
11041 ## Read the ZONE D setting.
11044 field(SCAN,
"Passive")
11045 field(FTVL,
"DOUBLE")
11046 field(INP,
"$(P):LS01:Z5:ALL2.VAL MS")
11051 field(FLNK,
"$(P):LS01:Z5:D2.PROC")
11054 field(SCAN,
"Passive")
11055 field(INP,
"$(P):LS01:Z5:D2:ARRAY.VAL MS")
11057 field(FLNK,
"$(P):LS01:Z5:MOUT2:ARRAY.PROC")
11061 ## Read the ZONE MOUT setting.
11064 field(SCAN,
"Passive")
11065 field(FTVL,
"DOUBLE")
11066 field(INP,
"$(P):LS01:Z5:ALL2.VAL MS")
11071 field(FLNK,
"$(P):LS01:Z5:MOUT2.PROC")
11074 field(SCAN,
"Passive")
11075 field(INP,
"$(P):LS01:Z5:MOUT2:ARRAY.VAL MS")
11077 field(FLNK,
"$(P):LS01:Z5:RANGE2:ARRAY.PROC")
11081 ## Read the ZONE RANGE setting.
11084 field(SCAN,
"Passive")
11085 field(FTVL,
"DOUBLE")
11086 field(INP,
"$(P):LS01:Z5:ALL2.VAL MS")
11091 field(FLNK,
"$(P):LS01:Z5:RANGE2.PROC")
11094 field(INP,
"$(P):LS01:Z5:RANGE2:ARRAY.VAL")
11095 field(SCAN,
"Passive")
11098 field(ONST,
"Range1/Low")
11100 field(TWST,
"Range2/Medium")
11102 field(THST,
"Range3/High")
11104 field(FRST,
"Range4")
11106 field(FVST,
"Range5")
11108 field(FLNK,
"$(P):LS01:Z5:INPUT2:ARRAY.PROC")
11112 ## Read the ZONE INPUT setting.
11115 field(SCAN,
"Passive")
11116 field(FTVL,
"DOUBLE")
11117 field(INP,
"$(P):LS01:Z5:ALL2.VAL MS")
11122 field(FLNK,
"$(P):LS01:Z5:INPUT2.PROC")
11125 field(INP,
"$(P):LS01:Z5:INPUT2:ARRAY.VAL")
11126 field(SCAN,
"Passive")
11127 field(ZRST,
"None")
11129 field(ONST,
"Input A")
11131 field(TWST,
"Input B")
11133 field(THST,
"Input C")
11135 field(FRST,
"Input D")
11137 field(FVST,
"Input D2")
11139 field(SXST,
"Input D3")
11141 field(SVST,
"Input D4")
11143 field(EIST,
"Input D5")
11145 field(FLNK,
"$(P):LS01:Z5:RATE2:ARRAY.PROC")
11149 ## Read the ZONE RATE setting.
11152 field(SCAN,
"Passive")
11153 field(FTVL,
"DOUBLE")
11154 field(INP,
"$(P):LS01:Z5:ALL2.VAL MS")
11159 field(FLNK,
"$(P):LS01:Z5:RATE2.PROC")
11162 field(SCAN,
"Passive")
11163 field(INP,
"$(P):LS01:Z5:RATE2:ARRAY.VAL MS")
11165 field(FLNK,
"$(P):LS01:Z5:INITCALC2.PROC")
11168 ##############################################################
11170 ## Populate the write records below with the current values.
11171 ## Only do this once at startup.
11173 ###############################################################
11179 field(DOPT,
"Use OCAL")
11180 field(OOPT,
"When Zero")
11182 field(OUT,
"$(P):LS01:Z5:INITUB2.PROC")
11186 field(OMSL,
"closed_loop")
11187 field(DOL,
"$(P):LS01:Z5:UB2.VAL")
11188 field(OUTA,
"$(P):LS01:Z5:UB_S2.VAL PP")
11189 field(FLNK,
"$(P):LS01:Z5:INITP2.PROC")
11192 field(OMSL,
"closed_loop")
11193 field(DOL,
"$(P):LS01:Z5:P2.VAL")
11194 field(OUTA,
"$(P):LS01:Z5:P_S2.VAL PP")
11195 field(FLNK,
"$(P):LS01:Z5:INITI2.PROC")
11198 field(OMSL,
"closed_loop")
11199 field(DOL,
"$(P):LS01:Z5:I2.VAL")
11200 field(OUTA,
"$(P):LS01:Z5:I_S2.VAL PP")
11201 field(FLNK,
"$(P):LS01:Z5:INITD2.PROC")
11204 field(OMSL,
"closed_loop")
11205 field(DOL,
"$(P):LS01:Z5:D2.VAL")
11206 field(OUTA,
"$(P):LS01:Z5:D_S2.VAL PP")
11207 field(FLNK,
"$(P):LS01:Z5:INITMOUT2.PROC")
11210 field(OMSL,
"closed_loop")
11211 field(DOL,
"$(P):LS01:Z5:MOUT2.VAL")
11212 field(OUTA,
"$(P):LS01:Z5:MOUT_S2.VAL PP")
11213 field(FLNK,
"$(P):LS01:Z5:INITRANGE2.PROC")
11216 field(OMSL,
"closed_loop")
11217 field(DOL,
"$(P):LS01:Z5:RANGE2.VAL")
11218 field(OUTA,
"$(P):LS01:Z5:RANGE_S2.VAL PP")
11219 field(FLNK,
"$(P):LS01:Z5:INITINPUT2.PROC")
11222 field(OMSL,
"closed_loop")
11223 field(DOL,
"$(P):LS01:Z5:INPUT2.VAL")
11224 field(OUTA,
"$(P):LS01:Z5:INPUT_S2.VAL PP")
11225 field(FLNK,
"$(P):LS01:Z5:INITRATE2.PROC")
11228 field(OMSL,
"closed_loop")
11229 field(DOL,
"$(P):LS01:Z5:RATE2.VAL")
11230 field(OUTA,
"$(P):LS01:Z5:RATE_S2.VAL PP")
11231 field(FLNK,
"$(P):LS01:Z5:INITCOUNT2.PROC")
11236 field(OUTA,
"$(P):LS01:Z5:INITCALC2.A")
11241 #############################################
11242 # Write records. There is a calcout record to
11243 # do the actual write.
11244 #############################################
11247 ## Set the ZONE upper boundary setting.
11250 field(SCAN,
"Passive")
11252 field(SDIS,
"$(P):LS01:DISABLE")
11256 ## Set the ZONE P setting.
11259 field(SCAN,
"Passive")
11261 field(SDIS,
"$(P):LS01:DISABLE")
11265 ## Set the ZONE I setting.
11268 field(SCAN,
"Passive")
11270 field(SDIS,
"$(P):LS01:DISABLE")
11274 ## Set the ZONE D setting.
11277 field(SCAN,
"Passive")
11279 field(SDIS,
"$(P):LS01:DISABLE")
11283 ## Set the ZONE MOUT setting.
11286 field(SCAN,
"Passive")
11288 field(SDIS,
"$(P):LS01:DISABLE")
11292 ## Set the ZONE RANGE setting.
11295 field(SCAN,
"Passive")
11298 field(ONST,
"Range1/Low")
11300 field(TWST,
"Range2/Medium")
11302 field(THST,
"Range3/High")
11304 field(FRST,
"Range4")
11306 field(FVST,
"Range5")
11308 field(SDIS,
"$(P):LS01:DISABLE")
11312 ## Set the ZONE INPUT setting.
11315 field(ZRST,
"None")
11317 field(ONST,
"Input A")
11319 field(TWST,
"Input B")
11321 field(THST,
"Input C")
11323 field(FRST,
"Input D")
11325 field(FVST,
"Input D2")
11327 field(SXST,
"Input D3")
11329 field(SVST,
"Input D4")
11331 field(EIST,
"Input D5")
11333 field(SDIS,
"$(P):LS01:DISABLE")
11337 ## Set the ZONE RATE setting.
11340 field(SCAN,
"Passive")
11342 field(SDIS,
"$(P):LS01:DISABLE")
11346 ## Record to write the ZONE parameters.
11349 field(INPA,
"$(P):LS01:Z5:UB_S2")
11350 field(INPB,
"$(P):LS01:Z5:P_S2")
11351 field(INPC,
"$(P):LS01:Z5:I_S2")
11352 field(INPD,
"$(P):LS01:Z5:D_S2")
11353 field(INPE,
"$(P):LS01:Z5:MOUT_S2")
11354 field(INPF,
"$(P):LS01:Z5:RANGE_S2")
11355 field(INPG,
"$(P):LS01:Z5:INPUT_S2")
11356 field(INPH,
"$(P):LS01:Z5:RATE_S2")
11358 field(DTYP,
"stream")
11359 field(OUT,
"@ls336.proto setZONE(2,5) L0 0")
11360 field(SDIS,
"$(P):LS01:DISABLE")
11361 field(FLNK,
"$(P):LS01:Z5:ALL2.PROC")
11373 #######################################
11375 # Template to support reading and setting
11376 # controller ZONE parameters. It reads the ZONE
11377 # parameters into an array, then uses subArrays to
11378 # extract each parameter.
11380 # This template is used by the output template
11381 # and it needs the following macros:
11383 # ZONE: zone number
11384 # OUT: output number
11386 #######################################
11389 ## Read the ZONE setting into an array (8 values)
11392 field(DTYP,
"stream")
11393 field(SDIS,
"$(P):LS01:DISABLE_POLL")
11394 field(INP,
"@ls336.proto getZONE(2,6) L0 0")
11395 field(SCAN,
"Passive")
11397 field(FTVL,
"DOUBLE")
11399 field(FLNK,
"$(P):LS01:Z6:UB2:ARRAY.PROC")
11403 ## Read the ZONE upper boundary setting.
11406 field(SCAN,
"Passive")
11407 field(FTVL,
"DOUBLE")
11408 field(INP,
"$(P):LS01:Z6:ALL2.VAL MS")
11413 field(FLNK,
"$(P):LS01:Z6:UB2.PROC")
11416 field(SCAN,
"Passive")
11417 field(INP,
"$(P):LS01:Z6:UB2:ARRAY.VAL MS")
11419 field(FLNK,
"$(P):LS01:Z6:P2:ARRAY.PROC")
11423 ## Read the ZONE P setting.
11426 field(SCAN,
"Passive")
11427 field(FTVL,
"DOUBLE")
11428 field(INP,
"$(P):LS01:Z6:ALL2.VAL MS")
11433 field(FLNK,
"$(P):LS01:Z6:P2.PROC")
11436 field(SCAN,
"Passive")
11437 field(INP,
"$(P):LS01:Z6:P2:ARRAY.VAL MS")
11439 field(FLNK,
"$(P):LS01:Z6:I2:ARRAY.PROC")
11443 ## Read the ZONE I setting.
11446 field(SCAN,
"Passive")
11447 field(FTVL,
"DOUBLE")
11448 field(INP,
"$(P):LS01:Z6:ALL2.VAL MS")
11453 field(FLNK,
"$(P):LS01:Z6:I2.PROC")
11456 field(SCAN,
"Passive")
11457 field(INP,
"$(P):LS01:Z6:I2:ARRAY.VAL MS")
11459 field(FLNK,
"$(P):LS01:Z6:D2:ARRAY.PROC")
11463 ## Read the ZONE D setting.
11466 field(SCAN,
"Passive")
11467 field(FTVL,
"DOUBLE")
11468 field(INP,
"$(P):LS01:Z6:ALL2.VAL MS")
11473 field(FLNK,
"$(P):LS01:Z6:D2.PROC")
11476 field(SCAN,
"Passive")
11477 field(INP,
"$(P):LS01:Z6:D2:ARRAY.VAL MS")
11479 field(FLNK,
"$(P):LS01:Z6:MOUT2:ARRAY.PROC")
11483 ## Read the ZONE MOUT setting.
11486 field(SCAN,
"Passive")
11487 field(FTVL,
"DOUBLE")
11488 field(INP,
"$(P):LS01:Z6:ALL2.VAL MS")
11493 field(FLNK,
"$(P):LS01:Z6:MOUT2.PROC")
11496 field(SCAN,
"Passive")
11497 field(INP,
"$(P):LS01:Z6:MOUT2:ARRAY.VAL MS")
11499 field(FLNK,
"$(P):LS01:Z6:RANGE2:ARRAY.PROC")
11503 ## Read the ZONE RANGE setting.
11506 field(SCAN,
"Passive")
11507 field(FTVL,
"DOUBLE")
11508 field(INP,
"$(P):LS01:Z6:ALL2.VAL MS")
11513 field(FLNK,
"$(P):LS01:Z6:RANGE2.PROC")
11516 field(INP,
"$(P):LS01:Z6:RANGE2:ARRAY.VAL")
11517 field(SCAN,
"Passive")
11520 field(ONST,
"Range1/Low")
11522 field(TWST,
"Range2/Medium")
11524 field(THST,
"Range3/High")
11526 field(FRST,
"Range4")
11528 field(FVST,
"Range5")
11530 field(FLNK,
"$(P):LS01:Z6:INPUT2:ARRAY.PROC")
11534 ## Read the ZONE INPUT setting.
11537 field(SCAN,
"Passive")
11538 field(FTVL,
"DOUBLE")
11539 field(INP,
"$(P):LS01:Z6:ALL2.VAL MS")
11544 field(FLNK,
"$(P):LS01:Z6:INPUT2.PROC")
11547 field(INP,
"$(P):LS01:Z6:INPUT2:ARRAY.VAL")
11548 field(SCAN,
"Passive")
11549 field(ZRST,
"None")
11551 field(ONST,
"Input A")
11553 field(TWST,
"Input B")
11555 field(THST,
"Input C")
11557 field(FRST,
"Input D")
11559 field(FVST,
"Input D2")
11561 field(SXST,
"Input D3")
11563 field(SVST,
"Input D4")
11565 field(EIST,
"Input D5")
11567 field(FLNK,
"$(P):LS01:Z6:RATE2:ARRAY.PROC")
11571 ## Read the ZONE RATE setting.
11574 field(SCAN,
"Passive")
11575 field(FTVL,
"DOUBLE")
11576 field(INP,
"$(P):LS01:Z6:ALL2.VAL MS")
11581 field(FLNK,
"$(P):LS01:Z6:RATE2.PROC")
11584 field(SCAN,
"Passive")
11585 field(INP,
"$(P):LS01:Z6:RATE2:ARRAY.VAL MS")
11587 field(FLNK,
"$(P):LS01:Z6:INITCALC2.PROC")
11590 ##############################################################
11592 ## Populate the write records below with the current values.
11593 ## Only do this once at startup.
11595 ###############################################################
11601 field(DOPT,
"Use OCAL")
11602 field(OOPT,
"When Zero")
11604 field(OUT,
"$(P):LS01:Z6:INITUB2.PROC")
11608 field(OMSL,
"closed_loop")
11609 field(DOL,
"$(P):LS01:Z6:UB2.VAL")
11610 field(OUTA,
"$(P):LS01:Z6:UB_S2.VAL PP")
11611 field(FLNK,
"$(P):LS01:Z6:INITP2.PROC")
11614 field(OMSL,
"closed_loop")
11615 field(DOL,
"$(P):LS01:Z6:P2.VAL")
11616 field(OUTA,
"$(P):LS01:Z6:P_S2.VAL PP")
11617 field(FLNK,
"$(P):LS01:Z6:INITI2.PROC")
11620 field(OMSL,
"closed_loop")
11621 field(DOL,
"$(P):LS01:Z6:I2.VAL")
11622 field(OUTA,
"$(P):LS01:Z6:I_S2.VAL PP")
11623 field(FLNK,
"$(P):LS01:Z6:INITD2.PROC")
11626 field(OMSL,
"closed_loop")
11627 field(DOL,
"$(P):LS01:Z6:D2.VAL")
11628 field(OUTA,
"$(P):LS01:Z6:D_S2.VAL PP")
11629 field(FLNK,
"$(P):LS01:Z6:INITMOUT2.PROC")
11632 field(OMSL,
"closed_loop")
11633 field(DOL,
"$(P):LS01:Z6:MOUT2.VAL")
11634 field(OUTA,
"$(P):LS01:Z6:MOUT_S2.VAL PP")
11635 field(FLNK,
"$(P):LS01:Z6:INITRANGE2.PROC")
11638 field(OMSL,
"closed_loop")
11639 field(DOL,
"$(P):LS01:Z6:RANGE2.VAL")
11640 field(OUTA,
"$(P):LS01:Z6:RANGE_S2.VAL PP")
11641 field(FLNK,
"$(P):LS01:Z6:INITINPUT2.PROC")
11644 field(OMSL,
"closed_loop")
11645 field(DOL,
"$(P):LS01:Z6:INPUT2.VAL")
11646 field(OUTA,
"$(P):LS01:Z6:INPUT_S2.VAL PP")
11647 field(FLNK,
"$(P):LS01:Z6:INITRATE2.PROC")
11650 field(OMSL,
"closed_loop")
11651 field(DOL,
"$(P):LS01:Z6:RATE2.VAL")
11652 field(OUTA,
"$(P):LS01:Z6:RATE_S2.VAL PP")
11653 field(FLNK,
"$(P):LS01:Z6:INITCOUNT2.PROC")
11658 field(OUTA,
"$(P):LS01:Z6:INITCALC2.A")
11663 #############################################
11664 # Write records. There is a calcout record to
11665 # do the actual write.
11666 #############################################
11669 ## Set the ZONE upper boundary setting.
11672 field(SCAN,
"Passive")
11674 field(SDIS,
"$(P):LS01:DISABLE")
11678 ## Set the ZONE P setting.
11681 field(SCAN,
"Passive")
11683 field(SDIS,
"$(P):LS01:DISABLE")
11687 ## Set the ZONE I setting.
11690 field(SCAN,
"Passive")
11692 field(SDIS,
"$(P):LS01:DISABLE")
11696 ## Set the ZONE D setting.
11699 field(SCAN,
"Passive")
11701 field(SDIS,
"$(P):LS01:DISABLE")
11705 ## Set the ZONE MOUT setting.
11708 field(SCAN,
"Passive")
11710 field(SDIS,
"$(P):LS01:DISABLE")
11714 ## Set the ZONE RANGE setting.
11717 field(SCAN,
"Passive")
11720 field(ONST,
"Range1/Low")
11722 field(TWST,
"Range2/Medium")
11724 field(THST,
"Range3/High")
11726 field(FRST,
"Range4")
11728 field(FVST,
"Range5")
11730 field(SDIS,
"$(P):LS01:DISABLE")
11734 ## Set the ZONE INPUT setting.
11737 field(ZRST,
"None")
11739 field(ONST,
"Input A")
11741 field(TWST,
"Input B")
11743 field(THST,
"Input C")
11745 field(FRST,
"Input D")
11747 field(FVST,
"Input D2")
11749 field(SXST,
"Input D3")
11751 field(SVST,
"Input D4")
11753 field(EIST,
"Input D5")
11755 field(SDIS,
"$(P):LS01:DISABLE")
11759 ## Set the ZONE RATE setting.
11762 field(SCAN,
"Passive")
11764 field(SDIS,
"$(P):LS01:DISABLE")
11768 ## Record to write the ZONE parameters.
11771 field(INPA,
"$(P):LS01:Z6:UB_S2")
11772 field(INPB,
"$(P):LS01:Z6:P_S2")
11773 field(INPC,
"$(P):LS01:Z6:I_S2")
11774 field(INPD,
"$(P):LS01:Z6:D_S2")
11775 field(INPE,
"$(P):LS01:Z6:MOUT_S2")
11776 field(INPF,
"$(P):LS01:Z6:RANGE_S2")
11777 field(INPG,
"$(P):LS01:Z6:INPUT_S2")
11778 field(INPH,
"$(P):LS01:Z6:RATE_S2")
11780 field(DTYP,
"stream")
11781 field(OUT,
"@ls336.proto setZONE(2,6) L0 0")
11782 field(SDIS,
"$(P):LS01:DISABLE")
11783 field(FLNK,
"$(P):LS01:Z6:ALL2.PROC")
11795 #######################################
11797 # Template to support reading and setting
11798 # controller ZONE parameters. It reads the ZONE
11799 # parameters into an array, then uses subArrays to
11800 # extract each parameter.
11802 # This template is used by the output template
11803 # and it needs the following macros:
11805 # ZONE: zone number
11806 # OUT: output number
11808 #######################################
11811 ## Read the ZONE setting into an array (8 values)
11814 field(DTYP,
"stream")
11815 field(SDIS,
"$(P):LS01:DISABLE_POLL")
11816 field(INP,
"@ls336.proto getZONE(2,7) L0 0")
11817 field(SCAN,
"Passive")
11819 field(FTVL,
"DOUBLE")
11821 field(FLNK,
"$(P):LS01:Z7:UB2:ARRAY.PROC")
11825 ## Read the ZONE upper boundary setting.
11828 field(SCAN,
"Passive")
11829 field(FTVL,
"DOUBLE")
11830 field(INP,
"$(P):LS01:Z7:ALL2.VAL MS")
11835 field(FLNK,
"$(P):LS01:Z7:UB2.PROC")
11838 field(SCAN,
"Passive")
11839 field(INP,
"$(P):LS01:Z7:UB2:ARRAY.VAL MS")
11841 field(FLNK,
"$(P):LS01:Z7:P2:ARRAY.PROC")
11845 ## Read the ZONE P setting.
11848 field(SCAN,
"Passive")
11849 field(FTVL,
"DOUBLE")
11850 field(INP,
"$(P):LS01:Z7:ALL2.VAL MS")
11855 field(FLNK,
"$(P):LS01:Z7:P2.PROC")
11858 field(SCAN,
"Passive")
11859 field(INP,
"$(P):LS01:Z7:P2:ARRAY.VAL MS")
11861 field(FLNK,
"$(P):LS01:Z7:I2:ARRAY.PROC")
11865 ## Read the ZONE I setting.
11868 field(SCAN,
"Passive")
11869 field(FTVL,
"DOUBLE")
11870 field(INP,
"$(P):LS01:Z7:ALL2.VAL MS")
11875 field(FLNK,
"$(P):LS01:Z7:I2.PROC")
11878 field(SCAN,
"Passive")
11879 field(INP,
"$(P):LS01:Z7:I2:ARRAY.VAL MS")
11881 field(FLNK,
"$(P):LS01:Z7:D2:ARRAY.PROC")
11885 ## Read the ZONE D setting.
11888 field(SCAN,
"Passive")
11889 field(FTVL,
"DOUBLE")
11890 field(INP,
"$(P):LS01:Z7:ALL2.VAL MS")
11895 field(FLNK,
"$(P):LS01:Z7:D2.PROC")
11898 field(SCAN,
"Passive")
11899 field(INP,
"$(P):LS01:Z7:D2:ARRAY.VAL MS")
11901 field(FLNK,
"$(P):LS01:Z7:MOUT2:ARRAY.PROC")
11905 ## Read the ZONE MOUT setting.
11908 field(SCAN,
"Passive")
11909 field(FTVL,
"DOUBLE")
11910 field(INP,
"$(P):LS01:Z7:ALL2.VAL MS")
11915 field(FLNK,
"$(P):LS01:Z7:MOUT2.PROC")
11918 field(SCAN,
"Passive")
11919 field(INP,
"$(P):LS01:Z7:MOUT2:ARRAY.VAL MS")
11921 field(FLNK,
"$(P):LS01:Z7:RANGE2:ARRAY.PROC")
11925 ## Read the ZONE RANGE setting.
11928 field(SCAN,
"Passive")
11929 field(FTVL,
"DOUBLE")
11930 field(INP,
"$(P):LS01:Z7:ALL2.VAL MS")
11935 field(FLNK,
"$(P):LS01:Z7:RANGE2.PROC")
11938 field(INP,
"$(P):LS01:Z7:RANGE2:ARRAY.VAL")
11939 field(SCAN,
"Passive")
11942 field(ONST,
"Range1/Low")
11944 field(TWST,
"Range2/Medium")
11946 field(THST,
"Range3/High")
11948 field(FRST,
"Range4")
11950 field(FVST,
"Range5")
11952 field(FLNK,
"$(P):LS01:Z7:INPUT2:ARRAY.PROC")
11956 ## Read the ZONE INPUT setting.
11959 field(SCAN,
"Passive")
11960 field(FTVL,
"DOUBLE")
11961 field(INP,
"$(P):LS01:Z7:ALL2.VAL MS")
11966 field(FLNK,
"$(P):LS01:Z7:INPUT2.PROC")
11969 field(INP,
"$(P):LS01:Z7:INPUT2:ARRAY.VAL")
11970 field(SCAN,
"Passive")
11971 field(ZRST,
"None")
11973 field(ONST,
"Input A")
11975 field(TWST,
"Input B")
11977 field(THST,
"Input C")
11979 field(FRST,
"Input D")
11981 field(FVST,
"Input D2")
11983 field(SXST,
"Input D3")
11985 field(SVST,
"Input D4")
11987 field(EIST,
"Input D5")
11989 field(FLNK,
"$(P):LS01:Z7:RATE2:ARRAY.PROC")
11993 ## Read the ZONE RATE setting.
11996 field(SCAN,
"Passive")
11997 field(FTVL,
"DOUBLE")
11998 field(INP,
"$(P):LS01:Z7:ALL2.VAL MS")
12003 field(FLNK,
"$(P):LS01:Z7:RATE2.PROC")
12006 field(SCAN,
"Passive")
12007 field(INP,
"$(P):LS01:Z7:RATE2:ARRAY.VAL MS")
12009 field(FLNK,
"$(P):LS01:Z7:INITCALC2.PROC")
12012 ##############################################################
12014 ## Populate the write records below with the current values.
12015 ## Only do this once at startup.
12017 ###############################################################
12023 field(DOPT,
"Use OCAL")
12024 field(OOPT,
"When Zero")
12026 field(OUT,
"$(P):LS01:Z7:INITUB2.PROC")
12030 field(OMSL,
"closed_loop")
12031 field(DOL,
"$(P):LS01:Z7:UB2.VAL")
12032 field(OUTA,
"$(P):LS01:Z7:UB_S2.VAL PP")
12033 field(FLNK,
"$(P):LS01:Z7:INITP2.PROC")
12036 field(OMSL,
"closed_loop")
12037 field(DOL,
"$(P):LS01:Z7:P2.VAL")
12038 field(OUTA,
"$(P):LS01:Z7:P_S2.VAL PP")
12039 field(FLNK,
"$(P):LS01:Z7:INITI2.PROC")
12042 field(OMSL,
"closed_loop")
12043 field(DOL,
"$(P):LS01:Z7:I2.VAL")
12044 field(OUTA,
"$(P):LS01:Z7:I_S2.VAL PP")
12045 field(FLNK,
"$(P):LS01:Z7:INITD2.PROC")
12048 field(OMSL,
"closed_loop")
12049 field(DOL,
"$(P):LS01:Z7:D2.VAL")
12050 field(OUTA,
"$(P):LS01:Z7:D_S2.VAL PP")
12051 field(FLNK,
"$(P):LS01:Z7:INITMOUT2.PROC")
12054 field(OMSL,
"closed_loop")
12055 field(DOL,
"$(P):LS01:Z7:MOUT2.VAL")
12056 field(OUTA,
"$(P):LS01:Z7:MOUT_S2.VAL PP")
12057 field(FLNK,
"$(P):LS01:Z7:INITRANGE2.PROC")
12060 field(OMSL,
"closed_loop")
12061 field(DOL,
"$(P):LS01:Z7:RANGE2.VAL")
12062 field(OUTA,
"$(P):LS01:Z7:RANGE_S2.VAL PP")
12063 field(FLNK,
"$(P):LS01:Z7:INITINPUT2.PROC")
12066 field(OMSL,
"closed_loop")
12067 field(DOL,
"$(P):LS01:Z7:INPUT2.VAL")
12068 field(OUTA,
"$(P):LS01:Z7:INPUT_S2.VAL PP")
12069 field(FLNK,
"$(P):LS01:Z7:INITRATE2.PROC")
12072 field(OMSL,
"closed_loop")
12073 field(DOL,
"$(P):LS01:Z7:RATE2.VAL")
12074 field(OUTA,
"$(P):LS01:Z7:RATE_S2.VAL PP")
12075 field(FLNK,
"$(P):LS01:Z7:INITCOUNT2.PROC")
12080 field(OUTA,
"$(P):LS01:Z7:INITCALC2.A")
12085 #############################################
12086 # Write records. There is a calcout record to
12087 # do the actual write.
12088 #############################################
12091 ## Set the ZONE upper boundary setting.
12094 field(SCAN,
"Passive")
12096 field(SDIS,
"$(P):LS01:DISABLE")
12100 ## Set the ZONE P setting.
12103 field(SCAN,
"Passive")
12105 field(SDIS,
"$(P):LS01:DISABLE")
12109 ## Set the ZONE I setting.
12112 field(SCAN,
"Passive")
12114 field(SDIS,
"$(P):LS01:DISABLE")
12118 ## Set the ZONE D setting.
12121 field(SCAN,
"Passive")
12123 field(SDIS,
"$(P):LS01:DISABLE")
12127 ## Set the ZONE MOUT setting.
12130 field(SCAN,
"Passive")
12132 field(SDIS,
"$(P):LS01:DISABLE")
12136 ## Set the ZONE RANGE setting.
12139 field(SCAN,
"Passive")
12142 field(ONST,
"Range1/Low")
12144 field(TWST,
"Range2/Medium")
12146 field(THST,
"Range3/High")
12148 field(FRST,
"Range4")
12150 field(FVST,
"Range5")
12152 field(SDIS,
"$(P):LS01:DISABLE")
12156 ## Set the ZONE INPUT setting.
12159 field(ZRST,
"None")
12161 field(ONST,
"Input A")
12163 field(TWST,
"Input B")
12165 field(THST,
"Input C")
12167 field(FRST,
"Input D")
12169 field(FVST,
"Input D2")
12171 field(SXST,
"Input D3")
12173 field(SVST,
"Input D4")
12175 field(EIST,
"Input D5")
12177 field(SDIS,
"$(P):LS01:DISABLE")
12181 ## Set the ZONE RATE setting.
12184 field(SCAN,
"Passive")
12186 field(SDIS,
"$(P):LS01:DISABLE")
12190 ## Record to write the ZONE parameters.
12193 field(INPA,
"$(P):LS01:Z7:UB_S2")
12194 field(INPB,
"$(P):LS01:Z7:P_S2")
12195 field(INPC,
"$(P):LS01:Z7:I_S2")
12196 field(INPD,
"$(P):LS01:Z7:D_S2")
12197 field(INPE,
"$(P):LS01:Z7:MOUT_S2")
12198 field(INPF,
"$(P):LS01:Z7:RANGE_S2")
12199 field(INPG,
"$(P):LS01:Z7:INPUT_S2")
12200 field(INPH,
"$(P):LS01:Z7:RATE_S2")
12202 field(DTYP,
"stream")
12203 field(OUT,
"@ls336.proto setZONE(2,7) L0 0")
12204 field(SDIS,
"$(P):LS01:DISABLE")
12205 field(FLNK,
"$(P):LS01:Z7:ALL2.PROC")
12217 #######################################
12219 # Template to support reading and setting
12220 # controller ZONE parameters. It reads the ZONE
12221 # parameters into an array, then uses subArrays to
12222 # extract each parameter.
12224 # This template is used by the output template
12225 # and it needs the following macros:
12227 # ZONE: zone number
12228 # OUT: output number
12230 #######################################
12233 ## Read the ZONE setting into an array (8 values)
12236 field(DTYP,
"stream")
12237 field(SDIS,
"$(P):LS01:DISABLE_POLL")
12238 field(INP,
"@ls336.proto getZONE(2,8) L0 0")
12239 field(SCAN,
"Passive")
12241 field(FTVL,
"DOUBLE")
12243 field(FLNK,
"$(P):LS01:Z8:UB2:ARRAY.PROC")
12247 ## Read the ZONE upper boundary setting.
12250 field(SCAN,
"Passive")
12251 field(FTVL,
"DOUBLE")
12252 field(INP,
"$(P):LS01:Z8:ALL2.VAL MS")
12257 field(FLNK,
"$(P):LS01:Z8:UB2.PROC")
12260 field(SCAN,
"Passive")
12261 field(INP,
"$(P):LS01:Z8:UB2:ARRAY.VAL MS")
12263 field(FLNK,
"$(P):LS01:Z8:P2:ARRAY.PROC")
12267 ## Read the ZONE P setting.
12270 field(SCAN,
"Passive")
12271 field(FTVL,
"DOUBLE")
12272 field(INP,
"$(P):LS01:Z8:ALL2.VAL MS")
12277 field(FLNK,
"$(P):LS01:Z8:P2.PROC")
12280 field(SCAN,
"Passive")
12281 field(INP,
"$(P):LS01:Z8:P2:ARRAY.VAL MS")
12283 field(FLNK,
"$(P):LS01:Z8:I2:ARRAY.PROC")
12287 ## Read the ZONE I setting.
12290 field(SCAN,
"Passive")
12291 field(FTVL,
"DOUBLE")
12292 field(INP,
"$(P):LS01:Z8:ALL2.VAL MS")
12297 field(FLNK,
"$(P):LS01:Z8:I2.PROC")
12300 field(SCAN,
"Passive")
12301 field(INP,
"$(P):LS01:Z8:I2:ARRAY.VAL MS")
12303 field(FLNK,
"$(P):LS01:Z8:D2:ARRAY.PROC")
12307 ## Read the ZONE D setting.
12310 field(SCAN,
"Passive")
12311 field(FTVL,
"DOUBLE")
12312 field(INP,
"$(P):LS01:Z8:ALL2.VAL MS")
12317 field(FLNK,
"$(P):LS01:Z8:D2.PROC")
12320 field(SCAN,
"Passive")
12321 field(INP,
"$(P):LS01:Z8:D2:ARRAY.VAL MS")
12323 field(FLNK,
"$(P):LS01:Z8:MOUT2:ARRAY.PROC")
12327 ## Read the ZONE MOUT setting.
12330 field(SCAN,
"Passive")
12331 field(FTVL,
"DOUBLE")
12332 field(INP,
"$(P):LS01:Z8:ALL2.VAL MS")
12337 field(FLNK,
"$(P):LS01:Z8:MOUT2.PROC")
12340 field(SCAN,
"Passive")
12341 field(INP,
"$(P):LS01:Z8:MOUT2:ARRAY.VAL MS")
12343 field(FLNK,
"$(P):LS01:Z8:RANGE2:ARRAY.PROC")
12347 ## Read the ZONE RANGE setting.
12350 field(SCAN,
"Passive")
12351 field(FTVL,
"DOUBLE")
12352 field(INP,
"$(P):LS01:Z8:ALL2.VAL MS")
12357 field(FLNK,
"$(P):LS01:Z8:RANGE2.PROC")
12360 field(INP,
"$(P):LS01:Z8:RANGE2:ARRAY.VAL")
12361 field(SCAN,
"Passive")
12364 field(ONST,
"Range1/Low")
12366 field(TWST,
"Range2/Medium")
12368 field(THST,
"Range3/High")
12370 field(FRST,
"Range4")
12372 field(FVST,
"Range5")
12374 field(FLNK,
"$(P):LS01:Z8:INPUT2:ARRAY.PROC")
12378 ## Read the ZONE INPUT setting.
12381 field(SCAN,
"Passive")
12382 field(FTVL,
"DOUBLE")
12383 field(INP,
"$(P):LS01:Z8:ALL2.VAL MS")
12388 field(FLNK,
"$(P):LS01:Z8:INPUT2.PROC")
12391 field(INP,
"$(P):LS01:Z8:INPUT2:ARRAY.VAL")
12392 field(SCAN,
"Passive")
12393 field(ZRST,
"None")
12395 field(ONST,
"Input A")
12397 field(TWST,
"Input B")
12399 field(THST,
"Input C")
12401 field(FRST,
"Input D")
12403 field(FVST,
"Input D2")
12405 field(SXST,
"Input D3")
12407 field(SVST,
"Input D4")
12409 field(EIST,
"Input D5")
12411 field(FLNK,
"$(P):LS01:Z8:RATE2:ARRAY.PROC")
12415 ## Read the ZONE RATE setting.
12418 field(SCAN,
"Passive")
12419 field(FTVL,
"DOUBLE")
12420 field(INP,
"$(P):LS01:Z8:ALL2.VAL MS")
12425 field(FLNK,
"$(P):LS01:Z8:RATE2.PROC")
12428 field(SCAN,
"Passive")
12429 field(INP,
"$(P):LS01:Z8:RATE2:ARRAY.VAL MS")
12431 field(FLNK,
"$(P):LS01:Z8:INITCALC2.PROC")
12434 ##############################################################
12436 ## Populate the write records below with the current values.
12437 ## Only do this once at startup.
12439 ###############################################################
12445 field(DOPT,
"Use OCAL")
12446 field(OOPT,
"When Zero")
12448 field(OUT,
"$(P):LS01:Z8:INITUB2.PROC")
12452 field(OMSL,
"closed_loop")
12453 field(DOL,
"$(P):LS01:Z8:UB2.VAL")
12454 field(OUTA,
"$(P):LS01:Z8:UB_S2.VAL PP")
12455 field(FLNK,
"$(P):LS01:Z8:INITP2.PROC")
12458 field(OMSL,
"closed_loop")
12459 field(DOL,
"$(P):LS01:Z8:P2.VAL")
12460 field(OUTA,
"$(P):LS01:Z8:P_S2.VAL PP")
12461 field(FLNK,
"$(P):LS01:Z8:INITI2.PROC")
12464 field(OMSL,
"closed_loop")
12465 field(DOL,
"$(P):LS01:Z8:I2.VAL")
12466 field(OUTA,
"$(P):LS01:Z8:I_S2.VAL PP")
12467 field(FLNK,
"$(P):LS01:Z8:INITD2.PROC")
12470 field(OMSL,
"closed_loop")
12471 field(DOL,
"$(P):LS01:Z8:D2.VAL")
12472 field(OUTA,
"$(P):LS01:Z8:D_S2.VAL PP")
12473 field(FLNK,
"$(P):LS01:Z8:INITMOUT2.PROC")
12476 field(OMSL,
"closed_loop")
12477 field(DOL,
"$(P):LS01:Z8:MOUT2.VAL")
12478 field(OUTA,
"$(P):LS01:Z8:MOUT_S2.VAL PP")
12479 field(FLNK,
"$(P):LS01:Z8:INITRANGE2.PROC")
12482 field(OMSL,
"closed_loop")
12483 field(DOL,
"$(P):LS01:Z8:RANGE2.VAL")
12484 field(OUTA,
"$(P):LS01:Z8:RANGE_S2.VAL PP")
12485 field(FLNK,
"$(P):LS01:Z8:INITINPUT2.PROC")
12488 field(OMSL,
"closed_loop")
12489 field(DOL,
"$(P):LS01:Z8:INPUT2.VAL")
12490 field(OUTA,
"$(P):LS01:Z8:INPUT_S2.VAL PP")
12491 field(FLNK,
"$(P):LS01:Z8:INITRATE2.PROC")
12494 field(OMSL,
"closed_loop")
12495 field(DOL,
"$(P):LS01:Z8:RATE2.VAL")
12496 field(OUTA,
"$(P):LS01:Z8:RATE_S2.VAL PP")
12497 field(FLNK,
"$(P):LS01:Z8:INITCOUNT2.PROC")
12502 field(OUTA,
"$(P):LS01:Z8:INITCALC2.A")
12507 #############################################
12508 # Write records. There is a calcout record to
12509 # do the actual write.
12510 #############################################
12513 ## Set the ZONE upper boundary setting.
12516 field(SCAN,
"Passive")
12518 field(SDIS,
"$(P):LS01:DISABLE")
12522 ## Set the ZONE P setting.
12525 field(SCAN,
"Passive")
12527 field(SDIS,
"$(P):LS01:DISABLE")
12531 ## Set the ZONE I setting.
12534 field(SCAN,
"Passive")
12536 field(SDIS,
"$(P):LS01:DISABLE")
12540 ## Set the ZONE D setting.
12543 field(SCAN,
"Passive")
12545 field(SDIS,
"$(P):LS01:DISABLE")
12549 ## Set the ZONE MOUT setting.
12552 field(SCAN,
"Passive")
12554 field(SDIS,
"$(P):LS01:DISABLE")
12558 ## Set the ZONE RANGE setting.
12561 field(SCAN,
"Passive")
12564 field(ONST,
"Range1/Low")
12566 field(TWST,
"Range2/Medium")
12568 field(THST,
"Range3/High")
12570 field(FRST,
"Range4")
12572 field(FVST,
"Range5")
12574 field(SDIS,
"$(P):LS01:DISABLE")
12578 ## Set the ZONE INPUT setting.
12581 field(ZRST,
"None")
12583 field(ONST,
"Input A")
12585 field(TWST,
"Input B")
12587 field(THST,
"Input C")
12589 field(FRST,
"Input D")
12591 field(FVST,
"Input D2")
12593 field(SXST,
"Input D3")
12595 field(SVST,
"Input D4")
12597 field(EIST,
"Input D5")
12599 field(SDIS,
"$(P):LS01:DISABLE")
12603 ## Set the ZONE RATE setting.
12606 field(SCAN,
"Passive")
12608 field(SDIS,
"$(P):LS01:DISABLE")
12612 ## Record to write the ZONE parameters.
12615 field(INPA,
"$(P):LS01:Z8:UB_S2")
12616 field(INPB,
"$(P):LS01:Z8:P_S2")
12617 field(INPC,
"$(P):LS01:Z8:I_S2")
12618 field(INPD,
"$(P):LS01:Z8:D_S2")
12619 field(INPE,
"$(P):LS01:Z8:MOUT_S2")
12620 field(INPF,
"$(P):LS01:Z8:RANGE_S2")
12621 field(INPG,
"$(P):LS01:Z8:INPUT_S2")
12622 field(INPH,
"$(P):LS01:Z8:RATE_S2")
12624 field(DTYP,
"stream")
12625 field(OUT,
"@ls336.proto setZONE(2,8) L0 0")
12626 field(SDIS,
"$(P):LS01:DISABLE")
12627 field(FLNK,
"$(P):LS01:Z8:ALL2.PROC")
12639 #######################################
12641 # Template to support reading and setting
12642 # controller ZONE parameters. It reads the ZONE
12643 # parameters into an array, then uses subArrays to
12644 # extract each parameter.
12646 # This template is used by the output template
12647 # and it needs the following macros:
12649 # ZONE: zone number
12650 # OUT: output number
12652 #######################################
12655 ## Read the ZONE setting into an array (8 values)
12658 field(DTYP,
"stream")
12659 field(SDIS,
"$(P):LS01:DISABLE_POLL")
12660 field(INP,
"@ls336.proto getZONE(2,9) L0 0")
12661 field(SCAN,
"Passive")
12663 field(FTVL,
"DOUBLE")
12665 field(FLNK,
"$(P):LS01:Z9:UB2:ARRAY.PROC")
12669 ## Read the ZONE upper boundary setting.
12672 field(SCAN,
"Passive")
12673 field(FTVL,
"DOUBLE")
12674 field(INP,
"$(P):LS01:Z9:ALL2.VAL MS")
12679 field(FLNK,
"$(P):LS01:Z9:UB2.PROC")
12682 field(SCAN,
"Passive")
12683 field(INP,
"$(P):LS01:Z9:UB2:ARRAY.VAL MS")
12685 field(FLNK,
"$(P):LS01:Z9:P2:ARRAY.PROC")
12689 ## Read the ZONE P setting.
12692 field(SCAN,
"Passive")
12693 field(FTVL,
"DOUBLE")
12694 field(INP,
"$(P):LS01:Z9:ALL2.VAL MS")
12699 field(FLNK,
"$(P):LS01:Z9:P2.PROC")
12702 field(SCAN,
"Passive")
12703 field(INP,
"$(P):LS01:Z9:P2:ARRAY.VAL MS")
12705 field(FLNK,
"$(P):LS01:Z9:I2:ARRAY.PROC")
12709 ## Read the ZONE I setting.
12712 field(SCAN,
"Passive")
12713 field(FTVL,
"DOUBLE")
12714 field(INP,
"$(P):LS01:Z9:ALL2.VAL MS")
12719 field(FLNK,
"$(P):LS01:Z9:I2.PROC")
12722 field(SCAN,
"Passive")
12723 field(INP,
"$(P):LS01:Z9:I2:ARRAY.VAL MS")
12725 field(FLNK,
"$(P):LS01:Z9:D2:ARRAY.PROC")
12729 ## Read the ZONE D setting.
12732 field(SCAN,
"Passive")
12733 field(FTVL,
"DOUBLE")
12734 field(INP,
"$(P):LS01:Z9:ALL2.VAL MS")
12739 field(FLNK,
"$(P):LS01:Z9:D2.PROC")
12742 field(SCAN,
"Passive")
12743 field(INP,
"$(P):LS01:Z9:D2:ARRAY.VAL MS")
12745 field(FLNK,
"$(P):LS01:Z9:MOUT2:ARRAY.PROC")
12749 ## Read the ZONE MOUT setting.
12752 field(SCAN,
"Passive")
12753 field(FTVL,
"DOUBLE")
12754 field(INP,
"$(P):LS01:Z9:ALL2.VAL MS")
12759 field(FLNK,
"$(P):LS01:Z9:MOUT2.PROC")
12762 field(SCAN,
"Passive")
12763 field(INP,
"$(P):LS01:Z9:MOUT2:ARRAY.VAL MS")
12765 field(FLNK,
"$(P):LS01:Z9:RANGE2:ARRAY.PROC")
12769 ## Read the ZONE RANGE setting.
12772 field(SCAN,
"Passive")
12773 field(FTVL,
"DOUBLE")
12774 field(INP,
"$(P):LS01:Z9:ALL2.VAL MS")
12779 field(FLNK,
"$(P):LS01:Z9:RANGE2.PROC")
12782 field(INP,
"$(P):LS01:Z9:RANGE2:ARRAY.VAL")
12783 field(SCAN,
"Passive")
12786 field(ONST,
"Range1/Low")
12788 field(TWST,
"Range2/Medium")
12790 field(THST,
"Range3/High")
12792 field(FRST,
"Range4")
12794 field(FVST,
"Range5")
12796 field(FLNK,
"$(P):LS01:Z9:INPUT2:ARRAY.PROC")
12800 ## Read the ZONE INPUT setting.
12803 field(SCAN,
"Passive")
12804 field(FTVL,
"DOUBLE")
12805 field(INP,
"$(P):LS01:Z9:ALL2.VAL MS")
12810 field(FLNK,
"$(P):LS01:Z9:INPUT2.PROC")
12813 field(INP,
"$(P):LS01:Z9:INPUT2:ARRAY.VAL")
12814 field(SCAN,
"Passive")
12815 field(ZRST,
"None")
12817 field(ONST,
"Input A")
12819 field(TWST,
"Input B")
12821 field(THST,
"Input C")
12823 field(FRST,
"Input D")
12825 field(FVST,
"Input D2")
12827 field(SXST,
"Input D3")
12829 field(SVST,
"Input D4")
12831 field(EIST,
"Input D5")
12833 field(FLNK,
"$(P):LS01:Z9:RATE2:ARRAY.PROC")
12837 ## Read the ZONE RATE setting.
12840 field(SCAN,
"Passive")
12841 field(FTVL,
"DOUBLE")
12842 field(INP,
"$(P):LS01:Z9:ALL2.VAL MS")
12847 field(FLNK,
"$(P):LS01:Z9:RATE2.PROC")
12850 field(SCAN,
"Passive")
12851 field(INP,
"$(P):LS01:Z9:RATE2:ARRAY.VAL MS")
12853 field(FLNK,
"$(P):LS01:Z9:INITCALC2.PROC")
12856 ##############################################################
12858 ## Populate the write records below with the current values.
12859 ## Only do this once at startup.
12861 ###############################################################
12867 field(DOPT,
"Use OCAL")
12868 field(OOPT,
"When Zero")
12870 field(OUT,
"$(P):LS01:Z9:INITUB2.PROC")
12874 field(OMSL,
"closed_loop")
12875 field(DOL,
"$(P):LS01:Z9:UB2.VAL")
12876 field(OUTA,
"$(P):LS01:Z9:UB_S2.VAL PP")
12877 field(FLNK,
"$(P):LS01:Z9:INITP2.PROC")
12880 field(OMSL,
"closed_loop")
12881 field(DOL,
"$(P):LS01:Z9:P2.VAL")
12882 field(OUTA,
"$(P):LS01:Z9:P_S2.VAL PP")
12883 field(FLNK,
"$(P):LS01:Z9:INITI2.PROC")
12886 field(OMSL,
"closed_loop")
12887 field(DOL,
"$(P):LS01:Z9:I2.VAL")
12888 field(OUTA,
"$(P):LS01:Z9:I_S2.VAL PP")
12889 field(FLNK,
"$(P):LS01:Z9:INITD2.PROC")
12892 field(OMSL,
"closed_loop")
12893 field(DOL,
"$(P):LS01:Z9:D2.VAL")
12894 field(OUTA,
"$(P):LS01:Z9:D_S2.VAL PP")
12895 field(FLNK,
"$(P):LS01:Z9:INITMOUT2.PROC")
12898 field(OMSL,
"closed_loop")
12899 field(DOL,
"$(P):LS01:Z9:MOUT2.VAL")
12900 field(OUTA,
"$(P):LS01:Z9:MOUT_S2.VAL PP")
12901 field(FLNK,
"$(P):LS01:Z9:INITRANGE2.PROC")
12904 field(OMSL,
"closed_loop")
12905 field(DOL,
"$(P):LS01:Z9:RANGE2.VAL")
12906 field(OUTA,
"$(P):LS01:Z9:RANGE_S2.VAL PP")
12907 field(FLNK,
"$(P):LS01:Z9:INITINPUT2.PROC")
12910 field(OMSL,
"closed_loop")
12911 field(DOL,
"$(P):LS01:Z9:INPUT2.VAL")
12912 field(OUTA,
"$(P):LS01:Z9:INPUT_S2.VAL PP")
12913 field(FLNK,
"$(P):LS01:Z9:INITRATE2.PROC")
12916 field(OMSL,
"closed_loop")
12917 field(DOL,
"$(P):LS01:Z9:RATE2.VAL")
12918 field(OUTA,
"$(P):LS01:Z9:RATE_S2.VAL PP")
12919 field(FLNK,
"$(P):LS01:Z9:INITCOUNT2.PROC")
12924 field(OUTA,
"$(P):LS01:Z9:INITCALC2.A")
12929 #############################################
12930 # Write records. There is a calcout record to
12931 # do the actual write.
12932 #############################################
12935 ## Set the ZONE upper boundary setting.
12938 field(SCAN,
"Passive")
12940 field(SDIS,
"$(P):LS01:DISABLE")
12944 ## Set the ZONE P setting.
12947 field(SCAN,
"Passive")
12949 field(SDIS,
"$(P):LS01:DISABLE")
12953 ## Set the ZONE I setting.
12956 field(SCAN,
"Passive")
12958 field(SDIS,
"$(P):LS01:DISABLE")
12962 ## Set the ZONE D setting.
12965 field(SCAN,
"Passive")
12967 field(SDIS,
"$(P):LS01:DISABLE")
12971 ## Set the ZONE MOUT setting.
12974 field(SCAN,
"Passive")
12976 field(SDIS,
"$(P):LS01:DISABLE")
12980 ## Set the ZONE RANGE setting.
12983 field(SCAN,
"Passive")
12986 field(ONST,
"Range1/Low")
12988 field(TWST,
"Range2/Medium")
12990 field(THST,
"Range3/High")
12992 field(FRST,
"Range4")
12994 field(FVST,
"Range5")
12996 field(SDIS,
"$(P):LS01:DISABLE")
13000 ## Set the ZONE INPUT setting.
13003 field(ZRST,
"None")
13005 field(ONST,
"Input A")
13007 field(TWST,
"Input B")
13009 field(THST,
"Input C")
13011 field(FRST,
"Input D")
13013 field(FVST,
"Input D2")
13015 field(SXST,
"Input D3")
13017 field(SVST,
"Input D4")
13019 field(EIST,
"Input D5")
13021 field(SDIS,
"$(P):LS01:DISABLE")
13025 ## Set the ZONE RATE setting.
13028 field(SCAN,
"Passive")
13030 field(SDIS,
"$(P):LS01:DISABLE")
13034 ## Record to write the ZONE parameters.
13037 field(INPA,
"$(P):LS01:Z9:UB_S2")
13038 field(INPB,
"$(P):LS01:Z9:P_S2")
13039 field(INPC,
"$(P):LS01:Z9:I_S2")
13040 field(INPD,
"$(P):LS01:Z9:D_S2")
13041 field(INPE,
"$(P):LS01:Z9:MOUT_S2")
13042 field(INPF,
"$(P):LS01:Z9:RANGE_S2")
13043 field(INPG,
"$(P):LS01:Z9:INPUT_S2")
13044 field(INPH,
"$(P):LS01:Z9:RATE_S2")
13046 field(DTYP,
"stream")
13047 field(OUT,
"@ls336.proto setZONE(2,9) L0 0")
13048 field(SDIS,
"$(P):LS01:DISABLE")
13049 field(FLNK,
"$(P):LS01:Z9:ALL2.PROC")
13061 #######################################
13063 # Template to support reading and setting
13064 # controller ZONE parameters. It reads the ZONE
13065 # parameters into an array, then uses subArrays to
13066 # extract each parameter.
13068 # This template is used by the output template
13069 # and it needs the following macros:
13071 # ZONE: zone number
13072 # OUT: output number
13074 #######################################
13077 ## Read the ZONE setting into an array (8 values)
13080 field(DTYP,
"stream")
13081 field(SDIS,
"$(P):LS01:DISABLE_POLL")
13082 field(INP,
"@ls336.proto getZONE(2,10) L0 0")
13083 field(SCAN,
"Passive")
13085 field(FTVL,
"DOUBLE")
13087 field(FLNK,
"$(P):LS01:Z10:UB2:ARRAY.PROC")
13091 ## Read the ZONE upper boundary setting.
13094 field(SCAN,
"Passive")
13095 field(FTVL,
"DOUBLE")
13096 field(INP,
"$(P):LS01:Z10:ALL2.VAL MS")
13101 field(FLNK,
"$(P):LS01:Z10:UB2.PROC")
13104 field(SCAN,
"Passive")
13105 field(INP,
"$(P):LS01:Z10:UB2:ARRAY.VAL MS")
13107 field(FLNK,
"$(P):LS01:Z10:P2:ARRAY.PROC")
13111 ## Read the ZONE P setting.
13114 field(SCAN,
"Passive")
13115 field(FTVL,
"DOUBLE")
13116 field(INP,
"$(P):LS01:Z10:ALL2.VAL MS")
13121 field(FLNK,
"$(P):LS01:Z10:P2.PROC")
13124 field(SCAN,
"Passive")
13125 field(INP,
"$(P):LS01:Z10:P2:ARRAY.VAL MS")
13127 field(FLNK,
"$(P):LS01:Z10:I2:ARRAY.PROC")
13131 ## Read the ZONE I setting.
13134 field(SCAN,
"Passive")
13135 field(FTVL,
"DOUBLE")
13136 field(INP,
"$(P):LS01:Z10:ALL2.VAL MS")
13141 field(FLNK,
"$(P):LS01:Z10:I2.PROC")
13144 field(SCAN,
"Passive")
13145 field(INP,
"$(P):LS01:Z10:I2:ARRAY.VAL MS")
13147 field(FLNK,
"$(P):LS01:Z10:D2:ARRAY.PROC")
13151 ## Read the ZONE D setting.
13154 field(SCAN,
"Passive")
13155 field(FTVL,
"DOUBLE")
13156 field(INP,
"$(P):LS01:Z10:ALL2.VAL MS")
13161 field(FLNK,
"$(P):LS01:Z10:D2.PROC")
13164 field(SCAN,
"Passive")
13165 field(INP,
"$(P):LS01:Z10:D2:ARRAY.VAL MS")
13167 field(FLNK,
"$(P):LS01:Z10:MOUT2:ARRAY.PROC")
13171 ## Read the ZONE MOUT setting.
13174 field(SCAN,
"Passive")
13175 field(FTVL,
"DOUBLE")
13176 field(INP,
"$(P):LS01:Z10:ALL2.VAL MS")
13181 field(FLNK,
"$(P):LS01:Z10:MOUT2.PROC")
13184 field(SCAN,
"Passive")
13185 field(INP,
"$(P):LS01:Z10:MOUT2:ARRAY.VAL MS")
13187 field(FLNK,
"$(P):LS01:Z10:RANGE2:ARRAY.PROC")
13191 ## Read the ZONE RANGE setting.
13194 field(SCAN,
"Passive")
13195 field(FTVL,
"DOUBLE")
13196 field(INP,
"$(P):LS01:Z10:ALL2.VAL MS")
13201 field(FLNK,
"$(P):LS01:Z10:RANGE2.PROC")
13204 field(INP,
"$(P):LS01:Z10:RANGE2:ARRAY.VAL")
13205 field(SCAN,
"Passive")
13208 field(ONST,
"Range1/Low")
13210 field(TWST,
"Range2/Medium")
13212 field(THST,
"Range3/High")
13214 field(FRST,
"Range4")
13216 field(FVST,
"Range5")
13218 field(FLNK,
"$(P):LS01:Z10:INPUT2:ARRAY.PROC")
13222 ## Read the ZONE INPUT setting.
13225 field(SCAN,
"Passive")
13226 field(FTVL,
"DOUBLE")
13227 field(INP,
"$(P):LS01:Z10:ALL2.VAL MS")
13232 field(FLNK,
"$(P):LS01:Z10:INPUT2.PROC")
13235 field(INP,
"$(P):LS01:Z10:INPUT2:ARRAY.VAL")
13236 field(SCAN,
"Passive")
13237 field(ZRST,
"None")
13239 field(ONST,
"Input A")
13241 field(TWST,
"Input B")
13243 field(THST,
"Input C")
13245 field(FRST,
"Input D")
13247 field(FVST,
"Input D2")
13249 field(SXST,
"Input D3")
13251 field(SVST,
"Input D4")
13253 field(EIST,
"Input D5")
13255 field(FLNK,
"$(P):LS01:Z10:RATE2:ARRAY.PROC")
13259 ## Read the ZONE RATE setting.
13262 field(SCAN,
"Passive")
13263 field(FTVL,
"DOUBLE")
13264 field(INP,
"$(P):LS01:Z10:ALL2.VAL MS")
13269 field(FLNK,
"$(P):LS01:Z10:RATE2.PROC")
13272 field(SCAN,
"Passive")
13273 field(INP,
"$(P):LS01:Z10:RATE2:ARRAY.VAL MS")
13275 field(FLNK,
"$(P):LS01:Z10:INITCALC2.PROC")
13278 ##############################################################
13280 ## Populate the write records below with the current values.
13281 ## Only do this once at startup.
13283 ###############################################################
13289 field(DOPT,
"Use OCAL")
13290 field(OOPT,
"When Zero")
13292 field(OUT,
"$(P):LS01:Z10:INITUB2.PROC")
13296 field(OMSL,
"closed_loop")
13297 field(DOL,
"$(P):LS01:Z10:UB2.VAL")
13298 field(OUTA,
"$(P):LS01:Z10:UB_S2.VAL PP")
13299 field(FLNK,
"$(P):LS01:Z10:INITP2.PROC")
13302 field(OMSL,
"closed_loop")
13303 field(DOL,
"$(P):LS01:Z10:P2.VAL")
13304 field(OUTA,
"$(P):LS01:Z10:P_S2.VAL PP")
13305 field(FLNK,
"$(P):LS01:Z10:INITI2.PROC")
13308 field(OMSL,
"closed_loop")
13309 field(DOL,
"$(P):LS01:Z10:I2.VAL")
13310 field(OUTA,
"$(P):LS01:Z10:I_S2.VAL PP")
13311 field(FLNK,
"$(P):LS01:Z10:INITD2.PROC")
13314 field(OMSL,
"closed_loop")
13315 field(DOL,
"$(P):LS01:Z10:D2.VAL")
13316 field(OUTA,
"$(P):LS01:Z10:D_S2.VAL PP")
13317 field(FLNK,
"$(P):LS01:Z10:INITMOUT2.PROC")
13320 field(OMSL,
"closed_loop")
13321 field(DOL,
"$(P):LS01:Z10:MOUT2.VAL")
13322 field(OUTA,
"$(P):LS01:Z10:MOUT_S2.VAL PP")
13323 field(FLNK,
"$(P):LS01:Z10:INITRANGE2.PROC")
13326 field(OMSL,
"closed_loop")
13327 field(DOL,
"$(P):LS01:Z10:RANGE2.VAL")
13328 field(OUTA,
"$(P):LS01:Z10:RANGE_S2.VAL PP")
13329 field(FLNK,
"$(P):LS01:Z10:INITINPUT2.PROC")
13332 field(OMSL,
"closed_loop")
13333 field(DOL,
"$(P):LS01:Z10:INPUT2.VAL")
13334 field(OUTA,
"$(P):LS01:Z10:INPUT_S2.VAL PP")
13335 field(FLNK,
"$(P):LS01:Z10:INITRATE2.PROC")
13338 field(OMSL,
"closed_loop")
13339 field(DOL,
"$(P):LS01:Z10:RATE2.VAL")
13340 field(OUTA,
"$(P):LS01:Z10:RATE_S2.VAL PP")
13341 field(FLNK,
"$(P):LS01:Z10:INITCOUNT2.PROC")
13346 field(OUTA,
"$(P):LS01:Z10:INITCALC2.A")
13351 #############################################
13352 # Write records. There is a calcout record to
13353 # do the actual write.
13354 #############################################
13357 ## Set the ZONE upper boundary setting.
13360 field(SCAN,
"Passive")
13362 field(SDIS,
"$(P):LS01:DISABLE")
13366 ## Set the ZONE P setting.
13369 field(SCAN,
"Passive")
13371 field(SDIS,
"$(P):LS01:DISABLE")
13375 ## Set the ZONE I setting.
13378 field(SCAN,
"Passive")
13380 field(SDIS,
"$(P):LS01:DISABLE")
13384 ## Set the ZONE D setting.
13387 field(SCAN,
"Passive")
13389 field(SDIS,
"$(P):LS01:DISABLE")
13393 ## Set the ZONE MOUT setting.
13396 field(SCAN,
"Passive")
13398 field(SDIS,
"$(P):LS01:DISABLE")
13402 ## Set the ZONE RANGE setting.
13405 field(SCAN,
"Passive")
13408 field(ONST,
"Range1/Low")
13410 field(TWST,
"Range2/Medium")
13412 field(THST,
"Range3/High")
13414 field(FRST,
"Range4")
13416 field(FVST,
"Range5")
13418 field(SDIS,
"$(P):LS01:DISABLE")
13422 ## Set the ZONE INPUT setting.
13425 field(ZRST,
"None")
13427 field(ONST,
"Input A")
13429 field(TWST,
"Input B")
13431 field(THST,
"Input C")
13433 field(FRST,
"Input D")
13435 field(FVST,
"Input D2")
13437 field(SXST,
"Input D3")
13439 field(SVST,
"Input D4")
13441 field(EIST,
"Input D5")
13443 field(SDIS,
"$(P):LS01:DISABLE")
13447 ## Set the ZONE RATE setting.
13450 field(SCAN,
"Passive")
13452 field(SDIS,
"$(P):LS01:DISABLE")
13456 ## Record to write the ZONE parameters.
13459 field(INPA,
"$(P):LS01:Z10:UB_S2")
13460 field(INPB,
"$(P):LS01:Z10:P_S2")
13461 field(INPC,
"$(P):LS01:Z10:I_S2")
13462 field(INPD,
"$(P):LS01:Z10:D_S2")
13463 field(INPE,
"$(P):LS01:Z10:MOUT_S2")
13464 field(INPF,
"$(P):LS01:Z10:RANGE_S2")
13465 field(INPG,
"$(P):LS01:Z10:INPUT_S2")
13466 field(INPH,
"$(P):LS01:Z10:RATE_S2")
13468 field(DTYP,
"stream")
13469 field(OUT,
"@ls336.proto setZONE(2,10) L0 0")
13470 field(SDIS,
"$(P):LS01:DISABLE")
13471 field(FLNK,
"$(P):LS01:Z10:ALL2.PROC")
13487 # This is included in lakeshore336.template
13488 # This template is for the common functionality shared by all 4 outputs.
13490 # There is some logic in this database to provide put_callback functionality
13491 # for setting the temperature and waiting for it to be in range. The input
13492 # sensor PV name used for the in-window calculation changes depending on
13493 # the input sensor selected. In order for this to work it requires the following
13496 # INPUTA - Sensor 1 PV name
13497 # INPUTB - Sensor 2 PV name
13498 # INPUTC - Sensor 3 PV name
13499 # INPUTD - Sensor 4 PV name
13500 # INPUTD2 - Sensor D2 PV name
13501 # INPUTD3 - Sensor D3 PV name
13502 # INPUTD4 - Sensor D4 PV name
13503 # INPUTD5 - Sensor D5 PV name
13504 # TOLERANCE (optional - defaults to 1)
13506 # The input link names must fit into a stringout record for this to work.
13507 # The above link names default to a dummy record.
13509 ################################################################
13511 ################################################################
13514 ## Record holding the output number
13517 field(DTYP,
"Soft Channel")
13523 ## Read the setpoint temperature.
13526 field(DTYP,
"stream")
13527 field(SDIS,
"$(P):LS01:DISABLE_POLL")
13528 field(INP,
"@ls336.proto getSETP(3) L0 0")
13529 field(SCAN,
"1 second")
13532 info(archive,
"Monitor, 00:00:01, VAL")
13536 ## Read the setpoint limit
13540 ## Read the ramp parameter. This also populates the ramp status $(P):LS01:RAMPST3,
13543 field(DTYP,
"stream")
13544 field(SDIS,
"$(P):LS01:DISABLE_POLL")
13545 field(INP,
"@ls336.proto getRAMP(3,$(P):LS01:RAMPST3) L0 0")
13546 field(SCAN,
"5 second")
13548 field(EGU,
"K/minute")
13552 ## Read the ramp status parameter.
13558 field(DTYP,
"Soft Channel")
13564 ## Read the range parameter (the heater output power range).
13565 ## This is output specific and is defined in another file.
13568 field(DTYP,
"stream")
13569 field(SDIS,
"$(P):LS01:DISABLE_POLL")
13576 field(SCAN,
"5 second")
13577 field(INP,
"@ls336.proto getRANGE(3) L0 0")
13581 ## Read the mode to use for outmode
13582 ## This is output specific and is defined in another file.
13588 ## Read the manual output parameter.
13591 field(DTYP,
"stream")
13592 field(SDIS,
"$(P):LS01:DISABLE_POLL")
13593 field(INP,
"@ls336.proto getMOUT(3) L0 0")
13594 field(SCAN,
"5 second")
13598 ## Read the PID P parameter. Pass the I and D records into the protocol to read those as well.
13601 field(DTYP,
"stream")
13602 field(SDIS,
"$(P):LS01:DISABLE_POLL")
13603 field(INP,
"@ls336.proto getPID(3,$(P):LS01:I3,$(P):LS01:D3) L0 0")
13604 field(SCAN,
"5 second")
13608 ## Read the PID I parameter.
13611 field(DTYP,
"Soft Channel")
13612 field(SCAN,
"Passive")
13616 ## Read the PID D parameter.
13619 field(DTYP,
"Soft Channel")
13620 field(SCAN,
"Passive")
13624 ## Read the mode to use for outmode.
13625 ## This also populates the OMI and OMP records.
13626 ## The mbbi strings and values are defined in the output specific templates.
13629 field(DTYP,
"stream")
13630 field(SDIS,
"$(P):LS01:DISABLE_POLL")
13637 field(SCAN,
"5 second")
13638 field(INP,
"@ls336.proto getOM(3,$(P):LS01:OMI3,$(P):LS01:OMP3) L0 0")
13642 ## Read the input to use for outmode
13645 field(DTYP,
"Soft Channel")
13646 field(ZRST,
"None")
13648 field(ONST,
"Input A")
13650 field(TWST,
"Input B")
13652 field(THST,
"Input C")
13654 field(FRST,
"Input D")
13656 field(FVST,
"Input D2")
13658 field(SXST,
"Input D3")
13660 field(SVST,
"Input D4")
13662 field(EIST,
"Input D5")
13667 ## Read the power up mode to use for outmode
13670 field(DTYP,
"Soft Channel")
13677 ################################################################
13679 ################################################################
13682 ## Set the setpoint temperature.
13685 field(DTYP,
"stream")
13686 field(SDIS,
"$(P):LS01:DISABLE")
13687 field(DESC,
"Setpoint temperature")
13688 field(OUT,
"@ls336.proto setSETP(3) L0 0")
13690 field(FLNK,
"$(P):LS01:SETP_S3_BUSYSET.PROC")
13692 info(archive,
"Monitor, 00:00:01, VAL")
13695 ###############################################################################
13698 ## A few records to support put_callback on the setpoint. We use the busy record.
13699 ## A temperature window is used. The temperature must be within
13700 ## the window, before the callback is done.
13706 field(OUTA,
"$(P):LS01:IN_WINDOW3.VAL PP")
13707 field(FLNK,
"$(P):LS01:SETP_S3_BUSYSET2")
13712 field(OUTA,
"$(P):LS01:SETP3.PROC PP")
13713 field(OUTB,
"$(P):LS01:SETP_S3_BUSY PP")
13714 field(FLNK,
"$(P):LS01:CALC_IN_WINDOW3")
13722 field(INPB,
"$(P):LS01:DUMMY3.VAL")
13723 field(INPC,
"$(P):LS01:SETP_S3.VAL")
13724 field(CALC,
"((B>=(C-A))&&(B<=(C+A)))?1:0")
13725 field(OOPT,
"Every Time")
13726 field(OUT,
"$(P):LS01:IN_WINDOW3.VAL PP")
13727 field(DOPT,
"Use CALC")
13728 field(SCAN,
"1 second")
13730 info(autosaveFields,
"A")
13731 info(archive,
"Monitor, 00:00:01, A B C VAL")
13734 field(DESC,
"Temperature In Window")
13737 field(OMSL,
"supervisory")
13738 field(ZNAM,
"Not In Window")
13739 field(ONAM,
"In Window")
13740 info(archive,
"Monitor, 00:00:01, VAL")
13744 ## Set busy record 'done' when TIME_WINDOW3=1
13747 field(INPA,
"$(P):LS01:IN_WINDOW3.VAL CP")
13748 field(CALC,
"(A=1)?0:1")
13749 field(OOPT,
"Every Time")
13750 field(OUT,
"$(P):LS01:SETP_S3_BUSY.VAL PP")
13753 ###############################################################################
13756 ## Dummy record to use for input link name default
13762 ## Monitor $(P):LS01:OMI3 to determin which input sensor to use
13763 ## to deal with the callback. The below set of records automatically
13764 ## switch the input when the 'control input' is changed. They make
13765 ## use of the input sensor PV names passed into this template.
13769 field(INPA,
"$(P):LS01:OMI3.VAL CP")
13770 field(DOPT,
"Use OCAL")
13772 field(OOPT,
"When Non-zero")
13773 field(OUT,
"$(P):LS01:SET_3_INPUTA_LINK.PROC")
13775 record(stringout,
"$(P):LS01:SET_3_INPUTA_LINK") {
13776 field(VAL,
"$(P):LS01:KRDG0.VAL CP")
13777 field(OUT,
"$(P):LS01:CALC_IN_WINDOW3.INPB CA")
13782 field(INPA,
"$(P):LS01:OMI3.VAL CP")
13783 field(DOPT,
"Use OCAL")
13785 field(OOPT,
"When Non-zero")
13786 field(OUT,
"$(P):LS01:SET_3_INPUTB_LINK.PROC")
13788 record(stringout,
"$(P):LS01:SET_3_INPUTB_LINK") {
13789 field(VAL,
"$(P):LS01:KRDG1.VAL CP")
13790 field(OUT,
"$(P):LS01:CALC_IN_WINDOW3.INPB CA")
13795 field(INPA,
"$(P):LS01:OMI3.VAL CP")
13796 field(DOPT,
"Use OCAL")
13798 field(OOPT,
"When Non-zero")
13799 field(OUT,
"$(P):LS01:SET_3_INPUTC_LINK.PROC")
13801 record(stringout,
"$(P):LS01:SET_3_INPUTC_LINK") {
13802 field(VAL,
"$(P):LS01:KRDG2.VAL CP")
13803 field(OUT,
"$(P):LS01:CALC_IN_WINDOW3.INPB CA")
13808 field(INPA,
"$(P):LS01:OMI3.VAL CP")
13809 field(DOPT,
"Use OCAL")
13811 field(OOPT,
"When Non-zero")
13812 field(OUT,
"$(P):LS01:SET_3_INPUTD_LINK.PROC")
13814 record(stringout,
"$(P):LS01:SET_3_INPUTD_LINK") {
13815 field(VAL,
"$(P):LS01:KRDG3.VAL CP")
13816 field(OUT,
"$(P):LS01:CALC_IN_WINDOW3.INPB CA")
13821 field(INPA,
"$(P):LS01:OMI3.VAL CP")
13822 field(DOPT,
"Use OCAL")
13824 field(OOPT,
"When Non-zero")
13825 field(OUT,
"$(P):LS01:SET_3_INPUTD2_LINK.PROC")
13827 record(stringout,
"$(P):LS01:SET_3_INPUTD2_LINK") {
13828 field(VAL,
"$(P):LS01:KRDGD2.VAL CP")
13829 field(OUT,
"$(P):LS01:CALC_IN_WINDOW3.INPB CA")
13834 field(INPA,
"$(P):LS01:OMI3.VAL CP")
13835 field(DOPT,
"Use OCAL")
13837 field(OOPT,
"When Non-zero")
13838 field(OUT,
"$(P):LS01:SET_3_INPUTD3_LINK.PROC")
13840 record(stringout,
"$(P):LS01:SET_3_INPUTD3_LINK") {
13841 field(VAL,
"$(P):LS01:KRDGD3.VAL CP")
13842 field(OUT,
"$(P):LS01:CALC_IN_WINDOW3.INPB CA")
13847 field(INPA,
"$(P):LS01:OMI3.VAL CP")
13848 field(DOPT,
"Use OCAL")
13850 field(OOPT,
"When Non-zero")
13851 field(OUT,
"$(P):LS01:SET_3_INPUTD4_LINK.PROC")
13853 record(stringout,
"$(P):LS01:SET_3_INPUTD4_LINK") {
13854 field(VAL,
"$(P):LS01:KRDGD4.VAL CP")
13855 field(OUT,
"$(P):LS01:CALC_IN_WINDOW3.INPB CA")
13860 field(INPA,
"$(P):LS01:OMI3.VAL CP")
13861 field(DOPT,
"Use OCAL")
13863 field(OOPT,
"When Non-zero")
13864 field(OUT,
"$(P):LS01:SET_3_INPUTD5_LINK.PROC")
13866 record(stringout,
"$(P):LS01:SET_3_INPUTD5_LINK") {
13867 field(VAL,
"$(P):LS01:KRDGD5.VAL CP")
13868 field(OUT,
"$(P):LS01:CALC_IN_WINDOW3.INPB CA")
13874 ## Set the range parameter.
13875 ## The strings are output specific and is defined in another file.
13878 field(DTYP,
"stream")
13879 field(SDIS,
"$(P):LS01:DISABLE")
13880 field(OUT,
"@ls336.proto setRANGE(3) L0 0")
13881 field(FLNK,
"$(P):LS01:RANGE3.PROC CA")
13885 ## Set the ramp rate parameter.
13887 ## This is the desired temperate increase/decrease rate
13888 ## per second when heating/cooling.
13890 ## The ramp and ramp status parameters are actually one command
13891 ## for the lakeshore. Therefore one must pass into this
13892 ## record the existing/desired ramp status, as well as the
13893 ## desired ramp. This is done automatically by reading the
13894 ## PV which holds the current ramp status.
13897 field(DTYP,
"stream")
13898 field(SDIS,
"$(P):LS01:DISABLE")
13899 field(OUT,
"@ls336.proto setRAMP($(P):LS01:RAMPST3,3) L0 0")
13901 field(FLNK,
"$(P):LS01:RAMP3.PROC CA")
13902 field(EGU,
"K/minute")
13906 ## Set the ramp status parameter.
13911 ## The ramp and ramp status parameters are actually one command
13912 ## for the lakeshore. Therefore one must pass into this
13913 ## record the existing/desired ramp, as well as the
13914 ## desired ramp status. This is done automatically by reading the
13915 ## PV which holds the current ramp value.
13918 field(DTYP,
"stream")
13919 field(SDIS,
"$(P):LS01:DISABLE")
13920 field(OUT,
"@ls336.proto setRAMPSTATUS($(P):LS01:RAMP3,3) L0 0")
13921 field(FLNK,
"$(P):LS01:RAMP3.PROC CA")
13927 ## Set the manual output value.
13930 field(DTYP,
"stream")
13931 field(SDIS,
"$(P):LS01:DISABLE")
13932 field(OUT,
"@ls336.proto setMOUT(3) L0 0")
13933 field(FLNK,
"$(P):LS01:MOUT3.PROC CA")
13937 ## Set the PID P parameter.
13940 field(DTYP,
"stream")
13941 field(SDIS,
"$(P):LS01:DISABLE")
13942 field(OUT,
"@ls336.proto setP(3,$(P):LS01:I3,$(P):LS01:D3) L0 0")
13943 field(FLNK,
"$(P):LS01:P3.PROC CA")
13947 ## Set the PID I parameter.
13950 field(DTYP,
"stream")
13951 field(SDIS,
"$(P):LS01:DISABLE")
13952 field(OUT,
"@ls336.proto setI($(P):LS01:P3,3,$(P):LS01:D3) L0 0")
13953 field(FLNK,
"$(P):LS01:P3.PROC CA")
13957 ## Set the PID D parameter.
13960 field(DTYP,
"stream")
13961 field(SDIS,
"$(P):LS01:DISABLE")
13962 field(OUT,
"@ls336.proto setD($(P):LS01:P3,$(P):LS01:I3,3) L0 0")
13963 field(FLNK,
"$(P):LS01:P3.PROC CA")
13967 ## Set the mode to use for outmode
13968 ## The strings are output specific. This is defined in another file.
13971 field(DTYP,
"stream")
13972 field(SDIS,
"$(P):LS01:DISABLE")
13979 field(OUT,
"@ls336.proto setOM(3,$(P):LS01:OMI3,$(P):LS01:OMP3) L0 0")
13980 field(FLNK,
"$(P):LS01:OMM3.PROC CA")
13984 ## Set the input to use for outmode
13987 field(DTYP,
"stream")
13988 field(SDIS,
"$(P):LS01:DISABLE")
13989 field(ZRST,
"None")
13991 field(ONST,
"Input A")
13993 field(TWST,
"Input B")
13995 field(THST,
"Input C")
13997 field(FRST,
"Input D")
13999 field(FVST,
"Input D2")
14001 field(SXST,
"Input D3")
14003 field(SVST,
"Input D4")
14005 field(EIST,
"Input D5")
14007 field(OUT,
"@ls336.proto setOMI(3,$(P):LS01:OMM3,$(P):LS01:OMP3) L0 0")
14008 field(FLNK,
"$(P):LS01:OMM3.PROC CA")
14012 ## Set the power up mode to use for outmode
14015 field(DTYP,
"stream")
14016 field(SDIS,
"$(P):LS01:DISABLE")
14021 field(OUT,
"@ls336.proto setOMP(3,$(P):LS01:OMM3,$(P):LS01:OMI3) L0 0")
14022 field(FLNK,
"$(P):LS01:OMM3.PROC CA")
14026 ## Set the type of tuning mode
14029 field(SDIS,
"$(P):LS01:DISABLE")
14030 field(ZRST,
"P Only")
14032 field(ONST,
"P and I")
14034 field(TWST,
"P, I and D")
14040 ## Start the tuning process
14043 field(DTYP,
"stream")
14044 field(SDIS,
"$(P):LS01:DISABLE")
14045 field(DESC,
"Start the auto tuning")
14046 field(OUT,
"@ls336.proto setATUNE(3,$(P):LS01:TUNEMODE_S3) L0 0")
14051 ## Read all ZONE settings
14054 field(DESC,
"Read Output 3 ZONE")
14057 field(LNK1,
"$(P):LS01:Z1:ALL3.PROC")
14060 field(LNK2,
"$(P):LS01:Z2:ALL3.PROC")
14063 field(LNK3,
"$(P):LS01:Z3:ALL3.PROC")
14066 field(LNK4,
"$(P):LS01:Z4:ALL3.PROC")
14069 field(LNK5,
"$(P):LS01:Z5:ALL3.PROC")
14072 field(LNK6,
"$(P):LS01:Z6:ALL3.PROC")
14075 field(LNK7,
"$(P):LS01:Z7:ALL3.PROC")
14078 field(LNK8,
"$(P):LS01:Z8:ALL3.PROC")
14081 field(LNK9,
"$(P):LS01:Z9:ALL3.PROC")
14084 field(LNKA,
"$(P):LS01:Z10:ALL3.PROC")
14088 ###############################################
14089 # This is included in lakeshore336.template
14090 # This is for the analog outputs (3 and 4)
14093 ## Read the analog output value.
14096 field(DTYP,
"stream")
14097 field(SDIS,
"$(P):LS01:DISABLE_POLL")
14098 field(INP,
"@ls336.proto getAOUT(3) L0 0")
14099 field(SCAN,
"5 second")
14102 info(archive,
"Monitor, 00:00:01, VAL")
14106 ## Define the string/values for this record.
14108 record(mbbi,
"$(P):LS01:RANGE3") {
14114 ## Define the strings and values for this record.
14116 record(mbbi,
"$(P):LS01:OMM3") {
14118 field(ONST, "Closed Loop PID")
14119 field(TWST, "Zone")
14120 field(THST, "Open Loop")
14121 field(FRST, "Monitor Out")
14122 field(FVST, "Warmup Supply")
14126 ## Define the strings and values for this record.
14128 record(mbbo,
"$(P):LS01:RANGE_S3") {
14134 ## Define the strings and values for this record.
14136 record(mbbo,
"$(P):LS01:OMM_S3") {
14138 field(ONST, "Closed Loop PID")
14139 field(TWST, "Zone")
14140 field(THST, "Open Loop")
14141 field(FRST, "Monitor Out")
14142 field(FVST, "Warmup Supply")
14145 ###############################################
14146 # Add in ZONE support
14147 ###############################################
14150 # This just includes the zone file and overrides the RANGE options
14151 # for the analog control channels.
14153 #######################################
14155 # Template to support reading and setting
14156 # controller ZONE parameters. It reads the ZONE
14157 # parameters into an array, then uses subArrays to
14158 # extract each parameter.
14160 # This template is used by the output template
14161 # and it needs the following macros:
14163 # ZONE: zone number
14164 # OUT: output number
14166 #######################################
14169 ## Read the ZONE setting into an array (8 values)
14172 field(DTYP,
"stream")
14173 field(SDIS,
"$(P):LS01:DISABLE_POLL")
14174 field(INP,
"@ls336.proto getZONE(3,1) L0 0")
14175 field(SCAN,
"Passive")
14177 field(FTVL,
"DOUBLE")
14179 field(FLNK,
"$(P):LS01:Z1:UB3:ARRAY.PROC")
14183 ## Read the ZONE upper boundary setting.
14186 field(SCAN,
"Passive")
14187 field(FTVL,
"DOUBLE")
14188 field(INP,
"$(P):LS01:Z1:ALL3.VAL MS")
14193 field(FLNK,
"$(P):LS01:Z1:UB3.PROC")
14196 field(SCAN,
"Passive")
14197 field(INP,
"$(P):LS01:Z1:UB3:ARRAY.VAL MS")
14199 field(FLNK,
"$(P):LS01:Z1:P3:ARRAY.PROC")
14203 ## Read the ZONE P setting.
14206 field(SCAN,
"Passive")
14207 field(FTVL,
"DOUBLE")
14208 field(INP,
"$(P):LS01:Z1:ALL3.VAL MS")
14213 field(FLNK,
"$(P):LS01:Z1:P3.PROC")
14216 field(SCAN,
"Passive")
14217 field(INP,
"$(P):LS01:Z1:P3:ARRAY.VAL MS")
14219 field(FLNK,
"$(P):LS01:Z1:I3:ARRAY.PROC")
14223 ## Read the ZONE I setting.
14226 field(SCAN,
"Passive")
14227 field(FTVL,
"DOUBLE")
14228 field(INP,
"$(P):LS01:Z1:ALL3.VAL MS")
14233 field(FLNK,
"$(P):LS01:Z1:I3.PROC")
14236 field(SCAN,
"Passive")
14237 field(INP,
"$(P):LS01:Z1:I3:ARRAY.VAL MS")
14239 field(FLNK,
"$(P):LS01:Z1:D3:ARRAY.PROC")
14243 ## Read the ZONE D setting.
14246 field(SCAN,
"Passive")
14247 field(FTVL,
"DOUBLE")
14248 field(INP,
"$(P):LS01:Z1:ALL3.VAL MS")
14253 field(FLNK,
"$(P):LS01:Z1:D3.PROC")
14256 field(SCAN,
"Passive")
14257 field(INP,
"$(P):LS01:Z1:D3:ARRAY.VAL MS")
14259 field(FLNK,
"$(P):LS01:Z1:MOUT3:ARRAY.PROC")
14263 ## Read the ZONE MOUT setting.
14266 field(SCAN,
"Passive")
14267 field(FTVL,
"DOUBLE")
14268 field(INP,
"$(P):LS01:Z1:ALL3.VAL MS")
14273 field(FLNK,
"$(P):LS01:Z1:MOUT3.PROC")
14276 field(SCAN,
"Passive")
14277 field(INP,
"$(P):LS01:Z1:MOUT3:ARRAY.VAL MS")
14279 field(FLNK,
"$(P):LS01:Z1:RANGE3:ARRAY.PROC")
14283 ## Read the ZONE RANGE setting.
14286 field(SCAN,
"Passive")
14287 field(FTVL,
"DOUBLE")
14288 field(INP,
"$(P):LS01:Z1:ALL3.VAL MS")
14293 field(FLNK,
"$(P):LS01:Z1:RANGE3.PROC")
14296 field(INP,
"$(P):LS01:Z1:RANGE3:ARRAY.VAL")
14297 field(SCAN,
"Passive")
14300 field(ONST,
"Range1/Low")
14302 field(TWST,
"Range2/Medium")
14304 field(THST,
"Range3/High")
14306 field(FRST,
"Range4")
14308 field(FVST,
"Range5")
14310 field(FLNK,
"$(P):LS01:Z1:INPUT3:ARRAY.PROC")
14314 ## Read the ZONE INPUT setting.
14317 field(SCAN,
"Passive")
14318 field(FTVL,
"DOUBLE")
14319 field(INP,
"$(P):LS01:Z1:ALL3.VAL MS")
14324 field(FLNK,
"$(P):LS01:Z1:INPUT3.PROC")
14327 field(INP,
"$(P):LS01:Z1:INPUT3:ARRAY.VAL")
14328 field(SCAN,
"Passive")
14329 field(ZRST,
"None")
14331 field(ONST,
"Input A")
14333 field(TWST,
"Input B")
14335 field(THST,
"Input C")
14337 field(FRST,
"Input D")
14339 field(FVST,
"Input D2")
14341 field(SXST,
"Input D3")
14343 field(SVST,
"Input D4")
14345 field(EIST,
"Input D5")
14347 field(FLNK,
"$(P):LS01:Z1:RATE3:ARRAY.PROC")
14351 ## Read the ZONE RATE setting.
14354 field(SCAN,
"Passive")
14355 field(FTVL,
"DOUBLE")
14356 field(INP,
"$(P):LS01:Z1:ALL3.VAL MS")
14361 field(FLNK,
"$(P):LS01:Z1:RATE3.PROC")
14364 field(SCAN,
"Passive")
14365 field(INP,
"$(P):LS01:Z1:RATE3:ARRAY.VAL MS")
14367 field(FLNK,
"$(P):LS01:Z1:INITCALC3.PROC")
14370 ##############################################################
14372 ## Populate the write records below with the current values.
14373 ## Only do this once at startup.
14375 ###############################################################
14381 field(DOPT,
"Use OCAL")
14382 field(OOPT,
"When Zero")
14384 field(OUT,
"$(P):LS01:Z1:INITUB3.PROC")
14388 field(OMSL,
"closed_loop")
14389 field(DOL,
"$(P):LS01:Z1:UB3.VAL")
14390 field(OUTA,
"$(P):LS01:Z1:UB_S3.VAL PP")
14391 field(FLNK,
"$(P):LS01:Z1:INITP3.PROC")
14394 field(OMSL,
"closed_loop")
14395 field(DOL,
"$(P):LS01:Z1:P3.VAL")
14396 field(OUTA,
"$(P):LS01:Z1:P_S3.VAL PP")
14397 field(FLNK,
"$(P):LS01:Z1:INITI3.PROC")
14400 field(OMSL,
"closed_loop")
14401 field(DOL,
"$(P):LS01:Z1:I3.VAL")
14402 field(OUTA,
"$(P):LS01:Z1:I_S3.VAL PP")
14403 field(FLNK,
"$(P):LS01:Z1:INITD3.PROC")
14406 field(OMSL,
"closed_loop")
14407 field(DOL,
"$(P):LS01:Z1:D3.VAL")
14408 field(OUTA,
"$(P):LS01:Z1:D_S3.VAL PP")
14409 field(FLNK,
"$(P):LS01:Z1:INITMOUT3.PROC")
14412 field(OMSL,
"closed_loop")
14413 field(DOL,
"$(P):LS01:Z1:MOUT3.VAL")
14414 field(OUTA,
"$(P):LS01:Z1:MOUT_S3.VAL PP")
14415 field(FLNK,
"$(P):LS01:Z1:INITRANGE3.PROC")
14418 field(OMSL,
"closed_loop")
14419 field(DOL,
"$(P):LS01:Z1:RANGE3.VAL")
14420 field(OUTA,
"$(P):LS01:Z1:RANGE_S3.VAL PP")
14421 field(FLNK,
"$(P):LS01:Z1:INITINPUT3.PROC")
14424 field(OMSL,
"closed_loop")
14425 field(DOL,
"$(P):LS01:Z1:INPUT3.VAL")
14426 field(OUTA,
"$(P):LS01:Z1:INPUT_S3.VAL PP")
14427 field(FLNK,
"$(P):LS01:Z1:INITRATE3.PROC")
14430 field(OMSL,
"closed_loop")
14431 field(DOL,
"$(P):LS01:Z1:RATE3.VAL")
14432 field(OUTA,
"$(P):LS01:Z1:RATE_S3.VAL PP")
14433 field(FLNK,
"$(P):LS01:Z1:INITCOUNT3.PROC")
14438 field(OUTA,
"$(P):LS01:Z1:INITCALC3.A")
14443 #############################################
14444 # Write records. There is a calcout record to
14445 # do the actual write.
14446 #############################################
14449 ## Set the ZONE upper boundary setting.
14452 field(SCAN,
"Passive")
14454 field(SDIS,
"$(P):LS01:DISABLE")
14458 ## Set the ZONE P setting.
14461 field(SCAN,
"Passive")
14463 field(SDIS,
"$(P):LS01:DISABLE")
14467 ## Set the ZONE I setting.
14470 field(SCAN,
"Passive")
14472 field(SDIS,
"$(P):LS01:DISABLE")
14476 ## Set the ZONE D setting.
14479 field(SCAN,
"Passive")
14481 field(SDIS,
"$(P):LS01:DISABLE")
14485 ## Set the ZONE MOUT setting.
14488 field(SCAN,
"Passive")
14490 field(SDIS,
"$(P):LS01:DISABLE")
14494 ## Set the ZONE RANGE setting.
14497 field(SCAN,
"Passive")
14500 field(ONST,
"Range1/Low")
14502 field(TWST,
"Range2/Medium")
14504 field(THST,
"Range3/High")
14506 field(FRST,
"Range4")
14508 field(FVST,
"Range5")
14510 field(SDIS,
"$(P):LS01:DISABLE")
14514 ## Set the ZONE INPUT setting.
14517 field(ZRST,
"None")
14519 field(ONST,
"Input A")
14521 field(TWST,
"Input B")
14523 field(THST,
"Input C")
14525 field(FRST,
"Input D")
14527 field(FVST,
"Input D2")
14529 field(SXST,
"Input D3")
14531 field(SVST,
"Input D4")
14533 field(EIST,
"Input D5")
14535 field(SDIS,
"$(P):LS01:DISABLE")
14539 ## Set the ZONE RATE setting.
14542 field(SCAN,
"Passive")
14544 field(SDIS,
"$(P):LS01:DISABLE")
14548 ## Record to write the ZONE parameters.
14551 field(INPA,
"$(P):LS01:Z1:UB_S3")
14552 field(INPB,
"$(P):LS01:Z1:P_S3")
14553 field(INPC,
"$(P):LS01:Z1:I_S3")
14554 field(INPD,
"$(P):LS01:Z1:D_S3")
14555 field(INPE,
"$(P):LS01:Z1:MOUT_S3")
14556 field(INPF,
"$(P):LS01:Z1:RANGE_S3")
14557 field(INPG,
"$(P):LS01:Z1:INPUT_S3")
14558 field(INPH,
"$(P):LS01:Z1:RATE_S3")
14560 field(DTYP,
"stream")
14561 field(OUT,
"@ls336.proto setZONE(3,1) L0 0")
14562 field(SDIS,
"$(P):LS01:DISABLE")
14563 field(FLNK,
"$(P):LS01:Z1:ALL3.PROC")
14575 record(mbbi,
"$(P):LS01:Z1:RANGE3") {
14584 record(mbbo, "$(P):LS01:Z1:RANGE_S3") {
14598 # This just includes the zone file and overrides the RANGE options
14599 # for the analog control channels.
14601 #######################################
14603 # Template to support reading and setting
14604 # controller ZONE parameters. It reads the ZONE
14605 # parameters into an array, then uses subArrays to
14606 # extract each parameter.
14608 # This template is used by the output template
14609 # and it needs the following macros:
14611 # ZONE: zone number
14612 # OUT: output number
14614 #######################################
14617 ## Read the ZONE setting into an array (8 values)
14620 field(DTYP,
"stream")
14621 field(SDIS,
"$(P):LS01:DISABLE_POLL")
14622 field(INP,
"@ls336.proto getZONE(3,2) L0 0")
14623 field(SCAN,
"Passive")
14625 field(FTVL,
"DOUBLE")
14627 field(FLNK,
"$(P):LS01:Z2:UB3:ARRAY.PROC")
14631 ## Read the ZONE upper boundary setting.
14634 field(SCAN,
"Passive")
14635 field(FTVL,
"DOUBLE")
14636 field(INP,
"$(P):LS01:Z2:ALL3.VAL MS")
14641 field(FLNK,
"$(P):LS01:Z2:UB3.PROC")
14644 field(SCAN,
"Passive")
14645 field(INP,
"$(P):LS01:Z2:UB3:ARRAY.VAL MS")
14647 field(FLNK,
"$(P):LS01:Z2:P3:ARRAY.PROC")
14651 ## Read the ZONE P setting.
14654 field(SCAN,
"Passive")
14655 field(FTVL,
"DOUBLE")
14656 field(INP,
"$(P):LS01:Z2:ALL3.VAL MS")
14661 field(FLNK,
"$(P):LS01:Z2:P3.PROC")
14664 field(SCAN,
"Passive")
14665 field(INP,
"$(P):LS01:Z2:P3:ARRAY.VAL MS")
14667 field(FLNK,
"$(P):LS01:Z2:I3:ARRAY.PROC")
14671 ## Read the ZONE I setting.
14674 field(SCAN,
"Passive")
14675 field(FTVL,
"DOUBLE")
14676 field(INP,
"$(P):LS01:Z2:ALL3.VAL MS")
14681 field(FLNK,
"$(P):LS01:Z2:I3.PROC")
14684 field(SCAN,
"Passive")
14685 field(INP,
"$(P):LS01:Z2:I3:ARRAY.VAL MS")
14687 field(FLNK,
"$(P):LS01:Z2:D3:ARRAY.PROC")
14691 ## Read the ZONE D setting.
14694 field(SCAN,
"Passive")
14695 field(FTVL,
"DOUBLE")
14696 field(INP,
"$(P):LS01:Z2:ALL3.VAL MS")
14701 field(FLNK,
"$(P):LS01:Z2:D3.PROC")
14704 field(SCAN,
"Passive")
14705 field(INP,
"$(P):LS01:Z2:D3:ARRAY.VAL MS")
14707 field(FLNK,
"$(P):LS01:Z2:MOUT3:ARRAY.PROC")
14711 ## Read the ZONE MOUT setting.
14714 field(SCAN,
"Passive")
14715 field(FTVL,
"DOUBLE")
14716 field(INP,
"$(P):LS01:Z2:ALL3.VAL MS")
14721 field(FLNK,
"$(P):LS01:Z2:MOUT3.PROC")
14724 field(SCAN,
"Passive")
14725 field(INP,
"$(P):LS01:Z2:MOUT3:ARRAY.VAL MS")
14727 field(FLNK,
"$(P):LS01:Z2:RANGE3:ARRAY.PROC")
14731 ## Read the ZONE RANGE setting.
14734 field(SCAN,
"Passive")
14735 field(FTVL,
"DOUBLE")
14736 field(INP,
"$(P):LS01:Z2:ALL3.VAL MS")
14741 field(FLNK,
"$(P):LS01:Z2:RANGE3.PROC")
14744 field(INP,
"$(P):LS01:Z2:RANGE3:ARRAY.VAL")
14745 field(SCAN,
"Passive")
14748 field(ONST,
"Range1/Low")
14750 field(TWST,
"Range2/Medium")
14752 field(THST,
"Range3/High")
14754 field(FRST,
"Range4")
14756 field(FVST,
"Range5")
14758 field(FLNK,
"$(P):LS01:Z2:INPUT3:ARRAY.PROC")
14762 ## Read the ZONE INPUT setting.
14765 field(SCAN,
"Passive")
14766 field(FTVL,
"DOUBLE")
14767 field(INP,
"$(P):LS01:Z2:ALL3.VAL MS")
14772 field(FLNK,
"$(P):LS01:Z2:INPUT3.PROC")
14775 field(INP,
"$(P):LS01:Z2:INPUT3:ARRAY.VAL")
14776 field(SCAN,
"Passive")
14777 field(ZRST,
"None")
14779 field(ONST,
"Input A")
14781 field(TWST,
"Input B")
14783 field(THST,
"Input C")
14785 field(FRST,
"Input D")
14787 field(FVST,
"Input D2")
14789 field(SXST,
"Input D3")
14791 field(SVST,
"Input D4")
14793 field(EIST,
"Input D5")
14795 field(FLNK,
"$(P):LS01:Z2:RATE3:ARRAY.PROC")
14799 ## Read the ZONE RATE setting.
14802 field(SCAN,
"Passive")
14803 field(FTVL,
"DOUBLE")
14804 field(INP,
"$(P):LS01:Z2:ALL3.VAL MS")
14809 field(FLNK,
"$(P):LS01:Z2:RATE3.PROC")
14812 field(SCAN,
"Passive")
14813 field(INP,
"$(P):LS01:Z2:RATE3:ARRAY.VAL MS")
14815 field(FLNK,
"$(P):LS01:Z2:INITCALC3.PROC")
14818 ##############################################################
14820 ## Populate the write records below with the current values.
14821 ## Only do this once at startup.
14823 ###############################################################
14829 field(DOPT,
"Use OCAL")
14830 field(OOPT,
"When Zero")
14832 field(OUT,
"$(P):LS01:Z2:INITUB3.PROC")
14836 field(OMSL,
"closed_loop")
14837 field(DOL,
"$(P):LS01:Z2:UB3.VAL")
14838 field(OUTA,
"$(P):LS01:Z2:UB_S3.VAL PP")
14839 field(FLNK,
"$(P):LS01:Z2:INITP3.PROC")
14842 field(OMSL,
"closed_loop")
14843 field(DOL,
"$(P):LS01:Z2:P3.VAL")
14844 field(OUTA,
"$(P):LS01:Z2:P_S3.VAL PP")
14845 field(FLNK,
"$(P):LS01:Z2:INITI3.PROC")
14848 field(OMSL,
"closed_loop")
14849 field(DOL,
"$(P):LS01:Z2:I3.VAL")
14850 field(OUTA,
"$(P):LS01:Z2:I_S3.VAL PP")
14851 field(FLNK,
"$(P):LS01:Z2:INITD3.PROC")
14854 field(OMSL,
"closed_loop")
14855 field(DOL,
"$(P):LS01:Z2:D3.VAL")
14856 field(OUTA,
"$(P):LS01:Z2:D_S3.VAL PP")
14857 field(FLNK,
"$(P):LS01:Z2:INITMOUT3.PROC")
14860 field(OMSL,
"closed_loop")
14861 field(DOL,
"$(P):LS01:Z2:MOUT3.VAL")
14862 field(OUTA,
"$(P):LS01:Z2:MOUT_S3.VAL PP")
14863 field(FLNK,
"$(P):LS01:Z2:INITRANGE3.PROC")
14866 field(OMSL,
"closed_loop")
14867 field(DOL,
"$(P):LS01:Z2:RANGE3.VAL")
14868 field(OUTA,
"$(P):LS01:Z2:RANGE_S3.VAL PP")
14869 field(FLNK,
"$(P):LS01:Z2:INITINPUT3.PROC")
14872 field(OMSL,
"closed_loop")
14873 field(DOL,
"$(P):LS01:Z2:INPUT3.VAL")
14874 field(OUTA,
"$(P):LS01:Z2:INPUT_S3.VAL PP")
14875 field(FLNK,
"$(P):LS01:Z2:INITRATE3.PROC")
14878 field(OMSL,
"closed_loop")
14879 field(DOL,
"$(P):LS01:Z2:RATE3.VAL")
14880 field(OUTA,
"$(P):LS01:Z2:RATE_S3.VAL PP")
14881 field(FLNK,
"$(P):LS01:Z2:INITCOUNT3.PROC")
14886 field(OUTA,
"$(P):LS01:Z2:INITCALC3.A")
14891 #############################################
14892 # Write records. There is a calcout record to
14893 # do the actual write.
14894 #############################################
14897 ## Set the ZONE upper boundary setting.
14900 field(SCAN,
"Passive")
14902 field(SDIS,
"$(P):LS01:DISABLE")
14906 ## Set the ZONE P setting.
14909 field(SCAN,
"Passive")
14911 field(SDIS,
"$(P):LS01:DISABLE")
14915 ## Set the ZONE I setting.
14918 field(SCAN,
"Passive")
14920 field(SDIS,
"$(P):LS01:DISABLE")
14924 ## Set the ZONE D setting.
14927 field(SCAN,
"Passive")
14929 field(SDIS,
"$(P):LS01:DISABLE")
14933 ## Set the ZONE MOUT setting.
14936 field(SCAN,
"Passive")
14938 field(SDIS,
"$(P):LS01:DISABLE")
14942 ## Set the ZONE RANGE setting.
14945 field(SCAN,
"Passive")
14948 field(ONST,
"Range1/Low")
14950 field(TWST,
"Range2/Medium")
14952 field(THST,
"Range3/High")
14954 field(FRST,
"Range4")
14956 field(FVST,
"Range5")
14958 field(SDIS,
"$(P):LS01:DISABLE")
14962 ## Set the ZONE INPUT setting.
14965 field(ZRST,
"None")
14967 field(ONST,
"Input A")
14969 field(TWST,
"Input B")
14971 field(THST,
"Input C")
14973 field(FRST,
"Input D")
14975 field(FVST,
"Input D2")
14977 field(SXST,
"Input D3")
14979 field(SVST,
"Input D4")
14981 field(EIST,
"Input D5")
14983 field(SDIS,
"$(P):LS01:DISABLE")
14987 ## Set the ZONE RATE setting.
14990 field(SCAN,
"Passive")
14992 field(SDIS,
"$(P):LS01:DISABLE")
14996 ## Record to write the ZONE parameters.
14999 field(INPA,
"$(P):LS01:Z2:UB_S3")
15000 field(INPB,
"$(P):LS01:Z2:P_S3")
15001 field(INPC,
"$(P):LS01:Z2:I_S3")
15002 field(INPD,
"$(P):LS01:Z2:D_S3")
15003 field(INPE,
"$(P):LS01:Z2:MOUT_S3")
15004 field(INPF,
"$(P):LS01:Z2:RANGE_S3")
15005 field(INPG,
"$(P):LS01:Z2:INPUT_S3")
15006 field(INPH,
"$(P):LS01:Z2:RATE_S3")
15008 field(DTYP,
"stream")
15009 field(OUT,
"@ls336.proto setZONE(3,2) L0 0")
15010 field(SDIS,
"$(P):LS01:DISABLE")
15011 field(FLNK,
"$(P):LS01:Z2:ALL3.PROC")
15023 record(mbbi,
"$(P):LS01:Z2:RANGE3") {
15032 record(mbbo, "$(P):LS01:Z2:RANGE_S3") {
15046 # This just includes the zone file and overrides the RANGE options
15047 # for the analog control channels.
15049 #######################################
15051 # Template to support reading and setting
15052 # controller ZONE parameters. It reads the ZONE
15053 # parameters into an array, then uses subArrays to
15054 # extract each parameter.
15056 # This template is used by the output template
15057 # and it needs the following macros:
15059 # ZONE: zone number
15060 # OUT: output number
15062 #######################################
15065 ## Read the ZONE setting into an array (8 values)
15067 record(waveform,
"$(P):LS01:Z2:ALL3") {
15068 field(DTYP,
"stream")
15069 field(SDIS, "$(P):LS01:DISABLE_POLL")
15070 field(INP, "@ls336.proto getZONE(3,2) L0 0")
15071 field(SCAN, "Passive")
15073 field(FTVL, "DOUBLE")
15075 field(FLNK, "$(P):LS01:Z2:UB3:ARRAY.PROC")
15079 ## Read the ZONE upper boundary setting.
15081 record(subArray,
"$(P):LS01:Z2:UB3:ARRAY") {
15082 field(SCAN,
"Passive")
15083 field(FTVL, "DOUBLE")
15084 field(INP, "$(P):LS01:Z2:ALL3.VAL MS")
15089 field(FLNK, "$(P):LS01:Z2:UB3.PROC")
15091 record(ai, "$(P):LS01:Z2:UB3") {
15092 field(SCAN,
"Passive")
15093 field(INP, "$(P):LS01:Z2:UB3:ARRAY.VAL MS")
15095 field(FLNK, "$(P):LS01:Z2:P3:ARRAY.PROC")
15099 ## Read the ZONE P setting.
15101 record(subArray,
"$(P):LS01:Z2:P3:ARRAY") {
15102 field(SCAN,
"Passive")
15103 field(FTVL, "DOUBLE")
15104 field(INP, "$(P):LS01:Z2:ALL3.VAL MS")
15109 field(FLNK, "$(P):LS01:Z2:P3.PROC")
15111 record(ai, "$(P):LS01:Z2:P3") {
15112 field(SCAN,
"Passive")
15113 field(INP, "$(P):LS01:Z2:P3:ARRAY.VAL MS")
15115 field(FLNK, "$(P):LS01:Z2:I3:ARRAY.PROC")
15119 ## Read the ZONE I setting.
15121 record(subArray,
"$(P):LS01:Z2:I3:ARRAY") {
15122 field(SCAN,
"Passive")
15123 field(FTVL, "DOUBLE")
15124 field(INP, "$(P):LS01:Z2:ALL3.VAL MS")
15129 field(FLNK, "$(P):LS01:Z2:I3.PROC")
15131 record(ai, "$(P):LS01:Z2:I3") {
15132 field(SCAN,
"Passive")
15133 field(INP, "$(P):LS01:Z2:I3:ARRAY.VAL MS")
15135 field(FLNK, "$(P):LS01:Z2:D3:ARRAY.PROC")
15139 ## Read the ZONE D setting.
15141 record(subArray,
"$(P):LS01:Z2:D3:ARRAY") {
15142 field(SCAN,
"Passive")
15143 field(FTVL, "DOUBLE")
15144 field(INP, "$(P):LS01:Z2:ALL3.VAL MS")
15149 field(FLNK, "$(P):LS01:Z2:D3.PROC")
15151 record(ai, "$(P):LS01:Z2:D3") {
15152 field(SCAN,
"Passive")
15153 field(INP, "$(P):LS01:Z2:D3:ARRAY.VAL MS")
15155 field(FLNK, "$(P):LS01:Z2:MOUT3:ARRAY.PROC")
15159 ## Read the ZONE MOUT setting.
15161 record(subArray,
"$(P):LS01:Z2:MOUT3:ARRAY") {
15162 field(SCAN,
"Passive")
15163 field(FTVL, "DOUBLE")
15164 field(INP, "$(P):LS01:Z2:ALL3.VAL MS")
15169 field(FLNK, "$(P):LS01:Z2:MOUT3.PROC")
15171 record(ai, "$(P):LS01:Z2:MOUT3") {
15172 field(SCAN,
"Passive")
15173 field(INP, "$(P):LS01:Z2:MOUT3:ARRAY.VAL MS")
15175 field(FLNK, "$(P):LS01:Z2:RANGE3:ARRAY.PROC")
15179 ## Read the ZONE RANGE setting.
15181 record(subArray,
"$(P):LS01:Z2:RANGE3:ARRAY") {
15182 field(SCAN,
"Passive")
15183 field(FTVL, "DOUBLE")
15184 field(INP, "$(P):LS01:Z2:ALL3.VAL MS")
15189 field(FLNK, "$(P):LS01:Z2:RANGE3.PROC")
15191 record(mbbi, "$(P):LS01:Z2:RANGE3") {
15192 field(INP,
"$(P):LS01:Z2:RANGE3:ARRAY.VAL")
15193 field(SCAN, "Passive")
15196 field(ONST, "Range1/Low")
15198 field(TWST, "Range2/Medium")
15200 field(THST, "Range3/High")
15202 field(FRST, "Range4")
15204 field(FVST, "Range5")
15206 field(FLNK, "$(P):LS01:Z2:INPUT3:ARRAY.PROC")
15210 ## Read the ZONE INPUT setting.
15212 record(subArray,
"$(P):LS01:Z2:INPUT3:ARRAY") {
15213 field(SCAN,
"Passive")
15214 field(FTVL, "DOUBLE")
15215 field(INP, "$(P):LS01:Z2:ALL3.VAL MS")
15220 field(FLNK, "$(P):LS01:Z2:INPUT3.PROC")
15222 record(mbbi, "$(P):LS01:Z2:INPUT3") {
15223 field(INP,
"$(P):LS01:Z2:INPUT3:ARRAY.VAL")
15224 field(SCAN, "Passive")
15225 field(ZRST, "None")
15227 field(ONST, "Input A")
15229 field(TWST, "Input B")
15231 field(THST, "Input C")
15233 field(FRST, "Input D")
15235 field(FVST, "Input D2")
15237 field(SXST, "Input D3")
15239 field(SVST, "Input D4")
15241 field(EIST, "Input D5")
15243 field(FLNK, "$(P):LS01:Z2:RATE3:ARRAY.PROC")
15247 ## Read the ZONE RATE setting.
15249 record(subArray,
"$(P):LS01:Z2:RATE3:ARRAY") {
15250 field(SCAN,
"Passive")
15251 field(FTVL, "DOUBLE")
15252 field(INP, "$(P):LS01:Z2:ALL3.VAL MS")
15257 field(FLNK, "$(P):LS01:Z2:RATE3.PROC")
15259 record(ai, "$(P):LS01:Z2:RATE3") {
15260 field(SCAN,
"Passive")
15261 field(INP, "$(P):LS01:Z2:RATE3:ARRAY.VAL MS")
15263 field(FLNK, "$(P):LS01:Z2:INITCALC3.PROC")
15266 ##############################################################
15268 ## Populate the write records below with the current values.
15269 ## Only do this once at startup.
15271 ###############################################################
15273 record(calcout,
"$(P):LS01:Z2:INITCALC3") {
15277 field(DOPT, "Use OCAL")
15278 field(OOPT, "When Zero")
15280 field(OUT, "$(P):LS01:Z2:INITUB3.PROC")
15283 record(dfanout, "$(P):LS01:Z2:INITUB3") {
15284 field(OMSL,
"closed_loop")
15285 field(DOL, "$(P):LS01:Z2:UB3.VAL")
15286 field(OUTA, "$(P):LS01:Z2:UB_S3.VAL PP")
15287 field(FLNK, "$(P):LS01:Z2:INITP3.PROC")
15289 record(dfanout, "$(P):LS01:Z2:INITP3") {
15290 field(OMSL,
"closed_loop")
15291 field(DOL, "$(P):LS01:Z2:P3.VAL")
15292 field(OUTA, "$(P):LS01:Z2:P_S3.VAL PP")
15293 field(FLNK, "$(P):LS01:Z2:INITI3.PROC")
15295 record(dfanout, "$(P):LS01:Z2:INITI3") {
15296 field(OMSL,
"closed_loop")
15297 field(DOL, "$(P):LS01:Z2:I3.VAL")
15298 field(OUTA, "$(P):LS01:Z2:I_S3.VAL PP")
15299 field(FLNK, "$(P):LS01:Z2:INITD3.PROC")
15301 record(dfanout, "$(P):LS01:Z2:INITD3") {
15302 field(OMSL,
"closed_loop")
15303 field(DOL, "$(P):LS01:Z2:D3.VAL")
15304 field(OUTA, "$(P):LS01:Z2:D_S3.VAL PP")
15305 field(FLNK, "$(P):LS01:Z2:INITMOUT3.PROC")
15307 record(dfanout, "$(P):LS01:Z2:INITMOUT3") {
15308 field(OMSL,
"closed_loop")
15309 field(DOL, "$(P):LS01:Z2:MOUT3.VAL")
15310 field(OUTA, "$(P):LS01:Z2:MOUT_S3.VAL PP")
15311 field(FLNK, "$(P):LS01:Z2:INITRANGE3.PROC")
15313 record(dfanout, "$(P):LS01:Z2:INITRANGE3") {
15314 field(OMSL,
"closed_loop")
15315 field(DOL, "$(P):LS01:Z2:RANGE3.VAL")
15316 field(OUTA, "$(P):LS01:Z2:RANGE_S3.VAL PP")
15317 field(FLNK, "$(P):LS01:Z2:INITINPUT3.PROC")
15319 record(dfanout, "$(P):LS01:Z2:INITINPUT3") {
15320 field(OMSL,
"closed_loop")
15321 field(DOL, "$(P):LS01:Z2:INPUT3.VAL")
15322 field(OUTA, "$(P):LS01:Z2:INPUT_S3.VAL PP")
15323 field(FLNK, "$(P):LS01:Z2:INITRATE3.PROC")
15325 record(dfanout, "$(P):LS01:Z2:INITRATE3") {
15326 field(OMSL,
"closed_loop")
15327 field(DOL, "$(P):LS01:Z2:RATE3.VAL")
15328 field(OUTA, "$(P):LS01:Z2:RATE_S3.VAL PP")
15329 field(FLNK, "$(P):LS01:Z2:INITCOUNT3.PROC")
15332 record(dfanout, "$(P):LS01:Z2:INITCOUNT3") {
15334 field(OUTA, "$(P):LS01:Z2:INITCALC3.A")
15339 #############################################
15340 # Write records. There is a calcout record to
15341 # do the actual write.
15342 #############################################
15345 ## Set the ZONE upper boundary setting.
15347 record(ao,
"$(P):LS01:Z2:UB_S3") {
15348 field(SCAN,
"Passive")
15350 field(SDIS, "$(P):LS01:DISABLE")
15354 ## Set the ZONE P setting.
15356 record(ao,
"$(P):LS01:Z2:P_S3") {
15357 field(SCAN,
"Passive")
15359 field(SDIS, "$(P):LS01:DISABLE")
15363 ## Set the ZONE I setting.
15365 record(ao,
"$(P):LS01:Z2:I_S3") {
15366 field(SCAN,
"Passive")
15368 field(SDIS, "$(P):LS01:DISABLE")
15372 ## Set the ZONE D setting.
15374 record(ao,
"$(P):LS01:Z2:D_S3") {
15375 field(SCAN,
"Passive")
15377 field(SDIS, "$(P):LS01:DISABLE")
15381 ## Set the ZONE MOUT setting.
15383 record(ao,
"$(P):LS01:Z2:MOUT_S3") {
15384 field(SCAN,
"Passive")
15386 field(SDIS, "$(P):LS01:DISABLE")
15390 ## Set the ZONE RANGE setting.
15392 record(mbbo,
"$(P):LS01:Z2:RANGE_S3") {
15393 field(SCAN,
"Passive")
15396 field(ONST, "Range1/Low")
15398 field(TWST, "Range2/Medium")
15400 field(THST, "Range3/High")
15402 field(FRST, "Range4")
15404 field(FVST, "Range5")
15406 field(SDIS, "$(P):LS01:DISABLE")
15410 ## Set the ZONE INPUT setting.
15412 record(mbbo,
"$(P):LS01:Z2:INPUT_S3") {
15413 field(ZRST,
"None")
15415 field(ONST, "Input A")
15417 field(TWST, "Input B")
15419 field(THST, "Input C")
15421 field(FRST, "Input D")
15423 field(FVST, "Input D2")
15425 field(SXST, "Input D3")
15427 field(SVST, "Input D4")
15429 field(EIST, "Input D5")
15431 field(SDIS, "$(P):LS01:DISABLE")
15435 ## Set the ZONE RATE setting.
15437 record(ao,
"$(P):LS01:Z2:RATE_S3") {
15438 field(SCAN,
"Passive")
15440 field(SDIS, "$(P):LS01:DISABLE")
15444 ## Record to write the ZONE parameters.
15446 record(calcout,
"$(P):LS01:Z2:SET3") {
15447 field(INPA,
"$(P):LS01:Z2:UB_S3")
15448 field(INPB, "$(P):LS01:Z2:P_S3")
15449 field(INPC, "$(P):LS01:Z2:I_S3")
15450 field(INPD, "$(P):LS01:Z2:D_S3")
15451 field(INPE, "$(P):LS01:Z2:MOUT_S3")
15452 field(INPF, "$(P):LS01:Z2:RANGE_S3")
15453 field(INPG, "$(P):LS01:Z2:INPUT_S3")
15454 field(INPH, "$(P):LS01:Z2:RATE_S3")
15456 field(DTYP, "stream")
15457 field(OUT, "@ls336.proto setZONE(3,2) L0 0")
15458 field(SDIS, "$(P):LS01:DISABLE")
15459 field(FLNK, "$(P):LS01:Z2:ALL3.PROC")
15471 record(mbbi, "$(P):LS01:Z2:RANGE3") {
15480 record(mbbo, "$(P):LS01:Z2:RANGE_S3") {
15494 # This just includes the zone file and overrides the RANGE options
15495 # for the analog control channels.
15497 #######################################
15499 # Template to support reading and setting
15500 # controller ZONE parameters. It reads the ZONE
15501 # parameters into an array, then uses subArrays to
15502 # extract each parameter.
15504 # This template is used by the output template
15505 # and it needs the following macros:
15507 # ZONE: zone number
15508 # OUT: output number
15510 #######################################
15513 ## Read the ZONE setting into an array (8 values)
15516 field(DTYP,
"stream")
15517 field(SDIS,
"$(P):LS01:DISABLE_POLL")
15518 field(INP,
"@ls336.proto getZONE(3,3) L0 0")
15519 field(SCAN,
"Passive")
15521 field(FTVL,
"DOUBLE")
15523 field(FLNK,
"$(P):LS01:Z3:UB3:ARRAY.PROC")
15527 ## Read the ZONE upper boundary setting.
15530 field(SCAN,
"Passive")
15531 field(FTVL,
"DOUBLE")
15532 field(INP,
"$(P):LS01:Z3:ALL3.VAL MS")
15537 field(FLNK,
"$(P):LS01:Z3:UB3.PROC")
15540 field(SCAN,
"Passive")
15541 field(INP,
"$(P):LS01:Z3:UB3:ARRAY.VAL MS")
15543 field(FLNK,
"$(P):LS01:Z3:P3:ARRAY.PROC")
15547 ## Read the ZONE P setting.
15550 field(SCAN,
"Passive")
15551 field(FTVL,
"DOUBLE")
15552 field(INP,
"$(P):LS01:Z3:ALL3.VAL MS")
15557 field(FLNK,
"$(P):LS01:Z3:P3.PROC")
15560 field(SCAN,
"Passive")
15561 field(INP,
"$(P):LS01:Z3:P3:ARRAY.VAL MS")
15563 field(FLNK,
"$(P):LS01:Z3:I3:ARRAY.PROC")
15567 ## Read the ZONE I setting.
15570 field(SCAN,
"Passive")
15571 field(FTVL,
"DOUBLE")
15572 field(INP,
"$(P):LS01:Z3:ALL3.VAL MS")
15577 field(FLNK,
"$(P):LS01:Z3:I3.PROC")
15580 field(SCAN,
"Passive")
15581 field(INP,
"$(P):LS01:Z3:I3:ARRAY.VAL MS")
15583 field(FLNK,
"$(P):LS01:Z3:D3:ARRAY.PROC")
15587 ## Read the ZONE D setting.
15590 field(SCAN,
"Passive")
15591 field(FTVL,
"DOUBLE")
15592 field(INP,
"$(P):LS01:Z3:ALL3.VAL MS")
15597 field(FLNK,
"$(P):LS01:Z3:D3.PROC")
15600 field(SCAN,
"Passive")
15601 field(INP,
"$(P):LS01:Z3:D3:ARRAY.VAL MS")
15603 field(FLNK,
"$(P):LS01:Z3:MOUT3:ARRAY.PROC")
15607 ## Read the ZONE MOUT setting.
15610 field(SCAN,
"Passive")
15611 field(FTVL,
"DOUBLE")
15612 field(INP,
"$(P):LS01:Z3:ALL3.VAL MS")
15617 field(FLNK,
"$(P):LS01:Z3:MOUT3.PROC")
15620 field(SCAN,
"Passive")
15621 field(INP,
"$(P):LS01:Z3:MOUT3:ARRAY.VAL MS")
15623 field(FLNK,
"$(P):LS01:Z3:RANGE3:ARRAY.PROC")
15627 ## Read the ZONE RANGE setting.
15630 field(SCAN,
"Passive")
15631 field(FTVL,
"DOUBLE")
15632 field(INP,
"$(P):LS01:Z3:ALL3.VAL MS")
15637 field(FLNK,
"$(P):LS01:Z3:RANGE3.PROC")
15640 field(INP,
"$(P):LS01:Z3:RANGE3:ARRAY.VAL")
15641 field(SCAN,
"Passive")
15644 field(ONST,
"Range1/Low")
15646 field(TWST,
"Range2/Medium")
15648 field(THST,
"Range3/High")
15650 field(FRST,
"Range4")
15652 field(FVST,
"Range5")
15654 field(FLNK,
"$(P):LS01:Z3:INPUT3:ARRAY.PROC")
15658 ## Read the ZONE INPUT setting.
15661 field(SCAN,
"Passive")
15662 field(FTVL,
"DOUBLE")
15663 field(INP,
"$(P):LS01:Z3:ALL3.VAL MS")
15668 field(FLNK,
"$(P):LS01:Z3:INPUT3.PROC")
15671 field(INP,
"$(P):LS01:Z3:INPUT3:ARRAY.VAL")
15672 field(SCAN,
"Passive")
15673 field(ZRST,
"None")
15675 field(ONST,
"Input A")
15677 field(TWST,
"Input B")
15679 field(THST,
"Input C")
15681 field(FRST,
"Input D")
15683 field(FVST,
"Input D2")
15685 field(SXST,
"Input D3")
15687 field(SVST,
"Input D4")
15689 field(EIST,
"Input D5")
15691 field(FLNK,
"$(P):LS01:Z3:RATE3:ARRAY.PROC")
15695 ## Read the ZONE RATE setting.
15698 field(SCAN,
"Passive")
15699 field(FTVL,
"DOUBLE")
15700 field(INP,
"$(P):LS01:Z3:ALL3.VAL MS")
15705 field(FLNK,
"$(P):LS01:Z3:RATE3.PROC")
15708 field(SCAN,
"Passive")
15709 field(INP,
"$(P):LS01:Z3:RATE3:ARRAY.VAL MS")
15711 field(FLNK,
"$(P):LS01:Z3:INITCALC3.PROC")
15714 ##############################################################
15716 ## Populate the write records below with the current values.
15717 ## Only do this once at startup.
15719 ###############################################################
15725 field(DOPT,
"Use OCAL")
15726 field(OOPT,
"When Zero")
15728 field(OUT,
"$(P):LS01:Z3:INITUB3.PROC")
15732 field(OMSL,
"closed_loop")
15733 field(DOL,
"$(P):LS01:Z3:UB3.VAL")
15734 field(OUTA,
"$(P):LS01:Z3:UB_S3.VAL PP")
15735 field(FLNK,
"$(P):LS01:Z3:INITP3.PROC")
15738 field(OMSL,
"closed_loop")
15739 field(DOL,
"$(P):LS01:Z3:P3.VAL")
15740 field(OUTA,
"$(P):LS01:Z3:P_S3.VAL PP")
15741 field(FLNK,
"$(P):LS01:Z3:INITI3.PROC")
15744 field(OMSL,
"closed_loop")
15745 field(DOL,
"$(P):LS01:Z3:I3.VAL")
15746 field(OUTA,
"$(P):LS01:Z3:I_S3.VAL PP")
15747 field(FLNK,
"$(P):LS01:Z3:INITD3.PROC")
15750 field(OMSL,
"closed_loop")
15751 field(DOL,
"$(P):LS01:Z3:D3.VAL")
15752 field(OUTA,
"$(P):LS01:Z3:D_S3.VAL PP")
15753 field(FLNK,
"$(P):LS01:Z3:INITMOUT3.PROC")
15756 field(OMSL,
"closed_loop")
15757 field(DOL,
"$(P):LS01:Z3:MOUT3.VAL")
15758 field(OUTA,
"$(P):LS01:Z3:MOUT_S3.VAL PP")
15759 field(FLNK,
"$(P):LS01:Z3:INITRANGE3.PROC")
15762 field(OMSL,
"closed_loop")
15763 field(DOL,
"$(P):LS01:Z3:RANGE3.VAL")
15764 field(OUTA,
"$(P):LS01:Z3:RANGE_S3.VAL PP")
15765 field(FLNK,
"$(P):LS01:Z3:INITINPUT3.PROC")
15768 field(OMSL,
"closed_loop")
15769 field(DOL,
"$(P):LS01:Z3:INPUT3.VAL")
15770 field(OUTA,
"$(P):LS01:Z3:INPUT_S3.VAL PP")
15771 field(FLNK,
"$(P):LS01:Z3:INITRATE3.PROC")
15774 field(OMSL,
"closed_loop")
15775 field(DOL,
"$(P):LS01:Z3:RATE3.VAL")
15776 field(OUTA,
"$(P):LS01:Z3:RATE_S3.VAL PP")
15777 field(FLNK,
"$(P):LS01:Z3:INITCOUNT3.PROC")
15782 field(OUTA,
"$(P):LS01:Z3:INITCALC3.A")
15787 #############################################
15788 # Write records. There is a calcout record to
15789 # do the actual write.
15790 #############################################
15793 ## Set the ZONE upper boundary setting.
15796 field(SCAN,
"Passive")
15798 field(SDIS,
"$(P):LS01:DISABLE")
15802 ## Set the ZONE P setting.
15805 field(SCAN,
"Passive")
15807 field(SDIS,
"$(P):LS01:DISABLE")
15811 ## Set the ZONE I setting.
15814 field(SCAN,
"Passive")
15816 field(SDIS,
"$(P):LS01:DISABLE")
15820 ## Set the ZONE D setting.
15823 field(SCAN,
"Passive")
15825 field(SDIS,
"$(P):LS01:DISABLE")
15829 ## Set the ZONE MOUT setting.
15832 field(SCAN,
"Passive")
15834 field(SDIS,
"$(P):LS01:DISABLE")
15838 ## Set the ZONE RANGE setting.
15841 field(SCAN,
"Passive")
15844 field(ONST,
"Range1/Low")
15846 field(TWST,
"Range2/Medium")
15848 field(THST,
"Range3/High")
15850 field(FRST,
"Range4")
15852 field(FVST,
"Range5")
15854 field(SDIS,
"$(P):LS01:DISABLE")
15858 ## Set the ZONE INPUT setting.
15861 field(ZRST,
"None")
15863 field(ONST,
"Input A")
15865 field(TWST,
"Input B")
15867 field(THST,
"Input C")
15869 field(FRST,
"Input D")
15871 field(FVST,
"Input D2")
15873 field(SXST,
"Input D3")
15875 field(SVST,
"Input D4")
15877 field(EIST,
"Input D5")
15879 field(SDIS,
"$(P):LS01:DISABLE")
15883 ## Set the ZONE RATE setting.
15886 field(SCAN,
"Passive")
15888 field(SDIS,
"$(P):LS01:DISABLE")
15892 ## Record to write the ZONE parameters.
15895 field(INPA,
"$(P):LS01:Z3:UB_S3")
15896 field(INPB,
"$(P):LS01:Z3:P_S3")
15897 field(INPC,
"$(P):LS01:Z3:I_S3")
15898 field(INPD,
"$(P):LS01:Z3:D_S3")
15899 field(INPE,
"$(P):LS01:Z3:MOUT_S3")
15900 field(INPF,
"$(P):LS01:Z3:RANGE_S3")
15901 field(INPG,
"$(P):LS01:Z3:INPUT_S3")
15902 field(INPH,
"$(P):LS01:Z3:RATE_S3")
15904 field(DTYP,
"stream")
15905 field(OUT,
"@ls336.proto setZONE(3,3) L0 0")
15906 field(SDIS,
"$(P):LS01:DISABLE")
15907 field(FLNK,
"$(P):LS01:Z3:ALL3.PROC")
15919 record(mbbi,
"$(P):LS01:Z3:RANGE3") {
15928 record(mbbo, "$(P):LS01:Z3:RANGE_S3") {
15942 # This just includes the zone file and overrides the RANGE options
15943 # for the analog control channels.
15945 #######################################
15947 # Template to support reading and setting
15948 # controller ZONE parameters. It reads the ZONE
15949 # parameters into an array, then uses subArrays to
15950 # extract each parameter.
15952 # This template is used by the output template
15953 # and it needs the following macros:
15955 # ZONE: zone number
15956 # OUT: output number
15958 #######################################
15961 ## Read the ZONE setting into an array (8 values)
15964 field(DTYP,
"stream")
15965 field(SDIS,
"$(P):LS01:DISABLE_POLL")
15966 field(INP,
"@ls336.proto getZONE(3,4) L0 0")
15967 field(SCAN,
"Passive")
15969 field(FTVL,
"DOUBLE")
15971 field(FLNK,
"$(P):LS01:Z4:UB3:ARRAY.PROC")
15975 ## Read the ZONE upper boundary setting.
15978 field(SCAN,
"Passive")
15979 field(FTVL,
"DOUBLE")
15980 field(INP,
"$(P):LS01:Z4:ALL3.VAL MS")
15985 field(FLNK,
"$(P):LS01:Z4:UB3.PROC")
15988 field(SCAN,
"Passive")
15989 field(INP,
"$(P):LS01:Z4:UB3:ARRAY.VAL MS")
15991 field(FLNK,
"$(P):LS01:Z4:P3:ARRAY.PROC")
15995 ## Read the ZONE P setting.
15998 field(SCAN,
"Passive")
15999 field(FTVL,
"DOUBLE")
16000 field(INP,
"$(P):LS01:Z4:ALL3.VAL MS")
16005 field(FLNK,
"$(P):LS01:Z4:P3.PROC")
16008 field(SCAN,
"Passive")
16009 field(INP,
"$(P):LS01:Z4:P3:ARRAY.VAL MS")
16011 field(FLNK,
"$(P):LS01:Z4:I3:ARRAY.PROC")
16015 ## Read the ZONE I setting.
16018 field(SCAN,
"Passive")
16019 field(FTVL,
"DOUBLE")
16020 field(INP,
"$(P):LS01:Z4:ALL3.VAL MS")
16025 field(FLNK,
"$(P):LS01:Z4:I3.PROC")
16028 field(SCAN,
"Passive")
16029 field(INP,
"$(P):LS01:Z4:I3:ARRAY.VAL MS")
16031 field(FLNK,
"$(P):LS01:Z4:D3:ARRAY.PROC")
16035 ## Read the ZONE D setting.
16038 field(SCAN,
"Passive")
16039 field(FTVL,
"DOUBLE")
16040 field(INP,
"$(P):LS01:Z4:ALL3.VAL MS")
16045 field(FLNK,
"$(P):LS01:Z4:D3.PROC")
16048 field(SCAN,
"Passive")
16049 field(INP,
"$(P):LS01:Z4:D3:ARRAY.VAL MS")
16051 field(FLNK,
"$(P):LS01:Z4:MOUT3:ARRAY.PROC")
16055 ## Read the ZONE MOUT setting.
16058 field(SCAN,
"Passive")
16059 field(FTVL,
"DOUBLE")
16060 field(INP,
"$(P):LS01:Z4:ALL3.VAL MS")
16065 field(FLNK,
"$(P):LS01:Z4:MOUT3.PROC")
16068 field(SCAN,
"Passive")
16069 field(INP,
"$(P):LS01:Z4:MOUT3:ARRAY.VAL MS")
16071 field(FLNK,
"$(P):LS01:Z4:RANGE3:ARRAY.PROC")
16075 ## Read the ZONE RANGE setting.
16078 field(SCAN,
"Passive")
16079 field(FTVL,
"DOUBLE")
16080 field(INP,
"$(P):LS01:Z4:ALL3.VAL MS")
16085 field(FLNK,
"$(P):LS01:Z4:RANGE3.PROC")
16088 field(INP,
"$(P):LS01:Z4:RANGE3:ARRAY.VAL")
16089 field(SCAN,
"Passive")
16092 field(ONST,
"Range1/Low")
16094 field(TWST,
"Range2/Medium")
16096 field(THST,
"Range3/High")
16098 field(FRST,
"Range4")
16100 field(FVST,
"Range5")
16102 field(FLNK,
"$(P):LS01:Z4:INPUT3:ARRAY.PROC")
16106 ## Read the ZONE INPUT setting.
16109 field(SCAN,
"Passive")
16110 field(FTVL,
"DOUBLE")
16111 field(INP,
"$(P):LS01:Z4:ALL3.VAL MS")
16116 field(FLNK,
"$(P):LS01:Z4:INPUT3.PROC")
16119 field(INP,
"$(P):LS01:Z4:INPUT3:ARRAY.VAL")
16120 field(SCAN,
"Passive")
16121 field(ZRST,
"None")
16123 field(ONST,
"Input A")
16125 field(TWST,
"Input B")
16127 field(THST,
"Input C")
16129 field(FRST,
"Input D")
16131 field(FVST,
"Input D2")
16133 field(SXST,
"Input D3")
16135 field(SVST,
"Input D4")
16137 field(EIST,
"Input D5")
16139 field(FLNK,
"$(P):LS01:Z4:RATE3:ARRAY.PROC")
16143 ## Read the ZONE RATE setting.
16146 field(SCAN,
"Passive")
16147 field(FTVL,
"DOUBLE")
16148 field(INP,
"$(P):LS01:Z4:ALL3.VAL MS")
16153 field(FLNK,
"$(P):LS01:Z4:RATE3.PROC")
16156 field(SCAN,
"Passive")
16157 field(INP,
"$(P):LS01:Z4:RATE3:ARRAY.VAL MS")
16159 field(FLNK,
"$(P):LS01:Z4:INITCALC3.PROC")
16162 ##############################################################
16164 ## Populate the write records below with the current values.
16165 ## Only do this once at startup.
16167 ###############################################################
16173 field(DOPT,
"Use OCAL")
16174 field(OOPT,
"When Zero")
16176 field(OUT,
"$(P):LS01:Z4:INITUB3.PROC")
16180 field(OMSL,
"closed_loop")
16181 field(DOL,
"$(P):LS01:Z4:UB3.VAL")
16182 field(OUTA,
"$(P):LS01:Z4:UB_S3.VAL PP")
16183 field(FLNK,
"$(P):LS01:Z4:INITP3.PROC")
16186 field(OMSL,
"closed_loop")
16187 field(DOL,
"$(P):LS01:Z4:P3.VAL")
16188 field(OUTA,
"$(P):LS01:Z4:P_S3.VAL PP")
16189 field(FLNK,
"$(P):LS01:Z4:INITI3.PROC")
16192 field(OMSL,
"closed_loop")
16193 field(DOL,
"$(P):LS01:Z4:I3.VAL")
16194 field(OUTA,
"$(P):LS01:Z4:I_S3.VAL PP")
16195 field(FLNK,
"$(P):LS01:Z4:INITD3.PROC")
16198 field(OMSL,
"closed_loop")
16199 field(DOL,
"$(P):LS01:Z4:D3.VAL")
16200 field(OUTA,
"$(P):LS01:Z4:D_S3.VAL PP")
16201 field(FLNK,
"$(P):LS01:Z4:INITMOUT3.PROC")
16204 field(OMSL,
"closed_loop")
16205 field(DOL,
"$(P):LS01:Z4:MOUT3.VAL")
16206 field(OUTA,
"$(P):LS01:Z4:MOUT_S3.VAL PP")
16207 field(FLNK,
"$(P):LS01:Z4:INITRANGE3.PROC")
16210 field(OMSL,
"closed_loop")
16211 field(DOL,
"$(P):LS01:Z4:RANGE3.VAL")
16212 field(OUTA,
"$(P):LS01:Z4:RANGE_S3.VAL PP")
16213 field(FLNK,
"$(P):LS01:Z4:INITINPUT3.PROC")
16216 field(OMSL,
"closed_loop")
16217 field(DOL,
"$(P):LS01:Z4:INPUT3.VAL")
16218 field(OUTA,
"$(P):LS01:Z4:INPUT_S3.VAL PP")
16219 field(FLNK,
"$(P):LS01:Z4:INITRATE3.PROC")
16222 field(OMSL,
"closed_loop")
16223 field(DOL,
"$(P):LS01:Z4:RATE3.VAL")
16224 field(OUTA,
"$(P):LS01:Z4:RATE_S3.VAL PP")
16225 field(FLNK,
"$(P):LS01:Z4:INITCOUNT3.PROC")
16230 field(OUTA,
"$(P):LS01:Z4:INITCALC3.A")
16235 #############################################
16236 # Write records. There is a calcout record to
16237 # do the actual write.
16238 #############################################
16241 ## Set the ZONE upper boundary setting.
16244 field(SCAN,
"Passive")
16246 field(SDIS,
"$(P):LS01:DISABLE")
16250 ## Set the ZONE P setting.
16253 field(SCAN,
"Passive")
16255 field(SDIS,
"$(P):LS01:DISABLE")
16259 ## Set the ZONE I setting.
16262 field(SCAN,
"Passive")
16264 field(SDIS,
"$(P):LS01:DISABLE")
16268 ## Set the ZONE D setting.
16271 field(SCAN,
"Passive")
16273 field(SDIS,
"$(P):LS01:DISABLE")
16277 ## Set the ZONE MOUT setting.
16280 field(SCAN,
"Passive")
16282 field(SDIS,
"$(P):LS01:DISABLE")
16286 ## Set the ZONE RANGE setting.
16289 field(SCAN,
"Passive")
16292 field(ONST,
"Range1/Low")
16294 field(TWST,
"Range2/Medium")
16296 field(THST,
"Range3/High")
16298 field(FRST,
"Range4")
16300 field(FVST,
"Range5")
16302 field(SDIS,
"$(P):LS01:DISABLE")
16306 ## Set the ZONE INPUT setting.
16309 field(ZRST,
"None")
16311 field(ONST,
"Input A")
16313 field(TWST,
"Input B")
16315 field(THST,
"Input C")
16317 field(FRST,
"Input D")
16319 field(FVST,
"Input D2")
16321 field(SXST,
"Input D3")
16323 field(SVST,
"Input D4")
16325 field(EIST,
"Input D5")
16327 field(SDIS,
"$(P):LS01:DISABLE")
16331 ## Set the ZONE RATE setting.
16334 field(SCAN,
"Passive")
16336 field(SDIS,
"$(P):LS01:DISABLE")
16340 ## Record to write the ZONE parameters.
16343 field(INPA,
"$(P):LS01:Z4:UB_S3")
16344 field(INPB,
"$(P):LS01:Z4:P_S3")
16345 field(INPC,
"$(P):LS01:Z4:I_S3")
16346 field(INPD,
"$(P):LS01:Z4:D_S3")
16347 field(INPE,
"$(P):LS01:Z4:MOUT_S3")
16348 field(INPF,
"$(P):LS01:Z4:RANGE_S3")
16349 field(INPG,
"$(P):LS01:Z4:INPUT_S3")
16350 field(INPH,
"$(P):LS01:Z4:RATE_S3")
16352 field(DTYP,
"stream")
16353 field(OUT,
"@ls336.proto setZONE(3,4) L0 0")
16354 field(SDIS,
"$(P):LS01:DISABLE")
16355 field(FLNK,
"$(P):LS01:Z4:ALL3.PROC")
16367 record(mbbi,
"$(P):LS01:Z4:RANGE3") {
16376 record(mbbo, "$(P):LS01:Z4:RANGE_S3") {
16390 # This just includes the zone file and overrides the RANGE options
16391 # for the analog control channels.
16393 #######################################
16395 # Template to support reading and setting
16396 # controller ZONE parameters. It reads the ZONE
16397 # parameters into an array, then uses subArrays to
16398 # extract each parameter.
16400 # This template is used by the output template
16401 # and it needs the following macros:
16403 # ZONE: zone number
16404 # OUT: output number
16406 #######################################
16409 ## Read the ZONE setting into an array (8 values)
16412 field(DTYP,
"stream")
16413 field(SDIS,
"$(P):LS01:DISABLE_POLL")
16414 field(INP,
"@ls336.proto getZONE(3,5) L0 0")
16415 field(SCAN,
"Passive")
16417 field(FTVL,
"DOUBLE")
16419 field(FLNK,
"$(P):LS01:Z5:UB3:ARRAY.PROC")
16423 ## Read the ZONE upper boundary setting.
16426 field(SCAN,
"Passive")
16427 field(FTVL,
"DOUBLE")
16428 field(INP,
"$(P):LS01:Z5:ALL3.VAL MS")
16433 field(FLNK,
"$(P):LS01:Z5:UB3.PROC")
16436 field(SCAN,
"Passive")
16437 field(INP,
"$(P):LS01:Z5:UB3:ARRAY.VAL MS")
16439 field(FLNK,
"$(P):LS01:Z5:P3:ARRAY.PROC")
16443 ## Read the ZONE P setting.
16446 field(SCAN,
"Passive")
16447 field(FTVL,
"DOUBLE")
16448 field(INP,
"$(P):LS01:Z5:ALL3.VAL MS")
16453 field(FLNK,
"$(P):LS01:Z5:P3.PROC")
16456 field(SCAN,
"Passive")
16457 field(INP,
"$(P):LS01:Z5:P3:ARRAY.VAL MS")
16459 field(FLNK,
"$(P):LS01:Z5:I3:ARRAY.PROC")
16463 ## Read the ZONE I setting.
16466 field(SCAN,
"Passive")
16467 field(FTVL,
"DOUBLE")
16468 field(INP,
"$(P):LS01:Z5:ALL3.VAL MS")
16473 field(FLNK,
"$(P):LS01:Z5:I3.PROC")
16476 field(SCAN,
"Passive")
16477 field(INP,
"$(P):LS01:Z5:I3:ARRAY.VAL MS")
16479 field(FLNK,
"$(P):LS01:Z5:D3:ARRAY.PROC")
16483 ## Read the ZONE D setting.
16486 field(SCAN,
"Passive")
16487 field(FTVL,
"DOUBLE")
16488 field(INP,
"$(P):LS01:Z5:ALL3.VAL MS")
16493 field(FLNK,
"$(P):LS01:Z5:D3.PROC")
16496 field(SCAN,
"Passive")
16497 field(INP,
"$(P):LS01:Z5:D3:ARRAY.VAL MS")
16499 field(FLNK,
"$(P):LS01:Z5:MOUT3:ARRAY.PROC")
16503 ## Read the ZONE MOUT setting.
16506 field(SCAN,
"Passive")
16507 field(FTVL,
"DOUBLE")
16508 field(INP,
"$(P):LS01:Z5:ALL3.VAL MS")
16513 field(FLNK,
"$(P):LS01:Z5:MOUT3.PROC")
16516 field(SCAN,
"Passive")
16517 field(INP,
"$(P):LS01:Z5:MOUT3:ARRAY.VAL MS")
16519 field(FLNK,
"$(P):LS01:Z5:RANGE3:ARRAY.PROC")
16523 ## Read the ZONE RANGE setting.
16526 field(SCAN,
"Passive")
16527 field(FTVL,
"DOUBLE")
16528 field(INP,
"$(P):LS01:Z5:ALL3.VAL MS")
16533 field(FLNK,
"$(P):LS01:Z5:RANGE3.PROC")
16536 field(INP,
"$(P):LS01:Z5:RANGE3:ARRAY.VAL")
16537 field(SCAN,
"Passive")
16540 field(ONST,
"Range1/Low")
16542 field(TWST,
"Range2/Medium")
16544 field(THST,
"Range3/High")
16546 field(FRST,
"Range4")
16548 field(FVST,
"Range5")
16550 field(FLNK,
"$(P):LS01:Z5:INPUT3:ARRAY.PROC")
16554 ## Read the ZONE INPUT setting.
16557 field(SCAN,
"Passive")
16558 field(FTVL,
"DOUBLE")
16559 field(INP,
"$(P):LS01:Z5:ALL3.VAL MS")
16564 field(FLNK,
"$(P):LS01:Z5:INPUT3.PROC")
16567 field(INP,
"$(P):LS01:Z5:INPUT3:ARRAY.VAL")
16568 field(SCAN,
"Passive")
16569 field(ZRST,
"None")
16571 field(ONST,
"Input A")
16573 field(TWST,
"Input B")
16575 field(THST,
"Input C")
16577 field(FRST,
"Input D")
16579 field(FVST,
"Input D2")
16581 field(SXST,
"Input D3")
16583 field(SVST,
"Input D4")
16585 field(EIST,
"Input D5")
16587 field(FLNK,
"$(P):LS01:Z5:RATE3:ARRAY.PROC")
16591 ## Read the ZONE RATE setting.
16594 field(SCAN,
"Passive")
16595 field(FTVL,
"DOUBLE")
16596 field(INP,
"$(P):LS01:Z5:ALL3.VAL MS")
16601 field(FLNK,
"$(P):LS01:Z5:RATE3.PROC")
16604 field(SCAN,
"Passive")
16605 field(INP,
"$(P):LS01:Z5:RATE3:ARRAY.VAL MS")
16607 field(FLNK,
"$(P):LS01:Z5:INITCALC3.PROC")
16610 ##############################################################
16612 ## Populate the write records below with the current values.
16613 ## Only do this once at startup.
16615 ###############################################################
16621 field(DOPT,
"Use OCAL")
16622 field(OOPT,
"When Zero")
16624 field(OUT,
"$(P):LS01:Z5:INITUB3.PROC")
16628 field(OMSL,
"closed_loop")
16629 field(DOL,
"$(P):LS01:Z5:UB3.VAL")
16630 field(OUTA,
"$(P):LS01:Z5:UB_S3.VAL PP")
16631 field(FLNK,
"$(P):LS01:Z5:INITP3.PROC")
16634 field(OMSL,
"closed_loop")
16635 field(DOL,
"$(P):LS01:Z5:P3.VAL")
16636 field(OUTA,
"$(P):LS01:Z5:P_S3.VAL PP")
16637 field(FLNK,
"$(P):LS01:Z5:INITI3.PROC")
16640 field(OMSL,
"closed_loop")
16641 field(DOL,
"$(P):LS01:Z5:I3.VAL")
16642 field(OUTA,
"$(P):LS01:Z5:I_S3.VAL PP")
16643 field(FLNK,
"$(P):LS01:Z5:INITD3.PROC")
16646 field(OMSL,
"closed_loop")
16647 field(DOL,
"$(P):LS01:Z5:D3.VAL")
16648 field(OUTA,
"$(P):LS01:Z5:D_S3.VAL PP")
16649 field(FLNK,
"$(P):LS01:Z5:INITMOUT3.PROC")
16652 field(OMSL,
"closed_loop")
16653 field(DOL,
"$(P):LS01:Z5:MOUT3.VAL")
16654 field(OUTA,
"$(P):LS01:Z5:MOUT_S3.VAL PP")
16655 field(FLNK,
"$(P):LS01:Z5:INITRANGE3.PROC")
16658 field(OMSL,
"closed_loop")
16659 field(DOL,
"$(P):LS01:Z5:RANGE3.VAL")
16660 field(OUTA,
"$(P):LS01:Z5:RANGE_S3.VAL PP")
16661 field(FLNK,
"$(P):LS01:Z5:INITINPUT3.PROC")
16664 field(OMSL,
"closed_loop")
16665 field(DOL,
"$(P):LS01:Z5:INPUT3.VAL")
16666 field(OUTA,
"$(P):LS01:Z5:INPUT_S3.VAL PP")
16667 field(FLNK,
"$(P):LS01:Z5:INITRATE3.PROC")
16670 field(OMSL,
"closed_loop")
16671 field(DOL,
"$(P):LS01:Z5:RATE3.VAL")
16672 field(OUTA,
"$(P):LS01:Z5:RATE_S3.VAL PP")
16673 field(FLNK,
"$(P):LS01:Z5:INITCOUNT3.PROC")
16678 field(OUTA,
"$(P):LS01:Z5:INITCALC3.A")
16683 #############################################
16684 # Write records. There is a calcout record to
16685 # do the actual write.
16686 #############################################
16689 ## Set the ZONE upper boundary setting.
16692 field(SCAN,
"Passive")
16694 field(SDIS,
"$(P):LS01:DISABLE")
16698 ## Set the ZONE P setting.
16701 field(SCAN,
"Passive")
16703 field(SDIS,
"$(P):LS01:DISABLE")
16707 ## Set the ZONE I setting.
16710 field(SCAN,
"Passive")
16712 field(SDIS,
"$(P):LS01:DISABLE")
16716 ## Set the ZONE D setting.
16719 field(SCAN,
"Passive")
16721 field(SDIS,
"$(P):LS01:DISABLE")
16725 ## Set the ZONE MOUT setting.
16728 field(SCAN,
"Passive")
16730 field(SDIS,
"$(P):LS01:DISABLE")
16734 ## Set the ZONE RANGE setting.
16737 field(SCAN,
"Passive")
16740 field(ONST,
"Range1/Low")
16742 field(TWST,
"Range2/Medium")
16744 field(THST,
"Range3/High")
16746 field(FRST,
"Range4")
16748 field(FVST,
"Range5")
16750 field(SDIS,
"$(P):LS01:DISABLE")
16754 ## Set the ZONE INPUT setting.
16757 field(ZRST,
"None")
16759 field(ONST,
"Input A")
16761 field(TWST,
"Input B")
16763 field(THST,
"Input C")
16765 field(FRST,
"Input D")
16767 field(FVST,
"Input D2")
16769 field(SXST,
"Input D3")
16771 field(SVST,
"Input D4")
16773 field(EIST,
"Input D5")
16775 field(SDIS,
"$(P):LS01:DISABLE")
16779 ## Set the ZONE RATE setting.
16782 field(SCAN,
"Passive")
16784 field(SDIS,
"$(P):LS01:DISABLE")
16788 ## Record to write the ZONE parameters.
16791 field(INPA,
"$(P):LS01:Z5:UB_S3")
16792 field(INPB,
"$(P):LS01:Z5:P_S3")
16793 field(INPC,
"$(P):LS01:Z5:I_S3")
16794 field(INPD,
"$(P):LS01:Z5:D_S3")
16795 field(INPE,
"$(P):LS01:Z5:MOUT_S3")
16796 field(INPF,
"$(P):LS01:Z5:RANGE_S3")
16797 field(INPG,
"$(P):LS01:Z5:INPUT_S3")
16798 field(INPH,
"$(P):LS01:Z5:RATE_S3")
16800 field(DTYP,
"stream")
16801 field(OUT,
"@ls336.proto setZONE(3,5) L0 0")
16802 field(SDIS,
"$(P):LS01:DISABLE")
16803 field(FLNK,
"$(P):LS01:Z5:ALL3.PROC")
16815 record(mbbi,
"$(P):LS01:Z5:RANGE3") {
16824 record(mbbo, "$(P):LS01:Z5:RANGE_S3") {
16838 # This just includes the zone file and overrides the RANGE options
16839 # for the analog control channels.
16841 #######################################
16843 # Template to support reading and setting
16844 # controller ZONE parameters. It reads the ZONE
16845 # parameters into an array, then uses subArrays to
16846 # extract each parameter.
16848 # This template is used by the output template
16849 # and it needs the following macros:
16851 # ZONE: zone number
16852 # OUT: output number
16854 #######################################
16857 ## Read the ZONE setting into an array (8 values)
16860 field(DTYP,
"stream")
16861 field(SDIS,
"$(P):LS01:DISABLE_POLL")
16862 field(INP,
"@ls336.proto getZONE(3,6) L0 0")
16863 field(SCAN,
"Passive")
16865 field(FTVL,
"DOUBLE")
16867 field(FLNK,
"$(P):LS01:Z6:UB3:ARRAY.PROC")
16871 ## Read the ZONE upper boundary setting.
16874 field(SCAN,
"Passive")
16875 field(FTVL,
"DOUBLE")
16876 field(INP,
"$(P):LS01:Z6:ALL3.VAL MS")
16881 field(FLNK,
"$(P):LS01:Z6:UB3.PROC")
16884 field(SCAN,
"Passive")
16885 field(INP,
"$(P):LS01:Z6:UB3:ARRAY.VAL MS")
16887 field(FLNK,
"$(P):LS01:Z6:P3:ARRAY.PROC")
16891 ## Read the ZONE P setting.
16894 field(SCAN,
"Passive")
16895 field(FTVL,
"DOUBLE")
16896 field(INP,
"$(P):LS01:Z6:ALL3.VAL MS")
16901 field(FLNK,
"$(P):LS01:Z6:P3.PROC")
16904 field(SCAN,
"Passive")
16905 field(INP,
"$(P):LS01:Z6:P3:ARRAY.VAL MS")
16907 field(FLNK,
"$(P):LS01:Z6:I3:ARRAY.PROC")
16911 ## Read the ZONE I setting.
16914 field(SCAN,
"Passive")
16915 field(FTVL,
"DOUBLE")
16916 field(INP,
"$(P):LS01:Z6:ALL3.VAL MS")
16921 field(FLNK,
"$(P):LS01:Z6:I3.PROC")
16924 field(SCAN,
"Passive")
16925 field(INP,
"$(P):LS01:Z6:I3:ARRAY.VAL MS")
16927 field(FLNK,
"$(P):LS01:Z6:D3:ARRAY.PROC")
16931 ## Read the ZONE D setting.
16934 field(SCAN,
"Passive")
16935 field(FTVL,
"DOUBLE")
16936 field(INP,
"$(P):LS01:Z6:ALL3.VAL MS")
16941 field(FLNK,
"$(P):LS01:Z6:D3.PROC")
16944 field(SCAN,
"Passive")
16945 field(INP,
"$(P):LS01:Z6:D3:ARRAY.VAL MS")
16947 field(FLNK,
"$(P):LS01:Z6:MOUT3:ARRAY.PROC")
16951 ## Read the ZONE MOUT setting.
16954 field(SCAN,
"Passive")
16955 field(FTVL,
"DOUBLE")
16956 field(INP,
"$(P):LS01:Z6:ALL3.VAL MS")
16961 field(FLNK,
"$(P):LS01:Z6:MOUT3.PROC")
16964 field(SCAN,
"Passive")
16965 field(INP,
"$(P):LS01:Z6:MOUT3:ARRAY.VAL MS")
16967 field(FLNK,
"$(P):LS01:Z6:RANGE3:ARRAY.PROC")
16971 ## Read the ZONE RANGE setting.
16974 field(SCAN,
"Passive")
16975 field(FTVL,
"DOUBLE")
16976 field(INP,
"$(P):LS01:Z6:ALL3.VAL MS")
16981 field(FLNK,
"$(P):LS01:Z6:RANGE3.PROC")
16984 field(INP,
"$(P):LS01:Z6:RANGE3:ARRAY.VAL")
16985 field(SCAN,
"Passive")
16988 field(ONST,
"Range1/Low")
16990 field(TWST,
"Range2/Medium")
16992 field(THST,
"Range3/High")
16994 field(FRST,
"Range4")
16996 field(FVST,
"Range5")
16998 field(FLNK,
"$(P):LS01:Z6:INPUT3:ARRAY.PROC")
17002 ## Read the ZONE INPUT setting.
17005 field(SCAN,
"Passive")
17006 field(FTVL,
"DOUBLE")
17007 field(INP,
"$(P):LS01:Z6:ALL3.VAL MS")
17012 field(FLNK,
"$(P):LS01:Z6:INPUT3.PROC")
17015 field(INP,
"$(P):LS01:Z6:INPUT3:ARRAY.VAL")
17016 field(SCAN,
"Passive")
17017 field(ZRST,
"None")
17019 field(ONST,
"Input A")
17021 field(TWST,
"Input B")
17023 field(THST,
"Input C")
17025 field(FRST,
"Input D")
17027 field(FVST,
"Input D2")
17029 field(SXST,
"Input D3")
17031 field(SVST,
"Input D4")
17033 field(EIST,
"Input D5")
17035 field(FLNK,
"$(P):LS01:Z6:RATE3:ARRAY.PROC")
17039 ## Read the ZONE RATE setting.
17042 field(SCAN,
"Passive")
17043 field(FTVL,
"DOUBLE")
17044 field(INP,
"$(P):LS01:Z6:ALL3.VAL MS")
17049 field(FLNK,
"$(P):LS01:Z6:RATE3.PROC")
17052 field(SCAN,
"Passive")
17053 field(INP,
"$(P):LS01:Z6:RATE3:ARRAY.VAL MS")
17055 field(FLNK,
"$(P):LS01:Z6:INITCALC3.PROC")
17058 ##############################################################
17060 ## Populate the write records below with the current values.
17061 ## Only do this once at startup.
17063 ###############################################################
17069 field(DOPT,
"Use OCAL")
17070 field(OOPT,
"When Zero")
17072 field(OUT,
"$(P):LS01:Z6:INITUB3.PROC")
17076 field(OMSL,
"closed_loop")
17077 field(DOL,
"$(P):LS01:Z6:UB3.VAL")
17078 field(OUTA,
"$(P):LS01:Z6:UB_S3.VAL PP")
17079 field(FLNK,
"$(P):LS01:Z6:INITP3.PROC")
17082 field(OMSL,
"closed_loop")
17083 field(DOL,
"$(P):LS01:Z6:P3.VAL")
17084 field(OUTA,
"$(P):LS01:Z6:P_S3.VAL PP")
17085 field(FLNK,
"$(P):LS01:Z6:INITI3.PROC")
17088 field(OMSL,
"closed_loop")
17089 field(DOL,
"$(P):LS01:Z6:I3.VAL")
17090 field(OUTA,
"$(P):LS01:Z6:I_S3.VAL PP")
17091 field(FLNK,
"$(P):LS01:Z6:INITD3.PROC")
17094 field(OMSL,
"closed_loop")
17095 field(DOL,
"$(P):LS01:Z6:D3.VAL")
17096 field(OUTA,
"$(P):LS01:Z6:D_S3.VAL PP")
17097 field(FLNK,
"$(P):LS01:Z6:INITMOUT3.PROC")
17100 field(OMSL,
"closed_loop")
17101 field(DOL,
"$(P):LS01:Z6:MOUT3.VAL")
17102 field(OUTA,
"$(P):LS01:Z6:MOUT_S3.VAL PP")
17103 field(FLNK,
"$(P):LS01:Z6:INITRANGE3.PROC")
17106 field(OMSL,
"closed_loop")
17107 field(DOL,
"$(P):LS01:Z6:RANGE3.VAL")
17108 field(OUTA,
"$(P):LS01:Z6:RANGE_S3.VAL PP")
17109 field(FLNK,
"$(P):LS01:Z6:INITINPUT3.PROC")
17112 field(OMSL,
"closed_loop")
17113 field(DOL,
"$(P):LS01:Z6:INPUT3.VAL")
17114 field(OUTA,
"$(P):LS01:Z6:INPUT_S3.VAL PP")
17115 field(FLNK,
"$(P):LS01:Z6:INITRATE3.PROC")
17118 field(OMSL,
"closed_loop")
17119 field(DOL,
"$(P):LS01:Z6:RATE3.VAL")
17120 field(OUTA,
"$(P):LS01:Z6:RATE_S3.VAL PP")
17121 field(FLNK,
"$(P):LS01:Z6:INITCOUNT3.PROC")
17126 field(OUTA,
"$(P):LS01:Z6:INITCALC3.A")
17131 #############################################
17132 # Write records. There is a calcout record to
17133 # do the actual write.
17134 #############################################
17137 ## Set the ZONE upper boundary setting.
17140 field(SCAN,
"Passive")
17142 field(SDIS,
"$(P):LS01:DISABLE")
17146 ## Set the ZONE P setting.
17149 field(SCAN,
"Passive")
17151 field(SDIS,
"$(P):LS01:DISABLE")
17155 ## Set the ZONE I setting.
17158 field(SCAN,
"Passive")
17160 field(SDIS,
"$(P):LS01:DISABLE")
17164 ## Set the ZONE D setting.
17167 field(SCAN,
"Passive")
17169 field(SDIS,
"$(P):LS01:DISABLE")
17173 ## Set the ZONE MOUT setting.
17176 field(SCAN,
"Passive")
17178 field(SDIS,
"$(P):LS01:DISABLE")
17182 ## Set the ZONE RANGE setting.
17185 field(SCAN,
"Passive")
17188 field(ONST,
"Range1/Low")
17190 field(TWST,
"Range2/Medium")
17192 field(THST,
"Range3/High")
17194 field(FRST,
"Range4")
17196 field(FVST,
"Range5")
17198 field(SDIS,
"$(P):LS01:DISABLE")
17202 ## Set the ZONE INPUT setting.
17205 field(ZRST,
"None")
17207 field(ONST,
"Input A")
17209 field(TWST,
"Input B")
17211 field(THST,
"Input C")
17213 field(FRST,
"Input D")
17215 field(FVST,
"Input D2")
17217 field(SXST,
"Input D3")
17219 field(SVST,
"Input D4")
17221 field(EIST,
"Input D5")
17223 field(SDIS,
"$(P):LS01:DISABLE")
17227 ## Set the ZONE RATE setting.
17230 field(SCAN,
"Passive")
17232 field(SDIS,
"$(P):LS01:DISABLE")
17236 ## Record to write the ZONE parameters.
17239 field(INPA,
"$(P):LS01:Z6:UB_S3")
17240 field(INPB,
"$(P):LS01:Z6:P_S3")
17241 field(INPC,
"$(P):LS01:Z6:I_S3")
17242 field(INPD,
"$(P):LS01:Z6:D_S3")
17243 field(INPE,
"$(P):LS01:Z6:MOUT_S3")
17244 field(INPF,
"$(P):LS01:Z6:RANGE_S3")
17245 field(INPG,
"$(P):LS01:Z6:INPUT_S3")
17246 field(INPH,
"$(P):LS01:Z6:RATE_S3")
17248 field(DTYP,
"stream")
17249 field(OUT,
"@ls336.proto setZONE(3,6) L0 0")
17250 field(SDIS,
"$(P):LS01:DISABLE")
17251 field(FLNK,
"$(P):LS01:Z6:ALL3.PROC")
17263 record(mbbi,
"$(P):LS01:Z6:RANGE3") {
17272 record(mbbo, "$(P):LS01:Z6:RANGE_S3") {
17286 # This just includes the zone file and overrides the RANGE options
17287 # for the analog control channels.
17289 #######################################
17291 # Template to support reading and setting
17292 # controller ZONE parameters. It reads the ZONE
17293 # parameters into an array, then uses subArrays to
17294 # extract each parameter.
17296 # This template is used by the output template
17297 # and it needs the following macros:
17299 # ZONE: zone number
17300 # OUT: output number
17302 #######################################
17305 ## Read the ZONE setting into an array (8 values)
17308 field(DTYP,
"stream")
17309 field(SDIS,
"$(P):LS01:DISABLE_POLL")
17310 field(INP,
"@ls336.proto getZONE(3,7) L0 0")
17311 field(SCAN,
"Passive")
17313 field(FTVL,
"DOUBLE")
17315 field(FLNK,
"$(P):LS01:Z7:UB3:ARRAY.PROC")
17319 ## Read the ZONE upper boundary setting.
17322 field(SCAN,
"Passive")
17323 field(FTVL,
"DOUBLE")
17324 field(INP,
"$(P):LS01:Z7:ALL3.VAL MS")
17329 field(FLNK,
"$(P):LS01:Z7:UB3.PROC")
17332 field(SCAN,
"Passive")
17333 field(INP,
"$(P):LS01:Z7:UB3:ARRAY.VAL MS")
17335 field(FLNK,
"$(P):LS01:Z7:P3:ARRAY.PROC")
17339 ## Read the ZONE P setting.
17342 field(SCAN,
"Passive")
17343 field(FTVL,
"DOUBLE")
17344 field(INP,
"$(P):LS01:Z7:ALL3.VAL MS")
17349 field(FLNK,
"$(P):LS01:Z7:P3.PROC")
17352 field(SCAN,
"Passive")
17353 field(INP,
"$(P):LS01:Z7:P3:ARRAY.VAL MS")
17355 field(FLNK,
"$(P):LS01:Z7:I3:ARRAY.PROC")
17359 ## Read the ZONE I setting.
17362 field(SCAN,
"Passive")
17363 field(FTVL,
"DOUBLE")
17364 field(INP,
"$(P):LS01:Z7:ALL3.VAL MS")
17369 field(FLNK,
"$(P):LS01:Z7:I3.PROC")
17372 field(SCAN,
"Passive")
17373 field(INP,
"$(P):LS01:Z7:I3:ARRAY.VAL MS")
17375 field(FLNK,
"$(P):LS01:Z7:D3:ARRAY.PROC")
17379 ## Read the ZONE D setting.
17382 field(SCAN,
"Passive")
17383 field(FTVL,
"DOUBLE")
17384 field(INP,
"$(P):LS01:Z7:ALL3.VAL MS")
17389 field(FLNK,
"$(P):LS01:Z7:D3.PROC")
17392 field(SCAN,
"Passive")
17393 field(INP,
"$(P):LS01:Z7:D3:ARRAY.VAL MS")
17395 field(FLNK,
"$(P):LS01:Z7:MOUT3:ARRAY.PROC")
17399 ## Read the ZONE MOUT setting.
17402 field(SCAN,
"Passive")
17403 field(FTVL,
"DOUBLE")
17404 field(INP,
"$(P):LS01:Z7:ALL3.VAL MS")
17409 field(FLNK,
"$(P):LS01:Z7:MOUT3.PROC")
17412 field(SCAN,
"Passive")
17413 field(INP,
"$(P):LS01:Z7:MOUT3:ARRAY.VAL MS")
17415 field(FLNK,
"$(P):LS01:Z7:RANGE3:ARRAY.PROC")
17419 ## Read the ZONE RANGE setting.
17422 field(SCAN,
"Passive")
17423 field(FTVL,
"DOUBLE")
17424 field(INP,
"$(P):LS01:Z7:ALL3.VAL MS")
17429 field(FLNK,
"$(P):LS01:Z7:RANGE3.PROC")
17432 field(INP,
"$(P):LS01:Z7:RANGE3:ARRAY.VAL")
17433 field(SCAN,
"Passive")
17436 field(ONST,
"Range1/Low")
17438 field(TWST,
"Range2/Medium")
17440 field(THST,
"Range3/High")
17442 field(FRST,
"Range4")
17444 field(FVST,
"Range5")
17446 field(FLNK,
"$(P):LS01:Z7:INPUT3:ARRAY.PROC")
17450 ## Read the ZONE INPUT setting.
17453 field(SCAN,
"Passive")
17454 field(FTVL,
"DOUBLE")
17455 field(INP,
"$(P):LS01:Z7:ALL3.VAL MS")
17460 field(FLNK,
"$(P):LS01:Z7:INPUT3.PROC")
17463 field(INP,
"$(P):LS01:Z7:INPUT3:ARRAY.VAL")
17464 field(SCAN,
"Passive")
17465 field(ZRST,
"None")
17467 field(ONST,
"Input A")
17469 field(TWST,
"Input B")
17471 field(THST,
"Input C")
17473 field(FRST,
"Input D")
17475 field(FVST,
"Input D2")
17477 field(SXST,
"Input D3")
17479 field(SVST,
"Input D4")
17481 field(EIST,
"Input D5")
17483 field(FLNK,
"$(P):LS01:Z7:RATE3:ARRAY.PROC")
17487 ## Read the ZONE RATE setting.
17490 field(SCAN,
"Passive")
17491 field(FTVL,
"DOUBLE")
17492 field(INP,
"$(P):LS01:Z7:ALL3.VAL MS")
17497 field(FLNK,
"$(P):LS01:Z7:RATE3.PROC")
17500 field(SCAN,
"Passive")
17501 field(INP,
"$(P):LS01:Z7:RATE3:ARRAY.VAL MS")
17503 field(FLNK,
"$(P):LS01:Z7:INITCALC3.PROC")
17506 ##############################################################
17508 ## Populate the write records below with the current values.
17509 ## Only do this once at startup.
17511 ###############################################################
17517 field(DOPT,
"Use OCAL")
17518 field(OOPT,
"When Zero")
17520 field(OUT,
"$(P):LS01:Z7:INITUB3.PROC")
17524 field(OMSL,
"closed_loop")
17525 field(DOL,
"$(P):LS01:Z7:UB3.VAL")
17526 field(OUTA,
"$(P):LS01:Z7:UB_S3.VAL PP")
17527 field(FLNK,
"$(P):LS01:Z7:INITP3.PROC")
17530 field(OMSL,
"closed_loop")
17531 field(DOL,
"$(P):LS01:Z7:P3.VAL")
17532 field(OUTA,
"$(P):LS01:Z7:P_S3.VAL PP")
17533 field(FLNK,
"$(P):LS01:Z7:INITI3.PROC")
17536 field(OMSL,
"closed_loop")
17537 field(DOL,
"$(P):LS01:Z7:I3.VAL")
17538 field(OUTA,
"$(P):LS01:Z7:I_S3.VAL PP")
17539 field(FLNK,
"$(P):LS01:Z7:INITD3.PROC")
17542 field(OMSL,
"closed_loop")
17543 field(DOL,
"$(P):LS01:Z7:D3.VAL")
17544 field(OUTA,
"$(P):LS01:Z7:D_S3.VAL PP")
17545 field(FLNK,
"$(P):LS01:Z7:INITMOUT3.PROC")
17548 field(OMSL,
"closed_loop")
17549 field(DOL,
"$(P):LS01:Z7:MOUT3.VAL")
17550 field(OUTA,
"$(P):LS01:Z7:MOUT_S3.VAL PP")
17551 field(FLNK,
"$(P):LS01:Z7:INITRANGE3.PROC")
17554 field(OMSL,
"closed_loop")
17555 field(DOL,
"$(P):LS01:Z7:RANGE3.VAL")
17556 field(OUTA,
"$(P):LS01:Z7:RANGE_S3.VAL PP")
17557 field(FLNK,
"$(P):LS01:Z7:INITINPUT3.PROC")
17560 field(OMSL,
"closed_loop")
17561 field(DOL,
"$(P):LS01:Z7:INPUT3.VAL")
17562 field(OUTA,
"$(P):LS01:Z7:INPUT_S3.VAL PP")
17563 field(FLNK,
"$(P):LS01:Z7:INITRATE3.PROC")
17566 field(OMSL,
"closed_loop")
17567 field(DOL,
"$(P):LS01:Z7:RATE3.VAL")
17568 field(OUTA,
"$(P):LS01:Z7:RATE_S3.VAL PP")
17569 field(FLNK,
"$(P):LS01:Z7:INITCOUNT3.PROC")
17574 field(OUTA,
"$(P):LS01:Z7:INITCALC3.A")
17579 #############################################
17580 # Write records. There is a calcout record to
17581 # do the actual write.
17582 #############################################
17585 ## Set the ZONE upper boundary setting.
17588 field(SCAN,
"Passive")
17590 field(SDIS,
"$(P):LS01:DISABLE")
17594 ## Set the ZONE P setting.
17597 field(SCAN,
"Passive")
17599 field(SDIS,
"$(P):LS01:DISABLE")
17603 ## Set the ZONE I setting.
17606 field(SCAN,
"Passive")
17608 field(SDIS,
"$(P):LS01:DISABLE")
17612 ## Set the ZONE D setting.
17615 field(SCAN,
"Passive")
17617 field(SDIS,
"$(P):LS01:DISABLE")
17621 ## Set the ZONE MOUT setting.
17624 field(SCAN,
"Passive")
17626 field(SDIS,
"$(P):LS01:DISABLE")
17630 ## Set the ZONE RANGE setting.
17633 field(SCAN,
"Passive")
17636 field(ONST,
"Range1/Low")
17638 field(TWST,
"Range2/Medium")
17640 field(THST,
"Range3/High")
17642 field(FRST,
"Range4")
17644 field(FVST,
"Range5")
17646 field(SDIS,
"$(P):LS01:DISABLE")
17650 ## Set the ZONE INPUT setting.
17653 field(ZRST,
"None")
17655 field(ONST,
"Input A")
17657 field(TWST,
"Input B")
17659 field(THST,
"Input C")
17661 field(FRST,
"Input D")
17663 field(FVST,
"Input D2")
17665 field(SXST,
"Input D3")
17667 field(SVST,
"Input D4")
17669 field(EIST,
"Input D5")
17671 field(SDIS,
"$(P):LS01:DISABLE")
17675 ## Set the ZONE RATE setting.
17678 field(SCAN,
"Passive")
17680 field(SDIS,
"$(P):LS01:DISABLE")
17684 ## Record to write the ZONE parameters.
17687 field(INPA,
"$(P):LS01:Z7:UB_S3")
17688 field(INPB,
"$(P):LS01:Z7:P_S3")
17689 field(INPC,
"$(P):LS01:Z7:I_S3")
17690 field(INPD,
"$(P):LS01:Z7:D_S3")
17691 field(INPE,
"$(P):LS01:Z7:MOUT_S3")
17692 field(INPF,
"$(P):LS01:Z7:RANGE_S3")
17693 field(INPG,
"$(P):LS01:Z7:INPUT_S3")
17694 field(INPH,
"$(P):LS01:Z7:RATE_S3")
17696 field(DTYP,
"stream")
17697 field(OUT,
"@ls336.proto setZONE(3,7) L0 0")
17698 field(SDIS,
"$(P):LS01:DISABLE")
17699 field(FLNK,
"$(P):LS01:Z7:ALL3.PROC")
17711 record(mbbi,
"$(P):LS01:Z7:RANGE3") {
17720 record(mbbo, "$(P):LS01:Z7:RANGE_S3") {
17734 # This just includes the zone file and overrides the RANGE options
17735 # for the analog control channels.
17737 #######################################
17739 # Template to support reading and setting
17740 # controller ZONE parameters. It reads the ZONE
17741 # parameters into an array, then uses subArrays to
17742 # extract each parameter.
17744 # This template is used by the output template
17745 # and it needs the following macros:
17747 # ZONE: zone number
17748 # OUT: output number
17750 #######################################
17753 ## Read the ZONE setting into an array (8 values)
17756 field(DTYP,
"stream")
17757 field(SDIS,
"$(P):LS01:DISABLE_POLL")
17758 field(INP,
"@ls336.proto getZONE(3,8) L0 0")
17759 field(SCAN,
"Passive")
17761 field(FTVL,
"DOUBLE")
17763 field(FLNK,
"$(P):LS01:Z8:UB3:ARRAY.PROC")
17767 ## Read the ZONE upper boundary setting.
17770 field(SCAN,
"Passive")
17771 field(FTVL,
"DOUBLE")
17772 field(INP,
"$(P):LS01:Z8:ALL3.VAL MS")
17777 field(FLNK,
"$(P):LS01:Z8:UB3.PROC")
17780 field(SCAN,
"Passive")
17781 field(INP,
"$(P):LS01:Z8:UB3:ARRAY.VAL MS")
17783 field(FLNK,
"$(P):LS01:Z8:P3:ARRAY.PROC")
17787 ## Read the ZONE P setting.
17790 field(SCAN,
"Passive")
17791 field(FTVL,
"DOUBLE")
17792 field(INP,
"$(P):LS01:Z8:ALL3.VAL MS")
17797 field(FLNK,
"$(P):LS01:Z8:P3.PROC")
17800 field(SCAN,
"Passive")
17801 field(INP,
"$(P):LS01:Z8:P3:ARRAY.VAL MS")
17803 field(FLNK,
"$(P):LS01:Z8:I3:ARRAY.PROC")
17807 ## Read the ZONE I setting.
17810 field(SCAN,
"Passive")
17811 field(FTVL,
"DOUBLE")
17812 field(INP,
"$(P):LS01:Z8:ALL3.VAL MS")
17817 field(FLNK,
"$(P):LS01:Z8:I3.PROC")
17820 field(SCAN,
"Passive")
17821 field(INP,
"$(P):LS01:Z8:I3:ARRAY.VAL MS")
17823 field(FLNK,
"$(P):LS01:Z8:D3:ARRAY.PROC")
17827 ## Read the ZONE D setting.
17830 field(SCAN,
"Passive")
17831 field(FTVL,
"DOUBLE")
17832 field(INP,
"$(P):LS01:Z8:ALL3.VAL MS")
17837 field(FLNK,
"$(P):LS01:Z8:D3.PROC")
17840 field(SCAN,
"Passive")
17841 field(INP,
"$(P):LS01:Z8:D3:ARRAY.VAL MS")
17843 field(FLNK,
"$(P):LS01:Z8:MOUT3:ARRAY.PROC")
17847 ## Read the ZONE MOUT setting.
17850 field(SCAN,
"Passive")
17851 field(FTVL,
"DOUBLE")
17852 field(INP,
"$(P):LS01:Z8:ALL3.VAL MS")
17857 field(FLNK,
"$(P):LS01:Z8:MOUT3.PROC")
17860 field(SCAN,
"Passive")
17861 field(INP,
"$(P):LS01:Z8:MOUT3:ARRAY.VAL MS")
17863 field(FLNK,
"$(P):LS01:Z8:RANGE3:ARRAY.PROC")
17867 ## Read the ZONE RANGE setting.
17870 field(SCAN,
"Passive")
17871 field(FTVL,
"DOUBLE")
17872 field(INP,
"$(P):LS01:Z8:ALL3.VAL MS")
17877 field(FLNK,
"$(P):LS01:Z8:RANGE3.PROC")
17880 field(INP,
"$(P):LS01:Z8:RANGE3:ARRAY.VAL")
17881 field(SCAN,
"Passive")
17884 field(ONST,
"Range1/Low")
17886 field(TWST,
"Range2/Medium")
17888 field(THST,
"Range3/High")
17890 field(FRST,
"Range4")
17892 field(FVST,
"Range5")
17894 field(FLNK,
"$(P):LS01:Z8:INPUT3:ARRAY.PROC")
17898 ## Read the ZONE INPUT setting.
17901 field(SCAN,
"Passive")
17902 field(FTVL,
"DOUBLE")
17903 field(INP,
"$(P):LS01:Z8:ALL3.VAL MS")
17908 field(FLNK,
"$(P):LS01:Z8:INPUT3.PROC")
17911 field(INP,
"$(P):LS01:Z8:INPUT3:ARRAY.VAL")
17912 field(SCAN,
"Passive")
17913 field(ZRST,
"None")
17915 field(ONST,
"Input A")
17917 field(TWST,
"Input B")
17919 field(THST,
"Input C")
17921 field(FRST,
"Input D")
17923 field(FVST,
"Input D2")
17925 field(SXST,
"Input D3")
17927 field(SVST,
"Input D4")
17929 field(EIST,
"Input D5")
17931 field(FLNK,
"$(P):LS01:Z8:RATE3:ARRAY.PROC")
17935 ## Read the ZONE RATE setting.
17938 field(SCAN,
"Passive")
17939 field(FTVL,
"DOUBLE")
17940 field(INP,
"$(P):LS01:Z8:ALL3.VAL MS")
17945 field(FLNK,
"$(P):LS01:Z8:RATE3.PROC")
17948 field(SCAN,
"Passive")
17949 field(INP,
"$(P):LS01:Z8:RATE3:ARRAY.VAL MS")
17951 field(FLNK,
"$(P):LS01:Z8:INITCALC3.PROC")
17954 ##############################################################
17956 ## Populate the write records below with the current values.
17957 ## Only do this once at startup.
17959 ###############################################################
17965 field(DOPT,
"Use OCAL")
17966 field(OOPT,
"When Zero")
17968 field(OUT,
"$(P):LS01:Z8:INITUB3.PROC")
17972 field(OMSL,
"closed_loop")
17973 field(DOL,
"$(P):LS01:Z8:UB3.VAL")
17974 field(OUTA,
"$(P):LS01:Z8:UB_S3.VAL PP")
17975 field(FLNK,
"$(P):LS01:Z8:INITP3.PROC")
17978 field(OMSL,
"closed_loop")
17979 field(DOL,
"$(P):LS01:Z8:P3.VAL")
17980 field(OUTA,
"$(P):LS01:Z8:P_S3.VAL PP")
17981 field(FLNK,
"$(P):LS01:Z8:INITI3.PROC")
17984 field(OMSL,
"closed_loop")
17985 field(DOL,
"$(P):LS01:Z8:I3.VAL")
17986 field(OUTA,
"$(P):LS01:Z8:I_S3.VAL PP")
17987 field(FLNK,
"$(P):LS01:Z8:INITD3.PROC")
17990 field(OMSL,
"closed_loop")
17991 field(DOL,
"$(P):LS01:Z8:D3.VAL")
17992 field(OUTA,
"$(P):LS01:Z8:D_S3.VAL PP")
17993 field(FLNK,
"$(P):LS01:Z8:INITMOUT3.PROC")
17996 field(OMSL,
"closed_loop")
17997 field(DOL,
"$(P):LS01:Z8:MOUT3.VAL")
17998 field(OUTA,
"$(P):LS01:Z8:MOUT_S3.VAL PP")
17999 field(FLNK,
"$(P):LS01:Z8:INITRANGE3.PROC")
18002 field(OMSL,
"closed_loop")
18003 field(DOL,
"$(P):LS01:Z8:RANGE3.VAL")
18004 field(OUTA,
"$(P):LS01:Z8:RANGE_S3.VAL PP")
18005 field(FLNK,
"$(P):LS01:Z8:INITINPUT3.PROC")
18008 field(OMSL,
"closed_loop")
18009 field(DOL,
"$(P):LS01:Z8:INPUT3.VAL")
18010 field(OUTA,
"$(P):LS01:Z8:INPUT_S3.VAL PP")
18011 field(FLNK,
"$(P):LS01:Z8:INITRATE3.PROC")
18014 field(OMSL,
"closed_loop")
18015 field(DOL,
"$(P):LS01:Z8:RATE3.VAL")
18016 field(OUTA,
"$(P):LS01:Z8:RATE_S3.VAL PP")
18017 field(FLNK,
"$(P):LS01:Z8:INITCOUNT3.PROC")
18022 field(OUTA,
"$(P):LS01:Z8:INITCALC3.A")
18027 #############################################
18028 # Write records. There is a calcout record to
18029 # do the actual write.
18030 #############################################
18033 ## Set the ZONE upper boundary setting.
18036 field(SCAN,
"Passive")
18038 field(SDIS,
"$(P):LS01:DISABLE")
18042 ## Set the ZONE P setting.
18045 field(SCAN,
"Passive")
18047 field(SDIS,
"$(P):LS01:DISABLE")
18051 ## Set the ZONE I setting.
18054 field(SCAN,
"Passive")
18056 field(SDIS,
"$(P):LS01:DISABLE")
18060 ## Set the ZONE D setting.
18063 field(SCAN,
"Passive")
18065 field(SDIS,
"$(P):LS01:DISABLE")
18069 ## Set the ZONE MOUT setting.
18072 field(SCAN,
"Passive")
18074 field(SDIS,
"$(P):LS01:DISABLE")
18078 ## Set the ZONE RANGE setting.
18081 field(SCAN,
"Passive")
18084 field(ONST,
"Range1/Low")
18086 field(TWST,
"Range2/Medium")
18088 field(THST,
"Range3/High")
18090 field(FRST,
"Range4")
18092 field(FVST,
"Range5")
18094 field(SDIS,
"$(P):LS01:DISABLE")
18098 ## Set the ZONE INPUT setting.
18101 field(ZRST,
"None")
18103 field(ONST,
"Input A")
18105 field(TWST,
"Input B")
18107 field(THST,
"Input C")
18109 field(FRST,
"Input D")
18111 field(FVST,
"Input D2")
18113 field(SXST,
"Input D3")
18115 field(SVST,
"Input D4")
18117 field(EIST,
"Input D5")
18119 field(SDIS,
"$(P):LS01:DISABLE")
18123 ## Set the ZONE RATE setting.
18126 field(SCAN,
"Passive")
18128 field(SDIS,
"$(P):LS01:DISABLE")
18132 ## Record to write the ZONE parameters.
18135 field(INPA,
"$(P):LS01:Z8:UB_S3")
18136 field(INPB,
"$(P):LS01:Z8:P_S3")
18137 field(INPC,
"$(P):LS01:Z8:I_S3")
18138 field(INPD,
"$(P):LS01:Z8:D_S3")
18139 field(INPE,
"$(P):LS01:Z8:MOUT_S3")
18140 field(INPF,
"$(P):LS01:Z8:RANGE_S3")
18141 field(INPG,
"$(P):LS01:Z8:INPUT_S3")
18142 field(INPH,
"$(P):LS01:Z8:RATE_S3")
18144 field(DTYP,
"stream")
18145 field(OUT,
"@ls336.proto setZONE(3,8) L0 0")
18146 field(SDIS,
"$(P):LS01:DISABLE")
18147 field(FLNK,
"$(P):LS01:Z8:ALL3.PROC")
18159 record(mbbi,
"$(P):LS01:Z8:RANGE3") {
18168 record(mbbo, "$(P):LS01:Z8:RANGE_S3") {
18182 # This just includes the zone file and overrides the RANGE options
18183 # for the analog control channels.
18185 #######################################
18187 # Template to support reading and setting
18188 # controller ZONE parameters. It reads the ZONE
18189 # parameters into an array, then uses subArrays to
18190 # extract each parameter.
18192 # This template is used by the output template
18193 # and it needs the following macros:
18195 # ZONE: zone number
18196 # OUT: output number
18198 #######################################
18201 ## Read the ZONE setting into an array (8 values)
18204 field(DTYP,
"stream")
18205 field(SDIS,
"$(P):LS01:DISABLE_POLL")
18206 field(INP,
"@ls336.proto getZONE(3,9) L0 0")
18207 field(SCAN,
"Passive")
18209 field(FTVL,
"DOUBLE")
18211 field(FLNK,
"$(P):LS01:Z9:UB3:ARRAY.PROC")
18215 ## Read the ZONE upper boundary setting.
18218 field(SCAN,
"Passive")
18219 field(FTVL,
"DOUBLE")
18220 field(INP,
"$(P):LS01:Z9:ALL3.VAL MS")
18225 field(FLNK,
"$(P):LS01:Z9:UB3.PROC")
18228 field(SCAN,
"Passive")
18229 field(INP,
"$(P):LS01:Z9:UB3:ARRAY.VAL MS")
18231 field(FLNK,
"$(P):LS01:Z9:P3:ARRAY.PROC")
18235 ## Read the ZONE P setting.
18238 field(SCAN,
"Passive")
18239 field(FTVL,
"DOUBLE")
18240 field(INP,
"$(P):LS01:Z9:ALL3.VAL MS")
18245 field(FLNK,
"$(P):LS01:Z9:P3.PROC")
18248 field(SCAN,
"Passive")
18249 field(INP,
"$(P):LS01:Z9:P3:ARRAY.VAL MS")
18251 field(FLNK,
"$(P):LS01:Z9:I3:ARRAY.PROC")
18255 ## Read the ZONE I setting.
18258 field(SCAN,
"Passive")
18259 field(FTVL,
"DOUBLE")
18260 field(INP,
"$(P):LS01:Z9:ALL3.VAL MS")
18265 field(FLNK,
"$(P):LS01:Z9:I3.PROC")
18268 field(SCAN,
"Passive")
18269 field(INP,
"$(P):LS01:Z9:I3:ARRAY.VAL MS")
18271 field(FLNK,
"$(P):LS01:Z9:D3:ARRAY.PROC")
18275 ## Read the ZONE D setting.
18278 field(SCAN,
"Passive")
18279 field(FTVL,
"DOUBLE")
18280 field(INP,
"$(P):LS01:Z9:ALL3.VAL MS")
18285 field(FLNK,
"$(P):LS01:Z9:D3.PROC")
18288 field(SCAN,
"Passive")
18289 field(INP,
"$(P):LS01:Z9:D3:ARRAY.VAL MS")
18291 field(FLNK,
"$(P):LS01:Z9:MOUT3:ARRAY.PROC")
18295 ## Read the ZONE MOUT setting.
18298 field(SCAN,
"Passive")
18299 field(FTVL,
"DOUBLE")
18300 field(INP,
"$(P):LS01:Z9:ALL3.VAL MS")
18305 field(FLNK,
"$(P):LS01:Z9:MOUT3.PROC")
18308 field(SCAN,
"Passive")
18309 field(INP,
"$(P):LS01:Z9:MOUT3:ARRAY.VAL MS")
18311 field(FLNK,
"$(P):LS01:Z9:RANGE3:ARRAY.PROC")
18315 ## Read the ZONE RANGE setting.
18318 field(SCAN,
"Passive")
18319 field(FTVL,
"DOUBLE")
18320 field(INP,
"$(P):LS01:Z9:ALL3.VAL MS")
18325 field(FLNK,
"$(P):LS01:Z9:RANGE3.PROC")
18328 field(INP,
"$(P):LS01:Z9:RANGE3:ARRAY.VAL")
18329 field(SCAN,
"Passive")
18332 field(ONST,
"Range1/Low")
18334 field(TWST,
"Range2/Medium")
18336 field(THST,
"Range3/High")
18338 field(FRST,
"Range4")
18340 field(FVST,
"Range5")
18342 field(FLNK,
"$(P):LS01:Z9:INPUT3:ARRAY.PROC")
18346 ## Read the ZONE INPUT setting.
18349 field(SCAN,
"Passive")
18350 field(FTVL,
"DOUBLE")
18351 field(INP,
"$(P):LS01:Z9:ALL3.VAL MS")
18356 field(FLNK,
"$(P):LS01:Z9:INPUT3.PROC")
18359 field(INP,
"$(P):LS01:Z9:INPUT3:ARRAY.VAL")
18360 field(SCAN,
"Passive")
18361 field(ZRST,
"None")
18363 field(ONST,
"Input A")
18365 field(TWST,
"Input B")
18367 field(THST,
"Input C")
18369 field(FRST,
"Input D")
18371 field(FVST,
"Input D2")
18373 field(SXST,
"Input D3")
18375 field(SVST,
"Input D4")
18377 field(EIST,
"Input D5")
18379 field(FLNK,
"$(P):LS01:Z9:RATE3:ARRAY.PROC")
18383 ## Read the ZONE RATE setting.
18386 field(SCAN,
"Passive")
18387 field(FTVL,
"DOUBLE")
18388 field(INP,
"$(P):LS01:Z9:ALL3.VAL MS")
18393 field(FLNK,
"$(P):LS01:Z9:RATE3.PROC")
18396 field(SCAN,
"Passive")
18397 field(INP,
"$(P):LS01:Z9:RATE3:ARRAY.VAL MS")
18399 field(FLNK,
"$(P):LS01:Z9:INITCALC3.PROC")
18402 ##############################################################
18404 ## Populate the write records below with the current values.
18405 ## Only do this once at startup.
18407 ###############################################################
18413 field(DOPT,
"Use OCAL")
18414 field(OOPT,
"When Zero")
18416 field(OUT,
"$(P):LS01:Z9:INITUB3.PROC")
18420 field(OMSL,
"closed_loop")
18421 field(DOL,
"$(P):LS01:Z9:UB3.VAL")
18422 field(OUTA,
"$(P):LS01:Z9:UB_S3.VAL PP")
18423 field(FLNK,
"$(P):LS01:Z9:INITP3.PROC")
18426 field(OMSL,
"closed_loop")
18427 field(DOL,
"$(P):LS01:Z9:P3.VAL")
18428 field(OUTA,
"$(P):LS01:Z9:P_S3.VAL PP")
18429 field(FLNK,
"$(P):LS01:Z9:INITI3.PROC")
18432 field(OMSL,
"closed_loop")
18433 field(DOL,
"$(P):LS01:Z9:I3.VAL")
18434 field(OUTA,
"$(P):LS01:Z9:I_S3.VAL PP")
18435 field(FLNK,
"$(P):LS01:Z9:INITD3.PROC")
18438 field(OMSL,
"closed_loop")
18439 field(DOL,
"$(P):LS01:Z9:D3.VAL")
18440 field(OUTA,
"$(P):LS01:Z9:D_S3.VAL PP")
18441 field(FLNK,
"$(P):LS01:Z9:INITMOUT3.PROC")
18444 field(OMSL,
"closed_loop")
18445 field(DOL,
"$(P):LS01:Z9:MOUT3.VAL")
18446 field(OUTA,
"$(P):LS01:Z9:MOUT_S3.VAL PP")
18447 field(FLNK,
"$(P):LS01:Z9:INITRANGE3.PROC")
18450 field(OMSL,
"closed_loop")
18451 field(DOL,
"$(P):LS01:Z9:RANGE3.VAL")
18452 field(OUTA,
"$(P):LS01:Z9:RANGE_S3.VAL PP")
18453 field(FLNK,
"$(P):LS01:Z9:INITINPUT3.PROC")
18456 field(OMSL,
"closed_loop")
18457 field(DOL,
"$(P):LS01:Z9:INPUT3.VAL")
18458 field(OUTA,
"$(P):LS01:Z9:INPUT_S3.VAL PP")
18459 field(FLNK,
"$(P):LS01:Z9:INITRATE3.PROC")
18462 field(OMSL,
"closed_loop")
18463 field(DOL,
"$(P):LS01:Z9:RATE3.VAL")
18464 field(OUTA,
"$(P):LS01:Z9:RATE_S3.VAL PP")
18465 field(FLNK,
"$(P):LS01:Z9:INITCOUNT3.PROC")
18470 field(OUTA,
"$(P):LS01:Z9:INITCALC3.A")
18475 #############################################
18476 # Write records. There is a calcout record to
18477 # do the actual write.
18478 #############################################
18481 ## Set the ZONE upper boundary setting.
18484 field(SCAN,
"Passive")
18486 field(SDIS,
"$(P):LS01:DISABLE")
18490 ## Set the ZONE P setting.
18493 field(SCAN,
"Passive")
18495 field(SDIS,
"$(P):LS01:DISABLE")
18499 ## Set the ZONE I setting.
18502 field(SCAN,
"Passive")
18504 field(SDIS,
"$(P):LS01:DISABLE")
18508 ## Set the ZONE D setting.
18511 field(SCAN,
"Passive")
18513 field(SDIS,
"$(P):LS01:DISABLE")
18517 ## Set the ZONE MOUT setting.
18520 field(SCAN,
"Passive")
18522 field(SDIS,
"$(P):LS01:DISABLE")
18526 ## Set the ZONE RANGE setting.
18529 field(SCAN,
"Passive")
18532 field(ONST,
"Range1/Low")
18534 field(TWST,
"Range2/Medium")
18536 field(THST,
"Range3/High")
18538 field(FRST,
"Range4")
18540 field(FVST,
"Range5")
18542 field(SDIS,
"$(P):LS01:DISABLE")
18546 ## Set the ZONE INPUT setting.
18549 field(ZRST,
"None")
18551 field(ONST,
"Input A")
18553 field(TWST,
"Input B")
18555 field(THST,
"Input C")
18557 field(FRST,
"Input D")
18559 field(FVST,
"Input D2")
18561 field(SXST,
"Input D3")
18563 field(SVST,
"Input D4")
18565 field(EIST,
"Input D5")
18567 field(SDIS,
"$(P):LS01:DISABLE")
18571 ## Set the ZONE RATE setting.
18574 field(SCAN,
"Passive")
18576 field(SDIS,
"$(P):LS01:DISABLE")
18580 ## Record to write the ZONE parameters.
18583 field(INPA,
"$(P):LS01:Z9:UB_S3")
18584 field(INPB,
"$(P):LS01:Z9:P_S3")
18585 field(INPC,
"$(P):LS01:Z9:I_S3")
18586 field(INPD,
"$(P):LS01:Z9:D_S3")
18587 field(INPE,
"$(P):LS01:Z9:MOUT_S3")
18588 field(INPF,
"$(P):LS01:Z9:RANGE_S3")
18589 field(INPG,
"$(P):LS01:Z9:INPUT_S3")
18590 field(INPH,
"$(P):LS01:Z9:RATE_S3")
18592 field(DTYP,
"stream")
18593 field(OUT,
"@ls336.proto setZONE(3,9) L0 0")
18594 field(SDIS,
"$(P):LS01:DISABLE")
18595 field(FLNK,
"$(P):LS01:Z9:ALL3.PROC")
18607 record(mbbi,
"$(P):LS01:Z9:RANGE3") {
18616 record(mbbo, "$(P):LS01:Z9:RANGE_S3") {
18630 # This just includes the zone file and overrides the RANGE options
18631 # for the analog control channels.
18633 #######################################
18635 # Template to support reading and setting
18636 # controller ZONE parameters. It reads the ZONE
18637 # parameters into an array, then uses subArrays to
18638 # extract each parameter.
18640 # This template is used by the output template
18641 # and it needs the following macros:
18643 # ZONE: zone number
18644 # OUT: output number
18646 #######################################
18649 ## Read the ZONE setting into an array (8 values)
18652 field(DTYP,
"stream")
18653 field(SDIS,
"$(P):LS01:DISABLE_POLL")
18654 field(INP,
"@ls336.proto getZONE(3,10) L0 0")
18655 field(SCAN,
"Passive")
18657 field(FTVL,
"DOUBLE")
18659 field(FLNK,
"$(P):LS01:Z10:UB3:ARRAY.PROC")
18663 ## Read the ZONE upper boundary setting.
18666 field(SCAN,
"Passive")
18667 field(FTVL,
"DOUBLE")
18668 field(INP,
"$(P):LS01:Z10:ALL3.VAL MS")
18673 field(FLNK,
"$(P):LS01:Z10:UB3.PROC")
18676 field(SCAN,
"Passive")
18677 field(INP,
"$(P):LS01:Z10:UB3:ARRAY.VAL MS")
18679 field(FLNK,
"$(P):LS01:Z10:P3:ARRAY.PROC")
18683 ## Read the ZONE P setting.
18686 field(SCAN,
"Passive")
18687 field(FTVL,
"DOUBLE")
18688 field(INP,
"$(P):LS01:Z10:ALL3.VAL MS")
18693 field(FLNK,
"$(P):LS01:Z10:P3.PROC")
18696 field(SCAN,
"Passive")
18697 field(INP,
"$(P):LS01:Z10:P3:ARRAY.VAL MS")
18699 field(FLNK,
"$(P):LS01:Z10:I3:ARRAY.PROC")
18703 ## Read the ZONE I setting.
18706 field(SCAN,
"Passive")
18707 field(FTVL,
"DOUBLE")
18708 field(INP,
"$(P):LS01:Z10:ALL3.VAL MS")
18713 field(FLNK,
"$(P):LS01:Z10:I3.PROC")
18716 field(SCAN,
"Passive")
18717 field(INP,
"$(P):LS01:Z10:I3:ARRAY.VAL MS")
18719 field(FLNK,
"$(P):LS01:Z10:D3:ARRAY.PROC")
18723 ## Read the ZONE D setting.
18726 field(SCAN,
"Passive")
18727 field(FTVL,
"DOUBLE")
18728 field(INP,
"$(P):LS01:Z10:ALL3.VAL MS")
18733 field(FLNK,
"$(P):LS01:Z10:D3.PROC")
18736 field(SCAN,
"Passive")
18737 field(INP,
"$(P):LS01:Z10:D3:ARRAY.VAL MS")
18739 field(FLNK,
"$(P):LS01:Z10:MOUT3:ARRAY.PROC")
18743 ## Read the ZONE MOUT setting.
18746 field(SCAN,
"Passive")
18747 field(FTVL,
"DOUBLE")
18748 field(INP,
"$(P):LS01:Z10:ALL3.VAL MS")
18753 field(FLNK,
"$(P):LS01:Z10:MOUT3.PROC")
18756 field(SCAN,
"Passive")
18757 field(INP,
"$(P):LS01:Z10:MOUT3:ARRAY.VAL MS")
18759 field(FLNK,
"$(P):LS01:Z10:RANGE3:ARRAY.PROC")
18763 ## Read the ZONE RANGE setting.
18766 field(SCAN,
"Passive")
18767 field(FTVL,
"DOUBLE")
18768 field(INP,
"$(P):LS01:Z10:ALL3.VAL MS")
18773 field(FLNK,
"$(P):LS01:Z10:RANGE3.PROC")
18776 field(INP,
"$(P):LS01:Z10:RANGE3:ARRAY.VAL")
18777 field(SCAN,
"Passive")
18780 field(ONST,
"Range1/Low")
18782 field(TWST,
"Range2/Medium")
18784 field(THST,
"Range3/High")
18786 field(FRST,
"Range4")
18788 field(FVST,
"Range5")
18790 field(FLNK,
"$(P):LS01:Z10:INPUT3:ARRAY.PROC")
18794 ## Read the ZONE INPUT setting.
18797 field(SCAN,
"Passive")
18798 field(FTVL,
"DOUBLE")
18799 field(INP,
"$(P):LS01:Z10:ALL3.VAL MS")
18804 field(FLNK,
"$(P):LS01:Z10:INPUT3.PROC")
18807 field(INP,
"$(P):LS01:Z10:INPUT3:ARRAY.VAL")
18808 field(SCAN,
"Passive")
18809 field(ZRST,
"None")
18811 field(ONST,
"Input A")
18813 field(TWST,
"Input B")
18815 field(THST,
"Input C")
18817 field(FRST,
"Input D")
18819 field(FVST,
"Input D2")
18821 field(SXST,
"Input D3")
18823 field(SVST,
"Input D4")
18825 field(EIST,
"Input D5")
18827 field(FLNK,
"$(P):LS01:Z10:RATE3:ARRAY.PROC")
18831 ## Read the ZONE RATE setting.
18834 field(SCAN,
"Passive")
18835 field(FTVL,
"DOUBLE")
18836 field(INP,
"$(P):LS01:Z10:ALL3.VAL MS")
18841 field(FLNK,
"$(P):LS01:Z10:RATE3.PROC")
18844 field(SCAN,
"Passive")
18845 field(INP,
"$(P):LS01:Z10:RATE3:ARRAY.VAL MS")
18847 field(FLNK,
"$(P):LS01:Z10:INITCALC3.PROC")
18850 ##############################################################
18852 ## Populate the write records below with the current values.
18853 ## Only do this once at startup.
18855 ###############################################################
18861 field(DOPT,
"Use OCAL")
18862 field(OOPT,
"When Zero")
18864 field(OUT,
"$(P):LS01:Z10:INITUB3.PROC")
18868 field(OMSL,
"closed_loop")
18869 field(DOL,
"$(P):LS01:Z10:UB3.VAL")
18870 field(OUTA,
"$(P):LS01:Z10:UB_S3.VAL PP")
18871 field(FLNK,
"$(P):LS01:Z10:INITP3.PROC")
18874 field(OMSL,
"closed_loop")
18875 field(DOL,
"$(P):LS01:Z10:P3.VAL")
18876 field(OUTA,
"$(P):LS01:Z10:P_S3.VAL PP")
18877 field(FLNK,
"$(P):LS01:Z10:INITI3.PROC")
18880 field(OMSL,
"closed_loop")
18881 field(DOL,
"$(P):LS01:Z10:I3.VAL")
18882 field(OUTA,
"$(P):LS01:Z10:I_S3.VAL PP")
18883 field(FLNK,
"$(P):LS01:Z10:INITD3.PROC")
18886 field(OMSL,
"closed_loop")
18887 field(DOL,
"$(P):LS01:Z10:D3.VAL")
18888 field(OUTA,
"$(P):LS01:Z10:D_S3.VAL PP")
18889 field(FLNK,
"$(P):LS01:Z10:INITMOUT3.PROC")
18892 field(OMSL,
"closed_loop")
18893 field(DOL,
"$(P):LS01:Z10:MOUT3.VAL")
18894 field(OUTA,
"$(P):LS01:Z10:MOUT_S3.VAL PP")
18895 field(FLNK,
"$(P):LS01:Z10:INITRANGE3.PROC")
18898 field(OMSL,
"closed_loop")
18899 field(DOL,
"$(P):LS01:Z10:RANGE3.VAL")
18900 field(OUTA,
"$(P):LS01:Z10:RANGE_S3.VAL PP")
18901 field(FLNK,
"$(P):LS01:Z10:INITINPUT3.PROC")
18904 field(OMSL,
"closed_loop")
18905 field(DOL,
"$(P):LS01:Z10:INPUT3.VAL")
18906 field(OUTA,
"$(P):LS01:Z10:INPUT_S3.VAL PP")
18907 field(FLNK,
"$(P):LS01:Z10:INITRATE3.PROC")
18910 field(OMSL,
"closed_loop")
18911 field(DOL,
"$(P):LS01:Z10:RATE3.VAL")
18912 field(OUTA,
"$(P):LS01:Z10:RATE_S3.VAL PP")
18913 field(FLNK,
"$(P):LS01:Z10:INITCOUNT3.PROC")
18918 field(OUTA,
"$(P):LS01:Z10:INITCALC3.A")
18923 #############################################
18924 # Write records. There is a calcout record to
18925 # do the actual write.
18926 #############################################
18929 ## Set the ZONE upper boundary setting.
18932 field(SCAN,
"Passive")
18934 field(SDIS,
"$(P):LS01:DISABLE")
18938 ## Set the ZONE P setting.
18941 field(SCAN,
"Passive")
18943 field(SDIS,
"$(P):LS01:DISABLE")
18947 ## Set the ZONE I setting.
18950 field(SCAN,
"Passive")
18952 field(SDIS,
"$(P):LS01:DISABLE")
18956 ## Set the ZONE D setting.
18959 field(SCAN,
"Passive")
18961 field(SDIS,
"$(P):LS01:DISABLE")
18965 ## Set the ZONE MOUT setting.
18968 field(SCAN,
"Passive")
18970 field(SDIS,
"$(P):LS01:DISABLE")
18974 ## Set the ZONE RANGE setting.
18977 field(SCAN,
"Passive")
18980 field(ONST,
"Range1/Low")
18982 field(TWST,
"Range2/Medium")
18984 field(THST,
"Range3/High")
18986 field(FRST,
"Range4")
18988 field(FVST,
"Range5")
18990 field(SDIS,
"$(P):LS01:DISABLE")
18994 ## Set the ZONE INPUT setting.
18997 field(ZRST,
"None")
18999 field(ONST,
"Input A")
19001 field(TWST,
"Input B")
19003 field(THST,
"Input C")
19005 field(FRST,
"Input D")
19007 field(FVST,
"Input D2")
19009 field(SXST,
"Input D3")
19011 field(SVST,
"Input D4")
19013 field(EIST,
"Input D5")
19015 field(SDIS,
"$(P):LS01:DISABLE")
19019 ## Set the ZONE RATE setting.
19022 field(SCAN,
"Passive")
19024 field(SDIS,
"$(P):LS01:DISABLE")
19028 ## Record to write the ZONE parameters.
19031 field(INPA,
"$(P):LS01:Z10:UB_S3")
19032 field(INPB,
"$(P):LS01:Z10:P_S3")
19033 field(INPC,
"$(P):LS01:Z10:I_S3")
19034 field(INPD,
"$(P):LS01:Z10:D_S3")
19035 field(INPE,
"$(P):LS01:Z10:MOUT_S3")
19036 field(INPF,
"$(P):LS01:Z10:RANGE_S3")
19037 field(INPG,
"$(P):LS01:Z10:INPUT_S3")
19038 field(INPH,
"$(P):LS01:Z10:RATE_S3")
19040 field(DTYP,
"stream")
19041 field(OUT,
"@ls336.proto setZONE(3,10) L0 0")
19042 field(SDIS,
"$(P):LS01:DISABLE")
19043 field(FLNK,
"$(P):LS01:Z10:ALL3.PROC")
19055 record(mbbi,
"$(P):LS01:Z10:RANGE3") {
19064 record(mbbo, "$(P):LS01:Z10:RANGE_S3") {
19078 # This is included in lakeshore336.template
19079 # This template is for the common functionality shared by all 4 outputs.
19081 # There is some logic in this database to provide put_callback functionality
19082 # for setting the temperature and waiting for it to be in range. The input
19083 # sensor PV name used for the in-window calculation changes depending on
19084 # the input sensor selected. In order for this to work it requires the following
19087 # INPUTA - Sensor 1 PV name
19088 # INPUTB - Sensor 2 PV name
19089 # INPUTC - Sensor 3 PV name
19090 # INPUTD - Sensor 4 PV name
19091 # INPUTD2 - Sensor D2 PV name
19092 # INPUTD3 - Sensor D3 PV name
19093 # INPUTD4 - Sensor D4 PV name
19094 # INPUTD5 - Sensor D5 PV name
19095 # TOLERANCE (optional - defaults to 1)
19097 # The input link names must fit into a stringout record for this to work.
19098 # The above link names default to a dummy record.
19100 ################################################################
19102 ################################################################
19105 ## Record holding the output number
19108 field(DTYP,
"Soft Channel")
19114 ## Read the setpoint temperature.
19117 field(DTYP,
"stream")
19118 field(SDIS,
"$(P):LS01:DISABLE_POLL")
19119 field(INP,
"@ls336.proto getSETP(4) L0 0")
19120 field(SCAN,
"1 second")
19123 info(archive,
"Monitor, 00:00:01, VAL")
19127 ## Read the setpoint limit
19131 ## Read the ramp parameter. This also populates the ramp status $(P):LS01:RAMPST4,
19134 field(DTYP,
"stream")
19135 field(SDIS,
"$(P):LS01:DISABLE_POLL")
19136 field(INP,
"@ls336.proto getRAMP(4,$(P):LS01:RAMPST4) L0 0")
19137 field(SCAN,
"5 second")
19139 field(EGU,
"K/minute")
19143 ## Read the ramp status parameter.
19149 field(DTYP,
"Soft Channel")
19155 ## Read the range parameter (the heater output power range).
19156 ## This is output specific and is defined in another file.
19159 field(DTYP,
"stream")
19160 field(SDIS,
"$(P):LS01:DISABLE_POLL")
19167 field(SCAN,
"5 second")
19168 field(INP,
"@ls336.proto getRANGE(4) L0 0")
19172 ## Read the mode to use for outmode
19173 ## This is output specific and is defined in another file.
19179 ## Read the manual output parameter.
19182 field(DTYP,
"stream")
19183 field(SDIS,
"$(P):LS01:DISABLE_POLL")
19184 field(INP,
"@ls336.proto getMOUT(4) L0 0")
19185 field(SCAN,
"5 second")
19189 ## Read the PID P parameter. Pass the I and D records into the protocol to read those as well.
19192 field(DTYP,
"stream")
19193 field(SDIS,
"$(P):LS01:DISABLE_POLL")
19194 field(INP,
"@ls336.proto getPID(4,$(P):LS01:I4,$(P):LS01:D4) L0 0")
19195 field(SCAN,
"5 second")
19199 ## Read the PID I parameter.
19202 field(DTYP,
"Soft Channel")
19203 field(SCAN,
"Passive")
19207 ## Read the PID D parameter.
19210 field(DTYP,
"Soft Channel")
19211 field(SCAN,
"Passive")
19215 ## Read the mode to use for outmode.
19216 ## This also populates the OMI and OMP records.
19217 ## The mbbi strings and values are defined in the output specific templates.
19220 field(DTYP,
"stream")
19221 field(SDIS,
"$(P):LS01:DISABLE_POLL")
19228 field(SCAN,
"5 second")
19229 field(INP,
"@ls336.proto getOM(4,$(P):LS01:OMI4,$(P):LS01:OMP4) L0 0")
19233 ## Read the input to use for outmode
19236 field(DTYP,
"Soft Channel")
19237 field(ZRST,
"None")
19239 field(ONST,
"Input A")
19241 field(TWST,
"Input B")
19243 field(THST,
"Input C")
19245 field(FRST,
"Input D")
19247 field(FVST,
"Input D2")
19249 field(SXST,
"Input D3")
19251 field(SVST,
"Input D4")
19253 field(EIST,
"Input D5")
19258 ## Read the power up mode to use for outmode
19261 field(DTYP,
"Soft Channel")
19268 ################################################################
19270 ################################################################
19273 ## Set the setpoint temperature.
19276 field(DTYP,
"stream")
19277 field(SDIS,
"$(P):LS01:DISABLE")
19278 field(DESC,
"Setpoint temperature")
19279 field(OUT,
"@ls336.proto setSETP(4) L0 0")
19281 field(FLNK,
"$(P):LS01:SETP_S4_BUSYSET.PROC")
19283 info(archive,
"Monitor, 00:00:01, VAL")
19286 ###############################################################################
19289 ## A few records to support put_callback on the setpoint. We use the busy record.
19290 ## A temperature window is used. The temperature must be within
19291 ## the window, before the callback is done.
19297 field(OUTA,
"$(P):LS01:IN_WINDOW4.VAL PP")
19298 field(FLNK,
"$(P):LS01:SETP_S4_BUSYSET2")
19303 field(OUTA,
"$(P):LS01:SETP4.PROC PP")
19304 field(OUTB,
"$(P):LS01:SETP_S4_BUSY PP")
19305 field(FLNK,
"$(P):LS01:CALC_IN_WINDOW4")
19313 field(INPB,
"$(P):LS01:DUMMY4.VAL")
19314 field(INPC,
"$(P):LS01:SETP_S4.VAL")
19315 field(CALC,
"((B>=(C-A))&&(B<=(C+A)))?1:0")
19316 field(OOPT,
"Every Time")
19317 field(OUT,
"$(P):LS01:IN_WINDOW4.VAL PP")
19318 field(DOPT,
"Use CALC")
19319 field(SCAN,
"1 second")
19321 info(autosaveFields,
"A")
19322 info(archive,
"Monitor, 00:00:01, A B C VAL")
19325 field(DESC,
"Temperature In Window")
19328 field(OMSL,
"supervisory")
19329 field(ZNAM,
"Not In Window")
19330 field(ONAM,
"In Window")
19331 info(archive,
"Monitor, 00:00:01, VAL")
19335 ## Set busy record 'done' when TIME_WINDOW4=1
19338 field(INPA,
"$(P):LS01:IN_WINDOW4.VAL CP")
19339 field(CALC,
"(A=1)?0:1")
19340 field(OOPT,
"Every Time")
19341 field(OUT,
"$(P):LS01:SETP_S4_BUSY.VAL PP")
19344 ###############################################################################
19347 ## Dummy record to use for input link name default
19353 ## Monitor $(P):LS01:OMI4 to determin which input sensor to use
19354 ## to deal with the callback. The below set of records automatically
19355 ## switch the input when the 'control input' is changed. They make
19356 ## use of the input sensor PV names passed into this template.
19360 field(INPA,
"$(P):LS01:OMI4.VAL CP")
19361 field(DOPT,
"Use OCAL")
19363 field(OOPT,
"When Non-zero")
19364 field(OUT,
"$(P):LS01:SET_4_INPUTA_LINK.PROC")
19366 record(stringout,
"$(P):LS01:SET_4_INPUTA_LINK") {
19367 field(VAL,
"$(P):LS01:KRDG0.VAL CP")
19368 field(OUT,
"$(P):LS01:CALC_IN_WINDOW4.INPB CA")
19373 field(INPA,
"$(P):LS01:OMI4.VAL CP")
19374 field(DOPT,
"Use OCAL")
19376 field(OOPT,
"When Non-zero")
19377 field(OUT,
"$(P):LS01:SET_4_INPUTB_LINK.PROC")
19379 record(stringout,
"$(P):LS01:SET_4_INPUTB_LINK") {
19380 field(VAL,
"$(P):LS01:KRDG1.VAL CP")
19381 field(OUT,
"$(P):LS01:CALC_IN_WINDOW4.INPB CA")
19386 field(INPA,
"$(P):LS01:OMI4.VAL CP")
19387 field(DOPT,
"Use OCAL")
19389 field(OOPT,
"When Non-zero")
19390 field(OUT,
"$(P):LS01:SET_4_INPUTC_LINK.PROC")
19392 record(stringout,
"$(P):LS01:SET_4_INPUTC_LINK") {
19393 field(VAL,
"$(P):LS01:KRDG2.VAL CP")
19394 field(OUT,
"$(P):LS01:CALC_IN_WINDOW4.INPB CA")
19399 field(INPA,
"$(P):LS01:OMI4.VAL CP")
19400 field(DOPT,
"Use OCAL")
19402 field(OOPT,
"When Non-zero")
19403 field(OUT,
"$(P):LS01:SET_4_INPUTD_LINK.PROC")
19405 record(stringout,
"$(P):LS01:SET_4_INPUTD_LINK") {
19406 field(VAL,
"$(P):LS01:KRDG3.VAL CP")
19407 field(OUT,
"$(P):LS01:CALC_IN_WINDOW4.INPB CA")
19412 field(INPA,
"$(P):LS01:OMI4.VAL CP")
19413 field(DOPT,
"Use OCAL")
19415 field(OOPT,
"When Non-zero")
19416 field(OUT,
"$(P):LS01:SET_4_INPUTD2_LINK.PROC")
19418 record(stringout,
"$(P):LS01:SET_4_INPUTD2_LINK") {
19419 field(VAL,
"$(P):LS01:KRDGD2.VAL CP")
19420 field(OUT,
"$(P):LS01:CALC_IN_WINDOW4.INPB CA")
19425 field(INPA,
"$(P):LS01:OMI4.VAL CP")
19426 field(DOPT,
"Use OCAL")
19428 field(OOPT,
"When Non-zero")
19429 field(OUT,
"$(P):LS01:SET_4_INPUTD3_LINK.PROC")
19431 record(stringout,
"$(P):LS01:SET_4_INPUTD3_LINK") {
19432 field(VAL,
"$(P):LS01:KRDGD3.VAL CP")
19433 field(OUT,
"$(P):LS01:CALC_IN_WINDOW4.INPB CA")
19438 field(INPA,
"$(P):LS01:OMI4.VAL CP")
19439 field(DOPT,
"Use OCAL")
19441 field(OOPT,
"When Non-zero")
19442 field(OUT,
"$(P):LS01:SET_4_INPUTD4_LINK.PROC")
19444 record(stringout,
"$(P):LS01:SET_4_INPUTD4_LINK") {
19445 field(VAL,
"$(P):LS01:KRDGD4.VAL CP")
19446 field(OUT,
"$(P):LS01:CALC_IN_WINDOW4.INPB CA")
19451 field(INPA,
"$(P):LS01:OMI4.VAL CP")
19452 field(DOPT,
"Use OCAL")
19454 field(OOPT,
"When Non-zero")
19455 field(OUT,
"$(P):LS01:SET_4_INPUTD5_LINK.PROC")
19457 record(stringout,
"$(P):LS01:SET_4_INPUTD5_LINK") {
19458 field(VAL,
"$(P):LS01:KRDGD5.VAL CP")
19459 field(OUT,
"$(P):LS01:CALC_IN_WINDOW4.INPB CA")
19465 ## Set the range parameter.
19466 ## The strings are output specific and is defined in another file.
19469 field(DTYP,
"stream")
19470 field(SDIS,
"$(P):LS01:DISABLE")
19471 field(OUT,
"@ls336.proto setRANGE(4) L0 0")
19472 field(FLNK,
"$(P):LS01:RANGE4.PROC CA")
19476 ## Set the ramp rate parameter.
19478 ## This is the desired temperate increase/decrease rate
19479 ## per second when heating/cooling.
19481 ## The ramp and ramp status parameters are actually one command
19482 ## for the lakeshore. Therefore one must pass into this
19483 ## record the existing/desired ramp status, as well as the
19484 ## desired ramp. This is done automatically by reading the
19485 ## PV which holds the current ramp status.
19488 field(DTYP,
"stream")
19489 field(SDIS,
"$(P):LS01:DISABLE")
19490 field(OUT,
"@ls336.proto setRAMP($(P):LS01:RAMPST4,4) L0 0")
19492 field(FLNK,
"$(P):LS01:RAMP4.PROC CA")
19493 field(EGU,
"K/minute")
19497 ## Set the ramp status parameter.
19502 ## The ramp and ramp status parameters are actually one command
19503 ## for the lakeshore. Therefore one must pass into this
19504 ## record the existing/desired ramp, as well as the
19505 ## desired ramp status. This is done automatically by reading the
19506 ## PV which holds the current ramp value.
19509 field(DTYP,
"stream")
19510 field(SDIS,
"$(P):LS01:DISABLE")
19511 field(OUT,
"@ls336.proto setRAMPSTATUS($(P):LS01:RAMP4,4) L0 0")
19512 field(FLNK,
"$(P):LS01:RAMP4.PROC CA")
19518 ## Set the manual output value.
19521 field(DTYP,
"stream")
19522 field(SDIS,
"$(P):LS01:DISABLE")
19523 field(OUT,
"@ls336.proto setMOUT(4) L0 0")
19524 field(FLNK,
"$(P):LS01:MOUT4.PROC CA")
19528 ## Set the PID P parameter.
19531 field(DTYP,
"stream")
19532 field(SDIS,
"$(P):LS01:DISABLE")
19533 field(OUT,
"@ls336.proto setP(4,$(P):LS01:I4,$(P):LS01:D4) L0 0")
19534 field(FLNK,
"$(P):LS01:P4.PROC CA")
19538 ## Set the PID I parameter.
19541 field(DTYP,
"stream")
19542 field(SDIS,
"$(P):LS01:DISABLE")
19543 field(OUT,
"@ls336.proto setI($(P):LS01:P4,4,$(P):LS01:D4) L0 0")
19544 field(FLNK,
"$(P):LS01:P4.PROC CA")
19548 ## Set the PID D parameter.
19551 field(DTYP,
"stream")
19552 field(SDIS,
"$(P):LS01:DISABLE")
19553 field(OUT,
"@ls336.proto setD($(P):LS01:P4,$(P):LS01:I4,4) L0 0")
19554 field(FLNK,
"$(P):LS01:P4.PROC CA")
19558 ## Set the mode to use for outmode
19559 ## The strings are output specific. This is defined in another file.
19562 field(DTYP,
"stream")
19563 field(SDIS,
"$(P):LS01:DISABLE")
19570 field(OUT,
"@ls336.proto setOM(4,$(P):LS01:OMI4,$(P):LS01:OMP4) L0 0")
19571 field(FLNK,
"$(P):LS01:OMM4.PROC CA")
19575 ## Set the input to use for outmode
19578 field(DTYP,
"stream")
19579 field(SDIS,
"$(P):LS01:DISABLE")
19580 field(ZRST,
"None")
19582 field(ONST,
"Input A")
19584 field(TWST,
"Input B")
19586 field(THST,
"Input C")
19588 field(FRST,
"Input D")
19590 field(FVST,
"Input D2")
19592 field(SXST,
"Input D3")
19594 field(SVST,
"Input D4")
19596 field(EIST,
"Input D5")
19598 field(OUT,
"@ls336.proto setOMI(4,$(P):LS01:OMM4,$(P):LS01:OMP4) L0 0")
19599 field(FLNK,
"$(P):LS01:OMM4.PROC CA")
19603 ## Set the power up mode to use for outmode
19606 field(DTYP,
"stream")
19607 field(SDIS,
"$(P):LS01:DISABLE")
19612 field(OUT,
"@ls336.proto setOMP(4,$(P):LS01:OMM4,$(P):LS01:OMI4) L0 0")
19613 field(FLNK,
"$(P):LS01:OMM4.PROC CA")
19617 ## Set the type of tuning mode
19620 field(SDIS,
"$(P):LS01:DISABLE")
19621 field(ZRST,
"P Only")
19623 field(ONST,
"P and I")
19625 field(TWST,
"P, I and D")
19631 ## Start the tuning process
19634 field(DTYP,
"stream")
19635 field(SDIS,
"$(P):LS01:DISABLE")
19636 field(DESC,
"Start the auto tuning")
19637 field(OUT,
"@ls336.proto setATUNE(4,$(P):LS01:TUNEMODE_S4) L0 0")
19642 ## Read all ZONE settings
19645 field(DESC,
"Read Output 4 ZONE")
19648 field(LNK1,
"$(P):LS01:Z1:ALL4.PROC")
19651 field(LNK2,
"$(P):LS01:Z2:ALL4.PROC")
19654 field(LNK3,
"$(P):LS01:Z3:ALL4.PROC")
19657 field(LNK4,
"$(P):LS01:Z4:ALL4.PROC")
19660 field(LNK5,
"$(P):LS01:Z5:ALL4.PROC")
19663 field(LNK6,
"$(P):LS01:Z6:ALL4.PROC")
19666 field(LNK7,
"$(P):LS01:Z7:ALL4.PROC")
19669 field(LNK8,
"$(P):LS01:Z8:ALL4.PROC")
19672 field(LNK9,
"$(P):LS01:Z9:ALL4.PROC")
19675 field(LNKA,
"$(P):LS01:Z10:ALL4.PROC")
19679 ###############################################
19680 # This is included in lakeshore336.template
19681 # This is for the analog outputs (3 and 4)
19684 ## Read the analog output value.
19687 field(DTYP,
"stream")
19688 field(SDIS,
"$(P):LS01:DISABLE_POLL")
19689 field(INP,
"@ls336.proto getAOUT(4) L0 0")
19690 field(SCAN,
"5 second")
19693 info(archive,
"Monitor, 00:00:01, VAL")
19697 ## Define the string/values for this record.
19699 record(mbbi,
"$(P):LS01:RANGE4") {
19705 ## Define the strings and values for this record.
19707 record(mbbi,
"$(P):LS01:OMM4") {
19709 field(ONST, "Closed Loop PID")
19710 field(TWST, "Zone")
19711 field(THST, "Open Loop")
19712 field(FRST, "Monitor Out")
19713 field(FVST, "Warmup Supply")
19717 ## Define the strings and values for this record.
19719 record(mbbo,
"$(P):LS01:RANGE_S4") {
19725 ## Define the strings and values for this record.
19727 record(mbbo,
"$(P):LS01:OMM_S4") {
19729 field(ONST, "Closed Loop PID")
19730 field(TWST, "Zone")
19731 field(THST, "Open Loop")
19732 field(FRST, "Monitor Out")
19733 field(FVST, "Warmup Supply")
19736 ###############################################
19737 # Add in ZONE support
19738 ###############################################
19741 # This just includes the zone file and overrides the RANGE options
19742 # for the analog control channels.
19744 #######################################
19746 # Template to support reading and setting
19747 # controller ZONE parameters. It reads the ZONE
19748 # parameters into an array, then uses subArrays to
19749 # extract each parameter.
19751 # This template is used by the output template
19752 # and it needs the following macros:
19754 # ZONE: zone number
19755 # OUT: output number
19757 #######################################
19760 ## Read the ZONE setting into an array (8 values)
19763 field(DTYP,
"stream")
19764 field(SDIS,
"$(P):LS01:DISABLE_POLL")
19765 field(INP,
"@ls336.proto getZONE(4,1) L0 0")
19766 field(SCAN,
"Passive")
19768 field(FTVL,
"DOUBLE")
19770 field(FLNK,
"$(P):LS01:Z1:UB4:ARRAY.PROC")
19774 ## Read the ZONE upper boundary setting.
19777 field(SCAN,
"Passive")
19778 field(FTVL,
"DOUBLE")
19779 field(INP,
"$(P):LS01:Z1:ALL4.VAL MS")
19784 field(FLNK,
"$(P):LS01:Z1:UB4.PROC")
19787 field(SCAN,
"Passive")
19788 field(INP,
"$(P):LS01:Z1:UB4:ARRAY.VAL MS")
19790 field(FLNK,
"$(P):LS01:Z1:P4:ARRAY.PROC")
19794 ## Read the ZONE P setting.
19797 field(SCAN,
"Passive")
19798 field(FTVL,
"DOUBLE")
19799 field(INP,
"$(P):LS01:Z1:ALL4.VAL MS")
19804 field(FLNK,
"$(P):LS01:Z1:P4.PROC")
19807 field(SCAN,
"Passive")
19808 field(INP,
"$(P):LS01:Z1:P4:ARRAY.VAL MS")
19810 field(FLNK,
"$(P):LS01:Z1:I4:ARRAY.PROC")
19814 ## Read the ZONE I setting.
19817 field(SCAN,
"Passive")
19818 field(FTVL,
"DOUBLE")
19819 field(INP,
"$(P):LS01:Z1:ALL4.VAL MS")
19824 field(FLNK,
"$(P):LS01:Z1:I4.PROC")
19827 field(SCAN,
"Passive")
19828 field(INP,
"$(P):LS01:Z1:I4:ARRAY.VAL MS")
19830 field(FLNK,
"$(P):LS01:Z1:D4:ARRAY.PROC")
19834 ## Read the ZONE D setting.
19837 field(SCAN,
"Passive")
19838 field(FTVL,
"DOUBLE")
19839 field(INP,
"$(P):LS01:Z1:ALL4.VAL MS")
19844 field(FLNK,
"$(P):LS01:Z1:D4.PROC")
19847 field(SCAN,
"Passive")
19848 field(INP,
"$(P):LS01:Z1:D4:ARRAY.VAL MS")
19850 field(FLNK,
"$(P):LS01:Z1:MOUT4:ARRAY.PROC")
19854 ## Read the ZONE MOUT setting.
19857 field(SCAN,
"Passive")
19858 field(FTVL,
"DOUBLE")
19859 field(INP,
"$(P):LS01:Z1:ALL4.VAL MS")
19864 field(FLNK,
"$(P):LS01:Z1:MOUT4.PROC")
19867 field(SCAN,
"Passive")
19868 field(INP,
"$(P):LS01:Z1:MOUT4:ARRAY.VAL MS")
19870 field(FLNK,
"$(P):LS01:Z1:RANGE4:ARRAY.PROC")
19874 ## Read the ZONE RANGE setting.
19877 field(SCAN,
"Passive")
19878 field(FTVL,
"DOUBLE")
19879 field(INP,
"$(P):LS01:Z1:ALL4.VAL MS")
19884 field(FLNK,
"$(P):LS01:Z1:RANGE4.PROC")
19887 field(INP,
"$(P):LS01:Z1:RANGE4:ARRAY.VAL")
19888 field(SCAN,
"Passive")
19891 field(ONST,
"Range1/Low")
19893 field(TWST,
"Range2/Medium")
19895 field(THST,
"Range3/High")
19897 field(FRST,
"Range4")
19899 field(FVST,
"Range5")
19901 field(FLNK,
"$(P):LS01:Z1:INPUT4:ARRAY.PROC")
19905 ## Read the ZONE INPUT setting.
19908 field(SCAN,
"Passive")
19909 field(FTVL,
"DOUBLE")
19910 field(INP,
"$(P):LS01:Z1:ALL4.VAL MS")
19915 field(FLNK,
"$(P):LS01:Z1:INPUT4.PROC")
19918 field(INP,
"$(P):LS01:Z1:INPUT4:ARRAY.VAL")
19919 field(SCAN,
"Passive")
19920 field(ZRST,
"None")
19922 field(ONST,
"Input A")
19924 field(TWST,
"Input B")
19926 field(THST,
"Input C")
19928 field(FRST,
"Input D")
19930 field(FVST,
"Input D2")
19932 field(SXST,
"Input D3")
19934 field(SVST,
"Input D4")
19936 field(EIST,
"Input D5")
19938 field(FLNK,
"$(P):LS01:Z1:RATE4:ARRAY.PROC")
19942 ## Read the ZONE RATE setting.
19945 field(SCAN,
"Passive")
19946 field(FTVL,
"DOUBLE")
19947 field(INP,
"$(P):LS01:Z1:ALL4.VAL MS")
19952 field(FLNK,
"$(P):LS01:Z1:RATE4.PROC")
19955 field(SCAN,
"Passive")
19956 field(INP,
"$(P):LS01:Z1:RATE4:ARRAY.VAL MS")
19958 field(FLNK,
"$(P):LS01:Z1:INITCALC4.PROC")
19961 ##############################################################
19963 ## Populate the write records below with the current values.
19964 ## Only do this once at startup.
19966 ###############################################################
19972 field(DOPT,
"Use OCAL")
19973 field(OOPT,
"When Zero")
19975 field(OUT,
"$(P):LS01:Z1:INITUB4.PROC")
19979 field(OMSL,
"closed_loop")
19980 field(DOL,
"$(P):LS01:Z1:UB4.VAL")
19981 field(OUTA,
"$(P):LS01:Z1:UB_S4.VAL PP")
19982 field(FLNK,
"$(P):LS01:Z1:INITP4.PROC")
19985 field(OMSL,
"closed_loop")
19986 field(DOL,
"$(P):LS01:Z1:P4.VAL")
19987 field(OUTA,
"$(P):LS01:Z1:P_S4.VAL PP")
19988 field(FLNK,
"$(P):LS01:Z1:INITI4.PROC")
19991 field(OMSL,
"closed_loop")
19992 field(DOL,
"$(P):LS01:Z1:I4.VAL")
19993 field(OUTA,
"$(P):LS01:Z1:I_S4.VAL PP")
19994 field(FLNK,
"$(P):LS01:Z1:INITD4.PROC")
19997 field(OMSL,
"closed_loop")
19998 field(DOL,
"$(P):LS01:Z1:D4.VAL")
19999 field(OUTA,
"$(P):LS01:Z1:D_S4.VAL PP")
20000 field(FLNK,
"$(P):LS01:Z1:INITMOUT4.PROC")
20003 field(OMSL,
"closed_loop")
20004 field(DOL,
"$(P):LS01:Z1:MOUT4.VAL")
20005 field(OUTA,
"$(P):LS01:Z1:MOUT_S4.VAL PP")
20006 field(FLNK,
"$(P):LS01:Z1:INITRANGE4.PROC")
20009 field(OMSL,
"closed_loop")
20010 field(DOL,
"$(P):LS01:Z1:RANGE4.VAL")
20011 field(OUTA,
"$(P):LS01:Z1:RANGE_S4.VAL PP")
20012 field(FLNK,
"$(P):LS01:Z1:INITINPUT4.PROC")
20015 field(OMSL,
"closed_loop")
20016 field(DOL,
"$(P):LS01:Z1:INPUT4.VAL")
20017 field(OUTA,
"$(P):LS01:Z1:INPUT_S4.VAL PP")
20018 field(FLNK,
"$(P):LS01:Z1:INITRATE4.PROC")
20021 field(OMSL,
"closed_loop")
20022 field(DOL,
"$(P):LS01:Z1:RATE4.VAL")
20023 field(OUTA,
"$(P):LS01:Z1:RATE_S4.VAL PP")
20024 field(FLNK,
"$(P):LS01:Z1:INITCOUNT4.PROC")
20029 field(OUTA,
"$(P):LS01:Z1:INITCALC4.A")
20034 #############################################
20035 # Write records. There is a calcout record to
20036 # do the actual write.
20037 #############################################
20040 ## Set the ZONE upper boundary setting.
20043 field(SCAN,
"Passive")
20045 field(SDIS,
"$(P):LS01:DISABLE")
20049 ## Set the ZONE P setting.
20052 field(SCAN,
"Passive")
20054 field(SDIS,
"$(P):LS01:DISABLE")
20058 ## Set the ZONE I setting.
20061 field(SCAN,
"Passive")
20063 field(SDIS,
"$(P):LS01:DISABLE")
20067 ## Set the ZONE D setting.
20070 field(SCAN,
"Passive")
20072 field(SDIS,
"$(P):LS01:DISABLE")
20076 ## Set the ZONE MOUT setting.
20079 field(SCAN,
"Passive")
20081 field(SDIS,
"$(P):LS01:DISABLE")
20085 ## Set the ZONE RANGE setting.
20088 field(SCAN,
"Passive")
20091 field(ONST,
"Range1/Low")
20093 field(TWST,
"Range2/Medium")
20095 field(THST,
"Range3/High")
20097 field(FRST,
"Range4")
20099 field(FVST,
"Range5")
20101 field(SDIS,
"$(P):LS01:DISABLE")
20105 ## Set the ZONE INPUT setting.
20108 field(ZRST,
"None")
20110 field(ONST,
"Input A")
20112 field(TWST,
"Input B")
20114 field(THST,
"Input C")
20116 field(FRST,
"Input D")
20118 field(FVST,
"Input D2")
20120 field(SXST,
"Input D3")
20122 field(SVST,
"Input D4")
20124 field(EIST,
"Input D5")
20126 field(SDIS,
"$(P):LS01:DISABLE")
20130 ## Set the ZONE RATE setting.
20133 field(SCAN,
"Passive")
20135 field(SDIS,
"$(P):LS01:DISABLE")
20139 ## Record to write the ZONE parameters.
20142 field(INPA,
"$(P):LS01:Z1:UB_S4")
20143 field(INPB,
"$(P):LS01:Z1:P_S4")
20144 field(INPC,
"$(P):LS01:Z1:I_S4")
20145 field(INPD,
"$(P):LS01:Z1:D_S4")
20146 field(INPE,
"$(P):LS01:Z1:MOUT_S4")
20147 field(INPF,
"$(P):LS01:Z1:RANGE_S4")
20148 field(INPG,
"$(P):LS01:Z1:INPUT_S4")
20149 field(INPH,
"$(P):LS01:Z1:RATE_S4")
20151 field(DTYP,
"stream")
20152 field(OUT,
"@ls336.proto setZONE(4,1) L0 0")
20153 field(SDIS,
"$(P):LS01:DISABLE")
20154 field(FLNK,
"$(P):LS01:Z1:ALL4.PROC")
20166 record(mbbi,
"$(P):LS01:Z1:RANGE4") {
20175 record(mbbo, "$(P):LS01:Z1:RANGE_S4") {
20189 # This just includes the zone file and overrides the RANGE options
20190 # for the analog control channels.
20192 #######################################
20194 # Template to support reading and setting
20195 # controller ZONE parameters. It reads the ZONE
20196 # parameters into an array, then uses subArrays to
20197 # extract each parameter.
20199 # This template is used by the output template
20200 # and it needs the following macros:
20202 # ZONE: zone number
20203 # OUT: output number
20205 #######################################
20208 ## Read the ZONE setting into an array (8 values)
20211 field(DTYP,
"stream")
20212 field(SDIS,
"$(P):LS01:DISABLE_POLL")
20213 field(INP,
"@ls336.proto getZONE(4,2) L0 0")
20214 field(SCAN,
"Passive")
20216 field(FTVL,
"DOUBLE")
20218 field(FLNK,
"$(P):LS01:Z2:UB4:ARRAY.PROC")
20222 ## Read the ZONE upper boundary setting.
20225 field(SCAN,
"Passive")
20226 field(FTVL,
"DOUBLE")
20227 field(INP,
"$(P):LS01:Z2:ALL4.VAL MS")
20232 field(FLNK,
"$(P):LS01:Z2:UB4.PROC")
20235 field(SCAN,
"Passive")
20236 field(INP,
"$(P):LS01:Z2:UB4:ARRAY.VAL MS")
20238 field(FLNK,
"$(P):LS01:Z2:P4:ARRAY.PROC")
20242 ## Read the ZONE P setting.
20245 field(SCAN,
"Passive")
20246 field(FTVL,
"DOUBLE")
20247 field(INP,
"$(P):LS01:Z2:ALL4.VAL MS")
20252 field(FLNK,
"$(P):LS01:Z2:P4.PROC")
20255 field(SCAN,
"Passive")
20256 field(INP,
"$(P):LS01:Z2:P4:ARRAY.VAL MS")
20258 field(FLNK,
"$(P):LS01:Z2:I4:ARRAY.PROC")
20262 ## Read the ZONE I setting.
20265 field(SCAN,
"Passive")
20266 field(FTVL,
"DOUBLE")
20267 field(INP,
"$(P):LS01:Z2:ALL4.VAL MS")
20272 field(FLNK,
"$(P):LS01:Z2:I4.PROC")
20275 field(SCAN,
"Passive")
20276 field(INP,
"$(P):LS01:Z2:I4:ARRAY.VAL MS")
20278 field(FLNK,
"$(P):LS01:Z2:D4:ARRAY.PROC")
20282 ## Read the ZONE D setting.
20285 field(SCAN,
"Passive")
20286 field(FTVL,
"DOUBLE")
20287 field(INP,
"$(P):LS01:Z2:ALL4.VAL MS")
20292 field(FLNK,
"$(P):LS01:Z2:D4.PROC")
20295 field(SCAN,
"Passive")
20296 field(INP,
"$(P):LS01:Z2:D4:ARRAY.VAL MS")
20298 field(FLNK,
"$(P):LS01:Z2:MOUT4:ARRAY.PROC")
20302 ## Read the ZONE MOUT setting.
20305 field(SCAN,
"Passive")
20306 field(FTVL,
"DOUBLE")
20307 field(INP,
"$(P):LS01:Z2:ALL4.VAL MS")
20312 field(FLNK,
"$(P):LS01:Z2:MOUT4.PROC")
20315 field(SCAN,
"Passive")
20316 field(INP,
"$(P):LS01:Z2:MOUT4:ARRAY.VAL MS")
20318 field(FLNK,
"$(P):LS01:Z2:RANGE4:ARRAY.PROC")
20322 ## Read the ZONE RANGE setting.
20325 field(SCAN,
"Passive")
20326 field(FTVL,
"DOUBLE")
20327 field(INP,
"$(P):LS01:Z2:ALL4.VAL MS")
20332 field(FLNK,
"$(P):LS01:Z2:RANGE4.PROC")
20335 field(INP,
"$(P):LS01:Z2:RANGE4:ARRAY.VAL")
20336 field(SCAN,
"Passive")
20339 field(ONST,
"Range1/Low")
20341 field(TWST,
"Range2/Medium")
20343 field(THST,
"Range3/High")
20345 field(FRST,
"Range4")
20347 field(FVST,
"Range5")
20349 field(FLNK,
"$(P):LS01:Z2:INPUT4:ARRAY.PROC")
20353 ## Read the ZONE INPUT setting.
20356 field(SCAN,
"Passive")
20357 field(FTVL,
"DOUBLE")
20358 field(INP,
"$(P):LS01:Z2:ALL4.VAL MS")
20363 field(FLNK,
"$(P):LS01:Z2:INPUT4.PROC")
20366 field(INP,
"$(P):LS01:Z2:INPUT4:ARRAY.VAL")
20367 field(SCAN,
"Passive")
20368 field(ZRST,
"None")
20370 field(ONST,
"Input A")
20372 field(TWST,
"Input B")
20374 field(THST,
"Input C")
20376 field(FRST,
"Input D")
20378 field(FVST,
"Input D2")
20380 field(SXST,
"Input D3")
20382 field(SVST,
"Input D4")
20384 field(EIST,
"Input D5")
20386 field(FLNK,
"$(P):LS01:Z2:RATE4:ARRAY.PROC")
20390 ## Read the ZONE RATE setting.
20393 field(SCAN,
"Passive")
20394 field(FTVL,
"DOUBLE")
20395 field(INP,
"$(P):LS01:Z2:ALL4.VAL MS")
20400 field(FLNK,
"$(P):LS01:Z2:RATE4.PROC")
20403 field(SCAN,
"Passive")
20404 field(INP,
"$(P):LS01:Z2:RATE4:ARRAY.VAL MS")
20406 field(FLNK,
"$(P):LS01:Z2:INITCALC4.PROC")
20409 ##############################################################
20411 ## Populate the write records below with the current values.
20412 ## Only do this once at startup.
20414 ###############################################################
20420 field(DOPT,
"Use OCAL")
20421 field(OOPT,
"When Zero")
20423 field(OUT,
"$(P):LS01:Z2:INITUB4.PROC")
20427 field(OMSL,
"closed_loop")
20428 field(DOL,
"$(P):LS01:Z2:UB4.VAL")
20429 field(OUTA,
"$(P):LS01:Z2:UB_S4.VAL PP")
20430 field(FLNK,
"$(P):LS01:Z2:INITP4.PROC")
20433 field(OMSL,
"closed_loop")
20434 field(DOL,
"$(P):LS01:Z2:P4.VAL")
20435 field(OUTA,
"$(P):LS01:Z2:P_S4.VAL PP")
20436 field(FLNK,
"$(P):LS01:Z2:INITI4.PROC")
20439 field(OMSL,
"closed_loop")
20440 field(DOL,
"$(P):LS01:Z2:I4.VAL")
20441 field(OUTA,
"$(P):LS01:Z2:I_S4.VAL PP")
20442 field(FLNK,
"$(P):LS01:Z2:INITD4.PROC")
20445 field(OMSL,
"closed_loop")
20446 field(DOL,
"$(P):LS01:Z2:D4.VAL")
20447 field(OUTA,
"$(P):LS01:Z2:D_S4.VAL PP")
20448 field(FLNK,
"$(P):LS01:Z2:INITMOUT4.PROC")
20451 field(OMSL,
"closed_loop")
20452 field(DOL,
"$(P):LS01:Z2:MOUT4.VAL")
20453 field(OUTA,
"$(P):LS01:Z2:MOUT_S4.VAL PP")
20454 field(FLNK,
"$(P):LS01:Z2:INITRANGE4.PROC")
20457 field(OMSL,
"closed_loop")
20458 field(DOL,
"$(P):LS01:Z2:RANGE4.VAL")
20459 field(OUTA,
"$(P):LS01:Z2:RANGE_S4.VAL PP")
20460 field(FLNK,
"$(P):LS01:Z2:INITINPUT4.PROC")
20463 field(OMSL,
"closed_loop")
20464 field(DOL,
"$(P):LS01:Z2:INPUT4.VAL")
20465 field(OUTA,
"$(P):LS01:Z2:INPUT_S4.VAL PP")
20466 field(FLNK,
"$(P):LS01:Z2:INITRATE4.PROC")
20469 field(OMSL,
"closed_loop")
20470 field(DOL,
"$(P):LS01:Z2:RATE4.VAL")
20471 field(OUTA,
"$(P):LS01:Z2:RATE_S4.VAL PP")
20472 field(FLNK,
"$(P):LS01:Z2:INITCOUNT4.PROC")
20477 field(OUTA,
"$(P):LS01:Z2:INITCALC4.A")
20482 #############################################
20483 # Write records. There is a calcout record to
20484 # do the actual write.
20485 #############################################
20488 ## Set the ZONE upper boundary setting.
20491 field(SCAN,
"Passive")
20493 field(SDIS,
"$(P):LS01:DISABLE")
20497 ## Set the ZONE P setting.
20500 field(SCAN,
"Passive")
20502 field(SDIS,
"$(P):LS01:DISABLE")
20506 ## Set the ZONE I setting.
20509 field(SCAN,
"Passive")
20511 field(SDIS,
"$(P):LS01:DISABLE")
20515 ## Set the ZONE D setting.
20518 field(SCAN,
"Passive")
20520 field(SDIS,
"$(P):LS01:DISABLE")
20524 ## Set the ZONE MOUT setting.
20527 field(SCAN,
"Passive")
20529 field(SDIS,
"$(P):LS01:DISABLE")
20533 ## Set the ZONE RANGE setting.
20536 field(SCAN,
"Passive")
20539 field(ONST,
"Range1/Low")
20541 field(TWST,
"Range2/Medium")
20543 field(THST,
"Range3/High")
20545 field(FRST,
"Range4")
20547 field(FVST,
"Range5")
20549 field(SDIS,
"$(P):LS01:DISABLE")
20553 ## Set the ZONE INPUT setting.
20556 field(ZRST,
"None")
20558 field(ONST,
"Input A")
20560 field(TWST,
"Input B")
20562 field(THST,
"Input C")
20564 field(FRST,
"Input D")
20566 field(FVST,
"Input D2")
20568 field(SXST,
"Input D3")
20570 field(SVST,
"Input D4")
20572 field(EIST,
"Input D5")
20574 field(SDIS,
"$(P):LS01:DISABLE")
20578 ## Set the ZONE RATE setting.
20581 field(SCAN,
"Passive")
20583 field(SDIS,
"$(P):LS01:DISABLE")
20587 ## Record to write the ZONE parameters.
20590 field(INPA,
"$(P):LS01:Z2:UB_S4")
20591 field(INPB,
"$(P):LS01:Z2:P_S4")
20592 field(INPC,
"$(P):LS01:Z2:I_S4")
20593 field(INPD,
"$(P):LS01:Z2:D_S4")
20594 field(INPE,
"$(P):LS01:Z2:MOUT_S4")
20595 field(INPF,
"$(P):LS01:Z2:RANGE_S4")
20596 field(INPG,
"$(P):LS01:Z2:INPUT_S4")
20597 field(INPH,
"$(P):LS01:Z2:RATE_S4")
20599 field(DTYP,
"stream")
20600 field(OUT,
"@ls336.proto setZONE(4,2) L0 0")
20601 field(SDIS,
"$(P):LS01:DISABLE")
20602 field(FLNK,
"$(P):LS01:Z2:ALL4.PROC")
20614 record(mbbi,
"$(P):LS01:Z2:RANGE4") {
20623 record(mbbo, "$(P):LS01:Z2:RANGE_S4") {
20637 # This just includes the zone file and overrides the RANGE options
20638 # for the analog control channels.
20640 #######################################
20642 # Template to support reading and setting
20643 # controller ZONE parameters. It reads the ZONE
20644 # parameters into an array, then uses subArrays to
20645 # extract each parameter.
20647 # This template is used by the output template
20648 # and it needs the following macros:
20650 # ZONE: zone number
20651 # OUT: output number
20653 #######################################
20656 ## Read the ZONE setting into an array (8 values)
20658 record(waveform,
"$(P):LS01:Z2:ALL4") {
20659 field(DTYP,
"stream")
20660 field(SDIS, "$(P):LS01:DISABLE_POLL")
20661 field(INP, "@ls336.proto getZONE(4,2) L0 0")
20662 field(SCAN, "Passive")
20664 field(FTVL, "DOUBLE")
20666 field(FLNK, "$(P):LS01:Z2:UB4:ARRAY.PROC")
20670 ## Read the ZONE upper boundary setting.
20672 record(subArray,
"$(P):LS01:Z2:UB4:ARRAY") {
20673 field(SCAN,
"Passive")
20674 field(FTVL, "DOUBLE")
20675 field(INP, "$(P):LS01:Z2:ALL4.VAL MS")
20680 field(FLNK, "$(P):LS01:Z2:UB4.PROC")
20682 record(ai, "$(P):LS01:Z2:UB4") {
20683 field(SCAN,
"Passive")
20684 field(INP, "$(P):LS01:Z2:UB4:ARRAY.VAL MS")
20686 field(FLNK, "$(P):LS01:Z2:P4:ARRAY.PROC")
20690 ## Read the ZONE P setting.
20692 record(subArray,
"$(P):LS01:Z2:P4:ARRAY") {
20693 field(SCAN,
"Passive")
20694 field(FTVL, "DOUBLE")
20695 field(INP, "$(P):LS01:Z2:ALL4.VAL MS")
20700 field(FLNK, "$(P):LS01:Z2:P4.PROC")
20702 record(ai, "$(P):LS01:Z2:P4") {
20703 field(SCAN,
"Passive")
20704 field(INP, "$(P):LS01:Z2:P4:ARRAY.VAL MS")
20706 field(FLNK, "$(P):LS01:Z2:I4:ARRAY.PROC")
20710 ## Read the ZONE I setting.
20712 record(subArray,
"$(P):LS01:Z2:I4:ARRAY") {
20713 field(SCAN,
"Passive")
20714 field(FTVL, "DOUBLE")
20715 field(INP, "$(P):LS01:Z2:ALL4.VAL MS")
20720 field(FLNK, "$(P):LS01:Z2:I4.PROC")
20722 record(ai, "$(P):LS01:Z2:I4") {
20723 field(SCAN,
"Passive")
20724 field(INP, "$(P):LS01:Z2:I4:ARRAY.VAL MS")
20726 field(FLNK, "$(P):LS01:Z2:D4:ARRAY.PROC")
20730 ## Read the ZONE D setting.
20732 record(subArray,
"$(P):LS01:Z2:D4:ARRAY") {
20733 field(SCAN,
"Passive")
20734 field(FTVL, "DOUBLE")
20735 field(INP, "$(P):LS01:Z2:ALL4.VAL MS")
20740 field(FLNK, "$(P):LS01:Z2:D4.PROC")
20742 record(ai, "$(P):LS01:Z2:D4") {
20743 field(SCAN,
"Passive")
20744 field(INP, "$(P):LS01:Z2:D4:ARRAY.VAL MS")
20746 field(FLNK, "$(P):LS01:Z2:MOUT4:ARRAY.PROC")
20750 ## Read the ZONE MOUT setting.
20752 record(subArray,
"$(P):LS01:Z2:MOUT4:ARRAY") {
20753 field(SCAN,
"Passive")
20754 field(FTVL, "DOUBLE")
20755 field(INP, "$(P):LS01:Z2:ALL4.VAL MS")
20760 field(FLNK, "$(P):LS01:Z2:MOUT4.PROC")
20762 record(ai, "$(P):LS01:Z2:MOUT4") {
20763 field(SCAN,
"Passive")
20764 field(INP, "$(P):LS01:Z2:MOUT4:ARRAY.VAL MS")
20766 field(FLNK, "$(P):LS01:Z2:RANGE4:ARRAY.PROC")
20770 ## Read the ZONE RANGE setting.
20772 record(subArray,
"$(P):LS01:Z2:RANGE4:ARRAY") {
20773 field(SCAN,
"Passive")
20774 field(FTVL, "DOUBLE")
20775 field(INP, "$(P):LS01:Z2:ALL4.VAL MS")
20780 field(FLNK, "$(P):LS01:Z2:RANGE4.PROC")
20782 record(mbbi, "$(P):LS01:Z2:RANGE4") {
20783 field(INP,
"$(P):LS01:Z2:RANGE4:ARRAY.VAL")
20784 field(SCAN, "Passive")
20787 field(ONST, "Range1/Low")
20789 field(TWST, "Range2/Medium")
20791 field(THST, "Range3/High")
20793 field(FRST, "Range4")
20795 field(FVST, "Range5")
20797 field(FLNK, "$(P):LS01:Z2:INPUT4:ARRAY.PROC")
20801 ## Read the ZONE INPUT setting.
20803 record(subArray,
"$(P):LS01:Z2:INPUT4:ARRAY") {
20804 field(SCAN,
"Passive")
20805 field(FTVL, "DOUBLE")
20806 field(INP, "$(P):LS01:Z2:ALL4.VAL MS")
20811 field(FLNK, "$(P):LS01:Z2:INPUT4.PROC")
20813 record(mbbi, "$(P):LS01:Z2:INPUT4") {
20814 field(INP,
"$(P):LS01:Z2:INPUT4:ARRAY.VAL")
20815 field(SCAN, "Passive")
20816 field(ZRST, "None")
20818 field(ONST, "Input A")
20820 field(TWST, "Input B")
20822 field(THST, "Input C")
20824 field(FRST, "Input D")
20826 field(FVST, "Input D2")
20828 field(SXST, "Input D3")
20830 field(SVST, "Input D4")
20832 field(EIST, "Input D5")
20834 field(FLNK, "$(P):LS01:Z2:RATE4:ARRAY.PROC")
20838 ## Read the ZONE RATE setting.
20840 record(subArray,
"$(P):LS01:Z2:RATE4:ARRAY") {
20841 field(SCAN,
"Passive")
20842 field(FTVL, "DOUBLE")
20843 field(INP, "$(P):LS01:Z2:ALL4.VAL MS")
20848 field(FLNK, "$(P):LS01:Z2:RATE4.PROC")
20850 record(ai, "$(P):LS01:Z2:RATE4") {
20851 field(SCAN,
"Passive")
20852 field(INP, "$(P):LS01:Z2:RATE4:ARRAY.VAL MS")
20854 field(FLNK, "$(P):LS01:Z2:INITCALC4.PROC")
20857 ##############################################################
20859 ## Populate the write records below with the current values.
20860 ## Only do this once at startup.
20862 ###############################################################
20864 record(calcout,
"$(P):LS01:Z2:INITCALC4") {
20868 field(DOPT, "Use OCAL")
20869 field(OOPT, "When Zero")
20871 field(OUT, "$(P):LS01:Z2:INITUB4.PROC")
20874 record(dfanout, "$(P):LS01:Z2:INITUB4") {
20875 field(OMSL,
"closed_loop")
20876 field(DOL, "$(P):LS01:Z2:UB4.VAL")
20877 field(OUTA, "$(P):LS01:Z2:UB_S4.VAL PP")
20878 field(FLNK, "$(P):LS01:Z2:INITP4.PROC")
20880 record(dfanout, "$(P):LS01:Z2:INITP4") {
20881 field(OMSL,
"closed_loop")
20882 field(DOL, "$(P):LS01:Z2:P4.VAL")
20883 field(OUTA, "$(P):LS01:Z2:P_S4.VAL PP")
20884 field(FLNK, "$(P):LS01:Z2:INITI4.PROC")
20886 record(dfanout, "$(P):LS01:Z2:INITI4") {
20887 field(OMSL,
"closed_loop")
20888 field(DOL, "$(P):LS01:Z2:I4.VAL")
20889 field(OUTA, "$(P):LS01:Z2:I_S4.VAL PP")
20890 field(FLNK, "$(P):LS01:Z2:INITD4.PROC")
20892 record(dfanout, "$(P):LS01:Z2:INITD4") {
20893 field(OMSL,
"closed_loop")
20894 field(DOL, "$(P):LS01:Z2:D4.VAL")
20895 field(OUTA, "$(P):LS01:Z2:D_S4.VAL PP")
20896 field(FLNK, "$(P):LS01:Z2:INITMOUT4.PROC")
20898 record(dfanout, "$(P):LS01:Z2:INITMOUT4") {
20899 field(OMSL,
"closed_loop")
20900 field(DOL, "$(P):LS01:Z2:MOUT4.VAL")
20901 field(OUTA, "$(P):LS01:Z2:MOUT_S4.VAL PP")
20902 field(FLNK, "$(P):LS01:Z2:INITRANGE4.PROC")
20904 record(dfanout, "$(P):LS01:Z2:INITRANGE4") {
20905 field(OMSL,
"closed_loop")
20906 field(DOL, "$(P):LS01:Z2:RANGE4.VAL")
20907 field(OUTA, "$(P):LS01:Z2:RANGE_S4.VAL PP")
20908 field(FLNK, "$(P):LS01:Z2:INITINPUT4.PROC")
20910 record(dfanout, "$(P):LS01:Z2:INITINPUT4") {
20911 field(OMSL,
"closed_loop")
20912 field(DOL, "$(P):LS01:Z2:INPUT4.VAL")
20913 field(OUTA, "$(P):LS01:Z2:INPUT_S4.VAL PP")
20914 field(FLNK, "$(P):LS01:Z2:INITRATE4.PROC")
20916 record(dfanout, "$(P):LS01:Z2:INITRATE4") {
20917 field(OMSL,
"closed_loop")
20918 field(DOL, "$(P):LS01:Z2:RATE4.VAL")
20919 field(OUTA, "$(P):LS01:Z2:RATE_S4.VAL PP")
20920 field(FLNK, "$(P):LS01:Z2:INITCOUNT4.PROC")
20923 record(dfanout, "$(P):LS01:Z2:INITCOUNT4") {
20925 field(OUTA, "$(P):LS01:Z2:INITCALC4.A")
20930 #############################################
20931 # Write records. There is a calcout record to
20932 # do the actual write.
20933 #############################################
20936 ## Set the ZONE upper boundary setting.
20938 record(ao,
"$(P):LS01:Z2:UB_S4") {
20939 field(SCAN,
"Passive")
20941 field(SDIS, "$(P):LS01:DISABLE")
20945 ## Set the ZONE P setting.
20947 record(ao,
"$(P):LS01:Z2:P_S4") {
20948 field(SCAN,
"Passive")
20950 field(SDIS, "$(P):LS01:DISABLE")
20954 ## Set the ZONE I setting.
20956 record(ao,
"$(P):LS01:Z2:I_S4") {
20957 field(SCAN,
"Passive")
20959 field(SDIS, "$(P):LS01:DISABLE")
20963 ## Set the ZONE D setting.
20965 record(ao,
"$(P):LS01:Z2:D_S4") {
20966 field(SCAN,
"Passive")
20968 field(SDIS, "$(P):LS01:DISABLE")
20972 ## Set the ZONE MOUT setting.
20974 record(ao,
"$(P):LS01:Z2:MOUT_S4") {
20975 field(SCAN,
"Passive")
20977 field(SDIS, "$(P):LS01:DISABLE")
20981 ## Set the ZONE RANGE setting.
20983 record(mbbo,
"$(P):LS01:Z2:RANGE_S4") {
20984 field(SCAN,
"Passive")
20987 field(ONST, "Range1/Low")
20989 field(TWST, "Range2/Medium")
20991 field(THST, "Range3/High")
20993 field(FRST, "Range4")
20995 field(FVST, "Range5")
20997 field(SDIS, "$(P):LS01:DISABLE")
21001 ## Set the ZONE INPUT setting.
21003 record(mbbo,
"$(P):LS01:Z2:INPUT_S4") {
21004 field(ZRST,
"None")
21006 field(ONST, "Input A")
21008 field(TWST, "Input B")
21010 field(THST, "Input C")
21012 field(FRST, "Input D")
21014 field(FVST, "Input D2")
21016 field(SXST, "Input D3")
21018 field(SVST, "Input D4")
21020 field(EIST, "Input D5")
21022 field(SDIS, "$(P):LS01:DISABLE")
21026 ## Set the ZONE RATE setting.
21028 record(ao,
"$(P):LS01:Z2:RATE_S4") {
21029 field(SCAN,
"Passive")
21031 field(SDIS, "$(P):LS01:DISABLE")
21035 ## Record to write the ZONE parameters.
21037 record(calcout,
"$(P):LS01:Z2:SET4") {
21038 field(INPA,
"$(P):LS01:Z2:UB_S4")
21039 field(INPB, "$(P):LS01:Z2:P_S4")
21040 field(INPC, "$(P):LS01:Z2:I_S4")
21041 field(INPD, "$(P):LS01:Z2:D_S4")
21042 field(INPE, "$(P):LS01:Z2:MOUT_S4")
21043 field(INPF, "$(P):LS01:Z2:RANGE_S4")
21044 field(INPG, "$(P):LS01:Z2:INPUT_S4")
21045 field(INPH, "$(P):LS01:Z2:RATE_S4")
21047 field(DTYP, "stream")
21048 field(OUT, "@ls336.proto setZONE(4,2) L0 0")
21049 field(SDIS, "$(P):LS01:DISABLE")
21050 field(FLNK, "$(P):LS01:Z2:ALL4.PROC")
21062 record(mbbi, "$(P):LS01:Z2:RANGE4") {
21071 record(mbbo, "$(P):LS01:Z2:RANGE_S4") {
21085 # This just includes the zone file and overrides the RANGE options
21086 # for the analog control channels.
21088 #######################################
21090 # Template to support reading and setting
21091 # controller ZONE parameters. It reads the ZONE
21092 # parameters into an array, then uses subArrays to
21093 # extract each parameter.
21095 # This template is used by the output template
21096 # and it needs the following macros:
21098 # ZONE: zone number
21099 # OUT: output number
21101 #######################################
21104 ## Read the ZONE setting into an array (8 values)
21107 field(DTYP,
"stream")
21108 field(SDIS,
"$(P):LS01:DISABLE_POLL")
21109 field(INP,
"@ls336.proto getZONE(4,3) L0 0")
21110 field(SCAN,
"Passive")
21112 field(FTVL,
"DOUBLE")
21114 field(FLNK,
"$(P):LS01:Z3:UB4:ARRAY.PROC")
21118 ## Read the ZONE upper boundary setting.
21121 field(SCAN,
"Passive")
21122 field(FTVL,
"DOUBLE")
21123 field(INP,
"$(P):LS01:Z3:ALL4.VAL MS")
21128 field(FLNK,
"$(P):LS01:Z3:UB4.PROC")
21131 field(SCAN,
"Passive")
21132 field(INP,
"$(P):LS01:Z3:UB4:ARRAY.VAL MS")
21134 field(FLNK,
"$(P):LS01:Z3:P4:ARRAY.PROC")
21138 ## Read the ZONE P setting.
21141 field(SCAN,
"Passive")
21142 field(FTVL,
"DOUBLE")
21143 field(INP,
"$(P):LS01:Z3:ALL4.VAL MS")
21148 field(FLNK,
"$(P):LS01:Z3:P4.PROC")
21151 field(SCAN,
"Passive")
21152 field(INP,
"$(P):LS01:Z3:P4:ARRAY.VAL MS")
21154 field(FLNK,
"$(P):LS01:Z3:I4:ARRAY.PROC")
21158 ## Read the ZONE I setting.
21161 field(SCAN,
"Passive")
21162 field(FTVL,
"DOUBLE")
21163 field(INP,
"$(P):LS01:Z3:ALL4.VAL MS")
21168 field(FLNK,
"$(P):LS01:Z3:I4.PROC")
21171 field(SCAN,
"Passive")
21172 field(INP,
"$(P):LS01:Z3:I4:ARRAY.VAL MS")
21174 field(FLNK,
"$(P):LS01:Z3:D4:ARRAY.PROC")
21178 ## Read the ZONE D setting.
21181 field(SCAN,
"Passive")
21182 field(FTVL,
"DOUBLE")
21183 field(INP,
"$(P):LS01:Z3:ALL4.VAL MS")
21188 field(FLNK,
"$(P):LS01:Z3:D4.PROC")
21191 field(SCAN,
"Passive")
21192 field(INP,
"$(P):LS01:Z3:D4:ARRAY.VAL MS")
21194 field(FLNK,
"$(P):LS01:Z3:MOUT4:ARRAY.PROC")
21198 ## Read the ZONE MOUT setting.
21201 field(SCAN,
"Passive")
21202 field(FTVL,
"DOUBLE")
21203 field(INP,
"$(P):LS01:Z3:ALL4.VAL MS")
21208 field(FLNK,
"$(P):LS01:Z3:MOUT4.PROC")
21211 field(SCAN,
"Passive")
21212 field(INP,
"$(P):LS01:Z3:MOUT4:ARRAY.VAL MS")
21214 field(FLNK,
"$(P):LS01:Z3:RANGE4:ARRAY.PROC")
21218 ## Read the ZONE RANGE setting.
21221 field(SCAN,
"Passive")
21222 field(FTVL,
"DOUBLE")
21223 field(INP,
"$(P):LS01:Z3:ALL4.VAL MS")
21228 field(FLNK,
"$(P):LS01:Z3:RANGE4.PROC")
21231 field(INP,
"$(P):LS01:Z3:RANGE4:ARRAY.VAL")
21232 field(SCAN,
"Passive")
21235 field(ONST,
"Range1/Low")
21237 field(TWST,
"Range2/Medium")
21239 field(THST,
"Range3/High")
21241 field(FRST,
"Range4")
21243 field(FVST,
"Range5")
21245 field(FLNK,
"$(P):LS01:Z3:INPUT4:ARRAY.PROC")
21249 ## Read the ZONE INPUT setting.
21252 field(SCAN,
"Passive")
21253 field(FTVL,
"DOUBLE")
21254 field(INP,
"$(P):LS01:Z3:ALL4.VAL MS")
21259 field(FLNK,
"$(P):LS01:Z3:INPUT4.PROC")
21262 field(INP,
"$(P):LS01:Z3:INPUT4:ARRAY.VAL")
21263 field(SCAN,
"Passive")
21264 field(ZRST,
"None")
21266 field(ONST,
"Input A")
21268 field(TWST,
"Input B")
21270 field(THST,
"Input C")
21272 field(FRST,
"Input D")
21274 field(FVST,
"Input D2")
21276 field(SXST,
"Input D3")
21278 field(SVST,
"Input D4")
21280 field(EIST,
"Input D5")
21282 field(FLNK,
"$(P):LS01:Z3:RATE4:ARRAY.PROC")
21286 ## Read the ZONE RATE setting.
21289 field(SCAN,
"Passive")
21290 field(FTVL,
"DOUBLE")
21291 field(INP,
"$(P):LS01:Z3:ALL4.VAL MS")
21296 field(FLNK,
"$(P):LS01:Z3:RATE4.PROC")
21299 field(SCAN,
"Passive")
21300 field(INP,
"$(P):LS01:Z3:RATE4:ARRAY.VAL MS")
21302 field(FLNK,
"$(P):LS01:Z3:INITCALC4.PROC")
21305 ##############################################################
21307 ## Populate the write records below with the current values.
21308 ## Only do this once at startup.
21310 ###############################################################
21316 field(DOPT,
"Use OCAL")
21317 field(OOPT,
"When Zero")
21319 field(OUT,
"$(P):LS01:Z3:INITUB4.PROC")
21323 field(OMSL,
"closed_loop")
21324 field(DOL,
"$(P):LS01:Z3:UB4.VAL")
21325 field(OUTA,
"$(P):LS01:Z3:UB_S4.VAL PP")
21326 field(FLNK,
"$(P):LS01:Z3:INITP4.PROC")
21329 field(OMSL,
"closed_loop")
21330 field(DOL,
"$(P):LS01:Z3:P4.VAL")
21331 field(OUTA,
"$(P):LS01:Z3:P_S4.VAL PP")
21332 field(FLNK,
"$(P):LS01:Z3:INITI4.PROC")
21335 field(OMSL,
"closed_loop")
21336 field(DOL,
"$(P):LS01:Z3:I4.VAL")
21337 field(OUTA,
"$(P):LS01:Z3:I_S4.VAL PP")
21338 field(FLNK,
"$(P):LS01:Z3:INITD4.PROC")
21341 field(OMSL,
"closed_loop")
21342 field(DOL,
"$(P):LS01:Z3:D4.VAL")
21343 field(OUTA,
"$(P):LS01:Z3:D_S4.VAL PP")
21344 field(FLNK,
"$(P):LS01:Z3:INITMOUT4.PROC")
21347 field(OMSL,
"closed_loop")
21348 field(DOL,
"$(P):LS01:Z3:MOUT4.VAL")
21349 field(OUTA,
"$(P):LS01:Z3:MOUT_S4.VAL PP")
21350 field(FLNK,
"$(P):LS01:Z3:INITRANGE4.PROC")
21353 field(OMSL,
"closed_loop")
21354 field(DOL,
"$(P):LS01:Z3:RANGE4.VAL")
21355 field(OUTA,
"$(P):LS01:Z3:RANGE_S4.VAL PP")
21356 field(FLNK,
"$(P):LS01:Z3:INITINPUT4.PROC")
21359 field(OMSL,
"closed_loop")
21360 field(DOL,
"$(P):LS01:Z3:INPUT4.VAL")
21361 field(OUTA,
"$(P):LS01:Z3:INPUT_S4.VAL PP")
21362 field(FLNK,
"$(P):LS01:Z3:INITRATE4.PROC")
21365 field(OMSL,
"closed_loop")
21366 field(DOL,
"$(P):LS01:Z3:RATE4.VAL")
21367 field(OUTA,
"$(P):LS01:Z3:RATE_S4.VAL PP")
21368 field(FLNK,
"$(P):LS01:Z3:INITCOUNT4.PROC")
21373 field(OUTA,
"$(P):LS01:Z3:INITCALC4.A")
21378 #############################################
21379 # Write records. There is a calcout record to
21380 # do the actual write.
21381 #############################################
21384 ## Set the ZONE upper boundary setting.
21387 field(SCAN,
"Passive")
21389 field(SDIS,
"$(P):LS01:DISABLE")
21393 ## Set the ZONE P setting.
21396 field(SCAN,
"Passive")
21398 field(SDIS,
"$(P):LS01:DISABLE")
21402 ## Set the ZONE I setting.
21405 field(SCAN,
"Passive")
21407 field(SDIS,
"$(P):LS01:DISABLE")
21411 ## Set the ZONE D setting.
21414 field(SCAN,
"Passive")
21416 field(SDIS,
"$(P):LS01:DISABLE")
21420 ## Set the ZONE MOUT setting.
21423 field(SCAN,
"Passive")
21425 field(SDIS,
"$(P):LS01:DISABLE")
21429 ## Set the ZONE RANGE setting.
21432 field(SCAN,
"Passive")
21435 field(ONST,
"Range1/Low")
21437 field(TWST,
"Range2/Medium")
21439 field(THST,
"Range3/High")
21441 field(FRST,
"Range4")
21443 field(FVST,
"Range5")
21445 field(SDIS,
"$(P):LS01:DISABLE")
21449 ## Set the ZONE INPUT setting.
21452 field(ZRST,
"None")
21454 field(ONST,
"Input A")
21456 field(TWST,
"Input B")
21458 field(THST,
"Input C")
21460 field(FRST,
"Input D")
21462 field(FVST,
"Input D2")
21464 field(SXST,
"Input D3")
21466 field(SVST,
"Input D4")
21468 field(EIST,
"Input D5")
21470 field(SDIS,
"$(P):LS01:DISABLE")
21474 ## Set the ZONE RATE setting.
21477 field(SCAN,
"Passive")
21479 field(SDIS,
"$(P):LS01:DISABLE")
21483 ## Record to write the ZONE parameters.
21486 field(INPA,
"$(P):LS01:Z3:UB_S4")
21487 field(INPB,
"$(P):LS01:Z3:P_S4")
21488 field(INPC,
"$(P):LS01:Z3:I_S4")
21489 field(INPD,
"$(P):LS01:Z3:D_S4")
21490 field(INPE,
"$(P):LS01:Z3:MOUT_S4")
21491 field(INPF,
"$(P):LS01:Z3:RANGE_S4")
21492 field(INPG,
"$(P):LS01:Z3:INPUT_S4")
21493 field(INPH,
"$(P):LS01:Z3:RATE_S4")
21495 field(DTYP,
"stream")
21496 field(OUT,
"@ls336.proto setZONE(4,3) L0 0")
21497 field(SDIS,
"$(P):LS01:DISABLE")
21498 field(FLNK,
"$(P):LS01:Z3:ALL4.PROC")
21510 record(mbbi,
"$(P):LS01:Z3:RANGE4") {
21519 record(mbbo, "$(P):LS01:Z3:RANGE_S4") {
21533 # This just includes the zone file and overrides the RANGE options
21534 # for the analog control channels.
21536 #######################################
21538 # Template to support reading and setting
21539 # controller ZONE parameters. It reads the ZONE
21540 # parameters into an array, then uses subArrays to
21541 # extract each parameter.
21543 # This template is used by the output template
21544 # and it needs the following macros:
21546 # ZONE: zone number
21547 # OUT: output number
21549 #######################################
21552 ## Read the ZONE setting into an array (8 values)
21555 field(DTYP,
"stream")
21556 field(SDIS,
"$(P):LS01:DISABLE_POLL")
21557 field(INP,
"@ls336.proto getZONE(4,4) L0 0")
21558 field(SCAN,
"Passive")
21560 field(FTVL,
"DOUBLE")
21562 field(FLNK,
"$(P):LS01:Z4:UB4:ARRAY.PROC")
21566 ## Read the ZONE upper boundary setting.
21569 field(SCAN,
"Passive")
21570 field(FTVL,
"DOUBLE")
21571 field(INP,
"$(P):LS01:Z4:ALL4.VAL MS")
21576 field(FLNK,
"$(P):LS01:Z4:UB4.PROC")
21579 field(SCAN,
"Passive")
21580 field(INP,
"$(P):LS01:Z4:UB4:ARRAY.VAL MS")
21582 field(FLNK,
"$(P):LS01:Z4:P4:ARRAY.PROC")
21586 ## Read the ZONE P setting.
21589 field(SCAN,
"Passive")
21590 field(FTVL,
"DOUBLE")
21591 field(INP,
"$(P):LS01:Z4:ALL4.VAL MS")
21596 field(FLNK,
"$(P):LS01:Z4:P4.PROC")
21599 field(SCAN,
"Passive")
21600 field(INP,
"$(P):LS01:Z4:P4:ARRAY.VAL MS")
21602 field(FLNK,
"$(P):LS01:Z4:I4:ARRAY.PROC")
21606 ## Read the ZONE I setting.
21609 field(SCAN,
"Passive")
21610 field(FTVL,
"DOUBLE")
21611 field(INP,
"$(P):LS01:Z4:ALL4.VAL MS")
21616 field(FLNK,
"$(P):LS01:Z4:I4.PROC")
21619 field(SCAN,
"Passive")
21620 field(INP,
"$(P):LS01:Z4:I4:ARRAY.VAL MS")
21622 field(FLNK,
"$(P):LS01:Z4:D4:ARRAY.PROC")
21626 ## Read the ZONE D setting.
21629 field(SCAN,
"Passive")
21630 field(FTVL,
"DOUBLE")
21631 field(INP,
"$(P):LS01:Z4:ALL4.VAL MS")
21636 field(FLNK,
"$(P):LS01:Z4:D4.PROC")
21639 field(SCAN,
"Passive")
21640 field(INP,
"$(P):LS01:Z4:D4:ARRAY.VAL MS")
21642 field(FLNK,
"$(P):LS01:Z4:MOUT4:ARRAY.PROC")
21646 ## Read the ZONE MOUT setting.
21649 field(SCAN,
"Passive")
21650 field(FTVL,
"DOUBLE")
21651 field(INP,
"$(P):LS01:Z4:ALL4.VAL MS")
21656 field(FLNK,
"$(P):LS01:Z4:MOUT4.PROC")
21659 field(SCAN,
"Passive")
21660 field(INP,
"$(P):LS01:Z4:MOUT4:ARRAY.VAL MS")
21662 field(FLNK,
"$(P):LS01:Z4:RANGE4:ARRAY.PROC")
21666 ## Read the ZONE RANGE setting.
21669 field(SCAN,
"Passive")
21670 field(FTVL,
"DOUBLE")
21671 field(INP,
"$(P):LS01:Z4:ALL4.VAL MS")
21676 field(FLNK,
"$(P):LS01:Z4:RANGE4.PROC")
21679 field(INP,
"$(P):LS01:Z4:RANGE4:ARRAY.VAL")
21680 field(SCAN,
"Passive")
21683 field(ONST,
"Range1/Low")
21685 field(TWST,
"Range2/Medium")
21687 field(THST,
"Range3/High")
21689 field(FRST,
"Range4")
21691 field(FVST,
"Range5")
21693 field(FLNK,
"$(P):LS01:Z4:INPUT4:ARRAY.PROC")
21697 ## Read the ZONE INPUT setting.
21700 field(SCAN,
"Passive")
21701 field(FTVL,
"DOUBLE")
21702 field(INP,
"$(P):LS01:Z4:ALL4.VAL MS")
21707 field(FLNK,
"$(P):LS01:Z4:INPUT4.PROC")
21710 field(INP,
"$(P):LS01:Z4:INPUT4:ARRAY.VAL")
21711 field(SCAN,
"Passive")
21712 field(ZRST,
"None")
21714 field(ONST,
"Input A")
21716 field(TWST,
"Input B")
21718 field(THST,
"Input C")
21720 field(FRST,
"Input D")
21722 field(FVST,
"Input D2")
21724 field(SXST,
"Input D3")
21726 field(SVST,
"Input D4")
21728 field(EIST,
"Input D5")
21730 field(FLNK,
"$(P):LS01:Z4:RATE4:ARRAY.PROC")
21734 ## Read the ZONE RATE setting.
21737 field(SCAN,
"Passive")
21738 field(FTVL,
"DOUBLE")
21739 field(INP,
"$(P):LS01:Z4:ALL4.VAL MS")
21744 field(FLNK,
"$(P):LS01:Z4:RATE4.PROC")
21747 field(SCAN,
"Passive")
21748 field(INP,
"$(P):LS01:Z4:RATE4:ARRAY.VAL MS")
21750 field(FLNK,
"$(P):LS01:Z4:INITCALC4.PROC")
21753 ##############################################################
21755 ## Populate the write records below with the current values.
21756 ## Only do this once at startup.
21758 ###############################################################
21764 field(DOPT,
"Use OCAL")
21765 field(OOPT,
"When Zero")
21767 field(OUT,
"$(P):LS01:Z4:INITUB4.PROC")
21771 field(OMSL,
"closed_loop")
21772 field(DOL,
"$(P):LS01:Z4:UB4.VAL")
21773 field(OUTA,
"$(P):LS01:Z4:UB_S4.VAL PP")
21774 field(FLNK,
"$(P):LS01:Z4:INITP4.PROC")
21777 field(OMSL,
"closed_loop")
21778 field(DOL,
"$(P):LS01:Z4:P4.VAL")
21779 field(OUTA,
"$(P):LS01:Z4:P_S4.VAL PP")
21780 field(FLNK,
"$(P):LS01:Z4:INITI4.PROC")
21783 field(OMSL,
"closed_loop")
21784 field(DOL,
"$(P):LS01:Z4:I4.VAL")
21785 field(OUTA,
"$(P):LS01:Z4:I_S4.VAL PP")
21786 field(FLNK,
"$(P):LS01:Z4:INITD4.PROC")
21789 field(OMSL,
"closed_loop")
21790 field(DOL,
"$(P):LS01:Z4:D4.VAL")
21791 field(OUTA,
"$(P):LS01:Z4:D_S4.VAL PP")
21792 field(FLNK,
"$(P):LS01:Z4:INITMOUT4.PROC")
21795 field(OMSL,
"closed_loop")
21796 field(DOL,
"$(P):LS01:Z4:MOUT4.VAL")
21797 field(OUTA,
"$(P):LS01:Z4:MOUT_S4.VAL PP")
21798 field(FLNK,
"$(P):LS01:Z4:INITRANGE4.PROC")
21801 field(OMSL,
"closed_loop")
21802 field(DOL,
"$(P):LS01:Z4:RANGE4.VAL")
21803 field(OUTA,
"$(P):LS01:Z4:RANGE_S4.VAL PP")
21804 field(FLNK,
"$(P):LS01:Z4:INITINPUT4.PROC")
21807 field(OMSL,
"closed_loop")
21808 field(DOL,
"$(P):LS01:Z4:INPUT4.VAL")
21809 field(OUTA,
"$(P):LS01:Z4:INPUT_S4.VAL PP")
21810 field(FLNK,
"$(P):LS01:Z4:INITRATE4.PROC")
21813 field(OMSL,
"closed_loop")
21814 field(DOL,
"$(P):LS01:Z4:RATE4.VAL")
21815 field(OUTA,
"$(P):LS01:Z4:RATE_S4.VAL PP")
21816 field(FLNK,
"$(P):LS01:Z4:INITCOUNT4.PROC")
21821 field(OUTA,
"$(P):LS01:Z4:INITCALC4.A")
21826 #############################################
21827 # Write records. There is a calcout record to
21828 # do the actual write.
21829 #############################################
21832 ## Set the ZONE upper boundary setting.
21835 field(SCAN,
"Passive")
21837 field(SDIS,
"$(P):LS01:DISABLE")
21841 ## Set the ZONE P setting.
21844 field(SCAN,
"Passive")
21846 field(SDIS,
"$(P):LS01:DISABLE")
21850 ## Set the ZONE I setting.
21853 field(SCAN,
"Passive")
21855 field(SDIS,
"$(P):LS01:DISABLE")
21859 ## Set the ZONE D setting.
21862 field(SCAN,
"Passive")
21864 field(SDIS,
"$(P):LS01:DISABLE")
21868 ## Set the ZONE MOUT setting.
21871 field(SCAN,
"Passive")
21873 field(SDIS,
"$(P):LS01:DISABLE")
21877 ## Set the ZONE RANGE setting.
21880 field(SCAN,
"Passive")
21883 field(ONST,
"Range1/Low")
21885 field(TWST,
"Range2/Medium")
21887 field(THST,
"Range3/High")
21889 field(FRST,
"Range4")
21891 field(FVST,
"Range5")
21893 field(SDIS,
"$(P):LS01:DISABLE")
21897 ## Set the ZONE INPUT setting.
21900 field(ZRST,
"None")
21902 field(ONST,
"Input A")
21904 field(TWST,
"Input B")
21906 field(THST,
"Input C")
21908 field(FRST,
"Input D")
21910 field(FVST,
"Input D2")
21912 field(SXST,
"Input D3")
21914 field(SVST,
"Input D4")
21916 field(EIST,
"Input D5")
21918 field(SDIS,
"$(P):LS01:DISABLE")
21922 ## Set the ZONE RATE setting.
21925 field(SCAN,
"Passive")
21927 field(SDIS,
"$(P):LS01:DISABLE")
21931 ## Record to write the ZONE parameters.
21934 field(INPA,
"$(P):LS01:Z4:UB_S4")
21935 field(INPB,
"$(P):LS01:Z4:P_S4")
21936 field(INPC,
"$(P):LS01:Z4:I_S4")
21937 field(INPD,
"$(P):LS01:Z4:D_S4")
21938 field(INPE,
"$(P):LS01:Z4:MOUT_S4")
21939 field(INPF,
"$(P):LS01:Z4:RANGE_S4")
21940 field(INPG,
"$(P):LS01:Z4:INPUT_S4")
21941 field(INPH,
"$(P):LS01:Z4:RATE_S4")
21943 field(DTYP,
"stream")
21944 field(OUT,
"@ls336.proto setZONE(4,4) L0 0")
21945 field(SDIS,
"$(P):LS01:DISABLE")
21946 field(FLNK,
"$(P):LS01:Z4:ALL4.PROC")
21958 record(mbbi,
"$(P):LS01:Z4:RANGE4") {
21967 record(mbbo, "$(P):LS01:Z4:RANGE_S4") {
21981 # This just includes the zone file and overrides the RANGE options
21982 # for the analog control channels.
21984 #######################################
21986 # Template to support reading and setting
21987 # controller ZONE parameters. It reads the ZONE
21988 # parameters into an array, then uses subArrays to
21989 # extract each parameter.
21991 # This template is used by the output template
21992 # and it needs the following macros:
21994 # ZONE: zone number
21995 # OUT: output number
21997 #######################################
22000 ## Read the ZONE setting into an array (8 values)
22003 field(DTYP,
"stream")
22004 field(SDIS,
"$(P):LS01:DISABLE_POLL")
22005 field(INP,
"@ls336.proto getZONE(4,5) L0 0")
22006 field(SCAN,
"Passive")
22008 field(FTVL,
"DOUBLE")
22010 field(FLNK,
"$(P):LS01:Z5:UB4:ARRAY.PROC")
22014 ## Read the ZONE upper boundary setting.
22017 field(SCAN,
"Passive")
22018 field(FTVL,
"DOUBLE")
22019 field(INP,
"$(P):LS01:Z5:ALL4.VAL MS")
22024 field(FLNK,
"$(P):LS01:Z5:UB4.PROC")
22027 field(SCAN,
"Passive")
22028 field(INP,
"$(P):LS01:Z5:UB4:ARRAY.VAL MS")
22030 field(FLNK,
"$(P):LS01:Z5:P4:ARRAY.PROC")
22034 ## Read the ZONE P setting.
22037 field(SCAN,
"Passive")
22038 field(FTVL,
"DOUBLE")
22039 field(INP,
"$(P):LS01:Z5:ALL4.VAL MS")
22044 field(FLNK,
"$(P):LS01:Z5:P4.PROC")
22047 field(SCAN,
"Passive")
22048 field(INP,
"$(P):LS01:Z5:P4:ARRAY.VAL MS")
22050 field(FLNK,
"$(P):LS01:Z5:I4:ARRAY.PROC")
22054 ## Read the ZONE I setting.
22057 field(SCAN,
"Passive")
22058 field(FTVL,
"DOUBLE")
22059 field(INP,
"$(P):LS01:Z5:ALL4.VAL MS")
22064 field(FLNK,
"$(P):LS01:Z5:I4.PROC")
22067 field(SCAN,
"Passive")
22068 field(INP,
"$(P):LS01:Z5:I4:ARRAY.VAL MS")
22070 field(FLNK,
"$(P):LS01:Z5:D4:ARRAY.PROC")
22074 ## Read the ZONE D setting.
22077 field(SCAN,
"Passive")
22078 field(FTVL,
"DOUBLE")
22079 field(INP,
"$(P):LS01:Z5:ALL4.VAL MS")
22084 field(FLNK,
"$(P):LS01:Z5:D4.PROC")
22087 field(SCAN,
"Passive")
22088 field(INP,
"$(P):LS01:Z5:D4:ARRAY.VAL MS")
22090 field(FLNK,
"$(P):LS01:Z5:MOUT4:ARRAY.PROC")
22094 ## Read the ZONE MOUT setting.
22097 field(SCAN,
"Passive")
22098 field(FTVL,
"DOUBLE")
22099 field(INP,
"$(P):LS01:Z5:ALL4.VAL MS")
22104 field(FLNK,
"$(P):LS01:Z5:MOUT4.PROC")
22107 field(SCAN,
"Passive")
22108 field(INP,
"$(P):LS01:Z5:MOUT4:ARRAY.VAL MS")
22110 field(FLNK,
"$(P):LS01:Z5:RANGE4:ARRAY.PROC")
22114 ## Read the ZONE RANGE setting.
22117 field(SCAN,
"Passive")
22118 field(FTVL,
"DOUBLE")
22119 field(INP,
"$(P):LS01:Z5:ALL4.VAL MS")
22124 field(FLNK,
"$(P):LS01:Z5:RANGE4.PROC")
22127 field(INP,
"$(P):LS01:Z5:RANGE4:ARRAY.VAL")
22128 field(SCAN,
"Passive")
22131 field(ONST,
"Range1/Low")
22133 field(TWST,
"Range2/Medium")
22135 field(THST,
"Range3/High")
22137 field(FRST,
"Range4")
22139 field(FVST,
"Range5")
22141 field(FLNK,
"$(P):LS01:Z5:INPUT4:ARRAY.PROC")
22145 ## Read the ZONE INPUT setting.
22148 field(SCAN,
"Passive")
22149 field(FTVL,
"DOUBLE")
22150 field(INP,
"$(P):LS01:Z5:ALL4.VAL MS")
22155 field(FLNK,
"$(P):LS01:Z5:INPUT4.PROC")
22158 field(INP,
"$(P):LS01:Z5:INPUT4:ARRAY.VAL")
22159 field(SCAN,
"Passive")
22160 field(ZRST,
"None")
22162 field(ONST,
"Input A")
22164 field(TWST,
"Input B")
22166 field(THST,
"Input C")
22168 field(FRST,
"Input D")
22170 field(FVST,
"Input D2")
22172 field(SXST,
"Input D3")
22174 field(SVST,
"Input D4")
22176 field(EIST,
"Input D5")
22178 field(FLNK,
"$(P):LS01:Z5:RATE4:ARRAY.PROC")
22182 ## Read the ZONE RATE setting.
22185 field(SCAN,
"Passive")
22186 field(FTVL,
"DOUBLE")
22187 field(INP,
"$(P):LS01:Z5:ALL4.VAL MS")
22192 field(FLNK,
"$(P):LS01:Z5:RATE4.PROC")
22195 field(SCAN,
"Passive")
22196 field(INP,
"$(P):LS01:Z5:RATE4:ARRAY.VAL MS")
22198 field(FLNK,
"$(P):LS01:Z5:INITCALC4.PROC")
22201 ##############################################################
22203 ## Populate the write records below with the current values.
22204 ## Only do this once at startup.
22206 ###############################################################
22212 field(DOPT,
"Use OCAL")
22213 field(OOPT,
"When Zero")
22215 field(OUT,
"$(P):LS01:Z5:INITUB4.PROC")
22219 field(OMSL,
"closed_loop")
22220 field(DOL,
"$(P):LS01:Z5:UB4.VAL")
22221 field(OUTA,
"$(P):LS01:Z5:UB_S4.VAL PP")
22222 field(FLNK,
"$(P):LS01:Z5:INITP4.PROC")
22225 field(OMSL,
"closed_loop")
22226 field(DOL,
"$(P):LS01:Z5:P4.VAL")
22227 field(OUTA,
"$(P):LS01:Z5:P_S4.VAL PP")
22228 field(FLNK,
"$(P):LS01:Z5:INITI4.PROC")
22231 field(OMSL,
"closed_loop")
22232 field(DOL,
"$(P):LS01:Z5:I4.VAL")
22233 field(OUTA,
"$(P):LS01:Z5:I_S4.VAL PP")
22234 field(FLNK,
"$(P):LS01:Z5:INITD4.PROC")
22237 field(OMSL,
"closed_loop")
22238 field(DOL,
"$(P):LS01:Z5:D4.VAL")
22239 field(OUTA,
"$(P):LS01:Z5:D_S4.VAL PP")
22240 field(FLNK,
"$(P):LS01:Z5:INITMOUT4.PROC")
22243 field(OMSL,
"closed_loop")
22244 field(DOL,
"$(P):LS01:Z5:MOUT4.VAL")
22245 field(OUTA,
"$(P):LS01:Z5:MOUT_S4.VAL PP")
22246 field(FLNK,
"$(P):LS01:Z5:INITRANGE4.PROC")
22249 field(OMSL,
"closed_loop")
22250 field(DOL,
"$(P):LS01:Z5:RANGE4.VAL")
22251 field(OUTA,
"$(P):LS01:Z5:RANGE_S4.VAL PP")
22252 field(FLNK,
"$(P):LS01:Z5:INITINPUT4.PROC")
22255 field(OMSL,
"closed_loop")
22256 field(DOL,
"$(P):LS01:Z5:INPUT4.VAL")
22257 field(OUTA,
"$(P):LS01:Z5:INPUT_S4.VAL PP")
22258 field(FLNK,
"$(P):LS01:Z5:INITRATE4.PROC")
22261 field(OMSL,
"closed_loop")
22262 field(DOL,
"$(P):LS01:Z5:RATE4.VAL")
22263 field(OUTA,
"$(P):LS01:Z5:RATE_S4.VAL PP")
22264 field(FLNK,
"$(P):LS01:Z5:INITCOUNT4.PROC")
22269 field(OUTA,
"$(P):LS01:Z5:INITCALC4.A")
22274 #############################################
22275 # Write records. There is a calcout record to
22276 # do the actual write.
22277 #############################################
22280 ## Set the ZONE upper boundary setting.
22283 field(SCAN,
"Passive")
22285 field(SDIS,
"$(P):LS01:DISABLE")
22289 ## Set the ZONE P setting.
22292 field(SCAN,
"Passive")
22294 field(SDIS,
"$(P):LS01:DISABLE")
22298 ## Set the ZONE I setting.
22301 field(SCAN,
"Passive")
22303 field(SDIS,
"$(P):LS01:DISABLE")
22307 ## Set the ZONE D setting.
22310 field(SCAN,
"Passive")
22312 field(SDIS,
"$(P):LS01:DISABLE")
22316 ## Set the ZONE MOUT setting.
22319 field(SCAN,
"Passive")
22321 field(SDIS,
"$(P):LS01:DISABLE")
22325 ## Set the ZONE RANGE setting.
22328 field(SCAN,
"Passive")
22331 field(ONST,
"Range1/Low")
22333 field(TWST,
"Range2/Medium")
22335 field(THST,
"Range3/High")
22337 field(FRST,
"Range4")
22339 field(FVST,
"Range5")
22341 field(SDIS,
"$(P):LS01:DISABLE")
22345 ## Set the ZONE INPUT setting.
22348 field(ZRST,
"None")
22350 field(ONST,
"Input A")
22352 field(TWST,
"Input B")
22354 field(THST,
"Input C")
22356 field(FRST,
"Input D")
22358 field(FVST,
"Input D2")
22360 field(SXST,
"Input D3")
22362 field(SVST,
"Input D4")
22364 field(EIST,
"Input D5")
22366 field(SDIS,
"$(P):LS01:DISABLE")
22370 ## Set the ZONE RATE setting.
22373 field(SCAN,
"Passive")
22375 field(SDIS,
"$(P):LS01:DISABLE")
22379 ## Record to write the ZONE parameters.
22382 field(INPA,
"$(P):LS01:Z5:UB_S4")
22383 field(INPB,
"$(P):LS01:Z5:P_S4")
22384 field(INPC,
"$(P):LS01:Z5:I_S4")
22385 field(INPD,
"$(P):LS01:Z5:D_S4")
22386 field(INPE,
"$(P):LS01:Z5:MOUT_S4")
22387 field(INPF,
"$(P):LS01:Z5:RANGE_S4")
22388 field(INPG,
"$(P):LS01:Z5:INPUT_S4")
22389 field(INPH,
"$(P):LS01:Z5:RATE_S4")
22391 field(DTYP,
"stream")
22392 field(OUT,
"@ls336.proto setZONE(4,5) L0 0")
22393 field(SDIS,
"$(P):LS01:DISABLE")
22394 field(FLNK,
"$(P):LS01:Z5:ALL4.PROC")
22406 record(mbbi,
"$(P):LS01:Z5:RANGE4") {
22415 record(mbbo, "$(P):LS01:Z5:RANGE_S4") {
22429 # This just includes the zone file and overrides the RANGE options
22430 # for the analog control channels.
22432 #######################################
22434 # Template to support reading and setting
22435 # controller ZONE parameters. It reads the ZONE
22436 # parameters into an array, then uses subArrays to
22437 # extract each parameter.
22439 # This template is used by the output template
22440 # and it needs the following macros:
22442 # ZONE: zone number
22443 # OUT: output number
22445 #######################################
22448 ## Read the ZONE setting into an array (8 values)
22451 field(DTYP,
"stream")
22452 field(SDIS,
"$(P):LS01:DISABLE_POLL")
22453 field(INP,
"@ls336.proto getZONE(4,6) L0 0")
22454 field(SCAN,
"Passive")
22456 field(FTVL,
"DOUBLE")
22458 field(FLNK,
"$(P):LS01:Z6:UB4:ARRAY.PROC")
22462 ## Read the ZONE upper boundary setting.
22465 field(SCAN,
"Passive")
22466 field(FTVL,
"DOUBLE")
22467 field(INP,
"$(P):LS01:Z6:ALL4.VAL MS")
22472 field(FLNK,
"$(P):LS01:Z6:UB4.PROC")
22475 field(SCAN,
"Passive")
22476 field(INP,
"$(P):LS01:Z6:UB4:ARRAY.VAL MS")
22478 field(FLNK,
"$(P):LS01:Z6:P4:ARRAY.PROC")
22482 ## Read the ZONE P setting.
22485 field(SCAN,
"Passive")
22486 field(FTVL,
"DOUBLE")
22487 field(INP,
"$(P):LS01:Z6:ALL4.VAL MS")
22492 field(FLNK,
"$(P):LS01:Z6:P4.PROC")
22495 field(SCAN,
"Passive")
22496 field(INP,
"$(P):LS01:Z6:P4:ARRAY.VAL MS")
22498 field(FLNK,
"$(P):LS01:Z6:I4:ARRAY.PROC")
22502 ## Read the ZONE I setting.
22505 field(SCAN,
"Passive")
22506 field(FTVL,
"DOUBLE")
22507 field(INP,
"$(P):LS01:Z6:ALL4.VAL MS")
22512 field(FLNK,
"$(P):LS01:Z6:I4.PROC")
22515 field(SCAN,
"Passive")
22516 field(INP,
"$(P):LS01:Z6:I4:ARRAY.VAL MS")
22518 field(FLNK,
"$(P):LS01:Z6:D4:ARRAY.PROC")
22522 ## Read the ZONE D setting.
22525 field(SCAN,
"Passive")
22526 field(FTVL,
"DOUBLE")
22527 field(INP,
"$(P):LS01:Z6:ALL4.VAL MS")
22532 field(FLNK,
"$(P):LS01:Z6:D4.PROC")
22535 field(SCAN,
"Passive")
22536 field(INP,
"$(P):LS01:Z6:D4:ARRAY.VAL MS")
22538 field(FLNK,
"$(P):LS01:Z6:MOUT4:ARRAY.PROC")
22542 ## Read the ZONE MOUT setting.
22545 field(SCAN,
"Passive")
22546 field(FTVL,
"DOUBLE")
22547 field(INP,
"$(P):LS01:Z6:ALL4.VAL MS")
22552 field(FLNK,
"$(P):LS01:Z6:MOUT4.PROC")
22555 field(SCAN,
"Passive")
22556 field(INP,
"$(P):LS01:Z6:MOUT4:ARRAY.VAL MS")
22558 field(FLNK,
"$(P):LS01:Z6:RANGE4:ARRAY.PROC")
22562 ## Read the ZONE RANGE setting.
22565 field(SCAN,
"Passive")
22566 field(FTVL,
"DOUBLE")
22567 field(INP,
"$(P):LS01:Z6:ALL4.VAL MS")
22572 field(FLNK,
"$(P):LS01:Z6:RANGE4.PROC")
22575 field(INP,
"$(P):LS01:Z6:RANGE4:ARRAY.VAL")
22576 field(SCAN,
"Passive")
22579 field(ONST,
"Range1/Low")
22581 field(TWST,
"Range2/Medium")
22583 field(THST,
"Range3/High")
22585 field(FRST,
"Range4")
22587 field(FVST,
"Range5")
22589 field(FLNK,
"$(P):LS01:Z6:INPUT4:ARRAY.PROC")
22593 ## Read the ZONE INPUT setting.
22596 field(SCAN,
"Passive")
22597 field(FTVL,
"DOUBLE")
22598 field(INP,
"$(P):LS01:Z6:ALL4.VAL MS")
22603 field(FLNK,
"$(P):LS01:Z6:INPUT4.PROC")
22606 field(INP,
"$(P):LS01:Z6:INPUT4:ARRAY.VAL")
22607 field(SCAN,
"Passive")
22608 field(ZRST,
"None")
22610 field(ONST,
"Input A")
22612 field(TWST,
"Input B")
22614 field(THST,
"Input C")
22616 field(FRST,
"Input D")
22618 field(FVST,
"Input D2")
22620 field(SXST,
"Input D3")
22622 field(SVST,
"Input D4")
22624 field(EIST,
"Input D5")
22626 field(FLNK,
"$(P):LS01:Z6:RATE4:ARRAY.PROC")
22630 ## Read the ZONE RATE setting.
22633 field(SCAN,
"Passive")
22634 field(FTVL,
"DOUBLE")
22635 field(INP,
"$(P):LS01:Z6:ALL4.VAL MS")
22640 field(FLNK,
"$(P):LS01:Z6:RATE4.PROC")
22643 field(SCAN,
"Passive")
22644 field(INP,
"$(P):LS01:Z6:RATE4:ARRAY.VAL MS")
22646 field(FLNK,
"$(P):LS01:Z6:INITCALC4.PROC")
22649 ##############################################################
22651 ## Populate the write records below with the current values.
22652 ## Only do this once at startup.
22654 ###############################################################
22660 field(DOPT,
"Use OCAL")
22661 field(OOPT,
"When Zero")
22663 field(OUT,
"$(P):LS01:Z6:INITUB4.PROC")
22667 field(OMSL,
"closed_loop")
22668 field(DOL,
"$(P):LS01:Z6:UB4.VAL")
22669 field(OUTA,
"$(P):LS01:Z6:UB_S4.VAL PP")
22670 field(FLNK,
"$(P):LS01:Z6:INITP4.PROC")
22673 field(OMSL,
"closed_loop")
22674 field(DOL,
"$(P):LS01:Z6:P4.VAL")
22675 field(OUTA,
"$(P):LS01:Z6:P_S4.VAL PP")
22676 field(FLNK,
"$(P):LS01:Z6:INITI4.PROC")
22679 field(OMSL,
"closed_loop")
22680 field(DOL,
"$(P):LS01:Z6:I4.VAL")
22681 field(OUTA,
"$(P):LS01:Z6:I_S4.VAL PP")
22682 field(FLNK,
"$(P):LS01:Z6:INITD4.PROC")
22685 field(OMSL,
"closed_loop")
22686 field(DOL,
"$(P):LS01:Z6:D4.VAL")
22687 field(OUTA,
"$(P):LS01:Z6:D_S4.VAL PP")
22688 field(FLNK,
"$(P):LS01:Z6:INITMOUT4.PROC")
22691 field(OMSL,
"closed_loop")
22692 field(DOL,
"$(P):LS01:Z6:MOUT4.VAL")
22693 field(OUTA,
"$(P):LS01:Z6:MOUT_S4.VAL PP")
22694 field(FLNK,
"$(P):LS01:Z6:INITRANGE4.PROC")
22697 field(OMSL,
"closed_loop")
22698 field(DOL,
"$(P):LS01:Z6:RANGE4.VAL")
22699 field(OUTA,
"$(P):LS01:Z6:RANGE_S4.VAL PP")
22700 field(FLNK,
"$(P):LS01:Z6:INITINPUT4.PROC")
22703 field(OMSL,
"closed_loop")
22704 field(DOL,
"$(P):LS01:Z6:INPUT4.VAL")
22705 field(OUTA,
"$(P):LS01:Z6:INPUT_S4.VAL PP")
22706 field(FLNK,
"$(P):LS01:Z6:INITRATE4.PROC")
22709 field(OMSL,
"closed_loop")
22710 field(DOL,
"$(P):LS01:Z6:RATE4.VAL")
22711 field(OUTA,
"$(P):LS01:Z6:RATE_S4.VAL PP")
22712 field(FLNK,
"$(P):LS01:Z6:INITCOUNT4.PROC")
22717 field(OUTA,
"$(P):LS01:Z6:INITCALC4.A")
22722 #############################################
22723 # Write records. There is a calcout record to
22724 # do the actual write.
22725 #############################################
22728 ## Set the ZONE upper boundary setting.
22731 field(SCAN,
"Passive")
22733 field(SDIS,
"$(P):LS01:DISABLE")
22737 ## Set the ZONE P setting.
22740 field(SCAN,
"Passive")
22742 field(SDIS,
"$(P):LS01:DISABLE")
22746 ## Set the ZONE I setting.
22749 field(SCAN,
"Passive")
22751 field(SDIS,
"$(P):LS01:DISABLE")
22755 ## Set the ZONE D setting.
22758 field(SCAN,
"Passive")
22760 field(SDIS,
"$(P):LS01:DISABLE")
22764 ## Set the ZONE MOUT setting.
22767 field(SCAN,
"Passive")
22769 field(SDIS,
"$(P):LS01:DISABLE")
22773 ## Set the ZONE RANGE setting.
22776 field(SCAN,
"Passive")
22779 field(ONST,
"Range1/Low")
22781 field(TWST,
"Range2/Medium")
22783 field(THST,
"Range3/High")
22785 field(FRST,
"Range4")
22787 field(FVST,
"Range5")
22789 field(SDIS,
"$(P):LS01:DISABLE")
22793 ## Set the ZONE INPUT setting.
22796 field(ZRST,
"None")
22798 field(ONST,
"Input A")
22800 field(TWST,
"Input B")
22802 field(THST,
"Input C")
22804 field(FRST,
"Input D")
22806 field(FVST,
"Input D2")
22808 field(SXST,
"Input D3")
22810 field(SVST,
"Input D4")
22812 field(EIST,
"Input D5")
22814 field(SDIS,
"$(P):LS01:DISABLE")
22818 ## Set the ZONE RATE setting.
22821 field(SCAN,
"Passive")
22823 field(SDIS,
"$(P):LS01:DISABLE")
22827 ## Record to write the ZONE parameters.
22830 field(INPA,
"$(P):LS01:Z6:UB_S4")
22831 field(INPB,
"$(P):LS01:Z6:P_S4")
22832 field(INPC,
"$(P):LS01:Z6:I_S4")
22833 field(INPD,
"$(P):LS01:Z6:D_S4")
22834 field(INPE,
"$(P):LS01:Z6:MOUT_S4")
22835 field(INPF,
"$(P):LS01:Z6:RANGE_S4")
22836 field(INPG,
"$(P):LS01:Z6:INPUT_S4")
22837 field(INPH,
"$(P):LS01:Z6:RATE_S4")
22839 field(DTYP,
"stream")
22840 field(OUT,
"@ls336.proto setZONE(4,6) L0 0")
22841 field(SDIS,
"$(P):LS01:DISABLE")
22842 field(FLNK,
"$(P):LS01:Z6:ALL4.PROC")
22854 record(mbbi,
"$(P):LS01:Z6:RANGE4") {
22863 record(mbbo, "$(P):LS01:Z6:RANGE_S4") {
22877 # This just includes the zone file and overrides the RANGE options
22878 # for the analog control channels.
22880 #######################################
22882 # Template to support reading and setting
22883 # controller ZONE parameters. It reads the ZONE
22884 # parameters into an array, then uses subArrays to
22885 # extract each parameter.
22887 # This template is used by the output template
22888 # and it needs the following macros:
22890 # ZONE: zone number
22891 # OUT: output number
22893 #######################################
22896 ## Read the ZONE setting into an array (8 values)
22899 field(DTYP,
"stream")
22900 field(SDIS,
"$(P):LS01:DISABLE_POLL")
22901 field(INP,
"@ls336.proto getZONE(4,7) L0 0")
22902 field(SCAN,
"Passive")
22904 field(FTVL,
"DOUBLE")
22906 field(FLNK,
"$(P):LS01:Z7:UB4:ARRAY.PROC")
22910 ## Read the ZONE upper boundary setting.
22913 field(SCAN,
"Passive")
22914 field(FTVL,
"DOUBLE")
22915 field(INP,
"$(P):LS01:Z7:ALL4.VAL MS")
22920 field(FLNK,
"$(P):LS01:Z7:UB4.PROC")
22923 field(SCAN,
"Passive")
22924 field(INP,
"$(P):LS01:Z7:UB4:ARRAY.VAL MS")
22926 field(FLNK,
"$(P):LS01:Z7:P4:ARRAY.PROC")
22930 ## Read the ZONE P setting.
22933 field(SCAN,
"Passive")
22934 field(FTVL,
"DOUBLE")
22935 field(INP,
"$(P):LS01:Z7:ALL4.VAL MS")
22940 field(FLNK,
"$(P):LS01:Z7:P4.PROC")
22943 field(SCAN,
"Passive")
22944 field(INP,
"$(P):LS01:Z7:P4:ARRAY.VAL MS")
22946 field(FLNK,
"$(P):LS01:Z7:I4:ARRAY.PROC")
22950 ## Read the ZONE I setting.
22953 field(SCAN,
"Passive")
22954 field(FTVL,
"DOUBLE")
22955 field(INP,
"$(P):LS01:Z7:ALL4.VAL MS")
22960 field(FLNK,
"$(P):LS01:Z7:I4.PROC")
22963 field(SCAN,
"Passive")
22964 field(INP,
"$(P):LS01:Z7:I4:ARRAY.VAL MS")
22966 field(FLNK,
"$(P):LS01:Z7:D4:ARRAY.PROC")
22970 ## Read the ZONE D setting.
22973 field(SCAN,
"Passive")
22974 field(FTVL,
"DOUBLE")
22975 field(INP,
"$(P):LS01:Z7:ALL4.VAL MS")
22980 field(FLNK,
"$(P):LS01:Z7:D4.PROC")
22983 field(SCAN,
"Passive")
22984 field(INP,
"$(P):LS01:Z7:D4:ARRAY.VAL MS")
22986 field(FLNK,
"$(P):LS01:Z7:MOUT4:ARRAY.PROC")
22990 ## Read the ZONE MOUT setting.
22993 field(SCAN,
"Passive")
22994 field(FTVL,
"DOUBLE")
22995 field(INP,
"$(P):LS01:Z7:ALL4.VAL MS")
23000 field(FLNK,
"$(P):LS01:Z7:MOUT4.PROC")
23003 field(SCAN,
"Passive")
23004 field(INP,
"$(P):LS01:Z7:MOUT4:ARRAY.VAL MS")
23006 field(FLNK,
"$(P):LS01:Z7:RANGE4:ARRAY.PROC")
23010 ## Read the ZONE RANGE setting.
23013 field(SCAN,
"Passive")
23014 field(FTVL,
"DOUBLE")
23015 field(INP,
"$(P):LS01:Z7:ALL4.VAL MS")
23020 field(FLNK,
"$(P):LS01:Z7:RANGE4.PROC")
23023 field(INP,
"$(P):LS01:Z7:RANGE4:ARRAY.VAL")
23024 field(SCAN,
"Passive")
23027 field(ONST,
"Range1/Low")
23029 field(TWST,
"Range2/Medium")
23031 field(THST,
"Range3/High")
23033 field(FRST,
"Range4")
23035 field(FVST,
"Range5")
23037 field(FLNK,
"$(P):LS01:Z7:INPUT4:ARRAY.PROC")
23041 ## Read the ZONE INPUT setting.
23044 field(SCAN,
"Passive")
23045 field(FTVL,
"DOUBLE")
23046 field(INP,
"$(P):LS01:Z7:ALL4.VAL MS")
23051 field(FLNK,
"$(P):LS01:Z7:INPUT4.PROC")
23054 field(INP,
"$(P):LS01:Z7:INPUT4:ARRAY.VAL")
23055 field(SCAN,
"Passive")
23056 field(ZRST,
"None")
23058 field(ONST,
"Input A")
23060 field(TWST,
"Input B")
23062 field(THST,
"Input C")
23064 field(FRST,
"Input D")
23066 field(FVST,
"Input D2")
23068 field(SXST,
"Input D3")
23070 field(SVST,
"Input D4")
23072 field(EIST,
"Input D5")
23074 field(FLNK,
"$(P):LS01:Z7:RATE4:ARRAY.PROC")
23078 ## Read the ZONE RATE setting.
23081 field(SCAN,
"Passive")
23082 field(FTVL,
"DOUBLE")
23083 field(INP,
"$(P):LS01:Z7:ALL4.VAL MS")
23088 field(FLNK,
"$(P):LS01:Z7:RATE4.PROC")
23091 field(SCAN,
"Passive")
23092 field(INP,
"$(P):LS01:Z7:RATE4:ARRAY.VAL MS")
23094 field(FLNK,
"$(P):LS01:Z7:INITCALC4.PROC")
23097 ##############################################################
23099 ## Populate the write records below with the current values.
23100 ## Only do this once at startup.
23102 ###############################################################
23108 field(DOPT,
"Use OCAL")
23109 field(OOPT,
"When Zero")
23111 field(OUT,
"$(P):LS01:Z7:INITUB4.PROC")
23115 field(OMSL,
"closed_loop")
23116 field(DOL,
"$(P):LS01:Z7:UB4.VAL")
23117 field(OUTA,
"$(P):LS01:Z7:UB_S4.VAL PP")
23118 field(FLNK,
"$(P):LS01:Z7:INITP4.PROC")
23121 field(OMSL,
"closed_loop")
23122 field(DOL,
"$(P):LS01:Z7:P4.VAL")
23123 field(OUTA,
"$(P):LS01:Z7:P_S4.VAL PP")
23124 field(FLNK,
"$(P):LS01:Z7:INITI4.PROC")
23127 field(OMSL,
"closed_loop")
23128 field(DOL,
"$(P):LS01:Z7:I4.VAL")
23129 field(OUTA,
"$(P):LS01:Z7:I_S4.VAL PP")
23130 field(FLNK,
"$(P):LS01:Z7:INITD4.PROC")
23133 field(OMSL,
"closed_loop")
23134 field(DOL,
"$(P):LS01:Z7:D4.VAL")
23135 field(OUTA,
"$(P):LS01:Z7:D_S4.VAL PP")
23136 field(FLNK,
"$(P):LS01:Z7:INITMOUT4.PROC")
23139 field(OMSL,
"closed_loop")
23140 field(DOL,
"$(P):LS01:Z7:MOUT4.VAL")
23141 field(OUTA,
"$(P):LS01:Z7:MOUT_S4.VAL PP")
23142 field(FLNK,
"$(P):LS01:Z7:INITRANGE4.PROC")
23145 field(OMSL,
"closed_loop")
23146 field(DOL,
"$(P):LS01:Z7:RANGE4.VAL")
23147 field(OUTA,
"$(P):LS01:Z7:RANGE_S4.VAL PP")
23148 field(FLNK,
"$(P):LS01:Z7:INITINPUT4.PROC")
23151 field(OMSL,
"closed_loop")
23152 field(DOL,
"$(P):LS01:Z7:INPUT4.VAL")
23153 field(OUTA,
"$(P):LS01:Z7:INPUT_S4.VAL PP")
23154 field(FLNK,
"$(P):LS01:Z7:INITRATE4.PROC")
23157 field(OMSL,
"closed_loop")
23158 field(DOL,
"$(P):LS01:Z7:RATE4.VAL")
23159 field(OUTA,
"$(P):LS01:Z7:RATE_S4.VAL PP")
23160 field(FLNK,
"$(P):LS01:Z7:INITCOUNT4.PROC")
23165 field(OUTA,
"$(P):LS01:Z7:INITCALC4.A")
23170 #############################################
23171 # Write records. There is a calcout record to
23172 # do the actual write.
23173 #############################################
23176 ## Set the ZONE upper boundary setting.
23179 field(SCAN,
"Passive")
23181 field(SDIS,
"$(P):LS01:DISABLE")
23185 ## Set the ZONE P setting.
23188 field(SCAN,
"Passive")
23190 field(SDIS,
"$(P):LS01:DISABLE")
23194 ## Set the ZONE I setting.
23197 field(SCAN,
"Passive")
23199 field(SDIS,
"$(P):LS01:DISABLE")
23203 ## Set the ZONE D setting.
23206 field(SCAN,
"Passive")
23208 field(SDIS,
"$(P):LS01:DISABLE")
23212 ## Set the ZONE MOUT setting.
23215 field(SCAN,
"Passive")
23217 field(SDIS,
"$(P):LS01:DISABLE")
23221 ## Set the ZONE RANGE setting.
23224 field(SCAN,
"Passive")
23227 field(ONST,
"Range1/Low")
23229 field(TWST,
"Range2/Medium")
23231 field(THST,
"Range3/High")
23233 field(FRST,
"Range4")
23235 field(FVST,
"Range5")
23237 field(SDIS,
"$(P):LS01:DISABLE")
23241 ## Set the ZONE INPUT setting.
23244 field(ZRST,
"None")
23246 field(ONST,
"Input A")
23248 field(TWST,
"Input B")
23250 field(THST,
"Input C")
23252 field(FRST,
"Input D")
23254 field(FVST,
"Input D2")
23256 field(SXST,
"Input D3")
23258 field(SVST,
"Input D4")
23260 field(EIST,
"Input D5")
23262 field(SDIS,
"$(P):LS01:DISABLE")
23266 ## Set the ZONE RATE setting.
23269 field(SCAN,
"Passive")
23271 field(SDIS,
"$(P):LS01:DISABLE")
23275 ## Record to write the ZONE parameters.
23278 field(INPA,
"$(P):LS01:Z7:UB_S4")
23279 field(INPB,
"$(P):LS01:Z7:P_S4")
23280 field(INPC,
"$(P):LS01:Z7:I_S4")
23281 field(INPD,
"$(P):LS01:Z7:D_S4")
23282 field(INPE,
"$(P):LS01:Z7:MOUT_S4")
23283 field(INPF,
"$(P):LS01:Z7:RANGE_S4")
23284 field(INPG,
"$(P):LS01:Z7:INPUT_S4")
23285 field(INPH,
"$(P):LS01:Z7:RATE_S4")
23287 field(DTYP,
"stream")
23288 field(OUT,
"@ls336.proto setZONE(4,7) L0 0")
23289 field(SDIS,
"$(P):LS01:DISABLE")
23290 field(FLNK,
"$(P):LS01:Z7:ALL4.PROC")
23302 record(mbbi,
"$(P):LS01:Z7:RANGE4") {
23311 record(mbbo, "$(P):LS01:Z7:RANGE_S4") {
23325 # This just includes the zone file and overrides the RANGE options
23326 # for the analog control channels.
23328 #######################################
23330 # Template to support reading and setting
23331 # controller ZONE parameters. It reads the ZONE
23332 # parameters into an array, then uses subArrays to
23333 # extract each parameter.
23335 # This template is used by the output template
23336 # and it needs the following macros:
23338 # ZONE: zone number
23339 # OUT: output number
23341 #######################################
23344 ## Read the ZONE setting into an array (8 values)
23347 field(DTYP,
"stream")
23348 field(SDIS,
"$(P):LS01:DISABLE_POLL")
23349 field(INP,
"@ls336.proto getZONE(4,8) L0 0")
23350 field(SCAN,
"Passive")
23352 field(FTVL,
"DOUBLE")
23354 field(FLNK,
"$(P):LS01:Z8:UB4:ARRAY.PROC")
23358 ## Read the ZONE upper boundary setting.
23361 field(SCAN,
"Passive")
23362 field(FTVL,
"DOUBLE")
23363 field(INP,
"$(P):LS01:Z8:ALL4.VAL MS")
23368 field(FLNK,
"$(P):LS01:Z8:UB4.PROC")
23371 field(SCAN,
"Passive")
23372 field(INP,
"$(P):LS01:Z8:UB4:ARRAY.VAL MS")
23374 field(FLNK,
"$(P):LS01:Z8:P4:ARRAY.PROC")
23378 ## Read the ZONE P setting.
23381 field(SCAN,
"Passive")
23382 field(FTVL,
"DOUBLE")
23383 field(INP,
"$(P):LS01:Z8:ALL4.VAL MS")
23388 field(FLNK,
"$(P):LS01:Z8:P4.PROC")
23391 field(SCAN,
"Passive")
23392 field(INP,
"$(P):LS01:Z8:P4:ARRAY.VAL MS")
23394 field(FLNK,
"$(P):LS01:Z8:I4:ARRAY.PROC")
23398 ## Read the ZONE I setting.
23401 field(SCAN,
"Passive")
23402 field(FTVL,
"DOUBLE")
23403 field(INP,
"$(P):LS01:Z8:ALL4.VAL MS")
23408 field(FLNK,
"$(P):LS01:Z8:I4.PROC")
23411 field(SCAN,
"Passive")
23412 field(INP,
"$(P):LS01:Z8:I4:ARRAY.VAL MS")
23414 field(FLNK,
"$(P):LS01:Z8:D4:ARRAY.PROC")
23418 ## Read the ZONE D setting.
23421 field(SCAN,
"Passive")
23422 field(FTVL,
"DOUBLE")
23423 field(INP,
"$(P):LS01:Z8:ALL4.VAL MS")
23428 field(FLNK,
"$(P):LS01:Z8:D4.PROC")
23431 field(SCAN,
"Passive")
23432 field(INP,
"$(P):LS01:Z8:D4:ARRAY.VAL MS")
23434 field(FLNK,
"$(P):LS01:Z8:MOUT4:ARRAY.PROC")
23438 ## Read the ZONE MOUT setting.
23441 field(SCAN,
"Passive")
23442 field(FTVL,
"DOUBLE")
23443 field(INP,
"$(P):LS01:Z8:ALL4.VAL MS")
23448 field(FLNK,
"$(P):LS01:Z8:MOUT4.PROC")
23451 field(SCAN,
"Passive")
23452 field(INP,
"$(P):LS01:Z8:MOUT4:ARRAY.VAL MS")
23454 field(FLNK,
"$(P):LS01:Z8:RANGE4:ARRAY.PROC")
23458 ## Read the ZONE RANGE setting.
23461 field(SCAN,
"Passive")
23462 field(FTVL,
"DOUBLE")
23463 field(INP,
"$(P):LS01:Z8:ALL4.VAL MS")
23468 field(FLNK,
"$(P):LS01:Z8:RANGE4.PROC")
23471 field(INP,
"$(P):LS01:Z8:RANGE4:ARRAY.VAL")
23472 field(SCAN,
"Passive")
23475 field(ONST,
"Range1/Low")
23477 field(TWST,
"Range2/Medium")
23479 field(THST,
"Range3/High")
23481 field(FRST,
"Range4")
23483 field(FVST,
"Range5")
23485 field(FLNK,
"$(P):LS01:Z8:INPUT4:ARRAY.PROC")
23489 ## Read the ZONE INPUT setting.
23492 field(SCAN,
"Passive")
23493 field(FTVL,
"DOUBLE")
23494 field(INP,
"$(P):LS01:Z8:ALL4.VAL MS")
23499 field(FLNK,
"$(P):LS01:Z8:INPUT4.PROC")
23502 field(INP,
"$(P):LS01:Z8:INPUT4:ARRAY.VAL")
23503 field(SCAN,
"Passive")
23504 field(ZRST,
"None")
23506 field(ONST,
"Input A")
23508 field(TWST,
"Input B")
23510 field(THST,
"Input C")
23512 field(FRST,
"Input D")
23514 field(FVST,
"Input D2")
23516 field(SXST,
"Input D3")
23518 field(SVST,
"Input D4")
23520 field(EIST,
"Input D5")
23522 field(FLNK,
"$(P):LS01:Z8:RATE4:ARRAY.PROC")
23526 ## Read the ZONE RATE setting.
23529 field(SCAN,
"Passive")
23530 field(FTVL,
"DOUBLE")
23531 field(INP,
"$(P):LS01:Z8:ALL4.VAL MS")
23536 field(FLNK,
"$(P):LS01:Z8:RATE4.PROC")
23539 field(SCAN,
"Passive")
23540 field(INP,
"$(P):LS01:Z8:RATE4:ARRAY.VAL MS")
23542 field(FLNK,
"$(P):LS01:Z8:INITCALC4.PROC")
23545 ##############################################################
23547 ## Populate the write records below with the current values.
23548 ## Only do this once at startup.
23550 ###############################################################
23556 field(DOPT,
"Use OCAL")
23557 field(OOPT,
"When Zero")
23559 field(OUT,
"$(P):LS01:Z8:INITUB4.PROC")
23563 field(OMSL,
"closed_loop")
23564 field(DOL,
"$(P):LS01:Z8:UB4.VAL")
23565 field(OUTA,
"$(P):LS01:Z8:UB_S4.VAL PP")
23566 field(FLNK,
"$(P):LS01:Z8:INITP4.PROC")
23569 field(OMSL,
"closed_loop")
23570 field(DOL,
"$(P):LS01:Z8:P4.VAL")
23571 field(OUTA,
"$(P):LS01:Z8:P_S4.VAL PP")
23572 field(FLNK,
"$(P):LS01:Z8:INITI4.PROC")
23575 field(OMSL,
"closed_loop")
23576 field(DOL,
"$(P):LS01:Z8:I4.VAL")
23577 field(OUTA,
"$(P):LS01:Z8:I_S4.VAL PP")
23578 field(FLNK,
"$(P):LS01:Z8:INITD4.PROC")
23581 field(OMSL,
"closed_loop")
23582 field(DOL,
"$(P):LS01:Z8:D4.VAL")
23583 field(OUTA,
"$(P):LS01:Z8:D_S4.VAL PP")
23584 field(FLNK,
"$(P):LS01:Z8:INITMOUT4.PROC")
23587 field(OMSL,
"closed_loop")
23588 field(DOL,
"$(P):LS01:Z8:MOUT4.VAL")
23589 field(OUTA,
"$(P):LS01:Z8:MOUT_S4.VAL PP")
23590 field(FLNK,
"$(P):LS01:Z8:INITRANGE4.PROC")
23593 field(OMSL,
"closed_loop")
23594 field(DOL,
"$(P):LS01:Z8:RANGE4.VAL")
23595 field(OUTA,
"$(P):LS01:Z8:RANGE_S4.VAL PP")
23596 field(FLNK,
"$(P):LS01:Z8:INITINPUT4.PROC")
23599 field(OMSL,
"closed_loop")
23600 field(DOL,
"$(P):LS01:Z8:INPUT4.VAL")
23601 field(OUTA,
"$(P):LS01:Z8:INPUT_S4.VAL PP")
23602 field(FLNK,
"$(P):LS01:Z8:INITRATE4.PROC")
23605 field(OMSL,
"closed_loop")
23606 field(DOL,
"$(P):LS01:Z8:RATE4.VAL")
23607 field(OUTA,
"$(P):LS01:Z8:RATE_S4.VAL PP")
23608 field(FLNK,
"$(P):LS01:Z8:INITCOUNT4.PROC")
23613 field(OUTA,
"$(P):LS01:Z8:INITCALC4.A")
23618 #############################################
23619 # Write records. There is a calcout record to
23620 # do the actual write.
23621 #############################################
23624 ## Set the ZONE upper boundary setting.
23627 field(SCAN,
"Passive")
23629 field(SDIS,
"$(P):LS01:DISABLE")
23633 ## Set the ZONE P setting.
23636 field(SCAN,
"Passive")
23638 field(SDIS,
"$(P):LS01:DISABLE")
23642 ## Set the ZONE I setting.
23645 field(SCAN,
"Passive")
23647 field(SDIS,
"$(P):LS01:DISABLE")
23651 ## Set the ZONE D setting.
23654 field(SCAN,
"Passive")
23656 field(SDIS,
"$(P):LS01:DISABLE")
23660 ## Set the ZONE MOUT setting.
23663 field(SCAN,
"Passive")
23665 field(SDIS,
"$(P):LS01:DISABLE")
23669 ## Set the ZONE RANGE setting.
23672 field(SCAN,
"Passive")
23675 field(ONST,
"Range1/Low")
23677 field(TWST,
"Range2/Medium")
23679 field(THST,
"Range3/High")
23681 field(FRST,
"Range4")
23683 field(FVST,
"Range5")
23685 field(SDIS,
"$(P):LS01:DISABLE")
23689 ## Set the ZONE INPUT setting.
23692 field(ZRST,
"None")
23694 field(ONST,
"Input A")
23696 field(TWST,
"Input B")
23698 field(THST,
"Input C")
23700 field(FRST,
"Input D")
23702 field(FVST,
"Input D2")
23704 field(SXST,
"Input D3")
23706 field(SVST,
"Input D4")
23708 field(EIST,
"Input D5")
23710 field(SDIS,
"$(P):LS01:DISABLE")
23714 ## Set the ZONE RATE setting.
23717 field(SCAN,
"Passive")
23719 field(SDIS,
"$(P):LS01:DISABLE")
23723 ## Record to write the ZONE parameters.
23726 field(INPA,
"$(P):LS01:Z8:UB_S4")
23727 field(INPB,
"$(P):LS01:Z8:P_S4")
23728 field(INPC,
"$(P):LS01:Z8:I_S4")
23729 field(INPD,
"$(P):LS01:Z8:D_S4")
23730 field(INPE,
"$(P):LS01:Z8:MOUT_S4")
23731 field(INPF,
"$(P):LS01:Z8:RANGE_S4")
23732 field(INPG,
"$(P):LS01:Z8:INPUT_S4")
23733 field(INPH,
"$(P):LS01:Z8:RATE_S4")
23735 field(DTYP,
"stream")
23736 field(OUT,
"@ls336.proto setZONE(4,8) L0 0")
23737 field(SDIS,
"$(P):LS01:DISABLE")
23738 field(FLNK,
"$(P):LS01:Z8:ALL4.PROC")
23750 record(mbbi,
"$(P):LS01:Z8:RANGE4") {
23759 record(mbbo, "$(P):LS01:Z8:RANGE_S4") {
23773 # This just includes the zone file and overrides the RANGE options
23774 # for the analog control channels.
23776 #######################################
23778 # Template to support reading and setting
23779 # controller ZONE parameters. It reads the ZONE
23780 # parameters into an array, then uses subArrays to
23781 # extract each parameter.
23783 # This template is used by the output template
23784 # and it needs the following macros:
23786 # ZONE: zone number
23787 # OUT: output number
23789 #######################################
23792 ## Read the ZONE setting into an array (8 values)
23795 field(DTYP,
"stream")
23796 field(SDIS,
"$(P):LS01:DISABLE_POLL")
23797 field(INP,
"@ls336.proto getZONE(4,9) L0 0")
23798 field(SCAN,
"Passive")
23800 field(FTVL,
"DOUBLE")
23802 field(FLNK,
"$(P):LS01:Z9:UB4:ARRAY.PROC")
23806 ## Read the ZONE upper boundary setting.
23809 field(SCAN,
"Passive")
23810 field(FTVL,
"DOUBLE")
23811 field(INP,
"$(P):LS01:Z9:ALL4.VAL MS")
23816 field(FLNK,
"$(P):LS01:Z9:UB4.PROC")
23819 field(SCAN,
"Passive")
23820 field(INP,
"$(P):LS01:Z9:UB4:ARRAY.VAL MS")
23822 field(FLNK,
"$(P):LS01:Z9:P4:ARRAY.PROC")
23826 ## Read the ZONE P setting.
23829 field(SCAN,
"Passive")
23830 field(FTVL,
"DOUBLE")
23831 field(INP,
"$(P):LS01:Z9:ALL4.VAL MS")
23836 field(FLNK,
"$(P):LS01:Z9:P4.PROC")
23839 field(SCAN,
"Passive")
23840 field(INP,
"$(P):LS01:Z9:P4:ARRAY.VAL MS")
23842 field(FLNK,
"$(P):LS01:Z9:I4:ARRAY.PROC")
23846 ## Read the ZONE I setting.
23849 field(SCAN,
"Passive")
23850 field(FTVL,
"DOUBLE")
23851 field(INP,
"$(P):LS01:Z9:ALL4.VAL MS")
23856 field(FLNK,
"$(P):LS01:Z9:I4.PROC")
23859 field(SCAN,
"Passive")
23860 field(INP,
"$(P):LS01:Z9:I4:ARRAY.VAL MS")
23862 field(FLNK,
"$(P):LS01:Z9:D4:ARRAY.PROC")
23866 ## Read the ZONE D setting.
23869 field(SCAN,
"Passive")
23870 field(FTVL,
"DOUBLE")
23871 field(INP,
"$(P):LS01:Z9:ALL4.VAL MS")
23876 field(FLNK,
"$(P):LS01:Z9:D4.PROC")
23879 field(SCAN,
"Passive")
23880 field(INP,
"$(P):LS01:Z9:D4:ARRAY.VAL MS")
23882 field(FLNK,
"$(P):LS01:Z9:MOUT4:ARRAY.PROC")
23886 ## Read the ZONE MOUT setting.
23889 field(SCAN,
"Passive")
23890 field(FTVL,
"DOUBLE")
23891 field(INP,
"$(P):LS01:Z9:ALL4.VAL MS")
23896 field(FLNK,
"$(P):LS01:Z9:MOUT4.PROC")
23899 field(SCAN,
"Passive")
23900 field(INP,
"$(P):LS01:Z9:MOUT4:ARRAY.VAL MS")
23902 field(FLNK,
"$(P):LS01:Z9:RANGE4:ARRAY.PROC")
23906 ## Read the ZONE RANGE setting.
23909 field(SCAN,
"Passive")
23910 field(FTVL,
"DOUBLE")
23911 field(INP,
"$(P):LS01:Z9:ALL4.VAL MS")
23916 field(FLNK,
"$(P):LS01:Z9:RANGE4.PROC")
23919 field(INP,
"$(P):LS01:Z9:RANGE4:ARRAY.VAL")
23920 field(SCAN,
"Passive")
23923 field(ONST,
"Range1/Low")
23925 field(TWST,
"Range2/Medium")
23927 field(THST,
"Range3/High")
23929 field(FRST,
"Range4")
23931 field(FVST,
"Range5")
23933 field(FLNK,
"$(P):LS01:Z9:INPUT4:ARRAY.PROC")
23937 ## Read the ZONE INPUT setting.
23940 field(SCAN,
"Passive")
23941 field(FTVL,
"DOUBLE")
23942 field(INP,
"$(P):LS01:Z9:ALL4.VAL MS")
23947 field(FLNK,
"$(P):LS01:Z9:INPUT4.PROC")
23950 field(INP,
"$(P):LS01:Z9:INPUT4:ARRAY.VAL")
23951 field(SCAN,
"Passive")
23952 field(ZRST,
"None")
23954 field(ONST,
"Input A")
23956 field(TWST,
"Input B")
23958 field(THST,
"Input C")
23960 field(FRST,
"Input D")
23962 field(FVST,
"Input D2")
23964 field(SXST,
"Input D3")
23966 field(SVST,
"Input D4")
23968 field(EIST,
"Input D5")
23970 field(FLNK,
"$(P):LS01:Z9:RATE4:ARRAY.PROC")
23974 ## Read the ZONE RATE setting.
23977 field(SCAN,
"Passive")
23978 field(FTVL,
"DOUBLE")
23979 field(INP,
"$(P):LS01:Z9:ALL4.VAL MS")
23984 field(FLNK,
"$(P):LS01:Z9:RATE4.PROC")
23987 field(SCAN,
"Passive")
23988 field(INP,
"$(P):LS01:Z9:RATE4:ARRAY.VAL MS")
23990 field(FLNK,
"$(P):LS01:Z9:INITCALC4.PROC")
23993 ##############################################################
23995 ## Populate the write records below with the current values.
23996 ## Only do this once at startup.
23998 ###############################################################
24004 field(DOPT,
"Use OCAL")
24005 field(OOPT,
"When Zero")
24007 field(OUT,
"$(P):LS01:Z9:INITUB4.PROC")
24011 field(OMSL,
"closed_loop")
24012 field(DOL,
"$(P):LS01:Z9:UB4.VAL")
24013 field(OUTA,
"$(P):LS01:Z9:UB_S4.VAL PP")
24014 field(FLNK,
"$(P):LS01:Z9:INITP4.PROC")
24017 field(OMSL,
"closed_loop")
24018 field(DOL,
"$(P):LS01:Z9:P4.VAL")
24019 field(OUTA,
"$(P):LS01:Z9:P_S4.VAL PP")
24020 field(FLNK,
"$(P):LS01:Z9:INITI4.PROC")
24023 field(OMSL,
"closed_loop")
24024 field(DOL,
"$(P):LS01:Z9:I4.VAL")
24025 field(OUTA,
"$(P):LS01:Z9:I_S4.VAL PP")
24026 field(FLNK,
"$(P):LS01:Z9:INITD4.PROC")
24029 field(OMSL,
"closed_loop")
24030 field(DOL,
"$(P):LS01:Z9:D4.VAL")
24031 field(OUTA,
"$(P):LS01:Z9:D_S4.VAL PP")
24032 field(FLNK,
"$(P):LS01:Z9:INITMOUT4.PROC")
24035 field(OMSL,
"closed_loop")
24036 field(DOL,
"$(P):LS01:Z9:MOUT4.VAL")
24037 field(OUTA,
"$(P):LS01:Z9:MOUT_S4.VAL PP")
24038 field(FLNK,
"$(P):LS01:Z9:INITRANGE4.PROC")
24041 field(OMSL,
"closed_loop")
24042 field(DOL,
"$(P):LS01:Z9:RANGE4.VAL")
24043 field(OUTA,
"$(P):LS01:Z9:RANGE_S4.VAL PP")
24044 field(FLNK,
"$(P):LS01:Z9:INITINPUT4.PROC")
24047 field(OMSL,
"closed_loop")
24048 field(DOL,
"$(P):LS01:Z9:INPUT4.VAL")
24049 field(OUTA,
"$(P):LS01:Z9:INPUT_S4.VAL PP")
24050 field(FLNK,
"$(P):LS01:Z9:INITRATE4.PROC")
24053 field(OMSL,
"closed_loop")
24054 field(DOL,
"$(P):LS01:Z9:RATE4.VAL")
24055 field(OUTA,
"$(P):LS01:Z9:RATE_S4.VAL PP")
24056 field(FLNK,
"$(P):LS01:Z9:INITCOUNT4.PROC")
24061 field(OUTA,
"$(P):LS01:Z9:INITCALC4.A")
24066 #############################################
24067 # Write records. There is a calcout record to
24068 # do the actual write.
24069 #############################################
24072 ## Set the ZONE upper boundary setting.
24075 field(SCAN,
"Passive")
24077 field(SDIS,
"$(P):LS01:DISABLE")
24081 ## Set the ZONE P setting.
24084 field(SCAN,
"Passive")
24086 field(SDIS,
"$(P):LS01:DISABLE")
24090 ## Set the ZONE I setting.
24093 field(SCAN,
"Passive")
24095 field(SDIS,
"$(P):LS01:DISABLE")
24099 ## Set the ZONE D setting.
24102 field(SCAN,
"Passive")
24104 field(SDIS,
"$(P):LS01:DISABLE")
24108 ## Set the ZONE MOUT setting.
24111 field(SCAN,
"Passive")
24113 field(SDIS,
"$(P):LS01:DISABLE")
24117 ## Set the ZONE RANGE setting.
24120 field(SCAN,
"Passive")
24123 field(ONST,
"Range1/Low")
24125 field(TWST,
"Range2/Medium")
24127 field(THST,
"Range3/High")
24129 field(FRST,
"Range4")
24131 field(FVST,
"Range5")
24133 field(SDIS,
"$(P):LS01:DISABLE")
24137 ## Set the ZONE INPUT setting.
24140 field(ZRST,
"None")
24142 field(ONST,
"Input A")
24144 field(TWST,
"Input B")
24146 field(THST,
"Input C")
24148 field(FRST,
"Input D")
24150 field(FVST,
"Input D2")
24152 field(SXST,
"Input D3")
24154 field(SVST,
"Input D4")
24156 field(EIST,
"Input D5")
24158 field(SDIS,
"$(P):LS01:DISABLE")
24162 ## Set the ZONE RATE setting.
24165 field(SCAN,
"Passive")
24167 field(SDIS,
"$(P):LS01:DISABLE")
24171 ## Record to write the ZONE parameters.
24174 field(INPA,
"$(P):LS01:Z9:UB_S4")
24175 field(INPB,
"$(P):LS01:Z9:P_S4")
24176 field(INPC,
"$(P):LS01:Z9:I_S4")
24177 field(INPD,
"$(P):LS01:Z9:D_S4")
24178 field(INPE,
"$(P):LS01:Z9:MOUT_S4")
24179 field(INPF,
"$(P):LS01:Z9:RANGE_S4")
24180 field(INPG,
"$(P):LS01:Z9:INPUT_S4")
24181 field(INPH,
"$(P):LS01:Z9:RATE_S4")
24183 field(DTYP,
"stream")
24184 field(OUT,
"@ls336.proto setZONE(4,9) L0 0")
24185 field(SDIS,
"$(P):LS01:DISABLE")
24186 field(FLNK,
"$(P):LS01:Z9:ALL4.PROC")
24198 record(mbbi,
"$(P):LS01:Z9:RANGE4") {
24207 record(mbbo, "$(P):LS01:Z9:RANGE_S4") {
24221 # This just includes the zone file and overrides the RANGE options
24222 # for the analog control channels.
24224 #######################################
24226 # Template to support reading and setting
24227 # controller ZONE parameters. It reads the ZONE
24228 # parameters into an array, then uses subArrays to
24229 # extract each parameter.
24231 # This template is used by the output template
24232 # and it needs the following macros:
24234 # ZONE: zone number
24235 # OUT: output number
24237 #######################################
24240 ## Read the ZONE setting into an array (8 values)
24243 field(DTYP,
"stream")
24244 field(SDIS,
"$(P):LS01:DISABLE_POLL")
24245 field(INP,
"@ls336.proto getZONE(4,10) L0 0")
24246 field(SCAN,
"Passive")
24248 field(FTVL,
"DOUBLE")
24250 field(FLNK,
"$(P):LS01:Z10:UB4:ARRAY.PROC")
24254 ## Read the ZONE upper boundary setting.
24257 field(SCAN,
"Passive")
24258 field(FTVL,
"DOUBLE")
24259 field(INP,
"$(P):LS01:Z10:ALL4.VAL MS")
24264 field(FLNK,
"$(P):LS01:Z10:UB4.PROC")
24267 field(SCAN,
"Passive")
24268 field(INP,
"$(P):LS01:Z10:UB4:ARRAY.VAL MS")
24270 field(FLNK,
"$(P):LS01:Z10:P4:ARRAY.PROC")
24274 ## Read the ZONE P setting.
24277 field(SCAN,
"Passive")
24278 field(FTVL,
"DOUBLE")
24279 field(INP,
"$(P):LS01:Z10:ALL4.VAL MS")
24284 field(FLNK,
"$(P):LS01:Z10:P4.PROC")
24287 field(SCAN,
"Passive")
24288 field(INP,
"$(P):LS01:Z10:P4:ARRAY.VAL MS")
24290 field(FLNK,
"$(P):LS01:Z10:I4:ARRAY.PROC")
24294 ## Read the ZONE I setting.
24297 field(SCAN,
"Passive")
24298 field(FTVL,
"DOUBLE")
24299 field(INP,
"$(P):LS01:Z10:ALL4.VAL MS")
24304 field(FLNK,
"$(P):LS01:Z10:I4.PROC")
24307 field(SCAN,
"Passive")
24308 field(INP,
"$(P):LS01:Z10:I4:ARRAY.VAL MS")
24310 field(FLNK,
"$(P):LS01:Z10:D4:ARRAY.PROC")
24314 ## Read the ZONE D setting.
24317 field(SCAN,
"Passive")
24318 field(FTVL,
"DOUBLE")
24319 field(INP,
"$(P):LS01:Z10:ALL4.VAL MS")
24324 field(FLNK,
"$(P):LS01:Z10:D4.PROC")
24327 field(SCAN,
"Passive")
24328 field(INP,
"$(P):LS01:Z10:D4:ARRAY.VAL MS")
24330 field(FLNK,
"$(P):LS01:Z10:MOUT4:ARRAY.PROC")
24334 ## Read the ZONE MOUT setting.
24337 field(SCAN,
"Passive")
24338 field(FTVL,
"DOUBLE")
24339 field(INP,
"$(P):LS01:Z10:ALL4.VAL MS")
24344 field(FLNK,
"$(P):LS01:Z10:MOUT4.PROC")
24347 field(SCAN,
"Passive")
24348 field(INP,
"$(P):LS01:Z10:MOUT4:ARRAY.VAL MS")
24350 field(FLNK,
"$(P):LS01:Z10:RANGE4:ARRAY.PROC")
24354 ## Read the ZONE RANGE setting.
24357 field(SCAN,
"Passive")
24358 field(FTVL,
"DOUBLE")
24359 field(INP,
"$(P):LS01:Z10:ALL4.VAL MS")
24364 field(FLNK,
"$(P):LS01:Z10:RANGE4.PROC")
24367 field(INP,
"$(P):LS01:Z10:RANGE4:ARRAY.VAL")
24368 field(SCAN,
"Passive")
24371 field(ONST,
"Range1/Low")
24373 field(TWST,
"Range2/Medium")
24375 field(THST,
"Range3/High")
24377 field(FRST,
"Range4")
24379 field(FVST,
"Range5")
24381 field(FLNK,
"$(P):LS01:Z10:INPUT4:ARRAY.PROC")
24385 ## Read the ZONE INPUT setting.
24388 field(SCAN,
"Passive")
24389 field(FTVL,
"DOUBLE")
24390 field(INP,
"$(P):LS01:Z10:ALL4.VAL MS")
24395 field(FLNK,
"$(P):LS01:Z10:INPUT4.PROC")
24398 field(INP,
"$(P):LS01:Z10:INPUT4:ARRAY.VAL")
24399 field(SCAN,
"Passive")
24400 field(ZRST,
"None")
24402 field(ONST,
"Input A")
24404 field(TWST,
"Input B")
24406 field(THST,
"Input C")
24408 field(FRST,
"Input D")
24410 field(FVST,
"Input D2")
24412 field(SXST,
"Input D3")
24414 field(SVST,
"Input D4")
24416 field(EIST,
"Input D5")
24418 field(FLNK,
"$(P):LS01:Z10:RATE4:ARRAY.PROC")
24422 ## Read the ZONE RATE setting.
24425 field(SCAN,
"Passive")
24426 field(FTVL,
"DOUBLE")
24427 field(INP,
"$(P):LS01:Z10:ALL4.VAL MS")
24432 field(FLNK,
"$(P):LS01:Z10:RATE4.PROC")
24435 field(SCAN,
"Passive")
24436 field(INP,
"$(P):LS01:Z10:RATE4:ARRAY.VAL MS")
24438 field(FLNK,
"$(P):LS01:Z10:INITCALC4.PROC")
24441 ##############################################################
24443 ## Populate the write records below with the current values.
24444 ## Only do this once at startup.
24446 ###############################################################
24452 field(DOPT,
"Use OCAL")
24453 field(OOPT,
"When Zero")
24455 field(OUT,
"$(P):LS01:Z10:INITUB4.PROC")
24459 field(OMSL,
"closed_loop")
24460 field(DOL,
"$(P):LS01:Z10:UB4.VAL")
24461 field(OUTA,
"$(P):LS01:Z10:UB_S4.VAL PP")
24462 field(FLNK,
"$(P):LS01:Z10:INITP4.PROC")
24465 field(OMSL,
"closed_loop")
24466 field(DOL,
"$(P):LS01:Z10:P4.VAL")
24467 field(OUTA,
"$(P):LS01:Z10:P_S4.VAL PP")
24468 field(FLNK,
"$(P):LS01:Z10:INITI4.PROC")
24471 field(OMSL,
"closed_loop")
24472 field(DOL,
"$(P):LS01:Z10:I4.VAL")
24473 field(OUTA,
"$(P):LS01:Z10:I_S4.VAL PP")
24474 field(FLNK,
"$(P):LS01:Z10:INITD4.PROC")
24477 field(OMSL,
"closed_loop")
24478 field(DOL,
"$(P):LS01:Z10:D4.VAL")
24479 field(OUTA,
"$(P):LS01:Z10:D_S4.VAL PP")
24480 field(FLNK,
"$(P):LS01:Z10:INITMOUT4.PROC")
24483 field(OMSL,
"closed_loop")
24484 field(DOL,
"$(P):LS01:Z10:MOUT4.VAL")
24485 field(OUTA,
"$(P):LS01:Z10:MOUT_S4.VAL PP")
24486 field(FLNK,
"$(P):LS01:Z10:INITRANGE4.PROC")
24489 field(OMSL,
"closed_loop")
24490 field(DOL,
"$(P):LS01:Z10:RANGE4.VAL")
24491 field(OUTA,
"$(P):LS01:Z10:RANGE_S4.VAL PP")
24492 field(FLNK,
"$(P):LS01:Z10:INITINPUT4.PROC")
24495 field(OMSL,
"closed_loop")
24496 field(DOL,
"$(P):LS01:Z10:INPUT4.VAL")
24497 field(OUTA,
"$(P):LS01:Z10:INPUT_S4.VAL PP")
24498 field(FLNK,
"$(P):LS01:Z10:INITRATE4.PROC")
24501 field(OMSL,
"closed_loop")
24502 field(DOL,
"$(P):LS01:Z10:RATE4.VAL")
24503 field(OUTA,
"$(P):LS01:Z10:RATE_S4.VAL PP")
24504 field(FLNK,
"$(P):LS01:Z10:INITCOUNT4.PROC")
24509 field(OUTA,
"$(P):LS01:Z10:INITCALC4.A")
24514 #############################################
24515 # Write records. There is a calcout record to
24516 # do the actual write.
24517 #############################################
24520 ## Set the ZONE upper boundary setting.
24523 field(SCAN,
"Passive")
24525 field(SDIS,
"$(P):LS01:DISABLE")
24529 ## Set the ZONE P setting.
24532 field(SCAN,
"Passive")
24534 field(SDIS,
"$(P):LS01:DISABLE")
24538 ## Set the ZONE I setting.
24541 field(SCAN,
"Passive")
24543 field(SDIS,
"$(P):LS01:DISABLE")
24547 ## Set the ZONE D setting.
24550 field(SCAN,
"Passive")
24552 field(SDIS,
"$(P):LS01:DISABLE")
24556 ## Set the ZONE MOUT setting.
24559 field(SCAN,
"Passive")
24561 field(SDIS,
"$(P):LS01:DISABLE")
24565 ## Set the ZONE RANGE setting.
24568 field(SCAN,
"Passive")
24571 field(ONST,
"Range1/Low")
24573 field(TWST,
"Range2/Medium")
24575 field(THST,
"Range3/High")
24577 field(FRST,
"Range4")
24579 field(FVST,
"Range5")
24581 field(SDIS,
"$(P):LS01:DISABLE")
24585 ## Set the ZONE INPUT setting.
24588 field(ZRST,
"None")
24590 field(ONST,
"Input A")
24592 field(TWST,
"Input B")
24594 field(THST,
"Input C")
24596 field(FRST,
"Input D")
24598 field(FVST,
"Input D2")
24600 field(SXST,
"Input D3")
24602 field(SVST,
"Input D4")
24604 field(EIST,
"Input D5")
24606 field(SDIS,
"$(P):LS01:DISABLE")
24610 ## Set the ZONE RATE setting.
24613 field(SCAN,
"Passive")
24615 field(SDIS,
"$(P):LS01:DISABLE")
24619 ## Record to write the ZONE parameters.
24622 field(INPA,
"$(P):LS01:Z10:UB_S4")
24623 field(INPB,
"$(P):LS01:Z10:P_S4")
24624 field(INPC,
"$(P):LS01:Z10:I_S4")
24625 field(INPD,
"$(P):LS01:Z10:D_S4")
24626 field(INPE,
"$(P):LS01:Z10:MOUT_S4")
24627 field(INPF,
"$(P):LS01:Z10:RANGE_S4")
24628 field(INPG,
"$(P):LS01:Z10:INPUT_S4")
24629 field(INPH,
"$(P):LS01:Z10:RATE_S4")
24631 field(DTYP,
"stream")
24632 field(OUT,
"@ls336.proto setZONE(4,10) L0 0")
24633 field(SDIS,
"$(P):LS01:DISABLE")
24634 field(FLNK,
"$(P):LS01:Z10:ALL4.PROC")
24646 record(mbbi,
"$(P):LS01:Z10:RANGE4") {
24655 record(mbbo, "$(P):LS01:Z10:RANGE_S4") {
24670 # This just includes the zone file and overrides the RANGE options
24671 # for the analog control channels.
24673 #######################################
24675 # Template to support reading and setting
24676 # controller ZONE parameters. It reads the ZONE
24677 # parameters into an array, then uses subArrays to
24678 # extract each parameter.
24680 # This template is used by the output template
24681 # and it needs the following macros:
24683 # ZONE: zone number
24684 # OUT: output number
24686 #######################################
24689 ## Read the ZONE setting into an array (8 values)
24691 record(waveform,
"$(P):LS01:Z10:ALL3") {
24692 field(DTYP,
"stream")
24693 field(SDIS, "$(P):LS01:DISABLE_POLL")
24694 field(INP, "@ls336.proto getZONE(3,10) L0 0")
24695 field(SCAN, "Passive")
24697 field(FTVL, "DOUBLE")
24699 field(FLNK, "$(P):LS01:Z10:UB3:ARRAY.PROC")
24703 ## Read the ZONE upper boundary setting.
24705 record(subArray,
"$(P):LS01:Z10:UB3:ARRAY") {
24706 field(SCAN,
"Passive")
24707 field(FTVL, "DOUBLE")
24708 field(INP, "$(P):LS01:Z10:ALL3.VAL MS")
24713 field(FLNK, "$(P):LS01:Z10:UB3.PROC")
24715 record(ai, "$(P):LS01:Z10:UB3") {
24716 field(SCAN,
"Passive")
24717 field(INP, "$(P):LS01:Z10:UB3:ARRAY.VAL MS")
24719 field(FLNK, "$(P):LS01:Z10:P3:ARRAY.PROC")
24723 ## Read the ZONE P setting.
24725 record(subArray,
"$(P):LS01:Z10:P3:ARRAY") {
24726 field(SCAN,
"Passive")
24727 field(FTVL, "DOUBLE")
24728 field(INP, "$(P):LS01:Z10:ALL3.VAL MS")
24733 field(FLNK, "$(P):LS01:Z10:P3.PROC")
24735 record(ai, "$(P):LS01:Z10:P3") {
24736 field(SCAN,
"Passive")
24737 field(INP, "$(P):LS01:Z10:P3:ARRAY.VAL MS")
24739 field(FLNK, "$(P):LS01:Z10:I3:ARRAY.PROC")
24743 ## Read the ZONE I setting.
24745 record(subArray,
"$(P):LS01:Z10:I3:ARRAY") {
24746 field(SCAN,
"Passive")
24747 field(FTVL, "DOUBLE")
24748 field(INP, "$(P):LS01:Z10:ALL3.VAL MS")
24753 field(FLNK, "$(P):LS01:Z10:I3.PROC")
24755 record(ai, "$(P):LS01:Z10:I3") {
24756 field(SCAN,
"Passive")
24757 field(INP, "$(P):LS01:Z10:I3:ARRAY.VAL MS")
24759 field(FLNK, "$(P):LS01:Z10:D3:ARRAY.PROC")
24763 ## Read the ZONE D setting.
24765 record(subArray,
"$(P):LS01:Z10:D3:ARRAY") {
24766 field(SCAN,
"Passive")
24767 field(FTVL, "DOUBLE")
24768 field(INP, "$(P):LS01:Z10:ALL3.VAL MS")
24773 field(FLNK, "$(P):LS01:Z10:D3.PROC")
24775 record(ai, "$(P):LS01:Z10:D3") {
24776 field(SCAN,
"Passive")
24777 field(INP, "$(P):LS01:Z10:D3:ARRAY.VAL MS")
24779 field(FLNK, "$(P):LS01:Z10:MOUT3:ARRAY.PROC")
24783 ## Read the ZONE MOUT setting.
24785 record(subArray,
"$(P):LS01:Z10:MOUT3:ARRAY") {
24786 field(SCAN,
"Passive")
24787 field(FTVL, "DOUBLE")
24788 field(INP, "$(P):LS01:Z10:ALL3.VAL MS")
24793 field(FLNK, "$(P):LS01:Z10:MOUT3.PROC")
24795 record(ai, "$(P):LS01:Z10:MOUT3") {
24796 field(SCAN,
"Passive")
24797 field(INP, "$(P):LS01:Z10:MOUT3:ARRAY.VAL MS")
24799 field(FLNK, "$(P):LS01:Z10:RANGE3:ARRAY.PROC")
24803 ## Read the ZONE RANGE setting.
24805 record(subArray,
"$(P):LS01:Z10:RANGE3:ARRAY") {
24806 field(SCAN,
"Passive")
24807 field(FTVL, "DOUBLE")
24808 field(INP, "$(P):LS01:Z10:ALL3.VAL MS")
24813 field(FLNK, "$(P):LS01:Z10:RANGE3.PROC")
24815 record(mbbi, "$(P):LS01:Z10:RANGE3") {
24816 field(INP,
"$(P):LS01:Z10:RANGE3:ARRAY.VAL")
24817 field(SCAN, "Passive")
24820 field(ONST, "Range1/Low")
24822 field(TWST, "Range2/Medium")
24824 field(THST, "Range3/High")
24826 field(FRST, "Range4")
24828 field(FVST, "Range5")
24830 field(FLNK, "$(P):LS01:Z10:INPUT3:ARRAY.PROC")
24834 ## Read the ZONE INPUT setting.
24836 record(subArray,
"$(P):LS01:Z10:INPUT3:ARRAY") {
24837 field(SCAN,
"Passive")
24838 field(FTVL, "DOUBLE")
24839 field(INP, "$(P):LS01:Z10:ALL3.VAL MS")
24844 field(FLNK, "$(P):LS01:Z10:INPUT3.PROC")
24846 record(mbbi, "$(P):LS01:Z10:INPUT3") {
24847 field(INP,
"$(P):LS01:Z10:INPUT3:ARRAY.VAL")
24848 field(SCAN, "Passive")
24849 field(ZRST, "None")
24851 field(ONST, "Input A")
24853 field(TWST, "Input B")
24855 field(THST, "Input C")
24857 field(FRST, "Input D")
24859 field(FVST, "Input D2")
24861 field(SXST, "Input D3")
24863 field(SVST, "Input D4")
24865 field(EIST, "Input D5")
24867 field(FLNK, "$(P):LS01:Z10:RATE3:ARRAY.PROC")
24871 ## Read the ZONE RATE setting.
24873 record(subArray,
"$(P):LS01:Z10:RATE3:ARRAY") {
24874 field(SCAN,
"Passive")
24875 field(FTVL, "DOUBLE")
24876 field(INP, "$(P):LS01:Z10:ALL3.VAL MS")
24881 field(FLNK, "$(P):LS01:Z10:RATE3.PROC")
24883 record(ai, "$(P):LS01:Z10:RATE3") {
24884 field(SCAN,
"Passive")
24885 field(INP, "$(P):LS01:Z10:RATE3:ARRAY.VAL MS")
24887 field(FLNK, "$(P):LS01:Z10:INITCALC3.PROC")
24890 ##############################################################
24892 ## Populate the write records below with the current values.
24893 ## Only do this once at startup.
24895 ###############################################################
24897 record(calcout,
"$(P):LS01:Z10:INITCALC3") {
24901 field(DOPT, "Use OCAL")
24902 field(OOPT, "When Zero")
24904 field(OUT, "$(P):LS01:Z10:INITUB3.PROC")
24907 record(dfanout, "$(P):LS01:Z10:INITUB3") {
24908 field(OMSL,
"closed_loop")
24909 field(DOL, "$(P):LS01:Z10:UB3.VAL")
24910 field(OUTA, "$(P):LS01:Z10:UB_S3.VAL PP")
24911 field(FLNK, "$(P):LS01:Z10:INITP3.PROC")
24913 record(dfanout, "$(P):LS01:Z10:INITP3") {
24914 field(OMSL,
"closed_loop")
24915 field(DOL, "$(P):LS01:Z10:P3.VAL")
24916 field(OUTA, "$(P):LS01:Z10:P_S3.VAL PP")
24917 field(FLNK, "$(P):LS01:Z10:INITI3.PROC")
24919 record(dfanout, "$(P):LS01:Z10:INITI3") {
24920 field(OMSL,
"closed_loop")
24921 field(DOL, "$(P):LS01:Z10:I3.VAL")
24922 field(OUTA, "$(P):LS01:Z10:I_S3.VAL PP")
24923 field(FLNK, "$(P):LS01:Z10:INITD3.PROC")
24925 record(dfanout, "$(P):LS01:Z10:INITD3") {
24926 field(OMSL,
"closed_loop")
24927 field(DOL, "$(P):LS01:Z10:D3.VAL")
24928 field(OUTA, "$(P):LS01:Z10:D_S3.VAL PP")
24929 field(FLNK, "$(P):LS01:Z10:INITMOUT3.PROC")
24931 record(dfanout, "$(P):LS01:Z10:INITMOUT3") {
24932 field(OMSL,
"closed_loop")
24933 field(DOL, "$(P):LS01:Z10:MOUT3.VAL")
24934 field(OUTA, "$(P):LS01:Z10:MOUT_S3.VAL PP")
24935 field(FLNK, "$(P):LS01:Z10:INITRANGE3.PROC")
24937 record(dfanout, "$(P):LS01:Z10:INITRANGE3") {
24938 field(OMSL,
"closed_loop")
24939 field(DOL, "$(P):LS01:Z10:RANGE3.VAL")
24940 field(OUTA, "$(P):LS01:Z10:RANGE_S3.VAL PP")
24941 field(FLNK, "$(P):LS01:Z10:INITINPUT3.PROC")
24943 record(dfanout, "$(P):LS01:Z10:INITINPUT3") {
24944 field(OMSL,
"closed_loop")
24945 field(DOL, "$(P):LS01:Z10:INPUT3.VAL")
24946 field(OUTA, "$(P):LS01:Z10:INPUT_S3.VAL PP")
24947 field(FLNK, "$(P):LS01:Z10:INITRATE3.PROC")
24949 record(dfanout, "$(P):LS01:Z10:INITRATE3") {
24950 field(OMSL,
"closed_loop")
24951 field(DOL, "$(P):LS01:Z10:RATE3.VAL")
24952 field(OUTA, "$(P):LS01:Z10:RATE_S3.VAL PP")
24953 field(FLNK, "$(P):LS01:Z10:INITCOUNT3.PROC")
24956 record(dfanout, "$(P):LS01:Z10:INITCOUNT3") {
24958 field(OUTA, "$(P):LS01:Z10:INITCALC3.A")
24963 #############################################
24964 # Write records. There is a calcout record to
24965 # do the actual write.
24966 #############################################
24969 ## Set the ZONE upper boundary setting.
24971 record(ao,
"$(P):LS01:Z10:UB_S3") {
24972 field(SCAN,
"Passive")
24974 field(SDIS, "$(P):LS01:DISABLE")
24978 ## Set the ZONE P setting.
24980 record(ao,
"$(P):LS01:Z10:P_S3") {
24981 field(SCAN,
"Passive")
24983 field(SDIS, "$(P):LS01:DISABLE")
24987 ## Set the ZONE I setting.
24989 record(ao,
"$(P):LS01:Z10:I_S3") {
24990 field(SCAN,
"Passive")
24992 field(SDIS, "$(P):LS01:DISABLE")
24996 ## Set the ZONE D setting.
24998 record(ao,
"$(P):LS01:Z10:D_S3") {
24999 field(SCAN,
"Passive")
25001 field(SDIS, "$(P):LS01:DISABLE")
25005 ## Set the ZONE MOUT setting.
25007 record(ao,
"$(P):LS01:Z10:MOUT_S3") {
25008 field(SCAN,
"Passive")
25010 field(SDIS, "$(P):LS01:DISABLE")
25014 ## Set the ZONE RANGE setting.
25016 record(mbbo,
"$(P):LS01:Z10:RANGE_S3") {
25017 field(SCAN,
"Passive")
25020 field(ONST, "Range1/Low")
25022 field(TWST, "Range2/Medium")
25024 field(THST, "Range3/High")
25026 field(FRST, "Range4")
25028 field(FVST, "Range5")
25030 field(SDIS, "$(P):LS01:DISABLE")
25034 ## Set the ZONE INPUT setting.
25036 record(mbbo,
"$(P):LS01:Z10:INPUT_S3") {
25037 field(ZRST,
"None")
25039 field(ONST, "Input A")
25041 field(TWST, "Input B")
25043 field(THST, "Input C")
25045 field(FRST, "Input D")
25047 field(FVST, "Input D2")
25049 field(SXST, "Input D3")
25051 field(SVST, "Input D4")
25053 field(EIST, "Input D5")
25055 field(SDIS, "$(P):LS01:DISABLE")
25059 ## Set the ZONE RATE setting.
25061 record(ao,
"$(P):LS01:Z10:RATE_S3") {
25062 field(SCAN,
"Passive")
25064 field(SDIS, "$(P):LS01:DISABLE")
25068 ## Record to write the ZONE parameters.
25070 record(calcout,
"$(P):LS01:Z10:SET3") {
25071 field(INPA,
"$(P):LS01:Z10:UB_S3")
25072 field(INPB, "$(P):LS01:Z10:P_S3")
25073 field(INPC, "$(P):LS01:Z10:I_S3")
25074 field(INPD, "$(P):LS01:Z10:D_S3")
25075 field(INPE, "$(P):LS01:Z10:MOUT_S3")
25076 field(INPF, "$(P):LS01:Z10:RANGE_S3")
25077 field(INPG, "$(P):LS01:Z10:INPUT_S3")
25078 field(INPH, "$(P):LS01:Z10:RATE_S3")
25080 field(DTYP, "stream")
25081 field(OUT, "@ls336.proto setZONE(3,10) L0 0")
25082 field(SDIS, "$(P):LS01:DISABLE")
25083 field(FLNK, "$(P):LS01:Z10:ALL3.PROC")
25095 record(mbbi, "$(P):LS01:Z10:RANGE3") {
25104 record(mbbo, "$(P):LS01:Z10:RANGE_S3") {
25118 # This just includes the zone file and overrides the RANGE options
25119 # for the analog control channels.
25121 #######################################
25123 # Template to support reading and setting
25124 # controller ZONE parameters. It reads the ZONE
25125 # parameters into an array, then uses subArrays to
25126 # extract each parameter.
25128 # This template is used by the output template
25129 # and it needs the following macros:
25131 # ZONE: zone number
25132 # OUT: output number
25134 #######################################
25137 ## Read the ZONE setting into an array (8 values)
25139 record(waveform,
"$(P):LS01:Z10:ALL4") {
25140 field(DTYP,
"stream")
25141 field(SDIS, "$(P):LS01:DISABLE_POLL")
25142 field(INP, "@ls336.proto getZONE(4,10) L0 0")
25143 field(SCAN, "Passive")
25145 field(FTVL, "DOUBLE")
25147 field(FLNK, "$(P):LS01:Z10:UB4:ARRAY.PROC")
25151 ## Read the ZONE upper boundary setting.
25153 record(subArray,
"$(P):LS01:Z10:UB4:ARRAY") {
25154 field(SCAN,
"Passive")
25155 field(FTVL, "DOUBLE")
25156 field(INP, "$(P):LS01:Z10:ALL4.VAL MS")
25161 field(FLNK, "$(P):LS01:Z10:UB4.PROC")
25163 record(ai, "$(P):LS01:Z10:UB4") {
25164 field(SCAN,
"Passive")
25165 field(INP, "$(P):LS01:Z10:UB4:ARRAY.VAL MS")
25167 field(FLNK, "$(P):LS01:Z10:P4:ARRAY.PROC")
25171 ## Read the ZONE P setting.
25173 record(subArray,
"$(P):LS01:Z10:P4:ARRAY") {
25174 field(SCAN,
"Passive")
25175 field(FTVL, "DOUBLE")
25176 field(INP, "$(P):LS01:Z10:ALL4.VAL MS")
25181 field(FLNK, "$(P):LS01:Z10:P4.PROC")
25183 record(ai, "$(P):LS01:Z10:P4") {
25184 field(SCAN,
"Passive")
25185 field(INP, "$(P):LS01:Z10:P4:ARRAY.VAL MS")
25187 field(FLNK, "$(P):LS01:Z10:I4:ARRAY.PROC")
25191 ## Read the ZONE I setting.
25193 record(subArray,
"$(P):LS01:Z10:I4:ARRAY") {
25194 field(SCAN,
"Passive")
25195 field(FTVL, "DOUBLE")
25196 field(INP, "$(P):LS01:Z10:ALL4.VAL MS")
25201 field(FLNK, "$(P):LS01:Z10:I4.PROC")
25203 record(ai, "$(P):LS01:Z10:I4") {
25204 field(SCAN,
"Passive")
25205 field(INP, "$(P):LS01:Z10:I4:ARRAY.VAL MS")
25207 field(FLNK, "$(P):LS01:Z10:D4:ARRAY.PROC")
25211 ## Read the ZONE D setting.
25213 record(subArray,
"$(P):LS01:Z10:D4:ARRAY") {
25214 field(SCAN,
"Passive")
25215 field(FTVL, "DOUBLE")
25216 field(INP, "$(P):LS01:Z10:ALL4.VAL MS")
25221 field(FLNK, "$(P):LS01:Z10:D4.PROC")
25223 record(ai, "$(P):LS01:Z10:D4") {
25224 field(SCAN,
"Passive")
25225 field(INP, "$(P):LS01:Z10:D4:ARRAY.VAL MS")
25227 field(FLNK, "$(P):LS01:Z10:MOUT4:ARRAY.PROC")
25231 ## Read the ZONE MOUT setting.
25233 record(subArray,
"$(P):LS01:Z10:MOUT4:ARRAY") {
25234 field(SCAN,
"Passive")
25235 field(FTVL, "DOUBLE")
25236 field(INP, "$(P):LS01:Z10:ALL4.VAL MS")
25241 field(FLNK, "$(P):LS01:Z10:MOUT4.PROC")
25243 record(ai, "$(P):LS01:Z10:MOUT4") {
25244 field(SCAN,
"Passive")
25245 field(INP, "$(P):LS01:Z10:MOUT4:ARRAY.VAL MS")
25247 field(FLNK, "$(P):LS01:Z10:RANGE4:ARRAY.PROC")
25251 ## Read the ZONE RANGE setting.
25253 record(subArray,
"$(P):LS01:Z10:RANGE4:ARRAY") {
25254 field(SCAN,
"Passive")
25255 field(FTVL, "DOUBLE")
25256 field(INP, "$(P):LS01:Z10:ALL4.VAL MS")
25261 field(FLNK, "$(P):LS01:Z10:RANGE4.PROC")
25263 record(mbbi, "$(P):LS01:Z10:RANGE4") {
25264 field(INP,
"$(P):LS01:Z10:RANGE4:ARRAY.VAL")
25265 field(SCAN, "Passive")
25268 field(ONST, "Range1/Low")
25270 field(TWST, "Range2/Medium")
25272 field(THST, "Range3/High")
25274 field(FRST, "Range4")
25276 field(FVST, "Range5")
25278 field(FLNK, "$(P):LS01:Z10:INPUT4:ARRAY.PROC")
25282 ## Read the ZONE INPUT setting.
25284 record(subArray,
"$(P):LS01:Z10:INPUT4:ARRAY") {
25285 field(SCAN,
"Passive")
25286 field(FTVL, "DOUBLE")
25287 field(INP, "$(P):LS01:Z10:ALL4.VAL MS")
25292 field(FLNK, "$(P):LS01:Z10:INPUT4.PROC")
25294 record(mbbi, "$(P):LS01:Z10:INPUT4") {
25295 field(INP,
"$(P):LS01:Z10:INPUT4:ARRAY.VAL")
25296 field(SCAN, "Passive")
25297 field(ZRST, "None")
25299 field(ONST, "Input A")
25301 field(TWST, "Input B")
25303 field(THST, "Input C")
25305 field(FRST, "Input D")
25307 field(FVST, "Input D2")
25309 field(SXST, "Input D3")
25311 field(SVST, "Input D4")
25313 field(EIST, "Input D5")
25315 field(FLNK, "$(P):LS01:Z10:RATE4:ARRAY.PROC")
25319 ## Read the ZONE RATE setting.
25321 record(subArray,
"$(P):LS01:Z10:RATE4:ARRAY") {
25322 field(SCAN,
"Passive")
25323 field(FTVL, "DOUBLE")
25324 field(INP, "$(P):LS01:Z10:ALL4.VAL MS")
25329 field(FLNK, "$(P):LS01:Z10:RATE4.PROC")
25331 record(ai, "$(P):LS01:Z10:RATE4") {
25332 field(SCAN,
"Passive")
25333 field(INP, "$(P):LS01:Z10:RATE4:ARRAY.VAL MS")
25335 field(FLNK, "$(P):LS01:Z10:INITCALC4.PROC")
25338 ##############################################################
25340 ## Populate the write records below with the current values.
25341 ## Only do this once at startup.
25343 ###############################################################
25345 record(calcout,
"$(P):LS01:Z10:INITCALC4") {
25349 field(DOPT, "Use OCAL")
25350 field(OOPT, "When Zero")
25352 field(OUT, "$(P):LS01:Z10:INITUB4.PROC")
25355 record(dfanout, "$(P):LS01:Z10:INITUB4") {
25356 field(OMSL,
"closed_loop")
25357 field(DOL, "$(P):LS01:Z10:UB4.VAL")
25358 field(OUTA, "$(P):LS01:Z10:UB_S4.VAL PP")
25359 field(FLNK, "$(P):LS01:Z10:INITP4.PROC")
25361 record(dfanout, "$(P):LS01:Z10:INITP4") {
25362 field(OMSL,
"closed_loop")
25363 field(DOL, "$(P):LS01:Z10:P4.VAL")
25364 field(OUTA, "$(P):LS01:Z10:P_S4.VAL PP")
25365 field(FLNK, "$(P):LS01:Z10:INITI4.PROC")
25367 record(dfanout, "$(P):LS01:Z10:INITI4") {
25368 field(OMSL,
"closed_loop")
25369 field(DOL, "$(P):LS01:Z10:I4.VAL")
25370 field(OUTA, "$(P):LS01:Z10:I_S4.VAL PP")
25371 field(FLNK, "$(P):LS01:Z10:INITD4.PROC")
25373 record(dfanout, "$(P):LS01:Z10:INITD4") {
25374 field(OMSL,
"closed_loop")
25375 field(DOL, "$(P):LS01:Z10:D4.VAL")
25376 field(OUTA, "$(P):LS01:Z10:D_S4.VAL PP")
25377 field(FLNK, "$(P):LS01:Z10:INITMOUT4.PROC")
25379 record(dfanout, "$(P):LS01:Z10:INITMOUT4") {
25380 field(OMSL,
"closed_loop")
25381 field(DOL, "$(P):LS01:Z10:MOUT4.VAL")
25382 field(OUTA, "$(P):LS01:Z10:MOUT_S4.VAL PP")
25383 field(FLNK, "$(P):LS01:Z10:INITRANGE4.PROC")
25385 record(dfanout, "$(P):LS01:Z10:INITRANGE4") {
25386 field(OMSL,
"closed_loop")
25387 field(DOL, "$(P):LS01:Z10:RANGE4.VAL")
25388 field(OUTA, "$(P):LS01:Z10:RANGE_S4.VAL PP")
25389 field(FLNK, "$(P):LS01:Z10:INITINPUT4.PROC")
25391 record(dfanout, "$(P):LS01:Z10:INITINPUT4") {
25392 field(OMSL,
"closed_loop")
25393 field(DOL, "$(P):LS01:Z10:INPUT4.VAL")
25394 field(OUTA, "$(P):LS01:Z10:INPUT_S4.VAL PP")
25395 field(FLNK, "$(P):LS01:Z10:INITRATE4.PROC")
25397 record(dfanout, "$(P):LS01:Z10:INITRATE4") {
25398 field(OMSL,
"closed_loop")
25399 field(DOL, "$(P):LS01:Z10:RATE4.VAL")
25400 field(OUTA, "$(P):LS01:Z10:RATE_S4.VAL PP")
25401 field(FLNK, "$(P):LS01:Z10:INITCOUNT4.PROC")
25404 record(dfanout, "$(P):LS01:Z10:INITCOUNT4") {
25406 field(OUTA, "$(P):LS01:Z10:INITCALC4.A")
25411 #############################################
25412 # Write records. There is a calcout record to
25413 # do the actual write.
25414 #############################################
25417 ## Set the ZONE upper boundary setting.
25419 record(ao,
"$(P):LS01:Z10:UB_S4") {
25420 field(SCAN,
"Passive")
25422 field(SDIS, "$(P):LS01:DISABLE")
25426 ## Set the ZONE P setting.
25428 record(ao,
"$(P):LS01:Z10:P_S4") {
25429 field(SCAN,
"Passive")
25431 field(SDIS, "$(P):LS01:DISABLE")
25435 ## Set the ZONE I setting.
25437 record(ao,
"$(P):LS01:Z10:I_S4") {
25438 field(SCAN,
"Passive")
25440 field(SDIS, "$(P):LS01:DISABLE")
25444 ## Set the ZONE D setting.
25446 record(ao,
"$(P):LS01:Z10:D_S4") {
25447 field(SCAN,
"Passive")
25449 field(SDIS, "$(P):LS01:DISABLE")
25453 ## Set the ZONE MOUT setting.
25455 record(ao,
"$(P):LS01:Z10:MOUT_S4") {
25456 field(SCAN,
"Passive")
25458 field(SDIS, "$(P):LS01:DISABLE")
25462 ## Set the ZONE RANGE setting.
25464 record(mbbo,
"$(P):LS01:Z10:RANGE_S4") {
25465 field(SCAN,
"Passive")
25468 field(ONST, "Range1/Low")
25470 field(TWST, "Range2/Medium")
25472 field(THST, "Range3/High")
25474 field(FRST, "Range4")
25476 field(FVST, "Range5")
25478 field(SDIS, "$(P):LS01:DISABLE")
25482 ## Set the ZONE INPUT setting.
25484 record(mbbo,
"$(P):LS01:Z10:INPUT_S4") {
25485 field(ZRST,
"None")
25487 field(ONST, "Input A")
25489 field(TWST, "Input B")
25491 field(THST, "Input C")
25493 field(FRST, "Input D")
25495 field(FVST, "Input D2")
25497 field(SXST, "Input D3")
25499 field(SVST, "Input D4")
25501 field(EIST, "Input D5")
25503 field(SDIS, "$(P):LS01:DISABLE")
25507 ## Set the ZONE RATE setting.
25509 record(ao,
"$(P):LS01:Z10:RATE_S4") {
25510 field(SCAN,
"Passive")
25512 field(SDIS, "$(P):LS01:DISABLE")
25516 ## Record to write the ZONE parameters.
25518 record(calcout,
"$(P):LS01:Z10:SET4") {
25519 field(INPA,
"$(P):LS01:Z10:UB_S4")
25520 field(INPB, "$(P):LS01:Z10:P_S4")
25521 field(INPC, "$(P):LS01:Z10:I_S4")
25522 field(INPD, "$(P):LS01:Z10:D_S4")
25523 field(INPE, "$(P):LS01:Z10:MOUT_S4")
25524 field(INPF, "$(P):LS01:Z10:RANGE_S4")
25525 field(INPG, "$(P):LS01:Z10:INPUT_S4")
25526 field(INPH, "$(P):LS01:Z10:RATE_S4")
25528 field(DTYP, "stream")
25529 field(OUT, "@ls336.proto setZONE(4,10) L0 0")
25530 field(SDIS, "$(P):LS01:DISABLE")
25531 field(FLNK, "$(P):LS01:Z10:ALL4.PROC")
25543 record(mbbi, "$(P):LS01:Z10:RANGE4") {
25552 record(mbbo, "$(P):LS01:Z10:RANGE_S4") {
25565 ################################################################
25566 # Records dealing with alarm handling
25569 ## Disable top level alarm handling
25572 field(DESC,
"Disable Alarms")
25575 field(OMSL,
"supervisory")
25576 field(ZNAM,
"Alarm Enabled")
25577 field(ONAM,
"Alarm Disabled")
25578 field(ZSV,
"NO_ALARM")
25579 field(OSV,
"MINOR")
25580 field(FLNK,
"$(P):LS01:ALARM_SUMMARY_CALC")
25581 info(autosaveFields,
"VAL")
25584 #record(bo, "$(P):LS01:DISABLE_ALARM_CALC") {
25585 # field(DESC, "Disable Alarms Calc")
25587 # field(OUT, "$(P):LS01:ALARM_SUMMARY_CALC.DISA PP")
25588 # field(FLNK, "$(P):LS01:ALARM_SUMMARY_CALC2")
25592 ## If we disable the alarm handling, clear the alarm status
25594 record(calcout,
"$(P):LS01:DISABLE_ALARM_SETZERO") {
25595 field(INPA,
"$(P):LS01:DISABLE_ALARM CP")
25596 field(CALC,
"A==1?0:1")
25597 field(DOPT,
"Use CALC")
25598 field(OOPT,
"When Zero")
25599 field(OUT,
"$(P):LS01:ALARM_SUMMARY.VAL PP")
25603 field(INPA,
"$(P):LS01:ALARM0_SUMMARY CP MS")
25604 field(INPB,
"$(P):LS01:ALARM1_SUMMARY CP MS")
25605 field(INPC,
"$(P):LS01:ALARM2_SUMMARY CP MS")
25606 field(INPD,
"$(P):LS01:ALARM3_SUMMARY CP MS")
25607 field(INPE,
"$(P):LS01:ALARMD2_SUMMARY CP MS")
25608 field(INPF,
"$(P):LS01:ALARMD3_SUMMARY CP MS")
25609 field(INPG,
"$(P):LS01:ALARMD4_SUMMARY CP MS")
25610 field(INPH,
"$(P):LS01:ALARMD5_SUMMARY CP MS")
25611 field(INPI,
"$(P):LS01:HTRST1_CACHE CP MS")
25612 field(INPJ,
"$(P):LS01:HTRST2_CACHE CP MS")
25614 field(FLNK,
"$(P):LS01:ALARM_SUMMARY_CALC2")
25615 field(SDIS,
"$(P):LS01:DISABLE_ALARM")
25617 record(calcout,
"$(P):LS01:ALARM_SUMMARY_CALC2") {
25618 field(INPA,
"$(P):LS01:ALARM_SUMMARY_CALC.STAT")
25619 field(CALC,
"A!=0?1:0")
25620 field(DOPT,
"Use CALC")
25621 field(OOPT,
"Every Time")
25622 field(OUT,
"$(P):LS01:ALARM_SUMMARY PP")
25626 ## Top level alarm summary record.
25627 ## This summarizes the input alarm summary record
25628 ## along with the two main output heater status records
25629 ## which are on loop 1 and 2.
25632 field(ZNAM,
"No Alarm")
25633 field(ONAM,
"Alarm")
25634 field(OSV,
"MAJOR")
25637 info(archive,
"Monitor, 00:00:01, VAL")
25641 ## Generic Asyn record for reading parameters.
25645 field(DTYP,
"asynRecordDevice")
record(bo,"$(P):LS01:DISABLE")