diff --git a/src/main/java/a8k/app/hardware/type/A8kEcode.java b/src/main/java/a8k/app/hardware/type/A8kEcode.java index b4bc6f0..e4c4cb9 100644 --- a/src/main/java/a8k/app/hardware/type/A8kEcode.java +++ b/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), diff --git a/src/main/java/a8k/app/service/lowerctrl/LiquidOperationCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/LiquidOperationCtrlService.java index 0a03fc8..496099d 100644 --- a/src/main/java/a8k/app/service/lowerctrl/LiquidOperationCtrlService.java +++ b/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 {