From a430eb2366d75833d0855501d00d9a2247a1de2d Mon Sep 17 00:00:00 2001 From: zhaohe Date: Mon, 21 Apr 2025 12:24:16 +0800 Subject: [PATCH] fix some bug --- src/main/java/a8k/app/hardware/type/A8kEcode.java | 2 ++ src/main/java/a8k/app/hardware/type/InputIOId.java | 4 +-- .../java/a8k/app/i18n/Internationalization.java | 2 ++ .../lowerctrl/DeviceMoveToZeroCtrlService.java | 35 +++++++++++++--------- .../service/lowerctrl/TurnableMoveCtrlService.java | 11 +++---- .../extui/page/driver/InputIOStateScannerPage.java | 4 +-- ...1ReactionPlatesTransmitPosVerificationPage.java | 1 - 7 files changed, 35 insertions(+), 24 deletions(-) diff --git a/src/main/java/a8k/app/hardware/type/A8kEcode.java b/src/main/java/a8k/app/hardware/type/A8kEcode.java index e4c4cb9..7cefdbe 100644 --- a/src/main/java/a8k/app/hardware/type/A8kEcode.java +++ b/src/main/java/a8k/app/hardware/type/A8kEcode.java @@ -109,6 +109,8 @@ public enum A8kEcode { APPE_PLATE_BOX_NOT_COVER(309), //板夹仓未盖 APPE_DEVICE_NOT_INITED(310), //设备未初始化 APPE_SHAKE_MODULE_CLAMPM_NOT_IN_ZERO_POS(311), //摇匀模组夹紧模块没有在零点位置 + APPE_INCUBATION_PLATE_OUTLET_STUCK_DETECTOR_SENSOR_IS_TRIGGER(312), //孵育板出料口卡板检测传感器触发 + APPE_INCUBATION_PLATE_INLET_STUCK_DETECTOR_SENSOR_IS_TRIGGER(313), //孵育板入料口卡板检测传感器触发 // diff --git a/src/main/java/a8k/app/hardware/type/InputIOId.java b/src/main/java/a8k/app/hardware/type/InputIOId.java index 04c75d9..8b19b12 100644 --- a/src/main/java/a8k/app/hardware/type/InputIOId.java +++ b/src/main/java/a8k/app/hardware/type/InputIOId.java @@ -10,10 +10,10 @@ public enum InputIOId { RecycleBinOverflowPPS("废料仓满溢检测", ModuleType.Board, MId.PlatesBoxTCMBoard, 2, false),//废料桶满溢检测 RecycleBinInPlacePPS("废料仓到位检测", ModuleType.Board, MId.OptModBoard, 1, false),//废料桶到位检测 - OptModulePlateStuckPPS("光学模组-入口-卡板-检测", ModuleType.Board, MId.OptModBoard, 4, false),//废料桶到位检测 + IncubationPlateOutletStuckPPS("光学模组-入口-卡板-检测", ModuleType.Board, MId.OptModBoard, 4, false),//废料桶到位检测 PlateBoxCoverClosurePPS("板夹仓-仓门光电", ModuleType.Board, MId.PlatesBoxBoard, 0, true),//板夹仓舱盖闭合检测 - PlateBoxPlateStuckPPS("板夹仓-卡板光电", ModuleType.Board, MId.PlatesBoxBoard, 1, false),//板夹仓卡板检测 + IncubationPlateInletStuckPPS("板夹仓-卡板光电", ModuleType.Board, MId.PlatesBoxBoard, 1, false),//板夹仓卡板检测 diff --git a/src/main/java/a8k/app/i18n/Internationalization.java b/src/main/java/a8k/app/i18n/Internationalization.java index bef1cfe..771e740 100644 --- a/src/main/java/a8k/app/i18n/Internationalization.java +++ b/src/main/java/a8k/app/i18n/Internationalization.java @@ -40,6 +40,8 @@ public class Internationalization { case APPE_DEVICE_NOT_INITED -> "设备未初始化"; case APPE_DEVICE_INIT_CHECK_FAIL -> "设备初始化检查失败"; case APPE_SHAKE_MODULE_CLAMPM_NOT_IN_ZERO_POS -> "摇匀模组夹紧电机初始化时没有在零点位置"; + case APPE_INCUBATION_PLATE_OUTLET_STUCK_DETECTOR_SENSOR_IS_TRIGGER -> "孵育板出料口卡板检测传感器触发"; + case APPE_INCUBATION_PLATE_INLET_STUCK_DETECTOR_SENSOR_IS_TRIGGER -> "孵育板入料口卡板检测传感器触发"; case PROJ_CARD_ERROR_EXPIRYED -> "项目卡过期"; case PROJ_CARD_ERROR_WRONG_FUNCTION_NUM -> "项目卡配置的函数数量与项目配置不匹配"; diff --git a/src/main/java/a8k/app/service/lowerctrl/DeviceMoveToZeroCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/DeviceMoveToZeroCtrlService.java index 33221b7..d57544a 100644 --- a/src/main/java/a8k/app/service/lowerctrl/DeviceMoveToZeroCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/DeviceMoveToZeroCtrlService.java @@ -1,16 +1,12 @@ package a8k.app.service.lowerctrl; +import a8k.app.hardware.driver.*; import a8k.app.hardware.type.*; import a8k.app.type.ui.ZAppPromopt; import a8k.app.type.ui.ZAppPromoptFormsItem; import a8k.app.type.ui.MessageLevel; import a8k.app.factory.ZAppPromoptFactory; import a8k.app.hardware.channel.A8kCanBusService; -import a8k.app.hardware.driver.InputDetectDriver; -import a8k.app.hardware.driver.ModuleEnableCtrlDriver; -import a8k.app.hardware.driver.MiniServoDriver; -import a8k.app.hardware.driver.PipetteCtrlDriver; -import a8k.app.hardware.driver.StepMotorCtrlDriver; import a8k.app.service.background.AppEventBusService; import a8k.app.teststate.VirtualDevice; @@ -35,7 +31,9 @@ public class DeviceMoveToZeroCtrlService { public enum Type { CHECK_TUBE_XCHANNEL_IS_EMPTY,//入料通道是否为空 CHECK_PLATE_BOX_IS_COVER,//板夹仓盖子是否盖着 - CHECK_PLATE_STUCK_DETECTOR_SENSOR_IS_TRIGGER,//板夹仓卡板检测 + CHECK_PLATE_STUCK_DETECTOR_SENSOR1_IS_TRIGGER,//板夹仓卡板检测 + CHECK_PLATE_STUCK_DETECTOR_SENSOR2_IS_TRIGGER,//板夹仓卡板检测 + CHECK_PULLERM_IS_IN_ZEROPOS,//检查拉杆电机是否在零点位置 CHECK_PUSHERM_IN_IN_ZEROPOS,//检查推杆电机是否在零点位置 CHECK_RECYCLE_BIN_IS_OVERFLOW,//检查垃圾箱是否满 @@ -118,8 +116,10 @@ public class DeviceMoveToZeroCtrlService { // CheckPointType.CHECK_TUBE_XCHANNEL_IS_EMPTY, () -> !inputDetectDriver.getIOState(InputIOId.THChInterPPS) && !inputDetectDriver.getIOState(InputIOId.THChOuterPPS))); checkPoints.add(new Checkpoint("检查板夹仓盖子是否盖上",// Checkpoint.Type.CHECK_PLATE_BOX_IS_COVER, () -> inputDetectDriver.getIOState(InputIOId.PlateBoxCoverClosurePPS))); - checkPoints.add(new Checkpoint("检测是否卡板",// - Checkpoint.Type.CHECK_PLATE_STUCK_DETECTOR_SENSOR_IS_TRIGGER, () -> !inputDetectDriver.getIOState(InputIOId.PlateBoxPlateStuckPPS))); + checkPoints.add(new Checkpoint("检测孵育盘入口是否卡板",// + Checkpoint.Type.CHECK_PLATE_STUCK_DETECTOR_SENSOR1_IS_TRIGGER, () -> !inputDetectDriver.getIOState(InputIOId.IncubationPlateInletStuckPPS))); +// checkPoints.add(new Checkpoint("检测孵育盘出口是否卡板",// +// Checkpoint.Type.CHECK_PLATE_STUCK_DETECTOR_SENSOR2_IS_TRIGGER, () -> !inputDetectDriver.getIOState(InputIOId.IncubationPlateOutletStuckPPS))); // checkPoints.add(new Checkpoint("检查拉杆电机是否在零点位置",// // CheckPointType.CHECK_PULLERM_IS_IN_ZEROPOS, () -> inputDetectDriver.getIOState(InputIOId.PullerMZeroPPS))); // checkPoints.add(new Checkpoint("检查推杆电机是否在零点位置",// @@ -184,10 +184,17 @@ public class DeviceMoveToZeroCtrlService { log.info("板夹仓推板电机回零"); stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.PlatesBoxPusherM); //光学模组初始化 - log.info("光学模组拉杆电机回零"); - stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.OptModPullM); log.info("光学模组扫码电机回零"); stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.OptModScannerM); + log.info("光学模组拉杆电机回零"); + stepMotorCtrlDriver.stepMotorEasyMoveToEndPointBlock(StepMotorMId.OptModPullM);// + stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.OptModPullM); + if (inputDetectDriver.getIOState(InputIOId.IncubationPlateOutletStuckPPS)) { + throw AppException.of(A8kEcode.APPE_INCUBATION_PLATE_OUTLET_STUCK_DETECTOR_SENSOR_IS_TRIGGER); + } + if (inputDetectDriver.getIOState(InputIOId.IncubationPlateInletStuckPPS)) { + throw AppException.of(A8kEcode.APPE_INCUBATION_PLATE_INLET_STUCK_DETECTOR_SENSOR_IS_TRIGGER); + } //转盘归零 log.info("转盘回零"); stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.IncubatorRotateCtrlM); @@ -218,7 +225,7 @@ public class DeviceMoveToZeroCtrlService { for (CheckResult result : results) { if (!result.pass) { log.info("设备初始化失败: check {} fail", result.info); -// doSomeThingWhenError(); + // doSomeThingWhenError(); return results; } } @@ -229,11 +236,11 @@ public class DeviceMoveToZeroCtrlService { //弹出无效物料 if (firstInit) { - log.error("TODO:..............................清空孵育盘"); firstInit = false; } //弹出试管架 tubeFeedingCtrlService.ejectTubeHolder(); + tubeFeedingCtrlService.moveTubeRackMoveToEnterPos(); //丢弃tip头 hbotMoveExCtrlService.initPipetterGun(); //hbot快速归零 @@ -249,7 +256,7 @@ public class DeviceMoveToZeroCtrlService { return doDeviceMoveToZero(); } catch (AppException e) { //释放试管夹爪 -// doSomeThingWhenError(); + // doSomeThingWhenError(); throw e; } } @@ -273,7 +280,7 @@ public class DeviceMoveToZeroCtrlService { if (workThread != null && workThread.isAlive()) { throw AppException.ofAECodeError("设备正在初始化中"); } - if(!gstate.getBoardParamInited()){ + if (!gstate.getBoardParamInited()) { throw AppException.of(A8kEcode.DEVICE_STARTUP_IN_PROGRESS); } if (workThread != null) { diff --git a/src/main/java/a8k/app/service/lowerctrl/TurnableMoveCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/TurnableMoveCtrlService.java index 09fa24e..a574453 100644 --- a/src/main/java/a8k/app/service/lowerctrl/TurnableMoveCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/TurnableMoveCtrlService.java @@ -3,7 +3,6 @@ package a8k.app.service.lowerctrl; import a8k.app.hardware.driver.InputDetectDriver; import a8k.app.hardware.driver.StepMotorCtrlDriver; import a8k.app.hardware.type.StepMotorMId; -import a8k.app.hardware.type.StepMotorRegIndex; import a8k.app.service.param.pos.TurntablePosParamMgr; import a8k.app.type.a8k.pos.IncubatorPos; import a8k.app.type.exception.AppException; @@ -31,7 +30,7 @@ public class TurnableMoveCtrlService { private void checkBeforeMoveTrunable() throws AppException { //板夹仓卡板检测 - if (inputDetectDriver.getIOState(InputIOId.PlateBoxPlateStuckPPS)) { + if (inputDetectDriver.getIOState(InputIOId.IncubationPlateInletStuckPPS)) { log.error("PlateBoxPlateStuckPPS is trigger"); throw new AppException(A8kEcode.APPE_PLATE_STUCK_DETECTOR_SENSOR_TRIGGER); } @@ -97,6 +96,8 @@ public class TurnableMoveCtrlService { int dTargetPos = MinRotationAngle.minRotationAngle(nowPos, pos, 36000); int targetPos = dTargetPos + nowPos; + log.info("to:{} now:{} dpos:{} targetPos:{}", pos, nowPos, dTargetPos, targetPos); + //先移动半个间距,用来检测是否发生卡板 if (nowPos < targetPos) { @@ -123,15 +124,15 @@ public class TurnableMoveCtrlService { } public void trunableMoveToPushPos(IncubatorPos index) throws AppException { - trunableMoveTo(turntablePosParamMgr.getPushPos0() + index.off * turntablePosParamMgr.getPosSpacing()); + trunableMoveTo(turntablePosParamMgr.getPushPos0() - index.off * turntablePosParamMgr.getPosSpacing()); } public void trunableMoveToPullPos(IncubatorPos index) throws AppException { - trunableMoveTo(turntablePosParamMgr.getPullPos0() + index.off * turntablePosParamMgr.getPosSpacing()); + trunableMoveTo(turntablePosParamMgr.getPullPos0() - index.off * turntablePosParamMgr.getPosSpacing()); } public void trunableMoveToDropLiquidPos(IncubatorPos index) throws AppException { - trunableMoveTo(turntablePosParamMgr.getDropLiquidPos0() + index.off * turntablePosParamMgr.getPosSpacing()); + trunableMoveTo(turntablePosParamMgr.getDropLiquidPos0() - index.off * turntablePosParamMgr.getPosSpacing()); } diff --git a/src/main/java/a8k/extui/page/driver/InputIOStateScannerPage.java b/src/main/java/a8k/extui/page/driver/InputIOStateScannerPage.java index 6d603fd..520fe67 100644 --- a/src/main/java/a8k/extui/page/driver/InputIOStateScannerPage.java +++ b/src/main/java/a8k/extui/page/driver/InputIOStateScannerPage.java @@ -57,7 +57,7 @@ public class InputIOStateScannerPage { public Boolean getPlateBoxCoverClosurePPS() throws AppException {return inputDetectDriver.getIOState(InputIOId.PlateBoxCoverClosurePPS);} @ExtApiStatu(name = "板夹仓-卡板光电", order = 9) - public Boolean getPlateBoxPlateStuckPPS() throws AppException {return inputDetectDriver.getIOState(InputIOId.PlateBoxPlateStuckPPS);} + public Boolean getPlateBoxPlateStuckPPS() throws AppException {return inputDetectDriver.getIOState(InputIOId.IncubationPlateInletStuckPPS);} @ExtApiStatu(name = "光学模组-拉杆电机-零点光电", order = 10) public Boolean getPullerMZeroPPS() throws AppException {return inputDetectDriver.getIOState(InputIOId.PullerMZeroPPS);} @@ -75,7 +75,7 @@ public class InputIOStateScannerPage { //OptModulePlateStuckPPS @ExtApiStatu(name = "光学模组-板卡光电", order = 14) - public Boolean getOptModulePlateStuckPPS() throws AppException {return inputDetectDriver.getIOState(InputIOId.OptModulePlateStuckPPS);} + public Boolean getOptModulePlateStuckPPS() throws AppException {return inputDetectDriver.getIOState(InputIOId.IncubationPlateOutletStuckPPS);} @ExtApiStatu(name = "废料仓-到位", order = 15) public Boolean getRecycleBinInPlacePPS() throws AppException {return inputDetectDriver.getIOState(InputIOId.RecycleBinInPlacePPS);} diff --git a/src/main/java/a8k/extui/page/test/verification/P31ReactionPlatesTransmitPosVerificationPage.java b/src/main/java/a8k/extui/page/test/verification/P31ReactionPlatesTransmitPosVerificationPage.java index d56896f..fac07b2 100644 --- a/src/main/java/a8k/extui/page/test/verification/P31ReactionPlatesTransmitPosVerificationPage.java +++ b/src/main/java/a8k/extui/page/test/verification/P31ReactionPlatesTransmitPosVerificationPage.java @@ -45,7 +45,6 @@ public class P31ReactionPlatesTransmitPosVerificationPage { public void trunableMoveToPushPos(IncubatorPos index) throws AppException { - turnableMoveCtrlService.trunableMoveToPushPos(index); plateBoxCtrlService.pushPlateQuick(ConsumableGroup.CG1, index); }