Browse Source

修改移液枪lld时吸液速度

master
zhaohe 4 months ago
parent
commit
c504ef3c56
  1. 2
      src/main/java/a8k/app/hardware/type/A8kEcode.java
  2. 23
      src/main/java/a8k/app/service/lowerctrl/LiquidOperationCtrlService.java

2
src/main/java/a8k/app/hardware/type/A8kEcode.java

@ -166,7 +166,7 @@ public enum A8kEcode {
LOW_ERROR_PIPETTE_ERROR_INVALID_ARG(1403),
LOW_ERROR_PIPETTE_ERROR_PRESSURE_SENSOR_ERROR(1404),
LOW_ERROR_PIPETTE_ERROR_OVER_PRESSURE(1405),
LOW_ERROR_PIPETTE_ERROR_LLD_ERROR(1406),
LOW_ERROR_PIPETTE_ERROR_LLD_ERROR(1406), //一般为lld时移液枪吸液过快导致很快到达最大行程
LOW_ERROR_PIPETTE_ERROR_DEVICE_NOT_INIT(1407),
LOW_ERROR_PIPETTE_ERROR_TIP_POP_ERROR(1408),
LOW_ERROR_PIPETTE_ERROR_PUMP_OVERLOAD(1409),

23
src/main/java/a8k/app/service/lowerctrl/LiquidOperationCtrlService.java

@ -33,7 +33,7 @@ public class LiquidOperationCtrlService {
static public final Integer helicalPitch = 20;
static public final Integer lldZmotorVmax = 50 * 80 / helicalPitch;
static public final Integer lldGunPumpVmax = 50 * 80 / helicalPitch;
static public final Integer lldGunPumpVmax = 40;
static public final Integer aspiratePumpVmax = 100;
static public final Integer reactionVolumeUL = 75;
@ -162,7 +162,7 @@ public class LiquidOperationCtrlService {
//
//清空tip中的液体和空气同时预先吸入部分空气以便后续清空由于lld吸入的液体提高lld的准确性
lddprepare();
ldd(largeBottlePos.z, 1000, 30);
ldd(largeBottlePos.z, largeBottleEndPos.z, 30);
if (pipetteCtrlDriver.lldIsDetectLiquid() && gstate.isInMode(DeviceRunMode.RealMode)) {
throw AppException.of(A8kEcode.APPE_TAKE_LARGE_BUFFER_LIQUID_FAIL);
}
@ -236,7 +236,7 @@ public class LiquidOperationCtrlService {
//lld
//清空tip中的液体和空气同时预先吸入部分空气以便后续清空由于lld吸入的液体提高lld的准确性
lddprepare();
ldd(sampleStartPos.z, sampleEndZPos, 20);
ldd(sampleStartPos.z, sampleEndZPos, 30);
if (!pipetteCtrlDriver.lldIsDetectLiquid() && gstate.isInMode(DeviceRunMode.RealMode)) {
throw AppException.of(A8kEcode.APPE_TAKE_SAMPLE_FAIL);
}
@ -339,14 +339,23 @@ public class LiquidOperationCtrlService {
private void ldd(Integer startpos, Integer maxpos, Integer p_threshold) throws AppException {
log.info("lld: startpos={}, maxpos={}, p_threshold={}", startpos, maxpos, p_threshold);
pipetteCtrlDriver.zMotorMoveToBlock(startpos);
//:TODO 临时注释掉lld代码
// pipetteCtrlDriver.zMotorMoveToBlock(startpos);
//
pipetteCtrlDriver.liquidOperationClearParams();
pipetteCtrlDriver.liquidOperationSetGunRunParams(14, 14, 0, 1000, lldGunPumpVmax);
pipetteCtrlDriver.liquidOperationSetZMotorRunParams(0, maxpos, lldZmotorVmax);
pipetteCtrlDriver.liquidOperationSetZMotorRunParams(startpos, maxpos, lldZmotorVmax);
pipetteCtrlDriver.liquidOperationFreshParams();
pipetteCtrlDriver.pipetteLld(LldType.kplld, 0, p_threshold);
try {
pipetteCtrlDriver.pipetteLld(LldType.kplld, 0, p_threshold);
} catch (AppException e) {
if (e.getError().eq(A8kEcode.LOW_ERROR_PIPETTE_ERROR_LLD_ERROR)) {
log.info("lld error: {}", e.getMessage());
return;
}
throw e;
}
}
private void makeReserveAir(Integer ul) throws AppException {

Loading…
Cancel
Save