TECAN Cavro XLP6000
PyLabware driver for the TECAN Cavro XLP 6000 syringe pump with integrated valve.
- class PyLabware.devices.tecan_cavro_xlp6000.XLP6000SyringePump(device_name, connection_mode, address, port, switch_address, syringe_size=None, valve_type='3PORT_DISTR_IO')[source]
Bases:
AbstractSyringePump
,AbstractDistributionValve
This provides a Python class for the TECAN XLP6000 syringe pump based on the the original operation manual 8694-12 E
Default constructor.
- Parameters:
device_name (str) –
connection_mode (str) –
address (str | None) –
port (str | int) –
switch_address (int | str) –
syringe_size (float | None) –
valve_type (str) –
- BUS_DEVICES = {}
- property autorun
Property showing if the commands should be executed immediately, or queued instead.
- calibrate_volume()[source]
Runs interactive volume calibration to set steps_per_ml coefficient correctly.
- clear_errors()[source]
Happens automatically upon errors read-out, except those requiring pump re-initialization.
- disconnect()[source]
Checks whether we are the last device using this port. If yes - closes the connection. If not - decreases the reference count.
- dispense(volume_ml, set_busy=True)[source]
Makes relative dispense.
- Parameters:
volume_ml (float) –
set_busy (bool) –
- initialize_device(valve_enumeration_direction='CW', input_port=None, output_port=None)[source]
Runs pump initialization.
- is_connected()[source]
Checks whether the device is connected by checking it’s firmware version.
- Return type:
bool
- is_initialized()[source]
Check if pump has been initialized properly after power-up.
- Return type:
bool
- move_plunger_absolute(position, set_busy=True)[source]
Makes absolute plunger move.
- Parameters:
position (int) –
set_busy (bool) –
- move_plunger_relative(position, set_busy=True)[source]
Makes relative plunger move. This is a wrapper for dispense()/withdraw().
- Parameters:
position (int) –
set_busy (bool) –
- parse_reply(cmd, reply)[source]
Overloaded method from base class. We need to do some more complex processing here for the status byte manipulations.
- Parameters:
cmd (Dict) –
reply (Any) –
- Return type:
str
- prime_pump(port, cycles=2, increments=2000)[source]
Primes the tubing and syringe to displace air
- Parameters:
port (str) –
cycles (int) –
increments (int) –
- Return type:
None
- set_predefined_speed(velocity_code)[source]
Sets maximum velocity (top of the ramp) for the syringe motor.
- Parameters:
velocity_code (int) –
- set_ramp_slope(ramp_code)[source]
Sets slope of acceleration/deceleration ramp for the syringe motor.
- Parameters:
ramp_code (str) –
- set_resolution_mode(resolution_mode)[source]
Sets plunger resolution mode.
- Parameters:
resolution_mode (str) –
- set_speed(speed)[source]
Sets maximum velocity (top of the ramp) for the syringe motor.
- Parameters:
speed (int) –
- set_start_velocity(start_velocity)[source]
Sets starting velocity for the syringe motor.
- Parameters:
start_velocity (int) –
- set_stop_velocity(stop_velocity)[source]
Sets stopping velocity for the syringe motor.
- Parameters:
stop_velocity (int) –
- set_valve_position(requested_position)[source]
Sets the distribution valve position.
- Parameters:
requested_position (str) –
- set_valve_type(valve_type, confirm=False)[source]
Sets valve type. This command requires power-cycle to activate new settings!
- Parameters:
valve_type (str) –
confirm (bool) –
- property steps_per_ml
- property syringe_size
- class PyLabware.devices.tecan_cavro_xlp6000.XLP6000SyringePumpCommands(*args, **kwargs)[source]
Bases:
LabDeviceCommands
Collection of command definitions for XLP6000 pump, DT protocol.
This class shouldn’t be instantiated
- DEFAULT_STATUS = '`'
- ERROR_CODES = {0: 'No error.', 1: 'Initialization failure!', 2: 'Invalid command!', 3: 'Invalid operand!', 6: 'EEPROM failure!', 7: 'Device not initialized!', 8: 'Internal failure!', 9: 'Plunger overload!', 10: 'Valve overload', 11: 'Plunger move not allowed! Check valve position.', 12: 'Internal failure!', 14: 'ADC failure!', 15: 'Command overflow!'}
- GET_BACK_INC = {'name': '?12', 'reply': {'type': <class 'str'>}}
- GET_EEPROM_DATA = {'name': '?76', 'reply': {'type': <class 'str'>}}
- GET_FW_VER = {'name': '?23', 'reply': {'type': <class 'str'>}}
- GET_MAX_VEL = {'name': '?2', 'reply': {'type': <class 'str'>}}
- GET_RES_MODE = {'name': '?28', 'reply': {'type': <class 'str'>}}
- GET_START_VEL = {'name': '?1', 'reply': {'type': <class 'str'>}}
- GET_STATUS = {'name': 'Q', 'reply': {'type': <class 'str'>}}
- GET_STEP_RAMP = {'name': '?25', 'reply': {'type': <class 'str'>}}
- GET_STOP_VEL = {'name': '?3', 'reply': {'type': <class 'str'>}}
- GET_SYR_POS = {'name': '?', 'reply': {'type': <class 'int'>}}
- GET_VALVE_POS = {'name': '?6', 'reply': {'parser': <method 'upper' of 'str' objects>, 'type': <class 'str'>}}
- GET_VOLT = {'name': '*', 'reply': {'type': <class 'int'>}}
- INIT_ALL_CCW = {'name': 'Y', 'reply': {'type': <class 'str'>}}
- INIT_ALL_CW = {'name': 'Z', 'reply': {'type': <class 'str'>}}
- INIT_SYRINGE = {'name': 'W', 'reply': {'type': <class 'str'>}}
- INIT_VALVE = {'name': 'w', 'reply': {'type': <class 'str'>}}
- PRG_DELAY_EXEC = {'name': 'M'}
- PRG_EEPROM_EXEC = {'name': 'e', 'reply': {'type': <class 'str'>}}
- PRG_EEPROM_ST = {'name': 's', 'reply': {'type': <class 'str'>}}
- PRG_HALT = {'name': 'H', 'reply': {'type': <class 'str'>}}
- PRG_MARK_LOOP_END = {'name': 'G'}
- PRG_MARK_LOOP_START = {'name': 'g'}
- PRG_RPT_LAST = {'name': 'X', 'reply': {'type': <class 'str'>}}
- PRG_RUN = {'name': 'R', 'reply': {'type': <class 'str'>}}
- PRG_TERM = {'name': 'T', 'reply': {'type': <class 'str'>}}
- RAMP_SLOPE_MODES = {'1': [2500, 20000], '10': [25000, 200000], '11': [27500, 220000], '12': [30000, 240000], '13': [32500, 260000], '14': [35000, 280000], '15': [37500, 300000], '16': [40000, 320000], '17': [42500, 340000], '18': [45000, 360000], '19': [47500, 380000], '2': [5000, 40000], '20': [50000, 400000], '3': [7500, 60000], '4': [10000, 80000], '5': [12500, 100000], '6': [15000, 120000], '7': [17500, 140000], '8': [20000, 160000], '9': [22500, 180000]}
- RESOLUTION_MODES = {0: 3000, 1: 48000, 2: 48000}
- SET_DEAD_VOL = {'name': 'k', 'reply': {'type': <class 'str'>}}
- SET_EEPROM = {'name': 'U', 'reply': {'type': <class 'str'>}}
- SET_EXT_OUT = {'name': 'J', 'reply': {'type': <class 'str'>}}
- SET_MAX_VEL = {'check': {'max': 48000, 'min': 1}, 'name': 'V', 'reply': {'type': <class 'str'>}, 'type': <class 'int'>}
- SET_MAX_VEL_CODE = {'check': {'values': dict_keys(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40'])}, 'name': 'S', 'reply': {'type': <class 'str'>}, 'type': <class 'str'>}
- SET_RAMP_SLOPE = {'check': {'values': dict_keys(['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20'])}, 'name': 'L', 'type': <class 'str'>}
- SET_RES_MODE = {'check': {'values': dict_keys([0, 1, 2])}, 'name': 'N', 'reply': {'type': <class 'str'>}, 'type': <class 'int'>}
- SET_START_VEL = {'check': {'max': 8000, 'min': 1}, 'name': 'v', 'reply': {'type': <class 'str'>}, 'type': <class 'int'>}
- SET_STOP_VEL = {'check': {'max': 21600, 'min': 1}, 'name': 'c', 'reply': {'type': <class 'str'>}, 'type': <class 'int'>}
- SPEED_MODES = {'0': [6000, 48000], '1': [5600, 44800], '10': [1600, 12800], '11': [1400, 11200], '12': [1200, 9600], '13': [1000, 8000], '14': [800, 6400], '15': [600, 4800], '16': [400, 3200], '17': [200, 1600], '18': [190, 1520], '19': [180, 1440], '2': [5000, 40000], '20': [170, 1360], '21': [160, 1280], '22': [150, 1200], '23': [140, 1120], '24': [130, 1040], '25': [120, 960], '26': [110, 880], '27': [100, 800], '28': [90, 720], '29': [80, 640], '3': [4400, 35200], '30': [70, 560], '31': [60, 480], '32': [50, 400], '33': [40, 320], '34': [30, 240], '35': [20, 160], '36': [18, 144], '37': [16, 128], '38': [14, 112], '39': [12, 96], '4': [3800, 30400], '40': [10, 80], '5': [3200, 25600], '6': [2600, 20800], '7': [2200, 17600], '8': [2000, 16000], '9': [1800, 14400]}
- SWITCH_ADDRESSES = {'0': '1', '1': '2', '2': '3', '3': '4', '4': '5', '5': '6', '6': '7', '7': '8', '8': '9', '9': ':', 'A': ';', 'B': '<', 'C': '=', 'D': '>', 'E': '?', 'all': '-'}
- SYR_MOVE_ABS = {'name': 'A', 'reply': {'type': <class 'str'>}, 'type': <class 'int'>}
- SYR_MOVE_ABS_NOBUSY = {'name': 'a', 'reply': {'type': <class 'str'>}, 'type': <class 'int'>}
- SYR_SPIT_REL = {'name': 'D', 'reply': {'type': <class 'str'>}, 'type': <class 'int'>}
- SYR_SPIT_REL_NOBUSY = {'name': 'd', 'reply': {'type': <class 'str'>}, 'type': <class 'int'>}
- SYR_SUCK_REL = {'name': 'P', 'reply': {'type': <class 'str'>}, 'type': <class 'int'>}
- SYR_SUCK_REL_NOBUSY = {'name': 'p', 'reply': {'type': <class 'str'>}, 'type': <class 'int'>}
- VALVE_MOVE_B = {'name': 'B', 'reply': {'type': <class 'str'>}}
- VALVE_MOVE_E = {'name': 'E', 'reply': {'type': <class 'str'>}}
- VALVE_MOVE_I = {'check': {'values': ('', '1', '2', '3', '4', '5', '6', '7', '8', '9')}, 'name': 'I', 'reply': {'type': <class 'str'>}}
- VALVE_MOVE_O = {'check': {'values': ('', '1', '2', '3', '4', '5', '6', '7', '8', '9')}, 'name': 'O', 'reply': {'type': <class 'str'>}}
- VALVE_POSITIONS = ('', '1', '2', '3', '4', '5', '6', '7', '8', '9')
- VALVE_TYPES = {'3PORT_DISTR_IO': '11', '3PORT_T': '5', '3PORT_Y': '1', '4PORT_90DEG': '2', '4PORT_LOOP': '9', '4PORT_T': '5', '6PORT_DISTR': '7', '9PORT_DISTR': '8'}