def rockit '{
local motmne motnum totmov
local start_pos stop_pos
local start_steps stop_steps
global ROCKINIT[]
if ($# !=2) {
print "usage: $0 <motor_mne> <tot_move (centered at this point)>"
exit
}
motmne = "$1"
totmov = $2
if (list_n(ROCKINIT) <= 0) {
list_init ROCKIT
}
if(_icepap_ismot(motmne)) {
_icepap_err
print "Not an IcePAP motor"
exit
}
motnum = motor_num(motmne)
waitmove
get_angles
list_add(ROCKINIT, motmne)
ROCKINIT[motmne]["pos"] = A[motnum]
ROCKINIT[motmne]["tot"] = totmov
start_pos = ROCKINIT[motmne]["pos"]-(totmov/2)
stop_pos = ROCKINIT[motmne]["pos"]+(totmov/2)
printf("Rocking %s from %f to %f\n", \
motmne, start_pos, stop_pos)
printf("Moving to start position\n")
umv motmne start_pos
start_steps = dial(motnum, start_pos) * motor_par(motnum, "step_size")
stop_steps = dial(motnum, stop_pos) * motor_par(motnum, "step_size")
printf("Start rocking motor\n")
_poslistsetup(motnum, "CYCLIC", start_steps, stop_steps, 2)
sleep(0.1)
_poslisttrackon(motnum, "TRIGGER")
printf("Stop using \"rockstop %s\"\n", motmne)
}'
def rockstop '{
local motmne motnum motpos
if ($# != 1) {
print "usage: $0 <motor_mne>"
exit
}
motmne = "$1"
motnum = motor_num(motmne)
if(_icepap_ismot(motmne)) {
_icepap_err
print "Not an IcePAP motor"
exit
}
printf("Stop rocking\n")
_poslisttrackoff(motnum)
sleep(2)
if (list_item(ROCKINIT, motmne) != -1) {
motpos = ROCKINIT[motmne]["pos"]
printf("Moving back to original position=%g\n", motpos)
umv motmne motpos
} else {
printf("No initial position stored for %s !!\n", motmne)
}
list_remove(ROCKINIT, motmne)
}'
def rocklist '{
local idx nmot motmne
nmot= list_n(ROCKINIT)
if (!nmot) {
printf("No motors rocking.\n")
} else {
for (idx= 1; idx <= nmot; idx++) {
motmne= list_item(ROCKINIT, idx)
printf("%8.8s : rocking %g around position %g\n", motmne, \
ROCKINIT[motmne]["tot"], ROCKINIT[motmne]["pos"])
}
}
}'
|