1074 lines
26 KiB
Tcl
1074 lines
26 KiB
Tcl
# $Revision: 1.13 $
|
|
# $Date: 2007-03-19 03:08:13 $
|
|
# 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
|
|
|
|
MakeRS232Controller dmc_rs1 137.157.202.131 1034
|
|
MakeRS232Controller dmc_rs2 137.157.202.132 1034
|
|
MakeRS232Controller dmc_rs3 137.157.202.133 1034
|
|
MakeRS232Controller dmc_rs4 137.157.202.134 1034
|
|
MakeMultiChan dmc_mc1 dmc_rs1
|
|
MakeMultiChan dmc_mc2 dmc_rs2
|
|
MakeMultiChan dmc_mc3 dmc_rs3
|
|
MakeMultiChan dmc_mc4 dmc_rs4
|
|
|
|
#Measured absolute encoder reading at home position
|
|
|
|
set bz_home 8142000
|
|
set c1ht_home 8265000
|
|
set m1ro_home 134658
|
|
set bat_home 7500000
|
|
set st3vt_home 8742250
|
|
set st4vt_home 8806900
|
|
set sth_home 23511400
|
|
set sphi_home 7548440
|
|
set sx_home 8574000
|
|
set sy_home 7500000
|
|
set sz_home 8927484
|
|
set dy_home 7500000
|
|
set dz_home 7805000
|
|
|
|
#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 56.7
|
|
set ss1v_Gap 54.5
|
|
set ss2h_Gap 9.1
|
|
set ss2v_Gap 23.1
|
|
|
|
set ss3h_Gap 7.4
|
|
set ss3v_Gap 28.6
|
|
set ss4h_Gap 12.1
|
|
set ss4v_Gap 23.6
|
|
|
|
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]
|
|
|
|
set ss3r_Home [expr $ss3h_Gap/2*$slitStepRate]
|
|
set ss3l_Home [expr $ss3h_Gap/2*$slitStepRate]
|
|
set ss3u_Home [expr $ss3v_Gap/2*$slitStepRate]
|
|
set ss3d_Home [expr $ss3v_Gap/2*$slitStepRate]
|
|
set ss4r_Home [expr $ss4h_Gap/2*$slitStepRate]
|
|
set ss4l_Home [expr $ss4h_Gap/2*$slitStepRate]
|
|
set ss4u_Home [expr $ss4v_Gap/2*$slitStepRate]
|
|
set ss4d_Home [expr $ss4v_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 bz DMC2280 [params \
|
|
multichan dmc_mc1\
|
|
axis A\
|
|
units mm\
|
|
hardlowerlim 0\
|
|
hardupperlim 275\
|
|
maxSpeed 5\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX [expr -25000/6]\
|
|
absEnc 1\
|
|
absEncHome $bz_home\
|
|
cntsPerX [expr -8192/6]]
|
|
bz softlowerlim 0
|
|
bz softupperlim 275
|
|
bz home 0
|
|
|
|
# Collimator Table Horizontal Translation, X
|
|
Motor c1ht DMC2280 [params \
|
|
multichan dmc_mc1\
|
|
axis B\
|
|
units mm\
|
|
hardlowerlim 0\
|
|
hardupperlim 1065\
|
|
maxSpeed 10\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX [expr 25000/5]\
|
|
absEnc 1\
|
|
absEncHome $c1ht_home\
|
|
cntsPerX [expr -8192/5]]
|
|
c1ht softlowerlim 0
|
|
c1ht softupperlim 1065
|
|
c1ht home 0
|
|
|
|
# Collimator Tilt, Z axis, positive is down
|
|
Motor m1ro DMC2280 [params \
|
|
multichan dmc_mc1\
|
|
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 \
|
|
multichan dmc_mc1\
|
|
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 \
|
|
multichan dmc_mc1\
|
|
axis E\
|
|
units mm\
|
|
hardlowerlim 0\
|
|
hardupperlim 253\
|
|
maxSpeed 10\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX 25000\
|
|
absEnc 1\
|
|
absEncHome $st3vt_home\
|
|
cntsPerX -8192]
|
|
st3vt softlowerlim 0
|
|
st3vt softupperlim 253
|
|
st3vt home 0
|
|
|
|
# Slit 4 Tower Translation (1mm/T, +/- 100mm)
|
|
Motor st4vt DMC2280 [params \
|
|
multichan dmc_mc1\
|
|
axis F\
|
|
units mm\
|
|
hardlowerlim 0\
|
|
hardupperlim 249\
|
|
maxSpeed 10\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX 25000\
|
|
absEnc 1\
|
|
absEncHome $st4vt_home\
|
|
cntsPerX -8192]
|
|
st4vt softlowerlim 0
|
|
st4vt softupperlim 249
|
|
st4vt home 0
|
|
|
|
############################
|
|
# Motor Controller 2
|
|
# Motor Controller 2
|
|
# Motor Controller 2
|
|
############################
|
|
#:TP at HOME
|
|
#
|
|
|
|
# Sample Tilt 1, upper (1 degree/turn)
|
|
Motor sth DMC2280 [params \
|
|
multichan dmc_mc2\
|
|
axis A\
|
|
units degrees\
|
|
hardlowerlim -15\
|
|
hardupperlim 15\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX 25000\
|
|
absEnc 1\
|
|
absEncHome $sth_home\
|
|
cntsPerX 8192]
|
|
setHomeandRange -motor sth -home 0 -lowrange 5 -uprange 5
|
|
sth speed 1
|
|
sth precision 0.01
|
|
|
|
# Sample Tilt 2, lower (1 degree/turn)
|
|
Motor sphi DMC2280 [params \
|
|
multichan dmc_mc2\
|
|
axis B\
|
|
units degrees\
|
|
hardlowerlim 75\
|
|
hardupperlim 105\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -25000\
|
|
absEnc 1\
|
|
absEncHome $sphi_home\
|
|
cntsPerX -8192]
|
|
setHomeandRange -motor sphi -home 90 -lowrange 5 -uprange 5
|
|
sphi speed 1
|
|
sphi precision 0.01
|
|
|
|
# Sample Translation, Linear X (5mm/T, 0-750mm)
|
|
Motor sx DMC2280 [params \
|
|
multichan dmc_mc2\
|
|
axis C\
|
|
units mm\
|
|
hardlowerlim 0\
|
|
hardupperlim 734\
|
|
maxSpeed 10\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX [expr 25000/5]\
|
|
absEnc 1\
|
|
absEncHome $sx_home\
|
|
cntsPerX [expr 8192/5]]
|
|
sx softlowerlim 0
|
|
sx softupperlim 730
|
|
sx home 0
|
|
|
|
# Sample Translation, Linear Y
|
|
#Motor sy DMC2280 [params \
|
|
# multichan dmc_mc2\
|
|
# axis D\
|
|
# units mm\
|
|
# hardlowerlim -600\
|
|
# hardupperlim -300\
|
|
# maxSpeed 1\
|
|
# maxAccel 1\
|
|
# maxDecel 1\
|
|
# stepsPerX 25000\
|
|
# absEnc 1\
|
|
# absEncHome $sy_home\
|
|
# cntsPerX 8192]
|
|
#sy softlowerlim -600
|
|
#sy softupperlim -300
|
|
#sy home -450
|
|
|
|
# Sample Translation, Linear Z (??/T, 300mm)
|
|
Motor sz DMC2280 [params \
|
|
multichan dmc_mc2\
|
|
axis E\
|
|
units mm\
|
|
hardlowerlim 0\
|
|
hardupperlim 300.5\
|
|
maxSpeed 2\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX [expr -25000*5]\
|
|
absEnc 1\
|
|
absEncHome $sz_home\
|
|
cntsPerX [expr -8192/5]]
|
|
sz softlowerlim 0
|
|
sz softupperlim 300.5
|
|
sz home 0
|
|
sz speed 2
|
|
|
|
# Detector Translation, Linear Y (Not Motorized)
|
|
#Motor dy DMC2280 [params \
|
|
# multichan dmc_mc2\
|
|
# axis F\
|
|
# units mm\
|
|
# hardlowerlim -595\
|
|
# hardupperlim 800\
|
|
# maxSpeed 1\
|
|
# maxAccel 1\
|
|
# maxDecel 1\
|
|
# stepsPerX 25000\
|
|
# absEnc 1\
|
|
# absEncHome $dy_home\
|
|
# cntsPerX 8192]
|
|
#dy softlowerlim -595
|
|
#dy softupperlim 800
|
|
#dy home 0
|
|
|
|
# Detector Translation, Linear Z (5mm/T gearing unknown)
|
|
Motor dz DMC2280 [params \
|
|
multichan dmc_mc2\
|
|
axis G\
|
|
units mm\
|
|
hardlowerlim 0\
|
|
hardupperlim 1351\
|
|
maxSpeed 5\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -25000\
|
|
absEnc 1\
|
|
absEncHome $dz_home\
|
|
cntsPerX [expr -8192/5]]
|
|
dz softlowerlim 0
|
|
dz softupperlim 1351
|
|
dz home 0
|
|
|
|
############################
|
|
# Motor Controller 3
|
|
# Motor Controller 3
|
|
# Motor Controller 3
|
|
############################
|
|
#
|
|
|
|
# Slit 1, lower
|
|
Motor ss1d DMC2280 [params \
|
|
multichan dmc_mc3\
|
|
axis D\
|
|
units mm\
|
|
hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\
|
|
hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX $slitStepRate\
|
|
motorHome $ss1d_Home]
|
|
ss1d softlowerlim -25
|
|
ss1d softupperlim 95
|
|
ss1d home 0
|
|
|
|
# Slit 1, upper
|
|
Motor ss1u DMC2280 [params \
|
|
multichan dmc_mc3\
|
|
axis C\
|
|
units mm\
|
|
hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\
|
|
hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -$slitStepRate\
|
|
motorHome $ss1u_Home]
|
|
ss1u softlowerlim -25
|
|
ss1u softupperlim 95
|
|
ss1u home 0
|
|
|
|
# Slit 1, left
|
|
Motor ss1l DMC2280 [params \
|
|
multichan dmc_mc3\
|
|
axis A\
|
|
units mm\
|
|
hardlowerlim [expr $horSlitHome - $horSlitLowRange]\
|
|
hardupperlim [expr $horSlitHome + $horSlitUpRange]\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX $slitStepRate\
|
|
motorHome $ss1l_Home]
|
|
ss1l softlowerlim -25
|
|
ss1l softupperlim 25
|
|
ss1l home 0
|
|
|
|
# Slit 1, right
|
|
Motor ss1r DMC2280 [params \
|
|
multichan dmc_mc3\
|
|
axis B\
|
|
units mm\
|
|
hardlowerlim [expr $horSlitHome - $horSlitLowRange]\
|
|
hardupperlim [expr $horSlitHome + $horSlitUpRange]\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -$slitStepRate\
|
|
motorHome $ss1r_Home]
|
|
ss1r softlowerlim -25
|
|
ss1r softupperlim 25
|
|
ss1r home 0
|
|
|
|
# Slit 2, lower
|
|
Motor ss2d DMC2280 [params \
|
|
multichan dmc_mc3\
|
|
axis H\
|
|
units mm\
|
|
hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\
|
|
hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX $slitStepRate\
|
|
motorHome $ss2d_Home]
|
|
ss2d softlowerlim -25
|
|
ss2d softupperlim 95
|
|
ss2d home 0
|
|
|
|
# Slit 2, upper
|
|
Motor ss2u DMC2280 [params \
|
|
multichan dmc_mc3\
|
|
axis G\
|
|
units mm\
|
|
hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\
|
|
hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -$slitStepRate\
|
|
motorHome $ss2u_Home]
|
|
ss2u softlowerlim -25
|
|
ss2u softupperlim 95
|
|
ss2u home 0
|
|
|
|
# Slit 2, left
|
|
Motor ss2l DMC2280 [params \
|
|
multichan dmc_mc3\
|
|
axis E\
|
|
units mm\
|
|
hardlowerlim [expr $horSlitHome - $horSlitLowRange]\
|
|
hardupperlim [expr $horSlitHome + $horSlitUpRange]\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX $slitStepRate\
|
|
motorHome $ss2l_Home]
|
|
ss2l softlowerlim -25
|
|
ss2l softupperlim 25
|
|
ss2l home 0
|
|
|
|
# Slit 2, right
|
|
Motor ss2r DMC2280 [params \
|
|
multichan dmc_mc3\
|
|
axis F\
|
|
units mm\
|
|
hardlowerlim [expr $horSlitHome - $horSlitLowRange]\
|
|
hardupperlim [expr $horSlitHome + $horSlitUpRange]\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -$slitStepRate\
|
|
motorHome $ss2r_Home]
|
|
ss2r softlowerlim -25
|
|
ss2r softupperlim 25
|
|
ss2r home 0
|
|
|
|
# Slit 3, lower
|
|
Motor ss3d DMC2280 [params \
|
|
multichan dmc_mc4\
|
|
axis A\
|
|
units mm\
|
|
hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\
|
|
hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX $slitStepRate\
|
|
motorHome $ss3d_Home]
|
|
ss3d softlowerlim -25
|
|
ss3d softupperlim 95
|
|
ss3d home 0
|
|
|
|
# Slit 3, upper
|
|
Motor ss3u DMC2280 [params \
|
|
multichan dmc_mc4\
|
|
axis B\
|
|
units mm\
|
|
hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\
|
|
hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -$slitStepRate\
|
|
motorHome $ss3u_Home]
|
|
ss3u softlowerlim -25
|
|
ss3u softupperlim 95
|
|
ss3u home 0
|
|
|
|
# Slit 3, Left
|
|
Motor ss3l DMC2280 [params \
|
|
multichan dmc_mc4\
|
|
axis C\
|
|
units mm\
|
|
hardlowerlim [expr $horSlitHome - $horSlitLowRange]\
|
|
hardupperlim [expr $horSlitHome + $horSlitUpRange]\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX $slitStepRate\
|
|
motorHome $ss3l_Home]
|
|
ss3l softlowerlim -25
|
|
ss3l softupperlim 25
|
|
ss3l home 0
|
|
|
|
# Slit 3, right
|
|
Motor ss3r DMC2280 [params \
|
|
multichan dmc_mc4\
|
|
axis D\
|
|
units mm\
|
|
hardlowerlim [expr $horSlitHome - $horSlitLowRange]\
|
|
hardupperlim [expr $horSlitHome + $horSlitUpRange]\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -$slitStepRate\
|
|
motorHome $ss3r_Home]
|
|
ss3r softlowerlim -25
|
|
ss3r softupperlim 25
|
|
ss3r home 0
|
|
|
|
# Slit 4, lower
|
|
Motor ss4d DMC2280 [params \
|
|
multichan dmc_mc4\
|
|
axis E\
|
|
units mm\
|
|
hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\
|
|
hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX $slitStepRate\
|
|
motorHome $ss4d_Home]
|
|
ss4d softlowerlim -25
|
|
ss4d softupperlim 95
|
|
ss4d home 0
|
|
|
|
# Slit 4, upper
|
|
Motor ss4u DMC2280 [params \
|
|
multichan dmc_mc4\
|
|
axis F\
|
|
units mm\
|
|
hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\
|
|
hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -$slitStepRate\
|
|
motorHome $ss4u_Home]
|
|
ss4u softlowerlim -25
|
|
ss4u softupperlim 95
|
|
ss4u home 0
|
|
|
|
# Slit 4, left
|
|
Motor ss4l DMC2280 [params \
|
|
multichan dmc_mc4\
|
|
axis G\
|
|
units mm\
|
|
hardlowerlim [expr $horSlitHome - $horSlitLowRange]\
|
|
hardupperlim [expr $horSlitHome + $horSlitUpRange]\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX $slitStepRate\
|
|
motorHome $ss4l_Home]
|
|
ss4l softlowerlim -25
|
|
ss4l softupperlim 25
|
|
ss4l home 0
|
|
|
|
# Slit 4, right
|
|
Motor ss4r DMC2280 [params \
|
|
multichan dmc_mc4\
|
|
axis H\
|
|
units mm\
|
|
hardlowerlim [expr $horSlitHome - $horSlitLowRange]\
|
|
hardupperlim [expr $horSlitHome + $horSlitUpRange]\
|
|
maxSpeed 1\
|
|
maxAccel 1\
|
|
maxDecel 1\
|
|
stepsPerX -$slitStepRate\
|
|
motorHome $ss4r_Home]
|
|
ss4r softlowerlim -25
|
|
ss4r softupperlim 25
|
|
ss4r home 0
|
|
|
|
## Polarization Analyzer Vertical Translation, Z
|
|
#Motor anzvt DMC2280 [params \
|
|
# multichan dmc_mc2\
|
|
# 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 \
|
|
# multichan dmc_mc2\
|
|
# 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]
|
|
#}
|
|
|
|
if {1} {
|
|
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 [$m1]] + $diff/2]
|
|
set newD1L [expr [SplitReply [$m2]] - $diff/2]
|
|
return "$m1=$newD1R,$m2=$newD1L"
|
|
}
|
|
|
|
proc get_gap_offset {m1 m2} {
|
|
set S1 [SplitReply [$m1]]
|
|
set S2 [SplitReply [$m2]]
|
|
return [ expr ($S1 + $S2)/2.0 ]
|
|
}
|
|
|
|
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"
|
|
}
|
|
|
|
# make_gap_motors virt_width_motor virt_offset_motor real_high_motor real_low_motor
|
|
proc make_gap_motors {vm1 vm2 m1 m2} {
|
|
uplevel #0 "proc get_$vm1 {} { get_gap_width $m1 $m2 }"
|
|
set v {$var}
|
|
set s "proc set_$vm1 {var} { set_gap_width $m1 $m2 $v }"
|
|
puts $s
|
|
uplevel #0 $s
|
|
uplevel #0 "MakeConfigurableMotor $vm1"
|
|
uplevel #0 "$vm1 readscript get_$vm1"
|
|
uplevel #0 "$vm1 drivescript set_$vm1"
|
|
uplevel #0 "publish get_$vm1 user"
|
|
uplevel #0 "publish set_$vm1 user"
|
|
|
|
uplevel #0 "proc get_$vm2 {} { get_gap_offset $m1 $m2 }"
|
|
set v {$var}
|
|
set s "proc set_$vm2 {var} { set_gap_offset $m1 $m2 $v }"
|
|
puts $s
|
|
uplevel #0 $s
|
|
uplevel #0 "MakeConfigurableMotor $vm2"
|
|
uplevel #0 "$vm2 readscript get_$vm2"
|
|
uplevel #0 "$vm2 drivescript set_$vm2"
|
|
uplevel #0 "publish get_$vm2 user"
|
|
uplevel #0 "publish set_$vm2 user"
|
|
}
|
|
|
|
make_gap_motors ss1vg ss1vo ss1u ss1d
|
|
make_gap_motors ss1hg ss1ho ss1r ss1l
|
|
|
|
make_gap_motors ss2vg ss2vo ss2u ss2d
|
|
make_gap_motors ss2hg ss2ho ss2r ss2l
|
|
|
|
make_gap_motors ss3vg ss3vo ss3u ss3d
|
|
make_gap_motors ss3hg ss3ho ss3r ss3l
|
|
|
|
make_gap_motors ss4vg ss4vo ss4u ss4d
|
|
make_gap_motors ss4hg ss4ho ss4r ss4l
|
|
} else {
|
|
#--------------------------------------------------------
|
|
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
|
|
}
|