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. 29
      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_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), //孵育板入料口卡板检测传感器触发
//

4
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),//板夹仓卡板检测

2
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 -> "项目卡配置的函数数量与项目配置不匹配";

29
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);
@ -229,11 +236,11 @@ public class DeviceMoveToZeroCtrlService {
//弹出无效物料
if (firstInit) {
log.error("TODO:..............................清空孵育盘");
firstInit = false;
}
//弹出试管架
tubeFeedingCtrlService.ejectTubeHolder();
tubeFeedingCtrlService.moveTubeRackMoveToEnterPos();
//丢弃tip头
hbotMoveExCtrlService.initPipetterGun();
//hbot快速归零

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.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());
}

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);}
@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);}

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 {
turnableMoveCtrlService.trunableMoveToPushPos(index);
plateBoxCtrlService.pushPlateQuick(ConsumableGroup.CG1, index);
}

Loading…
Cancel
Save