# Record to test the validity of the AC position readings # based on the distance from the nominal position of the # collimator stage based on motor readbaack value record(calcout, "$(PREF)AC:valid_calc") { field(DESC, "AC validity CALC") field(SCAN, "1 second") field(CALC, "A>0.5&&(B+C+D+E>0.5)?1:0") field(INPA, "hd:collimator_at_b NPP MS") field(INPB, "hd:radiator_at_a NPP MS") field(INPC, "hd:radiator_at_b NPP MS") field(INPD, "hd:radiator_at_c NPP MS") field(INPE, "$(PREF)AC:valid_goni_calc PP MS") field(OUT , "$(PREF)AC:valid PP") field(OOPT, "Every Time") field(DOPT, "Use CALC") field(OCAL, "1") } record(calc, "$(PREF)AC:valid_goni_calc" ) { field(DESC, "AC goni validity" ) field(SCAN, "Passive") field(CALC, "(A+B+C+D+E+F+G+H+I+J+K+L>0.5)?1:0") field(INPA, "HD:GONI:RAD3:STATE NPP MS") field(INPB, "HD:GONI:RAD5:STATE NPP MS") field(INPC, "HD:GONI:RAD6:STATE NPP MS") field(INPD, "HD:GONI:RAD7:STATE NPP MS") field(INPE, "HD:GONI:RAD8:STATE NPP MS") field(INPF, "HD:GONI:RAD9:STATE NPP MS") field(INPG, "HD:GONI:RAD10:STATE NPP MS") field(INPH, "HD:GONI:RAD11:STATE NPP MS") field(INPI, "HD:GONI:RAD12:STATE NPP MS") field(INPJ, "HD:GONI:RAD13:STATE NPP MS") field(INPK, "HD:GONI:RAD14:STATE NPP MS") field(INPL, "HD:GONI:RAD15:STATE NPP MS") } # Binary record to keep the value for AC position # measurement and calculation validity record(bo, "$(PREF)AC:valid") { field(DESC, "AC Validity") field(SCAN, "Passive") field(ZNAM, "INVALID") field(ONAM, "VALID") } grecord( mbbi, "$(PREF)AC:gain" ) { field( DESC, "Gain for AC" ) field( SCAN, "Passive" ) field( NOBT, "7" ) field( ZRST, "10E-6 A/V" ) field( ONST, "10E-7 A/V" ) field( TWST, "10E-8 A/V" ) field( THST, "10E-9 A/V" ) field( FRST, "10E-10 A/V" ) field( FVST, "10E-11 A/V" ) field( SXST, "10E-12 A/V" ) field( VAL , "3" ) field( PINI, "NO" ) field( FLNK, "$(PREF)AC:gain_fo PP" ) } grecord( dfanout, "$(PREF)AC:gain_fo" ) { field( DESC, "fanout for gains" ) field( SCAN, "1 second" ) field( PREC, "3" ) field( PINI, "NO") field( DOL , "$(PREF)AC:gain" ) field( OMSL, "closed_loop" ) field( OUTA , "IAC5H01I_GAINXP PP" ) field( OUTB , "IAC5H01I_GAINXM PP" ) field( OUTC , "IAC5H01I_GAINYP PP" ) field( OUTD , "IAC5H01I_GAINYM PP" ) field( OUTE , "IAC5H01O_GAINXP PP" ) field( OUTF , "IAC5H01O_GAINXM PP" ) field( OUTG , "IAC5H01O_GAINYP PP" ) field( OUTH , "IAC5H01O_GAINYM PP" ) } grecord( ao, "$(PREF)AC:min_current" ) { field( SCAN, "Passive" ) field( VAL , "5" ) field( PREC, "3" ) field( EGU , "nA") field( PINI, "YES" ) } record(bo, "$(PREF)AC:force_ped_calc") { field(DESC, "Force caclulating pedestals") field(SCAN, "Passive") field(ZNAM, "NORMAL") field(ONAM, "FORCED") field(ZSV , "NO_ALARM") field(OSV , "MAJOR" ) field(VAL , "0" ) field(PINI, "YES" ) }