From d34c9455d5c3d1e3b1ea9cd5b0642995e49123d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B?= <1063331231@qq.com> Date: Sun, 15 Jun 2025 12:11:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=83=98=E5=B9=B2=E5=90=8E=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=BC=82=E6=AD=A5=E7=9A=84=E9=99=8D=E6=B8=A9=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=20z=E8=BD=B4=E4=BD=8D=E7=BD=AE=E5=A4=A7=E4=BA=8E10=E4=B8=8D?= =?UTF-8?q?=E5=85=81=E8=AE=B8x=E8=BD=B4=E5=9B=9E=E5=8E=9F=E7=82=B9=20?= =?UTF-8?q?=E9=80=80=E7=81=AB=E7=BB=93=E6=9D=9F=E4=B8=8D=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E5=8A=A0=E7=83=AD=20=E5=8F=96=E5=87=BA=E6=89=98=E7=9B=98bug=20?= =?UTF-8?q?NullPointException?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sgs/app/cmd/control/OutTrayCommand.java | 8 ++++--- .../sgs/app/cmd/control/XOriginCommand.java | 4 ++-- .../app/cmd/debug/DebugMotorXOriginCommand.java | 2 +- .../sgs/app/service/crafts/CraftsStepService.java | 27 +++++++++++++++++----- .../device/module/TransferModuleService.java | 6 ++--- .../iflytop/sgs/common/enums/SystemConfigCode.java | 1 + src/main/resources/sql/init.sql | 3 +++ 7 files changed, 36 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/OutTrayCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/OutTrayCommand.java index 71d9903..739cd37 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/OutTrayCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/OutTrayCommand.java @@ -76,9 +76,11 @@ public class OutTrayCommand extends BaseCommandHandler { deviceStateService.getDeviceState().getTransferModule().setTrayStatus(false);//设定托盘夹爪为FALSE deviceStateService.getDeviceState().getHeatModuleByCode(targetHeatModuleCode).setTrayStatus(false);//设定目标加热模块托盘状态 List trayList = deviceStateService.getDeviceState().getTrays(); - for (TrayState trayState : trayList) { - log.info("点击移出托盘按钮{}", trayState.getHeatModuleCode().name()); - } +// for (TrayState trayState : trayList) { +// if (trayState != null) { +// log.info("点击移出托盘按钮{}", trayState.getHeatModuleCode().name()); +// } +// } trayList.removeIf((tray) -> tray.getHeatModuleCode() != null && tray.getHeatModuleCode().equals(targetHeatModuleCode)); } finally { transferModuleService.releaseTransferModule();//释放转运模组 diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/XOriginCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/XOriginCommand.java index adf16e7..1d7df59 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/XOriginCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/XOriginCommand.java @@ -50,11 +50,11 @@ public class XOriginCommand extends BaseCommandHandler { deviceStateService.getCommandMutexState().get().setGantryXOriginCommandExecuting(true); //确保z轴的高度 Double zPosition = deviceSensorService.getMotorPosition(DevicePartId.ZM); - Assert.isTrue(zPosition <50, () -> new AppException(ResultCode.Z_HEIGHT_NO_ALLOWED)); + Assert.isTrue(zPosition < 10, () -> new AppException(ResultCode.Z_HEIGHT_NO_ALLOWED)); DeviceCommandBundle deviceCommand = DeviceCommandGenerator.transferXOrigin(); CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdDTO.getCommandId(), cmdDTO.getCommand(), deviceCommand); CommandUtil.wait(deviceCommandFuture); - }finally { + } finally { deviceStateService.getCommandMutexState().get().setGantryXOriginCommandExecuting(false); transferModuleService.releaseTransferModule();//释放转运模组 } diff --git a/src/main/java/com/iflytop/sgs/app/cmd/debug/DebugMotorXOriginCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/debug/DebugMotorXOriginCommand.java index ebab666..0a0ff37 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/debug/DebugMotorXOriginCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/debug/DebugMotorXOriginCommand.java @@ -34,7 +34,7 @@ public class DebugMotorXOriginCommand extends BaseCommandHandler { public CompletableFuture handle(CmdDTO cmdDTO) { return runAsync(() -> { Double zPosition = deviceSensorService.getMotorPosition(DevicePartId.ZM); - Assert.isTrue(zPosition <50, () -> new AppException(ResultCode.Z_HEIGHT_NO_ALLOWED)); + Assert.isTrue(zPosition <10, () -> new AppException(ResultCode.Z_HEIGHT_NO_ALLOWED)); DeviceCommandBundle deviceCommand = DeviceCommandGenerator.transferXOrigin(); CommandFuture deviceCommandFuture = deviceCommandService.sendCommand(cmdDTO.getCommandId(), cmdDTO.getCommand(), deviceCommand); CommandUtil.wait(deviceCommandFuture); diff --git a/src/main/java/com/iflytop/sgs/app/service/crafts/CraftsStepService.java b/src/main/java/com/iflytop/sgs/app/service/crafts/CraftsStepService.java index b921917..db09232 100644 --- a/src/main/java/com/iflytop/sgs/app/service/crafts/CraftsStepService.java +++ b/src/main/java/com/iflytop/sgs/app/service/crafts/CraftsStepService.java @@ -23,9 +23,11 @@ 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.cmd.CmdColor; import com.iflytop.sgs.common.enums.data.DevicePositionCode; import com.iflytop.sgs.common.exception.AppException; import com.iflytop.sgs.common.result.ResultCode; +import com.iflytop.sgs.hardware.exception.HardwareException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -34,6 +36,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.concurrent.CompletableFuture; /** * 工艺步骤执行服务 @@ -470,7 +473,7 @@ public class CraftsStepService { deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTargetTemperature(temperature);//将加热温度设定为目标温度 log.info("工艺{},开始加热", heatModuleCode); heatModuleService.fanClose(heatModuleCode);//关闭风扇 - deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setFanOpen(false); //设置加热区风扇打开 + deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setFanOpen(false); //设置加热区风扇关闭 heatModuleService.heatRodOpen(heatModuleCode, temperature);//打开加热棒 while (!heatIsSuitable(heatModuleCode, temperature)) {//判断温度是否到达 delay(1); @@ -701,6 +704,7 @@ public class CraftsStepService { Double temperature = params.getDouble("temperature");//秒 Integer time = params.getInt("time");//秒 + Integer keepTime = systemConfigService.getSystemConfigIntegerByCode(SystemConfigCode.fan_start_keep_time); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "打开加热棒", temperature)); heatModuleService.heatRodOpen(heatModuleCode, temperature);//打开加热棒 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.heating); //设置加热区状态 烘干中 @@ -730,8 +734,17 @@ public class CraftsStepService { log.info("工艺{},关闭加热棒", heatModuleCode); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "关闭加热棒", "")); heatModuleService.heatRodClose(heatModuleCode);//关闭加热棒 - heatModuleService.fanStart(heatModuleCode);//散热打开 - deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setFanOpen(true); //设置加热区风扇打开 + CompletableFuture.runAsync(() -> { + try { + heatModuleService.fanStart(heatModuleCode);//散热打开 + deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setFanOpen(true); //设置加热区风扇打开 + delay(keepTime); + heatModuleService.fanClose(heatModuleCode);//散热打开 + deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setFanOpen(false); //设置加热区风扇打开 + } catch (Exception e) { + log.error("工艺 烘干降温失败{}", e.getMessage()); + } + }); deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setStartHeatTime(null);//开始加热时间 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTargetTime(null);//加热器目标加热时间 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.stop); //设置加热区状态 @@ -816,10 +829,10 @@ public class CraftsStepService { } log.info("工艺{},恒温中", HeatModuleCode.heat_module_04); delay(seconds); - heatModuleService.heatRodClose(HeatModuleCode.heat_module_04);//关闭加热棒 + // heatModuleService.heatRodClose(HeatModuleCode.heat_module_04);//关闭加热棒 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setStartHeatTime(null);//开始加热时间 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTargetTime(null);//加热器目标加热时间 - deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setHeatingType(HeatingType.stop); //设置加热区状态 停止加热 + //deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setHeatingType(HeatingType.stop); //设置加热区状态 停止加热 log.info("工艺{},加热完毕", heatModuleCode); log.info("工艺{},获取转运模组锁", heatModuleCode); @@ -841,7 +854,7 @@ public class CraftsStepService { log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode); transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX());//将X轴移动至目标加热模块托盘夹取点 log.info("工艺{},Z轴下降至夹取点,使托盘落入石墨加热盘", heatModuleCode); - heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode); + heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode); Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_HEAT_EXIST_TRAY));//提示加热模块存在托盘 transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点,使托盘落入石墨加热盘 log.info("工艺{},X轴移出卡槽", heatModuleCode); @@ -850,6 +863,8 @@ public class CraftsStepService { transferModuleService.transferZMoveZero();//Z轴抬升至最高 log.info("工艺{},转运模组释放", heatModuleCode); transferModuleService.releaseTransferModule();//释放转运模组 + heatModuleService.fanClose(heatModuleCode);//关闭风扇 + deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setFanOpen(false); //设置加热区风扇关闭 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(true);//加热区托盘状态 deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setTrayStatus(false); deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInHeatModule(true);//托盘状态 diff --git a/src/main/java/com/iflytop/sgs/app/service/device/module/TransferModuleService.java b/src/main/java/com/iflytop/sgs/app/service/device/module/TransferModuleService.java index aab1b31..71bd29f 100644 --- a/src/main/java/com/iflytop/sgs/app/service/device/module/TransferModuleService.java +++ b/src/main/java/com/iflytop/sgs/app/service/device/module/TransferModuleService.java @@ -84,12 +84,12 @@ public class TransferModuleService { head = feedQueue.peek(); } else if (!heatQueue.isEmpty()) { head = heatQueue.peek(); - } else if (!thinQueue.isEmpty()) { + } else if (!annealQueue.isEmpty()) { + head = annealQueue.peek(); + }else if (!thinQueue.isEmpty()) { head = thinQueue.peek(); } else if (!thickQueue.isEmpty()) { head = thickQueue.peek(); - } else if (!annealQueue.isEmpty()) { - head = annealQueue.peek(); } // 如果 head 正好就是自己,说明轮到我了;否则还要继续等待 diff --git a/src/main/java/com/iflytop/sgs/common/enums/SystemConfigCode.java b/src/main/java/com/iflytop/sgs/common/enums/SystemConfigCode.java index 0ba55eb..19875e2 100644 --- a/src/main/java/com/iflytop/sgs/common/enums/SystemConfigCode.java +++ b/src/main/java/com/iflytop/sgs/common/enums/SystemConfigCode.java @@ -23,6 +23,7 @@ public enum SystemConfigCode { pre_fill_distance_when_open_service("开机预充距离 最小3"), x_move_in_low_speed("x轴进入卡槽的速度 标准30 最大100"), x_move_in_normal_speed("x轴正常移动速度 标准100"), + fan_start_keep_time("烘干后风扇开启开始降温的时间(秒)") ; private final String description; diff --git a/src/main/resources/sql/init.sql b/src/main/resources/sql/init.sql index 2a6e547..8af5767 100644 --- a/src/main/resources/sql/init.sql +++ b/src/main/resources/sql/init.sql @@ -74,6 +74,9 @@ VALUES (15, 'x轴进入卡槽的速度 标准50 最大100', 'x_move_in_low_speed INSERT OR IGNORE INTO system_config ("id", "name", "code", "value", "create_time", "update_time") VALUES (16, 'x轴正常移动速度 标准100', 'x_move_in_normal_speed', '100.0', '2025-06-04 19:06:55.000', '2025-06-04 19:06:56.000'); +INSERT OR IGNORE INTO system_config ("id", "name", "code", "value", "create_time", "update_time") +VALUES (17, '烘干后风扇开启开始降温的时间(秒)', 'fan_start_keep_time', '60', '2025-06-04 19:06:55.000', + '2025-06-04 19:06:56.000'); -- 系统日志 表