Add some more checking and fix drive end bug
This commit is contained in:
@ -11,10 +11,15 @@ driver knauer_pump = {
|
|||||||
group dummy = {
|
group dummy = {
|
||||||
type = text; readable = 1; data = false; control = false; nxsave = false;
|
type = text; readable = 1; data = false; control = false; nxsave = false;
|
||||||
var status = { read_command = 'STATUS?'; read_function = read_status; }
|
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 = {
|
group pump = {
|
||||||
|
var remote = {
|
||||||
|
type = int;
|
||||||
|
readable = 1; read_command = 'REMOTE?'; read_function = remote_read;
|
||||||
|
writeable = 1; write_function = remote_write;
|
||||||
|
}
|
||||||
var state = {
|
var state = {
|
||||||
type = text;
|
type = text;
|
||||||
readable = 1;
|
readable = 1;
|
||||||
@ -157,7 +162,11 @@ driver knauer_pump = {
|
|||||||
set index ${cmd_str}
|
set index ${cmd_str}
|
||||||
set data [hgetpropval ${tc_root}/dummy/glp real_data]
|
set data [hgetpropval ${tc_root}/dummy/glp real_data]
|
||||||
set dlist [split ${data} ","]
|
set dlist [split ${data} ","]
|
||||||
|
if { [llength ${dlist}] > ${index} } {
|
||||||
sct result [lindex ${dlist} ${index}]
|
sct result [lindex ${dlist} ${index}]
|
||||||
|
} else {
|
||||||
|
sct result ""
|
||||||
|
}
|
||||||
set cmd "@@NOSEND@@"
|
set cmd "@@NOSEND@@"
|
||||||
%%}
|
%%}
|
||||||
|
|
||||||
@ -165,14 +174,21 @@ driver knauer_pump = {
|
|||||||
set index ${cmd_str}
|
set index ${cmd_str}
|
||||||
set data [hgetpropval ${tc_root}/dummy/status real_data]
|
set data [hgetpropval ${tc_root}/dummy/status real_data]
|
||||||
set dlist [split ${data} ","]
|
set dlist [split ${data} ","]
|
||||||
|
if { [llength ${dlist}] > ${index} } {
|
||||||
sct result [lindex ${dlist} ${index}]
|
sct result [lindex ${dlist} ${index}]
|
||||||
|
} else {
|
||||||
|
sct result ""
|
||||||
|
}
|
||||||
set cmd "@@NOSEND@@"
|
set cmd "@@NOSEND@@"
|
||||||
%%}
|
%%}
|
||||||
|
|
||||||
code read_glp = {%%
|
code read_glp = {%%
|
||||||
|
if { [string equal -nocase -length 6 ${data} "ERROR:"] } {
|
||||||
|
} else {
|
||||||
set dlist [split [lindex [split ${data} ":"] 1] ","]
|
set dlist [split [lindex [split ${data} ":"] 1] ","]
|
||||||
sct real_data "[join [lrange ${dlist} 0 end] ,]"
|
sct real_data "[join [lrange ${dlist} 0 end] ,]"
|
||||||
set data "Hidden in real_data property"
|
set data "Hidden in real_data property"
|
||||||
|
}
|
||||||
%%}
|
%%}
|
||||||
code read_status = {%%
|
code read_status = {%%
|
||||||
set dlist [split [lindex [split ${data} ":"] 1] ","]
|
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 = {%%
|
code volume_fetch = {%%
|
||||||
set data [hgetpropval ${tc_root}/dummy/glp real_data]
|
set data [hgetpropval ${tc_root}/dummy/glp real_data]
|
||||||
set dlist [split ${data} ","]
|
set dlist [split ${data} ","]
|
||||||
@ -284,10 +316,10 @@ driver knauer_pump = {
|
|||||||
sct raw_volume ${pump_volume}
|
sct raw_volume ${pump_volume}
|
||||||
if { [hpropexists [sct] base_volume] } {
|
if { [hpropexists [sct] base_volume] } {
|
||||||
set pump_volume [expr {${pump_volume} - [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 base_volume [sct raw_volume]
|
||||||
}
|
}
|
||||||
sct result ${pump_volume}
|
sct result [format "%.2f" ${pump_volume}]
|
||||||
set cmd "@@NOSEND@@"
|
set cmd "@@NOSEND@@"
|
||||||
%%}
|
%%}
|
||||||
code volume_write = {%%
|
code volume_write = {%%
|
||||||
@ -297,6 +329,13 @@ driver knauer_pump = {
|
|||||||
set ratio_tgt [join [split [hval ${tc_root}/pump/ratio_sp] /] ,]
|
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"
|
set cmd "RAMP:0,${flow_tgt},${ratio_tgt},0,0,0,0,0,0,0,0,3"
|
||||||
sct pumping 1
|
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 = {%%
|
code volume_checkpumping = {%%
|
||||||
@ -313,6 +352,7 @@ driver knauer_pump = {
|
|||||||
set ratio_tgt [join [split [hval ${tc_root}/pump/ratio_sp] /] ,]
|
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 cmd "RAMP:0,${flow_tgt},${ratio_tgt},0,0,0,0,0,0,0,0,2"
|
||||||
set nextState noResponse
|
set nextState noResponse
|
||||||
|
sct driving 0
|
||||||
sct pumping 0
|
sct pumping 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user