From 7959d78fd13beb30aa8cee0a72f25a9098d1c1aa Mon Sep 17 00:00:00 2001 From: Douglas Clowes Date: Fri, 27 Apr 2012 14:40:00 +1000 Subject: [PATCH] WIP: another pass at the Pelican motor configuration r3539 | dcl | 2012-04-27 14:40:00 +1000 (Fri, 27 Apr 2012) | 1 line --- .../config/motors/motor_configuration.tcl | 347 +++++++++--------- 1 file changed, 180 insertions(+), 167 deletions(-) diff --git a/site_ansto/instrument/pelican/config/motors/motor_configuration.tcl b/site_ansto/instrument/pelican/config/motors/motor_configuration.tcl index 667cae72..89bec06f 100644 --- a/site_ansto/instrument/pelican/config/motors/motor_configuration.tcl +++ b/site_ansto/instrument/pelican/config/motors/motor_configuration.tcl @@ -1,9 +1,6 @@ # Author: Jing Chen (jgn@ansto.gov.au) # All Motors are 25000 steps per motor revolution -# SET TO 1 TO USE THE TILT STAGE ie sample phi and chi -set use_tiltstage 0 - set animal pelican set sim_mode [SplitReply [motor_simulation]] @@ -30,29 +27,29 @@ if {$sim_mode == "true"} { set motor_driver_type asim } else { set motor_driver_type DMC2280 -# MakeAsyncQueue mc1 DMC2280 $dmc2280_controller1(host) $dmc2280_controller1(port) -# MakeAsyncQueue mc2 DMC2280 $dmc2280_controller2(host) $dmc2280_controller2(port) + MakeAsyncQueue mc1 DMC2280 $dmc2280_controller1(host) $dmc2280_controller1(port) + MakeAsyncQueue mc2 DMC2280 $dmc2280_controller2(host) $dmc2280_controller2(port) MakeAsyncQueue mc3 DMC2280 $dmc2280_controller3(host) $dmc2280_controller3(port) MakeAsyncQueue mc4 DMC2280 $dmc2280_controller4(host) $dmc2280_controller4(port) -# MakeAsyncQueue mc6 DMC2280 $dmc2280_controller6(host) $dmc2280_controller6(port) + MakeAsyncQueue mc6 DMC2280 $dmc2280_controller6(host) $dmc2280_controller6(port) } #Measured absolute encoder reading at home position set dummy_Home 0 -set ftz_Home 32096132 -set ptz_Home 1242083 +set ptz_Home 32096132 +set ftz_Home 1242083 set pom_Home 34677 set stth_Home 152965 set mtth_Home 24409175 -set sv1_Home 0 -set sh1_Home 0 -set sv2_Home 0 -set sh2_Home 0 -set gom_Home 0 -set scor_Home 0 +set sv1_Home 33431185 +set sh1_Home 33414 +set sv2_Home 33357369 +set sh2_Home 33505668 +set gom_Home 373521 +set scor_Home 20193638 # AND abs Encoder Reading with FFF to get the lowest 12 bits only #set mra_Home 4286 @@ -74,9 +71,10 @@ set mx_Home 8390604 set my_Home 8391084 set mom_Home 8389414 -set rco_Home 0 -set rcz_Home 0 -set bsr_Home 0 +set rco_Home 33531098 +# TODO get real values from Dan +set rcz_Home 33141607 +set bsr_Home 1192516 set gv1_Home 0 set gv2_Home 0 @@ -125,29 +123,26 @@ Motor ptz $motor_driver_type [params \ port pmc1-pelican\ axis B\ units mm\ - hardlowerlim 0\ - hardupperlim 500\ + hardlowerlim -264\ + hardupperlim 187\ maxSpeed [expr { 300000.0 / $ptzStepRate }]\ maxAccel [expr { 150000.0 / $ptzStepRate }]\ maxDecel [expr { 150000.0 / $ptzStepRate }]\ - stepsPerX $ptzStepRate\ + stepsPerX -$ptzStepRate\ absEnc 1\ absEncHome $ptz_Home\ - cntsPerX 4096\ - posit_count 5] + cntsPerX -[expr { 8192.0 / 2.0 }]\ + posit_count 3] ptz part crystal ptz long_name ptz -ptz softlowerlim 0 -ptz softupperlim 500 +ptz softlowerlim -264 +ptz softupperlim 187 ptz home 0 # 1:RevLimit, 2:Coll, 3:Open, 4:Polarizer, 5:FwdLim -ptz posit_1 31327313 -ptz posit_2 31408274 -ptz_posit_3 32096132 -ptz posit_4 33171650 -ptz posit_5 33179305 +ptz posit_1 31408274 +ptz posit_2 32096132 +ptz posit_3 33171650 -#if $use_tiltstage { # mc1: Beryllium / Graphite filter shared - Z translation slide # Moto: 100:1 gear, 2mm pitch set ftzStepRate [expr { 25000 * 100 / 2.0 }] @@ -158,27 +153,25 @@ Motor ftz $motor_driver_type [params \ port pmc1-pelican\ axis C\ units mm\ - hardlowerlim 0\ - hardupperlim 500\ + hardlowerlim -280\ + hardupperlim 160\ maxSpeed [expr { 300000.0 / $ftzStepRate }]\ maxAccel [expr { 150000.0 / $ftzStepRate }]\ maxDecel [expr { 150000.0 / $ftzStepRate }]\ - stepsPerX $ftzStepRate\ + stepsPerX -$ftzStepRate\ absEnc 1\ absEncHome $ftz_Home\ - cntsPerX 4096\ - posit_count 5] + cntsPerX -[expr { 8192.0 / 2.0 }]\ + posit_count 3] ftz part crystal ftz long_name ftz -ftz softlowerlim 0 -ftz softupperlim 500 +ftz softlowerlim -280 +ftz softupperlim 160 ftz home 0 # 1:RevLimit, 2:PG, 3:Open, 4:Be, 5:FwdLim -ptz posit_1 590458 -ptz posit_2 590157 -ptz_posit_3 1242083 -ptz posit_4 2348104 -ptz posit_5 2426769 +ftz posit_1 590157 +ftz posit_2 1242083 +ftz posit_3 2348104 # mc1: Polariser (& Spin Flipper) - Rotation + - 2 deg about polariser (i.e, The Elbow) set pomStepRate [expr { 1176 * 25000 }] @@ -206,7 +199,7 @@ pom home 0 # mc1: Sample/Detector Chamber Rotation (Detector) #set stthStepRate 66807.314 -set stthStepRate [expr { 25000 * 100.0 * (3800.0 / 395.0) / 360.0) }] +set stthStepRate [expr { 25000 * 100.0 * (3800.0 / 395.0) / 360.0 }] Motor stth $motor_driver_type [params \ asyncqueue mc1\ @@ -222,7 +215,7 @@ Motor stth $motor_driver_type [params \ stepsPerX $stthStepRate\ absEnc 1\ absEncHome $stth_Home\ - cntsPerX [expr { -8192.0 / 360.0 }]] + cntsPerX -[expr { 8192.0 / 360.0 }]] stth part detector stth long_name stth stth softlowerlim -60 @@ -263,129 +256,129 @@ mtth home 90 # # mc2: Slits Set AB1- (After Beryllium Filter) (2 blades and 1 Motor & Encoder set) -set sv1StepRate 25000 +set sv1StepRate [expr { 25000 / 0.635 / 2.0 }] -#Motor sv1 $motor_driver_type [params \ +Motor sv1 $motor_driver_type [params \ asyncqueue mc2\ host mc2-pelican\ port pmc2-pelican\ axis A\ units mm\ - hardlowerlim -2\ - hardupperlim 60\ + hardlowerlim -0.2\ + hardupperlim 116\ maxSpeed [expr 25000.0/$sv1StepRate]\ maxAccel [expr 25000.0/$sv1StepRate]\ maxDecel [expr 25000.0/$sv1StepRate]\ - stepsPerX $sv1StepRate\ + stepsPerX -$sv1StepRate\ absEnc 1\ absEncHome $sv1_Home\ - cntsPerX 4096] -#sv1 part aperture -#sv1 long_name sv1 -#sv1 softlowerlim -2 -#sv1 softupperlim 60 -#sv1 home 0 + cntsPerX [expr { 1024.0 / 0.635 / 2.0 }]] +sv1 part aperture +sv1 long_name sv1 +sv1 softlowerlim -0.2 +sv1 softupperlim 116 +sv1 home 0 # mc2: Slits Set AB2- (After Beryllium Filter) (2 blades and 1 Motor & Encoder set) -set sh1StepRate 25000 +set sh1StepRate [expr { 25000 / 0.635 / 2.0 }] -#Motor sh1 $motor_driver_type [params \ +Motor sh1 $motor_driver_type [params \ asyncqueue mc2\ host mc2-pelican\ port pmc2-pelican\ axis B\ units mm\ - hardlowerlim -2\ - hardupperlim 50\ + hardlowerlim -3\ + hardupperlim 90\ maxSpeed [expr 25000.0/$sh1StepRate]\ maxAccel [expr 25000.0/$sh1StepRate]\ maxDecel [expr 25000.0/$sh1StepRate]\ - stepsPerX $sh1StepRate\ + stepsPerX -$sh1StepRate\ absEnc 1\ absEncHome $sh1_Home\ - cntsPerX 4096] -#sh1 part aperture -#sh1 long_name sh1 -#sh1 softlowerlim -2 -#sh1 softupperlim 50 -#sh1 home 0 + cntsPerX [expr { 1024.0 / 0.635 / 2.0 }]] +sh1 part aperture +sh1 long_name sh1 +sh1 softlowerlim -3 +sh1 softupperlim 90 +sh1 home 0 # mc2: Slits Set AF1- (After Fermi Chopper) (2 blades and 1 Motor & Encoder set) -set sv2StepRate 25000 +set sv2StepRate [expr { 25000 / 0.635 / 2.0 }] -#Motor sv2 $motor_driver_type [params \ +Motor sv2 $motor_driver_type [params \ asyncqueue mc2\ host mc2-pelican\ port pmc2-pelican\ axis C\ units mm\ hardlowerlim -2\ - hardupperlim 40\ + hardupperlim 80\ maxSpeed [expr 25000.0/$sv2StepRate]\ maxAccel [expr 25000.0/$sv2StepRate]\ maxDecel [expr 25000.0/$sv2StepRate]\ stepsPerX $sv2StepRate\ absEnc 1\ absEncHome $sv2_Home\ - cntsPerX 4096] -#sv2 part aperture -#sv2 long_name sv2 -#sv2 softlowerlim -2 -#sv2 softupperlim 40 -#sv2 home 0 + cntsPerX [expr { 1024.0 / 0.635 / 2.0 }]] +sv2 part aperture +sv2 long_name sv2 +sv2 softlowerlim -2 +sv2 softupperlim 80 +sv2 home 0 # mc2: Slits Set AF2- (After Fermi Chopper) (2 blades and 1 Motor & Encoder set) -set sh2StepRate 25000 +set sh2StepRate [expr { 25000 / 0.635 / 2.0 }] -#Motor sh2 $motor_driver_type [params \ +Motor sh2 $motor_driver_type [params \ asyncqueue mc2\ host mc2-pelican\ port pmc2-pelican\ axis D\ units mm\ - hardlowerlim -2\ - hardupperlim 30\ + hardlowerlim -0.5\ + hardupperlim 50\ maxSpeed [expr 25000.0/$sh2StepRate]\ maxAccel [expr 25000.0/$sh2StepRate]\ maxDecel [expr 25000.0/$sh2StepRate]\ - stepsPerX $sh2StepRate\ + stepsPerX -$sh2StepRate\ absEnc 1\ absEncHome $sh2_Home\ - cntsPerX 4096] -#sh2 part aperture -#sh2 long_name sh2 -#sh2 softlowerlim -2 -#sh2 softupperlim 30 -#sh2 home 0 + cntsPerX [expr { 1024.0 / 0.635 / 2.0 }]] +sh2 part aperture +sh2 long_name sh2 +sh2 softlowerlim -0.5 +sh2 softupperlim 50 +sh2 home 0 # mc2: Graphite filter rotation stage (post 1st slit and post 1st Fermi chopper) -set gomStepRate 25000 +set gomStepRate [expr { 25000.0 / 2.0 }] -#Motor gom $motor_driver_type [params \ +Motor gom $motor_driver_type [params \ asyncqueue mc2\ host mc2-pelican\ port pmc2-pelican\ axis E\ units degrees\ - hardlowerlim 0\ + hardlowerlim -15\ hardupperlim 15\ - maxSpeed [expr 50000.0/$gomStepRate]\ + maxSpeed [expr 25000.0/$gomStepRate]\ maxAccel [expr 25000.0/$gomStepRate]\ maxDecel [expr 25000.0/$gomStepRate]\ stepsPerX $gomStepRate\ absEnc 1\ absEncHome $gom_Home\ - cntsPerX 4096] -#gom part sample -#gom long_name gom -#gom softlowerlim 0 -#gom softupperlim 15 -#gom home 0 + cntsPerX [expr { 8192.0 / 2.0 }]] +gom part sample +gom long_name gom +gom softlowerlim -15 +gom softupperlim 15 +gom home 0 # mc2: Sample rotation correction - 10 deg rotation -set scorStepRate 25000 +set scorStepRate [expr { 25000.0 * 100.0 / 360.0 }] -#Motor scor $motor_driver_type [params \ +Motor scor $motor_driver_type [params \ asyncqueue mc2\ host mc2-pelican\ port pmc2-pelican\ @@ -393,18 +386,18 @@ set scorStepRate 25000 units degrees\ hardlowerlim 0\ hardupperlim 360\ - maxSpeed [expr 50000.0/$scorStepRate]\ + maxSpeed [expr 25000.0/$scorStepRate]\ maxAccel [expr 25000.0/$scorStepRate]\ maxDecel [expr 25000.0/$scorStepRate]\ stepsPerX $scorStepRate\ absEnc 1\ absEncHome $scor_Home\ - cntsPerX 4096] -#scor part sample -#scor long_name scor -#scor softlowerlim 0 -#scor softupperlim 360 -#scor home 0 + cntsPerX -[expr { 8192.0 * 100.0 / 360.0 }]] +scor part sample +scor long_name scor +scor softlowerlim 0 +scor softupperlim 360 +scor home 0 ############################ # Motor Controller 3 @@ -742,118 +735,138 @@ mom home 0 # # mc6: Radial Collimator -- Oscillator -#Motor rco $motor_driver_type [params \ +set rcoStepRate [expr { (1200.26 / 60.0) * (25000.0 / 360.0) * 49.0 }] + +Motor rco $motor_driver_type [params \ asyncqueue mc6\ host mc6-pelican\ port pmc6-pelican\ axis A\ units mm\ hardlowerlim 0\ - hardupperlim 180\ - maxSpeed 50000\ - maxAccel 60000\ - maxDecel 60000\ - stepsPerX 4096\ + hardupperlim 0\ + maxSpeed [expr { 5000.0 / $rcoStepRate }]\ + maxAccel [expr { 5000.0 / $rcoStepRate }]\ + maxDecel [expr { 5000.0 / $rcoStepRate }]\ + stepsPerX $rcoStepRate\ absEnc 1\ absEncHome $rco_Home\ - cntsPerX 4096] -#rco part collimator -#rco long_name rco -#rco softlowerlim 0 -#rco softupperlim 180 -#rco home 0 + cntsPerX [expr { (1200.26 / 60.0) * (8192.0 / 360.0) }]] +rco part collimator +rco long_name rco +rco softlowerlim 0 +rco softupperlim 0 +rco home 0 +# fix this motor +rco fixed 1 # mc6: Radial Collimator -- Z Translation -#Motor rcz $motor_driver_type [params \ +set rczStepRate [expr { 25000.0 * 100.0 / 10.0 }] + +Motor rcz $motor_driver_type [params \ asyncqueue mc6\ host mc6-pelican\ port pmc6-pelican\ axis B\ units mm\ hardlowerlim 0\ - hardupperlim 180\ - maxSpeed 50000\ - maxAccel 60000\ - maxDecel 60000\ - stepsPerX 4096\ + hardupperlim 450\ + maxSpeed [expr { 250000 / $rczStepRate }]\ + maxAccel [expr { 100000 / $rczStepRate }]\ + maxDecel [expr { 100000 / $rczStepRate }]\ + stepsPerX $rczStepRate\ absEnc 1\ absEncHome $rcz_Home\ - cntsPerX 4096] -#rcz part collimator -#rcz long_name rcz -#rcz softlowerlim 0 -#rcz softupperlim 180 -#rcz home 0 + cntsPerX [expr { 8192.0 / 10.0 }]] +rcz part collimator +rcz long_name rcz +rcz softlowerlim 0 +rcz softupperlim 450 +rcz home 0 +# fix this motor +rcz fixed 1 # mc6: Beam Stop Stage - Rotation -#Motor bsr $motor_driver_type [params \ +set bsrStepRate [expr { 25000.0 / 2.0 }] + +Motor bsr $motor_driver_type [params \ asyncqueue mc6\ host mc6-pelican\ port pmc6-pelican\ axis C\ units degrees\ - hardlowerlim 0\ + hardlowerlim -150\ hardupperlim 180\ - maxSpeed 50000\ - maxAccel 60000\ - maxDecel 60000\ - stepsPerX 4096\ + maxSpeed [expr { 25000.0 / $bsrStepRate }]\ + maxAccel [expr { 25000.0 / $bsrStepRate }]\ + maxDecel [expr { 25000.0 / $bsrStepRate }]\ + stepsPerX $bsrStepRate\ absEnc 1\ absEncHome $bsr_Home\ - cntsPerX 4096] -#bsr part sample -#bsr long_name bsr -#bsr softlowerlim 0 -#bsr softupperlim 180 -#bsr home 0 + cntsPerX [expr { 8192.0 / 2.0 }]] +bsr part sample +bsr long_name bsr +bsr softlowerlim -150 +bsr softupperlim 180 +bsr home 0 +# fix this motor +bsr fixed 1 # mc6: Isolation Vaue -- Axis 1, currently this Axis is set to read ONLY to read the encoder -#Motor gv1 $motor_driver_type [params \ +Motor gv1 $motor_driver_type [params \ asyncqueue mc6\ host mc6-pelican\ port pmc6-pelican\ axis E\ units degrees\ hardlowerlim 0\ - hardupperlim 180\ - maxSpeed 50000\ - maxAccel 60000\ - maxDecel 60000\ - stepsPerX 4096\ + hardupperlim 0\ + maxSpeed 0\ + maxAccel 0\ + maxDecel 0\ + stepsPerX 1\ absEnc 1\ absEncHome $gv1_Home\ - cntsPerX 4096] -#gv1 part sample -#gv1 long_name gv1 -#gv1 softlowerlim 0 -#gv1 softupperlim 180 -#gv1 home 0 + cntsPerX 1\ + posit_count 2] +gv1 part sample +gv1 long_name gv1 +gv1 softlowerlim 0 +gv1 softupperlim 180 +gv1 home 0 +# 1:open, 2:closed +gv1 posit_1 33468000 +gv1 posit_2 33221600 # fix the motor -#gv1 fixed -1 +gv1 fixed 1 # mc6: Isolation Vaue -- Axis 2, currently this Axis is set to read ONLY to read the encoder -#Motor gv2 $motor_driver_type [params \ +Motor gv2 $motor_driver_type [params \ asyncqueue mc6\ host mc6-pelican\ port pmc6-pelican\ axis F\ units degrees\ hardlowerlim 0\ - hardupperlim 180\ - maxSpeed 30000\ - maxAccel 60000\ - maxDecel 60000\ - stepsPerX 4096\ + hardupperlim 0\ + maxSpeed 0\ + maxAccel 0\ + maxDecel 0\ + stepsPerX 1\ absEnc 1\ absEncHome $gv2_Home\ - cntsPerX 4096] -#gv2 part sample -#gv2 long_name gv2 -#gv2 softlowerlim 0 -#gv2 softupperlim 180 -#gv2 home 0 + cntsPerX 1\ + posit_count 2] +gv2 part sample +gv2 long_name gv2 +gv2 softlowerlim 0 +gv2 softupperlim 0 +gv2 home 0 +# 1:open, 2:closed +gv2 posit_1 33549541 +gv2 posit_2 33549541 # fix the motor -#gv2 fixed -1 +gv2 fixed 1 proc motor_set_sobj_attributes {} { }