SICS-710: Make the watlow_rm driveable block until a drive has finished.

Also clear the geterror property to make sure that the driver recovers from Modbus error messages.
This commit is contained in:
Ferdi Franceschini
2013-12-13 08:16:21 +11:00
parent e27aea0169
commit 68a746d46a

View File

@ -179,6 +179,7 @@ debug_log "setValue $dev:16:$cmd $par"
if {[string first "ASCERR:" $data] >=0} { if {[string first "ASCERR:" $data] >=0} {
sct geterror $data sct geterror $data
} elseif {$data != [sct oldval]} { } elseif {$data != [sct oldval]} {
hdelprop [sct] geterror
sct oldval $data sct oldval $data
sct update $data sct update $data
sct utime readtime sct utime readtime
@ -221,6 +222,13 @@ debug_log "setValue $dev:16:$cmd $par"
proc setSP {tc_root nextState cmd} { proc setSP {tc_root nextState cmd} {
debug_log "setSP $tc_root $nextState $cmd [sct]=[sct target] [hget [sct]]" debug_log "setSP $tc_root $nextState $cmd [sct]=[sct target] [hget [sct]]"
debug_log "setSP sct = [sct], sct writestatus = [sct writestatus]"
if {[sct writestatus] == "start"} {
# Called by drive adapter
hset $tc_root/status "busy"
debug_log "setSP hsetprop $tc_root/setpoint driving 1"
hsetprop $tc_root/setpoint driving 1
}
hset $tc_root/Loop1/setpoint [sct target] hset $tc_root/Loop1/setpoint [sct target]
return idle return idle
} }
@ -502,7 +510,7 @@ proc createNode {scobj_hpath sct_controller cmdGroup varName readable writable\
} }
::scobj::hinitprops $tempobj ::scobj::hinitprops $tempobj
hsetprop $scobj_hpath klass NXenvironment hsetprop $scobj_hpath klass environment
::scobj::set_required_props $scobj_hpath ::scobj::set_required_props $scobj_hpath
foreach {rootpath hpath klass priv} " foreach {rootpath hpath klass priv} "
$scobj_hpath sensor NXsensor spy $scobj_hpath sensor NXsensor spy
@ -523,6 +531,7 @@ proc createNode {scobj_hpath sct_controller cmdGroup varName readable writable\
hsetprop $scobj_hpath privilege spy hsetprop $scobj_hpath privilege spy
::scobj::hinitprops $tempobj setpoint ::scobj::hinitprops $tempobj setpoint
hsetprop $scobj_hpath/setpoint data true hsetprop $scobj_hpath/setpoint data true
hsetprop $scobj_hpath/setpoint type drivable
if {[SplitReply [environment_simulation]]=="false"} { if {[SplitReply [environment_simulation]]=="false"} {
ansto_makesctdrive ${tempobj}_driveable $scobj_hpath/setpoint $scobj_hpath/sensor/value $sct_controller ansto_makesctdrive ${tempobj}_driveable $scobj_hpath/setpoint $scobj_hpath/sensor/value $sct_controller
} }