# $Revision: 1.9 $ # $Date: 2007-03-14 03:06:18 $ # Author: Ferdi Franceschini (ffr@ansto.gov.au) # Last revision by: $Author: dcl $ # START MOTOR CONFIGURATION set animal platypus # Setup addresses of Galil DMC2280 controllers. set dmc2280_controller1(host) mc1-$animal set dmc2280_controller1(port) pmc1-$animal set dmc2280_controller2(host) mc2-$animal set dmc2280_controller2(port) pmc2-$animal set dmc2280_controller3(host) mc3-$animal set dmc2280_controller3(port) pmc3-$animal set dmc2280_controller4(host) mc4-$animal set dmc2280_controller4(port) pmc4-$animal #Measured absolute encoder reading at home position set dsvt_home 8172500 set c1ht_home 8265000 set m1ro_home 134658 set bat_home 7500000 set st3vt_home 8742250 set st4vt_home 8806900 set sath_home 7500000 set saphi_home 7500000 set sax_home 7500000 set say_home 7500000 set saz_home 8927484 set deyht_home 7500000 set dezht_home 7500000 #Measured or computed slit motor steps per millimetre # 125 steps * 161:1 gears = 20125 set slitStepRate 20125 #Measured slit gap, in units, after homing on limit switches set ss1h_Gap 52.5 set ss1v_Gap 205.9 set ss2h_Gap 51.3 set ss2v_Gap 203.8 set ss1r_Home [expr $ss1h_Gap/2*$slitStepRate] set ss1l_Home [expr $ss1h_Gap/2*$slitStepRate] set ss1u_Home [expr $ss1v_Gap/2*$slitStepRate] set ss1d_Home [expr $ss1v_Gap/2*$slitStepRate] set ss2r_Home [expr $ss2h_Gap/2*$slitStepRate] set ss2l_Home [expr $ss2h_Gap/2*$slitStepRate] 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 #Default upper and lower ranges for horizontal slits set horSlitHome 0 set horSlitLowRange 25 set horSlitUpRange 25 # set movecount high to reduce the frequency of # hnotify messages to a reasonable level set move_count 100 ############################ # Motor Controller 1 # Motor Controller 1 # Motor Controller 1 ############################ #:TP at HOME # # Beam Shade Vertical Translation (6mm/T double helix, 500mm) Motor dszvt DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis A\ units mm\ hardlowerlim 0\ hardupperlim 275\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX [expr -25000/6]\ absEnc 1\ absEncHome $dsvt_home\ cntsPerX [expr -8192/6]] dszvt softlowerlim 0 dszvt softupperlim 275 dszvt home 0 # Collimator Table Horizontal Translation, X Motor c1ht DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis B\ units mm\ hardlowerlim 0\ hardupperlim 0\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX [expr 25000/5]\ absEnc 1\ absEncHome $c1ht_home\ cntsPerX [expr 8192/5] c1ht softlowerlim 0 c1ht softupperlim 0 c1ht home 0 # Collimator Tilt, Z axis, positive is down Motor m1ro DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis C\ units degrees\ hardlowerlim -3.5\ hardupperlim 3.5\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX 275000\ absEnc 1\ absEncHome $m1ro_home\ cntsPerX [expr 262144/360]] m1ro softlowerlim -3.5 m1ro softupperlim 3.5 m1ro home 0 # Beam Attenuator (16mm/turn, 200mm travel) Motor bat DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis D\ units mm\ hardlowerlim 0\ hardupperlim 200\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX [expr 25000/16]\ absEnc 1\ absEncHome $bat_home\ cntsPerX [expr 8192/16]] bat softlowerlim 0 bat softupperlim 200 bat home 0 # Slit 3 Tower Translation (1mm/T, +/- 100mm) Motor st3vt DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis E\ units mm\ hardlowerlim 0\ hardupperlim 251\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX 25000\ absEnc 1\ absEncHome $st3vt_home\ cntsPerX -8192] st3vt softlowerlim 0 st3vt softupperlim 251 st3vt home 0 # Slit 4 Tower Translation (1mm/T, +/- 100mm) Motor st4vt DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis F\ units mm\ hardlowerlim 0\ hardupperlim 248\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX 25000\ absEnc 1\ absEncHome $st4vt_home\ cntsPerX -8192] st4vt softlowerlim 0 st4vt softupperlim 248 st4vt home 0 ############################ # Motor Controller 2 # Motor Controller 2 # Motor Controller 2 ############################ #:TP at HOME # # Sample Tilt 1, upper (1 degree/turn) Motor sath DMC2280 [params \ host $dmc2280_controller2(host)\ port $dmc2280_controller2(port)\ axis A\ units degrees\ hardlowerlim -15\ hardupperlim 15\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX 25000\ absEnc 1\ absEncHome $sath_home\ cntsPerX 8192] setHomeandRange -motor sath -home 0 -lowrange 15 -uprange 15 sath speed 1 sath precision 0.01 # Sample Tilt 2, lower (1 degree/turn) Motor saphi DMC2280 [params \ host $dmc2280_controller2(host)\ port $dmc2280_controller2(port)\ axis B\ units degrees\ hardlowerlim -15\ hardupperlim 15\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -25000\ absEnc 1\ absEncHome $saphi_home\ cntsPerX -8192] setHomeandRange -motor saphi -home 90 -lowrange 15 -uprange 15 saphi speed 1 saphi precision 0.01 # Sample Translation, Linear X (5mm/T, 0-750mm) Motor sax DMC2280 [params \ host $dmc2280_controller2(host)\ port $dmc2280_controller2(port)\ axis C\ units mm\ hardlowerlim 0\ hardupperlim 750\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX [expr 25000/5]\ absEnc 1\ absEncHome $sax_home\ cntsPerX [expr 8192/5]] sax softlowerlim 0 sax softupperlim 750 sax home 0 # Sample Translation, Linear Y #Motor say DMC2280 [params \ # host $dmc2280_controller2(host)\ # port $dmc2280_controller2(port)\ # axis D\ # units mm\ # hardlowerlim -600\ # hardupperlim -300\ # maxSpeed 1\ # maxAccel 1\ # maxDecel 1\ # stepsPerX 25000\ # absEnc 1\ # absEncHome $say_home\ # cntsPerX 8192] #say softlowerlim -600 #say softupperlim -300 #say home -450 # Sample Translation, Linear Z (??/T, 300mm) Motor saz DMC2280 [params \ host $dmc2280_controller2(host)\ port $dmc2280_controller2(port)\ axis E\ units mm\ hardlowerlim 0\ hardupperlim 285\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX [expr -25000*5]\ absEnc 1\ absEncHome $saz_home\ cntsPerX [expr -8192/5]] saz softlowerlim 0 saz softupperlim 285 saz home 0 # Detector Translation, Linear Y (Not Motorized) #Motor deyht DMC2280 [params \ # host $dmc2280_controller2(host)\ # port $dmc2280_controller2(port)\ # axis F\ # units mm\ # hardlowerlim -595\ # hardupperlim 800\ # maxSpeed 1\ # maxAccel 1\ # maxDecel 1\ # stepsPerX 25000\ # absEnc 1\ # absEncHome $deyht_home\ # cntsPerX 8192] #deyht softlowerlim -595 #deyht softupperlim 800 #deyht home 0 # Detector Translation, Linear Z (5mm/T gearing unknown) Motor dezvt DMC2280 [params \ host $dmc2280_controller2(host)\ port $dmc2280_controller2(port)\ axis G\ units mm\ hardlowerlim 0\ hardupperlim 1348\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -25000\ absEnc 1\ absEncHome $dezht_home\ cntsPerX [expr -8192/5]] dezvt softlowerlim 0 dezvt softupperlim 1348 dezvt home 0 ############################ # Motor Controller 3 # Motor Controller 3 # Motor Controller 3 ############################ # # Slit 1, upper Motor ss1u DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis A\ units mm\ hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\ hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX $slitStepRate] ss1u softlowerlim -25 ss1u softupperlim 95 ss1u home 0 # Slit 1, lower Motor ss1d DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis B\ units mm\ hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\ hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX $slitStepRate] ss1d softlowerlim -25 ss1d softupperlim 95 ss1d home 0 # Slit 1, right Motor ss1r DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis C\ units mm\ hardlowerlim [expr $horSlitHome - $horSlitLowRange]\ hardupperlim [expr $horSlitHome + $horSlitUpRange]\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX $slitStepRate] ss1r softlowerlim -25 ss1r softupperlim 25 ss1r home 0 # Slit 1, left Motor ss1l DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis D\ units mm\ hardlowerlim [expr $horSlitHome - $horSlitLowRange]\ hardupperlim [expr $horSlitHome + $horSlitUpRange]\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX $slitStepRate] ss1l softlowerlim -25 ss1l softupperlim 25 ss1l home 0 # Slit 2, upper Motor ss2u DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis E\ units mm\ hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\ hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX $slitStepRate] ss2u softlowerlim -25 ss2u softupperlim 95 ss2u home 0 # Slit 2, lower Motor ss2d DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis F\ units mm\ hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\ hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX $slitStepRate] ss2d softlowerlim -25 ss2d softupperlim 95 ss2d home 0 # Slit 2, right Motor ss2r DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis G\ units mm\ hardlowerlim [expr $horSlitHome - $horSlitLowRange]\ hardupperlim [expr $horSlitHome + $horSlitUpRange]\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX $slitStepRate] ss2r softlowerlim -25 ss2r softupperlim 25 ss2r home 0 # Slit 2, left Motor ss2l DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis H\ units mm\ hardlowerlim [expr $horSlitHome - $horSlitLowRange]\ hardupperlim [expr $horSlitHome + $horSlitUpRange]\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX $slitStepRate] ss2l softlowerlim -25 ss2l softupperlim 25 ss2l home 0 # Slit 3, upper Motor ss3u DMC2280 [params \ host $dmc2280_controller4(host)\ port $dmc2280_controller4(port)\ axis A\ units mm\ hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\ hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX $slitStepRate] ss3u softlowerlim -25 ss3u softupperlim 95 ss3u home 0 # Slit 3, lower Motor ss3d DMC2280 [params \ host $dmc2280_controller4(host)\ port $dmc2280_controller4(port)\ axis B\ units mm\ hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\ hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX $slitStepRate] ss3d softlowerlim -25 ss3d softupperlim 95 ss3d home 0 # Slit 3, right Motor ss3r DMC2280 [params \ host $dmc2280_controller4(host)\ port $dmc2280_controller4(port)\ axis C\ units mm\ hardlowerlim [expr $horSlitHome - $horSlitLowRange]\ hardupperlim [expr $horSlitHome + $horSlitUpRange]\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX $slitStepRate] ss3r softlowerlim -25 ss3r softupperlim 25 ss3r home 0 # Slit 3, Left Motor ss3l DMC2280 [params \ host $dmc2280_controller4(host)\ port $dmc2280_controller4(port)\ axis D\ units mm\ hardlowerlim [expr $horSlitHome - $horSlitLowRange]\ hardupperlim [expr $horSlitHome + $horSlitUpRange]\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX $slitStepRate] ss3l softlowerlim -25 ss3l softupperlim 25 ss3l home 0 # Slit 4, upper Motor ss4u DMC2280 [params \ host $dmc2280_controller4(host)\ port $dmc2280_controller4(port)\ axis E\ units mm\ hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\ hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX $slitStepRate] ss4u softlowerlim -25 ss4u softupperlim 95 ss4u home 0 # Slit 4, lower Motor ss4d DMC2280 [params \ host $dmc2280_controller4(host)\ port $dmc2280_controller4(port)\ axis F\ units mm\ hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\ hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX $slitStepRate] ss4d softlowerlim -25 ss4d softupperlim 95 ss4d home 0 # Slit 4, right Motor ss4r DMC2280 [params \ host $dmc2280_controller4(host)\ port $dmc2280_controller4(port)\ axis G\ units mm\ hardlowerlim [expr $horSlitHome - $horSlitLowRange]\ hardupperlim [expr $horSlitHome + $horSlitUpRange]\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX $slitStepRate] ss4r softlowerlim -25 ss4r softupperlim 25 ss4r home 0 # Slit 4, left Motor ss4l DMC2280 [params \ host $dmc2280_controller4(host)\ port $dmc2280_controller4(port)\ axis H\ units mm\ hardlowerlim [expr $horSlitHome - $horSlitLowRange]\ hardupperlim [expr $horSlitHome + $horSlitUpRange]\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX $slitStepRate] ss4l softlowerlim -25 ss4l softupperlim 25 ss4l home 0 ## Polarization Analyzer Vertical Translation, Z #Motor anzvt DMC2280 [params \ # host $dmc2280_controller2(host)\ # port $dmc2280_controller2(port)\ # axis xxxx\ # units mm\ # maxSpeed 1\ # maxAccel 1\ # maxDecel 1\ # stepsPerX 25000\ # absEnc 1\ # absEncHome 7500000\ # cntsPerX 8192] #anzvt hardlowerlim xxxx #anzvt hardupperlim xxxx #anzvt softlowerlim xxxx #anzvt softupperlim xxxx #anzvt home 0 ## Polarization Analyzer Rotation #Motor anro DMC2280 [params \ # host $dmc2280_controller2(host)\ # port $dmc2280_controller2(port)\ # axis xxxx\ # units mm\ # hardlowerlim -10\ # hardupperlim 10\ # maxSpeed 1\ # maxAccel 1\ # maxDecel 1\ # stepsPerX 25000\ # absEnc 1\ # absEncHome 7500000\ # cntsPerX 8192] #anro softlowerlim -10 #anro softupperlim 10 #anro home 0 #proc SplitReply { text } { # set l [split $text =] # return [lindex $l 1] #} #-------------------------------------------------------- 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 ############################################### #-------------------------------------------------------- proc ss3widthscript {val} { set currentWidth [expr [SplitReply [ss3r]] + [SplitReply [ss3l]]] set diff [expr $val - $currentWidth] set newD1R [expr [SplitReply [ss3r]] + $diff/2] set newD1L [expr [SplitReply [ss3l]] + $diff/2] return "ss3r=$newD1R,ss3l=$newD1L" } publish ss3widthscript user #------------------------------------------------------- proc ss3readwidth {} { return [expr [SplitReply [ss3r]] + [SplitReply [ss3l]]] } publish ss3readwidth user MakeConfigurableMotor ss3hg ss3hg drivescript ss3widthscript ss3hg readscript ss3readwidth #----------------------------------------------------- proc ss3heightscript {val} { set currentWidth [expr [SplitReply [ss3u]] + [SplitReply [ss3d]]] set diff [expr $val - $currentWidth] set newD1B [expr [SplitReply [ss3d]] + $diff/2] set newD1T [expr [SplitReply [ss3u]] + $diff/2] return "ss3d=$newD1B,ss3u=$newD1T" } publish ss3heightscript user #------------------------------------------------------- proc ss3readheight {} { return [expr [SplitReply [ss3u]] + [SplitReply [ss3d]]] } publish ss3readheight user #--------------------------------------------------------- MakeConfigurableMotor ss3vg ss3vg drivescript ss3heightscript ss3vg readscript ss3readheight #-------------------------------------------------------- proc ss3horoffsetscript {val} { set sr [splitreply [ss3r]] set sl [splitreply [ss3l]] set currentoffset [ expr $sr - ($sr + $sl)/2.0 ] set diff [expr $val - $currentoffset] set newd1r [expr $sr + $diff] set newd1l [expr $sl - $diff] return "ss3r=$newd1r,ss3l=$newd1l" } publish ss3horoffsetscript user #------------------------------------------------------- proc ss3readhoroffset {} { set sr [splitreply [ss3r]] return [ expr $sr - ($sr + [splitreply [ss3l]])/2.0 ] } publish ss3readhoroffset user #------------------------------------------------------- MakeConfigurableMotor ss3ho ss3ho drivescript ss3horoffsetscript ss3ho readscript ss3readhoroffset #-------------------------------------------------------- proc ss3vertoffsetscript {val} { set SU [SplitReply [ss3u]] set SD [SplitReply [ss3d]] set currentOffset [ expr $SU - ($SU + $SD)/2.0 ] set diff [expr $val - $currentOffset] set newD1U [expr $SU + $diff] set newD1D [expr $SD - $diff] return "ss3u=$newD1U,ss3d=$newD1D" } publish ss3vertoffsetscript user #------------------------------------------------------- proc ss3readvertoffset {} { set SU [SplitReply [ss3u]] return [ expr $SU - ($SU + [SplitReply [ss3d]])/2.0 ] } publish ss3readvertoffset user #------------------------------------------------------- MakeConfigurableMotor ss3vo ss3vo drivescript ss3vertoffsetscript ss3vo readscript ss3readvertoffset ############################################### #-------------------------------------------------------- proc ss4widthscript {val} { set currentWidth [expr [SplitReply [ss4r]] + [SplitReply [ss4l]]] set diff [expr $val - $currentWidth] set newD1R [expr [SplitReply [ss4r]] + $diff/2] set newD1L [expr [SplitReply [ss4l]] + $diff/2] return "ss4r=$newD1R,ss4l=$newD1L" } publish ss4widthscript user #------------------------------------------------------- proc ss4readwidth {} { return [expr [SplitReply [ss4r]] + [SplitReply [ss4l]]] } publish ss4readwidth user MakeConfigurableMotor ss4hg ss4hg drivescript ss4widthscript ss4hg readscript ss4readwidth #----------------------------------------------------- proc ss4heightscript {val} { set currentWidth [expr [SplitReply [ss4u]] + [SplitReply [ss4d]]] set diff [expr $val - $currentWidth] set newD1B [expr [SplitReply [ss4d]] + $diff/2] set newD1T [expr [SplitReply [ss4u]] + $diff/2] return "ss4d=$newD1B,ss4u=$newD1T" } publish ss4heightscript user #------------------------------------------------------- proc ss4readheight {} { return [expr [SplitReply [ss4u]] + [SplitReply [ss4d]]] } publish ss4readheight user #--------------------------------------------------------- MakeConfigurableMotor ss4vg ss4vg drivescript ss4heightscript ss4vg readscript ss4readheight #-------------------------------------------------------- proc ss4horoffsetscript {val} { set sr [splitreply [ss4r]] set sl [splitreply [ss4l]] set currentoffset [ expr $sr - ($sr + $sl)/2.0 ] set diff [expr $val - $currentoffset] set newd1r [expr $sr + $diff] set newd1l [expr $sl - $diff] return "ss4r=$newd1r,ss4l=$newd1l" } publish ss4horoffsetscript user #------------------------------------------------------- proc ss4readhoroffset {} { set sr [splitreply [ss4r]] return [ expr $sr - ($sr + [splitreply [ss4l]])/2.0 ] } publish ss4readhoroffset user #------------------------------------------------------- MakeConfigurableMotor ss4ho ss4ho drivescript ss4horoffsetscript ss4ho readscript ss4readhoroffset #-------------------------------------------------------- proc ss4vertoffsetscript {val} { set SU [SplitReply [ss4u]] set SD [SplitReply [ss4d]] set currentOffset [ expr $SU - ($SU + $SD)/2.0 ] set diff [expr $val - $currentOffset] set newD1U [expr $SU + $diff] set newD1D [expr $SD - $diff] return "ss4u=$newD1U,ss4d=$newD1D" } publish ss4vertoffsetscript user #------------------------------------------------------- proc ss4readvertoffset {} { set SU [SplitReply [ss4u]] return [ expr $SU - ($SU + [SplitReply [ss4d]])/2.0 ] } publish ss4readvertoffset user #------------------------------------------------------- MakeConfigurableMotor ss4vo ss4vo drivescript ss4vertoffsetscript ss4vo readscript ss4readvertoffset