Skip to content
Snippets Groups Projects
Commit 7262171b authored by mooney's avatar mooney
Browse files

No commit message

No commit message
parent 53ec602e
No related branches found
No related tags found
No related merge requests found
Showing
with 0 additions and 633 deletions
TOP = ../..
include $(TOP)/configure/CONFIG
ARCH = solaris-sparc-gnu
TARGETS = envPaths
include $(TOP)/configure/RULES.ioc
Assuming the EPICS_HOST_ARCH environment variable is set correctly,
start the ioc from this directory by executing the following command.
../../bin/${EPICS_HOST_ARCH}/xxx st.cmd
# This file demonstrates slow feedback. The initial INP and OUT assume the first channel
# of an IP330 ADC connected to the first channel of a DAC128V DAC.
file "$(STD)/stdApp/Db/async_pid_control.db"
{
pattern
{P, PID, INP, OUT, LOPR, HOPR, DRVL, DRVH, PREC, KP, KI, KD, SCAN}
{xxx:, async_pid_slow, xxx:IP330_1, xxx:DAC3_1, 0, 100, 0, 5, 3, 0.2, 3., 0., ".1 second"}
}
#$(P)SM1.DVAL
#$(P)SM2.DVAL
#$(P)SM3.DVAL
#$(P)SM4.DVAL
#$(P)SM5.DVAL
#$(P)SM6.DVAL
#$(P)SM7.DVAL
#$(P)SM8.DVAL
#file softMotor_settings.req P=$(P),SM=SM1
#file softMotor_settings.req P=$(P),SM=SM2
#file softMotor_settings.req P=$(P),SM=SM3
#file softMotor_settings.req P=$(P),SM=SM4
#file softMotor_settings.req P=$(P),SM=SM5
#file softMotor_settings.req P=$(P),SM=SM6
#file softMotor_settings.req P=$(P),SM=SM7
#file softMotor_settings.req P=$(P),SM=SM8
#file softMotor_settings.req P=$(P),SM=SM9
#file softMotor_settings.req P=$(P),SM=SM10
#file scanParms_settings.req P=$(P),M=SM1
#file scanParms_settings.req P=$(P),M=SM2
#file scanParms_settings.req P=$(P),M=SM3
#file scanParms_settings.req P=$(P),M=SM4
#file scanParms_settings.req P=$(P),M=SM5
#file scanParms_settings.req P=$(P),M=SM6
#file scanParms_settings.req P=$(P),M=SM7
#file scanParms_settings.req P=$(P),M=SM8
#file scanParms_settings.req P=$(P),M=SM9
#file scanParms_settings.req P=$(P),M=SM10
file standardScans_settings.req P=$(P)
file saveData_settings.req P=$(P)
# Kohzu monochromator
#$(P)BraggHAO.VAL
#$(P)BraggKAO.VAL
#$(P)BraggLAO.VAL
#$(P)BraggAAO.VAL
#$(P)BraggTypeMO.VAL
#$(P)KohzuMode2MO.VAL
#$(P)Kohzu_yOffsetAO.VAL
# Io calc
file Io_settings.req P=xxx:Io:
### user calcs. Disabled on startup unless the xxxEnable PV is
### autosaved.
file userCalcs10_settings.req P=$(P)
file userCalcN_settings.req P=$(P),N=I_Detector
$(P)userCalcEnable
file userTransforms10_settings.req P=$(P)
$(P)userTranEnable
file userStringCalcs10_settings.req P=$(P)
$(P)userStringCalcEnable
file userArrayCalcs10_settings.req P=$(P)
$(P)userArrayCalcEnable
# Note that the above does not save arrays. You can do this, one record
# at a time, as follows:
#file acalcoutArrays_settings.req P=$(P)userArrayCalc1
file userStringSeqs10_settings.req P=$(P)
$(P)userStringSeqEnable
file userCalcOuts10_settings.req P=$(P)
$(P)userCalcOutEnable
file userAve10_settings.req P=$(P)
$(P)userAveEnable
# pvHistory
#file pvHistory.req P=$(P),N=1
# orientation matrix
#file orient_settings.req P=$(P),O=1
#file orient_xtals_settings.req P=$(P),O=1
## Femto amplifier 4
#file femto.req P=$(P),H=fem01:,F=seq01:
## PF4 dual filter
#file pf4common.req P=$(P),H=pf4:
#file pf4bank.req P=$(P),H=pf4:,B=A
#file pf4bank.req P=$(P),H=pf4:,B=B
# pid
#file pid_control_settings.req P=$(P) PID=pid_slow
# async-readback pid
#file pid_control_settings.req P=$(P) PID=async_pid_slow
#$(P)async_pid_slow.TRIG
#$(P)async_pid_slow.TVAL
file ramp_tweak_settings.req P=$(P) Q=rt1
file selector_settings.req P=$(P),R=obj
file SR_test.req P=$(P),N=10
#file SGM_settings.req P=$(P),SGM=SGM1
file filterDrive.req "P=xxx:,R=filter:"
file filterBladeNoSensor.req "P=xxx:,R=filter:,N=1"
file filterBladeNoSensor.req "P=xxx:,R=filter:,N=2"
file filterBladeNoSensor.req "P=xxx:,R=filter:,N=3"
file filterBladeNoSensor.req "P=xxx:,R=filter:,N=4"
file filterBladeNoSensor.req "P=xxx:,R=filter:,N=5"
file filterBladeNoSensor.req "P=xxx:,R=filter:,N=6"
file filterBladeNoSensor.req "P=xxx:,R=filter:,N=7"
file filterBladeNoSensor.req "P=xxx:,R=filter:,N=8"
file filterBladeNoSensor.req "P=xxx:,R=filter:,N=9"
file filterBladeNoSensor.req "P=xxx:,R=filter:,N=10"
file filterBladeNoSensor.req "P=xxx:,R=filter:,N=11"
file filterBladeNoSensor.req "P=xxx:,R=filter:,N=12"
file filterBladeNoSensor.req "P=xxx:,R=filter:,N=13"
file filterBladeNoSensor.req "P=xxx:,R=filter:,N=14"
file filterBladeNoSensor.req "P=xxx:,R=filter:,N=15"
file filterBladeNoSensor.req "P=xxx:,R=filter:,N=16"
# $Id$
file "$(OPTICS)/opticsApp/Db/fb_epid.db"
{
{
P=xxx:epid1,
IN=xxx:epid1:sim.VAL,
OUT=xxx:epid1:sim.D,
MODE=PID,
CALC=A,
PERMIT1="xxx:epid1:on.VAL",
PERMIT2="",
PERMIT3="",
PERMIT4=""
}
}
file "$(MOTOR)/db/motor.db"
{
pattern
{P, N, M, DTYP, C, S, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
{xxx:, 1, "m$(N)", "Motor Simulation", 0, 0, "M0X", mm, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""}
{xxx:, 2, "m$(N)", "Motor Simulation", 0, 1, "M0Y", mm, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""}
{xxx:, 3, "m$(N)", "Motor Simulation", 0, 2, "M1Y", mm, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""}
{xxx:, 4, "m$(N)", "Motor Simulation", 0, 3, "M2X", mm, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""}
{xxx:, 5, "m$(N)", "Motor Simulation", 0, 4, "M2Y", mm, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""}
{xxx:, 6, "m$(N)", "Motor Simulation", 0, 5, "M2Z", mm, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""}
{xxx:, 7, "m$(N)", "Motor Simulation", 0, 6, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""}
{xxx:, 8, "m$(N)", "Motor Simulation", 0, 7, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""}
{xxx:, 9, "m$(N)", "Motor Simulation", 0, 0, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""}
{xxx:, 10, "m$(N)", "Motor Simulation", 0, 1, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""}
{xxx:, 11, "m$(N)", "Motor Simulation", 0, 2, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""}
{xxx:, 12, "m$(N)", "Motor Simulation", 0, 3, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""}
{xxx:, 13, "m$(N)", "Motor Simulation", 0, 4, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""}
{xxx:, 14, "m$(N)", "Motor Simulation", 0, 5, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""}
{xxx:, 15, "m$(N)", "Motor Simulation", 0, 6, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""}
{xxx:, 16, "m$(N)", "Motor Simulation", 0, 7, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""}
}
# The is the ASYN example for communication to 4 simulated motors
# "#!" marks lines that can be uncommented.
dbLoadTemplate("motorSim.substitutions")
# Create simulated motors: ( start card , start axis , low limit, high limit, home posn, # cards, # axes to setup)
motorSimCreate( 0, 0, -32000, 32000, 0, 1, 8 )
# Setup the Asyn layer (portname, low-level driver drvet name, card, number of axes on card)
#drvAsynMotorConfigure("motorSim1", "motorSim", 0, 8)
file "$(MOTOR)/db/basic_asyn_motor.db"
{
pattern
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
{xxx:, 1, "m$(N)", "asynMotor", motorSim1, 0, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
{xxx:, 2, "m$(N)", "asynMotor", motorSim1, 1, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
{xxx:, 3, "m$(N)", "asynMotor", motorSim1, 2, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
{xxx:, 4, "m$(N)", "asynMotor", motorSim1, 3, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
{xxx:, 5, "m$(N)", "asynMotor", motorSim1, 4, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
{xxx:, 6, "m$(N)", "asynMotor", motorSim1, 5, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
{xxx:, 7, "m$(N)", "asynMotor", motorSim1, 6, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
{xxx:, 8, "m$(N)", "asynMotor", motorSim1, 7, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
}
file "$(OPTICS)/opticsApp/Db/orient_xtals.db"
{
pattern
{P, O, PREC, N, xtal, a, b, c, alpha, beta, gamma}
{xxx:, 1, 4, 1, Silicon, 5.431, 5.431, 5.431, 90, 90, 90}
{xxx:, 1, 4, 2, "Beryllium hcp", 2.2858, 2.2858, 3.5843, 90, 90, 120}
{xxx:, 1, 4, 3, VO2, 5.743, 4.517, 5.375, 90, 122.6, 90}
{xxx:, 1, 4, 4, undefined, 1, 1, 1, 90, 90, 90}
{xxx:, 1, 4, 5, undefined, 1, 1, 1, 90, 90, 90}
{xxx:, 1, 4, 6, undefined, 1, 1, 1, 90, 90, 90}
{xxx:, 1, 4, 7, undefined, 1, 1, 1, 90, 90, 90}
{xxx:, 1, 4, 8, undefined, 1, 1, 1, 90, 90, 90}
{xxx:, 1, 4, 9, undefined, 1, 1, 1, 90, 90, 90}
{xxx:, 1, 4, 10, undefined, 1, 1, 1, 90, 90, 90}
}
# This file demonstrates slow feedback. The initial INP and OUT assume the first channel
# of an IP330 ADC connected to the first channel of a DAC128V DAC.
file "$(STD)/stdApp/Db/pid_control.db"
{
pattern
{P, PID, INP, OUT, LOPR, HOPR, DRVL, DRVH, PREC, KP, KI, KD, SCAN}
{xxx:, pid_slow, "xxx:IP330_1 PP", xxx:DAC3_1, 0, 100, 0, 5, 3, 0.2, 3., 0., ".1 second"}
}
../../bin/solaris-sparc-gnu/xxx st.cmd
[prefix]
$(P)
[status]
$(P)saveData_status
[message]
$(P)saveData_message
[filename]
$(P)saveData_fileName
[counter] # scan counter
$(P)saveData_scanNumber
[fileSystem] # scan file system
$(P)saveData_fileSystem
[subdir] # scan file subdirectory
$(P)saveData_subDir
[basename] # PV containing the desired data-file base name
$(P)saveData_baseName
[fullPathName]
$(P)saveData_fullPathName
[realTime1D] # if nonzero, write 1D data as it comes in
$(P)saveData_realTime1D
[scanRecord] # specify scan records to be monitored
$(P)scanH
$(P)scan1
$(P)scan2
$(P)scan3
$(P)scan4
[extraPV]
$(P)saveData_comment1
$(P)saveData_comment2
$(P)scan1.P1SM "scan mode"
# BEGIN save_restore.cmd ------------------------------------------------------
# Debug-output level
save_restoreSet_Debug(0)
### save_restore setup
#
# This file does not require modification for standard use, but...
# status PVs
#save_restoreSet_UseStatusPVs(1)
save_restoreSet_status_prefix("xxx:")
dbLoadRecords("$(AUTOSAVE)/asApp/Db/save_restoreStatus.db", "P=xxx:, DEAD_SECONDS=5")
# Ok to save/restore save sets with missing values (no CA connection to PV)?
save_restoreSet_IncompleteSetsOk(1)
# Save dated backup files?
save_restoreSet_DatedBackupFiles(1)
# Number of sequenced backup files to write
save_restoreSet_NumSeqFiles(3)
# Time interval between sequenced backups
save_restoreSet_SeqPeriodInSeconds(300)
# specify where save files should be
set_savefile_path("$(TOP)/iocBoot/$(IOC)", "autosave")
###
# specify what save files should be restored. Note these files must be
# in the directory specified in set_savefile_path(), or, if that function
# has not been called, from the directory current when iocInit is invoked
set_pass0_restoreFile("auto_positions.sav")
set_pass0_restoreFile("auto_settings.sav")
set_pass1_restoreFile("auto_settings.sav")
# Note that you can restore a .sav file without also autosaving to it.
#set_pass0_restoreFile("myInitData.sav")
#set_pass1_restoreFile("myInitData.sav")
###
# specify directories in which to to search for included request files
set_requestfile_path("$(STARTUP)", "")
set_requestfile_path("$(STARTUP)", "autosave")
set_requestfile_path("$(AREA_DETECTOR)", "ADApp/Db")
set_requestfile_path("$(AUTOSAVE)", "asApp/Db")
set_requestfile_path("$(CALC)", "calcApp/Db")
#set_requestfile_path("$(CAMAC)", "camacApp/Db")
set_requestfile_path("$(DAC128V)", "dac128VApp/Db")
set_requestfile_path("$(DXP)", "dxpApp/Db")
set_requestfile_path("$(IP)", "ipApp/Db")
set_requestfile_path("$(IP330)", "ip330App/Db")
set_requestfile_path("$(IPUNIDIG)", "ipUnidigApp/Db")
#set_requestfile_path("$(LOVE)", "loveApp/Db")
set_requestfile_path("$(MCA)", "mcaApp/Db")
#set_requestfile_path("$(MODBUS)", "modbusApp/Db")
set_requestfile_path("$(MOTOR)", "motorApp/Db")
set_requestfile_path("$(OPTICS)", "opticsApp/Db")
set_requestfile_path("$(QUADEM)", "quadEMApp/Db")
set_requestfile_path("$(SSCAN)", "sscanApp/Db")
set_requestfile_path("$(STD)", "stdApp/Db")
#set_requestfile_path("$(VAC)", "vacApp/Db")
set_requestfile_path("$(VME)", "vmeApp/Db")
set_requestfile_path("$(TOP)", "xxxApp/Db")
# END save_restore.cmd --------------------------------------------------------
file "$(SSCAN)/sscanApp/Db/scanParms.db"
{
#{P=xxx:,SCANREC=xxx:scan1,Q=SM1,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM2,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM3,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM4,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM5,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM6,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM7,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM8,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM9,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM10,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM1,POS="$(Q).DVAL",RDBK="$(Q).DRBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM2,POS="$(Q).DVAL",RDBK="$(Q).DRBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM3,POS="$(Q).DVAL",RDBK="$(Q).DRBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM4,POS="$(Q).DVAL",RDBK="$(Q).DRBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM5,POS="$(Q).DVAL",RDBK="$(Q).DRBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM6,POS="$(Q).DVAL",RDBK="$(Q).DRBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM7,POS="$(Q).DVAL",RDBK="$(Q).DRBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM8,POS="$(Q).DVAL",RDBK="$(Q).DRBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM9,POS="$(Q).DVAL",RDBK="$(Q).DRBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=SM10,POS="$(Q).DVAL",RDBK="$(Q).DRBV"}
{P=xxx:,SCANREC=xxx:scan1,Q=Table1X,POS=table1.X,RDBK=table1.XRB}
{P=xxx:,SCANREC=xxx:scan1,Q=Table1Y,POS=table1.Y,RDBK=table1.YRB}
{P=xxx:,SCANREC=xxx:scan1,Q=Table1Z,POS=table1.Z,RDBK=table1.ZRB}
{P=xxx:,SCANREC=xxx:scan1,Q=Table1AX,POS=table1.AX,RDBK=table1.AXRB}
{P=xxx:,SCANREC=xxx:scan1,Q=Table1AY,POS=table1.AY,RDBK=table1.AYRB}
{P=xxx:,SCANREC=xxx:scan1,Q=Table1AZ,POS=table1.AZ,RDBK=table1.AZRB}
#{P=xxx:,SCANREC=xxx:scan1,Q=BraggE,POS=BraggEAO.VAL,RDBK=BraggERdbkAO.VAL}
#{P=xxx:,SCANREC=xxx:scan1,Q=BraggLambda,POS=BraggLambdaAO.VAL,RDBK=BraggLambdaRdbkAO.VAL}
#{P=xxx:,SCANREC=xxx:scan1,Q=BraggTheta,POS=BraggThetaAO.VAL,RDBK=BraggThetaRdbkAO.VAL}
#{P=xxx:,SCANREC=xxx:scan1,Q=HR1_E,POS=HR1_EAO.VAL,RDBK=HR1_ERdbkAO}
#{P=xxx:,SCANREC=xxx:scan1,Q=HR1_A,POS=HR1_worldOffAO.VAL,RDBK=HR1_worldOffAO.VAL}
# old slit
{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Hp,POS=Slit1Hxp.VAL,RDBK=Slit1Ht2.A}
{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Hn,POS=Slit1Hxn.VAL,RDBK=Slit1Ht2.B}
{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Hsize,POS=Slit1Hsize.VAL,RDBK=Slit1Ht2.C}
{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Hcenter,POS=Slit1Hcenter.VAL,RDBK=Slit1Ht2.D}
{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Vp,POS=Slit1Vxp.VAL,RDBK=Slit1Vt2.A}
{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Vn,POS=Slit1Vxn.VAL,RDBK=Slit1Vt2.B}
{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Vsize,POS=Slit1Vsize.VAL,RDBK=Slit1Vt2.C}
{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Vcenter,POS=Slit1Vcenter.VAL,RDBK=Slit1Vt2.D}
# new soft-motor-based slit
#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Hxn,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Hxp,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Hsize,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Hcenter,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Vxn,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Vxp,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Vsize,POS="$(Q).VAL",RDBK="$(Q).RBV"}
#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Vcenter,POS="$(Q).VAL",RDBK="$(Q).RBV"}
}
file "$(STD)/stdApp/Db/softMotor.db"
{
pattern
{P, SM}
{xxx:, SM1}
{xxx:, SM2}
{xxx:, SM3}
{xxx:, SM4}
{xxx:, SM5}
{xxx:, SM6}
{xxx:, SM7}
{xxx:, SM8}
{xxx:, SM9}
{xxx:, SM10}
}
# Solaris startup script
# for devIocStats
epicsEnvSet("ENGINEER","engineer")
epicsEnvSet("LOCATION","location")
# 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_solaris.dbd")
iocxxx_solaris_registerRecordDeviceDriver(pdbbase)
# Increase size of buffer for error logging from default 1256
errlogInit(5000)
# need more entries in wait/scan-record channel-access queue?
#var recDynLinkQsize, 1024
# 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
# set the protocol path for streamDevice
#epicsEnvSet("STREAM_PROTOCOL_PATH", ".")
#epicsEnvSet("STREAM_PROTOCOL_PATH", "$(TOP)/abd/def")
### save_restore setup
# We presume a suitable initHook routine was compiled into the executable.
# See also create_monitor_set(), after iocInit() .
< save_restore.cmd
# Motors
#dbLoadTemplate("motor.substitutions")
dbLoadTemplate("softMotor.substitutions")
#< motorSim.cmd
# busy record
#dbLoadRecords("$(BUSY)/busyApp/Db/busyRecord.db","P=xxx:,R=mybusy")
### Allstop, alldone
# This database must agree with the motors and other positioners you've actually loaded.
# Several versions (e.g., all_com_*.db) are in stdApp/Db
#dbLoadRecords("$(STD)/stdApp/Db/all_com_0.db","P=xxx:")
dbLoadRecords("$(MOTOR)/db/motorUtil.db", "P=xxx:")
# interpolation
#dbLoadRecords("$(CALC)/calcApp/Db/interp.db", "P=xxx:,N=2000")
dbLoadRecords("$(CALC)/calcApp/Db/interpNew.db", "P=xxx:,Q=1,N=2000")
### 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/standardScans.db","P=xxx:,MAXPTS1=8000,MAXPTS2=1000,MAXPTS3=1000,MAXPTS4=1000,MAXPTSH=2000")
dbLoadRecords("$(SSCAN)/sscanApp/Db/saveData.db","P=xxx:")
dbLoadRecords("$(SSCAN)/sscanApp/Db/scanProgress.db","P=xxx:scanProgress:")
# 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")
# 2-post mirror
#dbLoadRecords("$(OPTICS)/opticsApp/Db/2postMirror.db","P=xxx:,Q=M1,mDn=m1,mUp=m2,LENGTH=0.3")
# 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:")
# 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")
# Io calculation
dbLoadRecords("$(OPTICS)/opticsApp/Db/Io.db","P=xxx:Io:")
### 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")
# 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")
# 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")
# 4-bounce high-resolution monochromator
#dbLoadRecords("$(OPTICS)/opticsApp/Db/hrSeq.db","P=xxx:,N=1,M_PHI1=m1,M_PHI2=m2")
### Orientation matrix, four-circle diffractometer (see seq program 'orient' below)
#dbLoadRecords("$(OPTICS)/opticsApp/Db/orient.db", "P=xxx:,O=1,PREC=4")
#dbLoadTemplate("orient_xtals.substitutions")
### 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:")
var aCalcArraySize, 2000
dbLoadRecords("$(CALC)/calcApp/Db/userArrayCalcs10.db","P=xxx:,N=2000")
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:")
# string sequence (sseq) records from wherever they are
dbLoadRecords("$(CALC)/calcApp/Db/userStringSeqs10.db","P=xxx:")
#dbLoadRecords("$(STD)/stdApp/Db/userStringSeqs10.db","P=xxx:")
# ramp/tweak
dbLoadRecords("$(STD)/stdApp/Db/ramp_tweak.db","P=xxx:,Q=rt1")
dbLoadRecords("$(STD)/stdApp/Db/ramp_tweak.db","P=xxx:,Q=rt2")
# busy record
dbLoadRecords("$(BUSY)/busyApp/Db/busyRecord.db","P=xxx:,R=mybusy")
# count-down timer
dbLoadRecords("$(STD)/stdApp/Db/countDownTimer.vdb", "P=xxx:,N=1")
# alarm clock
#dbLoadRecords("$(STD)/stdApp/Db/alarmClock.vdb", "P=xxx:,N=1")
# timer
dbLoadRecords("$(STD)/stdApp/Db/timer.db", "P=xxx:,N=1")
# trend
#dbLoadRecords("$(STD)/stdApp/Db/trend.db", "P=xxx:")
# 4-step measurement
dbLoadRecords("$(STD)/stdApp/Db/4step.db", "P=xxx:")
# pvHistory (in-crate archive of up to three PV's)
dbLoadRecords("$(STD)/stdApp/Db/pvHistory.db","P=xxx:,N=1,MAXSAMPLES=1440")
# Slow feedback
dbLoadTemplate "pid_slow.substitutions"
dbLoadTemplate "async_pid_slow.substitutions"
# Miscellaneous PV's, such as burtResult
dbLoadRecords("$(STD)/stdApp/Db/misc.db","P=xxx:")
dbLoadRecords("$(DEVIOCSTATS)/db/ioc.db","IOCNAME=xxx, TODFORMAT=%m/%d/%y %H:%M:%S")
#dbLoadRecords("$(DEVIOCSTATS)/db/iocAdminSoft.db","IOC=xxx")
#dbLoadRecords("$(DEVIOCSTATS)/db/iocEnvVar.db","IOCNAME=xxx,ENVNAME=WHATEVER")
#dbLoadRecords("$(DEVIOCSTATS)/db/iocGeneralTime.db","IOCNAME=xxx")
### Load database records for Femto amplifiers
#dbLoadRecords("$(STD)/stdApp/Db/femto.db","P=xxx:,H=fem01:,F=seq01:")
### Load database records for PF4 filters
#dbLoadRecords("$(OPTICS)/opticsApp/Db/pf4common.db","P=xxx:,H=pf4:,A=A,B=B")
#dbLoadRecords("$(OPTICS)/opticsApp/Db/pf4bank.db","P=xxx:,H=pf4:,B=A")
#dbLoadRecords("$(OPTICS)/opticsApp/Db/pf4bank.db","P=xxx:,H=pf4:,B=B")
###############################################################################
iocInit
###############################################################################
# write all the PV names to a local file
dbl > dbl-all.txt
### 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"
# Orientation-matrix
#seq &orient, "P=xxx:orient1:,PM=xxx:,mTTH=m9,mTH=m10,mCHI=m11,mPHI=m12"
# Start PF4 filter sequence program
# name = what user will call it
# P = prefix of database and sequencer
# H = hardware (i.e. pf4)
# B = bank indicator (i.e. A,B)
# M = Monochromatic-beam energy PV
# BP = Filter control bit PV prefix
# B1 = Filter control bit 0 number
# B2 = Filter control bit 1 number
# B3 = Filter control bit 2 number
# B4 = Fitler control bit 3 number
#seq &pf4,"name=pf1,P=xxx:,H=pf4:,B=A,M=xxx:BraggEAO,BP=xxx:Unidig1Bo,B1=3,B2=4,B3=5,B4=6"
#seq &pf4,"name=pf2,P=xxx:,H=pf4:,B=B,M=xxx:BraggEAO,BP=xxx:Unidig1Bo,B1=7,B2=8,B3=9,B4=10"
seq(&pf4,"name=pf1,P=xxx:,H=pf4:,B=A,M=xxx:userCalc1,BP=xxx:userCalc1.,B1=A,B2=B,B3=C,B4=D")
seq(&pf4,"name=pf2,P=xxx:,H=pf4:,B=B,M=xxx:userCalc1,BP=xxx:userCalc1.,B1=E,B2=F,B3=G,B4=H")
# Alternative filter seq program
seq filterDrive,"NAME=filterDrive,P=xxx:,R=filter:,NUM_FILTERS=16"
# Start Femto amplifier sequence programs
#seq femto,"name=fem1,P=xxx:,H=fem01:,F=seq01:,G1=xxx:Unidig1Bo6,G2=xxx:Unidig1Bo7,G3=xxx:Unidig1Bo8,NO=xxx:Unidig1Bo10"
seq &scanProgress, "S=xxx:, P=xxx:scanProgress:"
### 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 positions every five seconds
create_monitor_set("auto_positions.req",5,"P=xxx:")
# save other things every thirty seconds
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
saveData_Init("saveData.req", "P=xxx:")
motorUtilInit("xxx:")
#var sscanRecordDebug,1
#var debug_saveData,1
# print the time our boot was finished
date
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment