|
|
@ -1,13 +1,17 @@ |
|
|
|
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.bo.status.device.HeatModuleState; |
|
|
|
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.HeatingType; |
|
|
|
import com.iflytop.sgs.common.enums.data.DevicePositionCode; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.stereotype.Component; |
|
|
@ -22,18 +26,37 @@ import java.util.concurrent.CompletableFuture; |
|
|
|
@RequiredArgsConstructor |
|
|
|
@CommandMapping("anneal_start")//业务指令注解 |
|
|
|
public class AnnealStartCommand extends BaseCommandHandler { |
|
|
|
private final TransferModuleService transferModuleService; |
|
|
|
private final HeatModuleService heatModuleService; |
|
|
|
private final DeviceStateService deviceStateService; |
|
|
|
private final DevicePositionService devicePositionService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public CompletableFuture<Void> handle(CmdDTO cmdDTO) { |
|
|
|
HeatModuleCode heatModuleCode = HeatModuleCode.heat_module_04; |
|
|
|
//TODO 判断退火加热模块传感器是否有托盘 |
|
|
|
String targetHeatModuleCodeStr = cmdDTO.getStringParam("heatModuleCode"); |
|
|
|
HeatModuleCode targetHeatModuleCode = HeatModuleCode.valueOf(targetHeatModuleCodeStr); |
|
|
|
//TODO 判断目标加热模块传感器是否有托盘 |
|
|
|
HeatModuleCode annealHeatModuleCode = HeatModuleCode.heat_module_04; |
|
|
|
|
|
|
|
Point3D targetHeatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(targetHeatModuleCode);//获取目标加热模块托盘夹取点 |
|
|
|
Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离 |
|
|
|
Double transferModuleZPickTrayDownPositon = devicePositionService.getPosition(DevicePositionCode.transferModuleZPickTrayDownPositon).getPositon();//获取转运模块Z轴拿取托盘时下降的高度位置 |
|
|
|
Point3D annealHeatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(annealHeatModuleCode);//获取退火加热模块托盘夹取点 |
|
|
|
HeatModuleState heatModuleState = deviceStateService.getDeviceState().getHeatModuleByCode(annealHeatModuleCode);//获取设定的退火温度 |
|
|
|
double targetTemperature = heatModuleState.getAnnealTemperature(); |
|
|
|
heatModuleState.setTargetTemperature(targetTemperature);//将退火温度设定为目标温度 |
|
|
|
return runAsync(() -> { |
|
|
|
HeatModuleState heatModuleState = deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode); |
|
|
|
double targetTemperature = heatModuleState.getAnnealTemperature(); |
|
|
|
heatModuleState.setTargetTemperature(targetTemperature); |
|
|
|
heatModuleService.heatRodOpen(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleCode, targetTemperature); |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.annealing); |
|
|
|
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轴进入卡槽 |
|
|
|
transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高 |
|
|
|
transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), annealHeatModuleTrayClawPoint3D.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轴抬升至最高 |
|
|
|
heatModuleService.heatRodOpen(cmdDTO.getCommandId(), cmdDTO.getCommand(), annealHeatModuleCode, targetTemperature);//开启加热 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(annealHeatModuleCode).setHeatingType(HeatingType.annealing);//状态修改为退火中 |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|