Fermi chopper motors should ignore INT1712 interrupts.

Don't halt choppers just because someone tried to interrupt a scan.
Also make slave chopper optional in mkFermiMotors.
This commit is contained in:
Ferdi Franceschini
2013-04-29 20:42:06 +10:00
parent 961f581bf2
commit c452e8982b

View File

@@ -429,7 +429,11 @@ namespace eval ::chopper {
proc imot_SHalt {hpath node addr name} { proc imot_SHalt {hpath node addr name} {
global SCode global SCode
# Don't halt the choppers just because someone tried to interrupt a scan.
if { [GetInt] == "continue" } {
hset $hpath/$node/control/stop 1 hset $hpath/$node/control/stop 1
hsetprop $hpath/$node abort 1
}
return $SCode(OKOK) return $SCode(OKOK)
} }
@@ -533,7 +537,8 @@ namespace eval ::chopper {
return $SCode(OKOK) return $SCode(OKOK)
} }
proc stop {hpath node addr name} { # Speed motor stop
proc Sstop {hpath node addr name} {
global SCode global SCode
hset $hpath/$node/control/stop 1 hset $hpath/$node/control/stop 1
hsetprop $hpath/$node abort 1 hsetprop $hpath/$node abort 1
@@ -558,7 +563,7 @@ proc mkFSpeedMot {fmot hdbroot chnode addr lowlim uplim} {
setspeed "::chopper::setSpeed $hdbroot $chnode $addr"\ setspeed "::chopper::setSpeed $hdbroot $chnode $addr"\
permspd "::chopper::permSpd $hdbroot $chnode $addr"\ permspd "::chopper::permSpd $hdbroot $chnode $addr"\
start "::chopper::start $hdbroot $chnode $addr"\ start "::chopper::start $hdbroot $chnode $addr"\
stop "::chopper::stop $hdbroot $chnode $addr"\ stop "::chopper::Sstop $hdbroot $chnode $addr"\
}] }]
hsetprop $hdbroot/$chnode abort 0 hsetprop $hdbroot/$chnode abort 0
$fmot movecount 5000 $fmot movecount 5000
@@ -603,12 +608,17 @@ proc mkFPhaseMot {fmot hdbroot chnode addr lowlim uplim} {
# @param slave, Slave chopper hdb node name # @param slave, Slave chopper hdb node name
# @param saddr, Slave chopper modbus address # @param saddr, Slave chopper modbus address
#proc mkFermiMotors {mSpdmot sSpdmot master maddr slave saddr} { #proc mkFermiMotors {mSpdmot sSpdmot master maddr slave saddr} {
proc mkFermiMotors {mSpdmot sSpdmot sPhmot master maddr slave saddr} { proc mkFermiMotors { mSpdmot master maddr {sSpdmot "EMPTY"} {sPhmot "EMPTY"} {slave "EMPTY"} {saddr "EMPTY"} } {
if {$sSpdmot == "schs"} {
# Make master and slave choppers
set hdbPath [mkChoppers " $master $maddr $slave $saddr"] set hdbPath [mkChoppers " $master $maddr $slave $saddr"]
# Create Master Chopper Speed motor object
mkFSpeedMot $mSpdmot $hdbPath $master $maddr -24000 24000
mkFSpeedMot $sSpdmot $hdbPath $slave $saddr -24000 24000 mkFSpeedMot $sSpdmot $hdbPath $slave $saddr -24000 24000
mkFPhaseMot $sPhmot $hdbPath $slave $saddr 0 180 mkFPhaseMot $sPhmot $hdbPath $slave $saddr 0 180
} else {
set hdbPath [mkChoppers " $master $maddr"]
}
# Create Master Chopper Speed motor object
mkFSpeedMot $mSpdmot $hdbPath $master $maddr -24000 24000
} }
mkFermiMotors mchs schs schp mch 1 sch 2 mkFermiMotors mchs mch 2 schs schp sch 3