From 82182a8dd9f10fac567a218faf60ea9e958a0741 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Fri, 18 Oct 2024 14:26:04 +0800 Subject: [PATCH] update --- app.db | Bin 225280 -> 225280 bytes .../pagecontrol/ExtApiTabConfig.java | 4 +- .../calibration/HbotTipPosCalibration.java | 6 +- ...ReactionPlatesTransmitControlerCalibration.java | 6 +- .../TubeFeedingModulePosCalibration.java | 167 ++++++++++++--------- .../calibration/TubePreProcesPosCalibration.java | 22 +-- .../devicectrl/ctrlservice/HbotCtrlService.java | 10 +- .../ctrlservice/TubePreProcesCtrlService.java | 11 +- .../devicectrl/exdriver/MotorMoveZeroExDriver.java | 52 +++++++ .../app/devicectrl/param/HbotFixPosParamMgr.java | 82 ---------- .../app/devicectrl/param/HbotFixedPosParamMgr.java | 82 ++++++++++ .../param/TubeFeedingModuleParamMgr.java | 132 ++++++++-------- .../devicectrl/param/TubePreProcesPosParamMgr.java | 2 +- .../a8k/service/db/utils/PosParameterReader.java | 12 +- src/main/java/a8k/type/TubeFeedingModuleParam.java | 19 --- src/main/java/a8k/type/TubeFeedingModulePos.java | 17 +++ .../java/a8k/type/TubeFeedingModuleSetting.java | 12 ++ 17 files changed, 357 insertions(+), 279 deletions(-) create mode 100644 src/main/java/a8k/service/app/devicectrl/exdriver/MotorMoveZeroExDriver.java delete mode 100644 src/main/java/a8k/service/app/devicectrl/param/HbotFixPosParamMgr.java create mode 100644 src/main/java/a8k/service/app/devicectrl/param/HbotFixedPosParamMgr.java delete mode 100644 src/main/java/a8k/type/TubeFeedingModuleParam.java create mode 100644 src/main/java/a8k/type/TubeFeedingModulePos.java create mode 100644 src/main/java/a8k/type/TubeFeedingModuleSetting.java diff --git a/app.db b/app.db index 7015d9a21e6623217f10ab399cfca43224ad1d9b..2d363576d87d7f1cd68f10a772e24a6aebff7fb6 100644 GIT binary patch delta 3003 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 im%0C6*Da`;FujaE_J(f<$4MHD#z diff --git a/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java b/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java index fbb05cd..453fbf7 100644 --- a/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java +++ b/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java @@ -14,10 +14,10 @@ public enum ExtApiTabConfig { AppReactionResultMgrService("应用数据.反应结果管理", true), //OK MiniServoReferencePointSetting("校准.舵机参考点设置", true), - Hbot2DCodeScanPosCalibration("校准.耗材扫描校准", true), + ReactionPlatesTransmitControlerCalibration("校准.反应板相关位置校准", true), TubeFeedingModulePosCalibration("校准.试管入料校准", true), TubePreProcesPosCalibration("校准.试管预处理校准", true), - ReactionPlatesTransmitControlerCalibration("校准.反应板相关位置校准", true), + Hbot2DCodeScanPosCalibration("校准.耗材扫描校准", true), HbotTipPosCalibration("校准.Tip耗材位置校准", true), HbotLittleBottleConsumableCalibration("校准.小瓶耗材位置校准", true), HbotLargeBottleBSPosCalibration("校准.大瓶BS耗材位置校准", true), diff --git a/src/main/java/a8k/service/app/devicectrl/calibration/HbotTipPosCalibration.java b/src/main/java/a8k/service/app/devicectrl/calibration/HbotTipPosCalibration.java index ce8af66..5ec0f0a 100644 --- a/src/main/java/a8k/service/app/devicectrl/calibration/HbotTipPosCalibration.java +++ b/src/main/java/a8k/service/app/devicectrl/calibration/HbotTipPosCalibration.java @@ -10,7 +10,7 @@ import a8k.service.app.devicectrl.driver.HbotDriver; import a8k.service.app.devicectrl.driver.PipetteCtrlDriver; import a8k.service.app.devicectrl.ctrlservice.HbotCtrlService; import a8k.service.app.devicectrl.param.HbotConsumableParamMgr; -import a8k.service.app.devicectrl.param.HbotFixPosParamMgr; +import a8k.service.app.devicectrl.param.HbotFixedPosParamMgr; import a8k.type.*; import a8k.type.cfg.Pos2d; import a8k.type.cfg.Pos3d; @@ -45,7 +45,7 @@ public class HbotTipPosCalibration { @Resource HbotConsumableParamMgr hbotConsumableParamMgr; @Resource - HbotFixPosParamMgr hbotFixPosParamMgr; + HbotFixedPosParamMgr hbotFixedPosParamMgr; Boolean stopFlag = false; @@ -204,7 +204,7 @@ public class HbotTipPosCalibration { public void calibrateDropTipPos() throws AppException { enableModule(); pipetteCtrlDriver.zMotorMeasureDistance(); - hbotFixPosParamMgr.setDropTipPos(new Pos3d(hbotDriver.readPos().x, hbotDriver.readPos().y, pipetteCtrlDriver.zMotorReadMeasureDistanceResult())); + hbotFixedPosParamMgr.setDropTipPos(new Pos3d(hbotDriver.readPos().x, hbotDriver.readPos().y, pipetteCtrlDriver.zMotorReadMeasureDistanceResult())); disableModule(); } diff --git a/src/main/java/a8k/service/app/devicectrl/calibration/ReactionPlatesTransmitControlerCalibration.java b/src/main/java/a8k/service/app/devicectrl/calibration/ReactionPlatesTransmitControlerCalibration.java index fbcb03e..17d01fa 100644 --- a/src/main/java/a8k/service/app/devicectrl/calibration/ReactionPlatesTransmitControlerCalibration.java +++ b/src/main/java/a8k/service/app/devicectrl/calibration/ReactionPlatesTransmitControlerCalibration.java @@ -45,9 +45,9 @@ public class ReactionPlatesTransmitControlerCalibration { @Resource - HbotCtrlService hbotCtrlService; + HbotCtrlService hbotCtrlService; @Resource - HbotFixPosParamMgr hbotFixPosParamMgr; + HbotFixedPosParamMgr hbotFixedPosParamMgr; @Resource MotorEnableExDriver motorEnableExDriver; @@ -129,7 +129,7 @@ public class ReactionPlatesTransmitControlerCalibration { enableModule(); pipetteCtrlDriver.zMotorMeasureDistance(); var pos = new Pos3d(hbotDriver.readPos().x, hbotDriver.readPos().y, pipetteCtrlDriver.zMotorReadMeasureDistanceResult()); - hbotFixPosParamMgr.setDropLiquidPos(pos); + hbotFixedPosParamMgr.setDropLiquidPos(pos); disableModule(); return pos; } diff --git a/src/main/java/a8k/service/app/devicectrl/calibration/TubeFeedingModulePosCalibration.java b/src/main/java/a8k/service/app/devicectrl/calibration/TubeFeedingModulePosCalibration.java index 4a43f53..f4c98ca 100644 --- a/src/main/java/a8k/service/app/devicectrl/calibration/TubeFeedingModulePosCalibration.java +++ b/src/main/java/a8k/service/app/devicectrl/calibration/TubeFeedingModulePosCalibration.java @@ -7,12 +7,16 @@ import a8k.hardware.A8kCanBusService; 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.MotorMoveZeroExDriver; import a8k.service.app.devicectrl.exdriver.TubeTransportExDriver; -import a8k.service.app.devicectrl.driver.type.MiniServoMId; import a8k.service.app.devicectrl.driver.type.StepMotorMId; import a8k.service.app.devicectrl.ctrlservice.TubeTubeFeedingCtrlService; import a8k.service.app.devicectrl.param.TubeFeedingModuleParamMgr; import a8k.service.db.type.Parameter; +import a8k.type.TubeFeedingModulePos; +import a8k.type.TubeFeedingModuleSetting; +import a8k.type.TubeHolderScanResult; +import a8k.type.ecode.AppCodeError; import a8k.type.exception.AppException; import jakarta.annotation.Resource; import org.springframework.stereotype.Component; @@ -32,31 +36,34 @@ public class TubeFeedingModulePosCalibration { @Resource TubeTubeFeedingCtrlService tubeTubeFeedingCtrlService; @Resource - TubeTransportExDriver tubeTransportExDriver; + TubeTransportExDriver tubeTransportExDriver; @Resource - MiniServoDriver miniServoDriver; + StepMotorCtrlDriver stepMotorCtrlDriver; @Resource - StepMotorCtrlDriver stepMotorCtrlDriver; + MotorEnableExDriver motorEnableExDriver; @Resource - MotorEnableExDriver motorEnableExDriver; + MotorMoveZeroExDriver motorMoveZeroExDriver; - private Integer readFeedingModXMPos() throws AppException { - stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModXM, 1); - return stepMotorCtrlDriver.stepMotorReadPosByMoveToZeroBlock(StepMotorMId.FeedingModXM, 15000); - } - @ExtApiFn(name = "获取所有坐标", group = "基础", order = 1) - public List getParams() throws AppException { - return tubeScanPosMgr.getParams(); + @ExtApiFn(name = "获取相关设定值", group = "基础", order = 1) + public List getSettings() throws AppException { + return tubeScanPosMgr.getSettings(); } + @ExtApiFn(name = "获取相关坐标", group = "基础", order = 1) + public List getPoss() throws AppException { + return tubeScanPosMgr.getPoss(); + } - - // 测试工具 @ExtApiFn(name = "归零", group = "测试工具", order = 11) public void deviceReset() throws AppException { enableModule(); - stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.FeedingModXM, 15000); + motorMoveZeroExDriver.tubeFeeddingModuleMoveToZero(); + + //预处理归零 + motorEnableExDriver.preProcessRelatedModuleEnable(true); + motorMoveZeroExDriver.preProcessModuleMoveToZero(); + motorEnableExDriver.preProcessRelatedModuleEnable(false); } @ExtApiFn(name = "使能相关模块", group = "测试工具", order = 12) @@ -70,65 +77,75 @@ public class TubeFeedingModulePosCalibration { motorEnableExDriver.preProcessRelatedModuleEnable(false); } + // + // 辅助方法 + // -// -// @ExtApiFn(name = "<平移电机>设置当前位置为<入料位置>", group = "标定试管架位置", order = 21) -// public void setTubeHolderEnterXPos() throws AppException { -// tubeScanPosMgr.setTubeHolderEnterXPos(readFeedingModXMPos()); -// } -// -// @ExtApiFn(name = "<平移电机>设置当前位置为<出料位置>", group = "标定试管架位置", order = 22) -// public void setTubeHolderExitXPos() throws AppException { -// tubeScanPosMgr.setTubeHolderExitXPos(readFeedingModXMPos()); -// } -// -// @ExtApiFn(name = "<平移电机>设置当前位置为<试管架扫描位置>", group = "标定试管架位置", order = 23) -// public void setTubeHolderScanXPos() throws AppException { -// tubeScanPosMgr.setTubeHolderScanXPos(readFeedingModXMPos()); -// } -// -// @ExtApiFn(name = "<平移电机>设置当前位置为<0号试管扫描位置>", group = "标定<试管>位置", order = 24) -// public void setTube0ScanXPos() throws AppException { -// tubeScanPosMgr.setTube0ScanXPos(readFeedingModXMPos()); -// } -// -// @ExtApiFn(name = "<平移电机>设置当前位置为<0试管高度判断位置>", group = "标定<试管>位置", order = 25) -// public void setTube0AltitJudgXPos() throws AppException { -// tubeScanPosMgr.setTube0AltitJudgXPos(readFeedingModXMPos()); -// } -// -// @ExtApiFn(name = "<平移电机>设置当前位置为<0试管存在判断位置>", group = "标定<试管>位置", order = 26) -// public void setTube0ExistJudgXPos() throws AppException { -// tubeScanPosMgr.setTube0ExistJudgXPos(readFeedingModXMPos()); -// } -// - - - - - -// @ExtApiFn(name = "夹紧试管架", group = "校验", order = 31) -// public void scanClampModClamp() throws AppException { -// tubeTransportControler.scanClampModClamp(); -// } -// -// @ExtApiFn(name = "释放试管架", group = "校验", order = 32) -// public void scanClampModRelease() throws AppException { -// tubeTransportControler.scanClampModRelease(); -// } -// -// @ExtApiFn(name = "扫描试管架", group = "校验", order = 33) -// public TubeHolderScanResult scanAll() throws AppException { -// return tubeTubeFeedingModule.scanTubeHodler(); -// } -// -// @ExtApiFn(name = "移动试管X到处理位", group = "校验", order = 33) -// public void moveTubeXToPreProcessPos(Integer xtube) throws AppException { -// tubeTubeFeedingModule.moveTubeToPreProcessPos(xtube); -// } -// -// @ExtApiFn(name = "设置<试管扫描伺服力矩(100-1000)>", group = "其他", order = 41) -// public void setTubeScanServoTorque(Integer torque) throws AppException { -// tubeScanPosMgr.setTubeScanServoTorque(torque); -// } + private Integer readFeedingModXMPos() throws AppException { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.FeedingModXM, 1); + return stepMotorCtrlDriver.stepMotorReadPosByMoveToZeroBlock(StepMotorMId.FeedingModXM, 15000); + } + + + // + // 设置 + // + + + @ExtApiFn(name = "设置试管扫描旋转舵机扭矩(0->1000)", group = "设置", order = 200) + public void setTubeScanServoTorque(Integer val) throws AppException { + tubeScanPosMgr.setParam(TubeFeedingModuleSetting.TubeScanServoTorque, val); + } + + + Integer tube01pos; + Integer tube10pos; + + @ExtApiFn(name = "标记当前位置为-试管1号位", group = "辅助设置试管间距", order = 201) + public Integer labelPosAsTube01Pos() throws AppException { + tube01pos = readFeedingModXMPos(); + disableModule(); + return tube01pos; + } + + @ExtApiFn(name = "标记当前位置为-试管10号位", group = "辅助设置试管间距", order = 202) + public Integer labelPosAsTube10Pos() throws AppException { + tube10pos = readFeedingModXMPos(); + disableModule(); + return tube10pos; + } + + @ExtApiFn(name = "计算并设置设置试管间距", group = "辅助设置试管间距", order = 203) + public Double setTubeSpacing() throws AppException { + if (tube01pos == null || tube10pos == null) { + throw new AppException(new AppCodeError("未标记试管1号位和10号位")); + } + Double spacing = (tube10pos - tube01pos) / 9.0; + tubeScanPosMgr.setParam(TubeFeedingModuleSetting.TubeSpacing, spacing); + return spacing; + } + + + // + // 标定坐标 + // + @ExtApiFn(name = "标定位置", group = "标定", order = 300) + public void calibratePos(TubeFeedingModulePos posType) throws AppException { + tubeScanPosMgr.setParam(posType, readFeedingModXMPos()); + disableModule(); + } + + // + // 校验 + // + + @ExtApiFn(name = "扫描试管架", group = "校验", order = 400) + public TubeHolderScanResult calibrateScanTubeHolder() throws AppException { + return tubeTubeFeedingCtrlService.scanTubeHodler(); + } + + @ExtApiFn(name = "移动试管到预处理位置", group = "校验", order = 401) + public void calibrateMoveTubeToPreProcessPos(Integer tubeIndex0To9) throws AppException { + tubeTubeFeedingCtrlService.moveTubeToPreProcessPos(tubeIndex0To9); + } } diff --git a/src/main/java/a8k/service/app/devicectrl/calibration/TubePreProcesPosCalibration.java b/src/main/java/a8k/service/app/devicectrl/calibration/TubePreProcesPosCalibration.java index 720d4aa..3ca5b2c 100644 --- a/src/main/java/a8k/service/app/devicectrl/calibration/TubePreProcesPosCalibration.java +++ b/src/main/java/a8k/service/app/devicectrl/calibration/TubePreProcesPosCalibration.java @@ -9,6 +9,7 @@ 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.exdriver.MotorMoveZeroExDriver; import a8k.service.app.devicectrl.param.TubePreProcesPosParamMgr; import a8k.type.exception.AppException; import jakarta.annotation.Resource; @@ -31,19 +32,14 @@ public class TubePreProcesPosCalibration { TubePreProcesCtrlService controler; @Resource MotorEnableExDriver motorEnableExDriver; + @Resource + MotorMoveZeroExDriver motorMoveZeroExDriver; //基础工具 @ExtApiFn(name = "归零", group = "测试工具", order = 1) public void deviceReset() throws AppException { enableModule(); - miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperSV); - stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModGripperZM, overtime); - miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV); - - stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModClampingM, overtime); - stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModShakeM, overtime); - stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.ShakeModShakeM, 90, overtime); - stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.ShakeModClampingM, posMgr.getShakeClampMotorReleasePos(), overtime); + motorMoveZeroExDriver.preProcessModuleMoveToZero(); } @ExtApiFn(name = "使能相关模块", group = "测试工具", order = 2) @@ -57,25 +53,17 @@ public class TubePreProcesPosCalibration { motorEnableExDriver.tubeFeedRelatedModuleEnable(false); } - // @ExtApiFn(name = "读取夹爪当前位置", group = "测试工具", order = 4) - // public Integer readGripperPos() throws AppException { - // return miniServoControler.miniServoReadPos(MiniServoMId.ShakeModGripperSV); - // } - @ExtApiFn(name = "读取所有设定值", group = "测试工具", order = 5) public TubePreProcesPosParamMgr getPoss() { return posMgr; } - // @ExtApiFn() - // GripperRedundancySpacingForTubeCap - @ExtApiFn(name = "设置夹爪试管盖冗余间距", group = "其他设置", order = 6) + @ExtApiFn(name = "设置夹爪试管盖冗余间距", group = "设置", order = 6) public void setGripperRedundancySpacingForTubeCap(Integer value) { posMgr.setGripperRedundancySpacingForTubeCap(value); } - // // 夹爪标定,校准,校验 // diff --git a/src/main/java/a8k/service/app/devicectrl/ctrlservice/HbotCtrlService.java b/src/main/java/a8k/service/app/devicectrl/ctrlservice/HbotCtrlService.java index 462396f..ba8235d 100644 --- a/src/main/java/a8k/service/app/devicectrl/ctrlservice/HbotCtrlService.java +++ b/src/main/java/a8k/service/app/devicectrl/ctrlservice/HbotCtrlService.java @@ -5,7 +5,7 @@ import a8k.hardware.type.a8kcanprotocol.A8kEcode; import a8k.service.app.devicectrl.exdriver.HbotBaseMoveExDriver; import a8k.service.app.devicectrl.driver.PipetteCtrlDriver; import a8k.service.app.devicectrl.param.HbotConsumableParamMgr; -import a8k.service.app.devicectrl.param.HbotFixPosParamMgr; +import a8k.service.app.devicectrl.param.HbotFixedPosParamMgr; import a8k.service.app.devicectrl.param.HbotSamplePosParamMgr; import a8k.type.ConsumableGroup; import a8k.type.HbotSamplePos; @@ -22,9 +22,9 @@ public class HbotCtrlService { static Logger logger = LoggerFactory.getLogger(HbotCtrlService.class); @Resource - HbotFixPosParamMgr hbotFixPosParamMgr; + HbotFixedPosParamMgr hbotFixedPosParamMgr; @Resource - HbotSamplePosParamMgr hbotSamplePosParamMgr; + HbotSamplePosParamMgr hbotSamplePosParamMgr; @Resource HbotConsumableParamMgr hbotConsumableParamMgr; @@ -73,12 +73,12 @@ public class HbotCtrlService { } public void dropTip() throws AppException { - hbotBaseMoveExDriver.hbotMoveTo(hbotFixPosParamMgr.getDropTipPos()); + hbotBaseMoveExDriver.hbotMoveTo(hbotFixedPosParamMgr.getDropTipPos()); pipetteCtrlDriver.putTipBlock(); } public void moveToDropLiquidPos() throws AppException { - hbotBaseMoveExDriver.hbotMoveTo(hbotFixPosParamMgr.getDropLiquidPos()); + hbotBaseMoveExDriver.hbotMoveTo(hbotFixedPosParamMgr.getDropLiquidPos()); } /** diff --git a/src/main/java/a8k/service/app/devicectrl/ctrlservice/TubePreProcesCtrlService.java b/src/main/java/a8k/service/app/devicectrl/ctrlservice/TubePreProcesCtrlService.java index ac58740..d651d2a 100644 --- a/src/main/java/a8k/service/app/devicectrl/ctrlservice/TubePreProcesCtrlService.java +++ b/src/main/java/a8k/service/app/devicectrl/ctrlservice/TubePreProcesCtrlService.java @@ -242,11 +242,10 @@ public class TubePreProcesCtrlService { public void putbakTubeCapAndPutbakTubeToTubeHolder() throws AppException { //移动Y轴到方式管的位置 YSVMoveToShakePos(); -// 盖盖子 - stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.ShakeModGripperZM,// - tubePreProcesPosParamMgr.getZMotorShakeTubePos() + tubePreProcesPosParamMgr.getGripperRedundancySpacingForTubeCap(), - actionOvertime); - + // 盖盖子 + stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.ShakeModGripperZM,// + tubePreProcesPosParamMgr.getZMotorShakeTubePos() + tubePreProcesPosParamMgr.getGripperRedundancySpacingForTubeCap(), + actionOvertime); //释放试管 clampingMReleaseTube(); @@ -256,7 +255,7 @@ public class TubePreProcesCtrlService { YSVMoveToTakeTubePos(); //移动到放试管的位置 stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.ShakeModGripperZM,// - tubePreProcesPosParamMgr.getZMotorTakeHTubePos() , + tubePreProcesPosParamMgr.getZMotorTakeHTubePos(), actionOvertime); //打开夹爪 gripperSVOpen(); diff --git a/src/main/java/a8k/service/app/devicectrl/exdriver/MotorMoveZeroExDriver.java b/src/main/java/a8k/service/app/devicectrl/exdriver/MotorMoveZeroExDriver.java new file mode 100644 index 0000000..6e52d0b --- /dev/null +++ b/src/main/java/a8k/service/app/devicectrl/exdriver/MotorMoveZeroExDriver.java @@ -0,0 +1,52 @@ +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.service.app.devicectrl.param.TubePreProcesPosParamMgr; +import a8k.type.exception.AppException; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Component; + +@Component +public class MotorMoveZeroExDriver { + @Resource + A8kCanBusService canBus; + @Resource + HbotDriver hbotDriver; + @Resource + PipetteCtrlDriver pipetteCtrlDriver; + @Resource + StepMotorCtrlDriver stepMotorCtrlDriver; + @Resource + MiniServoDriver miniServoDriver; + @Resource + TubePreProcesPosParamMgr tubePreProcesPosParamMgr; + + + /** + * 入料模块归零 + * @throws AppException e + */ + public void tubeFeeddingModuleMoveToZero() throws AppException { + stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.FeedingModXM, 15000); + } + + /** + * 预处理模块归零 + * @throws AppException e + */ + public void preProcessModuleMoveToZero() throws AppException { + stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModGripperZM, 5000); + miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperSV); + miniServoDriver.miniServoMoveToZeroBlock(MiniServoMId.ShakeModGripperYSV); + stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModClampingM, 5000); + stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModShakeM, 5000); + // move to default pos + } + +} diff --git a/src/main/java/a8k/service/app/devicectrl/param/HbotFixPosParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/HbotFixPosParamMgr.java deleted file mode 100644 index 7a95b48..0000000 --- a/src/main/java/a8k/service/app/devicectrl/param/HbotFixPosParamMgr.java +++ /dev/null @@ -1,82 +0,0 @@ -package a8k.service.app.devicectrl.param; - -import a8k.extapi_controler.pagecontrol.ExtApiTabConfig; -import a8k.extapi_controler.utils.ExtApiParamsTab; -import a8k.extapi_controler.utils.ExtApiTab; -import a8k.service.db.LowerDeviceParameterDBService; -import a8k.service.db.type.Parameter; -import a8k.service.db.utils.PosParameterReader; -import a8k.type.cfg.Pos3d; -import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * HBOT二维码扫描坐标参数 - */ -@Component -@ExtApiTab(cfg = ExtApiTabConfig.Hbot2DCodeScanPos) -@ExtApiParamsTab(service = HbotFixPosParamMgr.class) -public class HbotFixPosParamMgr { - static final Logger logger = LoggerFactory.getLogger(HbotFixPosParamMgr.class); - - enum Pos { - DropTipPos("丢TIP位置"), - DropLiquidPos("滴液位置"), - ; - public final String chName; - - Pos(String chName) { - this.chName = chName; - } - } - - ; - @Resource - LowerDeviceParameterDBService lowerDeviceParameterDBService; - PosParameterReader posReader = null; - - static Integer nowParaVersion = 0; - - @PostConstruct - void initialize() { - posReader = lowerDeviceParameterDBService.getReader(this.getClass()); - - for (Pos pos : Pos.values()) { - posReader.setParamChName(pos, pos.chName); - } - - - } - - public void paramReset() { - logger.info("init param"); - posReader.setParam(Pos.DropTipPos.name(), new Pos3d(0, 0, 0)); - posReader.setParam(Pos.DropLiquidPos.name(), new Pos3d(0, 0, 0)); - } - - public List getParams() { - return posReader.getParams(); - } - - public Pos3d getDropTipPos() { - return posReader.getPos(Pos.DropTipPos, Pos3d.class); - } - - public Pos3d getDropLiquidPos() { - return posReader.getPos(Pos.DropLiquidPos, Pos3d.class); - } - - public void setDropTipPos(Pos3d pos) { - posReader.setParam(Pos.DropTipPos.name(), pos); - } - - public void setDropLiquidPos(Pos3d pos) { - posReader.setParam(Pos.DropLiquidPos.name(), pos); - } -} - diff --git a/src/main/java/a8k/service/app/devicectrl/param/HbotFixedPosParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/HbotFixedPosParamMgr.java new file mode 100644 index 0000000..d1a6da0 --- /dev/null +++ b/src/main/java/a8k/service/app/devicectrl/param/HbotFixedPosParamMgr.java @@ -0,0 +1,82 @@ +package a8k.service.app.devicectrl.param; + +import a8k.extapi_controler.pagecontrol.ExtApiTabConfig; +import a8k.extapi_controler.utils.ExtApiParamsTab; +import a8k.extapi_controler.utils.ExtApiTab; +import a8k.service.db.LowerDeviceParameterDBService; +import a8k.service.db.type.Parameter; +import a8k.service.db.utils.PosParameterReader; +import a8k.type.cfg.Pos3d; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * HBOT二维码扫描坐标参数 + */ +@Component +@ExtApiTab(cfg = ExtApiTabConfig.Hbot2DCodeScanPos) +@ExtApiParamsTab(service = HbotFixedPosParamMgr.class) +public class HbotFixedPosParamMgr { + static final Logger logger = LoggerFactory.getLogger(HbotFixedPosParamMgr.class); + + enum Pos { + DropTipPos("丢TIP位置"), + DropLiquidPos("滴液位置"), + ; + public final String chName; + + Pos(String chName) { + this.chName = chName; + } + } + + ; + @Resource + LowerDeviceParameterDBService lowerDeviceParameterDBService; + PosParameterReader posReader = null; + + static Integer nowParaVersion = 0; + + @PostConstruct + void initialize() { + posReader = lowerDeviceParameterDBService.getReader(this.getClass()); + + for (Pos pos : Pos.values()) { + posReader.setParamChName(pos, pos.chName); + } + + + } + + public void paramReset() { + logger.info("init param"); + posReader.setParam(Pos.DropTipPos.name(), new Pos3d(0, 0, 0)); + posReader.setParam(Pos.DropLiquidPos.name(), new Pos3d(0, 0, 0)); + } + + public List getParams() { + return posReader.getParams(); + } + + public Pos3d getDropTipPos() { + return posReader.getPos(Pos.DropTipPos, Pos3d.class); + } + + public Pos3d getDropLiquidPos() { + return posReader.getPos(Pos.DropLiquidPos, Pos3d.class); + } + + public void setDropTipPos(Pos3d pos) { + posReader.setParam(Pos.DropTipPos.name(), pos); + } + + public void setDropLiquidPos(Pos3d pos) { + posReader.setParam(Pos.DropLiquidPos.name(), pos); + } +} + diff --git a/src/main/java/a8k/service/app/devicectrl/param/TubeFeedingModuleParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/TubeFeedingModuleParamMgr.java index 790a925..aa3854d 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/TubeFeedingModuleParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/TubeFeedingModuleParamMgr.java @@ -3,7 +3,8 @@ package a8k.service.app.devicectrl.param; import a8k.service.db.LowerDeviceParameterDBService; import a8k.service.db.type.Parameter; import a8k.service.db.utils.PosParameterReader; -import a8k.type.TubeFeedingModuleParam; +import a8k.type.TubeFeedingModuleSetting; +import a8k.type.TubeFeedingModulePos; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; import org.slf4j.Logger; @@ -26,102 +27,105 @@ public class TubeFeedingModuleParamMgr { @PostConstruct void initialize() { posReader = lowerDeviceParameterDBService.getReader(this.getClass()); - for (TubeFeedingModuleParam tubeFeedingModuleParam : TubeFeedingModuleParam.values()) { - posReader.setParamChName(tubeFeedingModuleParam, tubeFeedingModuleParam.chName); + for (TubeFeedingModulePos pos : TubeFeedingModulePos.values()) { + posReader.setParamChName(pos, pos.chName); + } + for (TubeFeedingModuleSetting param : TubeFeedingModuleSetting.values()) { + posReader.setParamChName(param, param.chName); } } - // if (!nowParaVersion.equals(paraVersion)) { - // logger.info("init param"); - // posReader.setParam(POS.TubeHolderEnterXPos, -46); - // posReader.setParam(POS.TubeHolderExitXPos, 3975); - // posReader.setParam(POS.TubeHolderScanXPos, 2202); - // posReader.setParam(POS.Tube0ScanXPos, 505); - // posReader.setParam(POS.Tube0AltitJudgXPos, 505); - // posReader.setParam(POS.Tube0ExistJudgXPos, 300); - // posReader.setParam(POS.Tube0PreProcessXPos, 1225); - // posReader.setParam(POS.TubeScanServoTorque, 500); - // } + public List getSettings() { + return posReader.getParams(TubeFeedingModuleSetting.values()); + } + public List getPoss() { + return posReader.getParams(TubeFeedingModulePos.values()); + } - public List getParams() { - return posReader.getParams(); + public void setParam(TubeFeedingModulePos param, Object obj) { + posReader.setParam(param, obj); } - public void setParam(TubeFeedingModuleParam param, Object obj) { + public void setParam(TubeFeedingModuleSetting param, Object obj) { posReader.setParam(param, obj); } + /** + * 获取管子预处理位置 + * @param tubeIndex 管子序号 + * @return 坐标 + */ public Integer getTubePreProcessPos(Integer tubeIndex) { - Integer startPos = posReader.getPos(TubeFeedingModuleParam.Tube0PreProcessXPos, Integer.class); - Integer spacing = posReader.getPos(TubeFeedingModuleParam.TubeSpacing, Integer.class); - return startPos + spacing * tubeIndex; + Integer startPos = posReader.getPos(TubeFeedingModulePos.Tube0PreProcessPos, Integer.class); + Double spacing = posReader.getPos(TubeFeedingModuleSetting.TubeSpacing, Double.class); + return (int)(startPos + spacing * tubeIndex); } + /** + * 获取试管扫描位置 + * @param tubeIndex 管子序号 + * @return 坐标 + */ public Integer getTubeScanPos(Integer tubeIndex) { - Integer startPos = posReader.getPos(TubeFeedingModuleParam.Tube0ScanXPos, Integer.class); - Integer spacing = posReader.getPos(TubeFeedingModuleParam.TubeSpacing, Integer.class); - return startPos + spacing * tubeIndex; + Integer startPos = posReader.getPos(TubeFeedingModulePos.Tube0ScanPos, Integer.class); + Double spacing = posReader.getPos(TubeFeedingModuleSetting.TubeSpacing, Double.class); + return (int)(startPos + spacing * tubeIndex); } + /** + * 获取试管高度判断位置 + * @param tubeIndex 管子序号 + * @return 坐标 + */ public Integer getTubeAltitJudgPos(Integer tubeIndex) { - Integer startPos = posReader.getPos(TubeFeedingModuleParam.Tube0AltitJudgXPos, Integer.class); - Integer spacing = posReader.getPos(TubeFeedingModuleParam.TubeSpacing, Integer.class); - return startPos + spacing * tubeIndex; + Integer startPos = posReader.getPos(TubeFeedingModulePos.Tube0AltitJudgPos, Integer.class); + Double spacing = posReader.getPos(TubeFeedingModuleSetting.TubeSpacing, Double.class); + return (int)(startPos + spacing * tubeIndex); } + /** + * 获取试管存在判断位置 + * @param tubeIndex 管子序号 + * @return 坐标 + */ public Integer getTubeExistJudgPos(Integer tubeIndex) { - Integer startPos = posReader.getPos(TubeFeedingModuleParam.Tube0ExistJudgXPos, Integer.class); - Integer spacing = posReader.getPos(TubeFeedingModuleParam.TubeSpacing, Integer.class); - return startPos + spacing * tubeIndex; + Integer startPos = posReader.getPos(TubeFeedingModulePos.Tube0ExistJudgPos, Integer.class); + Double spacing = posReader.getPos(TubeFeedingModuleSetting.TubeSpacing, Double.class); + return (int)(startPos + spacing * tubeIndex); } + /** + * 获取试管架进入位置 + * @return X轴坐标 + */ public Integer getTubeHolderEnterXPos() { - return posReader.getPos(TubeFeedingModuleParam.TubeHolderEnterXPos, Integer.class); + return posReader.getPos(TubeFeedingModulePos.TubeHolderEnterXPos, Integer.class); } + /** + * 获取试管架出口位置 + * @return X轴坐标 + */ public Integer getTubeHolderExitXPos() { - return posReader.getPos(TubeFeedingModuleParam.TubeHolderExitXPos, Integer.class); + return posReader.getPos(TubeFeedingModulePos.TubeHolderExitXPos, Integer.class); } + /** + * 获取试管架扫描位置 + * @return X轴坐标 + */ public Integer getTubeHolderScanXPos() { - return posReader.getPos(TubeFeedingModuleParam.TubeHolderScanXPos, Integer.class); + return posReader.getPos(TubeFeedingModulePos.TubeHolderScanXPos, Integer.class); } + /** + * 获取试管架扫描位置 + * @return X轴坐标 + */ public Integer getTubeScanServoTorque() { - return posReader.getPos(TubeFeedingModuleParam.TubeScanServoTorque, Integer.class); + return posReader.getPos(TubeFeedingModuleSetting.TubeScanServoTorque, Integer.class); } - - // public void setTube0PreProcessXPos(Integer value) {posReader.setParam(TubeFeedingModuleParam.Tube0PreProcessXPos, value);} - // - // public void setTubeHolderEnterXPos(Integer value) { - // posReader.setParam(TubeFeedingModuleParam.TubeHolderEnterXPos, value); - // } - // - // public void setTubeHolderExitXPos(Integer value) { - // posReader.setParam(TubeFeedingModuleParam.TubeHolderExitXPos, value); - // } - // - // public void setTubeHolderScanXPos(Integer value) { - // posReader.setParam(TubeFeedingModuleParam.TubeHolderScanXPos, value); - // } - // - // public void setTube0ScanXPos(Integer value) { - // posReader.setParam(TubeFeedingModuleParam.Tube0ScanXPos, value); - // } - // - // public void setTube0AltitJudgXPos(Integer value) { - // posReader.setParam(TubeFeedingModuleParam.Tube0AltitJudgXPos, value); - // } - // - // public void setTube0ExistJudgXPos(Integer value) { - // posReader.setParam(TubeFeedingModuleParam.Tube0ExistJudgXPos, value); - // } - // - // public void setTubeScanServoTorque(Integer value) { - // posReader.setParam(TubeFeedingModuleParam.TubeScanServoTorque, value); - // } - } diff --git a/src/main/java/a8k/service/app/devicectrl/param/TubePreProcesPosParamMgr.java b/src/main/java/a8k/service/app/devicectrl/param/TubePreProcesPosParamMgr.java index 897f2eb..534e9ae 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/TubePreProcesPosParamMgr.java +++ b/src/main/java/a8k/service/app/devicectrl/param/TubePreProcesPosParamMgr.java @@ -24,7 +24,7 @@ public class TubePreProcesPosParamMgr { ShakeClampMotorClampPos("试管夹紧位"),// ShakeClampMotorReleasePos("摇匀臂"),// - GripperRedundancySpacingForTubeCap("夹爪试管帽冗余间距"),// + GripperRedundancySpacingForTubeCap("夹爪试管帽垂直冗余"),// ; public final String chName; diff --git a/src/main/java/a8k/service/db/utils/PosParameterReader.java b/src/main/java/a8k/service/db/utils/PosParameterReader.java index e0db981..39f0c46 100644 --- a/src/main/java/a8k/service/db/utils/PosParameterReader.java +++ b/src/main/java/a8k/service/db/utils/PosParameterReader.java @@ -3,6 +3,7 @@ package a8k.service.db.utils; import a8k.service.db.LowerDeviceParameterDBService; import a8k.service.db.type.Parameter; +import java.util.ArrayList; import java.util.List; public class PosParameterReader { @@ -48,9 +49,16 @@ public class PosParameterReader { } - - public List getParams() { return lowerDeviceParameterDBService.getParams(service.getSimpleName()); } + + public List getParams(Enum[] etable) { + List parameters = new ArrayList<>(); + for (Enum e : etable) { + Parameter parameter = lowerDeviceParameterDBService.getParam(service.getSimpleName(), e.name()); + parameters.add(parameter); + } + return parameters; + } } diff --git a/src/main/java/a8k/type/TubeFeedingModuleParam.java b/src/main/java/a8k/type/TubeFeedingModuleParam.java deleted file mode 100644 index 72a0747..0000000 --- a/src/main/java/a8k/type/TubeFeedingModuleParam.java +++ /dev/null @@ -1,19 +0,0 @@ -package a8k.type; - -public enum TubeFeedingModuleParam { - TubeHolderEnterXPos("入料位置"), // - TubeHolderExitXPos("出料位置"), // - TubeHolderScanXPos("试管架扫描位置"), // - Tube0ScanXPos("01号试管扫描位置"), // - Tube0AltitJudgXPos("01试管高度判断位置"), // - Tube0ExistJudgXPos("01试管存在判断位置"), // - Tube0PreProcessXPos("01试管预处理位置"), // - TubeScanServoTorque("试管扫描伺服力矩"), // - TubeSpacing("试管间距"), // - ; - public final String chName; - - TubeFeedingModuleParam(String chName) { - this.chName = chName; - } -} diff --git a/src/main/java/a8k/type/TubeFeedingModulePos.java b/src/main/java/a8k/type/TubeFeedingModulePos.java new file mode 100644 index 0000000..a958c01 --- /dev/null +++ b/src/main/java/a8k/type/TubeFeedingModulePos.java @@ -0,0 +1,17 @@ +package a8k.type; + +public enum TubeFeedingModulePos { + TubeHolderEnterXPos("入料位置"), // + TubeHolderExitXPos("出料位置"), // + TubeHolderScanXPos("试管架扫描位置"), // + Tube0ScanPos("01号试管扫描位置"), // + Tube0AltitJudgPos("01试管高度判断位置"), // + Tube0ExistJudgPos("01试管存在判断位置"), // + Tube0PreProcessPos("01试管预处理位置"), // + ; + public final String chName; + + TubeFeedingModulePos(String chName) { + this.chName = chName; + } +} diff --git a/src/main/java/a8k/type/TubeFeedingModuleSetting.java b/src/main/java/a8k/type/TubeFeedingModuleSetting.java new file mode 100644 index 0000000..baf7de2 --- /dev/null +++ b/src/main/java/a8k/type/TubeFeedingModuleSetting.java @@ -0,0 +1,12 @@ +package a8k.type; + +public enum TubeFeedingModuleSetting { + TubeScanServoTorque("试管扫描伺服力矩"), // + TubeSpacing("试管间距"), // + ; + public final String chName; + + TubeFeedingModuleSetting(String chName) { + this.chName = chName; + } +}