|
|
@ -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") // 加热盘移动到就绪位置 |
|
|
|
)); |
|
|
|
} |
|
|
|
} |