Browse Source

烘干后增加异步的降温方式

z轴位置大于10不允许x轴回原点
退火结束不关闭加热
取出托盘bug NullPointException
master
王梦远 2 months ago
parent
commit
d34c9455d5
  1. 8
      src/main/java/com/iflytop/sgs/app/cmd/control/OutTrayCommand.java
  2. 4
      src/main/java/com/iflytop/sgs/app/cmd/control/XOriginCommand.java
  3. 2
      src/main/java/com/iflytop/sgs/app/cmd/debug/DebugMotorXOriginCommand.java
  4. 27
      src/main/java/com/iflytop/sgs/app/service/crafts/CraftsStepService.java
  5. 6
      src/main/java/com/iflytop/sgs/app/service/device/module/TransferModuleService.java
  6. 1
      src/main/java/com/iflytop/sgs/common/enums/SystemConfigCode.java
  7. 3
      src/main/resources/sql/init.sql

8
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<TrayState> 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();//释放转运模组

4
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();//释放转运模组
}

2
src/main/java/com/iflytop/sgs/app/cmd/debug/DebugMotorXOriginCommand.java

@ -34,7 +34,7 @@ public class DebugMotorXOriginCommand extends BaseCommandHandler {
public CompletableFuture<Void> 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);

27
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);//托盘状态

6
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 正好就是自己说明轮到我了否则还要继续等待

1
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;

3
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');
-- 系统日志 表

Loading…
Cancel
Save