Code owners
Assign users and groups as approvers for specific file changes. Learn more.
EMU.cmd 9.13 KiB
# Required modules ###
require ifcdaq,0.2.0
require singlemotion,1.4.6
require mrfioc2,2.7.13
require pev,0.1.1
require ecat2db,0.3.1
require fastacquisition,1.1.0
require dataacquisition,1.0.1
require emu,catane
require emu-motor-test,catane
require tpmac,3.11.2
### MACROS ###
# PMAC common macros3 )
epicsEnvSet("PMACPREFIX", "LNS-ISRC-010:PBI-EM-PMAC")
epicsEnvSet("PMACPORT", "GEOBRICK_ASYN")
epicsEnvSet("MOTOR_PORT", "pmac1" )
epicsEnvSet("NB_AXES", "1" )
# Motor Macros
epicsEnvSet("EGU", "mm" )
epicsEnvSet("DIR", "Pos" )
epicsEnvSet("MRES", "0.000249515")
epicsEnvSet("PREC", "4" )
epicsEnvSet("DHLM", "4" )
epicsEnvSet("DLLM", "-200" )
epicsEnvSet("VELO", "1.5" )
epicsEnvSet("HVEL", "2" )
epicsEnvSet("VBAS", "0.1" )
epicsEnvSet("VMAX", "7" )
epicsEnvSet("ACCL", "10" )
epicsEnvSet("BDST", "0" )
epicsEnvSet("INIT", "" )
epicsEnvSet("OFF", "0" )
epicsEnvSet("MOTOR_NAME1", "MTR1")
epicsEnvSet("AXIS_NO1", "1")
# Motor Status macros
epicsEnvSet("SCAN", "1 second")
epicsEnvSet("OVERHEAT1", "MAJOR" )
epicsEnvSet("SWITCH_OFF1", "MINOR" )
epicsEnvSet("OVERHEAT2", "0" )
epicsEnvSet("SWITCH_OFF2", "0" )
epicsEnvSet("MOTOR_ERROR1", "0" )
epicsEnvSet("MOTOR_ERROR2", "0" )
epicsEnvSet("MOTOR_ERROR3", "0" )
epicsEnvSet("MOTOR_ERROR4", "0" )
# EVG Macros
epicsEnvSet("SYS" "SYS0")
#####NOT NEEDED AT CATANIA epicsEnvSet("EVG" "EVG0")
epicsEnvSet("EVG_VMESLOT" "8")
# EVR Macros
epicsEnvSet("EVR_PCIDOMAIN", "0000")
epicsEnvSet("EVR_PCIBUS", "05")
epicsEnvSet("EVR_PCIDEVICE", "00")
epicsEnvSet("EVR_PCIFUNCTION", "0")
epicsEnvSet("EVR", "EVR0")
epicsEnvSet("EVR_PUL0_EVENT", "14")
epicsEnvSet("EVR_PUL0_DELAY", "$(EVR_EV14_OUT0_DELAY=0)")
epicsEnvSet("EVR_PUL0_WIDTH", "$(EVR_EV14_OUT0_WIDTH=1000)")
#DAQ macros
epicsEnvSet("DAQPREFIX", "LNS-ISRC-010" )
epicsEnvSet("DAQBUFSIZE", "1024" )
epicsEnvSet("BUFFERSIZE", "20000" )
#Scanning macros
epicsEnvSet("SCANPREFIX", "LNS-ISRC-010:PBI-EMV" )
epicsEnvSet("SCAN_SLIT", "MTR" )
epicsEnvSet("SCAN_EF", "PS" )
epicsEnvSet("SCAN_POINTS_EF", "1000" )
epicsEnvSet("SCAN_POINTS_SLIT", "100" )
epicsEnvSet(EPICS_CA_MAX_ARRAY_BYTES, 4000000)
# Connection to PMAC and setup for $(NUM_MOTORS) motors
pmacAsynIPConfigure($(PMACPORT), "10.10.3.42:1025")
pmacCreateController($(MOTOR_PORT), $(PMACPORT), 0, $(NB_AXES), 50, 300)
pmacCreateAxis($(MOTOR_PORT), $(AXIS_NO1))
# Initialize EVG
#####NOT NEEDED AT CATANIA mrmEvgSetupVME($(EVG), $(EVG_VMESLOT), 0x100000, 1, 0x01)
# Initialize EVR
mrmEvrSetupPCI($(EVR), $(EVR_PCIDOMAIN), $(EVR_PCIBUS), $(EVR_PCIDEVICE), $(EVR_PCIFUNCTION))
# Initialize daq
ndsCreateDevice(ifcdaq, CARD0, card=0, fmc=2)
### LOAD RECORDS ###
#Load EVG records
#####NOT NEEDED AT CATANIA dbLoadRecords("evg-vme-230.db", "DEVICE=$(EVG), SYS=$(SYS)")
#Load EVR records
dbLoadRecords("evr-pmc-230.db", "DEVICE=$(EVR), SYS=$(SYS)")
dbLoadRecords("evr-softEvent.template", "DEVICE=$(EVR), SYS=$(SYS), EVT=$(EVR_PUL0_EVENT), CODE=$(EVR_PUL0_EVENT)")
dbLoadRecords("evr-pulserMap.template", "DEVICE=$(EVR), SYS=$(SYS), EVT=$(EVR_PUL0_EVENT), PID=0, F=Trig, ID=0")
#####NOT NEEDED AT CATANIA dbLoadRecords("evr-pulserMap.template", "DEVICE=$(EVR), SYS=$(SYS), EVT=$(EVR_PUL0_EVENT), PID=1, F=Trig, ID=1")
#
# Load Single motions records
#
#
# Motors
#
dbLoadRecords("motor.template", "PREFIX=$(PMACPREFIX),MOTOR_NAME=$(MOTOR_NAME1),MOTOR_PORT=$(MOTOR_PORT),AXIS_NO=$(AXIS_NO1),EGU=$(EGU),DIR=$(DIR),MRES=$(MRES),PREC=$(PREC),DHLM=$(DHLM),DLLM=$(DLLM),HVEL=$(HVEL),VELO=$(VELO),VBAS=$(VBAS),VMAX=$(VMAX),ACCL=$(ACCL),BDST=$(BDST),INIT=$(INIT),OFF=$(OFF)")
#dbLoadRecords("get_value_pmac.db")
#dbLoadRecords("set_value_pmac.db")
#dbLoadRecords("console.db")
#
# Motor status
#
dbLoadRecords("motorStatus.template", "PREFIX=$(PMACPREFIX),MOTOR_NAME=$(MOTOR_NAME1),ASYN_PORT=$(PMACPORT),AXIS_NO=$(AXIS_NO1),SCAN=$(SCAN),EGU=$(EGU),PREC=$(PREC),OVERHEAT1=$(OVERHEAT1),SWITCH_OFF1=$(SWITCH_OFF1),OVERHEAT2=$(OVERHEAT2),SWITCH_OFF2=$(SWITCH_OFF2),MOTOR_ERROR1=$(MOTOR_ERROR1),MOTOR_ERROR2=$(MOTOR_ERROR2),MOTOR_ERROR3=$(MOTOR_ERROR3),MOTOR_ERROR4=$(MOTOR_ERROR4)")
#
# Homing procedure records
#
dbLoadRecords("motorHoming.template", "PREFIX=$(PMACPREFIX),MOTOR_NAME=$(MOTOR_NAME1),ASYN_PORT=$(PMACPORT),AXIS_NO=$(AXIS_NO1),PREC=$(PREC),EGU=$(EGU)")
dbLoadRecords("EMU.db", "DEVICE=$(SCANPREFIX), SCAN_SLIT=$(SCAN_SLIT), SCAN_EF=$(SCAN_EF),MTRREC=$(PMACPREFIX):$(MOTOR_NAME1), MAX_POINTS_EF=$(SCAN_POINTS_EF), MAX_POINTS_SLIT=$(SCAN_POINTS_SLIT), DAQNDSPREFIX=$(DAQPREFIX), DAQBUFSIZE=$(DAQBUFSIZE), DET1WF=PBI-EMV-FC:CurrR_Y, DET2WF=PBI-EM-HV1:VoltR_Y, DET3WF=PBI-EM-HV2:VoltR_Y, TR_TL=$(SYS)-$(EVR):Pul0-Ena-Sel, TR_TLTSEL=$(SYS)-$(EVR):Event-$(EVR_PUL0_EVENT)-SP.TIME, PSU_SP=LNS-ISRC-010:PBI-EM:HVhor-SP, PSU_RBV=LNS-ISRC-010:PBI-EM:HVhor-SP, PSU2_SP=LNS-ISRC-010:PBI-EM:HVver-SP, PSU2_RBV=LNS-ISRC-010:PBI-EM:HVver-SP,BUFFERSIZE=$(BUFFERSIZE)")
#
# Init ETHERCAT module
ecat2configure(0,500,1,1)
#############################################################################
######################### iocInit ###########################################
#############################################################################
iocInit
#### Motor homing
seq motorHoming "PREFIX=$(PMACPREFIX),MOTOR_NAME=$(MOTOR_NAME1)"
seq homeMtrAuto "PMACPREFIX=$(PMACPREFIX),MOTOR_NAME1=$(MOTOR_NAME1),DEVICE=$(SCANPREFIX),PREFIX=LNS-ISRC-010"
#### Simulation of a current with ES4134 from Beckoff
#seq RampCurrent "PREFIX_PS=LNS-ISRC-010:PBI-EM,CONS_PS2=HVhor-SP,DEVICE=SCAN,SCAN_SLIT=$(SCAN_SLIT)"
# SET INTERFACE FROM IFCDAQ TO Allison scanner
# Forward link wf record to Detector guard
dbpf $(DAQPREFIX):PBI-EMV-FC:CurrR_Y.FLNK $(SCANPREFIX):DET1-GUARD
dbpf $(DAQPREFIX):PBI-EM-HV1:VoltR_Y.FLNK $(SCANPREFIX):DET2-GUARD
dbpf $(DAQPREFIX):PBI-EM-HV2:VoltR_Y.FLNK $(SCANPREFIX):DET3-GUARD
# Forward link from state record to Detector trigger
dbpf $(DAQPREFIX):PBI-EM:CARD0-STAT-RB.FLNK $(SCANPREFIX):DAQTRG-DAQSTGUARD
# Forward link number of samples rbv to compress N record, so that detetor know number of elements to average over.
dbpf $(DAQPREFIX):PBI-EM:CARD0:NSAMPLES-RB.FLNK "$(SCANPREFIX):DET1-COMPRESSN"
# Set tsel on WF record to event record in EVR
dbpf $(DAQPREFIX):PBI-EMV-FC:CurrR_Y.TSEL $(SYS)-$(EVR):Event-$(EVR_PUL0_EVENT)-SP.TIME
dbpf $(DAQPREFIX):PBI-EM-HV1:VoltR_Y.TSEL $(SYS)-$(EVR):Event-$(EVR_PUL0_EVENT)-SP.TIME
dbpf $(DAQPREFIX):PBI-EM-HV2:VoltR_Y.TSEL $(SYS)-$(EVR):Event-$(EVR_PUL0_EVENT)-SP.TIME
dbpf $(SYS)-$(EVR):Time-I.TSE -2
############################################################
################### Configuration Timing ###################
############################################################
########## TIMING GENERATOR: setup TrgSrc0 to EVENT 14 ######
## Internal trigger from Mxc1 - TrgSrc0
#####NOT NEEDED AT CATANIA dbpf $(SYS)-$(EVG):TrigEvt0-EvtCode-SP $(EVR_PUL0_EVENT)
#####NOT NEEDED AT CATANIA dbpf $(SYS)-$(EVG):Mxc1-Frequency-SP 14
#####NOT NEEDED AT CATANIA dbpf $(SYS)-$(EVG):Mxc1-TrigSrc0-SP "Set"
### Setup EVR
##set the pulser 0 to trigger on output 0
########## TIMING RECEIVER: setup OUT0 ##############
dbpf $(SYS)-$(EVR):Link-Clk-SP 88.0519
dbpf $(SYS)-$(EVR):FrontOut0-Src-SP 0
dbpf $(SYS)-$(EVR):Pul0-Evt-Trig0-SP $(EVR_PUL0_EVENT)
dbpf $(SYS)-$(EVR):Pul0-Width-SP 20000
dbpf $(SYS)-$(EVR):Pul0-Delay-SP 0
dbpf $(SYS)-$(EVR):FrontOut0-Ena-SP "Enabled"
### Setup EVR
##set the pulser 1 to trigger on output 1 for BETSI
########## TIMING RECEIVER: setup OUT0 ##############
#####NOT NEEDED AT CATANIA dbpf $(SYS)-$(EVR):FrontOut1-Src-SP 1
#####NOT NEEDED AT CATANIA dbpf $(SYS)-$(EVR):Pul1-Evt-Trig1-SP $(EVR_PUL0_EVENT)
#####NOT NEEDED AT CATANIA dbpf $(SYS)-$(EVR):Pul1-Width-SP 20000
#####NOT NEEDED AT CATANIA dbpf $(SYS)-$(EVR):Pul1-Delay-SP 0
#####NOT NEEDED AT CATANIA dbpf $(SYS)-$(EVR):FrontOut1-Ena-SP "Enabled"
### Setup IFCDAQ PVs ###
# Set trigger repeat to 1
dbpf $(DAQPREFIX):PBI-EM:CARD0:TriggerRepeat 1
# Set trigger source to external GPIO
dbpf $(DAQPREFIX):PBI-EM:CARD0:TRIGGERSOURCE "EXT-GPIO"
sleep(1)
dbpf $(DAQPREFIX):PBI-EM:CARD0-STAT ON
sleep(3)
dbpf $(DAQPREFIX):PBI-EM:CARD0-STAT RUNNING
sleep(1)
dbpf $(DAQPREFIX):PBI-EM:CARD0-STAT RUNNING
# Set the Frequency to 1MHz
dbpf $(DAQPREFIX):PBI-EM:CARD0:SAMPLINGRATE 1000000
### Setup reasonable values for sscan record ###
# Initialize Motor positioners
dbpf $(SCANPREFIX):$(SCAN_SLIT).P4SP -120
dbpf $(SCANPREFIX):$(SCAN_SLIT).P4EP -180
dbpf $(SCANPREFIX):$(SCAN_SLIT).P2SP 1.5
dbpf $(SCANPREFIX):$(SCAN_SLIT).P2EP 1.5
dbpf $(SCANPREFIX):$(SCAN_SLIT).P1SP 4
dbpf $(SCANPREFIX):$(SCAN_SLIT).P1EP 4
dbpf $(SCANPREFIX):$(SCAN_SLIT).NPTS 11
# Initialize Power supply positioners
dbpf $(SCANPREFIX):PROC-AngleMax-SP 80
dbpf $(SCANPREFIX):PROC-AngleMin-SP -80
dbpf $(SCANPREFIX):$(SCAN_EF).NPTS 200
dbpf $(SCANPREFIX):$(SCAN_EF).PDLY 0.02
dbpf $(SCANPREFIX):$(SCAN_EF).DDLY 0.01
dbpf $(DAQPREFIX):PBI-EM:CARD0:TriggerEdge 1
dbpf $(DAQPREFIX):PBI-EM:CARD0:NSAMPLES_ms 7
dbpf $(DAQPREFIX):PBI-EMV:LCURSOR_ms 2
dbpf $(DAQPREFIX):PBI-EMV:RCURSOR_ms 6