Commissioning calibration of collimator

virtual collimator motors

r2154 | dcl | 2007-09-26 09:33:29 +1000 (Wed, 26 Sep 2007) | 3 lines
This commit is contained in:
Douglas Clowes
2007-09-26 09:33:29 +10:00
parent 07a1d939d9
commit bef9e542ae

View File

@@ -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