示例#1
0
    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()
示例#2
0
 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))
示例#3
0
 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))
示例#4
0
 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))
示例#5
0
    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))
示例#6
0
    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))
示例#7
0
    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))
示例#8
0
    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")
示例#9
0
 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))
示例#10
0
    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")
示例#11
0
    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)