record(dfanout, "$(P)$(CRLID):stack$(M)_dfanout"){ field(DOL, "$(P)$(CRLID):lens_decode.$(DECODE) CP") field(OMSL, "closed_loop") field(OUTA, "$(P)$(CRLID):stack$(M) PP") } record(bo, "$(P)$(CRLID):stack$(M)"){ field(DESC, "$(NUMLENS), $(RADIUS), $(LOC), $(MAT), $(THICKERR)") field(ZNAM, "Out") field(ONAM, "In") field(DISV, "1") } record(calcout, "$(P)$(CRLID):stack$(M)_calc"){ field(INPA, "$(P)$(CRLID):stack$(M) CP") field(CALC, "A?$(INVAL):$(OUTVAL)") field(OUT, "$(OUT)") } record(calcout, "$(P)$(CRLID):stack$(M)_RBV_calc"){ field(INPA, "$(INP) CP") field(CALC, "A==$(INRBVVAL)?1:0") field(OUT, "$(P)$(CRLID):stack$(M)_RBV PP") } record(bi, "$(P)$(CRLID):stack$(M)_RBV"){ field(DESC, "$(NUMLENS), $(RADIUS), $(LOC), $(MAT), $(THICKERR)") field(ZNAM, "Out") field(ONAM, "In") } record(dfanout, "$(P)$(CRLID):stack$(M)_RBV_dfanout"){ field(OMSL, "closed_loop") field(DOL, "$(P)$(CRLID):stack$(M)_RBV CP") field(OUTA, "$(P)$(CRLID):lens_RBV_encode.$(ENCODE) PP") } record(ao, "$(P)$(CRLID):stack$(M)_NumLens"){ field(DESC, "Number of lens in stack") field(VAL, "$(NUMLENS)") } record(ao, "$(P)$(CRLID):stack$(M)_LensRadius"){ field(DESC, "Lens radii") field(PREC, "6") field(VAL, "$(RADIUS)") } record(ao, "$(P)$(CRLID):stack$(M)_Location"){ field(DESC, "Stack Location, + US, - DS from center") field(EGU, "stack_thick") field(PREC, "3") field(VAL, "$(LOC)") } record(stringout, "$(P)$(CRLID):stack$(M)_Material"){ field(DESC, "Lens Material") field(VAL, "$(MAT)") } record(ao, "$(P)$(CRLID):stack$(M)_ThickErr"){ field(DESC, "RMS Thickness Error") field(PREC, "6") field(VAL, "$(THICKERR)") } record(dfanout, "$(P)$(CRLID):stack$(M)_BW_dfanout"){ field(OMSL, "closed_loop") field(DOL, "$(P)$(CRLID):stack$(M) CP") field(OUTA, "$(P)$(CRLID):lens_encode.$(ENCODE)") field(FLNK, "$(P)$(CRLID):lens_encode.PROC CA") } # The commented out records below were meant to replicate the lock feature used # in filter control. BL staff indicated not required but kept in case needed. # Will also have to update python code (in/out masks, culled tables/indices need # to be uncommented). # MW 2024.09.04 #!record(bo, "$(P)$(CRLID):stack$(M)_Lock"){ #! field(ZNAM, "Free") #! field(ONAM, "Locked") #! field(SDIS, "$(P)$(CRLID):stack$(M)_Enable") #! field(DISV, "1") #!} #! #!record(bo, "$(P)$(CRLID):stack$(M)_Enable"){ #! field(ZNAM, "Enabled") #! field(ONAM, "Disabled") #!} #! #! #!record(calcout, "$(P)$(CRLID):disableOut$(M)_calc"){ #! field(INPA, "$(P)$(CRLID):stack$(M)_Enable CP") #! field(INPB, "$(P)$(CRLID):stack$(M)") #! field(CALC, "A=1?0:B") #! field(OUT, "$(P)$(CRLID):stack$(M) PP") #! field(FLNK, "$(P)$(CRLID):lockEnable$(M)_calc") #!} #! #!record(calcout, "$(P)$(CRLID):lockEnable$(M)_calc"){ #! field(INPA, "$(P)$(CRLID):stack$(M)_Enable") #! field(INPB, "$(P)$(CRLID):stack$(M)_Lock CP") #! field(INPC, "$(P)$(CRLID):stack$(M)_RBV") #! field(CALC, "A | B") #! field(OUT, "$(P)$(CRLID):stack$(M).DISA PP") #! field(FLNK, "$(P)$(CRLID):outMask$(M)_calc") #!} #! #!record(calcout, "$(P)$(CRLID):outMask$(M)_calc"){ #! field(INPA, "$(P)$(CRLID):stack$(M)_Enable") #! field(INPB, "$(P)$(CRLID):stack$(M)_Lock") #! field(INPC, "$(P)$(CRLID):stack$(M)_RBV") #! field(CALC, "A | (B & !C)") #! field(OUT, "$(P)$(CRLID):outMask_encode.$(MASK) PP") #! field(FLNK, "$(P)$(CRLID):inMask$(M)_calc") #!} #! #!record(calcout, "$(P)$(CRLID):inMask$(M)_calc"){ #! field(INPA, "$(P)$(CRLID):stack$(M)_Enable") #! field(INPB, "$(P)$(CRLID):stack$(M)_Lock") #! field(INPC, "$(P)$(CRLID):stack$(M)_RBV") #! field(CALC, "!A & (B & C)") #! field(OUT, "$(P)$(CRLID):inMask_encode.$(MASK) PP") #!}