diff --git a/site_ansto/instrument/config/environment/sct_keithley_2700.tcl b/site_ansto/instrument/config/environment/sct_keithley_2700.tcl index b6adf8af..2e0187e1 100644 --- a/site_ansto/instrument/config/environment/sct_keithley_2700.tcl +++ b/site_ansto/instrument/config/environment/sct_keithley_2700.tcl @@ -24,17 +24,27 @@ namespace eval ::scobj::k2700 { debug_log "setParm root=$tc_root sct=[sct] cmd=$cmd target=[sct target]" set par "[sct target]" sct send "$cmd $par" - debug_log "setParm send: $cmd $par" - return idle + debug_log "setParm send: $cmd $par;*IDN?" + if {$par != [sct oldval]} { + sct oldval $par + sct update $par + sct utime readtime + debug_log "setParm new data for $tc_root [sct] result=$par" + } return $nextState } proc setText {tc_root nextState cmd} { debug_log "setText root=$tc_root sct=[sct] cmd=$cmd target=[sct target]" set par "[sct target]" - sct send "$cmd \"$par\"" + sct send "$cmd \"$par\";*IDN?" debug_log "setText send: $cmd \"$par\"" - return idle + if {$par != [sct oldval]} { + sct oldval $par + sct update $par + sct utime readtime + debug_log "setText new data for $tc_root [sct] result=$par" + } return $nextState } @@ -42,9 +52,14 @@ namespace eval ::scobj::k2700 { proc setValue {tc_root nextState cmd} { debug_log "setValue root=$tc_root sct=[sct] cmd=$cmd target=[sct target]" set par "[sct target]" - sct send "$cmd $par" + sct send "$cmd $par;*IDN?" debug_log "setValue send: $cmd $par" - return idle + if {$par != [sct oldval]} { + sct oldval $par + sct update $par + sct utime readtime + debug_log "setValue new data for $tc_root [sct] result=$par" + } return $nextState } @@ -143,21 +158,19 @@ debug_log "setPoint new data for $tc_root [sct] result=$par" hdelprop [sct] geterror } if {$my_state == "STATE_INIT"} { - set my_cmd "SYSTEM:PRESET" + set my_cmd "SYSTEM:PRESET;*IDN?" hsetprop $tc_root/device_state my_state "STATE_IDN" - #set nextState read - set nextState idle + set nextState read } elseif {$my_state == "STATE_IDN"} { set my_cmd "*IDN?" } elseif {$my_state == "STATE_CHNL_SET"} { - set my_cmd "SENS:FUNC \"VOLTS:DC\"" + set my_cmd "SENS:FUNC \"VOLTS:DC\";*IDN?" set mmf [hval $tc_root/Control/MMF] set mbf [hval $tc_root/Control/MBF] set mun [hval $tc_root/Control/MUN] set my_cmd "CALC:FORM MXB;CALC:KMAT:MMF 1.0;CALC:KMAT:MBF 0.0;CALC:KMAT:MUN \"X\";CALC:STAT ON" hsetprop $tc_root/device_state my_state "STATE_CHNL_GET" - #set nextState read - set nextState idle + set nextState read } elseif {$my_state == "STATE_CHNL_GET"} { set my_cmd "CALC:STAT?" } elseif {$my_state == "STATE_FIELD"} { @@ -381,11 +394,11 @@ debug_log "Registering node $nodeName for write callback" set scobj_hpath /sics/$tempobj # Group Node R W D type perm rdCmd rdFunc wrCmd wrFunc allowed set deviceCommand {\ - Control Math 0 1 0 text user {} {} {CALC:FORM} {setParm} {MXB}\ - Control MMF 0 1 0 float user {} {} {CALC:KMAT:MMF} {setValue} {}\ - Control MBF 0 1 0 float user {} {} {CALC:KMAT:MBF} {setValue} {}\ - Control MUN 0 1 0 text user {} {} {CALC:KMAT:MUN} {setText} {}\ - Control Stat 0 1 0 text user {} {} {CALC:STAT} {setParm} {ON,OFF}\ + Control Math 0 1 0 text user {} {} {CALC1:FORM} {setParm} {MXB}\ + Control MMF 0 1 0 float user {} {} {CALC1:KMAT:MMF} {setValue} {}\ + Control MBF 0 1 0 float user {} {} {CALC1:KMAT:MBF} {setValue} {}\ + Control MUN 0 1 0 text user {} {} {CALC1:KMAT:MUN} {setText} {}\ + Control Stat 0 1 0 text user {} {} {CALC1:STAT} {setParm} {ON,OFF}\ Display Value 1 0 0 text internal {FETCH?} {rdValue} {} {} {}\ {} Setpoint 0 0 0 text internal {} {} {} {} {}\ Display X 0 0 0 text internal {} {} {} {} {}\ @@ -419,9 +432,9 @@ debug_log "Registering node $nodeName for write callback" hfactory $scobj_hpath/device_lasterror plain user text hset $scobj_hpath/device_lasterror "" -# if {[SplitReply [environment_simulation]]=="false"} { -# $sct_controller poll $scobj_hpath/device_state 1 halt read -# } + if {[SplitReply [environment_simulation]]=="false"} { + $sct_controller poll $scobj_hpath/device_state 1 halt read + } hsetprop $scobj_hpath type part foreach snsr {Display} {