sige 1 year ago
parent
commit
73df6e6109
  1. 137
      src/src/main/java/com/my/graphiteDigesterBg/move/MoveTubeToErrorRackSlot.java

137
src/src/main/java/com/my/graphiteDigesterBg/move/MoveTubeToErrorRackSlot.java

@ -4,9 +4,7 @@ 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;
@ -14,102 +12,69 @@ 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() {
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);
// 计算加热盘移动到试管位置
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") // 张开试管夹爪
));
// 升降下降到试管位置
this.transUdMotor.moveTo("TransUdMotorTubeClip");
// 试管夹爪关闭
this.transferClipServo.moveTo("TransClipServoTubeClip");
// 升降移动到顶部
this.transUdMotor.moveTo("TransUdMotorTop");
// 搬运左右移动就绪位置
this.transLrMotor.moveTo("TransLrMotorStandby");
// 试管架盖关闭
srcSlotCoverServo.moveTo("HeatPlateSlotCoverClose");
}
// transfer up down motor
DiActMotor transUdMotor = this.getActuator(MyDevice.ACT_TRANSFER_UD_MOTOR, DiActMotor.class);
// transfer left right motor
DiActMotor transLrMotor = this.getActuator(MyDevice.ACT_TRANSFER_LR_MOTOR, DiActMotor.class);
// heat plate motor
DiActMotor heatPlateMotor = this.getActuator(MyDevice.ACT_HEAT_PLATE_MOTOR, DiActMotor.class);
// transfer clip servo
DiActServo transferClipServo = this.getActuator(MyDevice.ACT_TRANSFER_CLIP_SERVO, DiActServo.class);
// liquid
DiActMotor liquidPlateMotor = this.getActuator(MyDevice.ACT_LIQUID_PLATE_MOTOR, DiActMotor.class);
// 拾取试管
// 加液盘旋转到取试管位置
liquidPlateMotor.moveTo("LiquidPlateTube", this.srcTubeIndex);
// 搬运夹爪张开
transferClipServo.moveTo("TransClipServoOpenForTube");
// 搬运左右移动到试管位置
transLrMotor.moveTo("TransLrMotorLiquidPlateTube", this.srcTubeIndex);
// 搬运上下移动到取试管位置
transUdMotor.moveTo("TransUdMotorLiquidPlateTubeClip");
// 搬运夹爪关闭
transferClipServo.moveTo("TransClipServoTubeClip");
// 搬运上下移动到顶部
transUdMotor.moveTo("TransUdMotorTop");
// 搬运左右移动到就绪位置
transLrMotor.moveTo("TransLrMotorStandby");
// 加液试管架回到就绪位置
liquidPlateMotor.moveTo("LiquidPlateStandby");
// put down tube
private void putDownTheTube() {
// 标记该试管为空
var slotMan = this.getResourceManager(ResHeatingTubeRackSlotManager.class);
var slot = slotMan.getSlotByIndex(this.srcSlotIndex);
slot.getTubes().get(this.srcTubeIndex).setHasTube(false);
// 下放试管
// 打开试管架盖
var errorSlot = slotMan.getErrorSlot();
String errSlotKey = "HeatingPlateMotorSlotCover_" + errorSlot.index;
DiActServo errSlotCoverServo = this.getActuator(errSlotKey, DiActServo.class);
// 加热盘移动到试管位置
Integer errorHeatPlateSlotLocation = heatPlateMotor.getLocationValue("HeatPlateSlot", errorSlot.index);
Integer errorHeatPlateSlotTubeOffset = heatPlateMotor.getLocationValue("HeatPlateSlotTubeOffset", this.errorTubeIndex);
this.execute(List.of(
() -> heatPlateMotor.moveTo(errorHeatPlateSlotLocation + errorHeatPlateSlotTubeOffset), // 加热盘移动到试管位置
() -> errSlotCoverServo.moveTo("HeatPlateSlotCoverOpen") // 打开试管架盖
));
DiActServo coverServo = this.getActuator(errSlotKey, DiActServo.class);
coverServo.moveTo("HeatPlateSlotCoverOpen");
// 加热转盘移动到试管位置
heatPlateMotor.moveTo("HeatPlateErrorSlotTube", this.errorTubeIndex);
// 搬运左右移动到试管位置
Integer transLrMotorHeatPlateSlotLocation = this.transLrMotor.getLocationValue("TransLrMotorHeatPlateSlot");
Integer transLrMotorTubeOffset = transLrMotor.getLocationValue("TransLrMotorTubeOffset", this.errorTubeIndex);
transLrMotor.moveTo(transLrMotorHeatPlateSlotLocation + transLrMotorTubeOffset);
transLrMotor.moveTo("TransLrMotorHeatingPlateTube", this.errorTubeIndex);
// 升降下降到试管位置
transUdMotor.moveTo("TransUdMotorTubeClip");
// 张开试管夹爪
// 打开试管夹
transferClipServo.moveTo("TransClipServoOpenFromTube");
// 升降移动到顶部
transUdMotor.moveTo("TransUdMotorTop");
this.execute(List.of(
() -> transferClipServo.moveTo("TransClipServoTubeClip"), // 试管夹爪关闭
() -> transLrMotor.moveTo("TransLrMotorStandby") // 搬运左右移动就绪位置
));
this.execute(List.of(
() -> errSlotCoverServo.moveTo("HeatPlateSlotCoverClose"), // 试管架盖关闭
() -> heatPlateMotor.moveTo("HeatPlateStandby") // 加热盘移动到就绪位置
));
// 搬运左右移动到就绪位置
transLrMotor.moveTo("TransLrMotorStandby");
// 试管夹关闭
transferClipServo.moveTo("TransClipServoClose");
// 盖上试管架盖
coverServo.moveTo("HeatPlateSlotCoverClose");
// 加液转盘移至就绪位置
heatPlateMotor.moveTo("HeatPlateStandby");
// 标记试管位置存在
var errorRackSlot = slotMan.getErrorSlot();
errorRackSlot.getTubes().get(this.errorTubeIndex).setHasTube(true);
}
}
Loading…
Cancel
Save