|
|
@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.iflytop.sgs.app.core.CraftsDebugGenerator; |
|
|
|
import com.iflytop.sgs.app.model.bo.CraftsStep; |
|
|
|
import com.iflytop.sgs.app.model.bo.Point3D; |
|
|
|
import com.iflytop.sgs.app.model.bo.status.device.TrayState; |
|
|
|
import com.iflytop.sgs.app.model.bo.status.device.TubeState; |
|
|
|
import com.iflytop.sgs.app.model.entity.Container; |
|
|
|
import com.iflytop.sgs.app.model.entity.CraftMonitor; |
|
|
@ -24,6 +25,7 @@ import com.iflytop.sgs.app.ws.server.WebSocketSender; |
|
|
|
import com.iflytop.sgs.common.constant.WebSocketMessageType; |
|
|
|
import com.iflytop.sgs.common.enums.*; |
|
|
|
import com.iflytop.sgs.common.enums.cmd.CmdBeepMode; |
|
|
|
import com.iflytop.sgs.common.enums.data.CraftsPreHeatType; |
|
|
|
import com.iflytop.sgs.common.enums.data.DevicePositionCode; |
|
|
|
import com.iflytop.sgs.common.exception.AppException; |
|
|
|
import com.iflytop.sgs.common.result.ResultCode; |
|
|
@ -58,7 +60,7 @@ public class CraftsStepService { |
|
|
|
private final SystemConfigService systemConfigService; |
|
|
|
private final DeviceLightSoundService deviceLightSoundService; |
|
|
|
private final CraftMonitorService craftMonitorService; |
|
|
|
private DoorModuleService doorModuleService; |
|
|
|
private final DoorModuleService doorModuleService; |
|
|
|
|
|
|
|
/** |
|
|
|
* 执行单个工艺步骤 |
|
|
@ -90,17 +92,30 @@ public class CraftsStepService { |
|
|
|
* 退火区预热 |
|
|
|
* */ |
|
|
|
public boolean preHeat(HeatModuleCode heatModuleCode, JSONObject params, CraftMonitor craftMonitor) throws Exception { |
|
|
|
|
|
|
|
Double temperature = params.getDouble("temperature"); |
|
|
|
log.info("工艺{},预热", HeatModuleCode.heat_module_04); |
|
|
|
heatModuleService.heatRodOpen(HeatModuleCode.heat_module_04, temperature); |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setTargetTemperature(temperature);//设置加热温度 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setHeatingType(HeatingType.heating);//加热中 |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(HeatModuleCode.heat_module_04.toString(), "退火区加热中", temperature)); |
|
|
|
String type = params.getStr("type"); |
|
|
|
CraftsPreHeatType preHeatType= CraftsPreHeatType.valueOf(type); |
|
|
|
if(preHeatType.equals(CraftsPreHeatType.anneal)){ |
|
|
|
heatModuleService.fanClose(HeatModuleCode.heat_module_04);//关闭风扇 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setFanOpen(false);//同步状态 |
|
|
|
heatModuleService.heatRodOpen(HeatModuleCode.heat_module_04, temperature); |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setTargetTemperature(temperature);//设置加热温度 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setHeatingType(HeatingType.heating);//加热中 |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(HeatModuleCode.heat_module_04.toString(), "退火区预热中", temperature)); |
|
|
|
}else{ |
|
|
|
heatModuleService.fanClose(heatModuleCode);//关闭风扇 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setFanOpen(false);//同步状态 |
|
|
|
heatModuleService.heatRodOpen(heatModuleCode, temperature); |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTargetTemperature(temperature);//设置加热温度 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.heating);//加热中 |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "加热区预热中", temperature)); |
|
|
|
} |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
/* |
|
|
|
* 执行加稀硝酸 浓硝酸 清洗前关门 前端开门按钮设置为不可操作 |
|
|
|
* 执行加稀硝酸 浓硝酸 清洗前关门 前端 开门 按钮设置为不可操作 |
|
|
|
* */ |
|
|
|
public void doorClose() throws HardwareException, InterruptedException { |
|
|
|
doorModuleService.doorClose(); |
|
|
@ -112,7 +127,7 @@ public class CraftsStepService { |
|
|
|
} |
|
|
|
|
|
|
|
/* |
|
|
|
* 执行加稀硝酸 浓硝酸 清洗后关门 前端开门按钮设置为可操作 |
|
|
|
* 执行加稀硝酸 浓硝酸 清洗后关门 前端 开门 按钮设置为可操作 |
|
|
|
* */ |
|
|
|
public void doorAble() { |
|
|
|
deviceStateService.getDeviceState().getDoorModule().setActionable(true); |
|
|
@ -126,16 +141,13 @@ public class CraftsStepService { |
|
|
|
|
|
|
|
/*关门*/ |
|
|
|
doorClose(); |
|
|
|
log.info("工艺{},-------------------------------------加稀硝酸-------------------------------------", heatModuleCode); |
|
|
|
/*工艺监控*/ |
|
|
|
log.info("工艺{},工艺监控", heatModuleCode); |
|
|
|
List<Integer> finishColumns = new ArrayList<>(); |
|
|
|
craftMonitor.setCurrentStepResult(CraftsMonitorResultCode.add_liquid_column.getDescription() + Arrays.toString(finishColumns.toArray())); |
|
|
|
craftMonitorService.saveMonitor(craftMonitor); |
|
|
|
/*工艺监控结束*/ |
|
|
|
|
|
|
|
/*获取配置信息*/ |
|
|
|
log.info("工艺{},获取配置信息", heatModuleCode); |
|
|
|
deviceStateService.getDeviceState().getSolutionModule().setPumping(true); |
|
|
|
Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离 |
|
|
|
Point3D feedAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.feedAreaTrayPoint).getPoint3D();//获取上料区托盘夹取位置点 |
|
|
@ -152,13 +164,12 @@ public class CraftsStepService { |
|
|
|
double scale = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.valueOf(solutions.getCode()));//获取转换比 |
|
|
|
Double solutionModuleMotorDownInTubeAddPositon = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownInTubeAddPositon).getPositon(); //加液模块电机下降进入试管加液位置 |
|
|
|
double addLiquidDistance = volume * scale; |
|
|
|
Point3D heatArea1TrayClawPoint = devicePositionService.getPosition(DevicePositionCode.heatArea1TrayClawPoint).getPoint3D();//加热位1坐标 |
|
|
|
Point3D heatArea1TrayClawPoint = devicePositionService.getPosition(DevicePositionCode.heatArea1TrayClawPoint).getPoint3D();//加热位1 坐标 |
|
|
|
Double liquidAreaPreFillPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaPreFillPoint).getPositon(); //预充时加液臂下降位置 |
|
|
|
Double backFlowDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.back_flow_distance);//防低落距离 |
|
|
|
double pumpNormalSpeed = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.pump_normal_speed);//蠕动泵正常转速 |
|
|
|
/*获取参数结束*/ |
|
|
|
|
|
|
|
log.info("工艺{},申请转运模组并等待", heatModuleCode); |
|
|
|
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_thin);//申请转运模组并等待 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setUseArm(true);//使用机械臂标志 |
|
|
|
|
|
|
@ -166,51 +177,41 @@ public class CraftsStepService { |
|
|
|
/*移动至加液区开始*/ |
|
|
|
boolean feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//获取上料区传感器状态 |
|
|
|
Assert.isTrue(feedTrayExist, () -> new AppException(ResultCode.FEED_AREA_NO_TRAY)); |
|
|
|
log.info("工艺{},加液机械臂上升", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 |
|
|
|
transferModuleService.transferMoveZero();//z轴上升 |
|
|
|
log.info("工艺{},机械臂移动至上料区", heatModuleCode); |
|
|
|
transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点 |
|
|
|
boolean clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST);//获取传感器状态 |
|
|
|
Assert.isTrue(!clawTrayExist, () -> new AppException(ResultCode.CRAFT_SOLUTION_EXIST_TRAY));//加液区无托盘 |
|
|
|
|
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至上料区", feedAreaTrayPoint3D)); |
|
|
|
log.info("工艺{},将X轴移动至上料区托盘夹取点 + 进出卡槽移动距离", heatModuleCode); |
|
|
|
transferModuleService.transferMoveZero();//z轴上升 |
|
|
|
transferModuleService.transferXMove(feedAreaTrayPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至上料区托盘夹取点 + 进出卡槽移动距离 |
|
|
|
log.info("工艺{},Z轴下降至夹取点,使托盘落入石墨加热盘", heatModuleCode); |
|
|
|
feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//获取上料区传感器状态 |
|
|
|
Assert.isTrue(feedTrayExist, () -> new AppException(ResultCode.FEED_AREA_NO_TRAY)); |
|
|
|
transferModuleService.transferZMove(feedAreaTrayPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 |
|
|
|
log.info("工艺{},X轴进入卡槽", heatModuleCode); |
|
|
|
transferModuleService.transferXMoveBy(-transferModuleXPickTrayMoveDistance);//X轴进入卡槽 |
|
|
|
deviceStateService.getDeviceState().getSolutionModule().setFeedAreaTrayStatus(false);//加热区托盘状态 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInFeedArea(false);//托盘状态 |
|
|
|
log.info("工艺{},Z轴抬升至最高", heatModuleCode); |
|
|
|
transferModuleService.transferZMoveZero();//Z轴抬升至最高 |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加液区", DevicePositionCode.liquidAreaTrayPoint.name())); |
|
|
|
log.info("工艺{},移动至加液时托盘位置点", heatModuleCode); |
|
|
|
transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点 |
|
|
|
deviceStateService.getDeviceState().getSolutionModule().setPumping(true);//正在加液 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInSolutionPositon(true);//托盘状态 |
|
|
|
boolean clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST);//获取传感器状态 |
|
|
|
clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST);//获取传感器状态 |
|
|
|
Assert.isTrue(clawTrayExist, () -> new AppException(ResultCode.CRAFT_SOLUTION_NO_TRAY));//加液区无托盘 |
|
|
|
/*移动至加液区结束*/ |
|
|
|
|
|
|
|
|
|
|
|
/*预充开始*/ |
|
|
|
log.info("工艺{},预充开始", heatModuleCode); |
|
|
|
transferModuleService.transferXMove(heatArea1TrayClawPoint.getX());//转运模块移动至加热位1 |
|
|
|
log.info("工艺{},加液机械臂下降至预充位置", heatModuleCode); |
|
|
|
feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//获取传感器状态 |
|
|
|
Assert.isTrue(!feedTrayExist, () -> new AppException(ResultCode.FEED_AREA_EXIST_TRAY));//上料区存在托盘 |
|
|
|
solutionModuleService.solutionMotorMove(liquidAreaPreFillPoint);//加液机械臂下降至至预充点位 |
|
|
|
log.info("工艺{},电磁阀对应通道打开", heatModuleCode); |
|
|
|
solutionModuleService.liquidValveSwitch(SolutionCode.waste);//电磁阀对应通道打开 |
|
|
|
solutionModuleService.liquidPumpSetSpeed(pumpNormalSpeed);//设置泵的正常转速 |
|
|
|
log.info("工艺{},排空", heatModuleCode); |
|
|
|
solutionModuleService.liquidPumpMove(-drainDistance);//排空 |
|
|
|
log.info("工艺{},电磁阀对应通道打开", heatModuleCode); |
|
|
|
solutionModuleService.liquidValveSwitchByChannel(channel);//电磁阀对应通道打开 |
|
|
|
log.info("工艺{},预充", heatModuleCode); |
|
|
|
solutionModuleService.liquidPumpMove(preFillDistance);//预充 |
|
|
|
solutionModuleService.liquidPumpMove(-backFlowDistance);//预充 |
|
|
|
log.info("工艺{},加液机械臂上升", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 |
|
|
|
/*预充结束*/ |
|
|
|
|
|
|
@ -233,14 +234,10 @@ public class CraftsStepService { |
|
|
|
for (int i = 0; i < columns.size(); i++) { |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "移动加液机械臂到指定试管", i)); |
|
|
|
double distance = Math.abs(columns.get(i) - 5) * trayTubeHorizontalSpacingDistance;//机械臂右移距离 |
|
|
|
log.info("工艺{},机械臂移动到试管位置{}", heatModuleCode, i); |
|
|
|
transferModuleService.transferXMove(liquidAreaTrayPoint3D.getX() + distance);//机械臂移动到试管位置 |
|
|
|
log.info("工艺{},加液机械臂下降", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMove(solutionModuleMotorDownInTubeAddPositon);//加液机械臂下降 |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "添加溶液", addLiquidDistance)); |
|
|
|
log.info("工艺{},加液", heatModuleCode); |
|
|
|
solutionModuleService.liquidPumpMove(addLiquidDistance);//加液 position |
|
|
|
log.info("工艺{},加液机械臂上升", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 |
|
|
|
/*工艺监控开始*/ |
|
|
|
finishColumns.add(i); |
|
|
@ -257,15 +254,11 @@ public class CraftsStepService { |
|
|
|
boolean heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有无托盘 |
|
|
|
Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_HEAT_EXIST_TRAY));//提示被占用 |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode)); |
|
|
|
log.info("工艺{},加液机械臂上升", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 |
|
|
|
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode); |
|
|
|
transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX());//将X轴移动至目标加热模块托盘夹取点 |
|
|
|
heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有无托盘 |
|
|
|
Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_HEAT_EXIST_TRAY));//提示被占用 |
|
|
|
log.info("工艺{},Z轴下降至夹取点", heatModuleCode); |
|
|
|
transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 |
|
|
|
log.info("工艺{},X轴移出卡槽", heatModuleCode); |
|
|
|
transferModuleService.transferXMoveBy(transferModuleXPickTrayMoveDistance);//X轴移出卡槽 |
|
|
|
transferModuleService.transferZMoveZero();//Z轴抬升至最高 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(true);//加热区托盘状态 |
|
|
@ -291,18 +284,15 @@ public class CraftsStepService { |
|
|
|
public boolean addThick(HeatModuleCode heatModuleCode, JSONObject params, CraftMonitor craftMonitor) throws Exception { |
|
|
|
try { |
|
|
|
|
|
|
|
log.info("工艺{},------------------------------加浓硝酸---------------------------", heatModuleCode); |
|
|
|
/*关门*/ |
|
|
|
doorClose(); |
|
|
|
/*工艺监控*/ |
|
|
|
log.info("工艺{},工艺监控", heatModuleCode); |
|
|
|
List<Integer> finishColumns = new ArrayList<>(); |
|
|
|
craftMonitor.setCurrentStepResult(CraftsMonitorResultCode.add_liquid_column.getDescription() + Arrays.toString(finishColumns.toArray())); |
|
|
|
craftMonitorService.saveMonitor(craftMonitor); |
|
|
|
/*工艺监控结束*/ |
|
|
|
|
|
|
|
/*获取配置信息*/ |
|
|
|
log.info("工艺{},获取配置信息", heatModuleCode); |
|
|
|
deviceStateService.getDeviceState().getSolutionModule().setPumping(true); |
|
|
|
Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离 |
|
|
|
Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液时托盘位置点 |
|
|
@ -340,7 +330,6 @@ public class CraftsStepService { |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
log.info("工艺{},申请转运模组并等待", heatModuleCode); |
|
|
|
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_thick);//申请转运模组并等待 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setUseArm(true);//使用机械臂标志 |
|
|
|
|
|
|
@ -348,32 +337,28 @@ public class CraftsStepService { |
|
|
|
/*移动至加液区*/ |
|
|
|
boolean heatTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//获取加热区托盘 |
|
|
|
Assert.isTrue(heatTrayExist, () -> new AppException(ResultCode.CRAFT_HEAT_NO_TRAY));//目标加热区无托盘 |
|
|
|
log.info("工艺{},加热区存在托盘", heatModuleCode); |
|
|
|
log.info("工艺{},机械臂移动至加热区", heatModuleCode); |
|
|
|
transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点 |
|
|
|
boolean clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST);//获取传感器状态 |
|
|
|
Assert.isTrue(!clawTrayExist, () -> new AppException(ResultCode.CRAFT_SOLUTION_EXIST_TRAY));//加液区存在托盘 |
|
|
|
|
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode.name())); |
|
|
|
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离", heatModuleCode); |
|
|
|
transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离 |
|
|
|
log.info("工艺{},Z轴下降至夹取点", heatModuleCode); |
|
|
|
heatTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//获取加热区托盘 |
|
|
|
Assert.isTrue(heatTrayExist, () -> new AppException(ResultCode.CRAFT_HEAT_NO_TRAY));//目标加热区无托盘 |
|
|
|
transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点 |
|
|
|
log.info("工艺{},X轴进入卡槽", heatModuleCode); |
|
|
|
transferModuleService.transferXMoveBy(-transferModuleXPickTrayMoveDistance);//X轴进入卡槽 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(false);//加热区托盘状态 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInHeatModule(false);//托盘状态 |
|
|
|
log.info("工艺{},Z轴抬升至最高", heatModuleCode); |
|
|
|
transferModuleService.transferZMoveZero();//Z轴抬升至最高 |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加液区", DevicePositionCode.liquidAreaTrayPoint.name())); |
|
|
|
log.info("工艺{},移动至加液时托盘位置点", heatModuleCode); |
|
|
|
transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInSolutionPositon(true);//托盘状态 |
|
|
|
boolean clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST);//获取传感器状态 |
|
|
|
clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST);//获取传感器状态 |
|
|
|
Assert.isTrue(clawTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_NO_TRAY));//加液区无托盘 |
|
|
|
/*移动至加液区结束*/ |
|
|
|
|
|
|
|
|
|
|
|
/*开始抽液*/ |
|
|
|
log.info("工艺{},开始抽液", heatModuleCode); |
|
|
|
solutionModuleService.liquidValveSwitch(SolutionCode.waste);//电磁阀转换到废液 |
|
|
|
solutionModuleService.liquidPumpSetSpeed(pumpReduceSpeed);//设置泵的抽取转速 |
|
|
|
List<Integer> reduceColumns = new ArrayList<>(); |
|
|
@ -387,14 +372,10 @@ public class CraftsStepService { |
|
|
|
for (int i = 0; i < reduceColumns.size(); i++) { |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "移动加液机械臂到指定试管", i)); |
|
|
|
double distance = Math.abs(reduceColumns.get(i) - 5) * trayTubeHorizontalSpacingDistance;//机械臂右移距离 |
|
|
|
log.info("工艺{},机械臂移动到试管位置{}", heatModuleCode, i); |
|
|
|
transferModuleService.transferXMove(liquidAreaTrayPoint3D.getX() + distance);//机械臂移动到试管位置 |
|
|
|
log.info("工艺{},加液机械臂下降", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMove(solutionModuleMotorDownInTubeExtPositon + height);//加液机械臂下降 |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "抽取溶液", addLiquidDistance)); |
|
|
|
log.info("工艺{},加液", heatModuleCode); |
|
|
|
solutionModuleService.liquidPumpMove(-reduceDistance);//加液 position |
|
|
|
log.info("工艺{},加液机械臂上升", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 |
|
|
|
} |
|
|
|
solutionModuleService.liquidPumpMove(-backFlowDistance);//预充 |
|
|
@ -406,34 +387,25 @@ public class CraftsStepService { |
|
|
|
/*预充开始*/ |
|
|
|
boolean feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//获取传感器状态 |
|
|
|
Assert.isTrue(!feedTrayExist, () -> new AppException(ResultCode.FEED_AREA_EXIST_TRAY));//上料区有托盘 |
|
|
|
log.info("工艺{},预充开始", heatModuleCode); |
|
|
|
log.info("工艺{},加液机械臂上升", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 |
|
|
|
transferModuleService.transferXMove(heatArea1TrayClawPoint.getX());//转运模块移动至加热位1 |
|
|
|
feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//获取传感器状态 |
|
|
|
Assert.isTrue(!feedTrayExist, () -> new AppException(ResultCode.FEED_AREA_EXIST_TRAY));//上料区有托盘 |
|
|
|
solutionModuleService.solutionMotorMove(liquidAreaPreFillPoint);//加液机械臂下降至至预充点位 |
|
|
|
log.info("工艺{},电磁阀对应通道打开", heatModuleCode); |
|
|
|
solutionModuleService.liquidValveSwitch(SolutionCode.waste);//电磁阀对应通道打开 |
|
|
|
solutionModuleService.liquidPumpSetSpeed(pumpNormalSpeed);//设置泵的正常转速 |
|
|
|
log.info("工艺{},排空", heatModuleCode); |
|
|
|
solutionModuleService.liquidPumpMove(-drainDistance);//排空 |
|
|
|
log.info("工艺{},电磁阀对应通道打开", heatModuleCode); |
|
|
|
solutionModuleService.liquidValveSwitchByChannel(channel);//电磁阀对应通道打开 |
|
|
|
log.info("工艺{},预充", heatModuleCode); |
|
|
|
solutionModuleService.liquidPumpMove(preFillDistance);//预充 |
|
|
|
solutionModuleService.liquidPumpMove(-backFlowDistance);//预充 |
|
|
|
log.info("工艺{},加液机械臂上升", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 |
|
|
|
/*预充结束*/ |
|
|
|
|
|
|
|
/*移动至加液区*/ |
|
|
|
log.info("工艺{},移动至加液区", heatModuleCode); |
|
|
|
transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液至托盘位置点 |
|
|
|
/*移动至加液区*/ |
|
|
|
|
|
|
|
/*开始加液*/ |
|
|
|
log.info("工艺{},开始加液", heatModuleCode); |
|
|
|
List<Integer> addColumns; |
|
|
|
if (jsonArray != null) { |
|
|
|
addColumns = new ArrayList<>(); |
|
|
@ -447,14 +419,10 @@ public class CraftsStepService { |
|
|
|
for (int i = 0; i < addColumns.size(); i++) { |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "移动加液机械臂到指定试管", addColumns.get(i))); |
|
|
|
double distance = Math.abs(addColumns.get(i) - 5) * trayTubeHorizontalSpacingDistance;//机械臂右移距离 |
|
|
|
log.info("工艺{},机械臂移动到试管位置{}", heatModuleCode, i); |
|
|
|
transferModuleService.transferXMove(liquidAreaTrayPoint3D.getX() + distance);//机械臂移动到试管位置 |
|
|
|
log.info("工艺{},加液机械臂下降", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMove(solutionModuleMotorDownInTubeAddPositon);//加液机械臂下降 |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "添加溶液", addLiquidDistance)); |
|
|
|
log.info("工艺{},加液", heatModuleCode); |
|
|
|
solutionModuleService.liquidPumpMove(addLiquidDistance);//加液 position |
|
|
|
log.info("工艺{},加液机械臂上升", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 |
|
|
|
/*工艺监控开始*/ |
|
|
|
finishColumns.add(i); |
|
|
@ -468,19 +436,14 @@ public class CraftsStepService { |
|
|
|
/*结束加液*/ |
|
|
|
|
|
|
|
/*移动至加热区*/ |
|
|
|
log.info("工艺{},移动至加热区", heatModuleCode); |
|
|
|
boolean heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有无托盘 |
|
|
|
Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_HEAT_EXIST_TRAY));//提示被占用 |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode)); |
|
|
|
log.info("工艺{},加液机械臂上升", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 |
|
|
|
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode); |
|
|
|
transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX());//将X轴移动至目标加热模块托盘夹取点 |
|
|
|
log.info("工艺{},Z轴下降至夹取点", heatModuleCode); |
|
|
|
heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有托盘 |
|
|
|
Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_HEAT_EXIST_TRAY));//提示被占用 |
|
|
|
transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 |
|
|
|
log.info("工艺{},X轴移出卡槽", heatModuleCode); |
|
|
|
transferModuleService.transferXMoveBy(transferModuleXPickTrayMoveDistance);//X轴移出卡槽 |
|
|
|
transferModuleService.transferZMoveZero();//Z轴抬升至最高 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(true);//加热区托盘状态 |
|
|
@ -515,15 +478,12 @@ public class CraftsStepService { |
|
|
|
|
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.heating); //设置加热区状态 加热中 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTargetTemperature(temperature);//将加热温度设定为目标温度 |
|
|
|
log.info("工艺{},开始加热", heatModuleCode); |
|
|
|
heatModuleService.fanClose(heatModuleCode);//关闭风扇 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setFanOpen(false); //设置加热区风扇关闭 |
|
|
|
heatModuleService.heatRodOpen(heatModuleCode, temperature);//打开加热棒 |
|
|
|
while (!heatIsSuitable(heatModuleCode, temperature)) {//判断温度是否到达 |
|
|
|
TimeUnit.SECONDS.sleep(1); |
|
|
|
} |
|
|
|
log.info("工艺{},温度达到", heatModuleCode); |
|
|
|
log.info("工艺{},恒温时间", time); |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "温度达到", temperature)); |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.constant); //恒温中 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setStartHeatTime(LocalDateTime.now());//开始加热时间 |
|
|
@ -531,10 +491,7 @@ public class CraftsStepService { |
|
|
|
int clock = 0; |
|
|
|
int cycle = time / 60; |
|
|
|
int seconds = time % 60; |
|
|
|
log.info("工艺{},恒温时间分钟:", cycle); |
|
|
|
log.info("工艺{},恒温时间秒数:", seconds); |
|
|
|
while (cycle > 0) { |
|
|
|
log.info("工艺,恒温第{}分:", cycle); |
|
|
|
TimeUnit.SECONDS.sleep(60); |
|
|
|
cycle--; |
|
|
|
clock = clock + 60; |
|
|
@ -545,11 +502,9 @@ public class CraftsStepService { |
|
|
|
/*保存到工艺监控*/ |
|
|
|
} |
|
|
|
TimeUnit.SECONDS.sleep(seconds); |
|
|
|
log.info("工艺,恒温结束:"); |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setStartHeatTime(null);//开始加热时间 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTargetTime(null);//加热器目标加热时间 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.finish); //加热完成 |
|
|
|
log.info("工艺{},加热结束", heatModuleCode); |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "加热结束,持续时间", time)); |
|
|
|
return true; |
|
|
|
} catch (Exception e) { |
|
|
@ -564,7 +519,6 @@ public class CraftsStepService { |
|
|
|
* */ |
|
|
|
public boolean clean(HeatModuleCode heatModuleCode, JSONObject params, CraftMonitor craftMonitor) throws Exception { |
|
|
|
try { |
|
|
|
log.info("工艺{},----------------------------------清洗---------------------------------------------", heatModuleCode); |
|
|
|
/*关门*/ |
|
|
|
doorClose(); |
|
|
|
/*保存到监控开始*/ |
|
|
@ -604,23 +558,20 @@ public class CraftsStepService { |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleTrayClawPoint3D)); |
|
|
|
/*获取参数结束*/ |
|
|
|
|
|
|
|
log.info("工艺{},申请转运模组并等待", heatModuleCode); |
|
|
|
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_thick);//申请转运模组并等待 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setUseArm(true);//使用机械臂标志 |
|
|
|
|
|
|
|
log.info("工艺{},加液机械臂上升", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 |
|
|
|
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离", heatModuleCode); |
|
|
|
transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点 |
|
|
|
boolean clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST);//获取传感器状态 |
|
|
|
Assert.isTrue(!clawTrayExist, () -> new AppException(ResultCode.CRAFT_SOLUTION_EXIST_TRAY));//加液区存在托盘 |
|
|
|
|
|
|
|
transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离 |
|
|
|
log.info("工艺{},Z轴下降至夹取点", heatModuleCode); |
|
|
|
heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有无托盘 |
|
|
|
Assert.isTrue(heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_TARGET_HEAT_NO_TRAY));//提示工艺加热区无托盘 |
|
|
|
transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点 |
|
|
|
log.info("工艺{},X轴进入卡槽", heatModuleCode); |
|
|
|
transferModuleService.transferXMoveBy(-transferModuleXPickTrayMoveDistance);//X轴进入卡槽 |
|
|
|
log.info("工艺{},Z轴抬升至最高", heatModuleCode); |
|
|
|
transferModuleService.transferZMoveZero();//Z轴抬升至最高 |
|
|
|
log.info("工艺{},机械臂移动至加液区", heatModuleCode); |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加液区", liquidAreaTrayPoint3D)); |
|
|
|
transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(false);//加热区托盘状态 |
|
|
@ -644,15 +595,10 @@ public class CraftsStepService { |
|
|
|
for (int j = 0; j < columns.size(); j++) { |
|
|
|
double distance = Math.abs(columns.get(j) - 5) * trayTubeHorizontalSpacingDistance;//x轴移动距离 |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动到试管位置", j)); |
|
|
|
log.info("工艺{},机械臂移动到试管位置", heatModuleCode); |
|
|
|
transferModuleService.transferXMove(liquidAreaTrayPoint3D.getX() + distance);//机械臂移动到试管位置 |
|
|
|
log.info("工艺{},加液模块下降进入试管抽取位置", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMove(solutionModuleMotorDownInTubeExtPositon + height);//加液模块下降进入试管抽取位置 |
|
|
|
log.info("工艺{},电磁阀对应通道打开", heatModuleCode); |
|
|
|
|
|
|
|
log.info("工艺{},蠕动泵抽水", heatModuleCode); |
|
|
|
solutionModuleService.liquidPumpMove(-reduceThickDistance);//蠕动泵抽浓硝酸 |
|
|
|
log.info("工艺{},加液模块上升至最高,移出试管", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液模块上升至最高,移出试管 |
|
|
|
} |
|
|
|
/*抽液结束*/ |
|
|
@ -667,7 +613,6 @@ public class CraftsStepService { |
|
|
|
/*预充开始*/ |
|
|
|
boolean feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//获取传感器状态 |
|
|
|
Assert.isTrue(!feedTrayExist, () -> new AppException(ResultCode.FEED_AREA_EXIST_TRAY));//上料区有托盘 |
|
|
|
log.info("工艺{},清洗-预充开始", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 |
|
|
|
transferModuleService.transferXMove(heatArea1TrayClawPoint.getX());//转运模块移动至加热位1 |
|
|
|
feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//获取传感器状态 |
|
|
@ -679,26 +624,19 @@ public class CraftsStepService { |
|
|
|
solutionModuleService.liquidPumpMove(preFillDistance);//预充 |
|
|
|
solutionModuleService.liquidPumpMove(-backFlowDistance);//防滴落 |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 |
|
|
|
log.info("工艺{},清洗开始", heatModuleCode); |
|
|
|
transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点 |
|
|
|
/*预充结束*/ |
|
|
|
/*加*/ |
|
|
|
log.info("工艺{},电磁阀蒸馏水通道打开", heatModuleCode); |
|
|
|
solutionModuleService.liquidValveSwitch(SolutionCode.water);//电磁阀对应通道打开 |
|
|
|
for (int j = 0; j < columns.size(); j++) { |
|
|
|
double distance = Math.abs(columns.get(j) - 5) * trayTubeHorizontalSpacingDistance;//x轴移动距离 |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动到试管位置", j)); |
|
|
|
log.info("工艺{},机械臂移动到试管位置", heatModuleCode); |
|
|
|
transferModuleService.transferXMove(liquidAreaTrayPoint3D.getX() + distance);//机械臂移动到试管位置 |
|
|
|
log.info("工艺{},加液模块下降进入试管抽取位置", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMove(solutionModuleMotorDownInTubeAddPositon);//加液模块下降进入试管加液位置 |
|
|
|
log.info("工艺{},蠕动泵加水", heatModuleCode); |
|
|
|
solutionModuleService.liquidPumpMove(cleanWaterDistance);//蠕动泵加水 |
|
|
|
log.info("工艺{},加液模块上升至最高,移出试管", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液模块上升至最高,移出试管 |
|
|
|
} |
|
|
|
solutionModuleService.liquidPumpMove(-backFlowDistance);//防滴落 |
|
|
|
log.info("工艺{},电磁阀废液通道打开", heatModuleCode); |
|
|
|
TimeUnit.SECONDS.sleep(1);//当前线程休眠1秒 |
|
|
|
/*抽*/ |
|
|
|
solutionModuleService.liquidValveSwitch(SolutionCode.waste);//电磁阀对应通道打开 |
|
|
@ -706,15 +644,10 @@ public class CraftsStepService { |
|
|
|
for (int j = 0; j < columns.size(); j++) { |
|
|
|
double distance = Math.abs(columns.get(j) - 5) * trayTubeHorizontalSpacingDistance;//x轴移动距离 |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动到试管位置", j)); |
|
|
|
log.info("工艺{},机械臂移动到试管位置", heatModuleCode); |
|
|
|
transferModuleService.transferXMove(liquidAreaTrayPoint3D.getX() + distance);//机械臂移动到试管位置 |
|
|
|
log.info("工艺{},加液模块下降进入试管抽取位置", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMove(solutionModuleMotorDownInTubeExtPositon + height);//加液模块下降进入试管抽取位置 |
|
|
|
log.info("工艺{},电磁阀对应通道打开", heatModuleCode); |
|
|
|
|
|
|
|
log.info("工艺{},蠕动泵抽水", heatModuleCode); |
|
|
|
solutionModuleService.liquidPumpMove(-reduceWaterDistance);//抽水 |
|
|
|
log.info("工艺{},加液模块上升至最高,移出试管", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液模块上升至最高,移出试管 |
|
|
|
} |
|
|
|
craftMonitor.setDeviceState(JSONUtil.toJsonStr(deviceStateService.getDeviceState())); |
|
|
@ -724,22 +657,17 @@ public class CraftsStepService { |
|
|
|
} |
|
|
|
/*清洗结束*/ |
|
|
|
|
|
|
|
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode); |
|
|
|
transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX());//将X轴移动至目标加热模块托盘夹取点 |
|
|
|
log.info("工艺{},Z轴下降至夹取点,使托盘落入石墨加热盘", heatModuleCode); |
|
|
|
heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有无托盘 |
|
|
|
Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_HEAT_EXIST_TRAY));//提示工艺加热区被占用 |
|
|
|
transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 |
|
|
|
log.info("工艺{},X轴移出卡槽", heatModuleCode); |
|
|
|
transferModuleService.transferXMoveBy(transferModuleXPickTrayMoveDistance);//X轴移出卡槽 |
|
|
|
log.info("工艺{},Z轴抬升至最高", heatModuleCode); |
|
|
|
transferModuleService.transferZMoveZero();//Z轴抬升至最高 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(true);//加热区托盘状态 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInHeatModule(true);//托盘状态 |
|
|
|
deviceStateService.getDeviceState().getSolutionModule().setPumping(false);//正在加液 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInSolutionPositon(false);//托盘状态 |
|
|
|
doorAble();//开门 |
|
|
|
log.info("工艺{},释放转运模组", heatModuleCode); |
|
|
|
transferModuleService.releaseTransferModule();//释放转运模组 |
|
|
|
return true; |
|
|
|
} catch (Exception e) { |
|
|
@ -770,9 +698,7 @@ public class CraftsStepService { |
|
|
|
heatModuleService.heatRodOpen(heatModuleCode, temperature);//打开加热棒 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.heating); //设置加热区状态 烘干中 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTargetTemperature(temperature);//将加热温度设定为目标温度 |
|
|
|
log.info("工艺{},开始加热", heatModuleCode); |
|
|
|
heatModuleService.heatRodOpen(heatModuleCode, temperature); |
|
|
|
log.info("工艺{},判断当前温度是否在设置温度范围内", heatModuleCode); |
|
|
|
while (!heatIsSuitable(heatModuleCode, temperature)) { //判断当前温度是否在设置温度范围内 |
|
|
|
TimeUnit.SECONDS.sleep(1); |
|
|
|
} |
|
|
@ -790,9 +716,7 @@ public class CraftsStepService { |
|
|
|
craftMonitor.setCurrentStepResult(CraftsMonitorResultCode.heat_time.getDescription() + ":" + clock / 60); |
|
|
|
craftMonitorService.saveMonitor(craftMonitor); |
|
|
|
} |
|
|
|
log.info("工艺{},恒温中", heatModuleCode); |
|
|
|
TimeUnit.SECONDS.sleep(seconds); |
|
|
|
log.info("工艺{},关闭加热棒", heatModuleCode); |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "关闭加热棒", "")); |
|
|
|
heatModuleService.heatRodClose(heatModuleCode);//关闭加热棒 |
|
|
|
CompletableFuture.runAsync(() -> { |
|
|
@ -835,35 +759,22 @@ public class CraftsStepService { |
|
|
|
while (deviceSensorService.getTrayStateByHeatModuleCode(HeatModuleCode.heat_module_04)) {//判断退火区是否被占用 |
|
|
|
TimeUnit.SECONDS.sleep(1);//等待1秒 |
|
|
|
} |
|
|
|
log.info("工艺{},机械臂移动至加热区", heatModuleCode); |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode)); |
|
|
|
log.info("工艺{},申请使用转运模块", heatModuleCode); |
|
|
|
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_anneal);//申请使用转运模块 |
|
|
|
log.info("工艺{},加液机械臂上升", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 |
|
|
|
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode); |
|
|
|
transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标加热模块托盘夹取点 |
|
|
|
log.info("工艺{},Z轴下降至夹取点,使托盘落入石墨加热盘", heatModuleCode); |
|
|
|
heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode); |
|
|
|
Assert.isTrue(heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_TARGET_HEAT_NO_TRAY));//提示加热模块无托盘 |
|
|
|
transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 |
|
|
|
log.info("工艺{},X轴移出入槽", heatModuleCode); |
|
|
|
transferModuleService.transferXMoveBy(-transferModuleXPickTrayMoveDistance);//X轴移出入槽 |
|
|
|
log.info("工艺{},Z轴抬升至最高", heatModuleCode); |
|
|
|
transferModuleService.transferZMoveZero();//Z轴抬升至最高 |
|
|
|
log.info("工艺{},机械臂移动至退火区", heatModuleCode); |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至退火区", HeatModuleCode.heat_module_04)); |
|
|
|
log.info("工艺{},将X轴移动至退火热模块托盘夹取点", heatModuleCode); |
|
|
|
transferModuleService.transferXMove(annealTrayClawPoint3D.getX());//将X轴移动至退火热模块托盘夹取点 |
|
|
|
log.info("工艺{},Z轴下降至夹取点,使托盘落入石墨加热盘", heatModuleCode); |
|
|
|
boolean heatModule04TrayExist = deviceSensorService.getTrayStateByHeatModuleCode(HeatModuleCode.heat_module_04); |
|
|
|
Assert.isTrue(!heatModule04TrayExist, () -> new AppException(ResultCode.CRAFT_HEAT_EXIST_TRAY));//提示退火模块存在托盘 |
|
|
|
transferModuleService.transferZMove(annealTrayClawPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 |
|
|
|
log.info("工艺{},X轴移出卡槽", heatModuleCode); |
|
|
|
transferModuleService.transferXMoveBy(transferModuleXPickTrayMoveDistance);//X轴移出卡槽 |
|
|
|
log.info("工艺{},Z轴抬升至最高", heatModuleCode); |
|
|
|
transferModuleService.transferZMoveZero();//Z轴抬升至最高 |
|
|
|
log.info("工艺{},释放转运模组", heatModuleCode); |
|
|
|
transferModuleService.releaseTransferModule();//释放转运模组 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(false);//加热区托盘状态 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInHeatModule(false);//托盘状态 |
|
|
@ -873,7 +784,6 @@ public class CraftsStepService { |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(HeatModuleCode.heat_module_04.name(), "打开加热棒", temperature)); |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setHeatingType(HeatingType.heating); //设置加热区状态 加热中 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setTargetTemperature(temperature);//将加热温度设定为目标温度 |
|
|
|
log.info("工艺{},开始加热", heatModuleCode); |
|
|
|
heatModuleService.heatRodOpen(HeatModuleCode.heat_module_04, temperature);//打开加热棒 |
|
|
|
//判断当前温度是否在设置温度范围内 |
|
|
|
while (!heatIsSuitable(HeatModuleCode.heat_module_04, temperature)) { |
|
|
@ -893,39 +803,26 @@ public class CraftsStepService { |
|
|
|
craftMonitor.setCurrentStepResult(CraftsMonitorResultCode.heat_time.getDescription() + ":" + clock / 60); |
|
|
|
craftMonitorService.saveMonitor(craftMonitor); |
|
|
|
} |
|
|
|
log.info("工艺{},恒温中", HeatModuleCode.heat_module_04); |
|
|
|
TimeUnit.SECONDS.sleep(seconds); |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setStartHeatTime(null);//开始加热时间 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setTargetTime(null);//加热器目标加热时间 |
|
|
|
|
|
|
|
log.info("工艺{},加热完毕", heatModuleCode); |
|
|
|
log.info("工艺{},获取转运模组锁", heatModuleCode); |
|
|
|
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_heat);//获取转运模组锁 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setUseArm(true);//使用机械臂标志 |
|
|
|
log.info("工艺{},Z轴抬升至最高", heatModuleCode); |
|
|
|
transferModuleService.transferZMoveZero();//Z轴抬升至最高 |
|
|
|
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode); |
|
|
|
transferModuleService.transferXMove(annealTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标退火模块托盘夹取点 |
|
|
|
log.info("工艺{},Z轴下降至夹取点,使托盘落入石墨加热盘", heatModuleCode); |
|
|
|
heatModule04TrayExist = deviceSensorService.getTrayStateByHeatModuleCode(HeatModuleCode.heat_module_04); |
|
|
|
Assert.isTrue(heatModule04TrayExist, () -> new AppException(ResultCode.CRAFT_HEAT_NO_TRAY));//提示退火区无托盘 |
|
|
|
transferModuleService.transferZMove(annealTrayClawPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 |
|
|
|
log.info("工艺{},X移入卡槽", heatModuleCode); |
|
|
|
transferModuleService.transferXMoveBy(-transferModuleXPickTrayMoveDistance);//X移入卡槽 |
|
|
|
log.info("工艺{},Z轴抬升至最高", heatModuleCode); |
|
|
|
transferModuleService.transferZMoveZero();//Z轴抬升至最高 |
|
|
|
|
|
|
|
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode); |
|
|
|
transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX());//将X轴移动至目标加热模块托盘夹取点 |
|
|
|
log.info("工艺{},Z轴下降至夹取点,使托盘落入石墨加热盘", heatModuleCode); |
|
|
|
heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode); |
|
|
|
Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_HEAT_EXIST_TRAY));//提示加热模块存在托盘 |
|
|
|
transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 |
|
|
|
log.info("工艺{},X轴移出卡槽", heatModuleCode); |
|
|
|
transferModuleService.transferXMoveBy(transferModuleXPickTrayMoveDistance);//X轴移出卡槽 |
|
|
|
log.info("工艺{},Z轴抬升至最高", heatModuleCode); |
|
|
|
transferModuleService.transferZMoveZero();//Z轴抬升至最高 |
|
|
|
log.info("工艺{},转运模组释放", heatModuleCode); |
|
|
|
transferModuleService.releaseTransferModule();//释放转运模组 |
|
|
|
heatModuleService.fanClose(heatModuleCode);//关闭风扇 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setFanOpen(false); //设置加热区风扇关闭 |
|
|
@ -944,21 +841,12 @@ public class CraftsStepService { |
|
|
|
/* |
|
|
|
* 检测加热区升温度是否合适 |
|
|
|
* */ |
|
|
|
public boolean heatIsSuitable(HeatModuleCode heatModuleCode, Double temperature) throws Exception { |
|
|
|
public boolean heatIsSuitable(HeatModuleCode heatModuleCode, Double temperature){ |
|
|
|
double currentTemperature = deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).getTemperature(); |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "加热区温度", currentTemperature)); |
|
|
|
return currentTemperature > (temperature - 3); |
|
|
|
} |
|
|
|
|
|
|
|
/* |
|
|
|
* 检测加热区降温温度是否合适 |
|
|
|
* */ |
|
|
|
public boolean coldIsSuitable(HeatModuleCode heatModuleCode, Double temperature) throws Exception { |
|
|
|
double currentTemperature = deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).getTemperature(); |
|
|
|
log.info("工艺{},当前温度{}", heatModuleCode, currentTemperature); |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "加热区温度", currentTemperature)); |
|
|
|
return currentTemperature < (temperature + 3); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 工艺执行完毕 |
|
|
@ -968,6 +856,8 @@ public class CraftsStepService { |
|
|
|
TimeUnit.SECONDS.sleep(2);//当前线程休眠2秒 |
|
|
|
deviceLightSoundService.closeBeep(); |
|
|
|
craftMonitorService.remove(new LambdaQueryWrapper<CraftMonitor>().eq(CraftMonitor::getHeatId, heatModuleCode)); |
|
|
|
List<TrayState> trayList = deviceStateService.getDeviceState().getTrays(); |
|
|
|
trayList.removeIf((tray) -> tray.getHeatModuleCode() != null && tray.getHeatModuleCode().equals(heatModuleCode)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|