Browse Source

fix:解决测试问题

master
王梦远 2 months ago
parent
commit
b1c4194740
  1. 24
      src/main/java/com/iflytop/sgs/app/cmd/control/CleanStartCommand.java
  2. 2
      src/main/java/com/iflytop/sgs/app/cmd/control/MoveToFeedAreaCommand.java
  3. 2
      src/main/java/com/iflytop/sgs/app/cmd/control/MoveToLiquidAreaCommand.java
  4. 9
      src/main/java/com/iflytop/sgs/app/cmd/control/XOriginCommand.java
  5. 5
      src/main/java/com/iflytop/sgs/app/cmd/selftest/MoveTestCommand.java
  6. 3
      src/main/java/com/iflytop/sgs/common/result/ResultCode.java

24
src/main/java/com/iflytop/sgs/app/cmd/control/CleanStartCommand.java

@ -55,26 +55,28 @@ public class CleanStartCommand extends BaseCommandHandler {
return runAsync(() -> {
deviceStateService.getDeviceState().getSolutionModule().setIdle(false);//设置占用
deviceStateService.getDeviceState().getSolutionModule().setPumping(true);//设置正在加液
solutionModuleService.solutionMotorMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//加液模块上升
transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint3D);//移动至加液时托盘位置点
boolean clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST);//监测夹爪是否有托盘
Assert.isTrue(clawTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_NO_TRAY));//夹爪必须有托盘
solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), solutionModuleMotorDownInTubeExtPositon);//加液模块下降进入试管抽取位置
solutionModuleService.liquidPumpMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), 0.1);//todo 测试准确后打开 pumpPosition
solutionModuleService.solutionMotorMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//加液模块上升
for (int i = 0; i < cycle; i++) {
for (int j = 0; j < jsonArray.size(); j++) {
int column = jsonArray.getInt(i);
solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), solutionModuleMotorDownInTubeExtPositon);//加液模块下降进入试管抽取位置
for (int j = 0; j < jsonArray.size(); j++) {
int column = jsonArray.getInt(j);
double distance = (column - 1) * trayTubeHorizontalSpacingDistance;//x轴移动距离
transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint3D.getX() + distance);//机械臂移动到试管位置
solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), solutionModuleMotorDownInTubeExtPositon);//加液模块下降进入试管抽取位置
for (int i = 0; i < cycle; i++) {
solutionModuleService.liquidValveSwitch(cmdDTO.getCommandId(), cmdDTO.getCommand(), ValveStateCode.water);//电磁阀对应通道打开
Thread.sleep(500);
solutionModuleService.liquidPumpMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), 0.1);//八通道蠕动泵 cleanWaterVolume * waterScale * 8
solutionModuleService.liquidValveSwitch(cmdDTO.getCommandId(), cmdDTO.getCommand(), ValveStateCode.waste);//电磁阀对应通道打开
Thread.sleep(500);
solutionModuleService.liquidPumpMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), 0.1);//八通道蠕动泵
double distance = (column - 1) * trayTubeHorizontalSpacingDistance;//x轴移动距离
transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint3D.getX() + distance);//机械臂移动到试管位置
}
solutionModuleService.solutionMotorMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//加液模块上升至最高移出试管
}
solutionModuleService.solutionMotorMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//加液模块上升至最高移出试管
deviceStateService.getDeviceState().getSolutionModule().setIdle(true);//设置占用解除
deviceStateService.getDeviceState().getSolutionModule().setPumping(false);//设置加液结束

2
src/main/java/com/iflytop/sgs/app/cmd/control/MoveToFeedAreaCommand.java

@ -65,6 +65,8 @@ public class MoveToFeedAreaCommand extends BaseCommandHandler {
transferModuleService.transferXMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), transferModuleXPickTrayMoveDistance);//X轴移出卡槽
transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高
} else {
boolean feedTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(targetHeatModuleCode);//获取传感器状态
Assert.isTrue(feedTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_NO_TRAY));//加热区无托盘
Point3D targetHeatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(targetHeatModuleCode);//获取目标加热模块托盘夹取点
transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), targetHeatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离
transferModuleService.transferZMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), targetHeatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点使托盘落入石墨加热盘

2
src/main/java/com/iflytop/sgs/app/cmd/control/MoveToLiquidAreaCommand.java

@ -68,6 +68,8 @@ public class MoveToLiquidAreaCommand extends BaseCommandHandler {
deviceStateService.getDeviceState().getSolutionModule().setFeedAreaTrayStatus(false);//设定上料区托盘状态
//deviceStateService.getDeviceState().getTrayByHeatModuleCode(targetHeatModuleCode).setInFeedArea(false);//设定托盘不在上料区中 todo 报错
} else {//有加热模块参数
boolean feedTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(targetHeatModuleCode);//获取传感器状态
Assert.isTrue(feedTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_NO_TRAY));//加热区无托盘
Point3D targetHeatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(targetHeatModuleCode);//获取目标加热模块托盘夹取点
transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), targetHeatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离
transferModuleService.transferZMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), targetHeatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点使托盘落入石墨加热盘

9
src/main/java/com/iflytop/sgs/app/cmd/control/XOriginCommand.java

@ -1,12 +1,17 @@
package com.iflytop.sgs.app.cmd.control;
import cn.hutool.core.lang.Assert;
import com.iflytop.sgs.app.core.BaseCommandHandler;
import com.iflytop.sgs.app.model.dto.CmdDTO;
import com.iflytop.sgs.app.service.device.DeviceCommandService;
import com.iflytop.sgs.app.service.device.DeviceSensorService;
import com.iflytop.sgs.common.annotation.CommandMapping;
import com.iflytop.sgs.common.cmd.CommandFuture;
import com.iflytop.sgs.common.cmd.DeviceCommandBundle;
import com.iflytop.sgs.common.cmd.DeviceCommandGenerator;
import com.iflytop.sgs.common.enums.DevicePartId;
import com.iflytop.sgs.common.exception.AppException;
import com.iflytop.sgs.common.result.ResultCode;
import com.iflytop.sgs.common.utils.CommandUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -23,10 +28,14 @@ import java.util.concurrent.CompletableFuture;
@CommandMapping("x_origin")
public class XOriginCommand extends BaseCommandHandler {
private final DeviceCommandService deviceCommandService;
private final DeviceSensorService deviceSensorService;
@Override
public CompletableFuture<Void> handle(CmdDTO cmdDTO) {
return runAsync(() -> {
//确保z轴的高度
Double zPosition = deviceSensorService.getMotorPosition(DevicePartId.ZM);
Assert.isTrue(zPosition <50, () -> new AppException(ResultCode.SOLUTION_MODULE_NO_TRAY));
DeviceCommandBundle deviceCommand = DeviceCommandGenerator.transferXOrigin();
CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdDTO.getCommandId(), cmdDTO.getCommand(), deviceCommand);
CommandUtil.wait(deviceCommandFuture);

5
src/main/java/com/iflytop/sgs/app/cmd/selftest/MoveTestCommand.java

@ -69,11 +69,6 @@ public class MoveTestCommand extends BaseCommandHandler {
transferModuleService.transferZMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), feedAreaTrayPoint3D.getZ());//Z轴下降至夹取点使托盘落入上料区
transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高
webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "4、z轴电机检测完毕", 100));
if(clawTrayExist){
transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(),feedAreaTrayPoint3D);//转移至加液区托盘点位
}
} finally {
deviceStateService.getCommandMutexState().get().setMoveTest(false);
}

3
src/main/java/com/iflytop/sgs/common/result/ResultCode.java

@ -61,7 +61,8 @@ public enum ResultCode implements IResultCode, Serializable {
FEED_AREA_NO_TRAY("6028", "上料区无托盘"),
SOLUTION_MODULE_IS_BUSY("6029", "加液模块正忙"),
ANNEAL_MODULE_EXIST_TRAY("6030", "退火模块存在托盘"),
HAVE_IN_ANNEAL_MODULE("6031", "已经在退热模块");
HAVE_IN_ANNEAL_MODULE("6031", "已经在退热模块"),
Z_IS_NOT_SAFE("6032", "Z轴位置不安全"),;
/** 状态码 */
private final String code;
/** 提示信息 */

Loading…
Cancel
Save