sige 1 year ago
parent
commit
48ea16b326
  1. 103
      src/src/main/java/com/my/graphiteDigesterBg/move/MoveTubeToErrorRackSlot.java

103
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") // 加热盘移动到就绪位置
));
}
}
Loading…
Cancel
Save