From bef9e542ae35b45004224f52097bbe09bc688eee Mon Sep 17 00:00:00 2001 From: Douglas Clowes Date: Wed, 26 Sep 2007 09:33:29 +1000 Subject: [PATCH] Commissioning calibration of collimator virtual collimator motors r2154 | dcl | 2007-09-26 09:33:29 +1000 (Wed, 26 Sep 2007) | 3 lines --- .../config/motors/motor_configuration.tcl | 443 ++++++++++++++---- 1 file changed, 340 insertions(+), 103 deletions(-) diff --git a/site_ansto/instrument/sans/config/motors/motor_configuration.tcl b/site_ansto/instrument/sans/config/motors/motor_configuration.tcl index 6134af7c..5a921753 100644 --- a/site_ansto/instrument/sans/config/motors/motor_configuration.tcl +++ b/site_ansto/instrument/sans/config/motors/motor_configuration.tcl @@ -1,7 +1,7 @@ -# $Revision: 1.5 $ -# $Date: 2007-08-16 06:40:00 $ +# $Revision: 1.6 $ +# $Date: 2007-09-25 23:33:29 $ # Author: Ferdi Franceschini (ffr@ansto.gov.au) -# Last revision by: $Author: ffr $ +# Last revision by: $Author: dcl $ # START MOTOR CONFIGURATION @@ -39,22 +39,14 @@ set samx_Home 7414223 set samy_Home 7548389 set samz_Home 9945599 set samthet_Home 22997883 -set det_Home 7500000 -set detoff_Home 7500000 +set det_Home 7194691 +set detoff_Home 7396273 -set c1_Home 7967536 -set c2_Home 7180101 -set c3_Home 8209736 -set c4_Home 6082786 -set c5_Home 7584833 -set c6_Home 8520594 -set c7_Home 23885626 -set c8_Home 8022666 - -set c9_Home 7572825 -set c10_Home 25686602 set pent_Home 8123563 -set srce_Home 7868762 +#set srce_Home 7868762 +#set srce_Home 7871476 +#set srce_Home 7827384 +set srce_Home 7826986 set apx_Home 7500000 set apz_Home 7500000 set att_Home 7500000 @@ -68,6 +60,107 @@ set bs2_Home 7500000 set bs1_Home 7500000 set pol_Home 7500000 +# early Guide mesaurements +#set c1_Home 7967536 +#set c2_Home 7180101 +#set c3_Home 8209736 +#set c4_Home 6082786 +#set c5_Home 7584833 +#set c6_Home 8520594 +#set c7_Home 23885626 +#set c8_Home 8022666 +# +#set c9_Home 7572825 +#set c10_Home 25686602 + +#set c1_Home 8130647 +#set c2_Home 7593804 +#set c3_Home 8441013 +#set c4_Home 6160389 +#if {0} { +# 2007-08-29 Guide measurements +#set c1_Home 8130106 +#set c2_Home 7595441 +#set c3_Home 8441907 +#set c4_Home 6161511 +#set c5_Home 7856229 +#set c6_Home 8798839 +#set c7_Home 24164694 +#set c8_Home 8302765 +#set c9_Home 7852000 +#set c10_Home 25977117 +#} + +#Guide Positions 2007-09-04 11:04 +#================================ +# +#c1 send TP +# 8130115, 7595447, 8441775, 6162749, 7856270, 8800694, 24164697, 8302140 +#c9 send TP +# 7851835, 25977420, 8035113, 7369888, 0, 0, 9228662, 0 +# +# Guide Positions 2007-09-06 20:08 +#================================ +#c1 send TP +# 8130379, 7595711, 8441761, 6162739, 7856261, 8800677, 24167230, 8302153 +#c9 send TP +# 7851826, 25977221, 7990530, 7191374, 0, 0, 9228662, 0 +set c1_Guide 8130379 +set c2_Guide 7595711 +set c3_Guide 8441761 +set c4_Guide 6162739 +set c5_Guide 7856261 +set c6_Guide 8800677 +set c7_Guide 24167230 +set c8_Guide 8302153 +set c9_Guide 7851826 +set c10_Guide 25977221 + +set c1_Polarizer 7858577 +set c2_Polarizer 7323919 + +#Aperture Position: 2007-09-05 09:08 +#=================================== +#c1 send TP +# 8130097, 7595436, 8304247, 6029748, 7728739, 8663027, 24034030, 8169924 +#c9 send TP +# 7719610, 25835487, 8029231, 7827402, 0, 0, 9228662, 0 + +set c3_Aperture 8304247 +set c4_Aperture 6029748 +set c5_Aperture 7728739 +set c6_Aperture 8663027 +set c7_Aperture 24034030 +set c8_Aperture 8169924 +set c9_Aperture 7719610 +set c10_Aperture 25835487 + +set c1_Home $c1_Guide +set c2_Home $c2_Guide +set c3_Home $c3_Guide +set c4_Home $c4_Guide +set c5_Home $c5_Guide +set c6_Home $c6_Guide +set c7_Home $c7_Guide +set c8_Home $c8_Guide +set c9_Home $c9_Guide +set c10_Home $c10_Guide + +set c1_Empty [expr ($c1_Guide + $c1_Polarizer)/2] +set c2_Empty [expr ($c2_Guide + $c2_Polarizer)/2] +set c3_Empty [expr (2 * $c3_Guide) - $c3_Aperture] +set c4_Empty [expr (2 * $c4_Guide) - $c4_Aperture] +set c5_Empty [expr (2 * $c5_Guide) - $c5_Aperture] +set c6_Empty [expr (2 * $c6_Guide) - $c6_Aperture] +set c7_Empty [expr (2 * $c7_Guide) - $c7_Aperture] +set c8_Empty [expr (2 * $c8_Guide) - $c8_Aperture] +set c9_Empty [expr (2 * $c9_Guide) - $c9_Aperture] +set c10_Empty [expr (2 * $c10_Guide) - $c10_Aperture] + +#Measured or computed step/count rates for collimator translation +set coll_StepsPerX [expr -25000.0/6.0] +set coll_CntsPerX [expr 8192.0/6.0] + #Measured or computed step rate for samz (Sample Raise) #set samzStepRate -116500 set samzStepRate -125000 @@ -219,6 +312,11 @@ samthet softlowerlim 0 samthet softupperlim 180 samthet home 0 +set det_StepsPerX [expr 25000.0*70.0*3.1415926*120.0] +set det_StepsPerX [expr 25000.0/5.385] +set det_CntsPerX [expr 8192.0/3.1415926/120.0]] +set det_CntsPerX [expr 21.6898] + # Detector translation along beam [0,20000] mm Motor det $motor_driver_type [params \ asyncqueue mc1\ @@ -226,18 +324,18 @@ Motor det $motor_driver_type [params \ port pmc1-quokka\ axis G\ units mm\ - hardlowerlim 0\ + hardlowerlim -20000\ hardupperlim 20000\ maxSpeed 10\ maxAccel 1\ maxDecel 10\ - stepsPerX [expr -25000.0*70.0*3.1415926*120.0]\ + stepsPerX $det_StepsPerX\ absEnc 1\ absEncHome $det_Home\ - cntsPerX [expr -8192.0/3.1415926/120.0]] + cntsPerX $det_CntsPerX] det part detector det long_name detector_y -det softlowerlim 0 +det softlowerlim -20000 det softupperlim 20000 det home 0 @@ -278,19 +376,26 @@ Motor c1 $motor_driver_type [params \ port pmc2-quokka\ axis A\ units mm\ - hardlowerlim 0\ - hardupperlim 5\ - maxSpeed 1\ + hardlowerlim -95\ + hardupperlim 95\ + maxSpeed 6\ maxAccel 1\ maxDecel 1\ - stepsPerX 25000\ + stepsPerX $coll_StepsPerX\ absEnc 1\ absEncHome $c1_Home\ - cntsPerX -8192] + cntsPerX $coll_CntsPerX\ + posit_count 5] +c1 posit_1 [expr $c1_Guide + (10 * $coll_CntsPerX)] +c1 posit_2 [expr $c1_Guide] +c1 posit_3 [expr $c1_Empty] +c1 posit_4 [expr $c1_Polarizer] +c1 posit_5 [expr $c1_Polarizer - (10 * $coll_CntsPerX)] c1 part collimator c1 long_name c1 -setHomeandRange -motor c1 -home 0 -lowrange 0 -uprange 5 -c1 speed 1 +setHomeandRange -motor c1 -home 0 -lowrange 95 -uprange 95 +c1 speed 3 +c1 creep_offset 1 # Collimation motor 2 Motor c2 $motor_driver_type [params \ @@ -299,19 +404,26 @@ Motor c2 $motor_driver_type [params \ port pmc2-quokka\ axis B\ units mm\ - hardlowerlim 0\ - hardupperlim 5\ - maxSpeed 1\ + hardlowerlim -95\ + hardupperlim 95\ + maxSpeed 6\ maxAccel 1\ maxDecel 1\ - stepsPerX 25000\ + stepsPerX $coll_StepsPerX\ absEnc 1\ absEncHome $c2_Home\ - cntsPerX -8192] + cntsPerX $coll_CntsPerX\ + posit_count 5] +c2 posit_1 [expr $c2_Guide + (10 * $coll_CntsPerX)] +c2 posit_2 [expr $c2_Guide] +c2 posit_3 [expr $c2_Empty] +c2 posit_4 [expr $c2_Polarizer] +c2 posit_5 [expr $c2_Polarizer - (10 * $coll_CntsPerX)] c2 part collimator c2 long_name c2 -setHomeandRange -motor c2 -home 0 -lowrange 0 -uprange 5 -c2 speed 1 +setHomeandRange -motor c2 -home 0 -lowrange 95 -uprange 95 +c2 speed 6 +c2 creep_offset 1 # Collimation motor 3 Motor c3 $motor_driver_type [params \ @@ -320,19 +432,26 @@ Motor c3 $motor_driver_type [params \ port pmc2-quokka\ axis C\ units mm\ - hardlowerlim 0\ - hardupperlim 5\ - maxSpeed 1\ + hardlowerlim -190\ + hardupperlim 190\ + maxSpeed 6\ maxAccel 1\ maxDecel 1\ - stepsPerX 25000\ + stepsPerX $coll_StepsPerX\ absEnc 1\ absEncHome $c3_Home\ - cntsPerX -8192] + cntsPerX $coll_CntsPerX\ + posit_count 5] +c3 posit_1 [expr $c3_Home + (150 * $coll_CntsPerX)] +c3 posit_2 [expr $c3_Empty] +c3 posit_3 [expr $c3_Guide] +c3 posit_4 [expr $c3_Aperture] +c3 posit_5 [expr $c3_Home - (150 * $coll_CntsPerX)] c3 part collimator c3 long_name c3 -setHomeandRange -motor c3 -home 0 -lowrange 0 -uprange 5 -c3 speed 1 +setHomeandRange -motor c3 -home 0 -lowrange 190 -uprange 190 +c3 speed 6 +c3 creep_offset 1 # Collimation motor 4 Motor c4 $motor_driver_type [params \ @@ -341,19 +460,26 @@ Motor c4 $motor_driver_type [params \ port pmc2-quokka\ axis D\ units mm\ - hardlowerlim 0\ - hardupperlim 5\ - maxSpeed 1\ + hardlowerlim -190\ + hardupperlim 190\ + maxSpeed 6\ maxAccel 1\ maxDecel 1\ - stepsPerX 25000\ + stepsPerX $coll_StepsPerX\ absEnc 1\ absEncHome $c4_Home\ - cntsPerX -8192] + cntsPerX $coll_CntsPerX\ + posit_count 5] +c4 posit_1 [expr $c4_Home + (150 * $coll_CntsPerX)] +c4 posit_2 [expr $c4_Empty] +c4 posit_3 [expr $c4_Guide] +c4 posit_4 [expr $c4_Aperture] +c4 posit_5 [expr $c4_Home - (150 * $coll_CntsPerX)] c4 part collimator c4 long_name c4 -setHomeandRange -motor c4 -home 0 -lowrange 0 -uprange 5 -c4 speed 1 +setHomeandRange -motor c4 -home 0 -lowrange 190 -uprange 190 +c4 speed 6 +c4 creep_offset 1 # Collimation motor 5 Motor c5 $motor_driver_type [params \ @@ -362,19 +488,26 @@ Motor c5 $motor_driver_type [params \ port pmc2-quokka\ axis E\ units mm\ - hardlowerlim 0\ - hardupperlim 5\ - maxSpeed 1\ + hardlowerlim -190\ + hardupperlim 190\ + maxSpeed 6\ maxAccel 1\ maxDecel 1\ - stepsPerX 25000\ + stepsPerX $coll_StepsPerX\ absEnc 1\ absEncHome $c5_Home\ - cntsPerX -8192] + cntsPerX $coll_CntsPerX\ + posit_count 5] +c5 posit_1 [expr $c5_Home + (150 * $coll_CntsPerX)] +c5 posit_2 [expr $c5_Empty] +c5 posit_3 [expr $c5_Guide] +c5 posit_4 [expr $c5_Aperture] +c5 posit_5 [expr $c5_Home - (150 * $coll_CntsPerX)] c5 part collimator c5 long_name c5 -setHomeandRange -motor c5 -home 0 -lowrange 0 -uprange 5 -c5 speed 1 +setHomeandRange -motor c5 -home 0 -lowrange 190 -uprange 190 +c5 speed 6 +c5 creep_offset 1 # Collimation motor 6 Motor c6 $motor_driver_type [params \ @@ -383,19 +516,26 @@ Motor c6 $motor_driver_type [params \ port pmc2-quokka\ axis F\ units mm\ - hardlowerlim 0\ - hardupperlim 5\ - maxSpeed 1\ + hardlowerlim -190\ + hardupperlim 190\ + maxSpeed 6\ maxAccel 1\ maxDecel 1\ - stepsPerX 25000\ + stepsPerX $coll_StepsPerX\ absEnc 1\ absEncHome $c6_Home\ - cntsPerX -8192] + cntsPerX $coll_CntsPerX\ + posit_count 5] +c6 posit_1 [expr $c6_Home + (150 * $coll_CntsPerX)] +c6 posit_2 [expr $c6_Empty] +c6 posit_3 [expr $c6_Guide] +c6 posit_4 [expr $c6_Aperture] +c6 posit_5 [expr $c6_Home - (150 * $coll_CntsPerX)] c6 part collimator c6 long_name c6 -setHomeandRange -motor c6 -home 0 -lowrange 0 -uprange 5 -c6 speed 1 +setHomeandRange -motor c6 -home 0 -lowrange 190 -uprange 190 +c6 speed 6 +c6 creep_offset 1 # Collimation motor 7 Motor c7 $motor_driver_type [params \ @@ -404,19 +544,26 @@ Motor c7 $motor_driver_type [params \ port pmc2-quokka\ axis G\ units mm\ - hardlowerlim 0\ - hardupperlim 5\ - maxSpeed 1\ + hardlowerlim -190\ + hardupperlim 190\ + maxSpeed 6\ maxAccel 1\ maxDecel 1\ - stepsPerX 25000\ + stepsPerX $coll_StepsPerX\ absEnc 1\ absEncHome $c7_Home\ - cntsPerX -8192] + cntsPerX $coll_CntsPerX\ + posit_count 5] +c7 posit_1 [expr $c7_Home + (150 * $coll_CntsPerX)] +c7 posit_2 [expr $c7_Empty] +c7 posit_3 [expr $c7_Guide] +c7 posit_4 [expr $c7_Aperture] +c7 posit_5 [expr $c7_Home - (150 * $coll_CntsPerX)] c7 part collimator c7 long_name c7 -setHomeandRange -motor c7 -home 0 -lowrange 0 -uprange 5 -c7 speed 1 +setHomeandRange -motor c7 -home 0 -lowrange 190 -uprange 190 +c7 speed 6 +c7 creep_offset 1 # Collimation motor 8 Motor c8 $motor_driver_type [params \ @@ -425,19 +572,26 @@ Motor c8 $motor_driver_type [params \ port pmc2-quokka\ axis H\ units mm\ - hardlowerlim 0\ - hardupperlim 5\ - maxSpeed 1\ + hardlowerlim -190\ + hardupperlim 190\ + maxSpeed 6\ maxAccel 1\ maxDecel 1\ - stepsPerX 25000\ + stepsPerX $coll_StepsPerX\ absEnc 1\ absEncHome $c8_Home\ - cntsPerX -8192] + cntsPerX $coll_CntsPerX\ + posit_count 5] +c8 posit_1 [expr $c8_Home + (150 * $coll_CntsPerX)] +c8 posit_2 [expr $c8_Empty] +c8 posit_3 [expr $c8_Guide] +c8 posit_4 [expr $c8_Aperture] +c8 posit_5 [expr $c8_Home - (150 * $coll_CntsPerX)] c8 part collimator c8 long_name c8 -setHomeandRange -motor c8 -home 0 -lowrange 0 -uprange 5 -c8 speed 1 +setHomeandRange -motor c8 -home 0 -lowrange 190 -uprange 190 +c8 speed 6 +c8 creep_offset 1 ############################ # Motor Controller 3 @@ -453,19 +607,26 @@ Motor c9 $motor_driver_type [params \ port pmc3-quokka\ axis A\ units mm\ - hardlowerlim 0\ - hardupperlim 5\ - maxSpeed 1\ + hardlowerlim -190\ + hardupperlim 190\ + maxSpeed 6\ maxAccel 1\ maxDecel 1\ - stepsPerX 25000\ + stepsPerX $coll_StepsPerX\ absEnc 1\ absEncHome $c9_Home\ - cntsPerX -8192] + cntsPerX $coll_CntsPerX\ + posit_count 5] +c9 posit_1 [expr $c9_Home + (150 * $coll_CntsPerX)] +c9 posit_2 [expr $c9_Empty] +c9 posit_3 [expr $c9_Guide] +c9 posit_4 [expr $c9_Aperture] +c9 posit_5 [expr $c9_Home - (150 * $coll_CntsPerX)] c9 part collimator c9 long_name c9 -setHomeandRange -motor c9 -home 0 -lowrange 0 -uprange 5 -c9 speed 1 +setHomeandRange -motor c9 -home 0 -lowrange 190 -uprange 190 +c9 speed 6 +c9 creep_offset 1 # Collimation motor 10 Motor c10 $motor_driver_type [params \ @@ -474,19 +635,28 @@ Motor c10 $motor_driver_type [params \ port pmc3-quokka\ axis B\ units mm\ - hardlowerlim 0\ - hardupperlim 5\ - maxSpeed 1\ + hardlowerlim -190\ + hardupperlim 190\ + maxSpeed 6\ maxAccel 1\ maxDecel 1\ - stepsPerX 25000\ + stepsPerX $coll_StepsPerX\ absEnc 1\ absEncHome $c10_Home\ - cntsPerX -8192] + cntsPerX $coll_CntsPerX\ + posit_count 7] +c10 posit_1 [expr $c10_Empty + 81920 + (10 * $coll_CntsPerX)] +c10 posit_2 [expr $c10_Empty + 81920] +c10 posit_3 [expr $c10_Empty] +c10 posit_4 [expr $c10_Guide] +c10 posit_5 [expr $c10_Aperture] +c10 posit_6 [expr $c10_Aperture - 81920] +c10 posit_7 [expr $c10_Aperture - 81920 - (10 * $coll_CntsPerX)] c10 part collimator c10 long_name c10 -setHomeandRange -motor c10 -home 0 -lowrange 0 -uprange 5 -c10 speed 1 +setHomeandRange -motor c10 -home 0 -lowrange 190 -uprange 190 +c10 speed 6 +c10 creep_offset 1 # Pentaprism Motor pent $motor_driver_type [params \ @@ -495,18 +665,18 @@ Motor pent $motor_driver_type [params \ port pmc3-quokka\ axis C\ units mm\ - hardlowerlim 0\ - hardupperlim 5\ + hardlowerlim -30\ + hardupperlim 300\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ - stepsPerX 25000\ + stepsPerX [expr 25000.0/3.0]\ absEnc 1\ absEncHome $pent_Home\ - cntsPerX -8192] + cntsPerX [expr -8192.0/3.0]] pent part collimator pent long_name pent -setHomeandRange -motor pent -home 0 -lowrange 0 -uprange 5 +setHomeandRange -motor pent -home 0 -lowrange 30 -uprange 300 pent speed 1 # Rotary source aperture @@ -515,20 +685,33 @@ Motor srce $motor_driver_type [params \ host mc3-quokka\ port pmc3-quokka\ axis D\ - units mm\ - hardlowerlim 0\ - hardupperlim 5\ + units degrees\ + hardlowerlim -10\ + hardupperlim 340\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ - stepsPerX 25000\ + stepsPerX [expr 25000.0/6.0]\ absEnc 1\ absEncHome $srce_Home\ - cntsPerX -8192] + cntsPerX [expr -8192.0/6.0]\ + posit_count 12] srce part collimator srce long_name srce -setHomeandRange -motor srce -home 0 -lowrange 0 -uprange 5 +setHomeandRange -motor srce -home 0 -lowrange 10 -uprange 340 srce speed 1 +srce posit_1 $srce_Home +srce posit_2 [expr $srce_Home - (1 * 5 * 8192)] +srce posit_3 [expr $srce_Home - (2 * 5 * 8192)] +srce posit_4 [expr $srce_Home - (3 * 5 * 8192)] +srce posit_5 [expr $srce_Home - (4 * 5 * 8192)] +srce posit_6 [expr $srce_Home - (5 * 5 * 8192)] +srce posit_7 [expr $srce_Home - (6 * 5 * 8192)] +srce posit_8 [expr $srce_Home - (7 * 5 * 8192)] +srce posit_9 [expr $srce_Home - (8 * 5 * 8192)] +srce posit_10 [expr $srce_Home - (9 * 5 * 8192)] +srce posit_11 [expr $srce_Home - (10 * 5 * 8192)] +srce posit_12 [expr $srce_Home - (11 * 5 * 8192)] # Sample aperture x Motor apx $motor_driver_type [params \ @@ -577,7 +760,7 @@ Motor att $motor_driver_type [params \ asyncqueue mc3\ host mc3-quokka\ port pmc3-quokka\ - axis H\ + axis G\ units mm\ hardlowerlim 0\ hardupperlim 5\ @@ -769,3 +952,57 @@ pol home 0 proc motor_set_sobj_attributes {} { } # END MOTOR CONFIGURATION + +proc set_virtual_1 { phys1 posit } { + set units [expr [SplitReply [$phys1 posit2unit $posit]]] + return "$phys1=$units" +} + +proc set_virtual_2 { phys1 phys2 posit } { + set unit1 [expr [SplitReply [$phys1 posit2unit $posit]]] + set unit2 [expr [SplitReply [$phys2 posit2unit $posit]]] + return "$phys1=$unit1,$phys2=$unit2" +} + +proc get_virtual_1 { phys1 } { + set p1 [expr [SplitReply [$phys1 posit]]] + return $p1 +} + +proc get_virtual_2 { phys1 phys2 } { + set p1 [expr [SplitReply [$phys1 posit]]] + set p2 [expr [SplitReply [$phys2 posit]]] + return [expr ($p1 + $p2) / 2.0] +} +publish set_virtual_1 user +publish set_virtual_2 user +publish get_virtual_1 user +publish get_virtual_2 user + +proc make_coll_motor_1 { vm1 pm1 } { + eval "proc get_$vm1 {} { get_virtual_1 $pm1 }" + set v {$var} + eval "proc set_$vm1 {var} { set_virtual_1 $pm1 $v }" + MakeConfigurableMotor $vm1 + $vm1 readscript get_$vm1 + $vm1 drivescript set_$vm1 +} + +proc make_coll_motor_2 { vm1 pm1 pm2 } { + eval "proc get_$vm1 {} { get_virtual_2 $pm1 $pm2 }" + set v {$var} + eval "proc set_$vm1 {var} { set_virtual_2 $pm1 $pm2 $v }" + MakeConfigurableMotor $vm1 + $vm1 readscript get_$vm1 + $vm1 drivescript set_$vm1 +} + +make_coll_motor_2 vc01 c1 c2 +make_coll_motor_1 vc02 c3 +make_coll_motor_1 vc03 c4 +make_coll_motor_1 vc04 c5 +make_coll_motor_1 vc05 c6 +make_coll_motor_1 vc06 c7 +make_coll_motor_1 vc07 c8 +make_coll_motor_1 vc08 c9 +make_coll_motor_1 vc09 c10