14 changed files with 121 additions and 31 deletions
-
12src/main/java/com/iflytop/sgs/app/cmd/control/LiquidAddCommand.java
-
9src/main/java/com/iflytop/sgs/app/cmd/control/LiquidPreFillStartCommand.java
-
11src/main/java/com/iflytop/sgs/app/cmd/control/LiquidReduceCommand.java
-
78src/main/java/com/iflytop/sgs/app/cmd/control/MoveToAnnealAreaCommand.java
-
3src/main/java/com/iflytop/sgs/app/cmd/control/MoveToFeedAreaCommand.java
-
3src/main/java/com/iflytop/sgs/app/cmd/control/MoveToHeatAreaCommand.java
-
3src/main/java/com/iflytop/sgs/app/cmd/control/MoveToLiquidAreaCommand.java
-
13src/main/java/com/iflytop/sgs/app/cmd/selftest/TransferOriginCommand.java
-
1src/main/java/com/iflytop/sgs/app/service/device/DeviceInitService.java
-
1src/main/java/com/iflytop/sgs/app/service/device/DeviceSensorService.java
-
9src/main/java/com/iflytop/sgs/app/service/device/module/SolutionModuleService.java
-
3src/main/java/com/iflytop/sgs/common/result/ResultCode.java
-
2src/main/java/com/iflytop/sgs/hardware/config/LeiSaiServoConfig.java
-
4src/main/java/com/iflytop/sgs/hardware/config/StepMotorConfig.java
@ -0,0 +1,78 @@ |
|||
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.bo.Point3D; |
|||
import com.iflytop.sgs.app.model.dto.CmdDTO; |
|||
import com.iflytop.sgs.app.service.api.DevicePositionService; |
|||
import com.iflytop.sgs.app.service.device.DeviceSensorService; |
|||
import com.iflytop.sgs.app.service.device.DeviceStateService; |
|||
import com.iflytop.sgs.app.service.device.module.HeatModuleService; |
|||
import com.iflytop.sgs.app.service.device.module.SolutionModuleService; |
|||
import com.iflytop.sgs.app.service.device.module.TransferModuleService; |
|||
import com.iflytop.sgs.common.annotation.CommandMapping; |
|||
import com.iflytop.sgs.common.enums.DeviceSensorCode; |
|||
import com.iflytop.sgs.common.enums.HeatModuleCode; |
|||
import com.iflytop.sgs.common.enums.data.DevicePositionCode; |
|||
import com.iflytop.sgs.common.exception.AppException; |
|||
import com.iflytop.sgs.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 转移至退火区 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandMapping("move_to_anneal_area")//业务指令注解 |
|||
public class MoveToAnnealAreaCommand extends BaseCommandHandler { |
|||
private final HeatModuleService heatModuleService; |
|||
private final TransferModuleService transferModuleService; |
|||
|
|||
private final DevicePositionService devicePositionService; |
|||
private final DeviceStateService deviceStateService; |
|||
private final DeviceSensorService deviceSensorService; |
|||
private final SolutionModuleService solutionModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CmdDTO cmdDTO) throws Exception { |
|||
String heatModuleCodeStr = cmdDTO.getStringParam("heatModuleCode"); |
|||
HeatModuleCode heatModuleCode; |
|||
HeatModuleCode targetHeatModuleCode = HeatModuleCode.heat_module_04; |
|||
if (heatModuleCodeStr != null) {//目标加热模块非必填,如果没有传递目标加热模块则尝试获取上料区是否有托盘 |
|||
heatModuleCode = HeatModuleCode.valueOf(heatModuleCodeStr);//目标加热模块 |
|||
Assert.isTrue(heatModuleCode.equals(targetHeatModuleCode), () -> new AppException(ResultCode.HAVE_IN_ANNEAL_MODULE)); |
|||
} else { |
|||
heatModuleCode = null; |
|||
} |
|||
Point3D heatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(heatModuleCode);//获取加热模块托盘夹取点 |
|||
Point3D targetHeatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(targetHeatModuleCode);//获取目标加热模块托盘夹取点 |
|||
Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离 |
|||
Double transferModuleZPickTrayDownPositon = devicePositionService.getPosition(DevicePositionCode.transferModuleZPickTrayDownPositon).getPositon();//获取转运模块Z轴拿取托盘时下降的高度位置 |
|||
Point3D liquidAreaTrayPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D(); //获取加液区上方点位 |
|||
return runAsync(() -> { |
|||
boolean annealTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.HEATER_TRAY_4_EXIST);//获取传感器状态 |
|||
Assert.isTrue(annealTrayExist, () -> new AppException(ResultCode.ANNEAL_MODULE_EXIST_TRAY));//加热位是否有托盘 |
|||
if (heatModuleCode != null) { |
|||
solutionModuleService.solutionMotorMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//加液机械臂上升 |
|||
transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint);//移动至加液位置 |
|||
boolean liquidTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//获取传感器状态 |
|||
Assert.isTrue(liquidTrayExist, () -> new AppException(ResultCode.OPERATION_NOT_ALLOWED));//判断机械臂是否有托盘 |
|||
transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至加热区托盘夹取点 + 进出卡槽移动距离 |
|||
transferModuleService.transferZMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), transferModuleZPickTrayDownPositon);//Z轴下降至夹取点,使托盘落入石墨加热盘 |
|||
transferModuleService.transferXMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), -transferModuleXPickTrayMoveDistance);//X轴进入卡槽 |
|||
} |
|||
transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高 |
|||
transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), targetHeatModuleTrayClawPoint3D.getX());//将X轴移动至目标加热模块托盘夹取点 |
|||
transferModuleService.transferZMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), transferModuleZPickTrayDownPositon);//Z轴下降至夹取点,使托盘落入石墨加热盘 |
|||
transferModuleService.transferXMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), transferModuleXPickTrayMoveDistance);//X轴移出卡槽 |
|||
transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高 |
|||
deviceStateService.getDeviceState().getHeatModuleByCode(targetHeatModuleCode).setTrayStatus(true);//设置目标加热区有托盘 |
|||
}); |
|||
} |
|||
} |
|||
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue