From eedd2d0590d31a709d6e3c10c07b31d6327cb8d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B?= <1063331231@qq.com> Date: Thu, 12 Jun 2025 19:02:46 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=80=E7=81=AB=E6=B8=A9=E5=BA=A6/4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sgs/app/service/crafts/CraftsStepService.java | 49 +++++++++++++--------- 1 file changed, 30 insertions(+), 19 deletions(-) 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 c27cd4b..dffde0c 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 @@ -12,7 +12,6 @@ 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; import com.iflytop.sgs.app.model.entity.Solutions; -import com.iflytop.sgs.app.model.entity.SystemConfig; import com.iflytop.sgs.app.service.api.*; import com.iflytop.sgs.app.service.device.DeviceLightSoundService; import com.iflytop.sgs.app.service.device.DeviceSensorService; @@ -86,7 +85,8 @@ 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); + //todo + heatModuleService.heatRodOpen(HeatModuleCode.heat_module_04, temperature / 4); 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)); @@ -141,6 +141,7 @@ public class CraftsStepService { Assert.isTrue(feedTrayExist, () -> new AppException(ResultCode.FEED_AREA_NO_TRAY)); log.info("工艺{},加液机械臂上升", heatModuleCode); solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 + transferModuleService.transferMoveZero();//z轴上升 log.info("工艺{},机械臂移动至上料区", heatModuleCode); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至上料区", feedAreaTrayPoint3D)); log.info("工艺{},将X轴移动至上料区托盘夹取点 + 进出卡槽移动距离", heatModuleCode); @@ -231,15 +232,16 @@ public class CraftsStepService { transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX());//将X轴移动至目标加热模块托盘夹取点 log.info("工艺{},Z轴下降至夹取点", heatModuleCode); //判断温度 - Double coldTemperature=systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.fan_stop_temperature);//降温至 + Double coldTemperature = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.fan_stop_temperature);//降温至 double currentTemperature = deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).getTemperature(); - if(currentTemperature>coldTemperature){ + if (currentTemperature > coldTemperature) { log.info("工艺{},散热打开", heatModuleCode); heatModuleService.fanStart(heatModuleCode);//散热打开 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setFanOpen(true); //设置加热区风扇打开 - while (!codeIsSuitable(heatModuleCode, coldTemperature)) { - delay(5); - } +// while (!codeIsSuitable(heatModuleCode, coldTemperature)) { +// delay(5); +// } + delay(60); log.info("工艺{},散热关闭", heatModuleCode); heatModuleService.fanClose(heatModuleCode);//散热关闭 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setFanOpen(false); //设置加热区风扇关闭 @@ -289,7 +291,7 @@ public class CraftsStepService { Double volume = params.getDouble("volume");//量 JSONArray jsonArray = params.getJSONArray("columns");//列数 Double height = params.getDouble("height");//下降进入试管的高度 - if (height > 50) { + if (height > 54) { throw new AppException(ResultCode.CRAFT_PARAMS_MISTAKE); } Integer channel = container.getChannel();//获取阀门通道 @@ -351,7 +353,7 @@ public class CraftsStepService { log.info("工艺{},机械臂移动到试管位置{}", heatModuleCode, i); transferModuleService.transferXMove(liquidAreaTrayPoint3D.getX() + distance);//机械臂移动到试管位置 log.info("工艺{},加液机械臂下降", heatModuleCode); - solutionModuleService.solutionMotorMove(solutionModuleMotorDownInTubeExtPositon+height);//加液机械臂下降 + solutionModuleService.solutionMotorMove(solutionModuleMotorDownInTubeExtPositon + height);//加液机械臂下降 webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "抽取溶液", addLiquidDistance)); log.info("工艺{},加液", heatModuleCode); solutionModuleService.liquidPumpMove(-reduceDistance);//加液 position @@ -446,7 +448,7 @@ public class CraftsStepService { } finally { deviceStateService.getDeviceState().getSolutionModule().setPumping(false); transferModuleService.releaseTransferModule();//释放转运模组 - deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setUseArm(false );//使用机械臂标志 + deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setUseArm(false);//使用机械臂标志 } } @@ -462,12 +464,10 @@ public class CraftsStepService { /*工艺监控清理上步的记录*/ - Double temperature = params.getDouble("temperature");//温度 Integer time = params.getInt("time");//秒 - deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.heating); //设置加热区状态 加热中 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTargetTemperature(temperature);//将加热温度设定为目标温度 log.info("工艺{},开始加热", heatModuleCode); @@ -528,7 +528,7 @@ public class CraftsStepService { Double volume = params.getDouble("volume") == null ? 2.0 : params.getDouble("volume");//加水量 Integer cycle = params.getInt("cycle");//次数 Double height = params.getDouble("height");//下降进入试管的高度 - if (height > 50) { + if (height > 54) { throw new AppException(ResultCode.CRAFT_PARAMS_MISTAKE); } boolean heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有无托盘 @@ -730,8 +730,8 @@ public class CraftsStepService { log.info("工艺{},关闭加热棒", heatModuleCode); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "关闭加热棒", "")); heatModuleService.heatRodClose(heatModuleCode);//关闭加热棒 - heatModuleService.fanStart(heatModuleCode);//散热打开 - deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setFanOpen(true); //设置加热区风扇打开 +// heatModuleService.fanStart(heatModuleCode);//散热打开 +// deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setFanOpen(true); //设置加热区风扇打开 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setStartHeatTime(null);//开始加热时间 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTargetTime(null);//加热器目标加热时间 deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.stop); //设置加热区状态 @@ -741,7 +741,7 @@ public class CraftsStepService { /* * 退火 * */ - public boolean anneal(HeatModuleCode heatModuleCode, JSONObject params, CraftMonitor craftMonitor) throws Exception { + public synchronized boolean anneal(HeatModuleCode heatModuleCode, JSONObject params, CraftMonitor craftMonitor) throws Exception { try { JSONObject result = new JSONObject(); craftMonitor.setCurrentStepResult(String.valueOf(result)); @@ -751,15 +751,24 @@ public class CraftsStepService { boolean heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode); Assert.isTrue(heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_TARGET_HEAT_NO_TRAY));//提示加热模块无托盘 while (deviceSensorService.getTrayStateByHeatModuleCode(HeatModuleCode.heat_module_04)) {//判断退火区是否被占用 - delay(10);//等待10秒 + delay(1);//等待1秒 } Point3D annealTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(HeatModuleCode.heat_module_04);//获取退火区托盘夹取点 Point3D heatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(heatModuleCode);//获取目标加热模块托盘夹取点 Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离 - log.info("工艺{},机械臂移动至加热区", heatModuleCode); + log.info("工艺{},机械臂移动至加热区", heatModuleCode); webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode)); log.info("工艺{},申请使用转运模块", heatModuleCode); transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_anneal);//申请使用转运模块 + //todo 先双重检测做下判断 +// boolean annealTrayState = deviceSensorService.getTrayStateByHeatModuleCode(HeatModuleCode.heat_module_04); +// if (annealTrayState) { +// transferModuleService.releaseTransferModule();//释放转运模组 +// while (deviceSensorService.getTrayStateByHeatModuleCode(HeatModuleCode.heat_module_04)) {//判断退火区是否被占用 +// delay(1);//等待1秒 +// } +// transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_anneal);//申请使用转运模块 +// } log.info("工艺{},加液机械臂上升", heatModuleCode); solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode); @@ -791,7 +800,8 @@ public class CraftsStepService { 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);//打开加热棒 + //todo + heatModuleService.heatRodOpen(HeatModuleCode.heat_module_04, temperature / 4);//打开加热棒 //判断当前温度是否在设置温度范围内 while (!heatIsSuitable(HeatModuleCode.heat_module_04, temperature)) { delay(1); @@ -873,6 +883,7 @@ public class CraftsStepService { * */ public boolean codeIsSuitable(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); }