fix bugs with persistent_limit parameter
take into account that reading the switch heater might be delayed
This commit is contained in:
@ -119,16 +119,27 @@ class Field(MercuryChannel, Magfield):
|
||||
return current / self.atob
|
||||
return 0
|
||||
|
||||
def start_ramp_to_field(self, state):
|
||||
self.change('PSU:SIG:FSET', self.persistent_field)
|
||||
def set_and_go(self, value):
|
||||
self.change('PSU:SIG:FSET', value)
|
||||
assert self.write_action('hold') == 'hold'
|
||||
assert self.write_action('run_to_set') == 'run_to_set'
|
||||
|
||||
def start_ramp_to_field(self, state):
|
||||
try:
|
||||
self.set_and_go(self.persistent_field)
|
||||
except (HardwareError, AssertionError):
|
||||
state.switch_undef = self.switch_on_time or state.now
|
||||
return self.wait_for_switch
|
||||
return self.ramp_to_field
|
||||
|
||||
def wait_for_switch(self, state):
|
||||
if self.now - self.switch_undef < self.wait_switch_on:
|
||||
return Retry()
|
||||
self.set_and_go(self.persistent_field)
|
||||
return self.ramp_to_field
|
||||
|
||||
def start_ramp_to_target(self, state):
|
||||
self.change('PSU:SIG:FSET', self.target)
|
||||
assert self.write_action('hold') == 'hold'
|
||||
assert self.write_action('run_to_set') == 'run_to_set'
|
||||
self.set_and_go(self.target)
|
||||
return self.ramp_to_target
|
||||
|
||||
def start_ramp_to_zero(self, state):
|
||||
|
Reference in New Issue
Block a user