From cf775888614cfb18381a2f2896899212e8d3a0a2 Mon Sep 17 00:00:00 2001 From: Douglas Clowes Date: Fri, 19 Sep 2014 15:14:47 +1000 Subject: [PATCH] Add some more checking and fix drive end bug --- .../config/environment/knauer_pump.sct | 56 ++++++++++++++++--- 1 file changed, 48 insertions(+), 8 deletions(-) diff --git a/site_ansto/instrument/config/environment/knauer_pump.sct b/site_ansto/instrument/config/environment/knauer_pump.sct index a8c3bd43..7d78e18a 100644 --- a/site_ansto/instrument/config/environment/knauer_pump.sct +++ b/site_ansto/instrument/config/environment/knauer_pump.sct @@ -11,10 +11,15 @@ driver knauer_pump = { group dummy = { type = text; readable = 1; data = false; control = false; nxsave = false; var status = { read_command = 'STATUS?'; read_function = read_status; } - var glp = { read_command = 'GLP?'; read_function = read_glp; } + var glp = { read_command = 'GLP?'; read_function = read_glp; property real_data = ' '; } } group pump = { + var remote = { + type = int; + readable = 1; read_command = 'REMOTE?'; read_function = remote_read; + writeable = 1; write_function = remote_write; + } var state = { type = text; readable = 1; @@ -157,7 +162,11 @@ driver knauer_pump = { set index ${cmd_str} set data [hgetpropval ${tc_root}/dummy/glp real_data] set dlist [split ${data} ","] - sct result [lindex ${dlist} ${index}] + if { [llength ${dlist}] > ${index} } { + sct result [lindex ${dlist} ${index}] + } else { + sct result "" + } set cmd "@@NOSEND@@" %%} @@ -165,14 +174,21 @@ driver knauer_pump = { set index ${cmd_str} set data [hgetpropval ${tc_root}/dummy/status real_data] set dlist [split ${data} ","] - sct result [lindex ${dlist} ${index}] + if { [llength ${dlist}] > ${index} } { + sct result [lindex ${dlist} ${index}] + } else { + sct result "" + } set cmd "@@NOSEND@@" %%} code read_glp = {%% - set dlist [split [lindex [split ${data} ":"] 1] ","] - sct real_data "[join [lrange ${dlist} 0 end] ,]" - set data "Hidden in real_data property" + if { [string equal -nocase -length 6 ${data} "ERROR:"] } { + } else { + set dlist [split [lindex [split ${data} ":"] 1] ","] + sct real_data "[join [lrange ${dlist} 0 end] ,]" + set data "Hidden in real_data property" + } %%} code read_status = {%% set dlist [split [lindex [split ${data} ":"] 1] ","] @@ -271,6 +287,22 @@ driver knauer_pump = { } %%} + code remote_read = {%% + if { [string equal -length 7 ${data} "REMOTE:"] } { + set data [lindex [split ${data} :] 1] + } else { + sct geterror "bad response" + error "[sct geterror]" + } + %%} + + code remote_write = {%% + if { ${par} == 0 } { + set cmd "LOCAL" + } else { + set cmd "REMOTE" + } + %%} code volume_fetch = {%% set data [hgetpropval ${tc_root}/dummy/glp real_data] set dlist [split ${data} ","] @@ -284,10 +316,10 @@ driver knauer_pump = { sct raw_volume ${pump_volume} if { [hpropexists [sct] base_volume] } { set pump_volume [expr {${pump_volume} - [sct base_volume]}] - } else { + } elseif { [hpropexists [sct] raw_volume] } { sct base_volume [sct raw_volume] } - sct result ${pump_volume} + sct result [format "%.2f" ${pump_volume}] set cmd "@@NOSEND@@" %%} code volume_write = {%% @@ -297,6 +329,13 @@ driver knauer_pump = { set ratio_tgt [join [split [hval ${tc_root}/pump/ratio_sp] /] ,] set cmd "RAMP:0,${flow_tgt},${ratio_tgt},0,0,0,0,0,0,0,0,3" sct pumping 1 + set data ${par} + if { ${data} != [sct oldval] } { + debug_log ${tc_root} 1 "[sct] changed to new:${data}, from old:[sct oldval]" + sct oldval ${data} + sct update ${data} + sct utime readtime + } %%} code volume_checkpumping = {%% @@ -313,6 +352,7 @@ driver knauer_pump = { set ratio_tgt [join [split [hval ${tc_root}/pump/ratio_sp] /] ,] set cmd "RAMP:0,${flow_tgt},${ratio_tgt},0,0,0,0,0,0,0,0,2" set nextState noResponse + sct driving 0 sct pumping 0 } }