From 08c1a857c5cb028970a317633e095502360e7d2d Mon Sep 17 00:00:00 2001 From: sige Date: Sat, 16 Mar 2024 17:09:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E6=9C=BA=E5=A4=8D=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../my/graphiteDigesterBg/task/TaskStartReset.java | 87 ++++++++++++++++++---- 1 file changed, 72 insertions(+), 15 deletions(-) diff --git a/src/src/main/java/com/my/graphiteDigesterBg/task/TaskStartReset.java b/src/src/main/java/com/my/graphiteDigesterBg/task/TaskStartReset.java index 71d5b73..353a8e1 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/task/TaskStartReset.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/task/TaskStartReset.java @@ -8,6 +8,9 @@ import com.my.graphiteDigesterBg.diframe.actuator.DiActPeristalticPump; import com.my.graphiteDigesterBg.diframe.actuator.DiActServo; import com.my.graphiteDigesterBg.diframe.model.DiMdbNotification; import com.my.graphiteDigesterBg.model.MdbOperationLog; +import com.my.graphiteDigesterBg.move.MoveDoorClose; +import com.my.graphiteDigesterBg.move.MoveDoorOpen; +import com.my.graphiteDigesterBg.move.MoveMoveTubeRackFromHeatPlateToLiquidPlate; import com.my.graphiteDigesterBg.move.MoveMoveTubeRackFromLiquidPlateToHeatPlate; import com.my.graphiteDigesterBg.resource.ResHeatingTubeRackSlotManager; @Task(name="StartReset") @@ -23,12 +26,7 @@ public class TaskStartReset extends DiTaskBase { this.setProgressMessage("设备初始化 : 关闭设备门"); DiActMotor doorMotor = this.getActuator(MyDevice.ACT_DOOR_MOTOR, DiActMotor.class); doorMotor.setEnable(true); - doorMotor.moveToIO(1, 1); - - this.setProgressMessage("设备初始化 : 关闭夹爪"); - DiActServo transferClipServo = this.getActuator(MyDevice.ACT_TRANSFER_CLIP_SERVO, DiActServo.class); - transferClipServo.setEnable(true); - transferClipServo.moveTo("TransClipServoClose"); + MoveDoorClose.execute(this.getDevice()); this.setProgressMessage("设备初始化 : 加液臂复位"); DiActMotor liquidMotor = this.getActuator(MyDevice.ACT_LIQUID_MOTOR, DiActMotor.class); @@ -36,6 +34,11 @@ public class TaskStartReset extends DiTaskBase { liquidMotor.reset(); liquidMotor.moveTo("LiquidArmStandby"); + this.setProgressMessage("设备初始化 : 关闭夹爪"); + DiActServo transferClipServo = this.getActuator(MyDevice.ACT_TRANSFER_CLIP_SERVO, DiActServo.class); + transferClipServo.setEnable(true); + transferClipServo.moveTo("TransClipServoClose"); + this.setProgressMessage("设备初始化 : 搬运机械臂上下移动复位"); DiActMotor transUdMotor = this.getActuator(MyDevice.ACT_TRANSFER_UD_MOTOR, DiActMotor.class); transUdMotor.setEnable(true); @@ -49,14 +52,6 @@ public class TaskStartReset extends DiTaskBase { transLrMotor.setMoveOffset("TransLrMotorGlobalOffset"); transLrMotor.moveTo("TransLrMotorStandby"); - for ( int i=0; i<5; i++ ) { - this.setProgressMessage("设备初始化 : 加热盘转盘槽盖关闭 " + (i+1) + "/5"); - String key = "HeatingPlateMotorSlotCover_" + i; - DiActServo heatSlotCoverServo = this.getActuator(key, DiActServo.class); - heatSlotCoverServo.setEnable(true); - heatSlotCoverServo.setCurrentPosAsMiddle(); - } - // @TODO : http://127.0.0.1:5566/issues/39 this.setProgressMessage("设备初始化 : 加液转盘复位"); DiActMotor liquidPlateMotor = this.getActuator(MyDevice.ACT_LIQUID_PLATE_MOTOR, DiActMotor.class); @@ -70,6 +65,15 @@ public class TaskStartReset extends DiTaskBase { heatPlateMotor.reset(); heatPlateMotor.moveTo("HeatPlateStandby"); + this.clearTubeRack(); + for ( int i=0; i<5; i++ ) { + this.setProgressMessage("设备初始化 : 加热盘转盘槽盖关闭 " + (i+1) + "/5"); + String key = "HeatingPlateMotorSlotCover_" + i; + DiActServo heatSlotCoverServo = this.getActuator(key, DiActServo.class); + heatSlotCoverServo.setEnable(true); + heatSlotCoverServo.setCurrentPosAsMiddle(); + } + int peristalticPumpCount = 1; var actuators = this.getDevice().getActuators().getAll(); for ( var actuator : actuators ) { @@ -86,7 +90,7 @@ public class TaskStartReset extends DiTaskBase { this.setProgressMessage("设备初始化 : 定时刷新加热盘温度"); var slotMan = this.getResourceManager(ResHeatingTubeRackSlotManager.class); -// slotMan.startTemperatureRefresh(); + slotMan.startTemperatureRefresh(); this.setProgressMessage("设备初始化 : 放入异常处理试管架"); doorMotor.reset(); // 打开设备门 @@ -100,6 +104,58 @@ public class TaskStartReset extends DiTaskBase { this.setStatus(TaskStatus.FINISHED); } + /** + * 清理试管架 + * @issue : 无法获取加液位置是否存在试管架 + */ + private void clearTubeRack() { + boolean isDoorOpen = false; + + for ( int i=0; i<5; i++ ) { + this.setProgressMessage("设备初始化 : 检查试管架 " + (i+1) + "/5"); + String key = "HeatingPlateMotorSlotCover_" + i; + DiActServo heatSlotCoverServo = this.getActuator(key, DiActServo.class); + heatSlotCoverServo.setEnable(true); + var currentPos = heatSlotCoverServo.getCurrentPos(); + LOG.info("HeatingPlateMotorSlotCover #{} : current pos = {}", i, currentPos); + + var rackExistsPos = heatSlotCoverServo.getLocationValue("HeatingPlateMotorSlotCoverRackExists"); + if ( currentPos > rackExistsPos ) { + heatSlotCoverServo.setEnable(false); + continue; + } + + var moveToLiquidPlate = new MoveMoveTubeRackFromHeatPlateToLiquidPlate(); + moveToLiquidPlate.setDevice(this.getDevice()); + moveToLiquidPlate.slotIndex = i; + moveToLiquidPlate.updateSlotStatus = false; + moveToLiquidPlate.run(); + + if ( !isDoorOpen ) { + MoveDoorOpen.execute(this.getDevice()); + isDoorOpen = true; + } + + heatSlotCoverServo.moveTo("HeatingPlateMotorSlotCoverEmpty"); + heatSlotCoverServo.setEnable(false); + + // 等待取出试管架 + DiMdbNotification.taskAction(this, "TaskStartResetErrorTubeRackTakeOut"); + this.waitAction("TaskStartResetErrorTubeRackTakeOut"); + LOG.info("HeatingPlateMotorSlotCover #{} : take out", i); + } + + if ( isDoorOpen ) { + MoveDoorClose.execute(this.getDevice()); + } + } + + // 异常处理位试管架取出 + public void actionErrorTubeRackTakeOut() { + var action = this.getAction("TaskStartResetErrorTubeRackTakeOut"); + action.finish(); + } + // 放入异常处理位试管架 public void actionErrorTubeRackPutIn() { var slotMan = this.getResourceManager(ResHeatingTubeRackSlotManager.class); @@ -113,6 +169,7 @@ public class TaskStartReset extends DiTaskBase { move.slotIndex = slot.index; move.setDevice(this.getDevice()); move.run(); + slot.lock(); var action = this.getAction("TaskStartResetErrorTubeRackPutIn"); action.finish();