Galil Homing Routine Steps - ISISComputingGroup/ibex_developers_manual GitHub Wiki
Wiki > The Backend System > IOCs > Motor IOCs > Galil > Galil Homing Routines
A number of steps are already available for homing Galils and these are used in various routines. Below is the code to use, so ${AXIS} refers to the macro for the axis, and n will indicate the step number. There are a number of variables used whose source is not detailed here.
Do nothing
This isn't quite nothing, it waits 100 ms
IF ((hjog${AXIS}=n) & (_BG${AXIS}=0) & (home${AXIS}=1))
WT100;hjog${AXIS}=n+1
ENDIF
Find Index
If hjog${AXIS} = 1
then the stop code check at the end can be omitted, and the speed multiplier (sm
) should be greater as this would be the first move to the index, e.g. use 1 for the initial index find and 0.1 for the detailed index find
If the index is behind your current location then the speed multiplier (sm
) should be negative, otherwise, it is positive.
IF ((hjog${AXIS}=n) & (_BG${AXIS}=0) & (home${AXIS}=1) & (_SC${AXIS}=1))
DC${AXIS}=(@ABS[hjgdc${AXIS}])
JG${AXIS}=((@ABS[hjgsp${AXIS}])*sm)
FI${AXIS};SH${AXIS};WT100;BG${AXIS};hjog${AXIS}=n+1
ENDIF
Move to a relative position
If coming off an index, the relative position value (rp
) should be the same sign as the last move
IF ((hjog${AXIS}=n) & (_BG${AXIS}=0) & (home${AXIS}=1) & (_SC${AXIS}=10))
DC${AXIS}=(@ABS[hjgdc${AXIS}])
PR${AXIS}=((@ABS[hjgsp${AXIS}])*rp)
SH${AXIS};WT100;BG${AXIS};hjog${AXIS}=n+1
ENDIF
Jog on to a limit
The limit in use will need to be specified (frl
)
The speed and direction will depend on the limit being moved towards and the stage in the routine (sm
)
The limit switch behaviours should stop the motor, but the interim state should be used to simplify execution
IF ((hjog${AXIS}=n) & (_BG${AXIS}=0) & (_Lfrl${AXIS}=0) & (home${AXIS}=1))
DC${AXIS}=@ABS[hjgdc${AXIS}]
JG${AXIS}=@ABS[hjgsp${AXIS}]*sm
SH${AXIS};WT50;BG${AXIS};hjog${AXIS}=n+1
ENDIF
Jog off a limit
The limit in use will need to be specified (frl
)
The speed and direction will depend on the limit being moved towards and the stage in the routine (sm
)
This is really two steps, but coming off the limit always requires a reaction once the limit is no longer engaged
IF ((hjog${AXIS}=n) & (_BG${AXIS}=0) & (_Lfrl${AXIS}=0) & (home${AXIS}=1))
DC${AXIS}=@ABS[hjgdc${AXIS}]
JG${AXIS}=@ABS[hjgsp${AXIS}]*sm
SH${AXIS};WT50;BG${AXIS};hjog${AXIS}=n+1
ENDIF
IF ((hjog${AXIS}=n+1) & (_BG${AXIS}=1) & (_LF${AXIS}=1) & (home${AXIS}=1))
ST${AXIS}
hjog${AXIS}=n+2
ENDIF
Go to the home position
IF ((hjog${AXIS}=n) & (_BG${AXIS}=0) & (home${AXIS}=1))
DC${AXIS}=(@ABS[hjgdc${AXIS}])
SP${AXIS}=(@ABS[hjgsp${AXIS}])
HM${AXIS};SH${AXIS};WT100;BG${AXIS};hjog${AXIS}=n+1
ENDIF
Find the edge of a transition
IF ((hjog${AXIS}=n) & (_BG${AXIS}=0) & (home${AXIS}=1))
DC${AXIS}=(@ABS[hjgdc${AXIS}])
SP${AXIS}=(@ABS[hjgsp${AXIS}])
FE${AXIS};SH${AXIS};WT100;BG${AXIS};hjog${AXIS}=n+2
ENDIF