def __init__(self): """ Construct the System Object """ # Initialize the hw api synthesizer = SynthesizerHAL() # Should we start the simulator? # Call the constructor super(System, self).__init__(synthesizer) # Read Reactor configs and create reactors reactors_conf = self.sysconf['Reactors'] self.reactors = [] for reactor_section in reactors_conf.sections: reactor_id = reactors_conf[reactor_section]['id'] self.reactors.append(Reactor(reactor_id, synthesizer)) # Create a reagent delivery robot self.reagent_robot = ReagentRobot(synthesizer) # Give top level system object access to F18 valve self.f18 = F18(synthesizer) pressreg_config = self.sysconf['PressureRegulators'] self.pressure_regulators = [] for pressreg_sec in pressreg_config.sections: pressreg_id = pressreg_config[pressreg_sec]['id'] self.pressure_regulators.append( PressureRegulator(pressreg_id, synthesizer)) self.coolant_pump = CoolantPump(synthesizer) if self.sysconf['Simulator']['synthesizer']: log.info("Starting the HW Simulator") self.start_simulator()
def close(self): """ Close the gripper and make sure it closes """ for i in xrange(self.conf['retry_count']): begintime = datetime.now() self.close_no_check() while self.timeout > datetime.now() - begintime: time.sleep(0.1) if self.is_closed: log.debug("Close actuator %s success", repr(self)) return log.info("Failed to close actuator %s before timeout, retry %d", repr(self), i) log.error("Failed to close actuator %s after retrys", repr(self))
def lower(self): """ Lower actuator and unsure it gets there """ for i in xrange(self.conf['retry_count']): begintime = datetime.now() self.lower_no_check() while self.timeout > datetime.now() - begintime: time.sleep(0.1) if self.is_down: log.debug("Lower actuator %s success", repr(self)) return log.info("Failed to raise actuator %s before timeout, retry %d", repr(self), i) log.error("Failed to lower actuator %s after retrys", repr(self))
def open(self): """ Open the gripper and make sure it opens """ for i in xrange(self.conf['retry_count']): begintime = datetime.now() self.open_no_check() while self.timeout > datetime.now() - begintime: time.sleep(0.1) if self.is_open: log.debug("Open actuator %s success", repr(self)) return log.info("Failed to open actautor %s before timeout, retry %d", repr(self), i) log.error("Failed to open actuator %s after retrys", repr(self))
def lift(self): """ Move the actuator up and ensure it gets there """ for i in xrange(self.conf['retry_count']): begintime = datetime.now() self.lift_no_check() while self.timeout > datetime.now() - begintime: time.sleep(0.1) if self.is_up: log.debug("Lift actuator %s success", repr(self)) return log.info("Failed to raise actautor %s before timeout, retry %d", repr(self), i) log.error("Failed to raise actuator %s after retrys", repr(self))
def wait(self, timeout=None): """ Wait for the motion to be complete """ if timeout is None: timeout = self.conf['MOVETIMEOUT'] dtimeout = timedelta(0, timeout) move_start_time = datetime.now() while datetime.now() - move_start_time < dtimeout: if self.isMoveComplete(): return True log.info("Waiting for complete actuator %d", self.id_) log.error("Motion Timeout actuator %d", self.id_ ) raise ElixysLinactError("%s unable to complete move before timeout")
def lower(self): """ Lower actuator and ensure it gets there """ self.prepare_air() for i in xrange(self.conf['retry_count']): begintime = datetime.now() self.lower_no_check() while self.timeout > datetime.now() - begintime: time.sleep(0.1) if self.is_down: log.debug("Lower actuator %s success", repr(self)) return log.info("Failed to raise actuator %s before timeout, retry %d", repr(self), i) log.error("Failed to lower actuator %s after retrys", repr(self)) raise ElixysPneumaticError("Failed to lower %s" " check digital sensors and pressure source"% repr(self))
def move_and_wait(self, posmm, timeout=None): """ Move, and wait for it to complete make sure to do this within and alotted timeout. """ if timeout is None: timeout = self.conf['MOVETIMEOUT'] dtimeout = timedelta(0, timeout) move_start_time = datetime.now() self.move(posmm) while datetime.now() - move_start_time < dtimeout: if self.isMoveComplete(): return True log.info("Waiting for complete actuator %d", self.id_) log.error("Motion Timeout actuator %d", self.id_ ) raise ElixysLinactError("%s unable to complete move before timeout")
def __init__(self): # Initialize the hw api synthesizer = SynthesizerHAL() # Should we start the simulator? if self.sysconf['Simulator']['synthesizer']: log.info("Starting the HW Simulator") from pyelixys.hal.tests.testelixyshw import \ start_simulator_thread self.simulator, self.wsclient, self.simthread = \ start_simulator_thread() # Call the constructor super(System, self).__init__(synthesizer) # Read Reactor configs and create reactors reactors_conf = self.sysconf['Reactors'] self.reactors = [] for reactor_section in reactors_conf.sections: reactor_id = reactors_conf[reactor_section]['id'] self.reactors.append(Reactor(reactor_id, synthesizer)) # Create a reagent delivery robot self.reagent_robot = ReagentRobot(synthesizer) # Give top level system object access to F18 valve self.f18 = F18(synthesizer) pressreg_config = self.sysconf['PressureRegulators'] self.pressure_regulators = [] for pressreg_sec in pressreg_config.sections: pressreg_id = pressreg_config[pressreg_sec]['id'] self.pressure_regulators.append( PressureRegulator(pressreg_id, synthesizer)) self.coolant_pump = CoolantPump(synthesizer)