Browse Source

fix some bug

master
zhaohe 4 months ago
parent
commit
a430eb2366
  1. 2
      src/main/java/a8k/app/hardware/type/A8kEcode.java
  2. 4
      src/main/java/a8k/app/hardware/type/InputIOId.java
  3. 2
      src/main/java/a8k/app/i18n/Internationalization.java
  4. 35
      src/main/java/a8k/app/service/lowerctrl/DeviceMoveToZeroCtrlService.java
  5. 11
      src/main/java/a8k/app/service/lowerctrl/TurnableMoveCtrlService.java
  6. 4
      src/main/java/a8k/extui/page/driver/InputIOStateScannerPage.java
  7. 1
      src/main/java/a8k/extui/page/test/verification/P31ReactionPlatesTransmitPosVerificationPage.java

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

@ -109,6 +109,8 @@ public enum A8kEcode {
APPE_PLATE_BOX_NOT_COVER(309), //板夹仓未盖 APPE_PLATE_BOX_NOT_COVER(309), //板夹仓未盖
APPE_DEVICE_NOT_INITED(310), //设备未初始化 APPE_DEVICE_NOT_INITED(310), //设备未初始化
APPE_SHAKE_MODULE_CLAMPM_NOT_IN_ZERO_POS(311), //摇匀模组夹紧模块没有在零点位置 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), //孵育板入料口卡板检测传感器触发
// //

4
src/main/java/a8k/app/hardware/type/InputIOId.java

@ -10,10 +10,10 @@ public enum InputIOId {
RecycleBinOverflowPPS("废料仓满溢检测", ModuleType.Board, MId.PlatesBoxTCMBoard, 2, false),//废料桶满溢检测 RecycleBinOverflowPPS("废料仓满溢检测", ModuleType.Board, MId.PlatesBoxTCMBoard, 2, false),//废料桶满溢检测
RecycleBinInPlacePPS("废料仓到位检测", ModuleType.Board, MId.OptModBoard, 1, 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),//板夹仓舱盖闭合检测 PlateBoxCoverClosurePPS("板夹仓-仓门光电", ModuleType.Board, MId.PlatesBoxBoard, 0, true),//板夹仓舱盖闭合检测
PlateBoxPlateStuckPPS("板夹仓-卡板光电", ModuleType.Board, MId.PlatesBoxBoard, 1, false),//板夹仓卡板检测
IncubationPlateInletStuckPPS("板夹仓-卡板光电", ModuleType.Board, MId.PlatesBoxBoard, 1, false),//板夹仓卡板检测

2
src/main/java/a8k/app/i18n/Internationalization.java

@ -40,6 +40,8 @@ public class Internationalization {
case APPE_DEVICE_NOT_INITED -> "设备未初始化"; case APPE_DEVICE_NOT_INITED -> "设备未初始化";
case APPE_DEVICE_INIT_CHECK_FAIL -> "设备初始化检查失败"; case APPE_DEVICE_INIT_CHECK_FAIL -> "设备初始化检查失败";
case APPE_SHAKE_MODULE_CLAMPM_NOT_IN_ZERO_POS -> "摇匀模组夹紧电机初始化时没有在零点位置"; 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_EXPIRYED -> "项目卡过期";
case PROJ_CARD_ERROR_WRONG_FUNCTION_NUM -> "项目卡配置的函数数量与项目配置不匹配"; case PROJ_CARD_ERROR_WRONG_FUNCTION_NUM -> "项目卡配置的函数数量与项目配置不匹配";

35
src/main/java/a8k/app/service/lowerctrl/DeviceMoveToZeroCtrlService.java

@ -1,16 +1,12 @@
package a8k.app.service.lowerctrl; package a8k.app.service.lowerctrl;
import a8k.app.hardware.driver.*;
import a8k.app.hardware.type.*; import a8k.app.hardware.type.*;
import a8k.app.type.ui.ZAppPromopt; import a8k.app.type.ui.ZAppPromopt;
import a8k.app.type.ui.ZAppPromoptFormsItem; import a8k.app.type.ui.ZAppPromoptFormsItem;
import a8k.app.type.ui.MessageLevel; import a8k.app.type.ui.MessageLevel;
import a8k.app.factory.ZAppPromoptFactory; import a8k.app.factory.ZAppPromoptFactory;
import a8k.app.hardware.channel.A8kCanBusService; 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.service.background.AppEventBusService;
import a8k.app.teststate.VirtualDevice; import a8k.app.teststate.VirtualDevice;
@ -35,7 +31,9 @@ public class DeviceMoveToZeroCtrlService {
public enum Type { public enum Type {
CHECK_TUBE_XCHANNEL_IS_EMPTY,//入料通道是否为空 CHECK_TUBE_XCHANNEL_IS_EMPTY,//入料通道是否为空
CHECK_PLATE_BOX_IS_COVER,//板夹仓盖子是否盖着 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_PULLERM_IS_IN_ZEROPOS,//检查拉杆电机是否在零点位置
CHECK_PUSHERM_IN_IN_ZEROPOS,//检查推杆电机是否在零点位置 CHECK_PUSHERM_IN_IN_ZEROPOS,//检查推杆电机是否在零点位置
CHECK_RECYCLE_BIN_IS_OVERFLOW,//检查垃圾箱是否满 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))); // CheckPointType.CHECK_TUBE_XCHANNEL_IS_EMPTY, () -> !inputDetectDriver.getIOState(InputIOId.THChInterPPS) && !inputDetectDriver.getIOState(InputIOId.THChOuterPPS)));
checkPoints.add(new Checkpoint("检查板夹仓盖子是否盖上",// checkPoints.add(new Checkpoint("检查板夹仓盖子是否盖上",//
Checkpoint.Type.CHECK_PLATE_BOX_IS_COVER, () -> inputDetectDriver.getIOState(InputIOId.PlateBoxCoverClosurePPS))); 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("检查拉杆电机是否在零点位置",// // checkPoints.add(new Checkpoint("检查拉杆电机是否在零点位置",//
// CheckPointType.CHECK_PULLERM_IS_IN_ZEROPOS, () -> inputDetectDriver.getIOState(InputIOId.PullerMZeroPPS))); // CheckPointType.CHECK_PULLERM_IS_IN_ZEROPOS, () -> inputDetectDriver.getIOState(InputIOId.PullerMZeroPPS)));
// checkPoints.add(new Checkpoint("检查推杆电机是否在零点位置",// // checkPoints.add(new Checkpoint("检查推杆电机是否在零点位置",//
@ -184,10 +184,17 @@ public class DeviceMoveToZeroCtrlService {
log.info("板夹仓推板电机回零"); log.info("板夹仓推板电机回零");
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.PlatesBoxPusherM); stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.PlatesBoxPusherM);
//光学模组初始化 //光学模组初始化
log.info("光学模组拉杆电机回零");
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.OptModPullM);
log.info("光学模组扫码电机回零"); log.info("光学模组扫码电机回零");
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.OptModScannerM); 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("转盘回零"); log.info("转盘回零");
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.IncubatorRotateCtrlM); stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.IncubatorRotateCtrlM);
@ -218,7 +225,7 @@ public class DeviceMoveToZeroCtrlService {
for (CheckResult result : results) { for (CheckResult result : results) {
if (!result.pass) { if (!result.pass) {
log.info("设备初始化失败: check {} fail", result.info); log.info("设备初始化失败: check {} fail", result.info);
// doSomeThingWhenError();
// doSomeThingWhenError();
return results; return results;
} }
} }
@ -229,11 +236,11 @@ public class DeviceMoveToZeroCtrlService {
//弹出无效物料 //弹出无效物料
if (firstInit) { if (firstInit) {
log.error("TODO:..............................清空孵育盘");
firstInit = false; firstInit = false;
} }
//弹出试管架 //弹出试管架
tubeFeedingCtrlService.ejectTubeHolder(); tubeFeedingCtrlService.ejectTubeHolder();
tubeFeedingCtrlService.moveTubeRackMoveToEnterPos();
//丢弃tip头 //丢弃tip头
hbotMoveExCtrlService.initPipetterGun(); hbotMoveExCtrlService.initPipetterGun();
//hbot快速归零 //hbot快速归零
@ -249,7 +256,7 @@ public class DeviceMoveToZeroCtrlService {
return doDeviceMoveToZero(); return doDeviceMoveToZero();
} catch (AppException e) { } catch (AppException e) {
//释放试管夹爪 //释放试管夹爪
// doSomeThingWhenError();
// doSomeThingWhenError();
throw e; throw e;
} }
} }
@ -273,7 +280,7 @@ public class DeviceMoveToZeroCtrlService {
if (workThread != null && workThread.isAlive()) { if (workThread != null && workThread.isAlive()) {
throw AppException.ofAECodeError("设备正在初始化中"); throw AppException.ofAECodeError("设备正在初始化中");
} }
if(!gstate.getBoardParamInited()){
if (!gstate.getBoardParamInited()) {
throw AppException.of(A8kEcode.DEVICE_STARTUP_IN_PROGRESS); throw AppException.of(A8kEcode.DEVICE_STARTUP_IN_PROGRESS);
} }
if (workThread != null) { if (workThread != null) {

11
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.InputDetectDriver;
import a8k.app.hardware.driver.StepMotorCtrlDriver; import a8k.app.hardware.driver.StepMotorCtrlDriver;
import a8k.app.hardware.type.StepMotorMId; import a8k.app.hardware.type.StepMotorMId;
import a8k.app.hardware.type.StepMotorRegIndex;
import a8k.app.service.param.pos.TurntablePosParamMgr; import a8k.app.service.param.pos.TurntablePosParamMgr;
import a8k.app.type.a8k.pos.IncubatorPos; import a8k.app.type.a8k.pos.IncubatorPos;
import a8k.app.type.exception.AppException; import a8k.app.type.exception.AppException;
@ -31,7 +30,7 @@ public class TurnableMoveCtrlService {
private void checkBeforeMoveTrunable() throws AppException { private void checkBeforeMoveTrunable() throws AppException {
//板夹仓卡板检测 //板夹仓卡板检测
if (inputDetectDriver.getIOState(InputIOId.PlateBoxPlateStuckPPS)) {
if (inputDetectDriver.getIOState(InputIOId.IncubationPlateInletStuckPPS)) {
log.error("PlateBoxPlateStuckPPS is trigger"); log.error("PlateBoxPlateStuckPPS is trigger");
throw new AppException(A8kEcode.APPE_PLATE_STUCK_DETECTOR_SENSOR_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 dTargetPos = MinRotationAngle.minRotationAngle(nowPos, pos, 36000);
int targetPos = dTargetPos + nowPos; int targetPos = dTargetPos + nowPos;
log.info("to:{} now:{} dpos:{} targetPos:{}", pos, nowPos, dTargetPos, targetPos);
//先移动半个间距用来检测是否发生卡板 //先移动半个间距用来检测是否发生卡板
if (nowPos < targetPos) { if (nowPos < targetPos) {
@ -123,15 +124,15 @@ public class TurnableMoveCtrlService {
} }
public void trunableMoveToPushPos(IncubatorPos index) throws AppException { 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 { 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 { public void trunableMoveToDropLiquidPos(IncubatorPos index) throws AppException {
trunableMoveTo(turntablePosParamMgr.getDropLiquidPos0() + index.off * turntablePosParamMgr.getPosSpacing());
trunableMoveTo(turntablePosParamMgr.getDropLiquidPos0() - index.off * turntablePosParamMgr.getPosSpacing());
} }

4
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);} public Boolean getPlateBoxCoverClosurePPS() throws AppException {return inputDetectDriver.getIOState(InputIOId.PlateBoxCoverClosurePPS);}
@ExtApiStatu(name = "板夹仓-卡板光电", order = 9) @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) @ExtApiStatu(name = "光学模组-拉杆电机-零点光电", order = 10)
public Boolean getPullerMZeroPPS() throws AppException {return inputDetectDriver.getIOState(InputIOId.PullerMZeroPPS);} public Boolean getPullerMZeroPPS() throws AppException {return inputDetectDriver.getIOState(InputIOId.PullerMZeroPPS);}
@ -75,7 +75,7 @@ public class InputIOStateScannerPage {
//OptModulePlateStuckPPS //OptModulePlateStuckPPS
@ExtApiStatu(name = "光学模组-板卡光电", order = 14) @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) @ExtApiStatu(name = "废料仓-到位", order = 15)
public Boolean getRecycleBinInPlacePPS() throws AppException {return inputDetectDriver.getIOState(InputIOId.RecycleBinInPlacePPS);} public Boolean getRecycleBinInPlacePPS() throws AppException {return inputDetectDriver.getIOState(InputIOId.RecycleBinInPlacePPS);}

1
src/main/java/a8k/extui/page/test/verification/P31ReactionPlatesTransmitPosVerificationPage.java

@ -45,7 +45,6 @@ public class P31ReactionPlatesTransmitPosVerificationPage {
public void trunableMoveToPushPos(IncubatorPos index) throws AppException { public void trunableMoveToPushPos(IncubatorPos index) throws AppException {
turnableMoveCtrlService.trunableMoveToPushPos(index);
plateBoxCtrlService.pushPlateQuick(ConsumableGroup.CG1, index); plateBoxCtrlService.pushPlateQuick(ConsumableGroup.CG1, index);
} }

Loading…
Cancel
Save