diff --git a/site_ansto/instrument/pelican/config/motors/motor_configuration.tcl b/site_ansto/instrument/pelican/config/motors/motor_configuration.tcl index 89bec06f..77c9bcc0 100644 --- a/site_ansto/instrument/pelican/config/motors/motor_configuration.tcl +++ b/site_ansto/instrument/pelican/config/motors/motor_configuration.tcl @@ -1,4 +1,3 @@ -# Author: Jing Chen (jgn@ansto.gov.au) # All Motors are 25000 steps per motor revolution set animal pelican @@ -72,11 +71,14 @@ set my_Home 8391084 set mom_Home 8389414 set rco_Home 33531098 -# TODO get real values from Dan -set rcz_Home 33141607 + +set rcz_Home 33137920 +set rcz_Beam 33479215 + set bsr_Home 1192516 -set gv1_Home 0 -set gv2_Home 0 + +set gv1_Open 33468000 +set gv1_Shut 33221600 # set movecount high to reduce the frequency of @@ -142,6 +144,7 @@ ptz home 0 ptz posit_1 31408274 ptz posit_2 32096132 ptz posit_3 33171650 +ptz creep_offset 0.001 # mc1: Beryllium / Graphite filter shared - Z translation slide # Moto: 100:1 gear, 2mm pitch @@ -168,10 +171,11 @@ ftz long_name ftz ftz softlowerlim -280 ftz softupperlim 160 ftz home 0 -# 1:RevLimit, 2:PG, 3:Open, 4:Be, 5:FwdLim +# 1:PG, 2:Open, 3:Be ftz posit_1 590157 ftz posit_2 1242083 ftz posit_3 2348104 +ftz creep_offset 0.001 # mc1: Polariser (& Spin Flipper) - Rotation + - 2 deg about polariser (i.e, The Elbow) set pomStepRate [expr { 1176 * 25000 }] @@ -184,7 +188,7 @@ Motor pom $motor_driver_type [params \ units degrees\ hardlowerlim -1.5\ hardupperlim 1.5\ - maxSpeed [expr { 100000.0 / $pomStepRate }]\ + maxSpeed [expr { 200000.0 / $pomStepRate }]\ maxAccel [expr { 25000.0 / $pomStepRate }]\ maxDecel [expr { 25000.0 / $pomStepRate }]\ stepsPerX $pomStepRate\ @@ -196,10 +200,14 @@ pom long_name pom pom softlowerlim -1.5 pom softupperlim 1.5 pom home 0 +pom blockage_thresh 1.0 +pom backlash_offset -0.2 +pom MotOffDelay 2000 +pom creep_offset 0.1 # 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 * 400.0 * (2 * 1800.0 / 400.0) / 360.0 }] Motor stth $motor_driver_type [params \ asyncqueue mc1\ @@ -207,24 +215,30 @@ Motor stth $motor_driver_type [params \ port pmc1-pelican\ axis F\ units degrees\ - hardlowerlim -60\ - hardupperlim 50\ - maxSpeed [expr { 25000.0 / $stthStepRate }]\ + hardlowerlim -50\ + hardupperlim 60\ + maxSpeed [expr { 50000.0 / $stthStepRate }]\ maxAccel [expr { 5000.0 / $stthStepRate }]\ maxDecel [expr { 5000.0 / $stthStepRate }]\ - stepsPerX $stthStepRate\ + stepsPerX [expr {0.8 * $stthStepRate}]\ absEnc 1\ absEncHome $stth_Home\ cntsPerX -[expr { 8192.0 / 360.0 }]] stth part detector stth long_name stth -stth softlowerlim -60 -stth softupperlim 50 +stth softlowerlim -50 +stth softupperlim 60 stth home 0 +stth Blockage_Thresh 2.000000 +stth Blockage_Ratio 5.000000 +stth Backlash_offset -0.100000 +stth MotOffDelay 2000 +stth creep_offset 1 +stth creep_precision 0.022 # mc1: Instrument Drive System (Main Drive) (Flight Tube) #set mtthStepRate 222222.222 -set mtthStepRate [expr { 25000 * 100.0 / (66.0/2112) / 360.0 }] +set mtthStepRate [expr { 25000 * 400.0 / (66.0/2112) / 360.0 }] Motor mtth $motor_driver_type [params \ asyncqueue mc1\ @@ -237,16 +251,20 @@ Motor mtth $motor_driver_type [params \ maxSpeed [expr { 100000.0 / $mtthStepRate }]\ maxAccel [expr { 25000.0 / $mtthStepRate }]\ maxDecel [expr { 25000.0 / $mtthStepRate }]\ - stepsPerX $mtthStepRate\ + stepsPerX -$mtthStepRate\ absEnc 1\ absEncHome $mtth_Home\ - cntsPerX [expr { (1<<25)/360.0 }]] + cntsPerX -[expr { (1<<25)/360.0 }]] mtth part detector mtth long_name mtth mtth softlowerlim 43 mtth softupperlim 134 mtth home 90 - +mtth MotOffDelay 2000 +mtth Blockage_Thresh 2.0 +mtth Backlash_offset -0.100000 +mtth Creep_Offset 1.000000 +mtth Creep_Precision 0.005000 ############################ # Motor Controller 2 @@ -461,8 +479,6 @@ mra long_name mra mra softlowerlim 0 mra softupperlim 1 mra home 0 -# fix the motor -mra fixed -1 # mc3: Monochromator Focusing 1 - Rotation Motor moma $motor_driver_type [params \ @@ -513,8 +529,6 @@ mrb long_name mrb mrb softlowerlim 0 mrb softupperlim 1 mrb home 0 -# fix the motor -mrb fixed -1 # mc3: Monochromator Focusing 2 - Rotation Motor momb $motor_driver_type [params \ @@ -565,8 +579,6 @@ mrc long_name mrc mrc softlowerlim 0 mrc softupperlim 1 mrc home 0 -# fix the motor -mrc fixed -1 # mc3: Monochromator Focusing 3 - Rotation Motor momc $motor_driver_type [params \ @@ -751,16 +763,20 @@ Motor rco $motor_driver_type [params \ stepsPerX $rcoStepRate\ absEnc 1\ absEncHome $rco_Home\ - cntsPerX [expr { (1200.26 / 60.0) * (8192.0 / 360.0) }]] + cntsPerX [expr { (1200.26 / 60.0) * (8192.0 / 360.0) }]\ + posit_count 3] rco part collimator rco long_name rco rco softlowerlim 0 rco softupperlim 0 +# 1:RevLimit, 2:Center, 3:FwdLim +rco posit_1 33529987 +rco posit_2 33531098 +rco posit_3 33532000 rco home 0 -# fix this motor -rco fixed 1 # mc6: Radial Collimator -- Z Translation +#set rczStepRate [expr { 25000.0 * 100.0 / 10.0 }] set rczStepRate [expr { 25000.0 * 100.0 / 10.0 }] Motor rcz $motor_driver_type [params \ @@ -777,14 +793,16 @@ Motor rcz $motor_driver_type [params \ stepsPerX $rczStepRate\ absEnc 1\ absEncHome $rcz_Home\ - cntsPerX [expr { 8192.0 / 10.0 }]] + cntsPerX [expr { 8192.0 / 10.0 }]\ + posit_count 2] rcz part collimator rcz long_name rcz rcz softlowerlim 0 rcz softupperlim 450 rcz home 0 -# fix this motor -rcz fixed 1 +# 1:Down 2:Up +rcz posit_1 $rcz_Home +rcz posit_2 $rcz_Beam # mc6: Beam Stop Stage - Rotation set bsrStepRate [expr { 25000.0 / 2.0 }] @@ -809,10 +827,8 @@ 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 +# mc6: Isolation Valve -- Axis 1, currently this Axis is set to read ONLY to read the encoder Motor gv1 $motor_driver_type [params \ asyncqueue mc6\ host mc6-pelican\ @@ -826,48 +842,20 @@ Motor gv1 $motor_driver_type [params \ maxDecel 0\ stepsPerX 1\ absEnc 1\ - absEncHome $gv1_Home\ - cntsPerX 1\ + absEncHome $gv1_Shut\ + cntsPerX [expr { ($gv1_Open - $gv1_Shut) / 100.0 }]\ posit_count 2] gv1 part sample gv1 long_name gv1 gv1 softlowerlim 0 -gv1 softupperlim 180 +gv1 softupperlim 0 gv1 home 0 # 1:open, 2:closed -gv1 posit_1 33468000 -gv1 posit_2 33221600 +gv1 posit_1 $gv1_Open +gv1 posit_2 $gv1_Shut # fix the motor 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 \ - asyncqueue mc6\ - host mc6-pelican\ - port pmc6-pelican\ - axis F\ - units degrees\ - hardlowerlim 0\ - hardupperlim 0\ - maxSpeed 0\ - maxAccel 0\ - maxDecel 0\ - stepsPerX 1\ - absEnc 1\ - absEncHome $gv2_Home\ - 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 - proc motor_set_sobj_attributes {} { } # END MOTOR CONFIGURATION @@ -887,3 +875,21 @@ proc motor_set_sobj_attributes {} { #make_coll_motor_1 c9 section_9 pc10 $vc_units #unset vc_units +# Generator functions +proc make_virtual_motor_1 { vm1 vm1_name pm1 aunits klass } { + 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 + sicslist setatt $vm1 units $aunits + sicslist setatt $vm1 klass $klass + sicslist setatt $vm1 long_name $vm1_name + sicslist setatt $vm1 hdbchain $pm1 +} + +make_virtual_motor_1 { vrcz RCollZ rcz count collimator } +make_virtual_motor_1 { vptz PolarizerZ ptz count thing } +make_virtual_motor_1 { vftz FilterZ ftz count thing } +make_virtual_motor_1 { vgv GateValve gv1 count thing }