#!../../bin/linux-x86_64/voltage ## You may have to change voltage to something else ## everywhere it appears in this file < envPaths # The name of the IOC, also prefix that will be used in front of hardware-based records epicsEnvSet("IOCNAME","TRDVLT") # Prefix that will be used in front of the detector-based records epicsEnvSet("PREFIX","") epicsEnvSet("IOCSH_PS1","iocTRDVoltages> ") # Macros for Wiener MPOD driver epicsEnvSet("MIB","WIENER-CRATE-MIB::") epicsEnvSet("WO", "WIENER-CRATE-MIB::output") # Error Log To Console 0 or 1 eltc 1 cd ${TOP} ## Register all support components dbLoadDatabase "dbd/voltage.dbd" voltage_registerRecordDeviceDriver pdbbase #Requests for the general purpose callback tasks are placed in a ring buffer. This command can be used to set the #size for the ring buffers. The default is 2000. A message is issued when a ring buffer overflows. It should rarely be #necessary to override this default. Normally the ring buffer overflow messages appear when a callback task fails. callbackSetQueueSize 1000000 # scanOnce requests are placed in a ring buffer. # This command can be used to set the size for the ring buffer. # The default is 1000. It should rarely be necessary to override this default. # Normally the ring buffer overflow messages appear when the scanOnce task fails. scanOnceSetQueueSize 1000000 dbPvdTableSize 65536 # This prefix will show up in front of the detector-based names. detUsePrefix ${PREFIX} # Debug level for SNMP devSnmpSetParam(DebugLevel, 0) # Configure detector using SQLite database file configureDetector "TRD", "sqlite://${TOP}/iocBoot/iocvoltage/trdVoltages.db" # Automatically generate EPICS DB for detectors. Always use three arguments even if blank. # detDbLoadRecords( CRATE, SLOT, IOCPREFIX ) # First argument is the crate name. # Second argument is the slot number. # Third argument is the prefix that is normally is the IOC name followed by ":" and is used as prefix for hardware records detDbLoadRecords( "", "-1", "$(IOCNAME):" ) # Load EPICS DB for group operations on HV parameters #dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:hv:pwonoff:" ) dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:hv:v0set:" ) dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:hv:i0set:" ) dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:hv:trip:" ) dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:hv:svmax:" ) dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:hv:rampup:" ) dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:hv:rampdn:" ) dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:hv:ilock:thresh:" ) # Load PVs for group status of high voltages dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:all:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:1:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:2:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:1:l:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:1:r:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:2:l:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:2:r:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:1:l:g1:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:1:l:g2:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:1:l:g3:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:1:r:g1:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:1:r:g2:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:1:r:g3:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:2:l:g1:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:2:l:g2:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:2:l:g3:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:2:r:g1:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:2:r:g2:" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:hv:2:r:g3:" ) dbLoadRecords( "db/gemTRDgroupSwithces.db", "P=TRD:hv:" ) dbLoadRecords( "db/gemTRDinterlocks.db", "P=TRD:hv:1:" ) dbLoadRecords( "db/gemTRDinterlocks.db", "P=TRD:hv:2:" ) dbLoadRecords( "db/syncStatusesGEMHV.db", "C=TRD:hv:1:l:" ) dbLoadRecords( "db/syncStatusesGEMHV.db", "C=TRD:hv:1:r:" ) dbLoadRecords( "db/syncStatusesGEMHV.db", "C=TRD:hv:2:l:" ) dbLoadRecords( "db/syncStatusesGEMHV.db", "C=TRD:hv:2:r:" ) # Load EPICS DB for group operations on LV parameters dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:lv:switch:" ) dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:lv:v_set:" ) dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:lv:v_max_sens_sup:" ) dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:lv:v_max_term_sup:" ) dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:lv:i_set:" ) dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:lv:i_max_sup:" ) dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:lv:ilock:thresh:" ) dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:lv:vrise:" ) dbLoadRecords( "db/setGroupVoltageParametersSNC.db", "C=TRD:lv:vfall:" ) # Load PVs for group status of low voltages dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:lv:all:,S=parsed:status" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:lv:1:,S=parsed:status" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:lv:2:,S=parsed:status" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:lv:1:x:,S=parsed:status" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:lv:1:y:,S=parsed:status" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:lv:2:x:,S=parsed:status" ) dbLoadRecords( "db/getGroupVoltageStatusSNC.db", "C=TRD:lv:2:y:,S=parsed:status" ) # Load PVs for high voltage waveforms dbLoadRecords( "db/voltageWaveformSNC.db", "C=TRD:hv:vmon:,NELM=30" ) dbLoadRecords( "db/voltageWaveformSNC.db", "C=TRD:hv:imon:,NELM=30" ) # Load PVs for low voltage waveforms dbLoadRecords( "db/voltageWaveformSNC.db", "C=TRD:lv:v_sens:,NELM=44" ) dbLoadRecords( "db/voltageWaveformSNC.db", "C=TRD:lv:i_rd:,NELM=44" ) # Load IOC status records dbLoadRecords("db/iocAdminSoft.db","IOC=$(PREFIX)$(IOCNAME)") cd ${TOP}/iocBoot/${IOC} asSetFilename("${TOP}/iocBoot/common/ca_security.acf") < trd-voltages_save_restore.cmd set_pass0_restoreFile("trd-voltages.sav") set_pass1_restoreFile("trd-voltages.sav") epicsThreadSleep(2.0) iocInit create_monitor_set("trd-voltages.req", 30, "PREF=") # Start sequencers for group operations on HV paramaters #seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=hv,S=pwonoff" seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=hv,S=v0set" seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=hv,S=i0set" seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=hv,S=trip" seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=hv,S=svmax" seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=hv,S=rampup" seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=hv,S=rampdn" seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=hv,S=ilock:thresh,R=^TRD:hv:.*cath.*ilock:thresh$" # Start sequencer for high voltage group status seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:all:,S=status,R=^TRD:hv:.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:1:,S=status,R=^TRD:hv:1:.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:2:,S=status,R=^TRD:hv:2:.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:1:l:,S=status,R=^TRD:hv:1:l:.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:1:r:,S=status,R=^TRD:hv:1:r:.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:2:l:,S=status,R=^TRD:hv:2:l:.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:2:r:,S=status,R=^TRD:hv:2:r:.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:1:l:g1:,S=status,R=^TRD:hv:1:l:g1.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:1:l:g2:,S=status,R=^TRD:hv:1:l:g2.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:1:l:g3:,S=status,R=^TRD:hv:1:l:g3.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:1:r:g1:,S=status,R=^TRD:hv:1:r:g1.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:1:r:g2:,S=status,R=^TRD:hv:1:r:g2.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:1:r:g3:,S=status,R=^TRD:hv:1:r:g3.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:2:l:g1:,S=status,R=^TRD:hv:2:l:g1.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:2:l:g2:,S=status,R=^TRD:hv:2:l:g2.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:2:l:g3:,S=status,R=^TRD:hv:2:l:g3.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:2:r:g1:,S=status,R=^TRD:hv:2:r:g1.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:2:r:g2:,S=status,R=^TRD:hv:2:r:g2.*:status$" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=hv,G=:2:r:g3:,S=status,R=^TRD:hv:2:r:g3.*:status$" # Start sequencers for group operations on LV paramaters seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=lv,S=switch" seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=lv,S=v_set" seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=lv,S=v_max_sens_sup" seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=lv,S=v_max_term_sup" seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=lv,S=i_set" seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=lv,S=i_max_sup" seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=lv,S=ilock:thresh" seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=lv,S=vrise" seq sncSetGroupVoltageParameters, "P=none,D=TRD,V=lv,S=vfall" # Start sequencer for low voltage group status seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=lv,G=:all:,S=parsed:status,R=^TRD:lv:.*:parsed:status" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=lv,G=:1:,S=parsed:status,R=^TRD:lv:1:.*:parsed:status" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=lv,G=:2:,S=parsed:status,R=^TRD:lv:2:.*:parsed:status" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=lv,G=:1:x:,S=parsed:status,R=^TRD:lv:1:x:.*:parsed:status" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=lv,G=:1:y:,S=parsed:status,R=^TRD:lv:1:.y:.*:parsed:status" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=lv,G=:2:x:,S=parsed:status,R=^TRD:lv:1:x:.*:parsed:status" seq sncGetGroupVoltageStatus, "P=none,D=TRD,V=lv,G=:2:y:,S=parsed:status,R=^TRD:lv:2:.y:.*:parsed:status" # Start sequencer for High Voltage waveforms seq sncFillVoltageWaveform, "D=TRD,V=hv,P=none,S=vmon,NELM=30" seq sncFillVoltageWaveform, "D=TRD,V=hv,P=none,S=imon,NELM=30" # Start sequencer for Low Voltage waveforms seq sncFillVoltageWaveform, "D=TRD,V=lv,P=none,S=v_sens,NELM=44" seq sncFillVoltageWaveform, "D=TRD,V=lv,P=none,S=i_rd,NELM=44" # SYNC On/Off buttons in EPICS in GEMs since the board syncs them in the hardware #seq syncHighVoltegeStatusesGEM "P=none,D=TRD,V=hv,T=1,E=l" #seq syncHighVoltegeStatusesGEM "P=none,D=TRD,V=hv,T=1,E=r" #seq syncHighVoltegeStatusesGEM "P=none,D=TRD,V=hv,T=2,E=l" #seq syncHighVoltegeStatusesGEM "P=none,D=TRD,V=hv,T=2,E=r"