Add some more checking and fix drive end bug
This commit is contained in:
@ -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
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user