Make the slits cartesian and do a little cleaning up
r1781 | dcl | 2007-04-02 15:00:20 +1000 (Mon, 02 Apr 2007) | 2 lines
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# $Revision: 1.8 $
|
||||
# $Date: 2007-04-01 01:58:57 $
|
||||
# $Revision: 1.9 $
|
||||
# $Date: 2007-04-02 05:00:03 $
|
||||
# Author: Ferdi Franceschini (ffr@ansto.gov.au)
|
||||
# Last revision by: $Author: ffr $
|
||||
# Last revision by: $Author: dcl $
|
||||
|
||||
# START MOTOR CONFIGURATION
|
||||
|
||||
@@ -25,16 +25,12 @@ MakeMultiChan mc3 $dmc2280_controller3(host) $dmc2280_controller3(port)
|
||||
MakeMultiChan mc4 $dmc2280_controller4(host) $dmc2280_controller4(port)
|
||||
|
||||
#Measured absolute encoder reading at home position
|
||||
# 7613185, 7504518, 6770094, 7463036, 8901369, 19927837, 22369621, 22369621
|
||||
# 7613516, 7503905, 6767221, 7464891
|
||||
set mphi_Home 7613516
|
||||
set mchi_Home 7503905
|
||||
set my_Home 6767221
|
||||
set mx_Home 7464891
|
||||
set mom_Home 9274794
|
||||
set mtth_Home 19927837
|
||||
# 7938155, 7585392, 7556982, 7563854, 17214054, 22369621, 22369621, 22369621
|
||||
# 7937974, 7585956, 7557524, 7557304, 16992893, 1497938, 7788744, 22369621
|
||||
set sphi_Home 7937974
|
||||
set schi_Home 7585956
|
||||
set sy_Home 7557524
|
||||
@@ -63,29 +59,39 @@ set ss2u_Home [expr $ss2v_Gap/2*$slitStepRate]
|
||||
set ss2d_Home [expr $ss2v_Gap/2*$slitStepRate]
|
||||
|
||||
#Default upper and lower ranges for vertical slits
|
||||
set vertSlitHome 0
|
||||
set vertSlitLowRange 25
|
||||
set vertSlitUpRange 100
|
||||
set vSlitHome 0
|
||||
set vSlitLoRange 25
|
||||
set vSlitHiRange 100
|
||||
|
||||
#Default upper and lower ranges for horizontal slits
|
||||
set horSlitHome 0
|
||||
set horSlitLowRange 25
|
||||
set horSlitUpRange 25
|
||||
set hSlitHome 0
|
||||
set hSlitLoRange 25
|
||||
set hSlitHiRange 25
|
||||
|
||||
# set movecount high to reduce the frequency of
|
||||
#calculate individual slit motor low ranges
|
||||
set ss1r_LoRange [expr $hSlitHome - $hSlitLoRange]
|
||||
set ss1l_LoRange [expr $hSlitHome - $hSlitHiRange]
|
||||
set ss1u_LoRange [expr $vSlitHome - $vSlitLoRange]
|
||||
set ss1d_LoRange [expr $vSlitHome - $vSlitHiRange]
|
||||
set ss2r_LoRange [expr $hSlitHome - $hSlitLoRange]
|
||||
set ss2l_LoRange [expr $hSlitHome - $hSlitHiRange]
|
||||
set ss2u_LoRange [expr $vSlitHome - $vSlitLoRange]
|
||||
set ss2d_LoRange [expr $vSlitHome - $vSlitHiRange]
|
||||
|
||||
#calculate individual slit motor high ranges
|
||||
set ss1r_HiRange [expr $hSlitHome + $hSlitHiRange]
|
||||
set ss1l_HiRange [expr $hSlitHome + $hSlitLoRange]
|
||||
set ss1u_HiRange [expr $vSlitHome + $vSlitHiRange]
|
||||
set ss1d_HiRange [expr $vSlitHome + $vSlitLoRange]
|
||||
set ss2r_HiRange [expr $hSlitHome + $hSlitHiRange]
|
||||
set ss2l_HiRange [expr $hSlitHome + $hSlitLoRange]
|
||||
set ss2u_HiRange [expr $vSlitHome + $vSlitHiRange]
|
||||
set ss2d_HiRange [expr $vSlitHome + $vSlitLoRange]
|
||||
|
||||
# set movecount high to reduce the frequency of
|
||||
# hnotify messages to a reasonable level
|
||||
set move_count 100
|
||||
|
||||
# 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
|
||||
@@ -115,7 +121,7 @@ mphi speed 1
|
||||
mphi movecount $move_count
|
||||
mphi precision 0.01
|
||||
mphi part crystal
|
||||
mphi long_name phi
|
||||
mphi long_name phi
|
||||
|
||||
# Monochromator chi, Tilt 2, lower
|
||||
Motor mchi DMC2280 [params \
|
||||
@@ -138,7 +144,7 @@ mchi speed 1
|
||||
mchi movecount $move_count
|
||||
mchi precision 0.01
|
||||
mchi part crystal
|
||||
mchi long_name chi
|
||||
mchi long_name chi
|
||||
|
||||
# Monochromator Trans 1, upper
|
||||
Motor my DMC2280 [params \
|
||||
@@ -161,7 +167,7 @@ my speed 1
|
||||
my movecount $move_count
|
||||
my precision 0.01
|
||||
my part crystal
|
||||
my long_name translate_y
|
||||
my long_name translate_y
|
||||
|
||||
# Monochromator Trans 2, lower
|
||||
Motor mx DMC2280 [params \
|
||||
@@ -184,7 +190,7 @@ mx speed 1
|
||||
mx movecount $move_count
|
||||
mx precision 0.01
|
||||
mx part crystal
|
||||
mx long_name translate_x
|
||||
mx long_name translate_x
|
||||
|
||||
# Monochromator omega, rotate
|
||||
Motor mom DMC2280 [params \
|
||||
@@ -207,7 +213,7 @@ mom speed 1
|
||||
mom movecount $move_count
|
||||
mom precision 0.01
|
||||
mom part crystal
|
||||
mom long_name rotate
|
||||
mom long_name rotate
|
||||
|
||||
# Monochromator two-theta, flight-tube rotate
|
||||
Motor mtth DMC2280 [params \
|
||||
@@ -269,7 +275,7 @@ sphi speed 1
|
||||
sphi movecount $move_count
|
||||
sphi precision 0.01
|
||||
sphi part sample
|
||||
sphi long_name phi
|
||||
sphi long_name phi
|
||||
|
||||
# Sample Tilt 2, lower, chi
|
||||
Motor schi DMC2280 [params \
|
||||
@@ -292,7 +298,7 @@ schi speed 1
|
||||
schi movecount $move_count
|
||||
schi precision 0.01
|
||||
schi part sample
|
||||
schi long_name chi
|
||||
schi long_name chi
|
||||
|
||||
# Sample Trans 1, upper, y
|
||||
Motor sy DMC2280 [params \
|
||||
@@ -315,7 +321,7 @@ sy speed 1
|
||||
sy movecount $move_count
|
||||
sy precision 0.01
|
||||
sy part sample
|
||||
sy long_name translate_y
|
||||
sy long_name translate_y
|
||||
|
||||
# Sample Trans2, lower, x
|
||||
Motor sx DMC2280 [params \
|
||||
@@ -338,7 +344,7 @@ sx speed 1
|
||||
sx movecount $move_count
|
||||
sx precision 0.01
|
||||
sx part sample
|
||||
sx long_name translate_x
|
||||
sx long_name translate_x
|
||||
|
||||
# Sample Omega, rotate
|
||||
Motor som DMC2280 [params \
|
||||
@@ -360,7 +366,7 @@ setHomeandRange -motor som -home 0 -lowrange 54 -uprange 120
|
||||
som speed 1
|
||||
som precision 0.01
|
||||
som part sample
|
||||
som long_name rotate
|
||||
som long_name rotate
|
||||
|
||||
# Sample two-theta, detector rotate
|
||||
Motor stth DMC2280 [params \
|
||||
@@ -409,7 +415,7 @@ oct home 0
|
||||
oct speed 0.5
|
||||
oct precision 0.01
|
||||
oct part collimator
|
||||
oct long_name oct
|
||||
oct long_name oct
|
||||
|
||||
############################
|
||||
# Motor Controller 3
|
||||
@@ -439,7 +445,7 @@ oct long_name oct
|
||||
#mfl movecount $move_count
|
||||
#mf1 precision 0.01
|
||||
#mf1 part monochromator
|
||||
#mf1 long_name mf1
|
||||
#mf1 long_name mf1
|
||||
|
||||
# Monochromator Focusing (Ge)
|
||||
Motor mf2 DMC2280 [params \
|
||||
@@ -461,7 +467,7 @@ setHomeandRange -motor mf2 -home 0 -lowrange 0 -uprange 1
|
||||
mf2 speed 0.1
|
||||
mf2 precision 0.01
|
||||
mf2 part monochromator
|
||||
mf2 long_name mf2
|
||||
mf2 long_name mf2
|
||||
|
||||
# Slit 1, right
|
||||
Motor ss1r DMC2280 [params \
|
||||
@@ -470,17 +476,19 @@ Motor ss1r DMC2280 [params \
|
||||
port $dmc2280_controller3(port)\
|
||||
axis E\
|
||||
units mm\
|
||||
hardlowerlim [expr $horSlitHome - $horSlitLowRange]\
|
||||
hardupperlim [expr $horSlitHome + $horSlitUpRange]\
|
||||
hardlowerlim $ss1r_LoRange\
|
||||
hardupperlim $ss1r_HiRange\
|
||||
maxSpeed 1\
|
||||
maxAccel 1\
|
||||
maxDecel 1\
|
||||
stepsPerX -$slitStepRate\
|
||||
motorHome $ss1r_Home]
|
||||
setHomeandRange -motor ss1r -home $horSlitHome -lowrange $horSlitLowRange -uprange $horSlitUpRange
|
||||
ss1r softlowerlim $ss1r_LoRange
|
||||
ss1r softupperlim $ss1r_HiRange
|
||||
ss1r home 0
|
||||
ss1r movecount $move_count
|
||||
ss1r part sample
|
||||
ss1r long_name right
|
||||
ss1r long_name right
|
||||
|
||||
# Slit 1, left
|
||||
Motor ss1l DMC2280 [params \
|
||||
@@ -489,17 +497,19 @@ Motor ss1l DMC2280 [params \
|
||||
port $dmc2280_controller3(port)\
|
||||
axis F\
|
||||
units mm\
|
||||
hardlowerlim [expr $horSlitHome - $horSlitLowRange]\
|
||||
hardupperlim [expr $horSlitHome + $horSlitUpRange]\
|
||||
hardlowerlim $ss1l_LoRange\
|
||||
hardupperlim $ss1l_HiRange\
|
||||
maxSpeed 1\
|
||||
maxAccel 1\
|
||||
maxDecel 1\
|
||||
stepsPerX -$slitStepRate\
|
||||
stepsPerX $slitStepRate\
|
||||
motorHome $ss1l_Home]
|
||||
setHomeandRange -motor ss1l -home $horSlitHome -lowrange $horSlitLowRange -uprange $horSlitUpRange
|
||||
ss1l softlowerlim $ss1l_LoRange
|
||||
ss1l softupperlim $ss1l_HiRange
|
||||
ss1l home 0
|
||||
ss1l movecount $move_count
|
||||
ss1l part sample
|
||||
ss1l long_name left
|
||||
ss1l long_name left
|
||||
|
||||
# Slit 1, up
|
||||
Motor ss1u DMC2280 [params \
|
||||
@@ -508,17 +518,19 @@ Motor ss1u DMC2280 [params \
|
||||
port $dmc2280_controller3(port)\
|
||||
axis G\
|
||||
units mm\
|
||||
hardlowerlim [expr $horSlitHome - $horSlitLowRange]\
|
||||
hardupperlim [expr $horSlitHome + $horSlitUpRange]\
|
||||
hardlowerlim $ss1u_LoRange\
|
||||
hardupperlim $ss1u_HiRange\
|
||||
maxSpeed 1\
|
||||
maxAccel 1\
|
||||
maxDecel 1\
|
||||
stepsPerX -$slitStepRate\
|
||||
motorHome $ss1u_Home]
|
||||
setHomeandRange -motor ss1u -home $horSlitHome -lowrange $vertSlitLowRange -uprange $vertSlitUpRange
|
||||
ss1u softlowerlim $ss1u_LoRange
|
||||
ss1u softupperlim $ss1u_HiRange
|
||||
ss1u home 0
|
||||
ss1u movecount $move_count
|
||||
ss1u part sample
|
||||
ss1u long_name top
|
||||
ss1u long_name top
|
||||
|
||||
# Slit 1, down
|
||||
Motor ss1d DMC2280 [params \
|
||||
@@ -527,17 +539,19 @@ Motor ss1d DMC2280 [params \
|
||||
port $dmc2280_controller3(port)\
|
||||
axis H\
|
||||
units mm\
|
||||
hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\
|
||||
hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\
|
||||
hardlowerlim $ss1d_LoRange\
|
||||
hardupperlim $ss1d_HiRange\
|
||||
maxSpeed 1\
|
||||
maxAccel 1\
|
||||
maxDecel 1\
|
||||
stepsPerX -$slitStepRate\
|
||||
stepsPerX $slitStepRate\
|
||||
motorHome $ss1d_Home]
|
||||
setHomeandRange -motor ss1d -home $vertSlitHome -lowrange $vertSlitLowRange -uprange $vertSlitUpRange
|
||||
ss1d softlowerlim $ss1d_LoRange
|
||||
ss1d softupperlim $ss1d_HiRange
|
||||
ss1d home 0
|
||||
ss1d movecount $move_count
|
||||
ss1d part sample
|
||||
ss1d long_name bottom
|
||||
ss1d long_name bottom
|
||||
|
||||
############################
|
||||
# Motor Controller 4
|
||||
@@ -553,17 +567,19 @@ Motor ss2r DMC2280 [params \
|
||||
port $dmc2280_controller4(port)\
|
||||
axis E\
|
||||
units mm\
|
||||
hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\
|
||||
hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\
|
||||
hardlowerlim $ss2r_LoRange\
|
||||
hardupperlim $ss2r_HiRange\
|
||||
maxSpeed 1\
|
||||
maxAccel 1\
|
||||
maxDecel 1\
|
||||
stepsPerX -$slitStepRate\
|
||||
motorHome $ss2r_Home]
|
||||
setHomeandRange -motor ss2r -home $vertSlitHome -lowrange $horSlitLowRange -uprange $horSlitUpRange
|
||||
ss2r softlowerlim $ss2r_LoRange
|
||||
ss2r softupperlim $ss2r_HiRange
|
||||
ss2r home 0
|
||||
ss2r movecount $move_count
|
||||
ss2r part sample
|
||||
ss2r long_name right
|
||||
ss2r long_name right
|
||||
|
||||
# Slit 2, left
|
||||
Motor ss2l DMC2280 [params \
|
||||
@@ -572,17 +588,19 @@ Motor ss2l DMC2280 [params \
|
||||
port $dmc2280_controller4(port)\
|
||||
axis F\
|
||||
units mm\
|
||||
hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\
|
||||
hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\
|
||||
hardlowerlim $ss2l_LoRange\
|
||||
hardupperlim $ss2l_HiRange\
|
||||
maxSpeed 1\
|
||||
maxAccel 1\
|
||||
maxDecel 1\
|
||||
stepsPerX -$slitStepRate\
|
||||
stepsPerX $slitStepRate\
|
||||
motorHome $ss2l_Home]
|
||||
setHomeandRange -motor ss2l -home $vertSlitHome -lowrange $horSlitLowRange -uprange $horSlitUpRange
|
||||
ss2l softlowerlim $ss2l_LoRange
|
||||
ss2l softupperlim $ss2l_HiRange
|
||||
ss2l home 0
|
||||
ss2l movecount $move_count
|
||||
ss2l part sample
|
||||
ss2l long_name left
|
||||
ss2l long_name left
|
||||
|
||||
# Slit 2, up
|
||||
Motor ss2u DMC2280 [params \
|
||||
@@ -591,17 +609,19 @@ Motor ss2u DMC2280 [params \
|
||||
port $dmc2280_controller4(port)\
|
||||
axis G\
|
||||
units mm\
|
||||
hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\
|
||||
hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\
|
||||
hardlowerlim $ss2u_LoRange\
|
||||
hardupperlim $ss2u_HiRange\
|
||||
maxSpeed 1\
|
||||
maxAccel 1\
|
||||
maxDecel 1\
|
||||
stepsPerX -$slitStepRate\
|
||||
motorHome $ss2u_Home]
|
||||
setHomeandRange -motor ss2u -home $vertSlitHome -lowrange $vertSlitLowRange -uprange $vertSlitUpRange
|
||||
ss2u softlowerlim $ss2u_LoRange
|
||||
ss2u softupperlim $ss2u_HiRange
|
||||
ss2u home 0
|
||||
ss2u movecount $move_count
|
||||
ss2u part sample
|
||||
ss2u long_name top
|
||||
ss2u long_name top
|
||||
|
||||
# Slit 2, down
|
||||
Motor ss2d DMC2280 [params \
|
||||
@@ -610,17 +630,19 @@ Motor ss2d DMC2280 [params \
|
||||
port $dmc2280_controller4(port)\
|
||||
axis H\
|
||||
units mm\
|
||||
hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\
|
||||
hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\
|
||||
hardlowerlim $ss2d_LoRange\
|
||||
hardupperlim $ss2d_HiRange\
|
||||
maxSpeed 1\
|
||||
maxAccel 1\
|
||||
maxDecel 1\
|
||||
stepsPerX -$slitStepRate\
|
||||
stepsPerX $slitStepRate\
|
||||
motorHome $ss2d_Home]
|
||||
setHomeandRange -motor ss2d -home $vertSlitHome -lowrange $vertSlitLowRange -uprange $vertSlitUpRange
|
||||
ss2d softlowerlim $ss2d_LoRange
|
||||
ss2d softupperlim $ss2d_HiRange
|
||||
ss2d home 0
|
||||
ss2d movecount $move_count
|
||||
ss2d part sample
|
||||
ss2d long_name bottom
|
||||
ss2d long_name bottom
|
||||
|
||||
proc mthGet {} { return [expr [SplitReply [mtth]]/2.0]}
|
||||
proc mthSet {val} { return "mtth=[SplitReply [mtth]]"}
|
||||
@@ -638,182 +660,59 @@ MakeConfigurableMotor sth
|
||||
sth readscript sthGet
|
||||
sth drivescript sthSet
|
||||
|
||||
#--------------------------------------------------------
|
||||
proc ss1widthscript {val} {
|
||||
set currentWidth [expr [SplitReply [ss1r]] + [SplitReply [ss1l]]]
|
||||
proc get_gap_width {m1 m2} {
|
||||
return [expr [SplitReply [$m1]] - [SplitReply [$m2]]]
|
||||
}
|
||||
|
||||
proc set_gap_width {m1 m2 val} {
|
||||
set currentWidth [expr [SplitReply [$m1]] - [SplitReply [$m2]]]
|
||||
set diff [expr $val - $currentWidth]
|
||||
set newD1R [expr [SplitReply [ss1r]] + $diff/2]
|
||||
set newD1L [expr [SplitReply [ss1l]] + $diff/2]
|
||||
return "ss1r=$newD1R,ss1l=$newD1L"
|
||||
set newD1R [expr [SplitReply [$m1]] + $diff/2]
|
||||
set newD1L [expr [SplitReply [$m2]] - $diff/2]
|
||||
return "$m1=$newD1R,$m2=$newD1L"
|
||||
}
|
||||
publish ss1widthscript user
|
||||
|
||||
#-------------------------------------------------------
|
||||
proc ss1readwidth {} {
|
||||
return [expr [SplitReply [ss1r]] + [SplitReply [ss1l]]]
|
||||
proc get_gap_offset {m1 m2} {
|
||||
set S1 [SplitReply [$m1]]
|
||||
set S2 [SplitReply [$m2]]
|
||||
return [ expr ($S1 + $S2)/2.0 ]
|
||||
}
|
||||
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"
|
||||
proc set_gap_offset {m1 m2 val} {
|
||||
set S1 [SplitReply [$m1]]
|
||||
set S2 [SplitReply [$m2]]
|
||||
set currentoffset [expr ($S1 + $S2)/2.0 ]
|
||||
set diff [expr $val - $currentoffset]
|
||||
set newD1R [expr $S1 + $diff]
|
||||
set newD1L [expr $S2 + $diff]
|
||||
return "$m1=$newD1R,$m2=$newD1L"
|
||||
}
|
||||
publish ss1horoffsetscript user
|
||||
|
||||
#-------------------------------------------------------
|
||||
proc ss1readhoroffset {} {
|
||||
set SR [SplitReply [ss1r]]
|
||||
return [ expr $SR - ($SR + [SplitReply [ss1l]])/2.0 ]
|
||||
# make_gap_motors virt_width_motor virt_offset_motor real_high_motor real_low_motor
|
||||
proc make_gap_motors {vm1 vm2 m1 m2} {
|
||||
eval "proc get_$vm1 {} { get_gap_width $m1 $m2 }"
|
||||
set v {$var}
|
||||
eval "proc set_$vm1 {var} { set_gap_width $m1 $m2 $v }"
|
||||
MakeConfigurableMotor $vm1
|
||||
$vm1 readscript get_$vm1
|
||||
$vm1 drivescript set_$vm1
|
||||
publish get_$vm1 user
|
||||
publish set_$vm1 user
|
||||
|
||||
eval "proc get_$vm2 {} { get_gap_offset $m1 $m2 }"
|
||||
set v {$var}
|
||||
eval "proc set_$vm2 {var} { set_gap_offset $m1 $m2 $v }"
|
||||
MakeConfigurableMotor $vm2
|
||||
$vm2 readscript get_$vm2
|
||||
$vm2 drivescript set_$vm2
|
||||
publish get_$vm2 user
|
||||
publish set_$vm2 user
|
||||
}
|
||||
publish ss1readhoroffset user
|
||||
|
||||
#-------------------------------------------------------
|
||||
MakeConfigurableMotor ss1ho
|
||||
ss1ho drivescript ss1horoffsetscript
|
||||
ss1ho readscript ss1readhoroffset
|
||||
make_gap_motors ss1vg ss1vo ss1u ss1d
|
||||
make_gap_motors ss1hg ss1ho ss1r ss1l
|
||||
|
||||
#-----------------------------------------------------
|
||||
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
|
||||
make_gap_motors ss2vg ss2vo ss2u ss2d
|
||||
make_gap_motors ss2hg ss2ho ss2r ss2l
|
||||
|
||||
# END MOTOR CONFIGURATION
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# $Revision: 1.11 $
|
||||
# $Date: 2007-04-01 02:24:16 $
|
||||
# $Revision: 1.12 $
|
||||
# $Date: 2007-04-02 05:00:20 $
|
||||
# Author: Ferdi Franceschini (ffr@ansto.gov.au)
|
||||
# Last revision by: $Author: ffr $
|
||||
# Last revision by: $Author: dcl $
|
||||
|
||||
# START MOTOR CONFIGURATION
|
||||
|
||||
@@ -60,27 +60,39 @@ set ss2u_Home [expr $ss2v_Gap/2*$slitStepRate]
|
||||
set ss2d_Home [expr $ss2v_Gap/2*$slitStepRate]
|
||||
|
||||
#Default upper and lower ranges for vertical slits
|
||||
set vertSlitLowRange 25
|
||||
set vertSlitUpRange 100
|
||||
set vSlitHome 0
|
||||
set vSlitLoRange 20
|
||||
set vSlitHiRange 100
|
||||
|
||||
#Default upper and lower ranges for horizontal slits
|
||||
set horSlitLowRange 25
|
||||
set horSlitUpRange 25
|
||||
set hSlitHome 0
|
||||
set hSlitLoRange 15
|
||||
set hSlitHiRange 35
|
||||
|
||||
# set movecount high to reduce the frequency of
|
||||
#calculate individual slit motor low ranges
|
||||
set ss1r_LoRange [expr $hSlitHome - $hSlitLoRange]
|
||||
set ss1l_LoRange [expr $hSlitHome - $hSlitHiRange]
|
||||
set ss1u_LoRange [expr $vSlitHome - $vSlitLoRange]
|
||||
set ss1d_LoRange [expr $vSlitHome - $vSlitHiRange]
|
||||
set ss2r_LoRange [expr $hSlitHome - $hSlitLoRange]
|
||||
set ss2l_LoRange [expr $hSlitHome - $hSlitHiRange]
|
||||
set ss2u_LoRange [expr $vSlitHome - $vSlitLoRange]
|
||||
set ss2d_LoRange [expr $vSlitHome - $vSlitHiRange]
|
||||
|
||||
#calculate individual slit motor high ranges
|
||||
set ss1r_HiRange [expr $hSlitHome + $hSlitHiRange]
|
||||
set ss1l_HiRange [expr $hSlitHome + $hSlitLoRange]
|
||||
set ss1u_HiRange [expr $vSlitHome + $vSlitHiRange]
|
||||
set ss1d_HiRange [expr $vSlitHome + $vSlitLoRange]
|
||||
set ss2r_HiRange [expr $hSlitHome + $hSlitHiRange]
|
||||
set ss2l_HiRange [expr $hSlitHome + $hSlitLoRange]
|
||||
set ss2u_HiRange [expr $vSlitHome + $vSlitHiRange]
|
||||
set ss2d_HiRange [expr $vSlitHome + $vSlitLoRange]
|
||||
|
||||
# set movecount high to reduce the frequency of
|
||||
# hnotify messages to a reasonable level
|
||||
set move_count 100
|
||||
|
||||
# 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
|
||||
@@ -463,14 +475,16 @@ Motor ss1r DMC2280 [params \
|
||||
port $dmc2280_controller3(port)\
|
||||
axis E\
|
||||
units mm\
|
||||
hardlowerlim -15\
|
||||
hardupperlim 35\
|
||||
hardlowerlim $ss1r_LoRange\
|
||||
hardupperlim $ss1r_HiRange\
|
||||
maxSpeed 1\
|
||||
maxAccel 1\
|
||||
maxDecel 1\
|
||||
stepsPerX -$slitStepRate\
|
||||
motorHome $ss1r_Home]
|
||||
setHomeandRange -motor ss1r -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange
|
||||
ss1r softlowerlim $ss1r_LoRange
|
||||
ss1r softupperlim $ss1r_HiRange
|
||||
ss1r home 0
|
||||
ss1r movecount $move_count
|
||||
ss1r part filter
|
||||
ss1r long_name right
|
||||
@@ -482,14 +496,16 @@ Motor ss1l DMC2280 [params \
|
||||
port $dmc2280_controller3(port)\
|
||||
axis F\
|
||||
units mm\
|
||||
hardlowerlim -15\
|
||||
hardupperlim 35\
|
||||
hardlowerlim $ss1l_LoRange\
|
||||
hardupperlim $ss1l_HiRange\
|
||||
maxSpeed 1\
|
||||
maxAccel 1\
|
||||
maxDecel 1\
|
||||
stepsPerX -$slitStepRate\
|
||||
motorHome $ss1l_Home]
|
||||
setHomeandRange -motor ss1l -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange
|
||||
ss1l softlowerlim $ss1l_LoRange
|
||||
ss1l softupperlim $ss1l_HiRange
|
||||
ss1l home 0
|
||||
ss1l movecount $move_count
|
||||
ss1l part filter
|
||||
ss1l long_name left
|
||||
@@ -501,14 +517,16 @@ Motor ss1u DMC2280 [params \
|
||||
port $dmc2280_controller3(port)\
|
||||
axis G\
|
||||
units mm\
|
||||
hardlowerlim -20\
|
||||
hardupperlim 100\
|
||||
hardlowerlim $ss1u_LoRange\
|
||||
hardupperlim $ss1u_HiRange\
|
||||
maxSpeed 1\
|
||||
maxAccel 1\
|
||||
maxDecel 1\
|
||||
stepsPerX -$slitStepRate\
|
||||
motorHome $ss1u_Home]
|
||||
setHomeandRange -motor ss1u -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange
|
||||
ss1u softlowerlim $ss1u_LoRange
|
||||
ss1u softupperlim $ss1u_HiRange
|
||||
ss1u home 0
|
||||
ss1u movecount $move_count
|
||||
ss1u part filter
|
||||
ss1u long_name top
|
||||
@@ -520,14 +538,16 @@ Motor ss1d DMC2280 [params \
|
||||
port $dmc2280_controller3(port)\
|
||||
axis H\
|
||||
units mm\
|
||||
hardlowerlim -20\
|
||||
hardupperlim 100\
|
||||
hardlowerlim $ss1d_LoRange\
|
||||
hardupperlim $ss1d_HiRange\
|
||||
maxSpeed 1\
|
||||
maxAccel 1\
|
||||
maxDecel 1\
|
||||
stepsPerX -$slitStepRate\
|
||||
motorHome $ss1d_Home]
|
||||
setHomeandRange -motor ss1d -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange
|
||||
ss1d softlowerlim $ss1d_LoRange
|
||||
ss1d softupperlim $ss1d_HiRange
|
||||
ss1d home 0
|
||||
ss1d movecount $move_count
|
||||
ss1d part filter
|
||||
ss1d long_name bottom
|
||||
@@ -578,14 +598,16 @@ Motor ss2r DMC2280 [params \
|
||||
port $dmc2280_controller4(port)\
|
||||
axis E\
|
||||
units mm\
|
||||
hardlowerlim -15\
|
||||
hardupperlim 35\
|
||||
hardlowerlim $ss2r_LoRange\
|
||||
hardupperlim $ss2r_HiRange\
|
||||
maxSpeed 1\
|
||||
maxAccel 1\
|
||||
maxDecel 1\
|
||||
stepsPerX -$slitStepRate\
|
||||
motorHome $ss2r_Home]
|
||||
setHomeandRange -motor ss2r -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange
|
||||
ss2r softlowerlim $ss2r_LoRange
|
||||
ss2r softupperlim $ss2r_HiRange
|
||||
ss2r home 0
|
||||
ss2r movecount $move_count
|
||||
ss2r part filter
|
||||
ss2r long_name right
|
||||
@@ -597,14 +619,16 @@ Motor ss2l DMC2280 [params \
|
||||
port $dmc2280_controller4(port)\
|
||||
axis F\
|
||||
units mm\
|
||||
hardlowerlim -15\
|
||||
hardupperlim 35\
|
||||
hardlowerlim $ss2l_LoRange\
|
||||
hardupperlim $ss2l_HiRange\
|
||||
maxSpeed 1\
|
||||
maxAccel 1\
|
||||
maxDecel 1\
|
||||
stepsPerX -$slitStepRate\
|
||||
motorHome $ss2l_Home]
|
||||
setHomeandRange -motor ss2l -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange
|
||||
ss2l softlowerlim $ss2l_LoRange
|
||||
ss2l softupperlim $ss2l_HiRange
|
||||
ss2l home 0
|
||||
ss2l movecount $move_count
|
||||
ss2l part filter
|
||||
ss2l long_name left
|
||||
@@ -616,14 +640,16 @@ Motor ss2u DMC2280 [params \
|
||||
port $dmc2280_controller4(port)\
|
||||
axis G\
|
||||
units mm\
|
||||
hardlowerlim -20\
|
||||
hardupperlim 100\
|
||||
hardlowerlim $ss2u_LoRange\
|
||||
hardupperlim $ss2u_HiRange\
|
||||
maxSpeed 1\
|
||||
maxAccel 1\
|
||||
maxDecel 1\
|
||||
stepsPerX -$slitStepRate\
|
||||
motorHome $ss2u_Home]
|
||||
setHomeandRange -motor ss2u -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange
|
||||
ss2u softlowerlim $ss2u_LoRange
|
||||
ss2u softupperlim $ss2u_HiRange
|
||||
ss2u home 0
|
||||
ss2u movecount $move_count
|
||||
ss2u part filter
|
||||
ss2u long_name top
|
||||
@@ -635,14 +661,16 @@ Motor ss2d DMC2280 [params \
|
||||
port $dmc2280_controller4(port)\
|
||||
axis H\
|
||||
units mm\
|
||||
hardlowerlim -20\
|
||||
hardupperlim 100\
|
||||
hardlowerlim $ss2d_LoRange\
|
||||
hardupperlim $ss2d_HiRange\
|
||||
maxSpeed 1\
|
||||
maxAccel 1\
|
||||
maxDecel 1\
|
||||
stepsPerX -$slitStepRate\
|
||||
motorHome $ss2d_Home]
|
||||
setHomeandRange -motor ss2d -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange
|
||||
ss2d softlowerlim $ss2d_LoRange
|
||||
ss2d softupperlim $ss2d_HiRange
|
||||
ss2d home 0
|
||||
ss2d movecount $move_count
|
||||
ss2d part filter
|
||||
ss2d long_name bottom
|
||||
@@ -663,182 +691,59 @@ MakeConfigurableMotor sth
|
||||
sth readscript sthGet
|
||||
sth drivescript sthSet
|
||||
|
||||
#--------------------------------------------------------
|
||||
proc ss1widthscript {val} {
|
||||
set currentWidth [expr [SplitReply [ss1r]] + [SplitReply [ss1l]]]
|
||||
proc get_gap_width {m1 m2} {
|
||||
return [expr [SplitReply [$m1]] - [SplitReply [$m2]]]
|
||||
}
|
||||
|
||||
proc set_gap_width {m1 m2 val} {
|
||||
set currentWidth [expr [SplitReply [$m1]] - [SplitReply [$m2]]]
|
||||
set diff [expr $val - $currentWidth]
|
||||
set newD1R [expr [SplitReply [ss1r]] + $diff/2]
|
||||
set newD1L [expr [SplitReply [ss1l]] + $diff/2]
|
||||
return "ss1r=$newD1R,ss1l=$newD1L"
|
||||
set newD1R [expr [SplitReply [$m1]] + $diff/2]
|
||||
set newD1L [expr [SplitReply [$m2]] - $diff/2]
|
||||
return "$m1=$newD1R,$m2=$newD1L"
|
||||
}
|
||||
publish ss1widthscript user
|
||||
|
||||
#-------------------------------------------------------
|
||||
proc ss1readwidth {} {
|
||||
return [expr [SplitReply [ss1r]] + [SplitReply [ss1l]]]
|
||||
proc get_gap_offset {m1 m2} {
|
||||
set S1 [SplitReply [$m1]]
|
||||
set S2 [SplitReply [$m2]]
|
||||
return [ expr ($S1 + $S2)/2.0 ]
|
||||
}
|
||||
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"
|
||||
proc set_gap_offset {m1 m2 val} {
|
||||
set S1 [SplitReply [$m1]]
|
||||
set S2 [SplitReply [$m2]]
|
||||
set currentoffset [expr ($S1 + $S2)/2.0 ]
|
||||
set diff [expr $val - $currentoffset]
|
||||
set newD1R [expr $S1 + $diff]
|
||||
set newD1L [expr $S2 + $diff]
|
||||
return "$m1=$newD1R,$m2=$newD1L"
|
||||
}
|
||||
publish ss1horoffsetscript user
|
||||
|
||||
#-------------------------------------------------------
|
||||
proc ss1readhoroffset {} {
|
||||
set SR [SplitReply [ss1r]]
|
||||
return [ expr $SR - ($SR + [SplitReply [ss1l]])/2.0 ]
|
||||
# make_gap_motors virt_width_motor virt_offset_motor real_high_motor real_low_motor
|
||||
proc make_gap_motors {vm1 vm2 m1 m2} {
|
||||
eval "proc get_$vm1 {} { get_gap_width $m1 $m2 }"
|
||||
set v {$var}
|
||||
eval "proc set_$vm1 {var} { set_gap_width $m1 $m2 $v }"
|
||||
MakeConfigurableMotor $vm1
|
||||
$vm1 readscript get_$vm1
|
||||
$vm1 drivescript set_$vm1
|
||||
publish get_$vm1 user
|
||||
publish set_$vm1 user
|
||||
|
||||
eval "proc get_$vm2 {} { get_gap_offset $m1 $m2 }"
|
||||
set v {$var}
|
||||
eval "proc set_$vm2 {var} { set_gap_offset $m1 $m2 $v }"
|
||||
MakeConfigurableMotor $vm2
|
||||
$vm2 readscript get_$vm2
|
||||
$vm2 drivescript set_$vm2
|
||||
publish get_$vm2 user
|
||||
publish set_$vm2 user
|
||||
}
|
||||
publish ss1readhoroffset user
|
||||
|
||||
#-------------------------------------------------------
|
||||
MakeConfigurableMotor ss1ho
|
||||
ss1ho drivescript ss1horoffsetscript
|
||||
ss1ho readscript ss1readhoroffset
|
||||
make_gap_motors ss1vg ss1vo ss1u ss1d
|
||||
make_gap_motors ss1hg ss1ho ss1r ss1l
|
||||
|
||||
#-----------------------------------------------------
|
||||
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
|
||||
make_gap_motors ss2vg ss2vo ss2u ss2d
|
||||
make_gap_motors ss2hg ss2ho ss2r ss2l
|
||||
|
||||
# END MOTOR CONFIGURATION
|
||||
|
||||
Reference in New Issue
Block a user