|
|
@ -7,7 +7,6 @@ import cn.hutool.json.JSONUtil; |
|
|
|
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; |
|
|
@ -20,6 +19,7 @@ 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.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.DevicePositionCode; |
|
|
@ -32,7 +32,6 @@ import org.springframework.stereotype.Service; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.List; |
|
|
|
import java.util.concurrent.CompletableFuture; |
|
|
|
|
|
|
|
/** |
|
|
|
* 工艺步骤执行服务 |
|
|
@ -128,11 +127,11 @@ public class CraftsStepService { |
|
|
|
double addLiquidDistance = volume * scale; |
|
|
|
Point3D heatArea1TrayClawPoint = devicePositionService.getPosition(DevicePositionCode.heatArea1TrayClawPoint).getPoint3D();//加热位1坐标 |
|
|
|
Double liquidAreaPreFillPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaPreFillPoint).getPositon(); //预充时加液臂下降位置 |
|
|
|
Double backFlowDistance=systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.back_flow_distance);//防低落距离 |
|
|
|
Double backFlowDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.back_flow_distance);//防低落距离 |
|
|
|
/*获取参数结束*/ |
|
|
|
|
|
|
|
log.info("工艺{},申请转运模组并等待", heatModuleCode); |
|
|
|
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_liquid);//申请转运模组并等待 |
|
|
|
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_thin);//申请转运模组并等待 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setUseArm(true);//使用机械臂标志 |
|
|
|
|
|
|
|
|
|
|
@ -289,11 +288,19 @@ public class CraftsStepService { |
|
|
|
Double reduceDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.reduce_distance);//抽液距离 |
|
|
|
Point3D heatArea1TrayClawPoint = devicePositionService.getPosition(DevicePositionCode.heatArea1TrayClawPoint).getPoint3D(); |
|
|
|
Double liquidAreaPreFillPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaPreFillPoint).getPositon(); //预充时加液臂下降位置 |
|
|
|
Double backFlowDistance=systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.back_flow_distance);//防低落距离 |
|
|
|
Double backFlowDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.back_flow_distance);//防低落距离 |
|
|
|
/*获取参数结束*/ |
|
|
|
while (deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST)) {//上料区存在托盘 |
|
|
|
deviceLightSoundService.openBeep(CmdBeepMode.alarm); |
|
|
|
delay(2); |
|
|
|
deviceLightSoundService.closeBeep(); |
|
|
|
webSocketService.push(WebSocketMessageType.ALARM, "请取出上料区托盘!"); |
|
|
|
delay(10); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
log.info("工艺{},申请转运模组并等待", heatModuleCode); |
|
|
|
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_liquid);//申请转运模组并等待 |
|
|
|
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_thick);//申请转运模组并等待 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setUseArm(true);//使用机械臂标志 |
|
|
|
|
|
|
|
|
|
|
@ -430,7 +437,6 @@ public class CraftsStepService { |
|
|
|
transferModuleService.transferZMoveZero();//Z轴抬升至最高 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(true);//加热区托盘状态 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInHeatModule(true);//托盘状态 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setHeatModuleCode(heatModuleCode);//托盘所在加热区 |
|
|
|
deviceStateService.getDeviceState().getSolutionModule().setPumping(false);//正在加液 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInSolutionPositon(false);//托盘状态 |
|
|
|
return true; |
|
|
@ -534,12 +540,12 @@ public class CraftsStepService { |
|
|
|
Double preFillPosition = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownPreFillPositon).getPositon();//机械臂预充时下降距离 |
|
|
|
Point3D heatArea1TrayClawPoint = devicePositionService.getPosition(DevicePositionCode.heatArea1TrayClawPoint).getPoint3D(); |
|
|
|
Double liquidAreaPreFillPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaPreFillPoint).getPositon(); //预充时加液臂下降位置 |
|
|
|
Double backFlowDistance=systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.back_flow_distance);//防低落距离 |
|
|
|
Double backFlowDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.back_flow_distance);//防低落距离 |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleTrayClawPoint3D)); |
|
|
|
/*获取参数结束*/ |
|
|
|
|
|
|
|
log.info("工艺{},申请转运模组并等待", heatModuleCode); |
|
|
|
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_liquid);//申请转运模组并等待 |
|
|
|
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_thick);//申请转运模组并等待 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setUseArm(true);//使用机械臂标志 |
|
|
|
|
|
|
|
log.info("工艺{},加液机械臂上升", heatModuleCode); |
|
|
@ -839,9 +845,6 @@ public class CraftsStepService { |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(true);//加热区托盘状态 |
|
|
|
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setTrayStatus(false); |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInHeatModule(true);//托盘状态 |
|
|
|
deviceLightSoundService.openBeep(CmdBeepMode.info); |
|
|
|
delay(2); |
|
|
|
deviceLightSoundService.closeBeep(); |
|
|
|
return true; |
|
|
|
} finally { |
|
|
|
transferModuleService.releaseTransferModule();//释放转运模组 |
|
|
@ -863,7 +866,7 @@ public class CraftsStepService { |
|
|
|
* */ |
|
|
|
public boolean coldIsSuitable(HeatModuleCode heatModuleCode, Double temperature) throws Exception { |
|
|
|
double currentTemperature = deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).getTemperature(); |
|
|
|
log.info("工艺{},当前温度{}",heatModuleCode,currentTemperature); |
|
|
|
log.info("工艺{},当前温度{}", heatModuleCode, currentTemperature); |
|
|
|
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "加热区温度", currentTemperature)); |
|
|
|
return currentTemperature < (temperature + 3); |
|
|
|
} |
|
|
@ -885,60 +888,10 @@ public class CraftsStepService { |
|
|
|
* 工艺执行完毕 |
|
|
|
*/ |
|
|
|
public void finish(HeatModuleCode heatModuleCode, CraftMonitor craftMonitor) throws Exception { |
|
|
|
deviceLightSoundService.openBeep(CmdBeepMode.info); |
|
|
|
delay(2); |
|
|
|
deviceLightSoundService.closeBeep(); |
|
|
|
craftMonitorService.removeById(craftMonitor.getId()); |
|
|
|
/* List<TrayState> trayList = deviceStateService.getDeviceState().getTrays(); |
|
|
|
trayList.removeIf((tray) -> tray.getHeatModuleCode().equals(heatModuleCode));*/ |
|
|
|
// moveToFeedModule(heatModuleCode); |
|
|
|
} |
|
|
|
|
|
|
|
/*结束后移动至上料区*/ |
|
|
|
public void moveToFeedModule(HeatModuleCode heatModuleCode) throws Exception { |
|
|
|
try { |
|
|
|
boolean feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//上料区托盘状态 |
|
|
|
while (feedTrayExist) { |
|
|
|
deviceLightSoundService.openBeep(CmdBeepMode.info); |
|
|
|
delay(2); |
|
|
|
deviceLightSoundService.closeBeep(); |
|
|
|
} |
|
|
|
|
|
|
|
Point3D heatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(heatModuleCode);//获取目标加热模块托盘夹取点 |
|
|
|
Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离 |
|
|
|
Point3D feedAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.feedAreaTrayPoint).getPoint3D();//获取上料区托盘夹爪位置点 |
|
|
|
|
|
|
|
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_feed);//获取转运模组锁 |
|
|
|
log.info("工艺{},加液机械臂上升", heatModuleCode); |
|
|
|
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 |
|
|
|
log.info("工艺{},Z轴抬升至最高", heatModuleCode); |
|
|
|
transferModuleService.transferZMoveZero();//Z轴抬升至最高 |
|
|
|
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode); |
|
|
|
transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标加热模块托盘夹取点 |
|
|
|
log.info("工艺{},Z轴下降至夹取点", heatModuleCode); |
|
|
|
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(false);//加热区托盘状态 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInHeatModule(false);//托盘状态 |
|
|
|
log.info("工艺{},将X轴移动至上料区托盘夹取点", heatModuleCode); |
|
|
|
transferModuleService.transferXMove(feedAreaTrayPoint3D.getX());//将X轴移动至上料区托盘夹取点 + 进出卡槽移动距离 |
|
|
|
log.info("工艺{},Z轴下降至夹取点", heatModuleCode); |
|
|
|
transferModuleService.transferZMove(feedAreaTrayPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 |
|
|
|
log.info("工艺{},X轴进入卡槽", heatModuleCode); |
|
|
|
transferModuleService.transferXMoveBy(transferModuleXPickTrayMoveDistance);//X轴进入卡槽 |
|
|
|
log.info("工艺{},Z轴抬升至最高", heatModuleCode); |
|
|
|
transferModuleService.transferZMoveZero();//Z轴抬升至最高 |
|
|
|
log.info("工艺{},转运模组释放", heatModuleCode); |
|
|
|
transferModuleService.releaseTransferModule();//转运模组释放 |
|
|
|
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInFeedArea(true);//托盘状态 |
|
|
|
deviceLightSoundService.openBeep(CmdBeepMode.info); |
|
|
|
delay(2); |
|
|
|
deviceLightSoundService.closeBeep(); |
|
|
|
} finally { |
|
|
|
transferModuleService.releaseTransferModule();//转运模组释放 |
|
|
|
} |
|
|
|
List<TrayState> trayList = deviceStateService.getDeviceState().getTrays(); |
|
|
|
trayList.removeIf((tray) -> tray.getHeatModuleCode().equals(heatModuleCode)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|