Tricontinent C3000
PyLabware driver for Tricontinent С3000 syringe pump with integrated valve.
- class PyLabware.devices.tricontinent_c3000.C3000SyringePump(device_name, connection_mode, address, port, switch_address=None, valve_type='3PORT_DISTR_IOBE')[source]
Bases:
AbstractSyringePump
,AbstractDistributionValve
This provides a Python class for the Tricontinent C3000 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 (str | int | None) –
valve_type (str) –
- property autorun
Property showing if the commands should be executed immediately, or queued instead.
- clear_errors()[source]
Happens automatically upon errors read-out, except those requiring pump re-initialization.
- dispense(increments, set_busy=True)[source]
Makes relative dispense.
- Parameters:
increments (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
- 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) –
- class PyLabware.devices.tricontinent_c3000.C3000SyringePumpCommands(*args, **kwargs)[source]
Bases:
LabDeviceCommands
Collection of command definitions for C3000 pump, DT protocol.
This class shouldn’t be instantiated
- DEFAULT_STATUS = '/0`1'
- ERROR_CODES = {0: 'No error.', 1: 'Initialization failure!', 2: 'Invalid command!', 3: 'Invalid operand!', 4: 'Invalid checksum!', 6: 'EEPROM failure!', 7: 'Device not initialized!', 8: 'CAN bus failure!', 9: 'Plunger overload!', 10: 'Valve overload!', 11: 'Plunger move not allowed! Check valve position.', 15: 'Command overflow!'}
- GET_BACK_INC = {'name': '?12', 'reply': {'type': <class 'str'>}}
- GET_EEPROM_DATA = {'name': '?27', 'reply': {'args': [5], 'parser': <function slicer>}}
- GET_FW_VER = {'name': '?23', 'reply': {'type': <class 'str'>}}
- GET_INIT_STATUS = {'name': '?19', 'reply': {'type': <class 'bool'>}}
- GET_MAX_VEL = {'name': '?2', 'reply': {'type': <class 'str'>}}
- GET_MOT_HOLD = {'name': '?25', 'reply': {'type': <class 'str'>}}
- GET_MOT_RUN = {'name': '?26', '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': '?7', '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'>}}
- 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_PLOPE_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 = {'N0': 3000, 'N1': 24000, 'N2': 24000}
- SET_BACK_INC = {'name': 'K', 'reply': {'type': <class 'str'>}}
- SET_CALIB_CONF = {'name': 'u'}
- SET_EXT_OUT = {'name': 'J', 'reply': {'type': <class 'str'>}}
- SET_EXT_OUT_COND = {'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_MOT_HOLD = {'name': 'h', 'reply': {'type': <class 'str'>}}
- SET_MOT_RUN = {'name': 'm', 'reply': {'type': <class 'str'>}}
- SET_POS_CTR = {'name': 'z', 'reply': {'type': <class 'str'>}}
- SET_PUMP_CONF = {'name': 'U'}
- SET_RAMP_PLOPE = {'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(['N0', 'N1', 'N2'])}, 'name': 'N', 'reply': {'type': <class 'str'>}, 'type': <class 'str'>}
- SET_START_VEL = {'check': {'max': 8000, 'min': 1}, 'name': 'v', 'reply': {'type': <class 'str'>}, 'type': <class 'int'>}
- SET_STOP_STEPS = {'name': 'C', 'reply': {'type': <class 'str'>}}
- SET_STOP_VEL = {'check': {'max': 21600, 'min': 1}, 'name': 'c', 'reply': {'type': <class 'str'>}, 'type': <class 'int'>}
- SET_SYR_GAP = {'name': 'R', 'reply': {'type': <class 'str'>}}
- 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'>}}
- SYR_MOVE_ABS_NOBUSY = {'name': 'a', 'reply': {'type': <class 'str'>}}
- SYR_SPIT_REL = {'name': 'D', 'reply': {'type': <class 'str'>}}
- SYR_SPIT_REL_NOBUSY = {'name': 'd', 'reply': {'type': <class 'str'>}}
- SYR_SUCK_REL = {'name': 'P', 'reply': {'type': <class 'str'>}}
- SYR_SUCK_REL_NOBUSY = {'name': 'p', 'reply': {'type': <class 'str'>}}
- 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')}, 'name': 'I', 'reply': {'type': <class 'str'>}}
- VALVE_MOVE_O = {'check': {'values': ('', '1', '2', '3', '4', '5', '6')}, 'name': 'O', 'reply': {'type': <class 'str'>}}
- VALVE_POSITIONS = ('', '1', '2', '3', '4', '5', '6')
- VALVE_TYPES = {'3PORT_DISTR_IO': '11', '3PORT_DISTR_IOBE': '4', '3PORT_T': '5', '3PORT_Y': '1', '4PORT_90DEG': '2', '4PORT_LOOP': '9', '4PORT_T': '5', '6PORT_DISTR': '7'}