diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/CleanStartCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/CleanStartCommand.java index 8f39e97..45c9afc 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/CleanStartCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/CleanStartCommand.java @@ -61,6 +61,7 @@ public class CleanStartCommand extends BaseCommandHandler { Double solutionModuleMotorDownInTubeExtPositon = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownInTubeExtPositon).getPositon();//加液模块电机下降进入试管抽取位置 Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液时托盘位置点 Double trayTubeHorizontalSpacingDistance = devicePositionService.getPosition(DevicePositionCode.trayTubeHorizontalSpacingDistance).getDistance();//获取托盘试管水平间距 + Double backFlowDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.back_flow_distance);//防低落距离 return runAsync(() -> { try { deviceStateService.getCommandMutexState().get().setTransferCommandExecuting(true); @@ -79,6 +80,7 @@ public class CleanStartCommand extends BaseCommandHandler { solutionModuleService.liquidPumpMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), cleanWaterVolume);//八通道蠕动泵 cleanWaterVolume * waterScale * 8 solutionModuleService.solutionMotorMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//加液模块上升至最高,移出试管 } + solutionModuleService.liquidPumpMove(-backFlowDistance);//预充 for (int j = 0; j < jsonArray.size(); j++) { int column = jsonArray.getInt(j); double distance = Math.abs(column - 5) * trayTubeHorizontalSpacingDistance;//x轴移动距离 diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/LiquidAddCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/LiquidAddCommand.java index 17b4967..d6b7041 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/LiquidAddCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/LiquidAddCommand.java @@ -50,6 +50,7 @@ public class LiquidAddCommand extends BaseCommandHandler { if (deviceStateService.getCommandMutexState().get().isTransferCommandExecuting()) { throw new AppException(ResultCode.CMD_BUSY); } + Double backFlowDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.back_flow_distance);//防低落距离 Point3D liquidAreaTrayPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D(); //获取加液区上方托盘点位 Double solutionModuleMotorDownInTubeAddPositon = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownInTubeAddPositon).getPositon(); //加液模块电机下降进入试管加液位置 Double trayTubeHorizontalSpacingDistance = devicePositionService.getPosition(DevicePositionCode.trayTubeHorizontalSpacingDistance).getDistance(); //托盘试管水平间距 @@ -93,6 +94,7 @@ public class LiquidAddCommand extends BaseCommandHandler { solutionModuleService.solutionMotorMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//加液机械臂上升 } } + solutionModuleService.liquidPumpMove(-backFlowDistance);//预充 transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint);//移动至加液位置 deviceStateService.getDeviceState().getSolutionModule().setPumping(false);//设置加液结束 } finally { diff --git a/src/main/java/com/iflytop/sgs/app/cmd/control/LiquidPreFillStopCommand.java b/src/main/java/com/iflytop/sgs/app/cmd/control/LiquidPreFillStopCommand.java index 33571bd..003973c 100644 --- a/src/main/java/com/iflytop/sgs/app/cmd/control/LiquidPreFillStopCommand.java +++ b/src/main/java/com/iflytop/sgs/app/cmd/control/LiquidPreFillStopCommand.java @@ -2,9 +2,11 @@ package com.iflytop.sgs.app.cmd.control; import com.iflytop.sgs.app.core.BaseCommandHandler; import com.iflytop.sgs.app.model.dto.CmdDTO; +import com.iflytop.sgs.app.service.api.SystemConfigService; import com.iflytop.sgs.app.service.device.DeviceStateService; import com.iflytop.sgs.app.service.device.module.SolutionModuleService; import com.iflytop.sgs.common.annotation.CommandMapping; +import com.iflytop.sgs.common.enums.SystemConfigCode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -21,11 +23,14 @@ import java.util.concurrent.CompletableFuture; public class LiquidPreFillStopCommand extends BaseCommandHandler { private final SolutionModuleService solutionModuleService; private final DeviceStateService deviceStateService; + private final SystemConfigService systemConfigService; @Override public CompletableFuture handle(CmdDTO cmdDTO) { + Double backFlowDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.back_flow_distance);//防低落距离 return runAsync(() -> { solutionModuleService.liquidPumpStop(cmdDTO.getCommandId(), cmdDTO.getCommand());//停止预充 + solutionModuleService.liquidPumpMove(-backFlowDistance);//预充 solutionModuleService.solutionMotorMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//加液机械臂归0 deviceStateService.getDeviceState().getSolutionModule().setPumping(false);//设置加液结束 }); 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 884aacc..43d3ebb 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 @@ -128,7 +128,7 @@ 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);//防低落距离 /*获取参数结束*/ log.info("工艺{},申请转运模组并等待", heatModuleCode); @@ -179,6 +179,7 @@ public class CraftsStepService { solutionModuleService.liquidValveSwitchByChannel(channel);//电磁阀对应通道打开 log.info("工艺{},预充", heatModuleCode); solutionModuleService.liquidPumpMove(preFillDistance);//预充 + solutionModuleService.liquidPumpMove(-backFlowDistance);//预充 log.info("工艺{},加液机械臂上升", heatModuleCode); solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 /*预充结束*/ @@ -219,6 +220,7 @@ public class CraftsStepService { craftMonitorService.saveOrUpdate(craftMonitor); /*工艺监控结束*/ } + solutionModuleService.liquidPumpMove(-backFlowDistance);//预充 } /*结束加液*/ @@ -303,7 +305,7 @@ 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);//防低落距离 /*获取参数结束*/ log.info("工艺{},申请转运模组并等待", heatModuleCode); @@ -360,6 +362,7 @@ public class CraftsStepService { log.info("工艺{},加液机械臂上升", heatModuleCode); solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 } + solutionModuleService.liquidPumpMove(-backFlowDistance);//预充 } /*抽液结束*/ @@ -381,6 +384,7 @@ public class CraftsStepService { solutionModuleService.liquidValveSwitchByChannel(channel);//电磁阀对应通道打开 log.info("工艺{},预充", heatModuleCode); solutionModuleService.liquidPumpMove(preFillDistance);//预充 + solutionModuleService.liquidPumpMove(-backFlowDistance);//预充 log.info("工艺{},加液机械臂上升", heatModuleCode); solutionModuleService.solutionMotorMoveZero();//加液机械臂上升 /*预充结束*/ @@ -422,6 +426,7 @@ public class CraftsStepService { craftMonitorService.saveOrUpdate(craftMonitor); /*工艺监控结束*/ } + solutionModuleService.liquidPumpMove(-backFlowDistance);//预充 } /*结束加液*/ @@ -547,6 +552,7 @@ 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);//防低落距离 webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleTrayClawPoint3D)); /*获取参数结束*/ @@ -636,6 +642,7 @@ public class CraftsStepService { log.info("工艺{},加液模块上升至最高,移出试管", heatModuleCode); solutionModuleService.solutionMotorMoveZero();//加液模块上升至最高,移出试管 } + solutionModuleService.liquidPumpMove(-backFlowDistance);//预充 log.info("工艺{},电磁阀废液通道打开", heatModuleCode); Thread.sleep(1000); /*抽*/ 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 16a77b1..d65ce43 100644 --- a/src/main/java/com/iflytop/sgs/common/enums/SystemConfigCode.java +++ b/src/main/java/com/iflytop/sgs/common/enums/SystemConfigCode.java @@ -10,7 +10,7 @@ public enum SystemConfigCode { water("水加液系数"), thick("浓硝酸加液系数"), thin("稀硝酸加液系数"), - back_flow_distance("稀硝酸加液系数"), + back_flow_distance("回吸放滴落距离"), pre_fill_distance("加液预充距离"), drain_distance("加液排空距离"), reduce_distance("过量抽液距离"), diff --git a/src/main/resources/sql/init.sql b/src/main/resources/sql/init.sql index abd437d..1da3d76 100644 --- a/src/main/resources/sql/init.sql +++ b/src/main/resources/sql/init.sql @@ -49,7 +49,7 @@ CREATE TABLE IF NOT EXISTS system_config INSERT OR IGNORE INTO system_config ("id", "name", "code", "value", "create_time", "update_time") VALUES (1, '水加液系数', 'water', '2', '2025-06-07 10:58:06.000', '2025-06-07 10:58:07.000'); INSERT OR IGNORE INTO system_config ("id", "name", "code", "value", "create_time", "update_time") VALUES (2, '浓硝酸加液系数', 'thick', '2', '2025-05-28 13:30:45', '2025-05-28 13:30:45'); INSERT OR IGNORE INTO system_config ("id", "name", "code", "value", "create_time", "update_time") VALUES (3, '稀硝酸加液系数', 'thin', '2', '2025-05-28 13:30:45', '2025-05-28 13:30:45'); -INSERT OR IGNORE INTO system_config ("id", "name", "code", "value", "create_time", "update_time") VALUES (4, '回吸放滴落距离', 'back_flow_distance', '0.5', '2025-05-28 13:30:45', '2025-05-28 13:30:45'); +INSERT OR IGNORE INTO system_config ("id", "name", "code", "value", "create_time", "update_time") VALUES (4, '回吸放滴落距离', 'back_flow_distance', '0.2', '2025-05-28 13:30:45', '2025-05-28 13:30:45'); INSERT OR IGNORE INTO system_config ("id", "name", "code", "value", "create_time", "update_time") VALUES (5, '过量预充距离', 'pre_fill_distance', '20', '2025-05-28 13:30:45', '2025-05-28 13:30:45'); INSERT OR IGNORE INTO system_config ("id", "name", "code", "value", "create_time", "update_time") VALUES (6, '过量排空距离', 'drain_distance', '20', '2025-05-28 13:30:45', '2025-05-28 13:30:45'); INSERT OR IGNORE INTO system_config ("id", "name", "code", "value", "create_time", "update_time") VALUES (7, '过量抽液距离', 'number_reduce', '10', '2025-05-28 13:30:45', '2025-05-28 13:30:45');