diff --git a/site_ansto/instrument/reflectometer/config/commands/commands.tcl b/site_ansto/instrument/reflectometer/config/commands/commands.tcl index 2342f8b4..34a344e9 100644 --- a/site_ansto/instrument/reflectometer/config/commands/commands.tcl +++ b/site_ansto/instrument/reflectometer/config/commands/commands.tcl @@ -87,7 +87,12 @@ proc ::exp_mode::omega_2theta { arg1 arg2 {s1vg 0} {s2vg 0} {s3vg 0} {s4vg 0}} { if {![string is double $s1vg] || ![string is double $s2vg] || ![string is double $s3vg] || ![string is double $s4vg]} { return -code error "ERROR: all the slit openings need to be numbers" } - drive ss1u [expr 0.5 * $s1vg] ss1d [expr -0.5 * $s1vg] ss2u [expr 0.5 * $s2vg] ss2d [expr -0.5 * $s2vg] ss3u [expr 0.5 * $s3vg] ss3d [expr -0.5 * $s3vg] ss4u [expr 0.5 * $s4vg] ss4d [expr -0.5*$s4vg] +# drive ss1u [expr 0.5 * $s1vg] ss1d [expr -0.5 * $s1vg] ss2u [expr 0.5 * $s2vg] ss2d [expr -0.5 * $s2vg] ss3u [expr 0.5 * $s3vg] ss3d [expr -0.5 * $s3vg] ss4u [expr 0.5 * $s4vg] ss4d [expr -0.5*$s4vg] + + drive ss1u [expr 0.5 * $s1vg] ss1d [expr -0.5 * $s1vg] ss2d [expr -0.5 * $s2vg] ss3u [expr 0.5 * $s3vg] ss4d [expr -0.5*$s4vg] + + drive ss2u [expr 0.5 * $s2vg] ss3d [expr -0.5 * $s3vg] ss4u [expr 0.5 * $s4vg] + statemon stop om2th return -code ok } @@ -102,7 +107,10 @@ proc ::exp_mode::set_guide_element { arg } { global ::exp_mode::c1ht_pos global ::exp_mode::valid_modes - drive ss1u 0 ss1d 0 ss2u 0 ss2d 0 ss3u 0 ss3d 0 ss4u 0 ss4d 0 +# drive ss1u 0 ss1d 0 ss2u 0 ss2d 0 ss3u 0 ss3d 0 ss4u 0 ss4d 0 + drive ss1u 0 ss1d 0 ss2d 0 ss3u 0 ss4d 0 + drive ss2u 0 ss3d 0 ss4u 0 + if {[lsearch $::exp_mode::valid_modes $arg] == -1} { Clientput "Mode is: $::exp_mode::valid_modes - (polarisation, polarisation and analysis, mt, focussing, DB, single)" return -code error "Mode is: $::exp_mode::valid_modes - (polarisation,polarisation and analysis, mt, focussing, DB, single)" @@ -145,9 +153,14 @@ proc ::exp_mode::set_omega { arg } { set h1 [expr -1. * $d1 * tan($argrad)] set h2 [expr -1. * $d2 * tan($argrad)] - if {[catch {checkMotionAndDrive st3vt $h1} errMsg]} {return -code error $errMsg} if {[catch {isszst4vtsafe sz $h2} errMsg]} {return -code error $errMsg} - if {[catch {checkMotionAndDrive sz $h2} errMsg]} {return -code error $errMsg} + if { [catch { + checkMotion st3vt $h1 + checkMotion sz $h2 + } errMsg ] } { + return -code error $errMsg + } + drive st3vt $h1 sz $h2 } DB { ;#checked ARJN on 081231 set temp [deg2rad 2.4] @@ -161,15 +174,21 @@ proc ::exp_mode::set_omega { arg } { set offset [expr 599.868*sin($temp)] set arg 4.8 ;#fixed angle + set argrad [deg2rad $arg] set d1 [expr [SplitReply [slit3_distance]] - [SplitReply [guide2_distance]]] set d2 [expr [SplitReply [sample_distance]] - [SplitReply [guide2_distance]]] set h1 [expr -1. * $d1 * tan($argrad) - $offset] set h2 [expr -1. * $d2 * tan($argrad) - $offset] - if { [catch {checkMotionAndDrive st3vt $h1} errMsg]} {return -code error $errMsg} if { [catch {isszst4vtsafe sz $h2} errMsg]} {return -code error $errMsg} - if { [catch {checkMotionAndDrive sz $h2} errMsg]} {return -code error $errMsg} + if { [catch { + checkMotion st3vt $h1 + checkMotion sz $h2 + } errMsg ] } { + return -code error $errMsg + } + drive st3vt $h1 sz $h2 } FOC { if { [catch { @@ -250,8 +269,13 @@ proc ::exp_mode::set_two_theta { arg } { set c [expr $d3 / cos($argrad-$omegarad)] set h4 [expr sqrt(pow($b,2) + pow($c,2) - 2*$b*$c*cos($argrad))] if { [catch {isszst4vtsafe st4vt [expr $h2 + $h1]} errMsg]} {return -code error $errMsg} - if { [catch {checkMotionAndDrive st4vt [expr $h2 + $h1]} errMsg]} {return -code error $errMsg} - if { [catch {checkMotionAndDrive dz [expr $h3 + $h4]} errMsg]} {return -code error $errMsg} + if { [catch { + checkMotion st4vt [expr $h2 + $h1] + checkMotion dz [expr $h3 + $h4] + } errMsg ] } { + return -code error $errMsg + } + drive st4vt [expr $h2 + $h1] dz [expr $h3 + $h4] } DB { ;#checked ARJN 081231 set temp [deg2rad 2.4] @@ -274,8 +298,13 @@ proc ::exp_mode::set_two_theta { arg } { set c [expr $d3 / cos($argrad-$omegarad)] set h4 [expr sqrt(pow($b,2) + pow($c,2) - 2*$b*$c*cos($argrad))] if { [catch {isszst4vtsafe st4vt [expr $h2 + $h1]} errMsg]} {return -code error $errMsg} - if { [catch {checkMotionAndDrive st4vt [expr $h2 + $h1]} errMsg]} {return -code error $errMsg} - if { [catch {checkMotionAndDrive dz [expr $h3 + $h4]} errMsg]} {return -code error $errMsg} + if { [catch { + checkMotion st4vt [expr $h2 + $h1] + checkMotion dz [expr $h3 + $h4] + } errMsg ] } { + return -code error $errMsg + } + drive st4vt [expr $h2 + $h1] dz [expr $h3 + $h4] } FOC { set d1 [SplitReply [dy]]