Browse Source
1、针高度 温度可配置
1、针高度 温度可配置
2、抽液距离根据溶液分开 3、手动业务指令不再异常锁机械臂 4、移除停止退火 停止烘干 5、sleep改为Timeunit 更易读 6、移除消解仪的部分代码 7、初始化先初始化设备 再监听连接 8、泵抽液 和加液速度可配置master
33 changed files with 803 additions and 618 deletions
-
37src/main/java/com/iflytop/sgs/app/cmd/control/AnnealStopCommand.java
-
96src/main/java/com/iflytop/sgs/app/cmd/control/CleanStartCommand.java
-
37src/main/java/com/iflytop/sgs/app/cmd/control/DryStopCommand.java
-
84src/main/java/com/iflytop/sgs/app/cmd/control/LiquidAddCommand.java
-
40src/main/java/com/iflytop/sgs/app/cmd/control/LiquidPreFillStartCommand.java
-
84src/main/java/com/iflytop/sgs/app/cmd/control/LiquidReduceCommand.java
-
103src/main/java/com/iflytop/sgs/app/cmd/control/MoveToAnnealAreaCommand.java
-
96src/main/java/com/iflytop/sgs/app/cmd/control/MoveToFeedAreaCommand.java
-
75src/main/java/com/iflytop/sgs/app/cmd/control/MoveToHeatAreaCommand.java
-
62src/main/java/com/iflytop/sgs/app/cmd/control/MoveToLiquidAreaCommand.java
-
68src/main/java/com/iflytop/sgs/app/cmd/control/OutTrayCommand.java
-
39src/main/java/com/iflytop/sgs/app/cmd/control/XOriginCommand.java
-
26src/main/java/com/iflytop/sgs/app/cmd/control/ZOriginCommand.java
-
84src/main/java/com/iflytop/sgs/app/cmd/selftest/LiquidPreFillCommand.java
-
88src/main/java/com/iflytop/sgs/app/cmd/selftest/LiquidPreFillWhenLaunchCommand.java
-
33src/main/java/com/iflytop/sgs/app/cmd/selftest/MoveTestCommand.java
-
2src/main/java/com/iflytop/sgs/app/cmd/selftest/TrayOutCommand.java
-
15src/main/java/com/iflytop/sgs/app/controller/HeatController.java
-
38src/main/java/com/iflytop/sgs/app/model/bo/status/CommandMutexState.java
-
5src/main/java/com/iflytop/sgs/app/model/bo/status/device/DoorModuleState.java
-
9src/main/java/com/iflytop/sgs/app/model/vo/SetTargetTemperatureVO.java
-
2src/main/java/com/iflytop/sgs/app/service/api/HeatService.java
-
134src/main/java/com/iflytop/sgs/app/service/crafts/CraftsStepService.java
-
2src/main/java/com/iflytop/sgs/app/service/device/DeviceInitService.java
-
38src/main/java/com/iflytop/sgs/app/service/device/module/DoorModuleService.java
-
2src/main/java/com/iflytop/sgs/app/service/device/module/HeatModuleService.java
-
26src/main/java/com/iflytop/sgs/app/service/device/module/SolutionModuleService.java
-
5src/main/java/com/iflytop/sgs/app/service/device/module/TransferModuleService.java
-
5src/main/java/com/iflytop/sgs/common/constant/WebSocketMessageType.java
-
2src/main/java/com/iflytop/sgs/common/enums/DeviceSensorCode.java
-
26src/main/java/com/iflytop/sgs/common/enums/data/DevicePositionCode.java
-
4src/main/java/com/iflytop/sgs/common/result/ResultCode.java
-
54src/main/resources/sql/init.sql
@ -1,37 +0,0 @@ |
|||
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.device.DeviceStateService; |
|||
import com.iflytop.sgs.app.service.device.module.HeatModuleService; |
|||
import com.iflytop.sgs.common.annotation.CommandMapping; |
|||
import com.iflytop.sgs.common.enums.HeatModuleCode; |
|||
import com.iflytop.sgs.common.enums.HeatingType; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 停止退火 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandMapping("anneal_stop")//业务指令注解 |
|||
public class AnnealStopCommand extends BaseCommandHandler { |
|||
private final HeatModuleService heatModuleService; |
|||
private final DeviceStateService deviceStateService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CmdDTO cmdDTO) { |
|||
String heatModuleCodeStr = cmdDTO.getStringParam("heatModuleCode"); |
|||
HeatModuleCode heatModuleCode = HeatModuleCode.valueOf(heatModuleCodeStr); |
|||
return runAsync(() -> { |
|||
heatModuleService.heatRodClose(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleCode);//关闭加热棒 |
|||
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.stop);//设置退火区退火状态 |
|||
}); |
|||
} |
|||
} |
|||
|
@ -1,37 +0,0 @@ |
|||
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.device.DeviceStateService; |
|||
import com.iflytop.sgs.app.service.device.module.HeatModuleService; |
|||
import com.iflytop.sgs.common.annotation.CommandMapping; |
|||
import com.iflytop.sgs.common.enums.HeatModuleCode; |
|||
import com.iflytop.sgs.common.enums.HeatingType; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 结束烘干 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandMapping("dry_stop")//业务指令注解 |
|||
public class DryStopCommand extends BaseCommandHandler { |
|||
private final HeatModuleService heatModuleService; |
|||
private final DeviceStateService deviceStateService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CmdDTO cmdDTO) { |
|||
String heatModuleCodeStr = cmdDTO.getStringParam("heatModuleCode"); |
|||
HeatModuleCode heatModuleCode = HeatModuleCode.valueOf(heatModuleCodeStr); |
|||
return runAsync(() -> { |
|||
heatModuleService.heatRodClose(cmdDTO.getCommandId(), cmdDTO.getCommand(), heatModuleCode); |
|||
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.stop); |
|||
}); |
|||
} |
|||
} |
|||
|
@ -1,84 +0,0 @@ |
|||
package com.iflytop.sgs.app.cmd.selftest; |
|||
|
|||
import com.iflytop.sgs.app.core.BaseCommandHandler; |
|||
import com.iflytop.sgs.app.model.bo.Point3D; |
|||
import com.iflytop.sgs.app.model.dto.CmdDTO; |
|||
import com.iflytop.sgs.app.service.api.DevicePositionService; |
|||
import com.iflytop.sgs.app.service.api.SystemConfigService; |
|||
import com.iflytop.sgs.app.service.device.DeviceSensorService; |
|||
import com.iflytop.sgs.app.service.device.DeviceStateService; |
|||
import com.iflytop.sgs.app.service.device.module.SolutionModuleService; |
|||
import com.iflytop.sgs.app.service.device.module.TransferModuleService; |
|||
import com.iflytop.sgs.common.annotation.CommandMapping; |
|||
import com.iflytop.sgs.common.enums.DeviceSensorCode; |
|||
import com.iflytop.sgs.common.enums.SolutionCode; |
|||
import com.iflytop.sgs.common.enums.SystemConfigCode; |
|||
import com.iflytop.sgs.common.enums.data.DevicePositionCode; |
|||
import com.iflytop.sgs.common.exception.AppException; |
|||
import com.iflytop.sgs.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 自检后 开机预充 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandMapping("liquid_pre_fill_when_launch")//业务指令注解 |
|||
public class LiquidPreFillCommand extends BaseCommandHandler { |
|||
private final SolutionModuleService solutionModuleService; |
|||
private final TransferModuleService transferModuleService; |
|||
private final DevicePositionService devicePositionService; |
|||
private final DeviceStateService deviceStateService; |
|||
private final SystemConfigService systemConfigService; |
|||
private final DeviceSensorService deviceSensorService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CmdDTO cmdDTO) { |
|||
if (deviceStateService.getCommandMutexState().get().isMoveTest()) { |
|||
throw new AppException(ResultCode.COMMAND_ALREADY_EXECUTING); |
|||
} |
|||
deviceStateService.getCommandMutexState().get().setMoveTest(true); |
|||
return runAsync(() -> { |
|||
try { |
|||
boolean clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST); |
|||
if (clawTrayExist) { |
|||
throw new AppException(ResultCode.TRANSFER_MODULE_YES_TRAY);//夹爪存在托盘 |
|||
} |
|||
boolean feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST); |
|||
if (feedTrayExist) { |
|||
throw new AppException(ResultCode.FEED_AREA_EXIST_TRAY);//上料区存在托盘 |
|||
} |
|||
Point3D heatArea1TrayClawPoint = devicePositionService.getPosition(DevicePositionCode.heatArea1TrayClawPoint).getPoint3D();//加热位1坐标 |
|||
Double liquidAreaPreFillPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaPreFillPoint).getPositon(); //预充时加液臂下降位置 |
|||
Double preFillDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.pre_fill_distance_when_open_service);//预充距离 |
|||
transferModuleService.transferXMove(heatArea1TrayClawPoint.getX());//转运模块移动至加热位1 |
|||
clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST); |
|||
if (clawTrayExist) { |
|||
throw new AppException(ResultCode.TRANSFER_MODULE_YES_TRAY);//夹爪存在托盘 |
|||
} |
|||
feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST); |
|||
if (feedTrayExist) { |
|||
throw new AppException(ResultCode.FEED_AREA_EXIST_TRAY);//上料区存在托盘 |
|||
} |
|||
solutionModuleService.solutionMotorMove(liquidAreaPreFillPoint);//加液机械臂下降至至预充点位 |
|||
solutionModuleService.liquidValveSwitch(SolutionCode.waste);//电磁阀对应通道打开 |
|||
solutionModuleService.liquidPumpMove(-preFillDistance);//排空 |
|||
solutionModuleService.liquidValveSwitch(SolutionCode.thin);//电磁阀对应通道打开 |
|||
solutionModuleService.liquidPumpMove(preFillDistance);//预充 |
|||
solutionModuleService.liquidValveSwitch(SolutionCode.thick);//电磁阀对应通道打开 |
|||
solutionModuleService.liquidPumpMove(preFillDistance);//预充 |
|||
solutionModuleService.liquidValveSwitch(SolutionCode.water);//电磁阀对应通道打开 |
|||
solutionModuleService.liquidPumpMove(preFillDistance);//预充 |
|||
solutionModuleService.solutionMotorMoveZero();//回原点 |
|||
} finally { |
|||
deviceStateService.getCommandMutexState().get().setMoveTest(false); |
|||
} |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,88 @@ |
|||
package com.iflytop.sgs.app.cmd.selftest; |
|||
|
|||
import com.iflytop.sgs.app.core.BaseCommandHandler; |
|||
import com.iflytop.sgs.app.model.bo.Point3D; |
|||
import com.iflytop.sgs.app.model.dto.CmdDTO; |
|||
import com.iflytop.sgs.app.service.api.DevicePositionService; |
|||
import com.iflytop.sgs.app.service.api.SystemConfigService; |
|||
import com.iflytop.sgs.app.service.device.DeviceSensorService; |
|||
import com.iflytop.sgs.app.service.device.DeviceStateService; |
|||
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.annotation.CommandMapping; |
|||
import com.iflytop.sgs.common.constant.WebSocketMessageType; |
|||
import com.iflytop.sgs.common.enums.DeviceSensorCode; |
|||
import com.iflytop.sgs.common.enums.SolutionCode; |
|||
import com.iflytop.sgs.common.enums.SystemConfigCode; |
|||
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.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 自检后 开机预充 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandMapping("liquid_pre_fill_when_launch")//业务指令注解 |
|||
public class LiquidPreFillWhenLaunchCommand extends BaseCommandHandler { |
|||
private final SolutionModuleService solutionModuleService; |
|||
private final TransferModuleService transferModuleService; |
|||
private final DevicePositionService devicePositionService; |
|||
private final DeviceStateService deviceStateService; |
|||
private final SystemConfigService systemConfigService; |
|||
private final DeviceSensorService deviceSensorService; |
|||
private final WebSocketSender webSocketService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CmdDTO cmdDTO) throws HardwareException { |
|||
if (deviceStateService.getCommandMutexState().get().isSolutionAddCommandExecuting()) { |
|||
throw new AppException(ResultCode.COMMAND_ALREADY_EXECUTING); |
|||
} |
|||
boolean feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST); |
|||
if (feedTrayExist) { |
|||
throw new AppException(ResultCode.FEED_AREA_EXIST_TRAY);//上料区存在托盘 |
|||
} |
|||
Point3D heatArea1TrayClawPoint = devicePositionService.getPosition(DevicePositionCode.heatArea1TrayClawPoint).getPoint3D();//加热位1坐标 |
|||
Double liquidAreaPreFillPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaPreFillPoint).getPositon(); //预充时加液臂下降位置 |
|||
Double preFillDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.pre_fill_distance_when_open_service);//预充距离 |
|||
Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液时托盘位置点 |
|||
return runAsync(() -> { |
|||
try { |
|||
deviceStateService.getCommandMutexState().get().setSolutionAddCommandExecuting(true); |
|||
transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint3D);//移动至加液时托盘位置点 |
|||
boolean clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST); |
|||
if (clawTrayExist) { |
|||
webSocketService.push(WebSocketMessageType.WARN, "机械臂存在托盘!"); |
|||
} else { |
|||
transferModuleService.transferXMove(heatArea1TrayClawPoint.getX());//转运模块移动至加热位1 |
|||
boolean feedTrayExistAgain = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST); |
|||
if (!feedTrayExistAgain) { |
|||
solutionModuleService.solutionMotorMove(liquidAreaPreFillPoint);//加液机械臂下降至至预充点位 |
|||
solutionModuleService.liquidValveSwitch(SolutionCode.waste);//电磁阀对应通道打开 |
|||
solutionModuleService.liquidPumpMove(-preFillDistance);//排空 |
|||
solutionModuleService.liquidValveSwitch(SolutionCode.thin);//电磁阀对应通道打开 |
|||
solutionModuleService.liquidPumpMove(preFillDistance);//预充 |
|||
solutionModuleService.liquidValveSwitch(SolutionCode.thick);//电磁阀对应通道打开 |
|||
solutionModuleService.liquidPumpMove(preFillDistance);//预充 |
|||
solutionModuleService.liquidValveSwitch(SolutionCode.water);//电磁阀对应通道打开 |
|||
solutionModuleService.liquidPumpMove(preFillDistance);//预充 |
|||
solutionModuleService.solutionMotorMoveZero();//回原点 |
|||
} else { |
|||
webSocketService.push(WebSocketMessageType.WARN, "请把上料位托盘移出!"); |
|||
} |
|||
} |
|||
} finally { |
|||
deviceStateService.getCommandMutexState().get().setSolutionAddCommandExecuting(false); |
|||
} |
|||
}); |
|||
} |
|||
} |
|||
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue