diff --git a/iocBoot/iocLinux/st.cmd b/iocBoot/iocLinux/st.cmd index 021774e9873bbd603281ee306a7a1c6450945184..fd97e1e402ca879393268317e4403cbdd5147697 100644 --- a/iocBoot/iocLinux/st.cmd +++ b/iocBoot/iocLinux/st.cmd @@ -1,115 +1,164 @@ -# vxWorks startup script +# Linux startup script -# Read environment variables < envPaths # save_restore.cmd needs the full path to the startup directory, which # envPaths currently does not provide epicsEnvSet(STARTUP,$(TOP)/iocBoot/$(IOC)) -################################################################################ -# Tell EPICS all about the record types, device-support modules, drivers, -# etc. in the software we just loaded (xxx.munch) -dbLoadDatabase("../../dbd/iocxxx.dbd") -iocxxx_registerRecordDeviceDriver(pdbbase) - # Increase size of buffer for error logging from default 1256 -errlogInit(5000) - -# debug sseq record -#var sseqRecDebug,10 - -# need more entries in wait/scan-record channel-access queue? -#var recDynLinkQsize, 1024 +errlogInit(20000) # Specify largest array CA will transport # Note for N sscanRecord data points, need (N+1)*8 bytes, else MEDM # plot doesn't display epicsEnvSet EPICS_CA_MAX_ARRAY_BYTES 64008 +################################################################################ +# Tell EPICS all about the record types, device-support modules, drivers, +# etc. in the software we just loaded (xxx.munch) +dbLoadDatabase("../../dbd/iocxxx.dbd") +iocxxx_registerRecordDeviceDriver(pdbbase) + ### save_restore setup -# We presume a suitable initHook routine was compiled into the executable. +# We presume a suitable initHook routine was compiled into xxx.munch. # See also create_monitor_set(), after iocInit() . < save_restore.cmd -# interpolation -dbLoadRecords("$(CALC)/calcApp/Db/interp.db", "P=xxx:,N=2000") +# serial support +< serial.cmd + +# Motors +#dbLoadTemplate("basic_motor.substitutions") +dbLoadTemplate("motor.substitutions") +dbLoadTemplate("softMotor.substitutions") +dbLoadTemplate("pseudoMotor.substitutions") + +### Allstop, alldone +# This database must agree with the motors and other positioners you've actually loaded. +# Several versions (e.g., all_com_32.db) are in stdApp/Db +dbLoadRecords("$(STD)/stdApp/Db/all_com_16.db","P=xxx:") +### Insertion-device control +#dbLoadRecords("$(STD)/stdApp/Db/IDctrl.db","P=xxx:,xx=02us") + +# sample-wheel +dbLoadRecords("$(STD)/stdApp/Db/sampleWheel.db", "P=xxx:,ROWMOTOR=xxx:m7,ANGLEMOTOR=xxx:m8") ### Scan-support software # crate-resident scan. This executes 1D, 2D, 3D, and 4D scans, and caches # 1D data, but it doesn't store anything to disk. (See 'saveData' below for that.) -dbLoadRecords("$(SSCAN)/sscanApp/Db/scan.db","P=xxx:,MAXPTS1=4000,MAXPTS2=200,MAXPTS3=10,MAXPTS4=10,MAXPTSH=4000") +dbLoadRecords("$(SSCAN)/sscanApp/Db/scan.db","P=xxx:,MAXPTS1=8000,MAXPTS2=1000,MAXPTS3=10,MAXPTS4=10,MAXPTSH=8000") + +# A set of scan parameters for each positioner. This is a convenience +# for the user. It can contain an entry for each scannable thing in the +# crate. +dbLoadTemplate("scanParms.substitutions") + +### Slits +dbLoadRecords("$(OPTICS)/opticsApp/Db/2slit.db","P=xxx:,SLIT=Slit1V,mXp=m3,mXn=m4") +dbLoadRecords("$(OPTICS)/opticsApp/Db/2slit.db","P=xxx:,SLIT=Slit1H,mXp=m5,mXn=m6") + +# under development... +#dbLoadRecords("$(OPTICS)/opticsApp/Db/2slit_soft.db","P=xxx:,SLIT=Slit2V,mXp=m13,mXn=m14") +#dbLoadRecords("$(OPTICS)/opticsApp/Db/2slit_soft.db","P=xxx:,SLIT=Slit2H,mXp=m15,mXn=m16") + +# X-ray Instrumentation Associates Huber Slit Controller +# supported by a customized version of the SNL program written by Pete Jemian +#dbLoadRecords("$(OPTICS)/opticsApp/Db/xia_slit.db", "P=xxx:, HSC=hsc1:") +#dbLoadRecords("$(OPTICS)/opticsApp/Db/xia_slit.db", "P=xxx:, HSC=hsc2:") +#dbLoadRecords("$(IP)/ipApp/Db/generic_serial.db", "P=xxx:,C=0,SERVER=serial7") -# Slits -#dbLoadRecords("$(OPTICS)/opticsApp/Db/2slit.db","P=xxx:,SLIT=Slit1V,mXp=m3,mXn=m4") -#dbLoadRecords("$(OPTICS)/opticsApp/Db/2slit.db","P=xxx:,SLIT=Slit1H,mXp=m5,mXn=m6") -# 2-post mirror -#dbLoadRecords("$(OPTICS)/opticsApp/Db/2postMirror.db","P=xxx:,Q=M1,mDn=m1,mUp=m2,LENGTH=0.3") +### 2-post mirror +#dbLoadRecords("$(OPTICS)/opticsApp/Db/2postMirror.db","P=xxx:,Q=M1,mDn=m18,mUp=m17,LENGTH=0.3") -# User filters +### User filters #dbLoadRecords("$(OPTICS)/opticsApp/Db/filterMotor.db","P=xxx:,Q=fltr1:,MOTOR=m1,LOCK=fltr_1_2:") #dbLoadRecords("$(OPTICS)/opticsApp/Db/filterMotor.db","P=xxx:,Q=fltr2:,MOTOR=m2,LOCK=fltr_1_2:") +#dbLoadRecords("$(OPTICS)/opticsApp/Db/filterLock.db","P=xxx:,Q=fltr2:,LOCK=fltr_1_2:,LOCK_PV=xxx:DAC1_1.VAL") -# Optical tables -#var tableRecordDebug,1 -#dbLoadRecords("$(OPTICS)/opticsApp/Db/table.db","P=xxx:,Q=Table1,T=table1,M0X=m1,M0Y=m2,M1Y=m3,M2X=m4,M2Y=m5,M2Z=m6,GEOM=SRI") +### Optical tables +#tableRecordDebug=1 +dbLoadRecords("$(OPTICS)/opticsApp/Db/table.db","P=xxx:,Q=Table1,T=table1,M0X=m1,M0Y=m2,M1Y=m3,M2X=m4,M2Y=m5,M2Z=m6,GEOM=SRI") ### Monochromator support ### # Kohzu and PSL monochromators: Bragg and theta/Y/Z motors # standard geometry (geometry 1) -#dbLoadRecords("$(OPTICS)/opticsApp/Db/kohzuSeq.db","P=xxx:,M_THETA=m1,M_Y=m2,M_Z=m3,yOffLo=17.4999,yOffHi=17.5001") +#dbLoadRecords("$(OPTICS)/opticsApp/Db/kohzuSeq.db","P=xxx:,M_THETA=m9,M_Y=m10,M_Z=m11,yOffLo=17.4999,yOffHi=17.5001") # modified geometry (geometry 2) -#dbLoadRecords("$(OPTICS)/opticsApp/Db/kohzuSeq.db","P=xxx:,M_THETA=m1,M_Y=m2,M_Z=m3,yOffLo=4,yOffHi=36") +#dbLoadRecords("$(OPTICS)/opticsApp/Db/kohzuSeq.db","P=xxx:,M_THETA=m9,M_Y=m10,M_Z=m11,yOffLo=4,yOffHi=36") # Spherical grating monochromator -#dbLoadRecords("$(OPTICS)/opticsApp/Db/SGM.db","P=xxx:,N=1,M_x=m1,M_rIn=m2,M_rOut=m3,M_g=m4") +#dbLoadRecords("$(OPTICS)/opticsApp/Db/SGM.db","P=xxx:,N=1,M_x=m7,M_rIn=m6,M_rOut=m8,M_g=m9") # 4-bounce high-resolution monochromator -#dbLoadRecords("$(OPTICS)/opticsApp/Db/hrSeq.db","P=xxx:,N=1,M_PHI1=m1,M_PHI2=m2") +#dbLoadRecords("$(OPTICS)/opticsApp/Db/hrSeq.db","P=xxx:,N=1,M_PHI1=m9,M_PHI2=m10") +#dbLoadRecords("$(OPTICS)/opticsApp/Db/hrSeq.db","P=xxx:,N=2,M_PHI1=m11,M_PHI2=m12") + +# Load single element Canberra AIM MCA and ICB modules +< canberra_1.cmd + +# Load 13 element detector software +#< canberra_13.cmd + +# Load 3 element detector software +#< canberra_3.cmd ### Stuff for user programming ### dbLoadRecords("$(CALC)/calcApp/Db/userCalcs10.db","P=xxx:") +dbLoadRecords("$(CALC)/calcApp/Db/userCalcOuts10.db","P=xxx:") dbLoadRecords("$(CALC)/calcApp/Db/userStringCalcs10.db","P=xxx:") dbLoadRecords("$(CALC)/calcApp/Db/userTransforms10.db","P=xxx:") # extra userCalcs (must also load userCalcs10.db for the enable switch) dbLoadRecords("$(CALC)/calcApp/Db/userCalcN.db","P=xxx:,N=I_Detector") -#dbLoadRecords("$(CALC)/calcApp/Db/userAve10.db","P=xxx:") +dbLoadRecords("$(CALC)/calcApp/Db/userAve10.db","P=xxx:") # string sequence (sseq) record dbLoadRecords("$(STD)/stdApp/Db/yySseq.db","P=xxx:,S=Sseq1") dbLoadRecords("$(STD)/stdApp/Db/yySseq.db","P=xxx:,S=Sseq2") dbLoadRecords("$(STD)/stdApp/Db/yySseq.db","P=xxx:,S=Sseq3") # 4-step measurement -#dbLoadRecords("$(STD)/stdApp/Db/4step.db", "P=xxx:") - -### serial support ### - -# generic serial ports -#dbLoadRecords("$(IP)/ipApp/Db/generic_serial.db", "P=xxx:,C=0,SERVER=serial1") -#dbLoadRecords("$(IP)/ipApp/Db/generic_serial.db", "P=xxx:,C=0,SERVER=serial2") +dbLoadRecords("$(STD)/stdApp/Db/4step.db", "P=xxx:") +# interpolation +dbLoadRecords("$(CALC)/calcApp/Db/interp.db", "P=xxx:,N=2000") +# array test +dbLoadRecords("$(CALC)/calcApp/Db/arrayTest.db", "P=xxx:,N=2000") -# serial O/I block (generic serial record with format and parse string calcs) -# on epics/mpf processor -#dbLoadRecords("$(IP)/ipApp/Db/serial_OI_block.db","P=xxx:,N=0_1,C=0,SERVER=serial5") -# on stand-alone mpf processor -#dbLoadRecords("$(IP)/ipApp/Db/serial_OI_block.db","P=xxx:,N=1_1,C=0,SERVER=serial5") +# Slow feedback +dbLoadTemplate "pid_slow.substitutions" # Miscellaneous PV's, such as burtResult dbLoadRecords("$(STD)/stdApp/Db/misc.db","P=xxx:") +#dbLoadRecords("$(STD)/stdApp/Db/VXstats.db","P=xxx:") + +### Queensgate piezo driver +#dbLoadRecords("$(IP)/ipApp/Db/pzt_3id.db","P=xxx:") +#dbLoadRecords("$(IP)/ipApp/Db/pzt.db","P=xxx:") +### Queensgate Nano2k piezo controller +#dbLoadRecords("$(STD)/stdApp/Db/Nano2k.db","P=xxx:,S=s1") ############################################################################### iocInit ### startup State Notation Language programs -#seq &kohzuCtl, "P=xxx:, M_THETA=m1, M_Y=m2, M_Z=m3, GEOM=1, logfile=kohzuCtl.log" -#seq &hrCtl, "P=xxx:, N=1, M_PHI1=m1, M_PHI2=m2, logfile=hrCtl1.log" +#seq &kohzuCtl, "P=xxx:, M_THETA=m9, M_Y=m10, M_Z=m11, GEOM=1, logfile=kohzuCtl.log" +#seq &hrCtl, "P=xxx:, N=1, M_PHI1=m9, M_PHI2=m10, logfile=hrCtl1.log" + +# Keithley 2000 series DMM +# channels: 10, 20, or 22; model: 2000 or 2700 +seq &Keithley2kDMM,("P=xxx:, Dmm=D1, channels=22, model=2700") + +# X-ray Instrumentation Associates Huber Slit Controller +# supported by a SNL program written by Pete Jemian and modified (TMM) for use with the +# sscan record +#seq &xia_slit, "name=hsc1, P=xxx:, HSC=hsc1:, S=xxx:seriala[6]" ### Start up the autosave task and tell it what to do. # The task is actually named "save_restore". # Note that you can reload these sets after creating them: e.g., # reload_monitor_set("auto_settings.req",30,"P=xxx:") +#save_restoreDebug=20 # # save positions every five seconds create_monitor_set("auto_positions.req",5,"P=xxx:") @@ -117,15 +166,7 @@ create_monitor_set("auto_positions.req",5,"P=xxx:") create_monitor_set("auto_settings.req",30,"P=xxx:") ### Start the saveData task. -# saveData_MessagePolicy -# 0: wait forever for space in message queue, then send message -# 1: send message only if queue is not full -# 2: send message only if queue is not full and specified time has passed (SetCptWait() -# sets this time.) -# 3: if specified time has passed, wait for space in queue, then send message -# else: don't send message -#var "debug_saveData" 2 -#saveData_MessagePolicy = 2 -#saveData_SetCptWait_ms(100) saveData_Init("saveData.req", "P=xxx:") -#saveData_PrintScanInfo("xxx:scan1") + +dbcar(0,1) +