94 lines
2.0 KiB
Tcl
94 lines
2.0 KiB
Tcl
# Euler cradle scan commands for texture runs
|
|
# AJS Dec 2010
|
|
|
|
proc EulerScan {mstart mstep mend oscno} {
|
|
ephi speed 5
|
|
ephi accel 5
|
|
ephi decel 5
|
|
echi speed 2
|
|
set motdir 1
|
|
drive echi 0 ephi $mstart
|
|
foreach chival {0 15 30 45 60 75 90} {
|
|
drive echi $chival
|
|
RadCollScanBi ephi $mstart $mstep $mend $oscno $motdir
|
|
set motdir [expr {$motdir * -1}]
|
|
}
|
|
drive echi 0 ephi $mstart
|
|
}
|
|
|
|
publish EulerScan user
|
|
|
|
# continous scan for EPHI- the euler cradle phi stage (innermost axis)
|
|
# note make sure controller 2 has the PHISCAN code in it
|
|
|
|
|
|
|
|
proc EphiCtsScan {start step range steptime} {
|
|
|
|
# magic number: steps per rotation for phi
|
|
set ephisteps -12500
|
|
set ephispeed [expr {($step*1.0)/$steptime}]
|
|
set numsteps [expr {round($range/$step)}]
|
|
# broadcast $omspeed $numsteps
|
|
|
|
# run ephi to start angle -1 so that first pulse signals as ephi crosses 0 angle
|
|
# at correct velocity
|
|
ephi accel 1
|
|
ephi decel 1
|
|
ephi speed 3
|
|
drive ephi [expr {$start-1}]
|
|
ephi speed $ephispeed
|
|
ephi accel [expr {$ephispeed*1.2}]
|
|
|
|
# now set ephi parameters to galil and clear the bit
|
|
|
|
set scval [expr {($range+2.2)*$ephisteps}]
|
|
set stval [expr {$ephisteps * $step}]
|
|
broadcast $scval $stval
|
|
som send CTLEN=$scval
|
|
som send CTSTEP=$stval
|
|
# som send OMN = [expr {$numsteps+1}]
|
|
som send CB5
|
|
|
|
proc ::histogram_memory::pre_count {} {
|
|
ephi send "XQ #EPHSCAN,2"
|
|
}
|
|
|
|
histmem mode unlimited
|
|
histmem start block
|
|
|
|
newfile HISTOPERIOD_XY
|
|
for {set i 0} {$i<$numsteps} {incr i} {save $i}
|
|
ephi speed 1
|
|
|
|
|
|
# this we needed when it didn't work properly
|
|
# proc ::histogram_memory::pre_count {} {}
|
|
# ephi send SHC
|
|
# ephi send SPC=25000
|
|
# ephi send BCG
|
|
# wait 3
|
|
# ephi send "XQ #THREAD0,0"
|
|
# wait 3
|
|
# ephi reset
|
|
}
|
|
publish EphiCtsScan user
|
|
|
|
proc EulerCtsScan {range step steptime} {
|
|
set numsteps [expr {round($range/$step)}]
|
|
SetHistoSync $numsteps
|
|
foreach chi {0 15 30 45 60 75 90} {
|
|
drive echi $chi
|
|
EphiCtsScan [expr {-$range/2}] $step $range $steptime
|
|
}
|
|
# SetHistoNormal
|
|
}
|
|
|
|
publish EulerCtsScan user
|
|
|
|
proc KillEphi {} {
|
|
ephi send HX2
|
|
ephi send STC
|
|
ephi reset
|
|
}
|