diff --git a/site_ansto/instrument/qld/motor_configuration.tcl b/site_ansto/instrument/qld/motor_configuration.tcl index 082c85c3..d7ca6127 100644 --- a/site_ansto/instrument/qld/motor_configuration.tcl +++ b/site_ansto/instrument/qld/motor_configuration.tcl @@ -1,72 +1,149 @@ +set slit2active 0 # Setup addresses of Galil DMC2280 controllers. -set dmc2280_controller1(host) mc1-koala -set dmc2280_controller1(port) pmc1-koala +set dmc2280_controller2(host) mc2-koala +set dmc2280_controller2(port) pmc2-koala # Run slit homing routines -#if [catch {dmc_connect dmc2280_controller1} ] { -# dmc_sendCmd dmc2280_controller1 "XQ#HOME,1" -# dmc_close dmc2280_controller1 +#if [catch {dmc_connect dmc2280_controller2} ] { +# dmc_sendCmd dmc2280_controller2 "XQ#HOME,1" +# dmc_close dmc2280_controller2 #} -#if [catch {dmc_connect dmc2280_controller1} ] { -# dmc_sendCmd dmc2280_controller1 "XQ#HOME,1" -# dmc_close dmc2280_controller1 +#if [catch {dmc_connect dmc2280_controller2} ] { +# dmc_sendCmd dmc2280_controller2 "XQ#HOME,1" +# dmc_close dmc2280_controller2 #} +# +#TD at upper switches +# 1048508, 1062259, 2651595, 2644121, 1017903, 1041617, 2715943, 2683888 +# + +#Measured or computed slit motor steps per unit (mm) +set slitStepRate 20180 + +#Measured slit gap, in units, after homing on limit switches +set s1vGap 128 +set s1hGap 53 +set s2vGap 205 +set s2hGap 51 + +#Measured offset for centre opening in units, positive up +set s1vOff 0 + +set s1uHome [expr $s1vGap/2*$slitStepRate] +set s1dHome [expr $s1vGap/2*$slitStepRate] +set s1rHome [expr $s1hGap/2*$slitStepRate] +set s1lHome [expr $s1hGap/2*$slitStepRate] +set s2uHome [expr $s2vGap/2*$slitStepRate] +set s2dHome [expr $s2vGap/2*$slitStepRate] +set s2rHome [expr $s2hGap/2*$slitStepRate] +set s2lHome [expr $s2hGap/2*$slitStepRate] + #Default upper and lower ranges for vertical slits -set vertSlitLowRange 25 -set vertSlitUpRange 95 +set vertSlitLowRange 60 +set vertSlitUpRange 60 #Default upper and lower ranges for horizontal slits -set horSlitLowRange 20 +set horSlitLowRange 25 set horSlitUpRange 25 -Motor ss1u DMC2280 [params \ - host $dmc2280_controller1(host)\ - port $dmc2280_controller1(port)\ - axis G\ - units mm\ - maxSpeed 1\ - maxAccel 1\ - maxDecel 1\ - stepsPerX -20125\ - motorHome 2040518] -setHomeandRange -motor ss1u -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange - -Motor ss1d DMC2280 [params \ - host $dmc2280_controller1(host)\ - port $dmc2280_controller1(port)\ - axis H\ +Motor ss1r DMC2280 [params \ + host $dmc2280_controller2(host)\ + port $dmc2280_controller2(port)\ + axis A\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ - stepsPerX -20125\ - motorHome 2040518] -setHomeandRange -motor ss1d -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange + stepsPerX -$slitStepRate\ + motorHome $s1rHome] +setHomeandRange -motor ss1r -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange Motor ss1l DMC2280 [params \ - host $dmc2280_controller1(host)\ - port $dmc2280_controller1(port)\ + host $dmc2280_controller2(host)\ + port $dmc2280_controller2(port)\ + axis B\ + units mm\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX -$slitStepRate\ + motorHome $s1lHome] +setHomeandRange -motor ss1l -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange + +Motor ss1u DMC2280 [params \ + host $dmc2280_controller2(host)\ + port $dmc2280_controller2(port)\ + axis C\ + units mm\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX -$slitStepRate\ + motorHome $s1uHome] +setHomeandRange -motor ss1u -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange + +Motor ss1d DMC2280 [params \ + host $dmc2280_controller2(host)\ + port $dmc2280_controller2(port)\ + axis D\ + units mm\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX -$slitStepRate\ + motorHome $s1dHome] +setHomeandRange -motor ss1d -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange + +if {$slit2active} { +Motor ss2r DMC2280 [params \ + host $dmc2280_controller2(host)\ + port $dmc2280_controller2(port)\ axis E\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ - stepsPerX -20125\ - motorHome 542093] -setHomeandRange -motor ss1l -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange + stepsPerX -$slitStepRate\ + motorHome $s2rHome] +setHomeandRange -motor ss2r -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange -Motor ss1r DMC2280 [params \ - host $dmc2280_controller1(host)\ - port $dmc2280_controller1(port)\ - axis F\ +Motor ss2l DMC2280 [params \ + host $dmc2280_controller2(host)\ + port $dmc2280_controller2(port)\ + axis B\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ - stepsPerX -20125\ - motorHome 542093] -setHomeandRange -motor ss1r -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange + stepsPerX -$slitStepRate\ + motorHome $s2lHome] +setHomeandRange -motor ss2l -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange + +Motor ss2u DMC2280 [params \ + host $dmc2280_controller2(host)\ + port $dmc2280_controller2(port)\ + axis G\ + units mm\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX -$slitStepRate\ + motorHome $s2uHome] +setHomeandRange -motor ss2u -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange + +Motor ss2d DMC2280 [params \ + host $dmc2280_controller2(host)\ + port $dmc2280_controller2(port)\ + axis H\ + units mm\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX -$slitStepRate\ + motorHome $s2dHome] +setHomeandRange -motor ss2d -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange +} #-------------------------------------------------------- proc ss1widthscript {val} { @@ -156,5 +233,96 @@ MakeConfigurableMotor ss1vo ss1vo drivescript ss1vertoffsetscript ss1vo readscript ss1readvertoffset ############################################### +if {$slit2active} { +#-------------------------------------------------------- +proc ss2widthscript {val} { + set currentWidth [expr [SplitReply [ss2r]] + [SplitReply [ss2l]]] + set diff [expr $val - $currentWidth] + set newD1R [expr [SplitReply [ss2r]] + $diff/2] + set newD1L [expr [SplitReply [ss2l]] + $diff/2] + return "ss2r=$newD1R,ss2l=$newD1L" +} +publish ss2widthscript user +#------------------------------------------------------- +proc ss2readwidth {} { + return [expr [SplitReply [ss2r]] + [SplitReply [ss2l]]] +} +publish ss2readwidth user +MakeConfigurableMotor ss2hg +ss2hg drivescript ss2widthscript +ss2hg readscript ss2readwidth + +#-------------------------------------------------------- +proc ss2horoffsetscript {val} { + set SR [SplitReply [ss2r]] + set SL [SplitReply [ss2l]] + set currentOffset [ expr $SR - ($SR + $SL)/2.0 ] + set diff [expr $val - $currentOffset] + set newD1R [expr $SR + $diff] + set newD1L [expr $SL - $diff] + return "ss2r=$newD1R,ss2l=$newD1L" +} +publish ss2horoffsetscript user + +#------------------------------------------------------- +proc ss2readhoroffset {} { + set SR [SplitReply [ss2r]] + return [ expr $SR - ($SR + [SplitReply [ss2l]])/2.0 ] +} +publish ss2readhoroffset user + +#------------------------------------------------------- +MakeConfigurableMotor ss2ho +ss2ho drivescript ss2horoffsetscript +ss2ho readscript ss2readhoroffset + +#----------------------------------------------------- +proc ss2heightscript {val} { + set currentWidth [expr [SplitReply [ss2u]] + [SplitReply [ss2d]]] + set diff [expr $val - $currentWidth] + set newD1B [expr [SplitReply [ss2d]] + $diff/2] + set newD1T [expr [SplitReply [ss2u]] + $diff/2] + return "ss2d=$newD1B,ss2u=$newD1T" +} +publish ss2heightscript user + +#------------------------------------------------------- +proc ss2readheight {} { + return [expr [SplitReply [ss2u]] + [SplitReply [ss2d]]] +} +publish ss2readheight user + +#--------------------------------------------------------- +MakeConfigurableMotor ss2vg +ss2vg drivescript ss2heightscript +ss2vg readscript ss2readheight + +#-------------------------------------------------------- +proc ss2vertoffsetscript {val} { + set SU [SplitReply [ss2u]] + set SD [SplitReply [ss2d]] + set currentOffset [ expr $SU - ($SU + $SD)/2.0 ] + set diff [expr $val - $currentOffset] + set newD1U [expr $SU + $diff] + set newD1D [expr $SD - $diff] + return "ss2u=$newD1U,ss2d=$newD1D" +} +publish ss2vertoffsetscript user + +#------------------------------------------------------- +proc ss2readvertoffset {} { + set SU [SplitReply [ss2u]] + return [ expr $SU - ($SU + [SplitReply [ss2d]])/2.0 ] +} +publish ss2readvertoffset user + +#------------------------------------------------------- +MakeConfigurableMotor ss2vo +ss2vo drivescript ss2vertoffsetscript +ss2vo readscript ss2readvertoffset +############################################### +} # END MOTOR CONFIGURATION + +