Browse Source

update

tags/v0
zhaohe 1 year ago
parent
commit
22501a3ca2
  1. 5
      src/main/java/a8k/appbean/cfg/BottleGroupsPosInfo.java
  2. 4
      src/main/java/a8k/appbean/cfg/Pos3d.java
  3. 48
      src/main/java/a8k/service/hardware/HbotControlService.java

5
src/main/java/a8k/appbean/cfg/BottleGroupsPosInfo.java

@ -62,12 +62,13 @@ public class BottleGroupsPosInfo {
return HbotScanerPosComputer.getScanPos(new Pos2d(topLelf.x + scanCodeRelaPos.x, topLelf.y + scanCodeRelaPos.y)); return HbotScanerPosComputer.getScanPos(new Pos2d(topLelf.x + scanCodeRelaPos.x, topLelf.y + scanCodeRelaPos.y));
} }
Pos2d cgetSamllBottlePos(Integer group, Integer bottleIndex) {
public Pos2d cgetSmallBottleBufferPos(Integer group, Integer bottleIndex) {
Pos2d topLelf = cgetTopLelf(group); Pos2d topLelf = cgetTopLelf(group);
return smallBottleBufferPos.cgetBotPos(topLelf, bottleIndex); return smallBottleBufferPos.cgetBotPos(topLelf, bottleIndex);
} }
Pos2d cgetDetectMaterialPos(Integer group, Integer bottleIndex) {
public Pos2d cgetDetectMaterialPos(Integer group, Integer bottleIndex) {
Pos2d topLelf = cgetTopLelf(group); Pos2d topLelf = cgetTopLelf(group);
return detectMaterialPos.cgetBotPos(topLelf, bottleIndex); return detectMaterialPos.cgetBotPos(topLelf, bottleIndex);
} }

4
src/main/java/a8k/appbean/cfg/Pos3d.java

@ -17,4 +17,8 @@ public class Pos3d {
public Pos2d getXYPos() { public Pos2d getXYPos() {
return new Pos2d(x, y); return new Pos2d(x, y);
} }
public String toString() {
return String.format("(%d, %d, %d)", x, y, z);
}
} }

48
src/main/java/a8k/service/hardware/HbotControlService.java

@ -107,15 +107,15 @@ public class HbotControlService implements HardwareCtrlModule {
new Pos2d(741, 937), new Pos2d(741, 937),
1230, 1230,
1250, 1250,
new Pos2d(577, 1097),
new Pos2d(579, 1097),
new BottlesPosInfo/*大孔*/( new BottlesPosInfo/*大孔*/(
new Pos2d(175, 175),
new Pos2d(160, 160),
210, 210,
210, 210,
0 0
), ),
new BottlesPosInfo/*小孔*/( new BottlesPosInfo/*小孔*/(
new Pos2d(220, 220),
new Pos2d(215, 205),
187, 187,
187, 187,
0 0
@ -177,13 +177,17 @@ public class HbotControlService implements HardwareCtrlModule {
* @throws InterruptedException e * @throws InterruptedException e
*/ */
private void hbotCheckAndMoveTo(Pos3d targetPos) throws HardwareException, InterruptedException { private void hbotCheckAndMoveTo(Pos3d targetPos) throws HardwareException, InterruptedException {
logger.info("hbotCheckAndMoveTo:{}", targetPos);
if (!canBus.getIOState(IOId.PlateBoxCoverClosurePPS)) { if (!canBus.getIOState(IOId.PlateBoxCoverClosurePPS)) {
throw new HardwareException(A8kEcode.PlateBoxNotCover); throw new HardwareException(A8kEcode.PlateBoxNotCover);
} }
//Z轴归零 //Z轴归零
canBus.stepMotorEnable(MId.PipetteModZM, 1);
canBus.stepMotorEasyMoveToZeroPointQuickBlock(MId.PipetteModZM, getActionOvertime());
if (!getZPPS()) {
canBus.stepMotorEnable(MId.PipetteModZM, 1);
canBus.stepMotorEasyMoveToZeroPointQuickBlock(MId.PipetteModZM, getActionOvertime());
}
if (!getZPPS()) { if (!getZPPS()) {
throw new HardwareException(A8kEcode.ZMNotAtZPosWhenHbotTryMove); throw new HardwareException(A8kEcode.ZMNotAtZPosWhenHbotTryMove);
@ -203,8 +207,11 @@ public class HbotControlService implements HardwareCtrlModule {
canBus.hbotMoveToBlock(MId.HbotM, targetPos.x, targetPos.y, getActionOvertime()); canBus.hbotMoveToBlock(MId.HbotM, targetPos.x, targetPos.y, getActionOvertime());
//Z轴移动 //Z轴移动
if (targetPos.z != 0)
if (targetPos.z != 0) {
canBus.stepMotorEnable(MId.PipetteModZM, 1);
canBus.stepMotorEasyMoveToZeroPointQuickBlock(MId.PipetteModZM, getActionOvertime());
zMoveTo(targetPos.z); zMoveTo(targetPos.z);
}
} }
@ -313,6 +320,20 @@ public class HbotControlService implements HardwareCtrlModule {
hbotCheckAndMoveTo(new Pos2d(x, y)); hbotCheckAndMoveTo(new Pos2d(x, y));
} }
@HardwareServiceAction(name = "HBot移动到小瓶缓冲液X孔", group = "单步测试")
public void hbotMoveToSmallBottleGroup(ConsumableGroup group, Integer Xhole) throws HardwareException, InterruptedException {
BottleGroupsPosInfo posInfo = getBottleBufferPosInfo();
Pos2d pos = posInfo.cgetSmallBottleBufferPos(group.off, Xhole);
hbotCheckAndMoveTo(pos);
}
@HardwareServiceAction(name = "HBot移动到探测物质X孔", group = "单步测试")
public void hbotMoveToDetectMaterialPos(ConsumableGroup group, Integer Xhole) throws HardwareException, InterruptedException {
BottleGroupsPosInfo posInfo = getBottleBufferPosInfo();
Pos2d pos = posInfo.cgetDetectMaterialPos(group.off, Xhole);
hbotCheckAndMoveTo(pos);
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// 坐标获取工具 // 坐标获取工具
@ -352,6 +373,14 @@ public class HbotControlService implements HardwareCtrlModule {
} }
} }
Pos2d hbotRefPos = new Pos2d(0, 0);
@HardwareServiceAction(name = "设置HBOT参考坐标", group = "坐标获取工具")
public void openCodeScaner(Integer x, Integer y) throws HardwareException, InterruptedException {
hbotRefPos.x = x;
hbotRefPos.y = y;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// hbot移动到并扫码 // hbot移动到并扫码
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@ -489,5 +518,12 @@ public class HbotControlService implements HardwareCtrlModule {
return pos.toString(); return pos.toString();
} }
@HardwareServiceStatus(name = "HbotRelaPos")
public String getHbotRelaPos() throws HardwareException {
Pos2d pos = canBus.hbotReadPos(MId.HbotM);
pos.x -= hbotRefPos.x;
pos.y -= hbotRefPos.y;
return pos.toString();
}
} }
Loading…
Cancel
Save