664 lines
16 KiB
Tcl
664 lines
16 KiB
Tcl
# $Revision: 1.7 $
|
|
# $Date: 2006-12-10 21:56:25 $
|
|
# Author: Ferdi Franceschini (ffr@ansto.gov.au)
|
|
# Last revision by: $Author: dcl $
|
|
|
|
# START MOTOR CONFIGURATION
|
|
|
|
# Setup addresses of Galil DMC2280 controllers.
|
|
set dmc2280_controller1(host) mc1-echidna
|
|
set dmc2280_controller1(port) pmc1-echidna
|
|
|
|
set dmc2280_controller2(host) mc2-echidna
|
|
set dmc2280_controller2(port) pmc2-echidna
|
|
|
|
set dmc2280_controller3(host) mc3-echidna
|
|
set dmc2280_controller3(port) pmc3-echidna
|
|
|
|
set dmc2280_controller4(host) mc4-echidna
|
|
set dmc2280_controller4(port) pmc4-echidna
|
|
|
|
# Run slit homing routines on controllers 3 and 4
|
|
#if [catch {dmc_connect dmc2280_controller3} ] {
|
|
# dmc_sendCmd dmc2280_controller3 "XQ#HOME,1"
|
|
# dmc_close dmc2280_controller3
|
|
#}
|
|
#if [catch {dmc_connect dmc2280_controller4} ] {
|
|
# dmc_sendCmd dmc2280_controller4 "XQ#HOME,1"
|
|
# dmc_close dmc2280_controller4
|
|
#}
|
|
|
|
############################
|
|
# Motor Controller 1
|
|
# Motor Controller 1
|
|
# Motor Controller 1
|
|
############################
|
|
#:TP at HOME
|
|
#
|
|
|
|
# Monochromator phi, Tilt 1, upper
|
|
Motor mphi DMC2280 [params \
|
|
host $dmc2280_controller1(host)\
|
|
port $dmc2280_controller1(port)\
|
|
axis A\
|
|
units degrees\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -25000\
|
|
absEnc 1\
|
|
absEncHome 7415177\
|
|
cntsPerX -8192]
|
|
setHomeandRange -motor mphi -home 0 -lowrange 15 -uprange 15
|
|
mphi speed 1
|
|
mphi precision 0.01
|
|
|
|
# Monochromator chi, Tilt 2, lower
|
|
Motor mchi DMC2280 [params \
|
|
host $dmc2280_controller1(host)\
|
|
port $dmc2280_controller1(port)\
|
|
axis B\
|
|
units degrees\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX 25000\
|
|
absEnc 1\
|
|
absEncHome 7818798\
|
|
cntsPerX 8192]
|
|
setHomeandRange -motor mchi -home 90 -lowrange 15 -uprange 15
|
|
mchi speed 1
|
|
mchi precision 0.01
|
|
|
|
# Monochromator Trans 1, upper
|
|
Motor my DMC2280 [params \
|
|
host $dmc2280_controller1(host)\
|
|
port $dmc2280_controller1(port)\
|
|
axis C\
|
|
units mm\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX 25000\
|
|
absEnc 1\
|
|
absEncHome 7779997\
|
|
cntsPerX 8192]
|
|
setHomeandRange -motor my -home 0 -lowrange 20 -uprange 20
|
|
my speed 1
|
|
my precision 0.01
|
|
|
|
# Monochromator Trans 2, lower
|
|
Motor mx DMC2280 [params \
|
|
host $dmc2280_controller1(host)\
|
|
port $dmc2280_controller1(port)\
|
|
axis D\
|
|
units mm\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -25000\
|
|
absEnc 1\
|
|
absEncHome 7580365\
|
|
cntsPerX -8192]
|
|
setHomeandRange -motor mx -home 0 -lowrange 20 -uprange 20
|
|
mx speed 1
|
|
mx precision 0.01
|
|
|
|
# Monochromator omega, rotate
|
|
Motor mom DMC2280 [params \
|
|
host $dmc2280_controller1(host)\
|
|
port $dmc2280_controller1(port)\
|
|
axis E\
|
|
units degrees\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -12500\
|
|
absEnc 1\
|
|
absEncHome 13442932\
|
|
cntsPerX -4096]
|
|
setHomeandRange -motor mom -home 0 -lowrange 180 -uprange 180
|
|
mom speed 1
|
|
mom precision 0.01
|
|
|
|
# Monochromator two-theta, flight-tube rotate
|
|
Motor mtth DMC2280 [params \
|
|
host $dmc2280_controller1(host)\
|
|
port $dmc2280_controller1(port)\
|
|
axis F\
|
|
units degrees\
|
|
maxSpeed 0.5\
|
|
maxAccel 0.2\
|
|
maxDecel 0.2\
|
|
stepsPerX 25000\
|
|
absEnc 1\
|
|
absEncHome 10604013\
|
|
cntsPerX 93207]
|
|
mtth hardlowerlim 85
|
|
mtth hardupperlim 155
|
|
mtth softlowerlim 85
|
|
mtth softupperlim 155
|
|
mtth home 120
|
|
mtth speed 0.5
|
|
mtth precision 0.01
|
|
|
|
# Primary Collimator Translation X
|
|
Motor pcx DMC2280 [params \
|
|
host $dmc2280_controller1(host)\
|
|
port $dmc2280_controller1(port)\
|
|
axis G\
|
|
units mm\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX [expr -25000/6]\
|
|
absEnc 1\
|
|
absEncHome 8345644\
|
|
cntsPerX [expr 8192/6]]
|
|
setHomeandRange -motor pcx -home 0 -lowrange 0 -uprange 100
|
|
pcx speed 0.1
|
|
pcx precision 0.01
|
|
|
|
# Primary Collimator Rotation
|
|
Motor pcr DMC2280 [params \
|
|
host $dmc2280_controller1(host)\
|
|
port $dmc2280_controller1(port)\
|
|
axis H\
|
|
units degrees\
|
|
maxSpeed 0.1\
|
|
maxAccel 0.1\
|
|
maxDecel 0.1\
|
|
stepsPerX [expr 25000*100]\
|
|
absEnc 1\
|
|
absEncHome 6189745\
|
|
cntsPerX [expr -8192*100]]
|
|
setHomeandRange -motor pcr -home 0 -lowrange 10 -uprange 10
|
|
pcr speed 0.01
|
|
pcr precision 0.01
|
|
|
|
############################
|
|
# Motor Controller 2
|
|
# Motor Controller 2
|
|
# Motor Controller 2
|
|
############################
|
|
#:TP at HOME
|
|
# 7924507, 7542917, 7626584, 24029910, 24984596, 14530407, 22369621, 22369621
|
|
|
|
# Sample Tilt 1, upper, phi
|
|
Motor sphi DMC2280 [params \
|
|
host $dmc2280_controller2(host)\
|
|
port $dmc2280_controller2(port)\
|
|
axis A\
|
|
units degrees\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -25000\
|
|
absEnc 1\
|
|
absEncHome 7924507\
|
|
cntsPerX -8192]
|
|
setHomeandRange -motor sphi -home 0 -lowrange 20 -uprange 20
|
|
sphi speed 1
|
|
sphi precision 0.01
|
|
|
|
# Sample Tilt 2, lower, chi
|
|
Motor schi DMC2280 [params \
|
|
host $dmc2280_controller2(host)\
|
|
port $dmc2280_controller2(port)\
|
|
axis B\
|
|
units degrees\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX 25000\
|
|
absEnc 1\
|
|
absEncHome 7542917\
|
|
cntsPerX 8192]
|
|
setHomeandRange -motor schi -home 90 -lowrange 20 -uprange 20
|
|
schi speed 1
|
|
schi precision 0.01
|
|
|
|
# Sample Trans 1, upper, y
|
|
Motor sy DMC2280 [params \
|
|
host $dmc2280_controller2(host)\
|
|
port $dmc2280_controller2(port)\
|
|
axis C\
|
|
units mm\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX 25000\
|
|
absEnc 1\
|
|
absEncHome 7626584\
|
|
cntsPerX 8192]
|
|
setHomeandRange -motor sy -home 0 -lowrange 20 -uprange 20
|
|
sy speed 1
|
|
sy precision 0.01
|
|
|
|
# Sample Trans2, lower, x
|
|
Motor sx DMC2280 [params \
|
|
host $dmc2280_controller2(host)\
|
|
port $dmc2280_controller2(port)\
|
|
axis D\
|
|
units mm\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -25000\
|
|
absEnc 1\
|
|
absEncHome 24029910\
|
|
cntsPerX -8192]
|
|
setHomeandRange -motor sx -home 0 -lowrange 20 -uprange 20
|
|
sx speed 1
|
|
sx precision 0.01
|
|
|
|
# Sample Omega, rotate
|
|
Motor som DMC2280 [params \
|
|
host $dmc2280_controller2(host)\
|
|
port $dmc2280_controller2(port)\
|
|
axis E\
|
|
units degrees\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX 12500\
|
|
absEnc 1\
|
|
absEncHome 24984596\
|
|
cntsPerX 4096]
|
|
setHomeandRange -motor som -home 0 -lowrange 142 -uprange 218
|
|
som speed 1
|
|
som precision 0.01
|
|
|
|
# Sample two-theta, detector rotate
|
|
Motor stth DMC2280 [params \
|
|
host $dmc2280_controller2(host)\
|
|
port $dmc2280_controller2(port)\
|
|
axis F\
|
|
units degrees\
|
|
maxSpeed 0.5\
|
|
maxAccel 0.2\
|
|
maxDecel 0.2\
|
|
stepsPerX 125000\
|
|
absEnc 1\
|
|
absEncHome 14530407\
|
|
cntsPerX -93207]
|
|
stth hardlowerlim -74
|
|
stth hardupperlim 74
|
|
stth softlowerlim -70
|
|
stth softupperlim 70
|
|
stth home 0
|
|
stth speed 0.5
|
|
stth precision 0.01
|
|
|
|
#Default upper and lower ranges for vertical slits
|
|
set vertSlitLowRange 20
|
|
set vertSlitUpRange 100
|
|
|
|
#Default upper and lower ranges for horizontal slits
|
|
set horSlitLowRange 15
|
|
set horSlitUpRange 35
|
|
|
|
#Measured or computed slit motor steps per millimetre
|
|
set slitStepRate 20180
|
|
|
|
############################
|
|
# Motor Controller 3
|
|
# Motor Controller 3
|
|
# Motor Controller 3
|
|
############################
|
|
#
|
|
|
|
# Monochromator Focusing (Ge)
|
|
#Motor mf1 DMC2280 [params \
|
|
# host $dmc2280_controller3(host)\
|
|
# port $dmc2280_controller3(port)\
|
|
# axis A\
|
|
# units degrees\
|
|
# maxSpeed xxxx\
|
|
# maxAccel xxxx\
|
|
# maxDecel xxxx\
|
|
# stepsPerX xxxx\
|
|
# absEnc 1\
|
|
# absEncHome xxxx\
|
|
# cntsPerX xxxx]
|
|
#setHomeandRange -motor mf1 -home 0 -lowrange 0 -uprange 360
|
|
#mf1 speed 1
|
|
#mf1 precision 0.01
|
|
|
|
# Slit 1, right
|
|
Motor ss1r DMC2280 [params \
|
|
host $dmc2280_controller3(host)\
|
|
port $dmc2280_controller3(port)\
|
|
axis E\
|
|
units mm\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -$slitStepRate\
|
|
motorHome [expr 54.5/2*$slitStepRate]]
|
|
setHomeandRange -motor ss1r -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange
|
|
|
|
# Slit 1, left
|
|
Motor ss1l DMC2280 [params \
|
|
host $dmc2280_controller3(host)\
|
|
port $dmc2280_controller3(port)\
|
|
axis F\
|
|
units mm\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -$slitStepRate\
|
|
motorHome [expr 54.5/2*$slitStepRate]]
|
|
setHomeandRange -motor ss1l -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange
|
|
|
|
# Slit 1, up
|
|
Motor ss1u DMC2280 [params \
|
|
host $dmc2280_controller3(host)\
|
|
port $dmc2280_controller3(port)\
|
|
axis G\
|
|
units mm\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -$slitStepRate\
|
|
motorHome [expr 207.5/2*$slitStepRate]]
|
|
setHomeandRange -motor ss1u -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange
|
|
|
|
# Slit 1, down
|
|
Motor ss1d DMC2280 [params \
|
|
host $dmc2280_controller3(host)\
|
|
port $dmc2280_controller3(port)\
|
|
axis H\
|
|
units mm\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -$slitStepRate\
|
|
motorHome [expr 207.5/2*$slitStepRate]]
|
|
setHomeandRange -motor ss1d -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange
|
|
|
|
############################
|
|
# Motor Controller 4
|
|
# Motor Controller 4
|
|
# Motor Controller 4
|
|
############################
|
|
#
|
|
|
|
# Little is known about the Eularian Cradle
|
|
## Eularian-phi
|
|
#Motor ephi DMC2280 [params \
|
|
# host $dmc2280_controller4(host)\
|
|
# port $dmc2280_controller4(port)\
|
|
# axis A\
|
|
# units degrees\
|
|
# maxSpeed xxxx\
|
|
# maxAccel xxxx\
|
|
# maxDecel xxxx\
|
|
# stepsPerX xxxx\
|
|
# absEnc 1\
|
|
# absEncHome xxxx\
|
|
# cntsPerX xxxx]
|
|
#setHomeandRange -motor ephi -home 0 -lowrange 180 -uprange 180
|
|
|
|
#Motor echi DMC2280 [params \
|
|
# host $dmc2280_controller4(host)\
|
|
# port $dmc2280_controller4(port)\
|
|
# axis B\
|
|
# units degrees\
|
|
# maxSpeed xxxx\
|
|
# maxAccel xxxx\
|
|
# maxDecel xxxx\
|
|
# stepsPerX xxxx\
|
|
# absEnc 1\
|
|
# absEncHome xxxx\
|
|
# cntsPerX xxxx]
|
|
#setHomeandRange -motor echi -home 0 -lowrange 180 -uprange 180
|
|
|
|
# Slit 2, right
|
|
Motor ss2r DMC2280 [params \
|
|
host $dmc2280_controller4(host)\
|
|
port $dmc2280_controller4(port)\
|
|
axis E\
|
|
units mm\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -$slitStepRate\
|
|
motorHome [expr 52.25/2*$slitStepRate]]
|
|
setHomeandRange -motor ss2r -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange
|
|
|
|
# Slit 2, left
|
|
Motor ss2l DMC2280 [params \
|
|
host $dmc2280_controller4(host)\
|
|
port $dmc2280_controller4(port)\
|
|
axis F\
|
|
units mm\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -$slitStepRate\
|
|
motorHome [expr 52.25/2*$slitStepRate]]
|
|
setHomeandRange -motor ss2l -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange
|
|
|
|
# Slit 2, up
|
|
Motor ss2u DMC2280 [params \
|
|
host $dmc2280_controller4(host)\
|
|
port $dmc2280_controller4(port)\
|
|
axis G\
|
|
units mm\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -$slitStepRate\
|
|
motorHome [expr 204.1/2*$slitStepRate]]
|
|
setHomeandRange -motor ss2u -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange
|
|
|
|
# Slit 2, down
|
|
Motor ss2d DMC2280 [params \
|
|
host $dmc2280_controller4(host)\
|
|
port $dmc2280_controller4(port)\
|
|
axis H\
|
|
units mm\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -$slitStepRate\
|
|
motorHome [expr 204.1/2*$slitStepRate]]
|
|
setHomeandRange -motor ss2d -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange
|
|
|
|
proc mthGet {} { return [expr [SplitReply [mtth]]/2.0]}
|
|
proc mthSet {val} { return "mtth=[SplitReply [mtth]]"}
|
|
publish mthSet user
|
|
publish mthGet user
|
|
MakeConfigurableMotor mth
|
|
mth readscript mthGet
|
|
mth drivescript mthSet
|
|
|
|
proc sthGet {} { return [expr [SplitReply [stth]]/2.0]}
|
|
proc sthSet {val} { return "stth=[SplitReply [stth]]"}
|
|
publish sthGet user
|
|
publish sthSet user
|
|
MakeConfigurableMotor sth
|
|
sth readscript sthGet
|
|
sth drivescript sthSet
|
|
|
|
#--------------------------------------------------------
|
|
proc ss1widthscript {val} {
|
|
set currentWidth [expr [SplitReply [ss1r]] + [SplitReply [ss1l]]]
|
|
set diff [expr $val - $currentWidth]
|
|
set newD1R [expr [SplitReply [ss1r]] + $diff/2]
|
|
set newD1L [expr [SplitReply [ss1l]] + $diff/2]
|
|
return "ss1r=$newD1R,ss1l=$newD1L"
|
|
}
|
|
publish ss1widthscript user
|
|
|
|
#-------------------------------------------------------
|
|
proc ss1readwidth {} {
|
|
return [expr [SplitReply [ss1r]] + [SplitReply [ss1l]]]
|
|
}
|
|
publish ss1readwidth user
|
|
MakeConfigurableMotor ss1hg
|
|
ss1hg drivescript ss1widthscript
|
|
ss1hg readscript ss1readwidth
|
|
|
|
#--------------------------------------------------------
|
|
proc ss1horoffsetscript {val} {
|
|
set SR [SplitReply [ss1r]]
|
|
set SL [SplitReply [ss1l]]
|
|
set currentOffset [ expr $SR - ($SR + $SL)/2.0 ]
|
|
set diff [expr $val - $currentOffset]
|
|
set newD1R [expr $SR + $diff]
|
|
set newD1L [expr $SL - $diff]
|
|
return "ss1r=$newD1R,ss1l=$newD1L"
|
|
}
|
|
publish ss1horoffsetscript user
|
|
|
|
#-------------------------------------------------------
|
|
proc ss1readhoroffset {} {
|
|
set SR [SplitReply [ss1r]]
|
|
return [ expr $SR - ($SR + [SplitReply [ss1l]])/2.0 ]
|
|
}
|
|
publish ss1readhoroffset user
|
|
|
|
#-------------------------------------------------------
|
|
MakeConfigurableMotor ss1ho
|
|
ss1ho drivescript ss1horoffsetscript
|
|
ss1ho readscript ss1readhoroffset
|
|
|
|
#-----------------------------------------------------
|
|
proc ss1heightscript {val} {
|
|
set currentWidth [expr [SplitReply [ss1u]] + [SplitReply [ss1d]]]
|
|
set diff [expr $val - $currentWidth]
|
|
set newD1B [expr [SplitReply [ss1d]] + $diff/2]
|
|
set newD1T [expr [SplitReply [ss1u]] + $diff/2]
|
|
return "ss1d=$newD1B,ss1u=$newD1T"
|
|
}
|
|
publish ss1heightscript user
|
|
|
|
#-------------------------------------------------------
|
|
proc ss1readheight {} {
|
|
return [expr [SplitReply [ss1u]] + [SplitReply [ss1d]]]
|
|
}
|
|
publish ss1readheight user
|
|
|
|
#---------------------------------------------------------
|
|
MakeConfigurableMotor ss1vg
|
|
ss1vg drivescript ss1heightscript
|
|
ss1vg readscript ss1readheight
|
|
|
|
#--------------------------------------------------------
|
|
proc ss1vertoffsetscript {val} {
|
|
set SU [SplitReply [ss1u]]
|
|
set SD [SplitReply [ss1d]]
|
|
set currentOffset [ expr $SU - ($SU + $SD)/2.0 ]
|
|
set diff [expr $val - $currentOffset]
|
|
set newD1U [expr $SU + $diff]
|
|
set newD1D [expr $SD - $diff]
|
|
return "ss1u=$newD1U,ss1d=$newD1D"
|
|
}
|
|
publish ss1vertoffsetscript user
|
|
|
|
#-------------------------------------------------------
|
|
proc ss1readvertoffset {} {
|
|
set SU [SplitReply [ss1u]]
|
|
return [ expr $SU - ($SU + [SplitReply [ss1d]])/2.0 ]
|
|
}
|
|
publish ss1readvertoffset user
|
|
|
|
#-------------------------------------------------------
|
|
MakeConfigurableMotor ss1vo
|
|
ss1vo drivescript ss1vertoffsetscript
|
|
ss1vo readscript ss1readvertoffset
|
|
###############################################
|
|
|
|
|
|
#--------------------------------------------------------
|
|
proc ss2widthscript {val} {
|
|
set currentWidth [expr [SplitReply [ss2r]] + [SplitReply [ss2l]]]
|
|
set diff [expr $val - $currentWidth]
|
|
set newD1R [expr [SplitReply [ss2r]] + $diff/2]
|
|
set newD1L [expr [SplitReply [ss2l]] + $diff/2]
|
|
return "ss2r=$newD1R,ss2l=$newD1L"
|
|
}
|
|
publish ss2widthscript user
|
|
|
|
#-------------------------------------------------------
|
|
proc ss2readwidth {} {
|
|
return [expr [SplitReply [ss2r]] + [SplitReply [ss2l]]]
|
|
}
|
|
publish ss2readwidth user
|
|
MakeConfigurableMotor ss2hg
|
|
ss2hg drivescript ss2widthscript
|
|
ss2hg readscript ss2readwidth
|
|
|
|
#--------------------------------------------------------
|
|
proc ss2horoffsetscript {val} {
|
|
set SR [SplitReply [ss2r]]
|
|
set SL [SplitReply [ss2l]]
|
|
set currentOffset [ expr $SR - ($SR + $SL)/2.0 ]
|
|
set diff [expr $val - $currentOffset]
|
|
set newD1R [expr $SR + $diff]
|
|
set newD1L [expr $SL - $diff]
|
|
return "ss2r=$newD1R,ss2l=$newD1L"
|
|
}
|
|
publish ss2horoffsetscript user
|
|
|
|
#-------------------------------------------------------
|
|
proc ss2readhoroffset {} {
|
|
set SR [SplitReply [ss2r]]
|
|
return [ expr $SR - ($SR + [SplitReply [ss2l]])/2.0 ]
|
|
}
|
|
publish ss2readhoroffset user
|
|
|
|
#-------------------------------------------------------
|
|
MakeConfigurableMotor ss2ho
|
|
ss2ho drivescript ss2horoffsetscript
|
|
ss2ho readscript ss2readhoroffset
|
|
|
|
#-----------------------------------------------------
|
|
proc ss2heightscript {val} {
|
|
set currentWidth [expr [SplitReply [ss2u]] + [SplitReply [ss2d]]]
|
|
set diff [expr $val - $currentWidth]
|
|
set newD1B [expr [SplitReply [ss2d]] + $diff/2]
|
|
set newD1T [expr [SplitReply [ss2u]] + $diff/2]
|
|
return "ss2d=$newD1B,ss2u=$newD1T"
|
|
}
|
|
publish ss2heightscript user
|
|
|
|
#-------------------------------------------------------
|
|
proc ss2readheight {} {
|
|
return [expr [SplitReply [ss2u]] + [SplitReply [ss2d]]]
|
|
}
|
|
publish ss2readheight user
|
|
|
|
#---------------------------------------------------------
|
|
MakeConfigurableMotor ss2vg
|
|
ss2vg drivescript ss2heightscript
|
|
ss2vg readscript ss2readheight
|
|
|
|
#--------------------------------------------------------
|
|
proc ss2vertoffsetscript {val} {
|
|
set SU [SplitReply [ss2u]]
|
|
set SD [SplitReply [ss2d]]
|
|
set currentOffset [ expr $SU - ($SU + $SD)/2.0 ]
|
|
set diff [expr $val - $currentOffset]
|
|
set newD1U [expr $SU + $diff]
|
|
set newD1D [expr $SD - $diff]
|
|
return "ss2u=$newD1U,ss2d=$newD1D"
|
|
}
|
|
publish ss2vertoffsetscript user
|
|
|
|
#-------------------------------------------------------
|
|
proc ss2readvertoffset {} {
|
|
set SU [SplitReply [ss2u]]
|
|
return [ expr $SU - ($SU + [SplitReply [ss2d]])/2.0 ]
|
|
}
|
|
publish ss2readvertoffset user
|
|
|
|
#-------------------------------------------------------
|
|
MakeConfigurableMotor ss2vo
|
|
ss2vo drivescript ss2vertoffsetscript
|
|
ss2vo readscript ss2readvertoffset
|
|
|
|
# END MOTOR CONFIGURATION
|