Browse Source

update

tags/v0
zhaohe 10 months ago
parent
commit
9b61495c30
  1. BIN
      app.db
  2. 33
      src/main/java/a8k/service/app/devicectrl/calibration/ReactionPlatesTransmitControlerCalibration.java
  3. 26
      src/main/java/a8k/service/app/devicectrl/calibration/TubeFeedingModulePosCalibration.java
  4. 65
      src/main/java/a8k/service/app/devicectrl/calibration/TubePreProcesPosCalibration.java
  5. 10
      src/main/java/a8k/service/app/devicectrl/ctrlservice/DeviceInitCtrlService.java
  6. 28
      src/main/java/a8k/service/app/devicectrl/ctrlservice/TubePreProcesCtrlService.java
  7. 8
      src/main/java/a8k/service/app/devicectrl/ctrlservice/TubeTubeFeedingCtrlService.java
  8. 6
      src/main/java/a8k/service/app/devicectrl/driver/MiniServoDriver.java
  9. 40
      src/main/java/a8k/service/app/devicectrl/exdriver/MotorEnableExDriver.java
  10. 13
      src/main/java/a8k/service/app/devicectrl/exdriver/TubeTransportExDriver.java
  11. 32
      src/main/java/a8k/service/app/devicectrl/init/MiniServoReferencePointIniter.java

BIN
app.db

33
src/main/java/a8k/service/app/devicectrl/calibration/ReactionPlatesTransmitControlerCalibration.java

@ -4,12 +4,13 @@ import a8k.extapi_controler.pagecontrol.ExtApiTabConfig;
import a8k.extapi_controler.utils.ExtApiFn;
import a8k.extapi_controler.utils.ExtApiTab;
import a8k.service.app.devicectrl.driver.HbotDriver;
import a8k.service.app.devicectrl.exdriver.MiniServoExDriver;
import a8k.service.app.devicectrl.driver.MiniServoDriver;
import a8k.service.app.devicectrl.driver.PipetteCtrlDriver;
import a8k.service.app.devicectrl.driver.StepMotorCtrlDriver;
import a8k.service.app.devicectrl.driver.type.StepMotorMId;
import a8k.service.app.devicectrl.ctrlservice.HbotCtrlService;
import a8k.service.app.devicectrl.ctrlservice.ReactionPlatesTransmitCtrlService;
import a8k.service.app.devicectrl.exdriver.MotorEnableExDriver;
import a8k.service.app.devicectrl.param.*;
import a8k.type.ConsumableGroup;
import a8k.type.IncubatorPos;
@ -25,13 +26,13 @@ public class ReactionPlatesTransmitControlerCalibration {
final static int overtime = 10000;
@Resource
MiniServoExDriver miniServoExDriver;
MiniServoDriver miniServoDriver;
@Resource
StepMotorCtrlDriver stepMotorCtrlDriver;
StepMotorCtrlDriver stepMotorCtrlDriver;
@Resource
OptModuleParamsMgr optModuleParamsMgr;
OptModuleParamsMgr optModuleParamsMgr;
@Resource
TurntablePosParamMgr turntablePosParamMgr;
TurntablePosParamMgr turntablePosParamMgr;
@Resource
PlatesBoxPosParamMgr platesBoxPosParamMgr;
@Resource
@ -48,6 +49,8 @@ public class ReactionPlatesTransmitControlerCalibration {
@Resource
HbotFixPosParamMgr hbotFixPosParamMgr;
@Resource
MotorEnableExDriver motorEnableExDriver;
//基础工具
@ExtApiFn(name = "归零", group = "测试工具", order = 1)
@ -64,26 +67,14 @@ public class ReactionPlatesTransmitControlerCalibration {
@ExtApiFn(name = "使能相关模块", group = "测试工具", order = 2)
public void enableModule() throws AppException {
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.PlatesBoxPusherM, 1);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.PlatesBoxYM, 1);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.OptModPullM, 1);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.OptModScannerM, 1);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.IncubatorRotateCtrlM, 1);
pipetteCtrlDriver.zMotorEnable(1);
hbotDriver.enable(1);
motorEnableExDriver.reactionPlatesRelateModuleEnable(true);
motorEnableExDriver.hbotRelateModuleEnable(true);
}
@ExtApiFn(name = "失能相关模块", group = "测试工具", order = 3)
public void disableModule() throws AppException {
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.PlatesBoxPusherM, 0);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.PlatesBoxYM, 0);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.OptModPullM, 0);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.OptModScannerM, 0);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.IncubatorRotateCtrlM, 0);
pipetteCtrlDriver.zMotorEnable(0);
hbotDriver.enable(0);
motorEnableExDriver.reactionPlatesRelateModuleEnable(false);
motorEnableExDriver.hbotRelateModuleEnable(false);
}
@ExtApiFn(name = "读取板夹仓坐标", group = "测试工具", order = 5)

26
src/main/java/a8k/service/app/devicectrl/calibration/TubeFeedingModulePosCalibration.java

@ -4,8 +4,9 @@ import a8k.extapi_controler.pagecontrol.ExtApiTabConfig;
import a8k.extapi_controler.utils.ExtApiFn;
import a8k.extapi_controler.utils.ExtApiTab;
import a8k.hardware.A8kCanBusService;
import a8k.service.app.devicectrl.exdriver.MiniServoExDriver;
import a8k.service.app.devicectrl.driver.MiniServoDriver;
import a8k.service.app.devicectrl.driver.StepMotorCtrlDriver;
import a8k.service.app.devicectrl.exdriver.MotorEnableExDriver;
import a8k.service.app.devicectrl.exdriver.TubeTransportExDriver;
import a8k.service.app.devicectrl.driver.type.MiniServoMId;
import a8k.service.app.devicectrl.driver.type.StepMotorMId;
@ -31,11 +32,13 @@ public class TubeFeedingModulePosCalibration {
@Resource
TubeTubeFeedingCtrlService tubeTubeFeedingCtrlService;
@Resource
TubeTransportExDriver tubeTransportExDriver;
TubeTransportExDriver tubeTransportExDriver;
@Resource
MiniServoExDriver miniServoExDriver;
MiniServoDriver miniServoDriver;
@Resource
StepMotorCtrlDriver stepMotorCtrlDriver;
StepMotorCtrlDriver stepMotorCtrlDriver;
@Resource
MotorEnableExDriver motorEnableExDriver;
private Integer readFeedingModXMPos() throws AppException {
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModXM, 1);
@ -47,29 +50,24 @@ public class TubeFeedingModulePosCalibration {
return tubeScanPosMgr.getParams();
}
// 测试工具
@ExtApiFn(name = "归零", group = "测试工具", order = 11)
public void deviceReset() throws AppException {
enableModule();
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.FeedingModXM, 15000);
}
@ExtApiFn(name = "使能相关模块", group = "测试工具", order = 12)
public void enableModule() throws AppException {
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModInfeedM, 1);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModOutfeedM, 1);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModXM, 1);
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModTubeScanerClampingSV, 1);
motorEnableExDriver.tubeFeedRelatedModuleEnable(true);
}
@ExtApiFn(name = "失能相关模块", group = "测试工具", order = 13)
public void disableModule() throws AppException {
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModInfeedM, 0);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModOutfeedM, 0);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModXM, 0);
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModTubeScanerClampingSV, 0);
motorEnableExDriver.tubeFeedRelatedModuleEnable(false);
motorEnableExDriver.preProcessRelatedModuleEnable(false);
}

65
src/main/java/a8k/service/app/devicectrl/calibration/TubePreProcesPosCalibration.java

@ -3,11 +3,12 @@ package a8k.service.app.devicectrl.calibration;
import a8k.extapi_controler.pagecontrol.ExtApiTabConfig;
import a8k.extapi_controler.utils.ExtApiFn;
import a8k.extapi_controler.utils.ExtApiTab;
import a8k.service.app.devicectrl.exdriver.MiniServoExDriver;
import a8k.service.app.devicectrl.driver.MiniServoDriver;
import a8k.service.app.devicectrl.driver.StepMotorCtrlDriver;
import a8k.service.app.devicectrl.driver.type.MiniServoMId;
import a8k.service.app.devicectrl.driver.type.StepMotorMId;
import a8k.service.app.devicectrl.ctrlservice.TubePreProcesCtrlService;
import a8k.service.app.devicectrl.exdriver.MotorEnableExDriver;
import a8k.service.app.devicectrl.param.TubePreProcesPosParamMgr;
import a8k.type.exception.AppException;
import jakarta.annotation.Resource;
@ -23,19 +24,21 @@ public class TubePreProcesPosCalibration {
TubePreProcesPosParamMgr posMgr;
@Resource
MiniServoExDriver miniServoExDriver;
MiniServoDriver miniServoDriver;
@Resource
StepMotorCtrlDriver stepMotorCtrlDriver;
@Resource
TubePreProcesCtrlService controler;
@Resource
MotorEnableExDriver motorEnableExDriver;
//基础工具
@ExtApiFn(name = "归零", group = "测试工具", order = 1)
public void deviceReset() throws AppException {
enableModule();
miniServoExDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperSV);
miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperSV);
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModGripperZM, overtime);
miniServoExDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV);
miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV);
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModClampingM, overtime);
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModShakeM, overtime);
@ -45,21 +48,13 @@ public class TubePreProcesPosCalibration {
@ExtApiFn(name = "使能相关模块", group = "测试工具", order = 2)
public void enableModule() throws AppException {
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, 1);
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModGripperYSV, 1);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModClampingM, 1);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModGripperZM, 1);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModShakeM, 1);
motorEnableExDriver.preProcessRelatedModuleEnable(true);
}
@ExtApiFn(name = "失能相关模块", group = "测试工具", order = 3)
public void disableModule() throws AppException {
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, 0);
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModGripperYSV, 0);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModClampingM, 0);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModGripperZM, 0);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModShakeM, 0);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModXM, 0);
motorEnableExDriver.preProcessRelatedModuleEnable(false);
motorEnableExDriver.tubeFeedRelatedModuleEnable(false);
}
// @ExtApiFn(name = "读取夹爪当前位置", group = "测试工具", order = 4)
@ -85,48 +80,48 @@ public class TubePreProcesPosCalibration {
// 夹爪标定,校准,校验
//
// @ExtApiFn(name = "设置当前位置为<参考点>(完全张开的位置)", group = "标定.夹爪", order = 21, newline = true)
// public Integer gripperSVSetCurrentPosAsRef() throws AppException {
// miniServoControler.miniServoSetRefPos(MiniServoMId.ShakeModGripperSV);
// return 1800;
// }
// @ExtApiFn(name = "设置当前位置为<参考点>(完全张开的位置)", group = "标定.夹爪", order = 21, newline = true)
// public Integer gripperSVSetCurrentPosAsRef() throws AppException {
// miniServoControler.miniServoSetRefPos(MiniServoMId.ShakeModGripperSV);
// return 1800;
// }
@ExtApiFn(name = "<标定>当前点为<抓手张开位置>", group = "标定.夹爪", order = 22)
public Integer gripperSVSetCurrentPosAsOpenPos() throws AppException {
Integer pos = miniServoExDriver.miniServoReadPos(MiniServoMId.ShakeModGripperSV);
Integer pos = miniServoDriver.miniServoReadPos(MiniServoMId.ShakeModGripperSV);
posMgr.setGripperServoOpenPos(pos);
return pos;
}
@ExtApiFn(name = "<标定>当前点为<抓手闭合位置>", group = "标定.夹爪", order = 23)
public Integer gripperSVSetCurrentPosAsClosePos() throws AppException {
int pos = miniServoExDriver.miniServoReadPos(MiniServoMId.ShakeModGripperSV);
int pos = miniServoDriver.miniServoReadPos(MiniServoMId.ShakeModGripperSV);
posMgr.setGripperServoClosePos(pos + 2);
return pos;
}
@ExtApiFn(name = "<标定>当前点为<抓手取试管位置>", group = "标定.夹爪", order = 24)
public Integer gripperSVSetCurrentPosAsTakeCapPos() throws AppException {
Integer pos = miniServoExDriver.miniServoReadPos(MiniServoMId.ShakeModGripperSV);
Integer pos = miniServoDriver.miniServoReadPos(MiniServoMId.ShakeModGripperSV);
posMgr.setGripperServoTakeCapPos(pos - 5);
return pos;
}
@ExtApiFn(name = "<校验>张开", group = "校验.夹爪", order = 26)
public void gripperSVOpen() throws AppException {
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, 1);
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, 1);
controler.gripperSVOpen();
}
@ExtApiFn(name = "<校验>夹紧", group = "校验.夹爪", order = 25)
public void gripperSVCClose() throws AppException {
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, 1);
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, 1);
controler.gripperSVCClose();
}
@ExtApiFn(name = "<校验>夹住试管", group = "校验.夹爪", order = 25)
public void gripperSVClampTube() throws AppException {
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, 1);
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, 1);
controler.gripperSVClampTube();
}
@ -134,40 +129,40 @@ public class TubePreProcesPosCalibration {
//YSV : 设置参考点,标定,验证
//
// @ExtApiFn(name = "设置当前位置为<参考点>(Y轴最外侧的位置)", group = "标定.YSV", order = 31, newline = true)
// public Integer YAxixServoSetCurrentPosAsRef() throws AppException {
// return miniServoControler.miniServoSetRefPos(MiniServoMId.ShakeModGripperYSV);
// }
// @ExtApiFn(name = "设置当前位置为<参考点>(Y轴最外侧的位置)", group = "标定.YSV", order = 31, newline = true)
// public Integer YAxixServoSetCurrentPosAsRef() throws AppException {
// return miniServoControler.miniServoSetRefPos(MiniServoMId.ShakeModGripperYSV);
// }
@ExtApiFn(name = "<标定>当前点为<取试管位置>", group = "标定.YSV", order = 32)
public Integer YAxixServoSetCurrentPosAsTakeTubePos() throws AppException {
Integer pos = miniServoExDriver.miniServoReadPos(MiniServoMId.ShakeModGripperYSV);
Integer pos = miniServoDriver.miniServoReadPos(MiniServoMId.ShakeModGripperYSV);
posMgr.setYServoTakeTubePos(pos);
return pos;
}
@ExtApiFn(name = "<标定>当前点为<摇晃位置>", group = "标定.YSV", order = 33)
public Integer YAxixServoSetCurrentPosAsShakePos() throws AppException {
Integer pos = miniServoExDriver.miniServoReadPos(MiniServoMId.ShakeModGripperYSV);
Integer pos = miniServoDriver.miniServoReadPos(MiniServoMId.ShakeModGripperYSV);
posMgr.setYServoShakePos(pos);
return pos;
}
@ExtApiFn(name = "<校验>移动到摇匀位", group = "校验.YSV", order = 35)
public void YAxixServoShake() throws AppException {
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModGripperYSV, 1);
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperYSV, 1);
controler.YSVMoveToShakePos();
}
@ExtApiFn(name = "<校验>移动到取试管位", group = "校验.YSV", order = 36)
public void YAxixServoTakeTube() throws AppException {
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModGripperYSV, 1);
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperYSV, 1);
controler.YSVMoveToTakeTubePos();
}
@ExtApiFn(name = "<校验>移动到待机位", group = "校验.YSV", order = 37)
public void YAxixServoMoveToStandyPos() throws AppException {
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModGripperYSV, 1);
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperYSV, 1);
controler.YSVMoveToStandyPos();
}

10
src/main/java/a8k/service/app/devicectrl/ctrlservice/DeviceInitCtrlService.java

@ -2,7 +2,7 @@ package a8k.service.app.devicectrl.ctrlservice;
import a8k.hardware.A8kCanBusService;
import a8k.hardware.type.a8kcanprotocol.IOId;
import a8k.service.app.devicectrl.exdriver.MiniServoExDriver;
import a8k.service.app.devicectrl.driver.MiniServoDriver;
import a8k.service.app.devicectrl.driver.StepMotorCtrlDriver;
import a8k.service.app.devicectrl.driver.type.MiniServoMId;
import a8k.service.app.devicectrl.driver.type.StepMotorMId;
@ -35,7 +35,7 @@ public class DeviceInitCtrlService {
@Resource
AppDebugHelperService appDebugHelper;
@Resource
MiniServoExDriver miniServoExDriver;
MiniServoDriver miniServoDriver;
@Resource
StepMotorCtrlDriver stepMotorCtrlDriver;
@ -93,9 +93,9 @@ public class DeviceInitCtrlService {
//进出料初始化
actionReactor.dosome("入料平移电机回零", () -> stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.FeedingModXM, actionOvertime));
actionReactor.dosome("摇匀模组-扫码夹紧舵机回零", () -> miniServoExDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModTubeScanerClampingSV));
actionReactor.dosome("摇匀模组-夹爪舵机回零", () -> miniServoExDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperSV));
actionReactor.dosome("摇匀模组-夹爪Y轴舵机回零", () -> miniServoExDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV));
actionReactor.dosome("摇匀模组-扫码夹紧舵机回零", () -> miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModTubeScanerClampingSV));
actionReactor.dosome("摇匀模组-夹爪舵机回零", () -> miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperSV));
actionReactor.dosome("摇匀模组-夹爪Y轴舵机回零", () -> miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV));
actionReactor.dosome("摇匀模组-夹紧电机回零", () -> stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModClampingM, actionOvertime));
actionReactor.dosome("摇匀模组-夹爪Z轴电机回零", () -> stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModGripperZM, actionOvertime));
actionReactor.dosome("摇匀模组-摇匀电机回零", () -> stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModShakeM, actionOvertime));

28
src/main/java/a8k/service/app/devicectrl/ctrlservice/TubePreProcesCtrlService.java

@ -4,7 +4,7 @@ import a8k.constant.MiniServoConstant;
import a8k.extapi_controler.pagecontrol.ExtApiTabConfig;
import a8k.extapi_controler.utils.ExtApiFn;
import a8k.extapi_controler.utils.ExtApiTab;
import a8k.service.app.devicectrl.exdriver.MiniServoExDriver;
import a8k.service.app.devicectrl.driver.MiniServoDriver;
import a8k.service.app.devicectrl.driver.StepMotorCtrlDriver;
import a8k.service.app.devicectrl.driver.type.MiniServoMId;
import a8k.service.app.devicectrl.driver.type.StepMotorMId;
@ -43,7 +43,7 @@ public class TubePreProcesCtrlService {
@Resource
TubePreProcesPosParamMgr tubePreProcesPosParamMgr;
@Resource
MiniServoExDriver miniServoExDriver;
MiniServoDriver miniServoDriver;
@Resource
StepMotorCtrlDriver stepMotorCtrlDriver;
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++
@ -51,8 +51,8 @@ public class TubePreProcesCtrlService {
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++
private void modGroupMoveToZero() throws AppException {
miniServoExDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperSV);
miniServoExDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV);
miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperSV);
miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV);
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModClampingM, actionOvertime);
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModGripperZM, actionOvertime);
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModShakeM, actionOvertime);
@ -81,30 +81,30 @@ public class TubePreProcesCtrlService {
// Api
public void gripperSVOpen() throws AppException {
miniServoExDriver.miniServoMoveToBlock(MiniServoMId.ShakeModGripperSV, tubePreProcesPosParamMgr.getGripperServoOpenPos());
miniServoDriver.miniServoMoveToBlock(MiniServoMId.ShakeModGripperSV, tubePreProcesPosParamMgr.getGripperServoOpenPos());
}
public void gripperSVCClose() throws AppException {
miniServoExDriver.miniServoMoveToBlock(MiniServoMId.ShakeModGripperSV, tubePreProcesPosParamMgr.getGripperServoClosePos());
miniServoDriver.miniServoMoveToBlock(MiniServoMId.ShakeModGripperSV, tubePreProcesPosParamMgr.getGripperServoClosePos());
}
public void gripperSVClampTube() throws AppException {
miniServoExDriver.miniServoMoveToBlock(MiniServoMId.ShakeModGripperSV, tubePreProcesPosParamMgr.getGripperServoTakeCapPos());
miniServoDriver.miniServoMoveToBlock(MiniServoMId.ShakeModGripperSV, tubePreProcesPosParamMgr.getGripperServoTakeCapPos());
}
public void YSVMoveToTakeTubePos() throws AppException {
miniServoExDriver.miniServoMoveToBlock(MiniServoMId.ShakeModGripperYSV, tubePreProcesPosParamMgr.getYServoTakeTubePos() - 100); //该动作是为了消除齿轮间隙
miniServoExDriver.miniServoMoveToBlock(MiniServoMId.ShakeModGripperYSV, tubePreProcesPosParamMgr.getYServoTakeTubePos());
miniServoDriver.miniServoMoveToBlock(MiniServoMId.ShakeModGripperYSV, tubePreProcesPosParamMgr.getYServoTakeTubePos() - 100); //该动作是为了消除齿轮间隙
miniServoDriver.miniServoMoveToBlock(MiniServoMId.ShakeModGripperYSV, tubePreProcesPosParamMgr.getYServoTakeTubePos());
}
public void YSVMoveToShakePos() throws AppException {
miniServoExDriver.miniServoMoveToBlock(MiniServoMId.ShakeModGripperYSV, tubePreProcesPosParamMgr.getYServoShakePos() - 100); //该动作是为了消除齿轮间隙
miniServoExDriver.miniServoMoveToBlock(MiniServoMId.ShakeModGripperYSV, tubePreProcesPosParamMgr.getYServoShakePos());
miniServoDriver.miniServoMoveToBlock(MiniServoMId.ShakeModGripperYSV, tubePreProcesPosParamMgr.getYServoShakePos() - 100); //该动作是为了消除齿轮间隙
miniServoDriver.miniServoMoveToBlock(MiniServoMId.ShakeModGripperYSV, tubePreProcesPosParamMgr.getYServoShakePos());
}
public void YSVMoveToStandyPos() throws AppException {
miniServoExDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV);
miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV);
}
@ -181,12 +181,12 @@ public class TubePreProcesCtrlService {
}
//Y轴在零点附近
if (!ZEQ.IntEq(miniServoExDriver.miniServoReadPos(MiniServoMId.ShakeModGripperYSV), MiniServoConstant.getZeroPos(MiniServoMId.ShakeModGripperYSV), 30)) {
if (!ZEQ.IntEq(miniServoDriver.miniServoReadPos(MiniServoMId.ShakeModGripperYSV), MiniServoConstant.getZeroPos(MiniServoMId.ShakeModGripperYSV), 30)) {
throw new AppException(A8kEcode.CODEERROR_MOTOR_NOT_IN_ZERO_POS, MId.ShakeModGripperYSV);
}
//夹爪没有零位置
if (!ZEQ.IntEq(miniServoExDriver.miniServoReadPos(MiniServoMId.ShakeModGripperSV), MiniServoConstant.getZeroPos(MiniServoMId.ShakeModGripperSV), 30)) {
if (!ZEQ.IntEq(miniServoDriver.miniServoReadPos(MiniServoMId.ShakeModGripperSV), MiniServoConstant.getZeroPos(MiniServoMId.ShakeModGripperSV), 30)) {
throw new AppException(A8kEcode.CODEERROR_MOTOR_NOT_IN_ZERO_POS, MId.ShakeModGripperSV);
}

8
src/main/java/a8k/service/app/devicectrl/ctrlservice/TubeTubeFeedingCtrlService.java

@ -5,7 +5,7 @@ import a8k.extapi_controler.pagecontrol.ExtApiTabConfig;
import a8k.extapi_controler.utils.ExtApiFn;
import a8k.extapi_controler.utils.ExtApiTab;
import a8k.service.app.devicectrl.exdriver.CodeScanerExDriver;
import a8k.service.app.devicectrl.exdriver.MiniServoExDriver;
import a8k.service.app.devicectrl.driver.MiniServoDriver;
import a8k.service.app.devicectrl.driver.StepMotorCtrlDriver;
import a8k.service.app.devicectrl.exdriver.TubeTransportExDriver;
import a8k.service.app.devicectrl.driver.type.MiniServoMId;
@ -54,9 +54,9 @@ public class TubeTubeFeedingCtrlService {
@Resource
TubeTransportExDriver tubeTransportExDriver;
@Resource
MiniServoExDriver miniServoExDriver;
MiniServoDriver miniServoDriver;
@Resource
StepMotorCtrlDriver stepMotorCtrlDriver;
StepMotorCtrlDriver stepMotorCtrlDriver;
private Boolean isTubeExist() throws AppException {
@ -214,7 +214,7 @@ public class TubeTubeFeedingCtrlService {
tubeTransportExDriver.scanClampModClamp();
canBus.codeScanerStartScan(MId.FeedingModScannerMod);
miniServoExDriver.miniServoRotateWithTorque(MiniServoMId.ShakeModTubeScanerClampingSV, stp.getTubeScanServoTorque());
miniServoDriver.miniServoRotateWithTorque(MiniServoMId.ShakeModTubeScanerClampingSV, stp.getTubeScanServoTorque());
return codeScaner.feedingModScannerModCodeScannerScanCode(scanOvertime);
} finally {
canBus.moduleStop(MId.ShakeModTubeScanerClampingSV);

6
src/main/java/a8k/service/app/devicectrl/exdriver/MiniServoExDriver.java → src/main/java/a8k/service/app/devicectrl/driver/MiniServoDriver.java

@ -1,4 +1,4 @@
package a8k.service.app.devicectrl.exdriver;
package a8k.service.app.devicectrl.driver;
import a8k.constant.MiniServoConstant;
import a8k.hardware.A8kCanBusService;
@ -14,8 +14,8 @@ import org.springframework.stereotype.Component;
@Component
public class MiniServoExDriver {
Logger logger = org.slf4j.LoggerFactory.getLogger(MiniServoExDriver.class);
public class MiniServoDriver {
Logger logger = org.slf4j.LoggerFactory.getLogger(MiniServoDriver.class);
@Resource
A8kCanBusService canBus;

40
src/main/java/a8k/service/app/devicectrl/exdriver/MotorEnableExDriver.java

@ -2,8 +2,12 @@ package a8k.service.app.devicectrl.exdriver;
import a8k.hardware.A8kCanBusService;
import a8k.service.app.devicectrl.driver.HbotDriver;
import a8k.service.app.devicectrl.driver.MiniServoDriver;
import a8k.service.app.devicectrl.driver.PipetteCtrlDriver;
import a8k.service.app.devicectrl.driver.StepMotorCtrlDriver;
import a8k.service.app.devicectrl.driver.type.MiniServoMId;
import a8k.service.app.devicectrl.driver.type.StepMotorMId;
import a8k.type.exception.AppException;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;
@ -12,15 +16,49 @@ public class MotorEnableExDriver {
@Resource
A8kCanBusService canBus;
A8kCanBusService canBus;
@Resource
HbotDriver hbotDriver;
@Resource
PipetteCtrlDriver pipetteCtrlDriver;
@Resource
StepMotorCtrlDriver stepMotorCtrlDriver;
@Resource
MiniServoDriver miniServoDriver;
public void preProcessRelatedModuleEnable(Boolean enable) throws AppException {
Integer val = enable ? 1 : 0;
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, val);
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperYSV, val);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModClampingM, val);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModGripperZM, val);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModShakeM, val);
}
public void tubeFeedRelatedModuleEnable(Boolean enable) throws AppException {
Integer val = enable ? 1 : 0;
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModInfeedM, val);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModOutfeedM, val);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModXM, val);
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModTubeScanerClampingSV, val);
}
public void reactionPlatesRelateModuleEnable(Boolean enable) throws AppException {
Integer val = enable ? 1 : 0;
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.PlatesBoxPusherM, val);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.PlatesBoxYM, val);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.OptModPullM, val);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.OptModScannerM, val);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.IncubatorRotateCtrlM, val);
}
public void hbotRelateModuleEnable(Boolean enable) throws AppException {
Integer val = enable ? 1 : 0;
pipetteCtrlDriver.zMotorEnable(val);
hbotDriver.enable(val);
}
}

13
src/main/java/a8k/service/app/devicectrl/exdriver/TubeTransportExDriver.java

@ -5,6 +5,7 @@ import a8k.extapi_controler.utils.ExtApiFn;
import a8k.hardware.A8kCanBusService;
import a8k.hardware.type.a8kcanprotocol.A8kEcode;
import a8k.hardware.type.a8kcanprotocol.MId;
import a8k.service.app.devicectrl.driver.MiniServoDriver;
import a8k.service.app.devicectrl.driver.StepMotorCtrlDriver;
import a8k.service.app.devicectrl.driver.type.MiniServoMId;
import a8k.service.app.devicectrl.driver.type.StepMotorMId;
@ -22,9 +23,9 @@ public class TubeTransportExDriver {
static Integer overtime = 10000;
@Resource
A8kCanBusService canBus;
A8kCanBusService canBus;
@Resource
MiniServoExDriver miniServoExDriver;
MiniServoDriver miniServoDriver;
@Resource
TubeFeedingModuleParamMgr tubeScanPosMgr;
@ -72,16 +73,16 @@ public class TubeTransportExDriver {
@ExtApiFn(name = "扫描夹紧机构夹紧", group = "基础方法", order = 1)
public void scanClampModClamp() throws AppException {
logger.info("扫描夹紧机构夹紧");
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModTubeScanerClampingSV, 1);
miniServoExDriver.miniServoMoveTo(MiniServoMId.ShakeModTubeScanerClampingSV, MiniServoConstant.getZeroPos(MiniServoMId.ShakeModTubeScanerClampingSV) + 900);
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModTubeScanerClampingSV, 1);
miniServoDriver.miniServoMoveTo(MiniServoMId.ShakeModTubeScanerClampingSV, MiniServoConstant.getZeroPos(MiniServoMId.ShakeModTubeScanerClampingSV) + 900);
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, overtime);
}
@ExtApiFn(name = "扫描夹紧机构复位", group = "基础方法", order = 2)
public void scanClampModRelease() throws AppException {
logger.info("扫描夹紧机构复位");
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModTubeScanerClampingSV, 1);
miniServoExDriver.miniServoMoveTo(MiniServoMId.ShakeModTubeScanerClampingSV, MiniServoConstant.getZeroPos(MiniServoMId.ShakeModTubeScanerClampingSV));
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModTubeScanerClampingSV, 1);
miniServoDriver.miniServoMoveTo(MiniServoMId.ShakeModTubeScanerClampingSV, MiniServoConstant.getZeroPos(MiniServoMId.ShakeModTubeScanerClampingSV));
canBus.waitForMod(MId.ShakeModTubeScanerClampingSV, overtime);
}

32
src/main/java/a8k/service/app/devicectrl/calibration/MiniServoReferencePointSetting.java → src/main/java/a8k/service/app/devicectrl/init/MiniServoReferencePointIniter.java

@ -1,10 +1,10 @@
package a8k.service.app.devicectrl.calibration;
package a8k.service.app.devicectrl.init;
import a8k.extapi_controler.pagecontrol.ExtApiTabConfig;
import a8k.extapi_controler.utils.ExtApiFn;
import a8k.extapi_controler.utils.ExtApiTab;
import a8k.service.app.devicectrl.exdriver.MiniServoExDriver;
import a8k.service.app.devicectrl.driver.MiniServoDriver;
import a8k.service.app.devicectrl.driver.type.MiniServoMId;
import a8k.type.exception.AppException;
import jakarta.annotation.Resource;
@ -12,54 +12,54 @@ import org.springframework.stereotype.Component;
@Component
@ExtApiTab(cfg = ExtApiTabConfig.MiniServoReferencePointSetting)
public class MiniServoReferencePointSetting {
public class MiniServoReferencePointIniter {
@Resource
MiniServoExDriver miniServoExDriver;
MiniServoDriver miniServoDriver;
@ExtApiFn(name = "失能相关模块", group = "测试工具", order = 1)
public void disableMotor() throws AppException {
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, 0);
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModGripperYSV, 0);
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModTubeScanerClampingSV, 0);
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, 0);
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperYSV, 0);
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModTubeScanerClampingSV, 0);
}
@ExtApiFn(name = "使能相关模块", group = "测试工具", order = 2)
public void enableMotor() throws AppException {
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, 1);
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModGripperYSV, 1);
miniServoExDriver.miniServoEnable(MiniServoMId.ShakeModTubeScanerClampingSV, 1);
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, 1);
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperYSV, 1);
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModTubeScanerClampingSV, 1);
}
@ExtApiFn(name = "设置<夹爪><参考点>(完全张开的位置)", group = "参考点设置", order = 11, newline = true)
public Integer gripperSVSetCurrentPosAsRef() throws AppException {
miniServoExDriver.miniServoSetRefPos(MiniServoMId.ShakeModGripperSV);
miniServoDriver.miniServoSetRefPos(MiniServoMId.ShakeModGripperSV);
return 1800;
}
@ExtApiFn(name = "设置<摇匀模组Y轴舵机><参考点>(Y轴最外侧的位置)", group = "参考点设置", order = 12, newline = true)
public Integer YAxixServoSetCurrentPosAsRef() throws AppException {
return miniServoExDriver.miniServoSetRefPos(MiniServoMId.ShakeModGripperYSV);
return miniServoDriver.miniServoSetRefPos(MiniServoMId.ShakeModGripperYSV);
}
@ExtApiFn(name = "设置<夹紧舵机>参考点(水平位置)", group = "参考点设置", order = 13)
public void setTubeScanClampPos() throws AppException {
miniServoExDriver.miniServoSetRefPos(MiniServoMId.ShakeModTubeScanerClampingSV);
miniServoDriver.miniServoSetRefPos(MiniServoMId.ShakeModTubeScanerClampingSV);
}
@ExtApiFn(name = "夹紧舵机移动到待机位(在参考点附近)", group = "校验", order = 21)
public void gripperSVMoveToZeroBlock() throws AppException {
miniServoExDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperSV);
miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperSV);
}
@ExtApiFn(name = "摇匀模组Y轴舵机移动到待机位(在参考点附近)", group = "校验", order = 22)
public void YAxixServoMoveToZeroBlock() throws AppException {
miniServoExDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV);
miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV);
}
@ExtApiFn(name = "夹紧舵机移动到待机位(在参考点附近)", group = "校验", order = 23)
public void tubeScanClampMoveToZeroBlock() throws AppException {
miniServoExDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModTubeScanerClampingSV);
miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModTubeScanerClampingSV);
}
}
Loading…
Cancel
Save