From 4619a57eff2d09bfc6502164b6297f9c0c7931e6 Mon Sep 17 00:00:00 2001 From: Douglas Clowes Date: Wed, 18 Feb 2015 14:14:11 +1100 Subject: [PATCH] Pullback from Quokka 2015-02-18 --- .../magneticField/sct_bruker_BEC1.tcl | 83 ------------------ .../environment/magneticField/sct_tsi_smc.tcl | 4 +- .../config/environment/sct_hiden_xcs.tcl | 76 ++++++++++++++--- .../temperature/sct_julabo_lh45.tcl | 85 +++++++++++++++++++ .../temperature/sct_julabo_lh45_gen.tcl | 2 +- .../temperature/sct_lakeshore_370.tcl | 2 +- .../temperature/sct_oxford_mercury.tcl | 2 +- .../config/hmm/hmm_configuration_common_1.tcl | 20 +++++ .../environment/sct_antonparr_MCR500.tcl | 4 + .../sans/config/environment/sct_rheometer.tcl | 1 + .../config/motors/motor_configuration.tcl | 4 +- .../instrument/sans/quokka_configuration.tcl | 5 +- 12 files changed, 187 insertions(+), 101 deletions(-) diff --git a/site_ansto/instrument/config/environment/magneticField/sct_bruker_BEC1.tcl b/site_ansto/instrument/config/environment/magneticField/sct_bruker_BEC1.tcl index fa1dc6fd..cebab88c 100644 --- a/site_ansto/instrument/config/environment/magneticField/sct_bruker_BEC1.tcl +++ b/site_ansto/instrument/config/environment/magneticField/sct_bruker_BEC1.tcl @@ -1366,88 +1366,5 @@ proc add_bruker_bec1 {name IP port {_tol 0.1} {CID 1} {CTYPE B} } { handle_exception $catch_status $message "In subroutine add_bruker_bec1()." } -namespace eval ::scobj::bruker_bec1 { -set debug_threshold 5 -} -proc ::scobj::bruker_bec1::sics_log {debug_level debug_string} { - set catch_status [ catch { - set debug_threshold ${::scobj::bruker_bec1::debug_threshold} - if {${debug_level} >= ${debug_threshold}} { - sicslog "::scobj::bruker_bec1::${debug_string}" - } - } catch_message ] -} - clientput "file evaluation of sct_bruker_bec1.tcl" -::scobj::bruker_bec1::sics_log 9 "file evaluation of sct_bruker_bec1.tcl" - -proc ::scobj::bruker_bec1::read_config {} { - set catch_status [ catch { - set ns "::scobj::bruker_bec1" - dict for {k v} $::config_dict { - if { [dict exists $v "implementation"] } { - if { !([dict exists $v "name"] && [dict exists $v "enabled"]) } { - continue - } - set name [dict get $v name] - set enabled [string tolower [dict get $v "enabled"]] - set implementation [dict get $v "implementation"] - if { !([dict exists $::config_dict $implementation]) } { - continue - } - set v [dict get $::config_dict $implementation] - if { !([dict exists $v "driver"]) } { - continue - } - if { [string equal -nocase [dict get $v "driver"] "bruker_bec1"] } { - if { [string equal -nocase $enabled "true" ] || [string equal -nocase $enabled "always"] } { - if { ![string equal -nocase [SplitReply [environment_simulation]] "false"] } { - set asyncqueue "null" - ${ns}::sics_log 9 "[environment_simulation] => using null asyncqueue" - } elseif { [dict exists $v "asyncqueue"] } { - set asyncqueue [dict get $v "asyncqueue"] - } else { - if { [dict exists $v "asyncprotocol"] } { - set asyncprotocol [dict get $v "asyncprotocol"] - } else { - set asyncprotocol ${name}_protocol - MakeAsyncProtocol ${asyncprotocol} - if { [dict exists $v "terminator"] } { - ${asyncprotocol} sendterminator "[dict get $v "terminator"]" - ${asyncprotocol} replyterminator "[dict get $v "terminator"]" - } - } - set asyncqueue ${name}_queue - set IP [dict get $v ip] - set PORT [dict get $v port] - MakeAsyncQueue ${asyncqueue} ${asyncprotocol} ${IP} ${PORT} - if { [dict exists $v "timeout"] } { - ${asyncqueue} timeout "[dict get $v "timeout"]" - } - } - set arg_list [list] - foreach arg {tol id type} { - if {[dict exists $v $arg]} { - lappend arg_list "[dict get $v $arg]" - } else { - ${ns}::sics_log 9 "Missing configuration value $arg" - error "Missing configuration value $arg" - } - } - add_bruker_bec1 ${name} "aqadapter" ${asyncqueue} {*}$arg_list - } - } - } - } - } catch_message ] - handle_exception ${catch_status} ${catch_message} -} - -if { [info exists ::config_dict] } { - ::scobj::bruker_bec1::read_config -} else { - ::scobj::bruker_bec1::sics_log 5 "No config dict" -} - - namespace import ::scobj::bruker_BEC1::* diff --git a/site_ansto/instrument/config/environment/magneticField/sct_tsi_smc.tcl b/site_ansto/instrument/config/environment/magneticField/sct_tsi_smc.tcl index cc91ca94..2334e95f 100644 --- a/site_ansto/instrument/config/environment/magneticField/sct_tsi_smc.tcl +++ b/site_ansto/instrument/config/environment/magneticField/sct_tsi_smc.tcl @@ -289,7 +289,7 @@ proc ::scobj::tsi_smc::mkDriver { sct_controller name device_class simulation_fl hsetprop ${scobj_hpath}/setpoint mutable true hsetprop ${scobj_hpath}/setpoint nxsave true hsetprop ${scobj_hpath}/setpoint lowerlimit 0 - hsetprop ${scobj_hpath}/setpoint upperlimit 500.0 + hsetprop ${scobj_hpath}/setpoint upperlimit 15000.0 hsetprop ${scobj_hpath}/setpoint tolerance 10 hsetprop ${scobj_hpath}/setpoint permlink data_set "B[format "%02d" ${id}]SP01" hsetprop ${scobj_hpath}/setpoint @description "B[format "%02d" ${id}]SP01" @@ -429,7 +429,7 @@ proc ::scobj::tsi_smc::mkDriver { sct_controller name device_class simulation_fl hsetprop ${scobj_hpath}/b/Lower mutable true hsetprop ${scobj_hpath}/b/Lower nxsave true hsetprop ${scobj_hpath}/b/Lower lowerlimit 0 - hsetprop ${scobj_hpath}/b/Lower upperlimit 2 + hsetprop ${scobj_hpath}/b/Lower upperlimit 60 hsetprop ${scobj_hpath}/b/Lower oldval 0.0 hsetprop ${scobj_hpath}/b/Lower klass "parameter" hsetprop ${scobj_hpath}/b/Lower sdsinfo "::nexus::scobj::sdsinfo" diff --git a/site_ansto/instrument/config/environment/sct_hiden_xcs.tcl b/site_ansto/instrument/config/environment/sct_hiden_xcs.tcl index 0801bad6..a56a10da 100644 --- a/site_ansto/instrument/config/environment/sct_hiden_xcs.tcl +++ b/site_ansto/instrument/config/environment/sct_hiden_xcs.tcl @@ -176,6 +176,35 @@ proc ::scobj::hiden_xcs::fetch_flow {tc_root nextState cmd_str} { handle_exception ${catch_status} ${catch_message} } +# function to request the read of a parameter on a device +proc ::scobj::hiden_xcs::getTarget {tc_root nextState cmd_str} { + set catch_status [ catch { + debug_log ${tc_root} 1 "getTarget tc_root=${tc_root} sct=[sct] cmd=${cmd_str}" + if { [hpropexists [sct] geterror] } { + hdelprop [sct] geterror + } + set cmd "${cmd_str}" +# getTarget hook code starts + if { [hpropexists [sct] target] } { + sct result [sct target] + } else { + sct result [hval [sct]] + } + set cmd "@@NOSEND@@" +# getTarget hook code ends + if { [hpropexists [sct] geterror] } { + debug_log ${tc_root} 9 "[sct] error: [sct geterror]" + error "[sct geterror]" + } + debug_log ${tc_root} 1 "getTarget sct send ${cmd}" + if {![string equal -nocase -length 10 ${cmd} "@@NOSEND@@"]} { + sct send "${cmd}" + } + return ${nextState} + } catch_message ] + handle_exception ${catch_status} ${catch_message} +} + # function to request the read of a parameter on a device proc ::scobj::hiden_xcs::getValue {tc_root nextState cmd_str} { set catch_status [ catch { @@ -254,16 +283,20 @@ proc ::scobj::hiden_xcs::pid_flow {tc_root sp pv} { set p_value [expr {[sct pid_pvalue] * [sct pid_error]}] set d_value [expr {[sct pid_dvalue] * (${pv} - [sct oldval])}] sct pid_deriv [sct pid_error] - sct pid_integ [expr {[sct pid_integ] + [sct pid_error]}] + sct pid_integ [expr {[sct pid_integ] + [sct pid_error] * [sct pid_ivalue]}] if { [sct pid_integ] > [sct pid_imax] } { sct pid_integ [sct pid_imax] } if { [sct pid_integ] < -[sct pid_imax] } { sct pid_integ -[sct pid_imax] } - set i_value [expr {[sct pid_ivalue] * [sct pid_integ]}] + set i_value [sct pid_integ] set pid [expr {${p_value} + ${i_value} + ${d_value}}] # pid_flow hook code starts + if { ![hval ${tc_root}/auto] } { + set pid 0.0 + sct pid_integ 0.0 + } foreach node [list ${tc_root}/analog/sp1 ${tc_root}/analog/sp2] { if { !([hpropexists ${node} bias_flow] && [hgetpropval ${node} bias_flow] == ${pid}) } { hsetprop ${node} bias_flow ${pid} @@ -289,16 +322,20 @@ proc ::scobj::hiden_xcs::pid_humidity {tc_root sp pv} { set p_value [expr {[sct pid_pvalue] * [sct pid_error]}] set d_value [expr {[sct pid_dvalue] * (${pv} - [sct oldval])}] sct pid_deriv [sct pid_error] - sct pid_integ [expr {[sct pid_integ] + [sct pid_error]}] + sct pid_integ [expr {[sct pid_integ] + [sct pid_error] * [sct pid_ivalue]}] if { [sct pid_integ] > [sct pid_imax] } { sct pid_integ [sct pid_imax] } if { [sct pid_integ] < -[sct pid_imax] } { sct pid_integ -[sct pid_imax] } - set i_value [expr {[sct pid_ivalue] * [sct pid_integ]}] + set i_value [sct pid_integ] set pid [expr {${p_value} + ${i_value} + ${d_value}}] # pid_humidity hook code starts + if { ![hval ${tc_root}/auto] } { + set pid 0.0 + sct pid_integ 0.0 + } set sign 1 foreach node [list ${tc_root}/analog/sp1 ${tc_root}/analog/sp2] { set sign [expr -${sign}] @@ -757,6 +794,19 @@ proc ::scobj::hiden_xcs::mkDriver { sct_controller name device_class simulation_ set scobj_hpath /sics/${name} + hfactory ${scobj_hpath}/auto plain user int + hsetprop ${scobj_hpath}/auto control true + hsetprop ${scobj_hpath}/auto data true + hsetprop ${scobj_hpath}/auto mutable true + hsetprop ${scobj_hpath}/auto nxsave true + hsetprop ${scobj_hpath}/auto values 0,1 + hsetprop ${scobj_hpath}/auto oldval 0 + hset ${scobj_hpath}/auto 0 + hsetprop ${scobj_hpath}/auto klass "environment" + hsetprop ${scobj_hpath}/auto sdsinfo "::nexus::scobj::sdsinfo" + hsetprop ${scobj_hpath}/auto type "part" + hsetprop ${scobj_hpath}/auto nxalias "${name}_auto" + hfactory ${scobj_hpath}/enabled plain user int hsetprop ${scobj_hpath}/enabled read ${ns}::getValue ${scobj_hpath} read_digital {?DOUT,2} hsetprop ${scobj_hpath}/enabled read_digital ${ns}::read_digital ${scobj_hpath} @@ -1021,15 +1071,17 @@ proc ::scobj::hiden_xcs::mkDriver { sct_controller name device_class simulation_ hsetprop ${scobj_hpath}/flow/sensor pid_deriv "0" hsetprop ${scobj_hpath}/flow/sensor pid_dvalue "0.0" hsetprop ${scobj_hpath}/flow/sensor pid_error "0" - hsetprop ${scobj_hpath}/flow/sensor pid_imax "30" + hsetprop ${scobj_hpath}/flow/sensor pid_imax "50" hsetprop ${scobj_hpath}/flow/sensor pid_integ "0" hsetprop ${scobj_hpath}/flow/sensor pid_ivalue "0.1" - hsetprop ${scobj_hpath}/flow/sensor pid_pvalue "0.2" + hsetprop ${scobj_hpath}/flow/sensor pid_pvalue "0.1" hsetprop ${scobj_hpath}/flow/sensor sdsinfo "::nexus::scobj::sdsinfo" hsetprop ${scobj_hpath}/flow/sensor type "part" hsetprop ${scobj_hpath}/flow/sensor nxalias "${name}_flow_sensor" hfactory ${scobj_hpath}/flow/setpoint plain user float + hsetprop ${scobj_hpath}/flow/setpoint read ${ns}::getTarget ${scobj_hpath} rdValue {@} + hsetprop ${scobj_hpath}/flow/setpoint rdValue ${ns}::rdValue ${scobj_hpath} hsetprop ${scobj_hpath}/flow/setpoint write ${ns}::write_flow ${scobj_hpath} noResponse {} hsetprop ${scobj_hpath}/flow/setpoint noResponse ${ns}::noResponse ${scobj_hpath} hsetprop ${scobj_hpath}/flow/setpoint check ${ns}::checkrange ${scobj_hpath} @@ -1056,6 +1108,7 @@ proc ::scobj::hiden_xcs::mkDriver { sct_controller name device_class simulation_ if {[string equal -nocase "${simulation_flag}" "false"]} { ${sct_controller} poll ${scobj_hpath}/flow/sensor 1 + ${sct_controller} poll ${scobj_hpath}/flow/setpoint 1 ${sct_controller} write ${scobj_hpath}/flow/setpoint } else { ::scobj::hiden_xcs::sics_log 9 "simulation_flag=${simulation_flag} => No poll/write for hiden_xcs" @@ -1081,15 +1134,17 @@ proc ::scobj::hiden_xcs::mkDriver { sct_controller name device_class simulation_ hsetprop ${scobj_hpath}/humidity/sensor pid_deriv "0" hsetprop ${scobj_hpath}/humidity/sensor pid_dvalue "0.0" hsetprop ${scobj_hpath}/humidity/sensor pid_error "0" - hsetprop ${scobj_hpath}/humidity/sensor pid_imax "30" + hsetprop ${scobj_hpath}/humidity/sensor pid_imax "20" hsetprop ${scobj_hpath}/humidity/sensor pid_integ "0" hsetprop ${scobj_hpath}/humidity/sensor pid_ivalue "0.1" - hsetprop ${scobj_hpath}/humidity/sensor pid_pvalue "0.2" + hsetprop ${scobj_hpath}/humidity/sensor pid_pvalue "1.0" hsetprop ${scobj_hpath}/humidity/sensor sdsinfo "::nexus::scobj::sdsinfo" hsetprop ${scobj_hpath}/humidity/sensor type "part" hsetprop ${scobj_hpath}/humidity/sensor nxalias "${name}_humidity_sensor" hfactory ${scobj_hpath}/humidity/setpoint plain user float + hsetprop ${scobj_hpath}/humidity/setpoint read ${ns}::getTarget ${scobj_hpath} rdValue {@} + hsetprop ${scobj_hpath}/humidity/setpoint rdValue ${ns}::rdValue ${scobj_hpath} hsetprop ${scobj_hpath}/humidity/setpoint write ${ns}::write_humidity ${scobj_hpath} noResponse {} hsetprop ${scobj_hpath}/humidity/setpoint noResponse ${ns}::noResponse ${scobj_hpath} hsetprop ${scobj_hpath}/humidity/setpoint check ${ns}::chkrange_function ${scobj_hpath} @@ -1102,8 +1157,8 @@ proc ::scobj::hiden_xcs::mkDriver { sct_controller name device_class simulation_ hsetprop ${scobj_hpath}/humidity/setpoint data true hsetprop ${scobj_hpath}/humidity/setpoint mutable true hsetprop ${scobj_hpath}/humidity/setpoint nxsave true - hsetprop ${scobj_hpath}/humidity/setpoint lowerlimit 10 - hsetprop ${scobj_hpath}/humidity/setpoint upperlimit 90 + hsetprop ${scobj_hpath}/humidity/setpoint lowerlimit 0 + hsetprop ${scobj_hpath}/humidity/setpoint upperlimit 100 hsetprop ${scobj_hpath}/humidity/setpoint tolerance 1 hsetprop ${scobj_hpath}/humidity/setpoint permlink data_set "G[format "%02d" ${id}]SP02" hsetprop ${scobj_hpath}/humidity/setpoint @description "G[format "%02d" ${id}]SP02" @@ -1116,6 +1171,7 @@ proc ::scobj::hiden_xcs::mkDriver { sct_controller name device_class simulation_ if {[string equal -nocase "${simulation_flag}" "false"]} { ${sct_controller} poll ${scobj_hpath}/humidity/sensor 1 + ${sct_controller} poll ${scobj_hpath}/humidity/setpoint 1 ${sct_controller} write ${scobj_hpath}/humidity/setpoint } else { ::scobj::hiden_xcs::sics_log 9 "simulation_flag=${simulation_flag} => No poll/write for hiden_xcs" diff --git a/site_ansto/instrument/config/environment/temperature/sct_julabo_lh45.tcl b/site_ansto/instrument/config/environment/temperature/sct_julabo_lh45.tcl index 9dfb08ca..5c21a3e6 100644 --- a/site_ansto/instrument/config/environment/temperature/sct_julabo_lh45.tcl +++ b/site_ansto/instrument/config/environment/temperature/sct_julabo_lh45.tcl @@ -439,3 +439,88 @@ proc add_julabo_lh45 { name IP port {sensor "bath"} {_tol 5.0} {CID 1} {CTYPE T} } makesctemon $name /sics/$name/emon/monmode /sics/$name/emon/isintol /sics/$name/emon/errhandler } + +namespace eval ::scobj::julabo_lh45 { +set debug_threshold 5 +} +proc ::scobj::julabo_lh45::sics_log {debug_level debug_string} { + set catch_status [ catch { + set debug_threshold ${::scobj::julabo_lh45::debug_threshold} + if {${debug_level} >= ${debug_threshold}} { + sicslog "::scobj::julabo_lh45::${debug_string}" + } + } catch_message ] +} + +clientput "file evaluation of sct_julabo_lh45.tcl" +::scobj::julabo_lh45::sics_log 9 "file evaluation of sct_julabo_lh45.tcl" + +proc ::scobj::julabo_lh45::read_config {} { + set catch_status [ catch { + set ns "::scobj::julabo_lh45" + dict for {k v} $::config_dict { + if { [dict exists $v "implementation"] } { + if { !([dict exists $v "name"] && [dict exists $v "enabled"]) } { + continue + } + set name [dict get $v name] + set enabled [string tolower [dict get $v "enabled"]] + set implementation [dict get $v "implementation"] + if { !([dict exists $::config_dict $implementation]) } { + continue + } + set v [dict get $::config_dict $implementation] + if { !([dict exists $v "driver"]) } { + continue + } + if { [string equal -nocase [dict get $v "driver"] "julabo_lh45"] } { + if { [string equal -nocase $enabled "true" ] || [string equal -nocase $enabled "always"] } { + if { ![string equal -nocase [SplitReply [environment_simulation]] "false"] } { + set asyncqueue "null" + ${ns}::sics_log 9 "[environment_simulation] => using null asyncqueue" + } elseif { [dict exists $v "asyncqueue"] } { + set asyncqueue [dict get $v "asyncqueue"] + } else { + if { [dict exists $v "asyncprotocol"] } { + set asyncprotocol [dict get $v "asyncprotocol"] + } else { + set asyncprotocol ${name}_protocol + MakeAsyncProtocol ${asyncprotocol} + if { [dict exists $v "terminator"] } { + ${asyncprotocol} sendterminator "[dict get $v "terminator"]" + ${asyncprotocol} replyterminator "[dict get $v "terminator"]" + } + } + set asyncqueue ${name}_queue + set IP [dict get $v ip] + set PORT [dict get $v port] + MakeAsyncQueue ${asyncqueue} ${asyncprotocol} ${IP} ${PORT} + if { [dict exists $v "timeout"] } { + ${asyncqueue} timeout "[dict get $v "timeout"]" + } + } + set arg_list [list] + foreach arg {ctrl_sensor tol id type} { + if {[dict exists $v $arg]} { + lappend arg_list "[dict get $v $arg]" + } else { + ${ns}::sics_log 9 "Missing configuration value $arg" + error "Missing configuration value $arg" + } + } + add_julabo_lh45 ${name} "aqadapter" ${asyncqueue} {*}$arg_list + } + } + } + } + } catch_message ] + handle_exception ${catch_status} ${catch_message} +} + +if { [info exists ::config_dict] } { + ::scobj::julabo_lh45::read_config +} else { + ::scobj::julabo_lh45::sics_log 5 "No config dict" +} + + diff --git a/site_ansto/instrument/config/environment/temperature/sct_julabo_lh45_gen.tcl b/site_ansto/instrument/config/environment/temperature/sct_julabo_lh45_gen.tcl index aa790cec..833f8028 100644 --- a/site_ansto/instrument/config/environment/temperature/sct_julabo_lh45_gen.tcl +++ b/site_ansto/instrument/config/environment/temperature/sct_julabo_lh45_gen.tcl @@ -452,7 +452,7 @@ proc ::scobj::julabo_lh45_gen::mkDriver { sct_controller name device_class simul hsetprop ${scobj_hpath}/setpoint data true hsetprop ${scobj_hpath}/setpoint mutable true hsetprop ${scobj_hpath}/setpoint nxsave true - hsetprop ${scobj_hpath}/setpoint lowerlimit 10 + hsetprop ${scobj_hpath}/setpoint lowerlimit -20 hsetprop ${scobj_hpath}/setpoint upperlimit 90 hsetprop ${scobj_hpath}/setpoint tolerance ${tol} hsetprop ${scobj_hpath}/setpoint permlink data_set "T[format "%02d" ${id}]SP01" diff --git a/site_ansto/instrument/config/environment/temperature/sct_lakeshore_370.tcl b/site_ansto/instrument/config/environment/temperature/sct_lakeshore_370.tcl index 74233b4a..6fe63945 100644 --- a/site_ansto/instrument/config/environment/temperature/sct_lakeshore_370.tcl +++ b/site_ansto/instrument/config/environment/temperature/sct_lakeshore_370.tcl @@ -50,7 +50,7 @@ namespace eval ::scobj::[set vendor]_[set device] { proc debug_log {debug_level arg_string} { # write a timestamped string message to a log file for debugging - set debug_threshold 0 + set debug_threshold 5 if {$debug_level >= $debug_threshold} { set fd [open "[set [namespace current]::log_file]" "a"] set line "[clock format [clock seconds] -format "%T"] $arg_string" diff --git a/site_ansto/instrument/config/environment/temperature/sct_oxford_mercury.tcl b/site_ansto/instrument/config/environment/temperature/sct_oxford_mercury.tcl index 22ebad6b..67266192 100644 --- a/site_ansto/instrument/config/environment/temperature/sct_oxford_mercury.tcl +++ b/site_ansto/instrument/config/environment/temperature/sct_oxford_mercury.tcl @@ -58,7 +58,7 @@ namespace eval ::scobj::[set vendor]_[set device] { proc debug_log {debug_level arg_string} { # write a timestamped string message to a log file for debugging - set debug_threshold 0 + set debug_threshold 5 if {$debug_level >= $debug_threshold} { set fd [open "[set [namespace current]::log_file]" "a"] set line "[clock format [clock seconds] -format "%T"] $arg_string" diff --git a/site_ansto/instrument/config/hmm/hmm_configuration_common_1.tcl b/site_ansto/instrument/config/hmm/hmm_configuration_common_1.tcl index cbe97274..807fd39b 100644 --- a/site_ansto/instrument/config/hmm/hmm_configuration_common_1.tcl +++ b/site_ansto/instrument/config/hmm/hmm_configuration_common_1.tcl @@ -1471,6 +1471,26 @@ sicslist setatt ::histogram_memory::ratemap_xy_total klass detector sicslist setatt ::histogram_memory::ratemap_xy_total long_name total_maprate sicslist setatt ::histogram_memory::ratemap_xy_total mutable true +# Returns 0 If all trips acknowledged, -n if n trips unacknowledged, +n if too many acks? +::utility::macro::getset float ::histogram_memory::reset_trip {args} { + set num_trips [ SplitReply [hmm configure detector_protect_num_trip] ] + set num_acks [ SplitReply [hmm configure detector_protect_num_trip_ack] ] + set trip_cnt_diff [expr {$num_acks - $num_trips}] + if {$args == ""} { + return "reset_trip = $trip_cnt_diff" + } else { + if {$trip_cnt_diff != 0} { + hmm configure fat_detector_protect_num_trip_ack $num_trips + hmm astop + wait 2 + hmm init + } + } +} +sicslist setatt ::histogram_memory::reset_trip klass detector +sicslist setatt ::histogram_memory::reset_trip long_name reset_trip +sicslist setatt ::histogram_memory::reset_trip data false + ## # @brief Update the beam monitors when the histmem has finished counting. proc ::histogram_memory::countend_event {} { diff --git a/site_ansto/instrument/sans/config/environment/sct_antonparr_MCR500.tcl b/site_ansto/instrument/sans/config/environment/sct_antonparr_MCR500.tcl index bd93bd8c..3dae5815 100644 --- a/site_ansto/instrument/sans/config/environment/sct_antonparr_MCR500.tcl +++ b/site_ansto/instrument/sans/config/environment/sct_antonparr_MCR500.tcl @@ -33,8 +33,12 @@ proc ::scobj::antonparr_MCR500::mkDriver { speed_name torque_name tol settle } { set catch_status [ catch { # mkDriver hook code starts + if [::utility::obj_exists $speed_name] { add_rheo $speed_name $tol $settle + } + if [::utility::obj_exists $torque_name] { add_rheo $torque_name $tol $settle + } # mkDriver hook code ends } catch_message ] handle_exception ${catch_status} ${catch_message} diff --git a/site_ansto/instrument/sans/config/environment/sct_rheometer.tcl b/site_ansto/instrument/sans/config/environment/sct_rheometer.tcl index 7c2f49e7..463214f7 100644 --- a/site_ansto/instrument/sans/config/environment/sct_rheometer.tcl +++ b/site_ansto/instrument/sans/config/environment/sct_rheometer.tcl @@ -100,4 +100,5 @@ proc add_rheo {rhControl tol settle} { hfactory /sics/$rhControl/settletime plain user float hset /sics/$rhControl/settletime $settle hsetprop /sics/$rhControl timecheck 0 + hsetprop /sics/$rhControl callBack "rhCallBack /sics/$rhControl" } diff --git a/site_ansto/instrument/sans/config/motors/motor_configuration.tcl b/site_ansto/instrument/sans/config/motors/motor_configuration.tcl index 846db865..e765bdff 100644 --- a/site_ansto/instrument/sans/config/motors/motor_configuration.tcl +++ b/site_ansto/instrument/sans/config/motors/motor_configuration.tcl @@ -718,7 +718,7 @@ Motor apx $motor_driver_type [params \ axis E\ units mm\ hardlowerlim -260\ - hardupperlim 5\ + hardupperlim 45\ maxSpeed 5\ maxAccel 5\ maxDecel 5\ @@ -730,7 +730,7 @@ apx part collimator apx long_name apx apx home 0 apx softlowerlim -255 -apx softupperlim 5 +apx softupperlim 45 apx speed 5 # Sample aperture y diff --git a/site_ansto/instrument/sans/quokka_configuration.tcl b/site_ansto/instrument/sans/quokka_configuration.tcl index d558d904..8728a0f8 100644 --- a/site_ansto/instrument/sans/quokka_configuration.tcl +++ b/site_ansto/instrument/sans/quokka_configuration.tcl @@ -61,12 +61,15 @@ fileeval $cfPath(hmm)/detector.tcl fileeval $cfPath(scan)/scan.tcl fileeval $cfPath(commands)/commands.tcl fileeval $cfPath(anticollider)/anticollider.tcl -fileeval $cfPath(environment)/temperature/sct_julabo_lh45.tcl +fileeval $cfPath(environment)/temperature/sct_julabo_lh45_gen.tcl fileeval $cfPath(environment)/temperature/sct_qlink.tcl fileeval $cfPath(environment)/magneticField/sct_tsi_smc.tcl fileeval $cfPath(environment)/temperature/sct_oxford_itc.tcl fileeval $cfPath(environment)/magneticField/oxford_labview.tcl +fileeval $cfPath(environment)/magneticField/sct_oxford12tlv.tcl fileeval $cfPath(environment)/magneticField/sct_bruker_BEC1.tcl +fileeval $cfPath(environment)/magneticField/sct_bruker.tcl +fileeval $cfPath(beamline)/sct_he3_polanal.tcl fileeval $cfPath(environment)/environment.tcl fileeval $cfPath(environment)/sct_rheometer.tcl fileeval $cfPath(environment)/sct_antonparr_MCR500.tcl