From 7a623a118705b20c459931d82fc8e08aeb83e375 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Thu, 17 Apr 2025 20:04:52 +0800 Subject: [PATCH] update --- .../app/service/lowerctrl/HbotMoveCtrlService.java | 12 ++ .../service/lowerctrl/HbotMoveExCtrlService.java | 19 +++ .../java/a8k/extui/controler/ExtApiControler.java | 2 +- .../java/a8k/extui/page/driver/HbotCtrlPage.java | 6 +- .../extui/page/driver/OutputIOCtrlDebugPage.java | 2 +- .../page/extapp/P02A8kTemperaturaVerfication.java | 4 +- .../debug_assistant/IDCardDataGeneratorPage.java | 2 +- .../debug_assistant/VirtualEventGeneratorPage.java | 2 +- .../page/extapp/tools/MoterMoveUtilsPage.java | 2 +- .../P21HbotLittleBSPosCalibrationPage.java | 36 +++--- .../P23HbotLargeBottleBSPosCalibrationPage.java | 12 +- .../extui/page/measurement/HbotPosMeasurePage.java | 20 ++- .../P30InfeedAndPreProcessPosVerificationPage.java | 10 +- .../verification/P32HbotPosVerificationPage.java | 8 ++ src/main/java/a8k/extui/type/ExUIFunction.java | 12 +- src/main/java/a8k/extui/type/ExtUIPageCfg.java | 39 +++++- src/main/resources/db/zapp_a8k_pos_parameter.csv | 144 +++++++++++---------- 17 files changed, 212 insertions(+), 120 deletions(-) diff --git a/src/main/java/a8k/app/service/lowerctrl/HbotMoveCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/HbotMoveCtrlService.java index 461b506..d9b3fe8 100644 --- a/src/main/java/a8k/app/service/lowerctrl/HbotMoveCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/HbotMoveCtrlService.java @@ -50,6 +50,18 @@ public class HbotMoveCtrlService { hbotDriver.enable(enable); } + /** + * 移动到观察位置(为了校准使用,Z轴不归零) + * @param targetPos + * @param zpos + * @throws AppException + */ + public void moveToObservationPos(Pos2d targetPos, Integer zpos) throws AppException { + logger.info("hbot move to observation pos:{}", targetPos); + hbotDriver.moveToBlock(targetPos.x, targetPos.y); + pipetteCtrlDriver.zMotorMoveToBlock(zpos); + } + public void hbotMoveTo(Pos3d targetPos) throws AppException { logger.info("hbot move to:{}", targetPos); diff --git a/src/main/java/a8k/app/service/lowerctrl/HbotMoveExCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/HbotMoveExCtrlService.java index 1a50dd9..d4435e9 100644 --- a/src/main/java/a8k/app/service/lowerctrl/HbotMoveExCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/HbotMoveExCtrlService.java @@ -1,5 +1,6 @@ package a8k.app.service.lowerctrl; +import a8k.app.constant.GearBacklashConstant; import a8k.app.service.param.hbotpos.Hbot2DCodeScanParamMgr; import a8k.app.type.a8k.ConsumableGroup; import a8k.app.type.a8k.pos.TipGroupPos; @@ -58,6 +59,21 @@ public class HbotMoveExCtrlService { pipetteCtrlDriver.zMotorMoveToZeroPointQuickBlock(); } + public void moveToTakeTipObservationPos(TipGroupPos tipGroupPos, Integer index, Integer zpos) throws AppException { + log.info("moveToTakeTipObservationPos groupId:{} index:{}", tipGroupPos.ordinal(), index); + + Pos3d tipPos = hbotConsumableExParamMgr.getTipPos(tipGroupPos, index); + tipPos.z = zpos; + Pos3d nowPos = getPos(); + if (nowPos.z.equals(tipPos.z)) { + hbotDriver.moveToBlock(tipPos.x - GearBacklashConstant.HBOT_GEAR_BACKLASH, tipPos.y); + hbotDriver.moveToBlock(tipPos.x, tipPos.y); + return; + } else { + hbotMoveCtrlService.hbotMoveTo(tipPos); + } + } + public void zAxisMoveToBlock(Integer z) throws AppException { pipetteCtrlDriver.zMotorMoveToBlock(z); } @@ -104,6 +120,7 @@ public class HbotMoveExCtrlService { return pipetteCtrlDriver.isHasTip(); } + public void takeTip(TipPos pos) throws AppException { Assert.isTrue(pos != null, "TipPos is null"); takeTip(pos.group, pos.index); @@ -197,6 +214,8 @@ public class HbotMoveExCtrlService { hbotMoveCtrlService.hbotMoveTo(hbotConsumableExParamMgr.getLittleBufferSamplePos(group, off)); } + + // public void moveToProbeSubstanceSamplePos(ConsumableGroup group, Integer off) throws AppException { // hbotBaseMoveExDriver.hbotMoveTo(hbotConsumableParamMgr.getProbeSubstanceSamplePos(group, off)); // } diff --git a/src/main/java/a8k/extui/controler/ExtApiControler.java b/src/main/java/a8k/extui/controler/ExtApiControler.java index c9627ad..5be427b 100644 --- a/src/main/java/a8k/extui/controler/ExtApiControler.java +++ b/src/main/java/a8k/extui/controler/ExtApiControler.java @@ -24,7 +24,7 @@ import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Map; +import java.util.Map; @Slf4j @Controller diff --git a/src/main/java/a8k/extui/page/driver/HbotCtrlPage.java b/src/main/java/a8k/extui/page/driver/HbotCtrlPage.java index e495611..fae6e94 100644 --- a/src/main/java/a8k/extui/page/driver/HbotCtrlPage.java +++ b/src/main/java/a8k/extui/page/driver/HbotCtrlPage.java @@ -154,18 +154,18 @@ public class HbotCtrlPage { page.addFunction("后", this::moveBackward); page.addFunction("左", this::moveLeft); page.addFunction("右", this::moveRight); - page.addFunction("移动到", this::moveTo).setParamVal("x", 0).setParamVal("y", 0); + page.addFunction("移动到", this::moveTo).setParamVal("x", ()->0).setParamVal("y",()-> 0); page.newGroup("Z轴"); page.addFunction("设置Z轴相对移动距离", this::setzMotorMoveByDistance).setParamVal("distance", () -> zMotorMoveByDistance); page.addFunction("上", this::zmoveUp); page.addFunction("下", this::zmoveDown); - page.addFunction("移动到", this::zMotorMoveTo).setParamVal("z", 0); + page.addFunction("移动到", this::zMotorMoveTo).setParamVal("z", ()->0); page.newGroup("移动到"); page.addFunction("移动到", this::measurementMoveTo); page.addFunction("移动到", this::measurementMoveTo); - page.addFunction("移动到", this::measurementMoveTo).setParamVal("x", readPosNoEx().x).setParamVal("y", readPosNoEx().y).setParamVal("z", readPosNoEx().z); + page.addFunction("移动到", this::measurementMoveTo).setParamVal("x", ()->readPosNoEx().x).setParamVal("y",()-> readPosNoEx().y).setParamVal("z", ()->readPosNoEx().z); extApiPageMgr.addPage(page); } diff --git a/src/main/java/a8k/extui/page/driver/OutputIOCtrlDebugPage.java b/src/main/java/a8k/extui/page/driver/OutputIOCtrlDebugPage.java index 05a4e5b..0dfd43b 100644 --- a/src/main/java/a8k/extui/page/driver/OutputIOCtrlDebugPage.java +++ b/src/main/java/a8k/extui/page/driver/OutputIOCtrlDebugPage.java @@ -22,7 +22,7 @@ public class OutputIOCtrlDebugPage { @PostConstruct void init() { var page = extApiPageMgr.newPage(this); - page.addFunction("废料仓光栅控制", this::setIOState).setParamVal("state", true); + page.addFunction("废料仓光栅控制", this::setIOState).setParamVal("state", ()->true); extApiPageMgr.addPage(page); } } diff --git a/src/main/java/a8k/extui/page/extapp/P02A8kTemperaturaVerfication.java b/src/main/java/a8k/extui/page/extapp/P02A8kTemperaturaVerfication.java index f61a34a..f0fedcc 100644 --- a/src/main/java/a8k/extui/page/extapp/P02A8kTemperaturaVerfication.java +++ b/src/main/java/a8k/extui/page/extapp/P02A8kTemperaturaVerfication.java @@ -71,9 +71,9 @@ public class P02A8kTemperaturaVerfication { page.newGroup("基础"); page.addFunction("设置孵育盘温度偏移", this::setIncubatorBoxTemperatureOff) - .setParamVal("offset", temperatureCtrlParamMgr.getParam(TemperatureCtrlParam.IncubatorTCMTempOffset)); + .setParamVal("offset", ()->temperatureCtrlParamMgr.getParam(TemperatureCtrlParam.IncubatorTCMTempOffset)); page.addFunction("设置板夹仓温度偏移", this::setPlatesBoxTCMTempOffset) - .setParamVal("offset", temperatureCtrlParamMgr.getParam(TemperatureCtrlParam.PlatesBoxTCMTempOffset)); + .setParamVal("offset", ()->temperatureCtrlParamMgr.getParam(TemperatureCtrlParam.PlatesBoxTCMTempOffset)); page.newGroup("操作"); page.addFunction("启动温度控制", this::startCtrl); diff --git a/src/main/java/a8k/extui/page/extapp/debug_assistant/IDCardDataGeneratorPage.java b/src/main/java/a8k/extui/page/extapp/debug_assistant/IDCardDataGeneratorPage.java index 864d468..39cd68c 100644 --- a/src/main/java/a8k/extui/page/extapp/debug_assistant/IDCardDataGeneratorPage.java +++ b/src/main/java/a8k/extui/page/extapp/debug_assistant/IDCardDataGeneratorPage.java @@ -69,7 +69,7 @@ public class IDCardDataGeneratorPage { public void init() { var page = extApiPageMgr.newPage(this); page.addFunction("保存当前插入的ID卡信息", this::saveMountedProjInfoCard); - page.addFunction("创建并保存ID卡", this::addProjFakeProjInfoCard).setParamVal("projids", "1"); + page.addFunction("创建并保存ID卡", this::addProjFakeProjInfoCard).setParamVal("projids", ()->"1"); page.addFunction("创建并保存ID卡(所有项目)", this::addAllProjFakeProjInfoCard); extApiPageMgr.addPage(page); } diff --git a/src/main/java/a8k/extui/page/extapp/debug_assistant/VirtualEventGeneratorPage.java b/src/main/java/a8k/extui/page/extapp/debug_assistant/VirtualEventGeneratorPage.java index cd938dc..636f5cd 100644 --- a/src/main/java/a8k/extui/page/extapp/debug_assistant/VirtualEventGeneratorPage.java +++ b/src/main/java/a8k/extui/page/extapp/debug_assistant/VirtualEventGeneratorPage.java @@ -71,7 +71,7 @@ public class VirtualEventGeneratorPage { ExtUIPageCfg page = new ExtUIPageCfg(this); page.addFunction("构建弹窗事件", this::buildInfoPromoptEvent); page.addFunction("构造消息", this::pushMessageBoxEvent) - .setParamVal("info", "测试消息"); + .setParamVal("info", ()->"测试消息"); page.addFunction("构造TubeHolderUpdateEvent", this::pushTubeHolderUpdateEvent); extApiPageMgr.addPage(page); } diff --git a/src/main/java/a8k/extui/page/extapp/tools/MoterMoveUtilsPage.java b/src/main/java/a8k/extui/page/extapp/tools/MoterMoveUtilsPage.java index 4afb51d..689259a 100644 --- a/src/main/java/a8k/extui/page/extapp/tools/MoterMoveUtilsPage.java +++ b/src/main/java/a8k/extui/page/extapp/tools/MoterMoveUtilsPage.java @@ -39,7 +39,7 @@ public class MoterMoveUtilsPage { page.newGroup("摇匀模组-试管夹紧电机"); page.addFunction("夹紧一点", this::clampALittle).setParamVal("dpos", () -> 5); - page.addFunction("松开一点", this::unclampALittle).setParamVal("dpos", 5); + page.addFunction("松开一点", this::unclampALittle).setParamVal("dpos", ()->5); extApiPageMgr.addPage(page); diff --git a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P21HbotLittleBSPosCalibrationPage.java b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P21HbotLittleBSPosCalibrationPage.java index 2b5c9b8..0b8d8e1 100644 --- a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P21HbotLittleBSPosCalibrationPage.java +++ b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P21HbotLittleBSPosCalibrationPage.java @@ -72,36 +72,36 @@ public class P21HbotLittleBSPosCalibrationPage { var page = extApiPageMgr.newPage(this); page.newGroup("公共"); page.addFunction("设置耗材组之间间距", this::setGroupDxAndDy). - setParamVal("dx", hbotLittleBSPosMgr.getParam(HbotLittleBSPos.GroupDX, Double.class)). - setParamVal("dy", hbotLittleBSPosMgr.getParam(HbotLittleBSPos.GroupDY, Double.class)); + setParamVal("dx", ()->hbotLittleBSPosMgr.getParam(HbotLittleBSPos.GroupDX, Double.class)). + setParamVal("dy", ()->hbotLittleBSPosMgr.getParam(HbotLittleBSPos.GroupDY, Double.class)); page.newGroup("小瓶缓冲液"); page.addFunction("设置G0P0坐标", this::setLittleBufferG0P00). - setParamVal("x", hbotLittleBSPosMgr.getParam(HbotLittleBSPos.LittleBufferGroup0_000Pos, Pos2d.class).x). - setParamVal("y", hbotLittleBSPosMgr.getParam(HbotLittleBSPos.LittleBufferGroup0_000Pos, Pos2d.class).y); + setParamVal("x", ()->hbotLittleBSPosMgr.getParam(HbotLittleBSPos.LittleBufferGroup0_000Pos, Pos2d.class).x). + setParamVal("y", ()->hbotLittleBSPosMgr.getParam(HbotLittleBSPos.LittleBufferGroup0_000Pos, Pos2d.class).y); page.addFunction("设置X间距Y间距", this::setLittleBufferDXDY). - setParamVal("dx", hbotLittleBSPosMgr.getParam(HbotLittleBSPos.LittleBufferDX, Double.class)). - setParamVal("dy", hbotLittleBSPosMgr.getParam(HbotLittleBSPos.LittleBufferDY, Double.class)); + setParamVal("dx", ()->hbotLittleBSPosMgr.getParam(HbotLittleBSPos.LittleBufferDX, Double.class)). + setParamVal("dy", ()->hbotLittleBSPosMgr.getParam(HbotLittleBSPos.LittleBufferDY, Double.class)); page.addFunction("设置刺破XY附加距离", this::setLittleBSPierceXYAppendDistance). - setParamVal("distance", hbotLittleBSPosMgr.getParam(HbotLittleBSPos.LittleBSPierceXYAppendDistance, Double.class)); - page.addFunction("设置取样Z坐标", this::setLittleBSSampleZPos). - setParamVal("z", hbotLittleBSPosMgr.getParam(HbotLittleBSPos.LittleBSSampleZPos, Integer.class)); - page.addFunction("设置刺破Z坐标", this::setLittleBSPierceZPos). - setParamVal("z", hbotLittleBSPosMgr.getParam(HbotLittleBSPos.LittleBSPierceZPos, Integer.class)); + setParamVal("distance", ()->hbotLittleBSPosMgr.getParam(HbotLittleBSPos.LittleBSPierceXYAppendDistance, Double.class)); + page.addFunction("设置[取样]Z坐标", this::setLittleBSSampleZPos). + setParamVal("z", ()->hbotLittleBSPosMgr.getParam(HbotLittleBSPos.LittleBSSampleZPos, Integer.class)); + page.addFunction("设置[刺破]Z坐标", this::setLittleBSPierceZPos). + setParamVal("z", ()->hbotLittleBSPosMgr.getParam(HbotLittleBSPos.LittleBSPierceZPos, Integer.class)); page.newGroup("探测物质"); page.addFunction("设置G0P0坐标", this::setProbeSubstanceG0P00). - setParamVal("x", hbotLittleBSPosMgr.getParam(HbotLittleBSPos.ProbeSubstanceGroup0_000Pos, Pos2d.class).x). - setParamVal("y", hbotLittleBSPosMgr.getParam(HbotLittleBSPos.ProbeSubstanceGroup0_000Pos, Pos2d.class).y); + setParamVal("x", ()->hbotLittleBSPosMgr.getParam(HbotLittleBSPos.ProbeSubstanceGroup0_000Pos, Pos2d.class).x). + setParamVal("y", ()->hbotLittleBSPosMgr.getParam(HbotLittleBSPos.ProbeSubstanceGroup0_000Pos, Pos2d.class).y); page.addFunction("设置X间距Y间距", this::setProbeSubstanceDXDY). - setParamVal("dx", hbotLittleBSPosMgr.getParam(HbotLittleBSPos.ProbeSubstanceDX, Double.class)). - setParamVal("dy", hbotLittleBSPosMgr.getParam(HbotLittleBSPos.ProbeSubstanceDY, Double.class)); + setParamVal("dx", ()->hbotLittleBSPosMgr.getParam(HbotLittleBSPos.ProbeSubstanceDX, Double.class)). + setParamVal("dy", ()->hbotLittleBSPosMgr.getParam(HbotLittleBSPos.ProbeSubstanceDY, Double.class)); page.addFunction("设置刺破XY附加距离", this::setProbeSubstancePierceXYAppendDistance). - setParamVal("distance", hbotLittleBSPosMgr.getParam(HbotLittleBSPos.ProbeSubstancePierceXYAppendDistance, Double.class)); + setParamVal("distance", ()->hbotLittleBSPosMgr.getParam(HbotLittleBSPos.ProbeSubstancePierceXYAppendDistance, Double.class)); page.addFunction("设置取样Z坐标", this::setProbeSubstanceSampleZPos). - setParamVal("z", hbotLittleBSPosMgr.getParam(HbotLittleBSPos.ProbeSubstanceSampleZPos, Integer.class)); + setParamVal("z", ()->hbotLittleBSPosMgr.getParam(HbotLittleBSPos.ProbeSubstanceSampleZPos, Integer.class)); page.addFunction("设置刺破Z坐标", this::setProbeSubstancePierceZPos). - setParamVal("z", hbotLittleBSPosMgr.getParam(HbotLittleBSPos.ProbeSubstancePierceZPos, Integer.class)); + setParamVal("z", ()->hbotLittleBSPosMgr.getParam(HbotLittleBSPos.ProbeSubstancePierceZPos, Integer.class)); extApiPageMgr.addPage(page); diff --git a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P23HbotLargeBottleBSPosCalibrationPage.java b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P23HbotLargeBottleBSPosCalibrationPage.java index bf69d31..51a1c8a 100644 --- a/src/main/java/a8k/extui/page/extsetting/pos_calibration/P23HbotLargeBottleBSPosCalibrationPage.java +++ b/src/main/java/a8k/extui/page/extsetting/pos_calibration/P23HbotLargeBottleBSPosCalibrationPage.java @@ -43,18 +43,18 @@ public class P23HbotLargeBottleBSPosCalibrationPage { var page = extApiPageMgr.newPage(this); page.newGroup("坐标设置"); page.addFunction("设置0号耗材坐标", this::setConsumable0Pos) - .setParamVal("x", hbotLargeBottleBSPosMgr.getParam(HbotLargeBottleBSPos.LargeBuffer_0Pos, Pos2d.class).x) - .setParamVal("y", hbotLargeBottleBSPosMgr.getParam(HbotLargeBottleBSPos.LargeBuffer_0Pos, Pos2d.class).y); + .setParamVal("x", ()->hbotLargeBottleBSPosMgr.getParam(HbotLargeBottleBSPos.LargeBuffer_0Pos, Pos2d.class).x) + .setParamVal("y", ()->hbotLargeBottleBSPosMgr.getParam(HbotLargeBottleBSPos.LargeBuffer_0Pos, Pos2d.class).y); page.addFunction("设置LLD开始Z轴位置", this::setLLDStartZAxisPos) - .setParamVal("z", hbotLargeBottleBSPosMgr.getParam(HbotLargeBottleBSPos.LargeBottleBufferLLDStartZAxisPos, Double.class).intValue()); + .setParamVal("z", ()->hbotLargeBottleBSPosMgr.getParam(HbotLargeBottleBSPos.LargeBottleBufferLLDStartZAxisPos, Double.class).intValue()); page.addFunction("设置瓶底Z轴位置", this::setBottomZAxisPos) - .setParamVal("z", hbotLargeBottleBSPosMgr.getParam(HbotLargeBottleBSPos.LargeBottleBufferBottomZAxisPos, Double.class).intValue()); + .setParamVal("z", ()->hbotLargeBottleBSPosMgr.getParam(HbotLargeBottleBSPos.LargeBottleBufferBottomZAxisPos, Double.class).intValue()); page.newGroup("常量设置"); page.addFunction("设置Dx", this::setConsumableDX) - .setParamVal("dx", hbotLargeBottleBSPosMgr.getParam(HbotLargeBottleBSPos.LargeBuffer_DX, Double.class)); + .setParamVal("dx", ()->hbotLargeBottleBSPosMgr.getParam(HbotLargeBottleBSPos.LargeBuffer_DX, Double.class)); page.addFunction("设置Dy", this::setConsumableDY) - .setParamVal("dy", hbotLargeBottleBSPosMgr.getParam(HbotLargeBottleBSPos.LargeBuffer_DY, Double.class)); + .setParamVal("dy", ()->hbotLargeBottleBSPosMgr.getParam(HbotLargeBottleBSPos.LargeBuffer_DY, Double.class)); extApiPageMgr.addPage(page); } diff --git a/src/main/java/a8k/extui/page/measurement/HbotPosMeasurePage.java b/src/main/java/a8k/extui/page/measurement/HbotPosMeasurePage.java index f136392..eb7e960 100644 --- a/src/main/java/a8k/extui/page/measurement/HbotPosMeasurePage.java +++ b/src/main/java/a8k/extui/page/measurement/HbotPosMeasurePage.java @@ -148,6 +148,17 @@ public class HbotPosMeasurePage { pipetteCtrlDriver.zMotorMoveToBlock(z); } + public void measurementMoveTo2(Integer bx, Integer by, Double dx, Double dy, Integer xoff, Integer yoff, Integer z) throws AppException { + hbotDriver.enable(1); + pipetteCtrlDriver.zMotorEnable(1); + pipetteCtrlDriver.zMotorMoveToBlock(0); + Integer x = bx + (int) (dx * xoff); + Integer y = by + (int) (dy * yoff); + hbotDriver.moveToBlock(x - GearBacklashConstant.HBOT_GEAR_BACKLASH, y); + hbotDriver.moveToBlock(x, y); + pipetteCtrlDriver.zMotorMoveToBlock(z); + } + @PostConstruct public void init() { @@ -155,7 +166,7 @@ public class HbotPosMeasurePage { page.newGroup("基础"); page.addFunction("HBOT归零", this::enableMeasurment); - page.addFunction("测量当前位置",this::measurementCurrentPos); + page.addFunction("测量当前位置", this::measurementCurrentPos); page.newGroup("Hbot"); page.addFunction("设置相对移动距离", this::setMoveByDistance).setParamVal("distance", () -> moveByDistance); @@ -163,13 +174,13 @@ public class HbotPosMeasurePage { page.addFunction("后", this::moveBackward); page.addFunction("左", this::moveLeft); page.addFunction("右", this::moveRight); - page.addFunction("移动到", this::moveTo).setParamVal("x", 0).setParamVal("y", 0); + page.addFunction("移动到", this::moveTo).setParamVal("x",()-> 0).setParamVal("y",()-> 0); page.newGroup("Z轴"); page.addFunction("设置Z轴相对移动距离", this::setzMotorMoveByDistance).setParamVal("distance", () -> zMotorMoveByDistance); page.addFunction("上", this::zmoveUp); page.addFunction("下", this::zmoveDown); - page.addFunction("移动到", this::zMotorMoveTo).setParamVal("z", 0); + page.addFunction("移动到", this::zMotorMoveTo).setParamVal("z",()-> 0); page.newGroup("扫码"); page.addFunction("打开扫码灯", this::openCodeScanner); @@ -178,8 +189,7 @@ public class HbotPosMeasurePage { page.newGroup("移动到"); page.addFunction("移动到", this::measurementMoveTo); - page.addFunction("移动到", this::measurementMoveTo); - page.addFunction("移动到", this::measurementMoveTo); + page.addFunction("移动到", this::measurementMoveTo2); extApiPageMgr.addPage(page); } diff --git a/src/main/java/a8k/extui/page/test/verification/P30InfeedAndPreProcessPosVerificationPage.java b/src/main/java/a8k/extui/page/test/verification/P30InfeedAndPreProcessPosVerificationPage.java index aa211b4..fd68e62 100644 --- a/src/main/java/a8k/extui/page/test/verification/P30InfeedAndPreProcessPosVerificationPage.java +++ b/src/main/java/a8k/extui/page/test/verification/P30InfeedAndPreProcessPosVerificationPage.java @@ -113,17 +113,17 @@ public class P30InfeedAndPreProcessPosVerificationPage { var page = extApiPageMgr.newPage(this); page.newGroup("入料操作"); page.addFunction("入料", this::enterTubeHolder); - page.addFunction("移动到[试管]扫描位置,并扫描", this::moveToTubeScanPosAndScan).setParamVal("tubeIndex", 1); - page.addFunction("移动到[试管]存在检测位置,并判断", this::moveAndjudgeTubeExist).setParamVal("tubeIndex", 1); - page.addFunction("移动到[试管]高低检测位置,并判断", this::moveAndJudgeTubeAltit).setParamVal("tubeIndex", 1); - page.addFunction("移动到[试管]预处理位置", this::moveTubeToPreProcessPos).setParamVal("tubeIndex", 1); + page.addFunction("移动到[试管]扫描位置,并扫描", this::moveToTubeScanPosAndScan).setParamVal("tubeIndex",()-> 1); + page.addFunction("移动到[试管]存在检测位置,并判断", this::moveAndjudgeTubeExist).setParamVal("tubeIndex", ()->1); + page.addFunction("移动到[试管]高低检测位置,并判断", this::moveAndJudgeTubeAltit).setParamVal("tubeIndex", ()->1); + page.addFunction("移动到[试管]预处理位置", this::moveTubeToPreProcessPos).setParamVal("tubeIndex",()-> 1); page.addFunction("移动到[试管架]扫描位置,并扫描", this::moveToTubeRackScanPosAndScan); page.addFunction("出料", this::ejectTubeFromTubeHolder); page.newGroup("入料操作-脚本"); page.addFunction("入料,并扫描试管架和试管,出料", this::scanTubeHolder); page.newGroup("预处理校准.单步"); - page.addFunction("摇匀试管", this::shakeTube).setParamVal("angle", 45).setParamVal("times", 5); + page.addFunction("摇匀试管", this::shakeTube).setParamVal("angle", ()->45).setParamVal("times", ()->5); page.newGroup("预处理校准.脚本"); page.addFunction("取试管到预处理位", this::takeTubeFromTubeholderToShakePos); page.addFunction("放试管回试管架", this::putTubeBackToTubeHolder); diff --git a/src/main/java/a8k/extui/page/test/verification/P32HbotPosVerificationPage.java b/src/main/java/a8k/extui/page/test/verification/P32HbotPosVerificationPage.java index 2bd3c12..cf6b7c7 100644 --- a/src/main/java/a8k/extui/page/test/verification/P32HbotPosVerificationPage.java +++ b/src/main/java/a8k/extui/page/test/verification/P32HbotPosVerificationPage.java @@ -19,6 +19,10 @@ public class P32HbotPosVerificationPage { hbotMoveExCtrlService.takeTipNoCheck(tipGroupPos, index); } + public void moveToTakeTipObservationPos(TipGroupPos tipGroupPos, Integer index, Integer zpos) throws AppException { + hbotMoveExCtrlService.moveToTakeTipObservationPos(tipGroupPos, index, zpos); + } + public void takeAndDropTip(TipGroupPos tipGroupPos, Integer index) throws AppException { try { hbotMoveExCtrlService.testTakeTip(tipGroupPos, index); @@ -34,10 +38,13 @@ public class P32HbotPosVerificationPage { hbotMoveExCtrlService.dropTip(); } + + public void moveToDropLiquidPos() throws AppException { hbotMoveExCtrlService.moveToDropLiquidPos(); } + public void moveToLittleBufferPircePos(ConsumableGroup group, Integer off) throws AppException { hbotMoveExCtrlService.moveToLittleBufferPiercePos(group, off); } @@ -73,6 +80,7 @@ public class P32HbotPosVerificationPage { page.newGroup("TIP"); page.addFunction("取Tip", this::takeTip); page.addFunction("取Tip并放回", this::takeAndDropTip); + page.addFunction("移动到取Tip观察位", this::moveToTakeTipObservationPos); page.addFunction("丢Tip", this::dropTip); page.addFunction("移动滴液位", this::moveToDropLiquidPos); diff --git a/src/main/java/a8k/extui/type/ExUIFunction.java b/src/main/java/a8k/extui/type/ExUIFunction.java index 00c0833..1b56fda 100644 --- a/src/main/java/a8k/extui/type/ExUIFunction.java +++ b/src/main/java/a8k/extui/type/ExUIFunction.java @@ -65,12 +65,12 @@ public class ExUIFunction { } - public ExUIFunction setParamVal(String paraName, Object defaultVal) { - ExUIParam param = getParam(paraName); - Assert.notNull(param, String.format("Can't find param %s in function %s", paraName, keyName)); - param.initValue = defaultVal; - return this; - } +// public ExUIFunction setParamVal(String paraName, Object defaultVal) { +// ExUIParam param = getParam(paraName); +// Assert.notNull(param, String.format("Can't find param %s in function %s", paraName, keyName)); +// param.initValue = defaultVal; +// return this; +// } public ExUIFunction setParamVal(String paraName, ExUIParamGetInitValFnType1 getInitValFn) { ExUIParam param = getParam(paraName); diff --git a/src/main/java/a8k/extui/type/ExtUIPageCfg.java b/src/main/java/a8k/extui/type/ExtUIPageCfg.java index 1792d44..4e46c7e 100644 --- a/src/main/java/a8k/extui/type/ExtUIPageCfg.java +++ b/src/main/java/a8k/extui/type/ExtUIPageCfg.java @@ -30,8 +30,8 @@ public class ExtUIPageCfg { void completeParameter(ExUIFunction function) { - Class clazz = object.getClass(); - Method method = findSimilarMethod(object, function.keyName); + Class clazz = object.getClass(); + Method method = findSimilarMethod(object, function.keyName); if (function.params.isEmpty()) { for (var parameter : method.getParameters()) { function.addParam(parameter.getName()); @@ -123,6 +123,17 @@ public class ExtUIPageCfg { } @FunctionalInterface + public interface ExUIFnR1P6 extends Serializable { + public R fn(T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) throws Exception; + } + + @FunctionalInterface + public interface ExUIFnR1P7 extends Serializable { + public R fn(T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6) throws Exception; + } + + + @FunctionalInterface public interface ExUIFnR0P0 extends Serializable { public void fn() throws Exception; } @@ -152,6 +163,15 @@ public class ExtUIPageCfg { public void fn(T0 p0, T1 p1, T2 p2, T3 p3, T4 p4) throws Exception; } + @FunctionalInterface + public interface ExUIFnR0P6 extends Serializable { + public void fn(T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) throws Exception; + } + + @FunctionalInterface + public interface ExUIFnR0P7 extends Serializable { + public void fn(T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6) throws Exception; + } public ExUIFunction addFunction(String displayName, ExUIFnR0P0 fn) { return addFunction(groupContext, FieldUtils.getImplMethodName(fn), displayName); @@ -177,6 +197,14 @@ public class ExtUIPageCfg { return addFunction(groupContext, FieldUtils.getImplMethodName(fn), displayName); } + public ExUIFunction addFunction(String displayName, ExUIFnR0P6 fn) { + return addFunction(groupContext, FieldUtils.getImplMethodName(fn), displayName); + } + + public ExUIFunction addFunction(String displayName, ExUIFnR0P7 fn) { + return addFunction(groupContext, FieldUtils.getImplMethodName(fn), displayName); + } + public ExUIFunction addFunction(String displayName, ExUIFnR1P0 fn) { return addFunction(groupContext, FieldUtils.getImplMethodName(fn), displayName); } @@ -201,4 +229,11 @@ public class ExtUIPageCfg { return addFunction(groupContext, FieldUtils.getImplMethodName(fn), displayName); } + public ExUIFunction addFunction(String displayName, ExUIFnR1P6 fn) { + return addFunction(groupContext, FieldUtils.getImplMethodName(fn), displayName); + } + + public ExUIFunction addFunction(String displayName, ExUIFnR1P7 fn) { + return addFunction(groupContext, FieldUtils.getImplMethodName(fn), displayName); + } } \ No newline at end of file diff --git a/src/main/resources/db/zapp_a8k_pos_parameter.csv b/src/main/resources/db/zapp_a8k_pos_parameter.csv index 86d9d7b..e416b34 100644 --- a/src/main/resources/db/zapp_a8k_pos_parameter.csv +++ b/src/main/resources/db/zapp_a8k_pos_parameter.csv @@ -1,17 +1,17 @@ id,service,key,valType,val,chName -1,Hbot2DCodeScanParamMgr,PBScanPos0,Pos2d,"{""x"":-20,""y"":1504}",板夹仓扫码位置0 -7,Hbot2DCodeScanParamMgr,LittBS0,Pos2d,"{""x"":1653,""y"":2063}",小缓冲液扫码位置0 -13,Hbot2DCodeScanParamMgr,LarBS0,Pos2d,"{""x"":4867,""y"":1231}",大缓冲液扫码位置0 -19,TubeFeedingModuleParamMgr,TubeHolderEnterXPos,Integer,"{""value"":-46}",入料位置 -20,TubeFeedingModuleParamMgr,TubeHolderExitXPos,Integer,"{""value"":3975}",出料位置 -21,TubeFeedingModuleParamMgr,TubeHolderScanXPos,Integer,"{""value"":2202}",试管架扫描位置 -22,TubeFeedingModuleParamMgr,Tube0ScanPos,Integer,"{""value"":505}",01号试管扫描位置 -23,TubeFeedingModuleParamMgr,Tube0AltitJudgPos,Integer,"{""value"":505}",01试管高度判断位置 -24,TubeFeedingModuleParamMgr,Tube0ExistJudgPos,Integer,"{""value"":300}",01试管存在判断位置 -25,TubeFeedingModuleParamMgr,Tube0PreProcessPos,Integer,"{""value"":1225}",01试管预处理位置 +1,Hbot2DCodeScanParamMgr,PBScanPos0,Pos2d,"{""x"":1864,""y"":16958}",板夹仓扫码位置0 +7,Hbot2DCodeScanParamMgr,LittBS0,Pos2d,"{""x"":18715,""y"":22069}",小缓冲液扫码位置0 +13,Hbot2DCodeScanParamMgr,LarBS0,Pos2d,"{""x"":51780,""y"":13622}",大缓冲液扫码位置0 +19,TubeFeedingModuleParamMgr,TubeHolderEnterXPos,Integer,"{""value"":-125}",入料位置 +20,TubeFeedingModuleParamMgr,TubeHolderExitXPos,Integer,"{""value"":3875}",出料位置 +21,TubeFeedingModuleParamMgr,TubeHolderScanXPos,Integer,"{""value"":2116}",试管架扫描位置 +22,TubeFeedingModuleParamMgr,Tube0ScanPos,Integer,"{""value"":420}",01号试管扫描位置 +23,TubeFeedingModuleParamMgr,Tube0AltitJudgPos,Integer,"{""value"":420}",01试管高度判断位置 +24,TubeFeedingModuleParamMgr,Tube0ExistJudgPos,Integer,"{""value"":220}",01试管存在判断位置 +25,TubeFeedingModuleParamMgr,Tube0PreProcessPos,Integer,"{""value"":1185}",01试管预处理位置 26,TubeFeedingModuleParamMgr,TubeScanServoTorque,Integer,"{""value"":500}",试管扫描伺服力矩 27,TubeFeedingModuleParamMgr,TubeSpacing,Double,"{""value"":200.22222222222223}",试管间距 -28,HbotFixedPosParamMgr,DropLiquidPos,Pos3d,"{""x"":2143,""y"":289,""z"":1134}",滴液位置 +28,HbotFixedPosParamMgr,DropLiquidPos,Pos3d,"{""x"":24358,""y"":4100,""z"":1340}",滴液位置 29,HbotSamplePosParamMgr,EmergencyTubeSamplePos,Pos3d,"{""x"":4857,""y"":3191,""z"":274}",<急诊位>取样位置 30,HbotSamplePosParamMgr,EmergencyTubeSampleEndPos,Pos3d,"{""x"":4857,""y"":3191,""z"":490}",<急诊位>取样结束位置 31,HbotSamplePosParamMgr,BloodHTubeSamplePos,Pos3d,"{""x"":2331,""y"":4017,""z"":294}",<全血高试管>取样位置 @@ -28,26 +28,26 @@ id,service,key,valType,val,chName 42,HbotSamplePosParamMgr,Bulltube0P5SampleEndPos,Pos3d,"{""x"":2331,""y"":3773,""z"":649}",<子弹头试管0.5mL>取样结束位置 43,HbotSamplePosParamMgr,StoolTestTubeSamplePos,Pos3d,"{""x"":2331,""y"":3773,""z"":433}",<粪便试管>取样位置 44,HbotSamplePosParamMgr,StoolTestTubeSampleEndPos,Pos3d,"{""x"":2331,""y"":3773,""z"":649}",<粪便试管>取样结束位置 -45,HbotLittleBSPosMgr,LittleBufferGroup0_000Pos,Pos2d,"{""x"":901,""y"":1105}",第1组小瓶缓冲液的第1个位置 -53,HbotLittleBSPosMgr,LittleBSPierceXYAppendDistance,Double,"{""value"":7.0}",小瓶缓冲液刺破XY附加距离 -54,HbotLittleBSPosMgr,LittleBSPierceZPos,Integer,"{""value"":542}",小瓶缓冲液刺破Z坐标 -55,HbotLittleBSPosMgr,LittleBSSampleZPos,Integer,"{""value"":621}",小瓶缓冲液取样Z坐标 -56,HbotLargeBottleBSPosMgr,LargeBuffer_0Pos,Pos2d,"{""x"":4576,""y"":1364}",大瓶缓冲液的第1个位置 -57,HbotLargeBottleBSPosMgr,LargeBuffer_DX,Double,"{""value"":281.0}",大瓶缓冲液的X间距 -58,HbotLargeBottleBSPosMgr,LargeBuffer_DY,Double,"{""value"":274.0}",大瓶缓冲液的Y间距 -61,HbotTipPosMgr,TipGroup0_000Pos,Pos3d,"{""x"":885,""y"":-17,""z"":582}",第1组TIP的第1个位置 -62,HbotTipPosMgr,TipGroup0_SpaceingX,Double,"{""value"":92.5}",第1组TIP的X间距 -63,HbotTipPosMgr,TipGroup0_SpaceingY,Double,"{""value"":92.8}",第1组TIP的Y间距 -64,HbotTipPosMgr,TipGroup1_000Pos,Pos3d,"{""x"":2413,""y"":-15,""z"":576}",第2组TIP的第1个位置 -65,HbotTipPosMgr,TipGroup1_SpaceingX,Double,"{""value"":92.54722222222222}",第2组TIP的X间距 -66,HbotTipPosMgr,TipGroup1_SpaceingY,Double,"{""value"":92.54722222222222}",第2组TIP的Y间距 -67,HbotTipPosMgr,TipGroup2_000Pos,Pos3d,"{""x"":3944,""y"":-20,""z"":578}",第3组TIP的第1个位置 -68,HbotTipPosMgr,TipGroup2_SpaceingX,Double,"{""value"":92.5}",第3组TIP的X间距 -69,HbotTipPosMgr,TipGroup2_SpaceingY,Double,"{""value"":92.5}",第3组TIP的Y间距 -70,HbotTipPosMgr,DropTipPos,Pos3d,"{""x"":4843,""y"":2567,""z"":545}",丢TIP位置 -82,TurntablePosParamMgr,PushPos0,Integer,"{""value"":1600}",入板位置 -83,TurntablePosParamMgr,PullPos0,Integer,"{""value"":19560}",出板位置 -84,TurntablePosParamMgr,DropLiquidPos0,Integer,"{""value"":10550}",滴液位置 +45,HbotLittleBSPosMgr,LittleBufferGroup0_000Pos,Pos2d,"{""x"":11901,""y"":12333}",第1组小瓶缓冲液的第1个位置 +53,HbotLittleBSPosMgr,LittleBSPierceXYAppendDistance,Double,"{""value"":200.0}",小瓶缓冲液刺破XY附加距离 +54,HbotLittleBSPosMgr,LittleBSPierceZPos,Integer,"{""value"":685}",小瓶缓冲液刺破Z坐标 +55,HbotLittleBSPosMgr,LittleBSSampleZPos,Integer,"{""value"":832}",小瓶缓冲液取样Z坐标 +56,HbotLargeBottleBSPosMgr,LargeBuffer_0Pos,Pos2d,"{""x"":49048,""y"":15560}",大瓶缓冲液的第1个位置 +57,HbotLargeBottleBSPosMgr,LargeBuffer_DX,Double,"{""value"":2840.0}",大瓶缓冲液的X间距 +58,HbotLargeBottleBSPosMgr,LargeBuffer_DY,Double,"{""value"":2840.0}",大瓶缓冲液的Y间距 +61,HbotTipPosMgr,TipGroup0_000Pos,Pos3d,"{""x"":11680,""y"":1138,""z"":805}",第1组TIP的第1个位置 +62,HbotTipPosMgr,TipGroup0_SpaceingX,Double,"{""value"":932.0}",第1组TIP的X间距 +63,HbotTipPosMgr,TipGroup0_SpaceingY,Double,"{""value"":932.0}",第1组TIP的Y间距 +64,HbotTipPosMgr,TipGroup1_000Pos,Pos3d,"{""x"":27200,""y"":1138,""z"":805}",第2组TIP的第1个位置 +65,HbotTipPosMgr,TipGroup1_SpaceingX,Double,"{""value"":932.0}",第2组TIP的X间距 +66,HbotTipPosMgr,TipGroup1_SpaceingY,Double,"{""value"":932.0}",第2组TIP的Y间距 +67,HbotTipPosMgr,TipGroup2_000Pos,Pos3d,"{""x"":42690,""y"":1138,""z"":807}",第3组TIP的第1个位置 +68,HbotTipPosMgr,TipGroup2_SpaceingX,Double,"{""value"":932.0}",第3组TIP的X间距 +69,HbotTipPosMgr,TipGroup2_SpaceingY,Double,"{""value"":932.0}",第3组TIP的Y间距 +70,HbotTipPosMgr,DropTipPos,Pos3d,"{""x"":51855,""y"":27259,""z"":900}",丢TIP位置 +82,TurntablePosParamMgr,PushPos0,Integer,"{""value"":-96}",入板位置 +83,TurntablePosParamMgr,PullPos0,Integer,"{""value"":17968}",出板位置 +84,TurntablePosParamMgr,DropLiquidPos0,Integer,"{""value"":8968}",滴液位置 85,TurntablePosParamMgr,PosSpacing,Integer,"{""value"":1800}",位置间隔 89,PipetteGunLLFParamMgr,EMERGENCY_TUBE_LLF_VEL,Integer,"{""value"":25}",<急诊试管>液面跟随速度 90,PipetteGunLLFParamMgr,BLOOD_TUBE_LLF_VEL,Integer,"{""value"":25}",<全血试管>液面跟随速度 @@ -57,47 +57,55 @@ id,service,key,valType,val,chName 94,PipetteGunLLFParamMgr,BULLET_TUBE_0P5_LLF_VEL,Integer,"{""value"":25}",<子弹头试管0.5ML>液面跟随速度 95,PipetteGunLLFParamMgr,STOOL_TEST_TUBE_LLF_VEL,Integer,"{""value"":25}",<粪便试管>液面跟随速度 96,PipetteGunLLFParamMgr,LARGE_BS_BOTTLE_LLF_VEL,Integer,"{""value"":10}",<大瓶缓冲液>液面跟随速度 -98,OptModuleExtParamsMgr,FOptScanShift,Integer,"{""value"":2218}",F光学扫描偏移 -99,OptModuleExtParamsMgr,FOptEmissionIntensity,Integer,"{""value"":100}",F发射强度 -100,OptModuleExtParamsMgr,FOptScanGainVal,Double,"{""value"":1.1}",F光学扫描放大倍数 +98,OptModuleExtParamsMgr,FOptScanShift,Integer,"{""value"":2800}",F光学扫描偏移 +99,OptModuleExtParamsMgr,FOptEmissionIntensity,Integer,"{""value"":1}",F发射强度 +100,OptModuleExtParamsMgr,FOptScanGainVal,Double,"{""value"":10.0}",F光学扫描放大倍数 101,OptModuleExtParamsMgr,TOptScanShift,Integer,"{""value"":3338}",T光学扫描偏移 102,OptModuleExtParamsMgr,TOptEmissionIntensity,Integer,"{""value"":20}",T发射强度 103,OptModuleExtParamsMgr,TOptScanGainVal,Double,"{""value"":0.5}",T光学扫描放大倍数 -104,OptModuleParamsMgr,PullerTargetPos,Integer,"{""value"":1147}",拉板目标位置 -105,OptModuleParamsMgr,OptScanerDropPos,Integer,"{""value"":-337}",丢板坐标 -106,OptModuleParamsMgr,OptScanerScandbyPos,Integer,"{""value"":700}",扫描待机位 -107,TemperatureCtrlParamMgr,IncubatorTCMTempOffset,Double,"{""value"":0}",<孵育仓>温度偏移 -108,TemperatureCtrlParamMgr,PlatesBoxTCMTempOffset,Double,"{""value"":0}",<板夹仓>温度偏移 -109,TubePreProcesPosParamMgr,GripperServoOpenPos,Integer,"{""value"":1637}",<抓手>张开位置 -110,TubePreProcesPosParamMgr,GripperServoTakeCapPos,Integer,"{""value"":1519}",<抓手>取试管位置 -111,TubePreProcesPosParamMgr,GripperRedundancyHeight,Integer,"{""value"":59}",<抓手>冗余高度 -112,TubePreProcesPosParamMgr,ShakeClampMotorClampPos,Integer,"{""value"":5}",<摇匀试管夹>夹紧位 -113,TubePreProcesPosParamMgr,ShakeClampMotorReleasePos,Integer,"{""value"":90}",<摇匀试管夹>释放位 -114,TubePreProcesPosParamMgr,YServoTakeTubePos,Integer,"{""value"":2907}",取试管位置 -115,TubePreProcesPosParamMgr,YServoShakePos,Integer,"{""value"":1956}",摇匀位置 -116,TubePreProcesPosParamMgr,ZMotorTakeHTubePos,Integer,"{""value"":749}",取高试管位置 -117,TubePreProcesPosParamMgr,ZMotorTakeSTubePos,Integer,"{""value"":985}",取低试管位置 -118,TubePreProcesPosParamMgr,ZMotorShakeTubePos,Integer,"{""value"":773}",摇匀放置位置 -119,PlatesBoxPosParamMgr,Ch0YPos,Integer,"{""value"":-17}",通道0Y轴位置 -120,PlatesBoxPosParamMgr,Ch5YPos,Integer,"{""value"":1308}",通道5Y轴位置 -121,PlatesBoxPosParamMgr,PushEndXPos,Integer,"{""value"":1160}",推杆到位坐标 +104,OptModuleParamsMgr,PullerTargetPos,Integer,"{""value"":1251}",拉板目标位置 +105,OptModuleParamsMgr,OptScanerDropPos,Integer,"{""value"":-104}",丢板坐标 +106,OptModuleParamsMgr,OptScanerScandbyPos,Integer,"{""value"":697}",扫描待机位 +107,TemperatureCtrlParamMgr,IncubatorTCMTempOffset,Double,"{""value"":0.0}",<孵育仓>温度偏移 +108,TemperatureCtrlParamMgr,PlatesBoxTCMTempOffset,Double,"{""value"":0.0}",<板夹仓>温度偏移 +109,TubePreProcesPosParamMgr,GripperServoOpenPos,Integer,"{""value"":1600}",<抓手>张开位置 +110,TubePreProcesPosParamMgr,GripperServoTakeCapPos,Integer,"{""value"":1515}",<抓手>取试管位置 +111,TubePreProcesPosParamMgr,GripperRedundancyHeight,Integer,"{""value"":65}",<抓手>冗余高度 +112,TubePreProcesPosParamMgr,ShakeClampMotorClampPos,Integer,"{""value"":24}",<摇匀试管夹>夹紧位 +113,TubePreProcesPosParamMgr,ShakeClampMotorReleasePos,Integer,"{""value"":52}",<摇匀试管夹>释放位 +114,TubePreProcesPosParamMgr,YServoTakeTubePos,Integer,"{""value"":2988}",取试管位置 +115,TubePreProcesPosParamMgr,YServoShakePos,Integer,"{""value"":1948}",摇匀位置 +116,TubePreProcesPosParamMgr,ZMotorTakeHTubePos,Integer,"{""value"":753}",取高试管位置 +117,TubePreProcesPosParamMgr,ZMotorTakeSTubePos,Integer,"{""value"":973}",取低试管位置 +118,TubePreProcesPosParamMgr,ZMotorShakeTubePos,Integer,"{""value"":800}",摇匀放置位置 +119,PlatesBoxPosParamMgr,Ch0YPos,Integer,"{""value"":36}",通道0Y轴位置 +120,PlatesBoxPosParamMgr,Ch5YPos,Integer,"{""value"":1362}",通道5Y轴位置 +121,PlatesBoxPosParamMgr,PushEndXPos,Integer,"{""value"":1243}",推杆到位坐标 122,PipetteGunExParamMgr,VOLUME_CALIBRATION_COEFFICIENT,Double,null,体积校准系数 123,PipetteGunExParamMgr,VOLUME_CALIBRATION_COEFFICIENT_A,Double,"{""value"":1.033378}",体积校准系数-A 124,PipetteGunExParamMgr,VOLUME_CALIBRATION_COEFFICIENT_B,Double,"{""value"":2.76625}",体积校准系数-B -125,HbotLargeBottleBSPosMgr,LargeBottleBufferLLDStartZAxisPos,Double,"{""value"":90}",大瓶缓冲液LLD起始Z轴坐标 -126,HbotLargeBottleBSPosMgr,LargeBottleBufferBottomZAxisPos,Double,"{""value"":415}",大瓶缓冲液瓶底Z轴坐标 -127,HbotLittleBSPosMgr,LittleBufferDX,Double,"{""value"":209.0}",小瓶缓冲液的X间距 -128,HbotLittleBSPosMgr,LittleBufferDY,Double,"{""value"":209.0}",小瓶缓冲液的Y间距 -131,PlatesBoxPosParamMgr,ChDPos,Double,"{""value"":265}",通道间距 -132,HbotLittleBSPosMgr,GroupDX,Double,"{""value"":1230.0}",小瓶缓冲液的X间距 -133,HbotLittleBSPosMgr,GroupDY,Double,"{""value"":1254.0}",小瓶缓冲液的Y间距 -134,HbotLittleBSPosMgr,ProbeSubstanceGroup0_000Pos,Pos2d,"{""x"":943,""y"":1141}",第1组探测物质的第1个位置 -135,HbotLittleBSPosMgr,ProbeSubstanceDX,Double,"{""value"":188.6}",探测物质的X间距 -136,HbotLittleBSPosMgr,ProbeSubstanceDY,Double,"{""value"":188.6}",探测物质的Y间距 -137,HbotLittleBSPosMgr,ProbeSubstancePierceXYAppendDistance,Double,"{""value"":5.0}",探测物质液刺破XY附加距离 -138,HbotLittleBSPosMgr,ProbeSubstancePierceZPos,Integer,"{""value"":475}",探测物质液刺破Z坐标 -139,HbotLittleBSPosMgr,ProbeSubstanceSampleZPos,Integer,"{""value"":475}",探测物质取样Z坐标 -140,HbotLargeBottleBSPosMgr,LargeBufferScanPos_DX,Double,"{""value"":280}",大瓶缓冲液的扫码位置dx -141,HbotLargeBottleBSPosMgr,LargeBufferScanPos_DY,Double,"{""value"":580}",大瓶缓冲液的扫码位置dy +125,HbotLargeBottleBSPosMgr,LargeBottleBufferLLDStartZAxisPos,Double,"{""value"":380.0}",大瓶缓冲液LLD起始Z轴坐标 +126,HbotLargeBottleBSPosMgr,LargeBottleBufferBottomZAxisPos,Double,"{""value"":740.0}",大瓶缓冲液瓶底Z轴坐标 +127,HbotLittleBSPosMgr,LittleBufferDX,Double,"{""value"":2118.1818}",小瓶缓冲液的X间距 +128,HbotLittleBSPosMgr,LittleBufferDY,Double,"{""value"":2118.1818}",小瓶缓冲液的Y间距 +131,PlatesBoxPosParamMgr,ChDPos,Double,"{""value"":265.0}",通道间距 +132,HbotLittleBSPosMgr,GroupDX,Double,"{""value"":12446.49}",小瓶缓冲液的X间距 +133,HbotLittleBSPosMgr,GroupDY,Double,"{""value"":12638.22}",小瓶缓冲液的Y间距 +134,HbotLittleBSPosMgr,ProbeSubstanceGroup0_000Pos,Pos2d,"{""x"":12345,""y"":12749}",第1组探测物质的第1个位置 +135,HbotLittleBSPosMgr,ProbeSubstanceDX,Double,"{""value"":1891.23}",探测物质的X间距 +136,HbotLittleBSPosMgr,ProbeSubstanceDY,Double,"{""value"":1891.23}",探测物质的Y间距 +137,HbotLittleBSPosMgr,ProbeSubstancePierceXYAppendDistance,Double,"{""value"":50.0}",探测物质液刺破XY附加距离 +138,HbotLittleBSPosMgr,ProbeSubstancePierceZPos,Integer,"{""value"":685}",探测物质液刺破Z坐标 +139,HbotLittleBSPosMgr,ProbeSubstanceSampleZPos,Integer,"{""value"":720}",探测物质取样Z坐标 142,RefPosMgr,HbotXYRefPoint,Pos2d,null,HBOT-XY参考点 -143,RefPosMgr,HbotZRefPlane,Integer,null,HBOT-Z参考平面 \ No newline at end of file +143,RefPosMgr,HbotZRefPlane,Integer,null,HBOT-Z参考平面 +144,TubePreProcesPosParamMgr,TubeShakeMotorOffset,Integer,"{""value"":-10}",<摇匀电机>偏移量 +145,TubeFeedingModuleParamMgr,InfeedOvertime,Integer,"{""value"":10}",入料超时时间 +146,TubeFeedingModuleParamMgr,OutfeedOvertime,Integer,"{""value"":10}",出料超时时间 +147,Hbot2DCodeScanParamMgr,PBDY,Double,"{""value"":2650.0}",板夹仓扫码位置Y +148,TubePreProcesPosParamMgr,ShakeModLiftingSVWorkPos,Integer,"{""value"":2343}",<顶升舵机>工作位置 +149,Hbot2DCodeScanParamMgr,PBQRCodeDY,Double,"{""value"":2650.0}",板夹仓扫码GROUP间距 +150,Hbot2DCodeScanParamMgr,LargeBSQRCodeDX,Double,"{""value"":2880.0}",大瓶缓冲液的扫码GROUP间距 +151,Hbot2DCodeScanParamMgr,LargeBSQRCodeDY,Double,"{""value"":7500.0}",大瓶缓冲液的扫码GROUP间距 +152,Hbot2DCodeScanParamMgr,LittleBQRCodeDX,Double,"{""value"":12300.0}",小瓶缓冲液的GROUP间距 +153,Hbot2DCodeScanParamMgr,LittleBQRCodeDY,Double,"{""value"":12540.0}",小瓶缓冲液的GROUP间距 \ No newline at end of file