From 48ea16b326c94df29dea22e84d7403929f8c690d Mon Sep 17 00:00:00 2001 From: sige Date: Wed, 6 Mar 2024 11:48:04 +0800 Subject: [PATCH] ~ --- .../move/MoveTubeToErrorRackSlot.java | 103 ++++++++++++--------- 1 file changed, 60 insertions(+), 43 deletions(-) diff --git a/src/src/main/java/com/my/graphiteDigesterBg/move/MoveTubeToErrorRackSlot.java b/src/src/main/java/com/my/graphiteDigesterBg/move/MoveTubeToErrorRackSlot.java index be6d24c..f15f4dd 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/move/MoveTubeToErrorRackSlot.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/move/MoveTubeToErrorRackSlot.java @@ -4,6 +4,9 @@ import com.my.graphiteDigesterBg.diframe.DiTaskMoveBase; import com.my.graphiteDigesterBg.diframe.actuator.DiActMotor; import com.my.graphiteDigesterBg.diframe.actuator.DiActServo; import com.my.graphiteDigesterBg.resource.ResHeatingTubeRackSlotManager; + +import java.util.List; + public class MoveTubeToErrorRackSlot extends DiTaskMoveBase { // slot index public Integer srcSlotIndex; @@ -11,52 +14,67 @@ public class MoveTubeToErrorRackSlot extends DiTaskMoveBase { public Integer srcTubeIndex; // error slot index public Integer errorTubeIndex; + // transfer up down motor + private DiActMotor transUdMotor = null; + // transfer left right motor + private DiActMotor transLrMotor = null; + // heat plate motor + private DiActMotor heatPlateMotor = null; + // transfer clip servo + private DiActServo transferClipServo = null; @Override public void run() { - var transUdMotor = this.getActuator(MyDevice.ACT_TRANSFER_UD_MOTOR, DiActMotor.class); - var transLrMotor = this.getActuator(MyDevice.ACT_TRANSFER_LR_MOTOR, DiActMotor.class); - var heatPlateMotor = this.getActuator(MyDevice.ACT_HEAT_PLATE_MOTOR, DiActMotor.class); - var transferClipServo = this.getActuator(MyDevice.ACT_TRANSFER_CLIP_SERVO, DiActServo.class); + this.transUdMotor = this.getActuator(MyDevice.ACT_TRANSFER_UD_MOTOR, DiActMotor.class); + this.transLrMotor = this.getActuator(MyDevice.ACT_TRANSFER_LR_MOTOR, DiActMotor.class); + this.heatPlateMotor = this.getActuator(MyDevice.ACT_HEAT_PLATE_MOTOR, DiActMotor.class); + this.transferClipServo = this.getActuator(MyDevice.ACT_TRANSFER_CLIP_SERVO, DiActServo.class); + + this.pickUpTheTube(); + this.putDownTheTube(); + } + // pick up tube + private void pickUpTheTube() { String srcSlotKey = "HeatingPlateMotorSlotCover_" + this.srcSlotIndex; DiActServo srcSlotCoverServo = this.getActuator(srcSlotKey, DiActServo.class); - // 升降移动到顶部 - transUdMotor.moveTo("TransUdMotorTop"); - - // 加热盘移动到试管位置 - Integer heatPlateSlotLocation = heatPlateMotor.getLocationValue("HeatPlateSlot", this.srcSlotIndex); - Integer heatPlateSlotTubeOffset = heatPlateMotor.getLocationValue("HeatPlateSlotTubeOffset", this.srcTubeIndex); - heatPlateMotor.moveTo(heatPlateSlotLocation + heatPlateSlotTubeOffset); - - // 打开试管架盖 - srcSlotCoverServo.moveTo("HeatPlateSlotCoverOpen"); - - // 搬运左右移动到试管位置 - Integer transLrMotorHeatPlateSlotLocation = transLrMotor.getLocationValue("TransLrMotorHeatPlateSlot"); - Integer transLrMotorTubeOffset = transLrMotor.getLocationValue("TransLrMotorTubeOffset", this.srcTubeIndex); - transLrMotor.moveTo(transLrMotorHeatPlateSlotLocation + transLrMotorTubeOffset); - - // 张开试管夹爪 - transferClipServo.moveTo("TransClipServoOpenForTube"); + // 计算加热盘移动到试管位置 + Integer heatPlateSlotLocation = this.heatPlateMotor.getLocationValue("HeatPlateSlot", this.srcSlotIndex); + Integer heatPlateSlotTubeOffset = this.heatPlateMotor.getLocationValue("HeatPlateSlotTubeOffset", this.srcTubeIndex); + this.execute(List.of( + () -> this.transUdMotor.moveTo("TransUdMotorTop"), // 升降移动到顶部 + () -> this.heatPlateMotor.moveTo(heatPlateSlotLocation + heatPlateSlotTubeOffset), // 加热盘移动到试管位置 + () -> srcSlotCoverServo.moveTo("HeatPlateSlotCoverOpen") // 打开试管架盖 + )); + + // 计算搬运左右移动到试管位置 + Integer transLrMotorHeatPlateSlotLocation = this.transLrMotor.getLocationValue("TransLrMotorHeatPlateSlot"); + Integer transLrMotorTubeOffset = this.transLrMotor.getLocationValue("TransLrMotorTubeOffset", this.srcTubeIndex); + Integer transLrMotorTubeClip = transLrMotorHeatPlateSlotLocation + transLrMotorTubeOffset; + this.execute(List.of( + () -> this.transLrMotor.moveTo(transLrMotorTubeClip), // 搬运左右移动到试管位置 + () -> this.transferClipServo.moveTo("TransClipServoOpenForTube") // 张开试管夹爪 + )); // 升降下降到试管位置 - transUdMotor.moveTo("TransUdMotorTubeClip"); + this.transUdMotor.moveTo("TransUdMotorTubeClip"); // 试管夹爪关闭 - transferClipServo.moveTo("TransClipServoTubeClip"); + this.transferClipServo.moveTo("TransClipServoTubeClip"); // 升降移动到顶部 - transUdMotor.moveTo("TransUdMotorTop"); + this.transUdMotor.moveTo("TransUdMotorTop"); // 搬运左右移动就绪位置 - transLrMotor.moveTo("TransLrMotorStandby"); + this.transLrMotor.moveTo("TransLrMotorStandby"); // 试管架盖关闭 srcSlotCoverServo.moveTo("HeatPlateSlotCoverClose"); + } - // 错误准备 + // put down tube + private void putDownTheTube() { var slotMan = this.getResourceManager(ResHeatingTubeRackSlotManager.class); var errorSlot = slotMan.getErrorSlot(); String errSlotKey = "HeatingPlateMotorSlotCover_" + errorSlot.index; @@ -65,34 +83,33 @@ public class MoveTubeToErrorRackSlot extends DiTaskMoveBase { // 加热盘移动到试管位置 Integer errorHeatPlateSlotLocation = heatPlateMotor.getLocationValue("HeatPlateSlot", errorSlot.index); Integer errorHeatPlateSlotTubeOffset = heatPlateMotor.getLocationValue("HeatPlateSlotTubeOffset", this.errorTubeIndex); - heatPlateMotor.moveTo(errorHeatPlateSlotLocation + errorHeatPlateSlotTubeOffset); - - // 打开试管架盖 - errSlotCoverServo.moveTo("HeatPlateSlotCoverOpen"); + this.execute(List.of( + () -> heatPlateMotor.moveTo(errorHeatPlateSlotLocation + errorHeatPlateSlotTubeOffset), // 加热盘移动到试管位置 + () -> errSlotCoverServo.moveTo("HeatPlateSlotCoverOpen") // 打开试管架盖 + )); // 搬运左右移动到试管位置 - transLrMotorTubeOffset = transLrMotor.getLocationValue("TransLrMotorTubeOffset", this.errorTubeIndex); + Integer transLrMotorHeatPlateSlotLocation = this.transLrMotor.getLocationValue("TransLrMotorHeatPlateSlot"); + Integer transLrMotorTubeOffset = transLrMotor.getLocationValue("TransLrMotorTubeOffset", this.errorTubeIndex); transLrMotor.moveTo(transLrMotorHeatPlateSlotLocation + transLrMotorTubeOffset); // 升降下降到试管位置 transUdMotor.moveTo("TransUdMotorTubeClip"); // 张开试管夹爪 - transferClipServo.moveTo("TransClipServoOpen"); + transferClipServo.moveTo("TransClipServoOpenFromTube"); // 升降移动到顶部 transUdMotor.moveTo("TransUdMotorTop"); - // 试管夹爪关闭 - transferClipServo.moveTo("TransClipServoTubeClip"); - - // 搬运左右移动就绪位置 - transLrMotor.moveTo("TransLrMotorStandby"); - - // 试管架盖关闭 - errSlotCoverServo.moveTo("HeatPlateSlotCoverClose"); + this.execute(List.of( + () -> transferClipServo.moveTo("TransClipServoTubeClip"), // 试管夹爪关闭 + () -> transLrMotor.moveTo("TransLrMotorStandby") // 搬运左右移动就绪位置 + )); - // 加热盘移动到就绪位置 - heatPlateMotor.moveTo("HeatPlateStandby"); + this.execute(List.of( + () -> errSlotCoverServo.moveTo("HeatPlateSlotCoverClose"), // 试管架盖关闭 + () -> heatPlateMotor.moveTo("HeatPlateStandby") // 加热盘移动到就绪位置 + )); } }