Browse Source

加液时检查试管空位

master
sige 1 year ago
parent
commit
59a9d76e2a
  1. 64
      src/src/main/java/com/my/graphiteDigesterBg/move/MoveLiquidAdd.java
  2. 1
      src/src/main/java/com/my/graphiteDigesterBg/step/StepPump.java
  3. 1
      src/src/main/java/com/my/graphiteDigesterBg/task/TaskLiquidAdd.java

64
src/src/main/java/com/my/graphiteDigesterBg/move/MoveLiquidAdd.java

@ -4,6 +4,10 @@ import com.my.graphiteDigesterBg.diframe.DiTaskMoveBase;
import com.my.graphiteDigesterBg.diframe.actuator.DiActMotor;
import com.my.graphiteDigesterBg.diframe.actuator.DiActPeristalticPump;
import com.my.graphiteDigesterBg.resource.ResAcidManager;
import com.my.graphiteDigesterBg.resource.ResHeatingTubeRackSlot;
import com.my.graphiteDigesterBg.resource.ResHeatingTubeRackSlotManager;
import java.util.ArrayList;
import java.util.List;
public class MoveLiquidAdd extends DiTaskMoveBase {
// shake times
@ -12,6 +16,10 @@ public class MoveLiquidAdd extends DiTaskMoveBase {
public Integer liquidVolume;
// liquid type
public String liquidType;
// slot index
public Integer slotIndex;
// slot
private ResHeatingTubeRackSlot slot = null;
@Override
public void run() {
@ -20,6 +28,9 @@ public class MoveLiquidAdd extends DiTaskMoveBase {
var groupInPump = this.getActuator("LiquidPeristalticPump_" + bucket.index + "_0", DiActPeristalticPump.class);
var groupOutPump = this.getActuator("LiquidPeristalticPump_" + bucket.index + "_1", DiActPeristalticPump.class);
ResHeatingTubeRackSlotManager slotMan = this.getResourceManager(ResHeatingTubeRackSlotManager.class);
this.slot = slotMan.getSlotByIndex(this.slotIndex);
// 加液
DiActMotor liquidMotor = this.getActuator(MyDevice.ACT_LIQUID_MOTOR, DiActMotor.class);
DiActMotor liquidPlateMotor = this.getActuator(MyDevice.ACT_LIQUID_PLATE_MOTOR, DiActMotor.class);
@ -29,22 +40,36 @@ public class MoveLiquidAdd extends DiTaskMoveBase {
() -> liquidMotor.moveTo("LiquidArmPumpGroupOut"),
() -> liquidPlateMotor.moveTo("LiquidPlateSlotPumpOutGroup", index)
));
this.execute(List.of( // 加液
() -> groupOutPump.pump(this.liquidVolume),
() -> groupInPump.pump(this.liquidVolume)
));
bucket.consume(this.liquidVolume * 2);
// 外圈判断试管有无 并执行加液
var pumpExecOut = new ArrayList<ExecuteCallback>();
if ( this.isTubeExist("GroupOut", "PumpOut", i) ) {
pumpExecOut.add(() -> groupOutPump.pump(this.liquidVolume));
bucket.consume(this.liquidVolume);
}
if ( this.isTubeExist("GroupOut", "PumpIn", i) ) {
pumpExecOut.add(() -> groupInPump.pump(this.liquidVolume));
bucket.consume(this.liquidVolume);
}
this.execute(pumpExecOut);
// 内圈试管加液
this.execute(List.of( // 移动到内圈试管位置
() -> liquidMotor.moveTo("LiquidArmPumpGroupIn"),
() -> liquidPlateMotor.moveTo("LiquidPlateSlotPumpInGroup", index)
));
this.execute(List.of( // 加液
() -> groupInPump.pump(this.liquidVolume),
() -> groupOutPump.pump(this.liquidVolume)
));
bucket.consume(this.liquidVolume * 2);
// 内圈判断试管有无 并执行加液
var pumpExecIn = new ArrayList<ExecuteCallback>();
if ( this.isTubeExist("GroupIn", "PumpOut", i) ) {
pumpExecIn.add(() -> groupOutPump.pump(this.liquidVolume));
bucket.consume(this.liquidVolume);
}
if ( this.isTubeExist("GroupIn", "PumpIn", i) ) {
pumpExecIn.add(() -> groupInPump.pump(this.liquidVolume));
bucket.consume(this.liquidVolume);
}
this.execute(pumpExecIn);
}
liquidMotor.moveTo("LiquidArmStandby");
@ -62,4 +87,23 @@ public class MoveLiquidAdd extends DiTaskMoveBase {
liquidMotor.moveTo("LiquidArmStandby");
}
// 判断试管是否存在
private Boolean isTubeExist(String groupType, String PumpType, Integer pumpIndex) {
var slotGroupOutIndexList = List.of(0,4, 3,2, 12,13, 15,11);
var slotGroupInIndexList = List.of(1,5, 7,6, 8,9, 14,10);
var slotGroupIndexList = slotGroupOutIndexList;
if ( "GroupIn".equals(groupType) ) {
slotGroupIndexList = slotGroupInIndexList;
}
var slotIndex = slotGroupIndexList.get(pumpIndex*2);
if ( "PumpIn".equals(PumpType) ) {
slotIndex = slotGroupIndexList.get(pumpIndex*2+1);
}
var tubeStatus = this.slot.getTubeStatus(slotIndex);
return ResHeatingTubeRackSlot.TUBE_STATUS_USED.equals(tubeStatus);
}
}

1
src/src/main/java/com/my/graphiteDigesterBg/step/StepPump.java

@ -32,6 +32,7 @@ public class StepPump extends DiTaskStepBase {
liquidAdd.shakeTimes = this.shake;
liquidAdd.liquidType = this.type;
liquidAdd.liquidVolume = this.amount;
liquidAdd.slotIndex = task.slotIndex;
liquidAdd.run();
// move tube rack from liquid plate to heat plate

1
src/src/main/java/com/my/graphiteDigesterBg/task/TaskLiquidAdd.java

@ -35,6 +35,7 @@ public class TaskLiquidAdd extends DiTaskBase {
liquidAdd.shakeTimes = this.shakeTimes;
liquidAdd.liquidType = this.liquidType;
liquidAdd.liquidVolume = this.liquidVolume;
liquidAdd.slotIndex = this.slotIndex;
liquidAdd.run();
// move tube rack from liquid plate to heat plate

Loading…
Cancel
Save