3 changed files with 78 additions and 2 deletions
-
76src/main/java/com/iflytop/sgs/app/cmd/control/MoveToFeedAreaCommand.java
-
2src/main/java/com/iflytop/sgs/app/cmd/control/MoveToHeatAreaCommand.java
-
2src/main/java/com/iflytop/sgs/app/cmd/control/MoveToLiquidAreaCommand.java
@ -0,0 +1,76 @@ |
|||
package com.iflytop.sgs.app.cmd.control; |
|||
|
|||
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.DeviceStateService; |
|||
import com.iflytop.sgs.app.service.device.module.HeatModuleService; |
|||
import com.iflytop.sgs.app.service.device.module.TransferModuleService; |
|||
import com.iflytop.sgs.common.annotation.CommandMapping; |
|||
import com.iflytop.sgs.common.enums.HeatModuleCode; |
|||
import com.iflytop.sgs.common.enums.data.DevicePositionCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 将加液位或目标加热模块托盘移至上下料区 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandMapping("move_to_feed_area")//业务指令注解 |
|||
public class MoveToFeedAreaCommand extends BaseCommandHandler { |
|||
private final HeatModuleService heatModuleService; |
|||
private final TransferModuleService transferModuleService; |
|||
|
|||
private final DevicePositionService devicePositionService; |
|||
private final DeviceStateService deviceStateService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CmdDTO cmdDTO) throws Exception { |
|||
String targetHeatModuleCodeStr = cmdDTO.getStringParam("heatModuleCode"); |
|||
HeatModuleCode targetHeatModuleCode;//目标加热模块 |
|||
if (targetHeatModuleCodeStr != null) {//目标加热模块非必填,如果没有传递目标加热模块则尝试获取加液位是否有托盘 |
|||
targetHeatModuleCode = HeatModuleCode.valueOf(targetHeatModuleCodeStr); |
|||
} else { |
|||
targetHeatModuleCode = null; |
|||
//TODO 尝试获取加液位是否有托盘,如果没有托盘则提示错误 |
|||
} |
|||
|
|||
Point3D targetHeatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(targetHeatModuleCode);//获取目标加热模块托盘夹取点 |
|||
Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离 |
|||
Double transferModuleZPickTrayDownPositon = devicePositionService.getPosition(DevicePositionCode.transferModuleZPickTrayDownPositon).getPositon();//获取转运模块Z轴拿取托盘时下降的高度位置 |
|||
Point3D feedAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.feedAreaTrayPoint).getPoint3D();//获取上料区托盘夹爪位置点 |
|||
|
|||
return runAsync(() -> { |
|||
if (targetHeatModuleCode == null) { |
|||
//获取加液位托盘 |
|||
deviceStateService.getDeviceState().getTrayByHeatModuleCode(targetHeatModuleCode).setInSolutionPositon(false);//设定托盘不在加液位中 |
|||
transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), feedAreaTrayPoint3D.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轴抬升至最高 |
|||
|
|||
} else { |
|||
//获取目标加热模块托盘 |
|||
transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), targetHeatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离 |
|||
transferModuleService.transferZMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), transferModuleZPickTrayDownPositon);//Z轴下降至夹取点,使托盘落入石墨加热盘 |
|||
transferModuleService.transferXMoveBy(cmdDTO.getCommandId(), cmdDTO.getCommand(), -transferModuleXPickTrayMoveDistance);//X轴进入卡槽 |
|||
deviceStateService.getDeviceState().getHeatModuleByCode(targetHeatModuleCode).setTrayStatus(false);//设定目标加热模块托盘状态 |
|||
deviceStateService.getDeviceState().getTrayByHeatModuleCode(targetHeatModuleCode).setInHeatModule(false);//设定托盘不在加热模块中 |
|||
deviceStateService.getDeviceState().getTransferModule().setTrayStatus(true);//设定托盘在机械臂上 |
|||
transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高 |
|||
transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), feedAreaTrayPoint3D.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().getSolutionModule().setFeedAreaTrayStatus(true);//设定上料区托盘状态 |
|||
}); |
|||
} |
|||
} |
|||
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue