Initial version.

This commit is contained in:
Janet B. Anderson
2004-01-13 22:02:13 +00:00
parent cb1e29e235
commit fda69beae0
17 changed files with 8533 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
TOP=../..
include $(TOP)/configure/CONFIG
#----------------------------------------
# ADD MACRO DEFINITIONS AFTER THIS LINE
#----------------------------------------------------
# Optimization of db files using dbst (DEFAULT: NO)
#DB_OPT = YES
#----------------------------------------------------
# Create and install (or just install)
# databases, templates, substitutions like this
DB += xxVirtualLinac.db
DB += xxMedmDemo.db
#----------------------------------------------------
# If <anyname>.db template is not named <anyname>*.template add
# <anyname>_TEMPLATE = <templatename>
include $(TOP)/configure/RULES
#----------------------------------------
# ADD RULES AFTER THIS LINE

View File

@@ -0,0 +1,341 @@
record(ai,"$(user):demo1AI") {
field(DESC,"demo pv")
field(ASG,"")
field(SCAN,"Passive")
field(PINI,"YES")
field(PHAS,"0")
field(EVNT,"0")
field(TSEL,"0")
field(DTYP,"Soft Channel")
field(DISV,"1")
field(SDIS,"0")
field(DISS,"NO_ALARM")
field(PRIO,"LOW")
field(FLNK,"0")
field(INP,"1.5")
field(PREC,"2")
field(LINR,"NO CONVERSION")
field(EGUF,"0")
field(EGUL,"0")
field(EGU,"Volts")
field(HOPR,"10")
field(LOPR,"0")
field(AOFF,"0")
field(ASLO,"1")
field(SMOO,"0")
field(HIHI,"9")
field(LOLO,"0")
field(HIGH,"7")
field(LOW,"0")
field(HHSV,"MAJOR")
field(LLSV,"NO_ALARM")
field(HSV,"MINOR")
field(LSV,"NO_ALARM")
field(HYST,"0")
field(ADEL,"0")
field(MDEL,"0")
field(SIOL,"0")
field(SIML,"0")
field(SIMS,"NO_ALARM")
}
record(ai,"$(user):demo2AI") {
field(DESC,"demo pv")
field(ASG,"")
field(SCAN,"Passive")
field(PINI,"YES")
field(PHAS,"0")
field(EVNT,"0")
field(TSEL,"0")
field(DTYP,"Soft Channel")
field(DISV,"1")
field(SDIS,"0")
field(DISS,"NO_ALARM")
field(PRIO,"LOW")
field(FLNK,"0")
field(INP,"1.5")
field(PREC,"2")
field(LINR,"NO CONVERSION")
field(EGUF,"0")
field(EGUL,"0")
field(EGU,"Volts")
field(HOPR,"10")
field(LOPR,"0")
field(AOFF,"0")
field(ASLO,"1")
field(SMOO,"0")
field(HIHI,"10")
field(LOLO,"1")
field(HIGH,"10")
field(LOW,"2")
field(HHSV,"NO_ALARM")
field(LLSV,"MAJOR")
field(HSV,"NO_ALARM")
field(LSV,"MINOR")
field(HYST,"0")
field(ADEL,"0")
field(MDEL,"0")
field(SIOL,"0")
field(SIML,"0")
field(SIMS,"NO_ALARM")
}
record(ai,"$(user):demo3AI") {
field(DESC,"demo pv")
field(ASG,"")
field(SCAN,"Passive")
field(PINI,"YES")
field(PHAS,"0")
field(EVNT,"0")
field(TSEL,"0")
field(DTYP,"Soft Channel")
field(DISV,"1")
field(SDIS,"0")
field(DISS,"NO_ALARM")
field(PRIO,"LOW")
field(FLNK,"0")
field(INP,"1.5")
field(PREC,"2")
field(LINR,"NO CONVERSION")
field(EGUF,"0")
field(EGUL,"0")
field(EGU,"Volts")
field(HOPR,"10")
field(LOPR,"0")
field(AOFF,"0")
field(ASLO,"1")
field(SMOO,"0")
field(HIHI,"10")
field(LOLO,"1.5")
field(HIGH,"10")
field(LOW,"3")
field(HHSV,"NO_ALARM")
field(LLSV,"MAJOR")
field(HSV,"NO_ALARM")
field(LSV,"MINOR")
field(HYST,"0")
field(ADEL,"0")
field(MDEL,"0")
field(SIOL,"0")
field(SIML,"0")
field(SIMS,"NO_ALARM")
}
record(ai,"$(user):demo4AI") {
field(DESC,"demo pv")
field(ASG,"")
field(SCAN,"Passive")
field(PINI,"YES")
field(PHAS,"0")
field(EVNT,"0")
field(TSEL,"0")
field(DTYP,"Soft Channel")
field(DISV,"1")
field(SDIS,"0")
field(DISS,"NO_ALARM")
field(PRIO,"LOW")
field(FLNK,"0")
field(INP,"1.5")
field(PREC,"2")
field(LINR,"NO CONVERSION")
field(EGUF,"0")
field(EGUL,"0")
field(EGU,"Volts")
field(HOPR,"10")
field(LOPR,"0")
field(AOFF,"0")
field(ASLO,"1")
field(SMOO,"0")
field(HIHI,"8.5")
field(LOLO,"0")
field(HIGH,"6.5")
field(LOW,"0")
field(HHSV,"MAJOR")
field(LLSV,"NO_ALARM")
field(HSV,"MINOR")
field(LSV,"NO_ALARM")
field(HYST,"0")
field(ADEL,"0")
field(MDEL,"0")
field(SIOL,"0")
field(SIML,"0")
field(SIMS,"NO_ALARM")
}
record(ai,"$(user):demoAI") {
field(DESC,"demo pv")
field(ASG,"")
field(SCAN,"Passive")
field(PINI,"YES")
field(PHAS,"0")
field(EVNT,"0")
field(TSEL,"0")
field(DTYP,"Soft Channel")
field(DISV,"1")
field(SDIS,"0")
field(DISS,"NO_ALARM")
field(PRIO,"LOW")
field(FLNK,"0")
field(INP,"1.5")
field(PREC,"2")
field(LINR,"NO CONVERSION")
field(EGUF,"0")
field(EGUL,"0")
field(EGU,"Volts")
field(HOPR,"10")
field(LOPR,"0")
field(AOFF,"0")
field(ASLO,"1")
field(SMOO,"0")
field(HIHI,"0")
field(LOLO,"0")
field(HIGH,"0")
field(LOW,"0")
field(HHSV,"NO_ALARM")
field(LLSV,"NO_ALARM")
field(HSV,"NO_ALARM")
field(LSV,"NO_ALARM")
field(HYST,"0")
field(ADEL,"0")
field(MDEL,"0")
field(SIOL,"0")
field(SIML,"0")
field(SIMS,"NO_ALARM")
}
record(bi,"$(user):demoBI") {
field(DESC,"demo pv")
field(ASG,"")
field(SCAN,"Passive")
field(PINI,"YES")
field(PHAS,"0")
field(EVNT,"0")
field(TSEL,"0")
field(DTYP,"Soft Channel")
field(DISV,"1")
field(SDIS,"0")
field(DISS,"NO_ALARM")
field(PRIO,"LOW")
field(FLNK,"0")
field(INP,"0")
field(ZSV,"NO_ALARM")
field(OSV,"MAJOR")
field(COSV,"NO_ALARM")
field(ZNAM,"Off")
field(ONAM,"On")
field(SIOL,"0")
field(SIML,"0")
field(SIMS,"NO_ALARM")
}
record(calc,"$(user):demoCC") {
field(DESC,"")
field(ASG,"")
field(SCAN,"1 second")
field(PINI,"NO")
field(PHAS,"0")
field(EVNT,"0")
field(TSEL,"0")
field(DISV,"1")
field(SDIS,"0")
field(DISS,"NO_ALARM")
field(PRIO,"LOW")
field(FLNK,"0")
field(CALC,"a=8?2:a+1")
field(INPA,"$(user):demoCC.VAL NPP NMS")
field(INPB,"0")
field(INPC,"0")
field(INPD,"0")
field(INPE,"0")
field(INPF,"0")
field(INPG,"0")
field(INPH,"0")
field(INPI,"0")
field(INPJ,"0")
field(INPK,"0")
field(INPL,"0")
field(EGU,"counts")
field(PREC,"0")
field(HOPR,"10")
field(LOPR,"0")
field(HIHI,"0")
field(LOLO,"0")
field(HIGH,"0")
field(LOW,"0")
field(HHSV,"NO_ALARM")
field(LLSV,"NO_ALARM")
field(HSV,"NO_ALARM")
field(LSV,"NO_ALARM")
field(HYST,"0")
field(ADEL,"0")
field(MDEL,"0")
}
record(mbbi,"$(user):demoMI") {
field(DESC,"demo pv")
field(ASG,"")
field(SCAN,"Passive")
field(PINI,"YES")
field(PHAS,"0")
field(EVNT,"0")
field(TSEL,"0")
field(DTYP,"Soft Channel")
field(DISV,"1")
field(SDIS,"0")
field(DISS,"NO_ALARM")
field(PRIO,"LOW")
field(FLNK,"0")
field(NOBT,"3")
field(INP,"0")
field(ZRVL,"0x1")
field(ONVL,"0x2")
field(TWVL,"0x3")
field(THVL,"0x4")
field(FRVL,"0x5")
field(FVVL,"0x6")
field(SXVL,"0x0")
field(SVVL,"0x0")
field(EIVL,"0x0")
field(NIVL,"0x0")
field(TEVL,"0x0")
field(ELVL,"0x0")
field(TVVL,"0x0")
field(TTVL,"0x0")
field(FTVL,"0x0")
field(FFVL,"0x0")
field(ZRST,"Choice 1")
field(ONST,"Choice 2")
field(TWST,"Choice 3")
field(THST,"Choice 4")
field(FRST,"Choice 5")
field(FVST,"Choice 6")
field(SXST,"")
field(SVST,"")
field(EIST,"")
field(NIST,"")
field(TEST,"")
field(ELST,"")
field(TVST,"")
field(TTST,"")
field(FTST,"")
field(FFST,"")
field(ZRSV,"NO_ALARM")
field(ONSV,"NO_ALARM")
field(TWSV,"MINOR")
field(THSV,"NO_ALARM")
field(FRSV,"NO_ALARM")
field(FVSV,"MAJOR")
field(SXSV,"NO_ALARM")
field(SVSV,"NO_ALARM")
field(EISV,"NO_ALARM")
field(NISV,"NO_ALARM")
field(TESV,"NO_ALARM")
field(ELSV,"NO_ALARM")
field(TVSV,"NO_ALARM")
field(TTSV,"NO_ALARM")
field(FTSV,"NO_ALARM")
field(FFSV,"NO_ALARM")
field(UNSV,"NO_ALARM")
field(COSV,"NO_ALARM")
field(SIOL,"0")
field(SIML,"0")
field(SIMS,"NO_ALARM")
}
record(stringin,"$(user):demoSI") {
field(DESC,"demo pv")
field(VAL,"Drop PV name here ...")
}

View File

@@ -0,0 +1,744 @@
record(bi,"$(user):autoC") {
field(ASG,"$(user)")
field(PINI,"YES")
field(INP, "0")
field(DTYP,"Soft Channel")
field(ZNAM,"Operator control")
field(ONAM,"Computer-Auto")
}
record(bo,"$(user):gunOnC") {
field(DESC,"Controls e-gun")
field(ASG,"$(user)")
field(DTYP,"Soft Channel")
field(ZNAM,"Beam Off")
field(ONAM,"Beam On")
}
record(bo,"$(user):gunBakeoutC") {
field(DESC,"Bakeout Mode")
field(DTYP,"Soft Channel")
field(ZNAM,"Normal")
field(ONAM,"Bakeout")
}
record(calc,"$(user):flameM") {
field(CALC,"A<32?A+1:0")
field(SCAN,".1 second")
field(INPA,"$(user):flameM.VAL NPP NMS")
}
record(ao,"$(user):cathodeCurrentC") {
field(DESC,"set cathode current")
field(ASG,"$(user)")
field(DTYP,"Raw Soft Channel")
field(SCAN,".1 second")
field(OROC,".05")
field(PREC,"2")
field(EGU,"Amps")
field(DRVH,"20")
field(DRVL,"0")
field(HOPR,"20")
field(LOPR,"0")
}
record(calc,"$(user):rampM") {
field(CALC,"A>6.27?0:A+.1")
field(SCAN,"1 second")
field(INPA,"$(user):rampM.VAL NPP NMS")
}
record(calc,"$(user):cathodeTempM") {
field(DESC,"Measured Temp")
field(SCAN,"1 second")
field(CALC,"C+(A*7)+(SIN(B)*3.5)")
field(INPA,"$(user):cathodeCurrentC.OVAL NPP NMS")
field(INPB,"$(user):rampM.VAL NPP NMS")
field(INPC,"70")
field(EGU,"degF")
field(PREC,"1")
field(HOPR,"200")
field(LOPR,"")
field(HIHI,"180")
field(LOLO,"130")
field(HIGH,"160")
field(LOW,"140")
field(HHSV,"MAJOR")
field(HSV,"MINOR")
field(LLSV,"MAJOR")
field(LSV,"MINOR")
}
record(calc,"$(user):CM1:intensityM") {
field(SCAN,"1 second")
field(CALC,"((!B)||(A>185)||(A<120))?0:A/5")
field(INPA,"$(user):cathodeTempM.VAL NPP NMS")
field(INPB,"$(user):gunOnC.VAL NPP NMS")
field(EGU,"mA")
field(PREC,"2")
field(HOPR,"40")
field(LOPR,"")
field(HIHI,"36")
field(HIGH,"33")
field(HHSV,"MAJOR")
field(HSV,"MINOR")
}
record(ao,"$(user):H1:setCurrentC") {
field(DESC,"set output current")
field(ASG,"$(user)")
field(PREC,"2")
field(EGU,"Amps")
field(DRVH,"5")
field(DRVL,"-5")
field(HOPR,"5")
field(LOPR,"-5")
}
record(ao,"$(user):V1:setCurrentC") {
field(DESC,"set output current")
field(ASG,"$(user)")
field(PREC,"2")
field(EGU,"Amps")
field(DRVH,"5")
field(DRVL,"-5")
field(HOPR,"5")
field(LOPR,"-5")
}
record(ao,"$(user):H2:setCurrentC") {
field(DESC,"set output current")
field(ASG,"$(user)")
field(PREC,"2")
field(EGU,"Amps")
field(DRVH,"5")
field(DRVL,"-5")
field(HOPR,"5")
field(LOPR,"-5")
}
record(ao,"$(user):V2:setCurrentC") {
field(DESC,"set output current")
field(ASG,"$(user)")
field(PREC,"2")
field(EGU,"Amps")
field(DRVH,"5")
field(DRVL,"-5")
field(HOPR,"5")
field(LOPR,"-5")
}
record(ao,"$(user):H3:setCurrentC") {
field(DESC,"set output current")
field(ASG,"$(user)")
field(PREC,"2")
field(EGU,"Amps")
field(DRVH,"5")
field(DRVL,"-5")
field(HOPR,"5")
field(LOPR,"-5")
}
record(ao,"$(user):V3:setCurrentC") {
field(DESC,"set output current")
field(ASG,"$(user)")
field(PREC,"2")
field(EGU,"Amps")
field(DRVH,"5")
field(DRVL,"-5")
field(HOPR,"5")
field(LOPR,"-5")
}
record(ao,"$(user):H4:setCurrentC") {
field(DESC,"set output current")
field(ASG,"$(user)")
field(PREC,"2")
field(EGU,"Amps")
field(DRVH,"5")
field(DRVL,"-5")
field(HOPR,"5")
field(LOPR,"-5")
}
record(ao,"$(user):V4:setCurrentC") {
field(DESC,"set output current")
field(ASG,"$(user)")
field(PREC,"2")
field(EGU,"Amps")
field(DRVH,"5")
field(DRVL,"-5")
field(HOPR,"5")
field(LOPR,"-5")
}
record(ao,"$(user):H5:setCurrentC") {
field(DESC,"set output current")
field(ASG,"$(user)")
field(PREC,"2")
field(EGU,"Amps")
field(DRVH,"5")
field(DRVL,"-5")
field(HOPR,"5")
field(LOPR,"-5")
}
record(ao,"$(user):V5:setCurrentC") {
field(DESC,"set output current")
field(ASG,"$(user)")
field(PREC,"2")
field(EGU,"Amps")
field(DRVH,"5")
field(DRVL,"-5")
field(HOPR,"5")
field(LOPR,"-5")
}
record(ao,"$(user):BM1:setCurrentC") {
field(DESC,"set output current")
field(ASG,"$(user)")
field(PREC,"1")
field(EGU,"Amps")
field(DRVH,"250")
field(DRVL,"0")
field(HOPR,"250")
field(LOPR,"0")
}
record(calc,"$(user):randomM") {
field(CALC,"(RNDM*.1)-.05")
}
record(calc,"$(user):PM1:X:positionM") {
field(DESC,"Measured Position")
field(SCAN,".2 second")
field(CALC,"C<.5?0:ABS(A-E)>1?(A-E)^3+D:(A-E)*2+D")
field(INPA,"$(user):H1:setCurrentC.VAL NPP NMS")
field(INPB,"$(user):H1:setCurrentC.VAL NPP NMS")
field(INPC,"$(user):CM1:intensityM.VAL NPP NMS")
field(INPD,"$(user):randomM.VAL PP NMS")
field(INPE,"-1.3")
field(EGU,"mm")
field(PREC,"2")
field(HOPR,"5")
field(LOPR,"-5")
field(HIHI,"4")
field(LOLO,"-4")
field(HIGH,"1")
field(LOW,"-1")
field(HHSV,"MAJOR")
field(LLSV,"MAJOR")
field(HSV,"MINOR")
field(LSV,"MINOR")
}
record(calc,"$(user):PM1:Y:positionM") {
field(DESC,"Measured Position")
field(SCAN,".2 second")
field(CALC,"C<.5?0:ABS(A-E)>1?(A-E)^3+D:(A-E)*2+D")
field(INPA,"$(user):V1:setCurrentC.VAL NPP NMS")
field(INPB,"$(user):V1:setCurrentC.VAL NPP NMS")
field(INPC,"$(user):CM1:intensityM.VAL NPP NMS")
field(INPD,"$(user):randomM.VAL PP NMS")
field(INPE,"1.8")
field(EGU,"mm")
field(PREC,"2")
field(HOPR,"5")
field(LOPR,"-5")
field(HIHI,"4")
field(LOLO,"-4")
field(HIGH,"1")
field(LOW,"-1")
field(HHSV,"MAJOR")
field(LLSV,"MAJOR")
field(HSV,"MINOR")
field(LSV,"MINOR")
}
record(calc,"$(user):PM1:beamPresentM") {
field(DESC,"1=beam present")
field(CALC,"(A>.5)&&(B<2)&&(C<2)")
field(INPA,"$(user):CM1:intensityM.VAL NPP NMS")
field(INPB,"$(user):PM1:X:positionM.SEVR NPP NMS")
field(INPC,"$(user):PM1:Y:positionM.SEVR NPP NMS")
}
record(calc,"$(user):PM1:intensityM") {
field(DESC,"Measured I")
field(SCAN,".5 second")
field(CALC,"!A?0:B*(E-MIN(ABS(C)+ABS(D),E))/F")
field(INPA,"$(user):PM1:beamPresentM.VAL PP NMS")
field(INPB,"$(user):CM1:intensityM.VAL NPP NMS")
field(INPC,"$(user):PM1:X:positionM.VAL NPP NMS")
field(INPD,"$(user):PM1:Y:positionM.VAL NPP NMS")
field(INPE,"10")
field(INPF,"11")
field(EGU,"mA")
field(PREC,"2")
}
record(calc,"$(user):PM2:X:positionM") {
field(DESC,"Measured Position")
field(SCAN,".2 second")
field(CALC,"C<.5?0:ABS(A-E)>1?(A-E)^3+B:(A-E)*2+B+D")
field(INPA,"$(user):H2:setCurrentC.VAL NPP NMS")
field(INPB,"$(user):H1:setCurrentC.VAL NPP NMS")
field(INPC,"$(user):PM1:intensityM.VAL NPP NMS")
field(INPD,"$(user):randomM.VAL PP NMS")
field(INPE,"2.0")
field(EGU,"mm")
field(PREC,"2")
field(HOPR,"5")
field(LOPR,"-5")
field(HIHI,"4")
field(LOLO,"-4")
field(HIGH,"1")
field(LOW,"-1")
field(HHSV,"MAJOR")
field(LLSV,"MAJOR")
field(HSV,"MINOR")
field(LSV,"MINOR")
}
record(calc,"$(user):PM2:Y:positionM") {
field(DESC,"Measured Position")
field(SCAN,".2 second")
field(CALC,"C<.5?0:ABS(A-E)>1?(A-E)^3+B:(A-E)*2+B+D")
field(INPA,"$(user):V2:setCurrentC.VAL NPP NMS")
field(INPB,"$(user):V1:setCurrentC.VAL NPP NMS")
field(INPC,"$(user):PM1:intensityM.VAL NPP NMS")
field(INPD,"$(user):randomM.VAL PP NMS")
field(INPE,"-.5")
field(EGU,"mm")
field(PREC,"2")
field(HOPR,"5")
field(LOPR,"-5")
field(HIHI,"4")
field(LOLO,"-4")
field(HIGH,"1")
field(LOW,"-1")
field(HHSV,"MAJOR")
field(LLSV,"MAJOR")
field(HSV,"MINOR")
field(LSV,"MINOR")
}
record(calc,"$(user):PM2:beamPresentM") {
field(DESC,"1=beam present")
field(CALC,"(A>.5)&&(B<2)&&(C<2)")
field(INPA,"$(user):PM1:intensityM.VAL NPP NMS")
field(INPB,"$(user):PM2:X:positionM.SEVR NPP NMS")
field(INPC,"$(user):PM2:Y:positionM.SEVR NPP NMS")
}
record(calc,"$(user):PM2:intensityM") {
field(DESC,"Measured I")
field(SCAN,".5 second")
field(CALC,"!A?0:B*(E-MIN(ABS(C)+ABS(D),E))/F")
field(INPA,"$(user):PM2:beamPresentM.VAL PP NMS")
field(INPB,"$(user):PM1:intensityM.VAL NPP NMS")
field(INPC,"$(user):PM2:X:positionM.VAL NPP NMS")
field(INPD,"$(user):PM2:Y:positionM.VAL NPP NMS")
field(INPE,"10")
field(INPF,"11")
field(EGU,"mA")
field(PREC,"2")
}
record(calc,"$(user):PM3:X:positionM") {
field(DESC,"Measured Position")
field(SCAN,".2 second")
field(CALC,"F#1||!C?0:ABS(A-E)>1?(A-E)^3:(A-E)*2+B")
field(INPA,"$(user):H3:setCurrentC.VAL NPP NMS")
field(INPB,"$(user):H2:setCurrentC.VAL NPP NMS")
field(INPC,"$(user):PM2:intensityM.VAL NPP NMS")
field(INPD,"$(user):randomM.VAL PP NMS")
field(INPE,"-0.7")
field(INPF,"$(user):GV1:positionM.VAL NPP NMS")
field(EGU,"mm")
field(PREC,"2")
field(HOPR,"5")
field(LOPR,"-5")
field(HIHI,"4")
field(LOLO,"-4")
field(HIGH,"1")
field(LOW,"-1")
field(HHSV,"MAJOR")
field(LLSV,"MAJOR")
field(HSV,"MINOR")
field(LSV,"MINOR")
}
record(calc,"$(user):PM3:Y:positionM") {
field(DESC,"Measured Position")
field(SCAN,".2 second")
field(CALC,"F#1||!C?0:ABS(A-E)>1?(A-E)^3:(A-E)*2+B")
field(INPA,"$(user):V3:setCurrentC.VAL NPP NMS")
field(INPB,"$(user):V2:setCurrentC.VAL NPP NMS")
field(INPC,"$(user):PM2:intensityM.VAL NPP NMS")
field(INPD,"$(user):randomM.VAL PP NMS")
field(INPE,"-1.5")
field(INPF,"$(user):GV1:positionM.VAL NPP NMS")
field(EGU,"mm")
field(PREC,"2")
field(HOPR,"5")
field(LOPR,"-5")
field(HIHI,"4")
field(LOLO,"-4")
field(HIGH,"1")
field(LOW,"-1")
field(HHSV,"MAJOR")
field(LLSV,"MAJOR")
field(HSV,"MINOR")
field(LSV,"MINOR")
}
record(calc,"$(user):PM3:beamPresentM") {
field(DESC,"1=beam present")
field(CALC,"(A>.5)&&(B<2)&&(C<2)&&(D=1)")
field(INPA,"$(user):PM2:intensityM.VAL NPP NMS")
field(INPB,"$(user):PM3:X:positionM.SEVR NPP NMS")
field(INPC,"$(user):PM3:Y:positionM.SEVR NPP NMS")
field(INPD,"$(user):GV1:positionM.VAL NPP NMS")
}
record(calc,"$(user):PM3:intensityM") {
field(DESC,"Measured I")
field(SCAN,".5 second")
field(CALC,"!A?0:B*(E-MIN(ABS(C)+ABS(D),E))/F")
field(INPA,"$(user):PM3:beamPresentM.VAL PP NMS")
field(INPB,"$(user):PM2:intensityM.VAL NPP NMS")
field(INPC,"$(user):PM3:X:positionM.VAL NPP NMS")
field(INPD,"$(user):PM3:Y:positionM.VAL NPP NMS")
field(INPE,"10")
field(INPF,"11")
field(EGU,"mA")
field(PREC,"2")
}
record(calc,"$(user):PM4:X:positionM") {
field(DESC,"Measured Position")
field(SCAN,".2 second")
field(CALC,"C<.5?0:ABS(A-E)>1?(A-E)^3+B:(A-E)*2+B+D")
field(INPA,"$(user):H4:setCurrentC.VAL NPP NMS")
field(INPB,"$(user):H3:setCurrentC.VAL NPP NMS")
field(INPC,"$(user):PM3:intensityM.VAL NPP NMS")
field(INPD,"$(user):randomM.VAL PP NMS")
field(INPE,".8")
field(EGU,"mm")
field(PREC,"2")
field(HOPR,"5")
field(LOPR,"-5")
field(HIHI,"4")
field(LOLO,"-4")
field(HIGH,"1")
field(LOW,"-1")
field(HHSV,"MAJOR")
field(LLSV,"MAJOR")
field(HSV,"MINOR")
field(LSV,"MINOR")
}
record(calc,"$(user):PM4:Y:positionM") {
field(DESC,"Measured Position")
field(SCAN,".2 second")
field(CALC,"C<.5?0:ABS(A-E)>1?(A-E)^3+B:(A-E)*2+B+D")
field(INPA,"$(user):V4:setCurrentC.VAL NPP NMS")
field(INPB,"$(user):V3:setCurrentC.VAL NPP NMS")
field(INPC,"$(user):PM3:intensityM.VAL NPP NMS")
field(INPD,"$(user):randomM.VAL PP NMS")
field(INPE,"-.3")
field(EGU,"mm")
field(PREC,"2")
field(HOPR,"5")
field(LOPR,"-5")
field(HIHI,"4")
field(LOLO,"-4")
field(HIGH,"1")
field(LOW,"-1")
field(HHSV,"MAJOR")
field(LLSV,"MAJOR")
field(HSV,"MINOR")
field(LSV,"MINOR")
}
record(calc,"$(user):PM4:beamPresentM") {
field(DESC,"1=beam present")
field(CALC,"(A>.5)&&(B<2)&&(C<2)")
field(INPA,"$(user):PM3:intensityM.VAL NPP NMS")
field(INPB,"$(user):PM4:X:positionM.SEVR NPP NMS")
field(INPC,"$(user):PM4:Y:positionM.SEVR NPP NMS")
}
record(calc,"$(user):PM4:intensityM") {
field(DESC,"Measured I")
field(SCAN,".5 second")
field(CALC,"!A?0:B*(E-MIN(ABS(C)+ABS(D),E))/F")
field(INPA,"$(user):PM4:beamPresentM.VAL PP NMS")
field(INPB,"$(user):PM3:intensityM.VAL NPP NMS")
field(INPC,"$(user):PM4:X:positionM.VAL NPP NMS")
field(INPD,"$(user):PM4:Y:positionM.VAL NPP NMS")
field(INPE,"10")
field(INPF,"11")
field(EGU,"mA")
field(PREC,"2")
}
record(calc,"$(user):PM5:X:positionM") {
field(DESC,"Measured Position")
field(SCAN,".2 second")
field(CALC,"C<.5?0:ABS(A-E)>1?(A-E)^3+B:(A-E)*2+B+D")
field(INPA,"$(user):H5:setCurrentC.VAL NPP NMS")
field(INPB,"$(user):H4:setCurrentC.VAL NPP NMS")
field(INPC,"$(user):PM4:intensityM.VAL NPP NMS")
field(INPD,"$(user):randomM.VAL PP NMS")
field(INPE,"-1.0")
field(EGU,"mm")
field(PREC,"2")
field(HOPR,"5")
field(LOPR,"-5")
field(HIHI,"4")
field(LOLO,"-4")
field(HIGH,"1")
field(LOW,"-1")
field(HHSV,"MAJOR")
field(LLSV,"MAJOR")
field(HSV,"MINOR")
field(LSV,"MINOR")
}
record(calc,"$(user):PM5:Y:positionM") {
field(DESC,"Measured Position")
field(SCAN,".2 second")
field(CALC,"C<.5?0:ABS(A-E)>1?(A-E)^3+B:(A-E)*2+B+D")
field(INPA,"$(user):V5:setCurrentC.VAL NPP NMS")
field(INPB,"$(user):V4:setCurrentC.VAL NPP NMS")
field(INPC,"$(user):PM4:intensityM.VAL NPP NMS")
field(INPD,"$(user):randomM.VAL PP NMS")
field(INPE,"2.3")
field(EGU,"mm")
field(PREC,"2")
field(HOPR,"5")
field(LOPR,"-5")
field(HIHI,"4")
field(LOLO,"-4")
field(HIGH,"1")
field(LOW,"-1")
field(HHSV,"MAJOR")
field(LLSV,"MAJOR")
field(HSV,"MINOR")
field(LSV,"MINOR")
}
record(calc,"$(user):PM5:beamPresentM") {
field(DESC,"1=beam present")
field(CALC,"(A>.5)&&(B<2)&&(C<2)")
field(INPA,"$(user):PM4:intensityM.VAL NPP NMS")
field(INPB,"$(user):PM5:X:positionM.SEVR NPP NMS")
field(INPC,"$(user):PM5:Y:positionM.SEVR NPP NMS")
}
record(calc,"$(user):PM5:intensityM") {
field(DESC,"Measured I")
field(SCAN,".5 second")
field(CALC,"!A?0:B*(E-MIN(ABS(C)+ABS(D),E))/F")
field(INPA,"$(user):PM5:beamPresentM.VAL PP NMS")
field(INPB,"$(user):PM4:intensityM.VAL NPP NMS")
field(INPC,"$(user):PM5:X:positionM.VAL NPP NMS")
field(INPD,"$(user):PM5:Y:positionM.VAL NPP NMS")
field(INPE,"10")
field(INPF,"11")
field(EGU,"mA")
field(PREC,"2")
}
record(calc,"$(user):FC1:intensityM") {
field(DESC,"Measured I")
field(SCAN,".5 second")
field(CALC,"A<.5?0:D>10?0:A*(11-D)/12")
field(INPA,"$(user):PM5:intensityM.VAL NPP NMS")
field(INPB,"$(user):PM5:X:positionM.VAL NPP NMS")
field(INPC,"$(user):PM5:Y:positionM.VAL NPP NMS")
field(INPD,"$(user):BM1:setCurrentC.VAL NPP NMS")
field(EGU,"mA")
field(PREC,"2")
}
record(calc,"$(user):FC2:intensityM") {
field(DESC,"Measured I")
field(SCAN,".5 second")
field(CALC,"(D<213)||(D>216.12)?0:A*.9*SIN(D-E)")
field(INPA,"$(user):PM5:intensityM.VAL NPP NMS")
field(INPB,"$(user):PM5:X:positionM.VAL NPP NMS")
field(INPC,"$(user):PM5:Y:positionM.VAL NPP NMS")
field(INPD,"$(user):BM1:setCurrentC.VAL NPP NMS")
field(INPE,"213")
field(EGU,"mA")
field(PREC,"2")
}
record(waveform,"$(user):PM:distancesWF") {
field(DESC,"bpm distances from gun")
field(DTYP,"Soft Channel")
field(EGU,"meters")
field(HOPR,"60")
field(LOPR,"0")
field(NELM,"8")
field(FTVL,"FLOAT")
}
record(waveform,"$(user):PM:refLocationsWF") {
field(DTYP,"Soft Channel")
field(EGU,"meters")
field(HOPR,"60")
field(LOPR,"0")
field(NELM,"2")
field(FTVL,"FLOAT")
}
record(waveform,"$(user):PM:referenceLoWF") {
field(DTYP,"Soft Channel")
field(EGU,"meters")
field(HOPR,"5")
field(LOPR,"-5")
field(NELM,"2")
field(FTVL,"FLOAT")
}
record(waveform,"$(user):PM:referenceHiWF") {
field(DTYP,"Soft Channel")
field(EGU,"meters")
field(HOPR,"5")
field(LOPR,"-5")
field(NELM,"2")
field(FTVL,"FLOAT")
}
record(waveform,"$(user):PM:xTrajectoryWF") {
field(DESC,"x values")
field(DTYP,"Soft Channel")
field(EGU,"mm")
field(HOPR,"5")
field(LOPR,"-5")
field(NELM,"8")
field(FTVL,"FLOAT")
}
record(waveform,"$(user):PM:yTrajectoryWF") {
field(DESC,"y values")
field(DTYP,"Soft Channel")
field(EGU,"mm")
field(HOPR,"5")
field(LOPR,"-5")
field(NELM,"8")
field(FTVL,"FLOAT")
}
record(waveform,"$(user):PM:iTrajectoryWF") {
field(DESC,"i values")
field(DTYP,"Soft Channel")
field(EGU,"mm")
field(HOPR,"40")
field(LOPR,"0")
field(NELM,"8")
field(FTVL,"FLOAT")
}
record(mbbo,"$(user):GV1:positionC") {
field(DESC,"valve position")
field(ASG,"$(user)")
field(DTYP,"Raw Soft Channel")
field(ZRVL,"0x3")
field(ONVL,"0xc")
field(ZRST,"Close")
field(ONST,"Open")
field(FLNK,"$(user):GV1:positionSQ.VAL")
}
record(seq,"$(user):GV1:positionSQ") {
field(DESC,"simulate open/close")
field(SELM,"Mask")
field(SELL,"$(user):GV1:positionC.RVAL NPP NMS")
field(DOL1,"0")
field(LNK1,"$(user):GV1:positionM.VAL PP NMS")
field(DLY2,"1")
field(DOL2,"2")
field(LNK2,"$(user):GV1:positionM.VAL PP NMS")
field(DOL3,"0")
field(LNK3,"$(user):GV1:positionM.VAL PP NMS")
field(DLY4,"1")
field(DOL4,"1")
field(LNK4,"$(user):GV1:positionM.VAL PP NMS")
}
record(mbbi,"$(user):GV1:positionM") {
field(DESC,"valve position")
field(PINI,"YES")
field(INP,"2")
field(ZRST,"Travel")
field(ONST,"Full Open")
field(TWST,"Full Closed")
field(THST,"Unknown")
field(ZRSV,"MINOR")
field(ONSV,"NO_ALARM")
field(TWSV,"MAJOR")
field(THSV,"INVALID")
}
record(ai,"$(user):opVariable1") {
field(PREC, "4")
field(EGU,"Ratio")
}
record(ai,"$(user):opVariable2") {
field(PREC, "4")
field(EGU,"void")
}
record(ai,"$(user):opVariable3") {
field(PREC, "4")
field(EGU,"void")
}
record(ai,"$(user):opVariable4") {
field(PREC, "4")
field(EGU,"void")
}
record(ai,"$(user):opVariable5") {
field(PREC, "4")
field(EGU,"void")
}
record(bo,"$(user):opButton1C") {
field(DESC,"Misc. Button")
field(DTYP,"Soft Channel")
field(HIGH,"2")
field(ZNAM,"Off")
field(ONAM,"On")
}
record(bo,"$(user):opButton2C") {
field(DESC,"Misc. Button")
field(DTYP,"Soft Channel")
field(HIGH,".5")
field(ZNAM,"Off")
field(ONAM,"On")
}
record(bo,"$(user):opButton3C") {
field(DESC,"Misc. Button")
field(DTYP,"Soft Channel")
field(HIGH,".5")
field(ZNAM,"Off")
field(ONAM,"On")
}
#record(scan,"$(user):scan1SC") {
# field(MPTS,"512")
#}
#record(scan,"$(user):scan2SC") {
# field(MPTS,"512")
#}
#record(scan,"$(user):scan3SC") {
# field(MPTS,"512")
#}
#record(scan,"$(user):scan4SC") {
# field(MPTS,"512")
#}
record(calcout,"$(user):scanCtl1CO")
record(calcout,"$(user):scanCtl2CO")
record(calcout,"$(user):scanCtl3CO")
record(calcout,"$(user):scanCtl4CO")
record(calcout,"$(user):scanCtl5CO")
record(bo,"$(user):OP:stabilizerC") {
field(ZNAM,"Off")
field(ONAM,"Stabilize")
}
record(stringin,"$(user):OP:stabilizerMsg") {
field(VAL,"Sequence Off")
}
record(stringin,"$(user):OP:autoMsg") {
field(VAL,"Operator Control")
}
record(stringin,"$(user):operatorM") {
field(VAL,"")
}
record(seq,"$(user):initAllSQ") {
field(DOL1,"0")
field(LNK1,"$(user):cathodeCurrentC.VAL PP NMS")
field(DOL2,"0")
field(LNK2,"$(user):cathodeCurrentC.OVAL PP NMS")
field(DLY3,".25")
field(DOL3,"0")
field(LNK3,"$(user):gunOnC.VAL PP NMS")
field(DLY4,".25")
field(DOL4,"0")
field(LNK4,"$(user):GV1:positionC.VAL PP NMS")
field(DOL5,"1")
field(LNK5,"$(user):initSteeringSQ.VAL PP NMS")
}
record(seq,"$(user):initSteeringSQ") {
field(DOL1,"0")
field(LNK1,"$(user):H1:setCurrentC.VAL PP NMS")
field(DOL2,"0")
field(LNK2,"$(user):V1:setCurrentC.VAL PP NMS")
field(DOL3,"0")
field(LNK3,"$(user):H2:setCurrentC.VAL PP NMS")
field(DOL4,"0")
field(LNK4,"$(user):V2:setCurrentC.VAL PP NMS")
field(DOL5,"0")
field(LNK5,"$(user):H3:setCurrentC.VAL PP NMS")
field(DOL6,"0")
field(LNK6,"$(user):V3:setCurrentC.VAL PP NMS")
field(DOL7,"0")
field(LNK7,"$(user):H4:setCurrentC.VAL PP NMS")
field(DOL8,"0")
field(LNK8,"$(user):V4:setCurrentC.VAL PP NMS")
field(DOL9,"0")
field(LNK9,"$(user):H5:setCurrentC.VAL PP NMS")
field(DOLA,"0")
field(LNKA,"$(user):V5:setCurrentC.VAL PP NMS")
}

View File

@@ -0,0 +1,8 @@
TOP = ..
include $(TOP)/configure/CONFIG
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *src*))
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Src*))
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *db*))
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Db*))
include $(TOP)/configure/RULES_DIRS

View File

@@ -0,0 +1,16 @@
This directory (misc) contains additional files to compliment
the virtual linac demo application.
For full functionality the sequencer module must be built and loaded.
Virtual_Linac_Info.pdf : Description of the Virtual Linac
*.adl : medm display files
*.gif : images used in medm files
To start the ioc, refer to the README file in the iocBoot
directory.
To start medm, use the following command:
medm -local -x -macro user=_USER_ Virtual_Linac.adl

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,549 @@
file {
name="/home/phoebus/NDA/epics/vlinac/R3.14.3/vlinacApp/misc/alarmDemo.adl"
version=030003
}
display {
object {
x=211
y=74
width=404
height=551
}
clr=9
bclr=55
cmap=""
gridSpacing=5
gridOn=0
snapToGrid=0
}
"color map" {
ncolors=65
colors {
ffffff,
ececec,
dadada,
c8c8c8,
bbbbbb,
aeaeae,
9e9e9e,
919191,
858585,
787878,
696969,
5a5a5a,
464646,
2d2d2d,
000000,
00d800,
1ebb00,
339900,
2d7f00,
216c00,
fd0000,
de1309,
be190b,
a01207,
820400,
5893ff,
597ee1,
4b6ec7,
3a5eab,
27548d,
fbf34a,
f9da3c,
eeb62b,
e19015,
cd6100,
ffb0ff,
d67fe2,
ae4ebc,
8b1a96,
610a75,
a4aaff,
8793e2,
6a73c1,
4d52a4,
343386,
c7bb6d,
b79d5c,
a47e3c,
7d5627,
58340f,
99ffff,
73dfff,
4ea5f9,
2a63e4,
0a00b8,
ebf1b5,
d4db9d,
bbc187,
a6a462,
8b8239,
73ff6b,
52da3b,
3cb420,
289315,
1a7309,
}
}
text {
object {
x=3
y=7
width=352
height=20
}
"basic attribute" {
clr=14
width=7
}
textix="These PVs have alarm values set ..."
}
valuator {
object {
x=18
y=83
width=160
height=40
}
control {
chan="$(user):demo1AI"
clr=14
bclr=51
}
label="limits"
dPrecision=0.100000
limits {
}
}
text {
object {
x=9
y=31
width=352
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="They are intended to be used to experiment with alh"
}
text {
object {
x=9
y=45
width=352
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="(the alarm handler). "
}
valuator {
object {
x=227
y=84
width=160
height=40
}
control {
chan="$(user):demo2AI"
clr=14
bclr=51
}
label="limits"
dPrecision=0.100000
limits {
}
}
valuator {
object {
x=21
y=169
width=160
height=40
}
control {
chan="$(user):demo3AI"
clr=14
bclr=51
}
label="limits"
dPrecision=0.100000
limits {
}
}
valuator {
object {
x=229
y=169
width=160
height=40
}
control {
chan="$(user):demo4AI"
clr=14
bclr=51
}
label="limits"
dPrecision=0.100000
limits {
}
}
"text update" {
object {
x=76
y=123
width=56
height=20
}
monitor {
chan="$(user):demo1AI"
clr=14
bclr=3
}
clrmod="alarm"
align="horiz. centered"
limits {
}
}
"text update" {
object {
x=293
y=124
width=56
height=20
}
monitor {
chan="$(user):demo2AI"
clr=14
bclr=3
}
clrmod="alarm"
align="horiz. centered"
limits {
}
}
"text update" {
object {
x=80
y=208
width=56
height=20
}
monitor {
chan="$(user):demo3AI"
clr=14
bclr=3
}
clrmod="alarm"
align="horiz. centered"
limits {
}
}
"text update" {
object {
x=296
y=208
width=56
height=20
}
monitor {
chan="$(user):demo4AI"
clr=14
bclr=3
}
clrmod="alarm"
align="horiz. centered"
limits {
}
}
text {
object {
x=6
y=331
width=352
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="Experiment with the capabilities of the Alarm Handler."
}
text {
object {
x=10
y=353
width=352
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="> Collapse/Expand Group displays with the symbol."
}
text {
object {
x=29
y=522
width=352
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="Refer to the User Manual for a complete tutorial."
}
"choice button" {
object {
x=15
y=249
width=384
height=18
}
control {
chan="$(user):demoMI"
clr=14
bclr=51
}
stacking="column"
}
"choice button" {
object {
x=180
y=274
width=66
height=39
}
control {
chan="$(user):demoBI"
clr=14
bclr=51
}
}
text {
object {
x=55
y=69
width=100
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="$(user):demo1AI"
align="horiz. centered"
}
text {
object {
x=58
y=155
width=100
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="$(user):demo3AI"
align="horiz. centered"
}
text {
object {
x=263
y=155
width=100
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="$(user):demo4AI"
align="horiz. centered"
}
text {
object {
x=261
y=69
width=100
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="$(user):demo2AI"
align="horiz. centered"
}
text {
object {
x=157
y=234
width=100
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="$(user):demoMI"
align="horiz. centered"
}
text {
object {
x=79
y=289
width=100
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="$(user):demoBI"
align="horiz. centered"
}
polygon {
object {
x=310
y=353
width=13
height=14
}
"basic attribute" {
clr=9
width=7
}
points {
(310,353)
(310,367)
(323,360)
(310,353)
}
}
text {
object {
x=10
y=369
width=352
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="> Display PV's within a group by hitting the group name."
}
text {
object {
x=10
y=385
width=352
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="> Acknowledge alarms by depressing the button to the"
}
text {
object {
x=22
y=401
width=352
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="left of the Group name or PV name (entire groups may"
}
text {
object {
x=22
y=417
width=352
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="acknowledged with one button press)."
}
text {
object {
x=10
y=433
width=352
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="> Disable alarms for a PV (or group) by using the"
}
text {
object {
x=24
y=449
width=352
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="Enable/Disable option from the "
}
text {
object {
x=24
y=465
width=352
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="under the Action menu."
}
text {
object {
x=10
y=481
width=352
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="> View the history files the Alarm Handler keeps by"
}
text {
object {
x=25
y=497
width=352
height=14
}
"basic attribute" {
clr=14
width=7
}
textix="using the View menu."
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,170 @@
file {
name="/home/phoebus/NDA/epics/openhouse/medm/linacStripChart.adl"
version=020306
}
display {
object {
x=208
y=682
width=924
height=250
}
clr=14
bclr=55
cmap=""
gridSpacing=5
gridOn=0
snapToGrid=0
}
"color map" {
ncolors=65
colors {
ffffff,
ececec,
dadada,
c8c8c8,
bbbbbb,
aeaeae,
9e9e9e,
919191,
858585,
787878,
696969,
5a5a5a,
464646,
2d2d2d,
000000,
00d800,
1ebb00,
339900,
2d7f00,
216c00,
fd0000,
de1309,
be190b,
a01207,
820400,
5893ff,
597ee1,
4b6ec7,
3a5eab,
27548d,
fbf34a,
f9da3c,
eeb62b,
e19015,
cd6100,
ffb0ff,
d67fe2,
ae4ebc,
8b1a96,
610a75,
a4aaff,
8793e2,
6a73c1,
4d52a4,
343386,
c7bb6d,
b79d5c,
a47e3c,
7d5627,
58340f,
99ffff,
73dfff,
4ea5f9,
2a63e4,
0a00b8,
ebf1b5,
d4db9d,
bbc187,
a6a462,
8b8239,
73ff6b,
52da3b,
3cb420,
289315,
1a7309,
}
}
"strip chart" {
object {
x=2
y=47
width=922
height=200
}
plotcom {
title="Cathode Temperature"
xlabel="Seconds"
clr=14
bclr=2
}
period=300.000000
pen[0] {
chan="$(user):CM1:intensityM"
clr=53
limits {
loprSrc="default"
hoprSrc="default"
hoprDefault=48
}
}
pen[1] {
chan="$(user):FC1:intensityM"
clr=20
limits {
loprSrc="default"
hoprSrc="default"
hoprDefault=20
}
}
pen[2] {
chan="$(user):FC2:intensityM"
clr=36
limits {
loprSrc="default"
hoprSrc="default"
hoprDefault=20
}
}
}
text {
object {
x=11
y=19
width=70
height=20
}
"basic attribute" {
clr=53
fill="outline"
}
textix="BLUE: Current at beginning (CM1)"
}
text {
object {
x=574
y=5
width=70
height=20
}
"basic attribute" {
clr=20
fill="outline"
}
textix="RED: Current at end (FC1)"
}
text {
object {
x=574
y=26
width=70
height=20
}
"basic attribute" {
clr=36
fill="outline"
}
textix="Purple: Current at end (FC2)"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,37 @@
TOP=../..
include $(TOP)/configure/CONFIG
#----------------------------------------
# ADD MACRO DEFINITIONS AFTER THIS LINE
#=============================
# build an ioc application
PROD_IOC = vlinac
# <name>.dbd will be created from <name>Include.dbd
DBD += vlinac.dbd
# <name>_registerRecordDeviceDriver.cpp will be created from <name>.dbd
vlinac_SRCS += vlinac_registerRecordDeviceDriver.cpp
vlinac_SRCS_DEFAULT += vlinacMain.cpp
vlinac_SRCS_vxWorks += -nil-
# The following adds support from base/src/vxWorks
vlinac_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary
# The following builds sequence programs as a component of vlinac
# To build .st files, SNCSEQ must be defined in <top>/configure/RELEASE
# Also in _APPNAME_Include.dbd uncomment #registrar(<name>Registrar) lines
#vlinac_SRCS += beamTrajectory.st
#vlinac_SRCS += autoControl.st
#vlinac_SRCS += stabilizer.st
#vlinac_LIBS += seq pv
vlinac_LIBS += $(EPICS_BASE_IOC_LIBS)
#===========================
include $(TOP)/configure/RULES
#----------------------------------------
# ADD RULES AFTER THIS LINE

View File

@@ -0,0 +1,316 @@
program autoControl
option -c; /* don't wait for all channels to connect */
option +r; /* reentrant */
short mode;
assign mode to "{user}:autoC";
monitor mode;
short htrMon;
assign htrMon to "{user}:cathodeTempM";
monitor htrMon;
string msg;
assign msg to "{user}:OP:autoMsg";
float htr;
assign htr to "{user}:cathodeCurrentC";
short beamOn;
assign beamOn to "{user}:gunOnC";
short gv1;
assign gv1 to "{user}:GV1:positionC";
short h1Scan;
assign h1Scan to "{user}A:H1:setCurrentC.SCAN";
short v1Scan;
assign v1Scan to "{user}A:V1:setCurrentC.SCAN";
short h2Scan;
assign h2Scan to "{user}A:H2:setCurrentC.SCAN";
short v2Scan;
assign v2Scan to "{user}A:V2:setCurrentC.SCAN";
short h3Scan;
assign h3Scan to "{user}A:H3:setCurrentC.SCAN";
short v3Scan;
assign v3Scan to "{user}A:V3:setCurrentC.SCAN";
short h4Scan;
assign h4Scan to "{user}A:H4:setCurrentC.SCAN";
short v4Scan;
assign v4Scan to "{user}A:V4:setCurrentC.SCAN";
short h5Scan;
assign h5Scan to "{user}A:H5:setCurrentC.SCAN";
short v5Scan;
assign v5Scan to "{user}A:V5:setCurrentC.SCAN";
float h1A;
assign h1A to "{user}A:H1:setCurrentC";
float v1A;
assign v1A to "{user}A:V1:setCurrentC";
float h2A;
assign h2A to "{user}A:H2:setCurrentC";
float v2A;
assign v2A to "{user}A:V2:setCurrentC";
float h3A;
assign h3A to "{user}A:H3:setCurrentC";
float v3A;
assign v3A to "{user}A:V3:setCurrentC";
float h4A;
assign h4A to "{user}A:H4:setCurrentC";
float v4A;
assign v4A to "{user}A:V4:setCurrentC";
float h5A;
assign h5A to "{user}A:H5:setCurrentC";
float v5A;
assign v5A to "{user}A:V5:setCurrentC";
float h1AR;
assign h1AR to "{user}A:H1:setCurrentC.OROC";
float v1AR;
assign v1AR to "{user}A:V1:setCurrentC.OROC";
float h2AR;
assign h2AR to "{user}A:H2:setCurrentC.OROC";
float v2AR;
assign v2AR to "{user}A:V2:setCurrentC.OROC";
float h3AR;
assign h3AR to "{user}A:H3:setCurrentC.OROC";
float v3AR;
assign v3AR to "{user}A:V3:setCurrentC.OROC";
float h4AR;
assign h4AR to "{user}A:H4:setCurrentC.OROC";
float v4AR;
assign v4AR to "{user}A:V4:setCurrentC.OROC";
float h5AR;
assign h5AR to "{user}A:H5:setCurrentC.OROC";
float v5AR;
assign v5AR to "{user}A:V5:setCurrentC.OROC";
%%#include <epicsThread.h>
ss autoCtlSS
{
state init
{
when()
{
h1Scan = 0;
v1Scan = 0;
h2Scan = 0;
v2Scan = 0;
h3Scan = 0;
v3Scan = 0;
h4Scan = 0;
v4Scan = 0;
h5Scan = 0;
v5Scan = 0;
pvPut(h1Scan);
pvPut(v1Scan);
pvPut(h2Scan);
pvPut(v2Scan);
pvPut(h3Scan);
pvPut(v3Scan);
pvPut(h4Scan);
pvPut(v4Scan);
pvPut(h5Scan);
pvPut(v5Scan);
%% epicsThreadSleep(.5);
mode = 0;
pvPut(mode);
%% epicsThreadSleep(.1);
} state waitForAuto
}
state waitForAuto
{
when(mode)
{
beamOn = 0;
pvPut(beamOn);
gv1 = 0;
pvPut(gv1);
h1AR = 0;
v1AR = 0;
h2AR = 0;
v2AR = 0;
h3AR = 0;
v3AR = 0;
h4AR = 0;
v4AR = 0;
h5AR = 0;
v5AR = 0;
pvPut(h1AR);
pvPut(v1AR);
pvPut(h2AR);
pvPut(v2AR);
pvPut(h3AR);
pvPut(v3AR);
pvPut(h4AR);
pvPut(v4AR);
pvPut(h5AR);
pvPut(v5AR);
%% epicsThreadSleep(.1);
h1A = 0;
v1A = 0;
h2A = 0;
v2A = 0;
h3A = 0;
v3A = 0;
h4A = 0;
v4A = 0;
h5A = 0;
v5A = 0;
pvPut(h1A);
pvPut(v1A);
pvPut(h2A);
pvPut(v2A);
pvPut(h3A);
pvPut(v3A);
pvPut(h4A);
pvPut(v4A);
pvPut(h5A);
pvPut(v5A);
%% epicsThreadSleep(.2);
h1AR = 0.1;
v1AR = 0.1;
h2AR = 0.1;
v2AR = 0.1;
h3AR = 0.1;
v3AR = 0.1;
h4AR = 0.1;
v4AR = 0.1;
h5AR = 0.1;
v5AR = 0.1;
pvPut(h1AR);
pvPut(v1AR);
pvPut(h2AR);
pvPut(v2AR);
pvPut(h3AR);
pvPut(v3AR);
pvPut(h4AR);
pvPut(v4AR);
pvPut(h5AR);
pvPut(v5AR);
%% epicsThreadSleep(.2);
sprintf(msg,"Optimizing Cathode Temperature");
pvPut(msg);
htr = 12.3;
pvPut(htr);
%% epicsThreadSleep(3);
} state waitForHtr
}
state waitForHtr
{
when(htrMon > 153)
{
sprintf(msg,"Turning Beam On");
pvPut(msg);
%% epicsThreadSleep(2);
beamOn = 1;
pvPut(beamOn);
h1Scan = 9;
v1Scan = 9;
h2Scan = 9;
v2Scan = 9;
h3Scan = 9;
v3Scan = 9;
h4Scan = 9;
v4Scan = 9;
h5Scan = 9;
v5Scan = 9;
pvPut(h1Scan);
pvPut(v1Scan);
pvPut(h2Scan);
pvPut(v2Scan);
pvPut(h3Scan);
pvPut(v3Scan);
pvPut(h4Scan);
pvPut(v4Scan);
pvPut(h5Scan);
pvPut(v5Scan);
%% epicsThreadSleep(3);
h1A = -1.31;
v1A = 1.79;
h2A = 2.67;
v2A = -1.39;
h3A = -1.68;
v3A = -.8;
h4A = 1.63;
v4A = .1;
h5A = -1.83;
v5A = 2.21;
sprintf(msg,"Optimizing H1/V1 Steering");
pvPut(msg);
pvPut(h1A);
pvPut(v1A);
%% epicsThreadSleep(3);
sprintf(msg,"Optimizing H2/V2 Steering");
pvPut(msg);
pvPut(h2A);
pvPut(v2A);
%% epicsThreadSleep(3);
sprintf(msg,"Opening Gate Valve");
pvPut(msg);
%% epicsThreadSleep(2);
gv1 = 1;
pvPut(gv1);
%% epicsThreadSleep(3);
sprintf(msg,"Optimizing H3/V3 Steering");
pvPut(msg);
pvPut(h3A);
pvPut(v3A);
%% epicsThreadSleep(3);
sprintf(msg,"Optimizing H4/V4 Steering");
pvPut(msg);
pvPut(h4A);
pvPut(v4A);
%% epicsThreadSleep(3);
sprintf(msg,"Optimizing H5/V5 Steering");
pvPut(msg);
pvPut(h5A);
pvPut(v5A);
%% epicsThreadSleep(3);
sprintf(msg,"Optimization Complete");
pvPut(msg);
%% epicsThreadSleep(4);
} state init
}
}

View File

@@ -0,0 +1,251 @@
program beamTrajectory
option -c; /* don't wait for all channels to connect */
option +r; /* reentrant */
double CM1_I;
assign CM1_I to "{user}:CM1:intensityM";
monitor CM1_I;
double PM1_X;
assign PM1_X to "{user}:PM1:X:positionM";
monitor PM1_X;
double PM1_Y;
assign PM1_Y to "{user}:PM1:Y:positionM";
monitor PM1_Y;
double PM1_I;
assign PM1_I to "{user}:PM1:intensityM";
monitor PM1_I;
double PM2_X;
assign PM2_X to "{user}:PM2:X:positionM";
monitor PM2_X;
double PM2_Y;
assign PM2_Y to "{user}:PM2:Y:positionM";
monitor PM2_Y;
double PM2_I;
assign PM2_I to "{user}:PM2:intensityM";
monitor PM2_I;
double PM3_X;
assign PM3_X to "{user}:PM3:X:positionM";
monitor PM3_X;
double PM3_Y;
assign PM3_Y to "{user}:PM3:Y:positionM";
monitor PM3_Y;
double PM3_I;
assign PM3_I to "{user}:PM3:intensityM";
monitor PM3_I;
double PM4_X;
assign PM4_X to "{user}:PM4:X:positionM";
monitor PM4_X;
double PM4_Y;
assign PM4_Y to "{user}:PM4:Y:positionM";
monitor PM4_Y;
double PM4_I;
assign PM4_I to "{user}:PM4:intensityM";
monitor PM4_I;
double PM5_X;
assign PM5_X to "{user}:PM5:X:positionM";
monitor PM5_X;
double PM5_Y;
assign PM5_Y to "{user}:PM5:Y:positionM";
monitor PM5_Y;
double PM5_I;
assign PM5_I to "{user}:PM5:intensityM";
monitor PM5_I;
double FC1_I;
assign FC1_I to "{user}:FC1:intensityM";
monitor FC1_I;
double FC2_I;
assign FC2_I to "{user}:FC2:intensityM";
monitor FC2_I;
double xPosWf[8];
assign xPosWf to "{user}:PM:xTrajectoryWF";
double yPosWf[8];
assign yPosWf to "{user}:PM:yTrajectoryWF";
double iWf[8];
assign iWf to "{user}:PM:iTrajectoryWF";
double bpmLocations[8];
assign bpmLocations to "{user}:PM:distancesWF";
double refLocations[2];
assign refLocations to "{user}:PM:refLocationsWF";
double refHi[2];
assign refHi to "{user}:PM:referenceHiWF";
double refLo[2];
assign refLo to "{user}:PM:referenceLoWF";
double bpmFixedLocations[13];
short i; /* index into LI waveforms */
short cBpm; /* bpm under consideration */
ss bpmTrajectorySS
{
state init
{
when()
{
/* BPM Position from EGUN */
bpmFixedLocations[0] = 0.0;
bpmFixedLocations[1] = 2.4;
bpmFixedLocations[2] = 9.0;
bpmFixedLocations[3] = 20.0;
bpmFixedLocations[4] = 33.0;
bpmFixedLocations[5] = 44.0;
bpmFixedLocations[6] = 54,5;
bpmFixedLocations[7] = 58.0;
refLocations[0] = 0;
refLocations[1] = 60;
pvPut(refLocations);
refHi[0] = 1.0;
refHi[1] = 1.0;
refLo[0] = -1.0;
refLo[1] = -1.0;
pvPut(refHi);
pvPut(refLo);
} state waitToPlot
}
state waitToPlot
{
when(delay(1.0))
{
} state plot
}
state plot
{
when()
{
i=7;
cBpm=7;
/* include reading if > threshold */
if (FC1_I > 1.0) {
xPosWf[i] = PM5_X;
yPosWf[i] = PM5_Y;
iWf[i] = FC1_I;
bpmLocations[i] = bpmFixedLocations[cBpm];
i--;
}
else if(FC2_I > 1.0) {
xPosWf[i] = PM5_X;
yPosWf[i] = PM5_Y;
iWf[i] = FC2_I;
bpmLocations[i] = bpmFixedLocations[cBpm];
i--;
}
else if(PM5_X != 0.0) {
xPosWf[i] = PM5_X;
yPosWf[i] = PM5_Y;
iWf[i] = 0;
bpmLocations[i] = bpmFixedLocations[cBpm];
i--;
}
cBpm--;
if (PM5_X != 0.0) {
xPosWf[i] = PM5_X;
yPosWf[i] = PM5_Y;
iWf[i] = PM5_I;
bpmLocations[i] = bpmFixedLocations[cBpm];
i--;
}
cBpm--;
if (PM4_X != 0.0) {
xPosWf[i] = PM4_X;
yPosWf[i] = PM4_Y;
iWf[i] = PM4_I;
bpmLocations[i] = bpmFixedLocations[cBpm];
i--;
}
cBpm--;
if (PM3_X != 0.0) {
xPosWf[i] = PM3_X;
yPosWf[i] = PM3_Y;
iWf[i] = PM3_I;
bpmLocations[i] = bpmFixedLocations[cBpm];
i--;
}
cBpm--;
if (PM2_X != 0.0) {
xPosWf[i] = PM2_X;
yPosWf[i] = PM2_Y;
iWf[i] = PM2_I;
bpmLocations[i] = bpmFixedLocations[cBpm];
i--;
}
cBpm--;
if (PM1_X != 0.0) {
xPosWf[i] = PM1_X;
yPosWf[i] = PM1_Y;
iWf[i] = PM1_I;
bpmLocations[i] = bpmFixedLocations[cBpm];
i--;
}
cBpm--;
if (CM1_I > 1.0) {
xPosWf[i] = 0;
yPosWf[i] = 0;
iWf[i] = CM1_I;
bpmLocations[i] = bpmFixedLocations[cBpm];
i--;
xPosWf[i] = 0;
yPosWf[i] = 0;
iWf[i] = CM1_I;
bpmLocations[i] = bpmFixedLocations[cBpm-1];
i--;
}
/* fill in unplotted points on top of last point */
while (i>=0)
{
xPosWf[i] = 0;
yPosWf[i] = 0;
iWf[i] = CM1_I;
bpmLocations[i] = 0;
i--;
}
pvPut(xPosWf);
pvPut(yPosWf);
pvPut(iWf);
pvPut(bpmLocations);
} state waitToPlot
}
}

View File

@@ -0,0 +1,47 @@
program stabilizer
short enableButton;
assign enableButton to "{user}:OP:stabilizerC";
monitor enableButton;
float cathodeTemp;
assign cathodeTemp to "{user}:cathodeTempM";
monitor cathodeTemp;
float cathodeCurrent;
assign cathodeCurrent to "{user}:cathodeCurrentC";
string statusMsg;
assign statusMsg to "{user}:OP:stabilizeMsg";
ss stabilizerSS1
{
state init
{
when(1)
{
} state waitForEnable
}
state waitForEnable
{
when(enableButton)
{
printf("Starting Stabilizer\n");
} state stabilize
}
state stabilize
{
when(!enableButton)
{
printf("Stopping Stabilizer\n");
} state waitForEnable
when(delay(.5))
{
printf("Stabilizing\n");
} state stabilize
}
}

View File

@@ -0,0 +1,4 @@
include "base.dbd"
#registrar(beamTrajectoryRegistrar)
#registrar(autoControlRegistrar)
#registrar(stabilizerRegistrar)

View File

@@ -0,0 +1,21 @@
/* vlinacMain.cpp */
/* Author: Marty Kraimer Date: 17MAR2000 */
#include <stddef.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <stdio.h>
#include "epicsThread.h"
#include "iocsh.h"
int main(int argc,char *argv[])
{
if(argc>=2) {
iocsh(argv[1]);
epicsThreadSleep(.2);
}
iocsh(NULL);
return(0);
}