Browse Source

工艺加液分为加稀硝酸和加浓硝酸

master
王梦远 2 months ago
parent
commit
b899f678e2
  1. 2
      src/main/java/com/iflytop/sgs/app/cmd/control/OutTrayCommand.java
  2. 1
      src/main/java/com/iflytop/sgs/app/controller/UserController.java
  3. 5
      src/main/java/com/iflytop/sgs/app/service/api/ContainerService.java
  4. 431
      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. 2
      src/main/resources/sql/init.sql

2
src/main/java/com/iflytop/sgs/app/cmd/control/OutTrayCommand.java

@ -74,7 +74,7 @@ public class OutTrayCommand extends BaseCommandHandler {
transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高
deviceStateService.getDeviceState().getTransferModule().setTrayStatus(false);//设定托盘夹爪为FALSE
deviceStateService.getDeviceState().getHeatModuleByCode(targetHeatModuleCode).setTrayStatus(false);//设定目标加热模块托盘状态
deviceStateService.getDeviceState().getSolutionModule().setFeedAreaTrayStatus(true);//设定上料区托盘状态
//deviceStateService.getDeviceState().getSolutionModule().setFeedAreaTrayStatus(true);//设定上料区托盘状态
} finally {
deviceStateService.getCommandMutexState().get().setTransferCommandExecuting(false);
}

1
src/main/java/com/iflytop/sgs/app/controller/UserController.java

@ -40,6 +40,7 @@ public class UserController {
User existingUser = userService.getOne(new LambdaQueryWrapper<User>().eq(User::getUsername, user.getUsername()));
if (existingUser == null) {
user.setFixedUser(null);
user.setDeleted(Deleted.DISABLE);
boolean isSuccess = userService.save(user);
if (isSuccess) {
return Result.success();

5
src/main/java/com/iflytop/sgs/app/service/api/ContainerService.java

@ -1,5 +1,6 @@
package com.iflytop.sgs.app.service.api;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.iflytop.sgs.app.mapper.ContainerMapper;
import com.iflytop.sgs.app.model.entity.Container;
@ -20,5 +21,9 @@ public class ContainerService extends ServiceImpl<ContainerMapper, Container> {
return this.list();
}
public Container getBySolutionsId(Long solutionsId) {
return this.getOne(new LambdaQueryWrapper<Container>().eq(Container::getSolutionId,solutionsId));
}
}

431
src/main/java/com/iflytop/sgs/app/service/crafts/CraftsStepService.java

@ -70,6 +70,8 @@ public class CraftsStepService {
return switch (method) {
case "preHeat" -> preHeat(heatModuleCode, params, craftMonitor);
case "addLiquid" -> addLiquid(heatModuleCode, params, craftMonitor);
case "addThin" -> addThin(heatModuleCode, params, craftMonitor);
case "addThick" -> addThick(heatModuleCode, params, craftMonitor);
case "heat" -> heat(heatModuleCode, params, craftMonitor);
case "reduceLiquid" -> reduceLiquid(heatModuleCode, params, craftMonitor);
case "clean" -> clean(heatModuleCode, params, craftMonitor);
@ -88,7 +90,7 @@ public class CraftsStepService {
heatModuleService.heatRodOpen(HeatModuleCode.heat_module_04, temperature);
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));
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(HeatModuleCode.heat_module_04.toString(), "退火区加热中", temperature));
return true;
}
@ -98,6 +100,7 @@ public class CraftsStepService {
public boolean addLiquid(HeatModuleCode heatModuleCode, JSONObject params, CraftMonitor craftMonitor) throws Exception {
try {
/*工艺监控*/
log.info("工艺{},-------------------------------加液------------------------------", heatModuleCode);
JSONObject result = new JSONObject();
List<Integer> finishColumns = new ArrayList<>();
result.set(ResultCode.SUCCESS.getCode(), finishColumns);
@ -106,6 +109,7 @@ public class CraftsStepService {
/*工艺监控结束*/
/*获取配置信息*/
log.info("工艺{},获取配置信息", heatModuleCode);
deviceStateService.getDeviceState().getSolutionModule().setPumping(true);
Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离
Point3D feedAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.feedAreaTrayPoint).getPoint3D();//获取上料区托盘夹爪位置点
@ -117,7 +121,6 @@ public class CraftsStepService {
Integer containerId = params.getInt("containerId");//容器id
Double volume = params.getDouble("volume");//
JSONArray jsonArray = params.getJSONArray("columns");//列数
//Assert.isTrue(containerId != null && volume != null, () -> new AppException(ResultCode.CRAFT_PARAMS_MISTAKE));//参数错误
Container container = containerService.getById(containerId);//容器id
Solutions solutions = solutionsService.getById(container.getSolutionId());//获取溶液
Integer channel = container.getChannel();//获取阀门通道
@ -131,21 +134,28 @@ public class CraftsStepService {
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_liquid);//申请转运模组并等待
/*预充开始*/
log.info("工艺{},预充开始", heatModuleCode);
log.info("工艺{},加液机械臂上升", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升
log.info("工艺{},电磁阀对应通道打开", heatModuleCode);
solutionModuleService.liquidValveSwitch(SolutionCode.waste);//电磁阀对应通道打开
log.info("工艺{},加液机械臂下降至预充位置", heatModuleCode);
solutionModuleService.solutionMotorMove(preFillPosition);//加液机械臂下降至预充位置
log.info("工艺{},排空", heatModuleCode);
solutionModuleService.liquidPumpMove(-drainDistance);//排空
log.info("工艺{},电磁阀对应通道打开", heatModuleCode);
solutionModuleService.liquidValveSwitchByChannel(channel);//电磁阀对应通道打开
log.info("工艺{},预充", heatModuleCode);
solutionModuleService.liquidPumpMove(preFillDistance);//预充
log.info("工艺{},加液机械臂上升", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升
/*预充结束*/
/*移动至加液区开始*/
log.info("工艺{},移动至加液区", heatModuleCode);
boolean heatTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//获取加热区试管架
if (heatTrayExist) {//加热区存在试管架
log.info("工艺{},加热区存在托盘", heatModuleCode);
log.info("工艺{},机械臂移动至加热区", heatModuleCode);
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode.name()));
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离", heatModuleCode);
transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离
@ -158,9 +168,8 @@ public class CraftsStepService {
} else {//上料区存在托盘
boolean feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//获取上料区传感器状态
Assert.isTrue(feedTrayExist, () -> new AppException(ResultCode.FEED_AREA_NO_TRAY));
//Assert.isTrue(feedTrayExist, () -> new AppException(ResultCode.FEED_AREA_NO_TRAY));
log.info("工艺{},上料区存在托盘", heatModuleCode);
log.info("工艺{},机械臂移动至上料区", heatModuleCode);
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至上料区", feedAreaTrayPoint3D));
log.info("工艺{},将X轴移动至上料区托盘夹取点 + 进出卡槽移动距离", heatModuleCode);
transferModuleService.transferXMove(feedAreaTrayPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至上料区托盘夹取点 + 进出卡槽移动距离
@ -179,7 +188,161 @@ public class CraftsStepService {
deviceStateService.getDeviceState().getSolutionModule().setPumping(true);//正在加液
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInSolutionPositon(true);//托盘状态
boolean clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST);//获取传感器状态
Assert.isTrue(clawTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_NO_TRAY));//加液区无托盘
//Assert.isTrue(clawTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_NO_TRAY));//加液区无托盘
/*移动至加液区结束*/
/*开始加液*/
log.info("工艺{},开始加液", heatModuleCode);
List<Integer> columns = new ArrayList<>();
if (jsonArray != null) {
jsonArray.forEach(item -> {
columns.add(Integer.parseInt(item.toString()));
});
} else {
TubeState[] tubes = deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).getTubes();
for (TubeState tube : tubes) {
if (tube.isNeedAddSolution()) {
columns.add(tube.getColumnNum());
}
}
}
if (!columns.isEmpty()) {
for (int i = 0; i < columns.size(); i++) {
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "移动加液机械臂到指定试管", i));
double distance = Math.abs(columns.get(i) - 5) * trayTubeHorizontalSpacingDistance;//机械臂右移距离
log.info("工艺{},机械臂移动到试管位置{}", heatModuleCode, i);
transferModuleService.transferXMove(liquidAreaTrayPoint3D.getX() + distance);//机械臂移动到试管位置
log.info("工艺{},加液机械臂下降", heatModuleCode);
solutionModuleService.solutionMotorMove(solutionModuleMotorDownInTubeAddPositon);//加液机械臂下降
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "添加溶液", addLiquidDistance));
log.info("工艺{},加液", heatModuleCode);
solutionModuleService.liquidPumpMove(addLiquidDistance);//加液 position
log.info("工艺{},加液机械臂上升", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升
/*工艺监控开始*/
finishColumns.add(i);
result.set("columns", finishColumns);//添加到结果
craftMonitor.setCurrentStepResult(String.valueOf(result));
craftMonitor.setDeviceState(JSONUtil.toJsonStr(deviceStateService.getDeviceState()));
craftMonitorService.saveOrUpdate(craftMonitor);
/*工艺监控结束*/
}
}
/*结束加液*/
/*移动至加热区*/
log.info("工艺{},移动至加热区", heatModuleCode);
boolean heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有无托盘
//Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_OCCUPIED));//提示被占用
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode));
log.info("工艺{},加液机械臂上升", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode);
transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX());//将X轴移动至目标加热模块托盘夹取点
log.info("工艺{},Z轴下降至夹取点", heatModuleCode);
transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点使托盘落入石墨加热盘
log.info("工艺{},X轴移出卡槽", heatModuleCode);
transferModuleService.transferXMoveBy(transferModuleXPickTrayMoveDistance);//X轴移出卡槽
transferModuleService.transferZMoveZero();//Z轴抬升至最高
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(true);//加热区托盘状态
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInHeatModule(true);//托盘状态
deviceStateService.getDeviceState().getSolutionModule().setPumping(false);//正在加液
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInSolutionPositon(false);//托盘状态
return true;
} finally {
deviceStateService.getDeviceState().getSolutionModule().setPumping(false);
transferModuleService.releaseTransferModule();//释放转运模组
}
}
/*
* 加稀硝酸
* */
public boolean addThin(HeatModuleCode heatModuleCode, JSONObject params, CraftMonitor craftMonitor) throws Exception {
try {
log.info("工艺{},-------------------------------------加稀硝酸-------------------------------------", heatModuleCode);
/*工艺监控*/
log.info("工艺{},工艺监控", heatModuleCode);
JSONObject result = new JSONObject();
List<Integer> finishColumns = new ArrayList<>();
result.set(ResultCode.SUCCESS.getCode(), finishColumns);
craftMonitor.setCurrentStepResult(String.valueOf(result));
craftMonitorService.saveOrUpdate(craftMonitor);
/*工艺监控结束*/
/*获取配置信息*/
log.info("工艺{},获取配置信息", heatModuleCode);
deviceStateService.getDeviceState().getSolutionModule().setPumping(true);
Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离
Point3D feedAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.feedAreaTrayPoint).getPoint3D();//获取上料区托盘夹爪位置点
Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液时托盘位置点
Point3D heatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(heatModuleCode);//获取目标加热模块托盘夹取点
Double drainDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.drain_distance);//排空距离
Double preFillDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.pre_fill_distance);//预充距离
Double preFillPosition = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownPreFillPositon).getPositon();
Solutions solutions=solutionsService.getByCode(SolutionCode.thin.name());//获取溶液
Container container=containerService.getBySolutionsId(solutions.getId());//获取容器
Double volume = params.getDouble("volume");//
JSONArray jsonArray = params.getJSONArray("columns");//列数
Integer channel = container.getChannel();//获取阀门通道
Double trayTubeHorizontalSpacingDistance = devicePositionService.getPosition(DevicePositionCode.trayTubeHorizontalSpacingDistance).getDistance(); //托盘试管水平间距
double scale = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.valueOf(solutions.getCode()));//获取转换比
Double solutionModuleMotorDownInTubeAddPositon = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownInTubeAddPositon).getPositon(); //加液模块电机下降进入试管加液位置
double addLiquidDistance = volume * scale;
Point3D heatArea1TrayClawPoint = devicePositionService.getPosition(DevicePositionCode.heatArea1TrayClawPoint).getPoint3D();//加热位1坐标
Double liquidAreaPreFillPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaPreFillPoint).getPositon(); //预充时加液臂下降位置
/*获取参数结束*/
log.info("工艺{},申请转运模组并等待", heatModuleCode);
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_liquid);//申请转运模组并等待
/*预充开始*/
log.info("工艺{},预充开始", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升
transferModuleService.transferXMove(heatArea1TrayClawPoint.getX());//转运模块移动至加热位1
solutionModuleService.solutionMotorMove(liquidAreaPreFillPoint);//加液机械臂下降至至预充点位
log.info("工艺{},加液机械臂上升", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升
log.info("工艺{},电磁阀对应通道打开", heatModuleCode);
solutionModuleService.liquidValveSwitch(SolutionCode.waste);//电磁阀对应通道打开
log.info("工艺{},加液机械臂下降至预充位置", heatModuleCode);
solutionModuleService.solutionMotorMove(preFillPosition);//加液机械臂下降至预充位置
log.info("工艺{},排空", heatModuleCode);
solutionModuleService.liquidPumpMove(-drainDistance);//排空
log.info("工艺{},电磁阀对应通道打开", heatModuleCode);
solutionModuleService.liquidValveSwitchByChannel(channel);//电磁阀对应通道打开
log.info("工艺{},预充", heatModuleCode);
solutionModuleService.liquidPumpMove(preFillDistance);//预充
log.info("工艺{},加液机械臂上升", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升
/*预充结束*/
/*移动至加液区开始*/
boolean feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//获取上料区传感器状态
//Assert.isTrue(feedTrayExist, () -> new AppException(ResultCode.FEED_AREA_NO_TRAY));
log.info("工艺{},上料区存在托盘", heatModuleCode);
log.info("工艺{},机械臂移动至上料区", heatModuleCode);
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至上料区", feedAreaTrayPoint3D));
log.info("工艺{},将X轴移动至上料区托盘夹取点 + 进出卡槽移动距离", heatModuleCode);
transferModuleService.transferXMove(feedAreaTrayPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至上料区托盘夹取点 + 进出卡槽移动距离
log.info("工艺{},Z轴下降至夹取点,使托盘落入石墨加热盘", heatModuleCode);
transferModuleService.transferZMove(feedAreaTrayPoint3D.getZ());//Z轴下降至夹取点使托盘落入石墨加热盘
log.info("工艺{},X轴进入卡槽", heatModuleCode);
transferModuleService.transferXMoveBy(-transferModuleXPickTrayMoveDistance);//X轴进入卡槽
deviceStateService.getDeviceState().getSolutionModule().setFeedAreaTrayStatus(false);//加热区托盘状态
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInFeedArea(false);//托盘状态
log.info("工艺{},Z轴抬升至最高", heatModuleCode);
transferModuleService.transferZMoveZero();//Z轴抬升至最高
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加液区", DevicePositionCode.liquidAreaTrayPoint.name()));
log.info("工艺{},移动至加液时托盘位置点", heatModuleCode);
transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点
deviceStateService.getDeviceState().getSolutionModule().setPumping(true);//正在加液
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInSolutionPositon(true);//托盘状态
boolean clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST);//获取传感器状态
//Assert.isTrue(clawTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_NO_TRAY));//加液区无托盘
/*移动至加液区结束*/
@ -224,7 +387,186 @@ public class CraftsStepService {
/*移动至加热区*/
boolean heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有无托盘
Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_OCCUPIED));//提示被占用
//Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_OCCUPIED));//提示被占用
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode));
log.info("工艺{},加液机械臂上升", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode);
transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX());//将X轴移动至目标加热模块托盘夹取点
log.info("工艺{},Z轴下降至夹取点", heatModuleCode);
transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点使托盘落入石墨加热盘
log.info("工艺{},X轴移出卡槽", heatModuleCode);
transferModuleService.transferXMoveBy(transferModuleXPickTrayMoveDistance);//X轴移出卡槽
transferModuleService.transferZMoveZero();//Z轴抬升至最高
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(true);//加热区托盘状态
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInHeatModule(true);//托盘状态
deviceStateService.getDeviceState().getSolutionModule().setPumping(false);//正在加液
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInSolutionPositon(false);//托盘状态
return true;
} finally {
deviceStateService.getDeviceState().getSolutionModule().setPumping(false);
transferModuleService.releaseTransferModule();//释放转运模组
}
}
/*
* 加浓硝酸
* */
public boolean addThick(HeatModuleCode heatModuleCode, JSONObject params, CraftMonitor craftMonitor) throws Exception {
try {
log.info("工艺{},------------------------------加浓硝酸---------------------------", heatModuleCode);
/*工艺监控*/
log.info("工艺{},工艺监控", heatModuleCode);
JSONObject result = new JSONObject();
List<Integer> finishColumns = new ArrayList<>();
result.set(ResultCode.SUCCESS.getCode(), finishColumns);
craftMonitor.setCurrentStepResult(String.valueOf(result));
craftMonitorService.saveOrUpdate(craftMonitor);
/*工艺监控结束*/
/*获取配置信息*/
log.info("工艺{},获取配置信息", heatModuleCode);
deviceStateService.getDeviceState().getSolutionModule().setPumping(true);
Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离
Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液时托盘位置点
Point3D heatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(heatModuleCode);//获取目标加热模块托盘夹取点
Double drainDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.drain_distance);//排空距离
Double preFillDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.pre_fill_distance);//预充距离
Double preFillPosition = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownPreFillPositon).getPositon();
Solutions solutions=solutionsService.getByCode(SolutionCode.thick.name());//获取溶液
Container container=containerService.getBySolutionsId(solutions.getId());//获取容器
Double volume = params.getDouble("volume");//
JSONArray jsonArray = params.getJSONArray("columns");//列数
Integer channel = container.getChannel();//获取阀门通道
Double trayTubeHorizontalSpacingDistance = devicePositionService.getPosition(DevicePositionCode.trayTubeHorizontalSpacingDistance).getDistance(); //托盘试管水平间距
double scale = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.valueOf(solutions.getCode()));//获取转换比
Double solutionModuleMotorDownInTubeAddPositon = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownInTubeAddPositon).getPositon(); //加液模块电机下降进入试管加液位置
double addLiquidDistance = volume * scale;
Double reduceDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.reduce_distance);//抽液距离
Point3D heatArea1TrayClawPoint = devicePositionService.getPosition(DevicePositionCode.heatArea1TrayClawPoint).getPoint3D();
Double liquidAreaPreFillPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaPreFillPoint).getPositon(); //预充时加液臂下降位置
/*获取参数结束*/
log.info("工艺{},申请转运模组并等待", heatModuleCode);
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_liquid);//申请转运模组并等待
/*预充开始*/
log.info("工艺{},预充开始", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升
transferModuleService.transferXMove(heatArea1TrayClawPoint.getX());//转运模块移动至加热位1
solutionModuleService.solutionMotorMove(liquidAreaPreFillPoint);//加液机械臂下降至至预充点位
log.info("工艺{},加液机械臂上升", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升
log.info("工艺{},电磁阀对应通道打开", heatModuleCode);
solutionModuleService.liquidValveSwitch(SolutionCode.waste);//电磁阀对应通道打开
log.info("工艺{},加液机械臂下降至预充位置", heatModuleCode);
solutionModuleService.solutionMotorMove(preFillPosition);//加液机械臂下降至预充位置
log.info("工艺{},排空", heatModuleCode);
solutionModuleService.liquidPumpMove(-drainDistance);//排空
log.info("工艺{},电磁阀对应通道打开", heatModuleCode);
solutionModuleService.liquidValveSwitchByChannel(channel);//电磁阀对应通道打开
log.info("工艺{},预充", heatModuleCode);
solutionModuleService.liquidPumpMove(preFillDistance);//预充
log.info("工艺{},加液机械臂上升", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升
/*预充结束*/
/*移动至加液区*/
boolean heatTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//获取加热区试管架
//Assert.isTrue(heatTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_NO_TRAY));//目标加热区无托盘
log.info("工艺{},加热区存在托盘", heatModuleCode);
log.info("工艺{},机械臂移动至加热区", heatModuleCode);
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode.name()));
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离", heatModuleCode);
transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标加热模块托盘夹取点 + 进出卡槽移动距离
log.info("工艺{},Z轴下降至夹取点", heatModuleCode);
transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点
log.info("工艺{},X轴进入卡槽", heatModuleCode);
transferModuleService.transferXMoveBy(-transferModuleXPickTrayMoveDistance);//X轴进入卡槽
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(false);//加热区托盘状态
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInHeatModule(false);//托盘状态
log.info("工艺{},Z轴抬升至最高", heatModuleCode);
transferModuleService.transferZMoveZero();//Z轴抬升至最高
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加液区", DevicePositionCode.liquidAreaTrayPoint.name()));
log.info("工艺{},移动至加液时托盘位置点", heatModuleCode);
transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInSolutionPositon(true);//托盘状态
boolean clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST);//获取传感器状态
//Assert.isTrue(clawTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_NO_TRAY));//加液区无托盘
/*移动至加液区结束*/
/*开始抽液*/
log.info("工艺{},开始抽液", heatModuleCode);
List<Integer> reduceColumns = new ArrayList<>();
TubeState[] tubes = deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).getTubes();
for (TubeState tube : tubes) {
if (tube.isNeedAddSolution()) {
reduceColumns.add(tube.getColumnNum());
}
}
if (!reduceColumns.isEmpty()) {
for (int i = 0; i < reduceColumns.size(); i++) {
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "移动加液机械臂到指定试管", i));
double distance = Math.abs(reduceColumns.get(i) - 5) * trayTubeHorizontalSpacingDistance;//机械臂右移距离
log.info("工艺{},机械臂移动到试管位置{}", heatModuleCode, i);
transferModuleService.transferXMove(liquidAreaTrayPoint3D.getX() + distance);//机械臂移动到试管位置
log.info("工艺{},加液机械臂下降", heatModuleCode);
solutionModuleService.solutionMotorMove(solutionModuleMotorDownInTubeAddPositon);//加液机械臂下降
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "抽取溶液", addLiquidDistance));
log.info("工艺{},加液", heatModuleCode);
solutionModuleService.liquidPumpMove(-reduceDistance);//加液 position
log.info("工艺{},加液机械臂上升", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升
}
}
/*抽液结束*/
/*移动至加液区*/
log.info("工艺{},移动至加液区", heatModuleCode);
transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点
/*移动至加液区*/
/*开始加液*/
log.info("工艺{},开始加液", heatModuleCode);
List<Integer> addColumns;
if (jsonArray != null) {
addColumns = new ArrayList<>();
jsonArray.forEach(item -> {
addColumns.add(Integer.parseInt(item.toString()));
});
} else {
addColumns = reduceColumns;
}
if (!addColumns.isEmpty()) {
for (int i = 0; i < addColumns.size(); i++) {
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "移动加液机械臂到指定试管", addColumns.get(i)));
double distance = Math.abs(addColumns.get(i) - 5) * trayTubeHorizontalSpacingDistance;//机械臂右移距离
log.info("工艺{},机械臂移动到试管位置{}", heatModuleCode, i);
transferModuleService.transferXMove(liquidAreaTrayPoint3D.getX() + distance);//机械臂移动到试管位置
log.info("工艺{},加液机械臂下降", heatModuleCode);
solutionModuleService.solutionMotorMove(solutionModuleMotorDownInTubeAddPositon);//加液机械臂下降
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "添加溶液", addLiquidDistance));
log.info("工艺{},加液", heatModuleCode);
solutionModuleService.liquidPumpMove(addLiquidDistance);//加液 position
log.info("工艺{},加液机械臂上升", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升
/*工艺监控开始*/
finishColumns.add(i);
result.set("columns", finishColumns);//添加到结果
craftMonitor.setCurrentStepResult(String.valueOf(result));
craftMonitor.setDeviceState(JSONUtil.toJsonStr(deviceStateService.getDeviceState()));
craftMonitorService.saveOrUpdate(craftMonitor);
/*工艺监控结束*/
}
}
/*结束加液*/
/*移动至加热区*/
log.info("工艺{},移动至加热区", heatModuleCode);
boolean heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有无托盘
//Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_OCCUPIED));//提示被占用
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode));
log.info("工艺{},加液机械臂上升", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升
@ -265,7 +607,6 @@ public class CraftsStepService {
if (height > 50) {
throw new AppException(ResultCode.CRAFT_PARAMS_MISTAKE);
}
//Assert.isTrue(height != null && height < 4, () -> new AppException(ResultCode.CRAFT_PARAMS_MISTAKE));//参数错误
Point3D heatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(heatModuleCode);//获取目标加热模块托盘夹取点
Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离
Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液时托盘位置点
@ -275,7 +616,7 @@ public class CraftsStepService {
/*获取参数结束*/
boolean heatTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//获取加热区传感器状态
Assert.isTrue(heatTrayExist, () -> new AppException(ResultCode.CRAFT_TARGET_HEAT_NO_TRAY));//加热区无托盘
//Assert.isTrue(heatTrayExist, () -> new AppException(ResultCode.CRAFT_TARGET_HEAT_NO_TRAY));//加热区无托盘
log.info("工艺{},申请转运模组并等待", heatModuleCode);
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_liquid);//申请转运模组并等待
log.info("工艺{},加液机械臂上升", heatModuleCode);
@ -343,7 +684,7 @@ public class CraftsStepService {
/*移动至加热区开始*/
log.info("工艺{},移动至托盘至加液位置点", heatModuleCode);
boolean heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有无托盘
Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_OCCUPIED));//提示被占用
//Assert.isTrue(!heatModuleTrayExist, () -> new AppException(ResultCode.TARGET_HEAT_MODULE_OCCUPIED));//提示被占用
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleCode));
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode);
transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX());//将X轴移动至目标加热模块托盘夹取点
@ -379,7 +720,6 @@ public class CraftsStepService {
Double temperature = params.getDouble("temperature");//温度
Integer time = params.getInt("time");//
//Assert.isTrue(temperature != null && time != null, () -> new AppException(ResultCode.CRAFT_PARAMS_MISTAKE));//参数错误
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.heating); //设置加热区状态 加热中
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTargetTemperature(temperature);//将加热温度设定为目标温度
log.info("工艺{},开始加热", heatModuleCode);
@ -422,6 +762,7 @@ public class CraftsStepService {
* */
public boolean clean(HeatModuleCode heatModuleCode, JSONObject params, CraftMonitor craftMonitor) throws Exception {
try {
log.info("工艺{},----------------------------------清洗---------------------------------------------", heatModuleCode);
/*保存到监控开始*/
JSONObject result = new JSONObject();
craftMonitor.setCurrentStepResult(String.valueOf(result));
@ -433,9 +774,8 @@ public class CraftsStepService {
Double volume = params.getDouble("volume") == null ? 2.0 : params.getDouble("volume");//加水量
Integer cycle = params.getInt("cycle");//次数
Double height = params.getDouble("height");//下降进入试管的高度
//Assert.isTrue(cycle != null && volume != null && height != null, () -> new AppException(ResultCode.CRAFT_PARAMS_MISTAKE));//参数错误
boolean heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);//目标加热模块有无托盘
Assert.isTrue(heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_TARGET_HEAT_NO_TRAY));//提示工艺加热区无托盘
//Assert.isTrue(heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_TARGET_HEAT_NO_TRAY));//提示工艺加热区无托盘
Point3D heatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(heatModuleCode);//获取目标加热模块托盘夹取点
Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离
Point3D liquidAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.liquidAreaTrayPoint).getPoint3D();//获取加液时托盘位置点
@ -448,6 +788,8 @@ public class CraftsStepService {
Double drainDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.drain_distance);//排空距离
Double preFillDistance = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.pre_fill_distance);//过量预充距离
Double preFillPosition = devicePositionService.getPosition(DevicePositionCode.solutionModuleMotorDownPreFillPositon).getPositon();//机械臂预充时下降距离
Point3D heatArea1TrayClawPoint = devicePositionService.getPosition(DevicePositionCode.heatArea1TrayClawPoint).getPoint3D();
Double liquidAreaPreFillPoint = devicePositionService.getPosition(DevicePositionCode.liquidAreaPreFillPoint).getPositon(); //预充时加液臂下降位置
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动至加热区", heatModuleTrayClawPoint3D));
/*获取参数结束*/
@ -503,6 +845,9 @@ public class CraftsStepService {
/*预充开始*/
log.info("工艺{},清洗-预充开始", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升
transferModuleService.transferXMove(heatArea1TrayClawPoint.getX());//转运模块移动至加热位1
solutionModuleService.solutionMotorMove(liquidAreaPreFillPoint);//加液机械臂下降至至预充点位
solutionModuleService.liquidPumpMove(-drainDistance);//排空
solutionModuleService.solutionMotorMove(preFillPosition);//加液机械臂下降至预充位置
solutionModuleService.liquidValveSwitch(SolutionCode.water);//电磁阀对应通道打开
@ -512,6 +857,8 @@ public class CraftsStepService {
/*清洗开始*/
log.info("工艺{},清洗开始", heatModuleCode);
transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点
for (int i = 0; i < cycle; i++) {
/*加*/
log.info("工艺{},电磁阀蒸馏水通道打开", heatModuleCode);
@ -532,6 +879,7 @@ public class CraftsStepService {
Thread.sleep(1000);
/*抽*/
solutionModuleService.liquidValveSwitch(SolutionCode.waste);//电磁阀对应通道打开
transferModuleService.transferMove(liquidAreaTrayPoint3D);//移动至加液时托盘位置点
for (int j = 0; j < columns.size(); j++) {
double distance = Math.abs(columns.get(j) - 5) * trayTubeHorizontalSpacingDistance;//x轴移动距离
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "机械臂移动到试管位置", j));
@ -546,7 +894,7 @@ public class CraftsStepService {
log.info("工艺{},加液模块上升至最高,移出试管", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液模块上升至最高移出试管
}
result.set("cycle", i+1);//添加到结果
result.set("cycle", i + 1);//添加到结果
craftMonitor.setCurrentStepResult(String.valueOf(result));
craftMonitor.setDeviceState(JSONUtil.toJsonStr(deviceStateService.getDeviceState()));
craftMonitorService.saveOrUpdate(craftMonitor);//保存到监控
@ -554,7 +902,6 @@ public class CraftsStepService {
}
/*清洗结束*/
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode);
transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX());//将X轴移动至目标加热模块托盘夹取点
log.info("工艺{},Z轴下降至夹取点,使托盘落入石墨加热盘", heatModuleCode);
@ -588,7 +935,6 @@ public class CraftsStepService {
Double temperature = params.getDouble("temperature");//
Integer time = params.getInt("time");//
//Assert.isTrue(temperature != null && time != null, () -> new AppException(ResultCode.CRAFT_PARAMS_MISTAKE));//参数错误
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "打开加热棒", temperature));
heatModuleService.heatRodOpen(heatModuleCode, temperature);//打开加热棒
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.heating); //设置加热区状态 烘干中
@ -637,9 +983,8 @@ public class CraftsStepService {
craftMonitorService.saveOrUpdate(craftMonitor);
Double temperature = params.getDouble("temperature");//退火温度
Integer time = params.getInt("time");//
//Assert.isTrue(temperature != null && time != null, () -> new AppException(ResultCode.CRAFT_PARAMS_MISTAKE));//参数错误
boolean heatModuleTrayExist = deviceSensorService.getTrayStateByHeatModuleCode(heatModuleCode);
Assert.isTrue(heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_TARGET_HEAT_NO_TRAY));//提示加热模块无托盘
//Assert.isTrue(heatModuleTrayExist, () -> new AppException(ResultCode.CRAFT_TARGET_HEAT_NO_TRAY));//提示加热模块无托盘
while (deviceSensorService.getTrayStateByHeatModuleCode(HeatModuleCode.heat_module_04)) {//判断退火区是否被占用
delay(10);//等待10秒
}
@ -793,6 +1138,56 @@ public class CraftsStepService {
public void finish(HeatModuleCode heatModuleCode, CraftMonitor craftMonitor) throws Exception {
craftMonitorService.removeById(craftMonitor.getId());
List<TrayState> trayList = deviceStateService.getDeviceState().getTrays();
trayList.removeIf((tray) -> tray.getHeatModuleCode().equals(heatModuleCode));
// moveToFeedModule(heatModuleCode);
}
/*结束后移动至上料区*/
public void moveToFeedModule(HeatModuleCode heatModuleCode) throws Exception {
try {
boolean feedTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST);//上料区托盘状态
while (feedTrayExist) {
deviceLightSoundService.openBeep(CmdBeepMode.info);
delay(2);
deviceLightSoundService.closeBeep();
}
Point3D heatModuleTrayClawPoint3D = heatModuleService.getHeatModuleTrayClawPoint3D(heatModuleCode);//获取目标加热模块托盘夹取点
Double transferModuleXPickTrayMoveDistance = devicePositionService.getPosition(DevicePositionCode.transferModuleXPickTrayMoveDistance).getDistance();//获取转运模块X轴拿取托盘进出卡槽移动距离
Point3D feedAreaTrayPoint3D = devicePositionService.getPosition(DevicePositionCode.feedAreaTrayPoint).getPoint3D();//获取上料区托盘夹爪位置点
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_feed);//获取转运模组锁
log.info("工艺{},加液机械臂上升", heatModuleCode);
solutionModuleService.solutionMotorMoveZero();//加液机械臂上升
log.info("工艺{},Z轴抬升至最高", heatModuleCode);
transferModuleService.transferZMoveZero();//Z轴抬升至最高
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode);
transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX() + transferModuleXPickTrayMoveDistance);//将X轴移动至目标加热模块托盘夹取点
log.info("工艺{},Z轴下降至夹取点", heatModuleCode);
transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点使托盘落入石墨加热盘
log.info("工艺{},X轴移出卡槽", heatModuleCode);
transferModuleService.transferXMoveBy(-transferModuleXPickTrayMoveDistance);//X轴移出卡槽
log.info("工艺{},Z轴抬升至最高", heatModuleCode);
transferModuleService.transferZMoveZero();//Z轴抬升至最高
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTrayStatus(false);//加热区托盘状态
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInHeatModule(false);//托盘状态
log.info("工艺{},将X轴移动至上料区托盘夹取点", heatModuleCode);
transferModuleService.transferXMove(feedAreaTrayPoint3D.getX());//将X轴移动至上料区托盘夹取点 + 进出卡槽移动距离
log.info("工艺{},Z轴下降至夹取点", heatModuleCode);
transferModuleService.transferZMove(feedAreaTrayPoint3D.getZ());//Z轴下降至夹取点使托盘落入石墨加热盘
log.info("工艺{},X轴进入卡槽", heatModuleCode);
transferModuleService.transferXMoveBy(transferModuleXPickTrayMoveDistance);//X轴进入卡槽
log.info("工艺{},Z轴抬升至最高", heatModuleCode);
transferModuleService.transferZMoveZero();//Z轴抬升至最高
log.info("工艺{},转运模组释放", heatModuleCode);
transferModuleService.releaseTransferModule();//转运模组释放
deviceStateService.getDeviceState().getTrayByHeatModuleCode(heatModuleCode).setInFeedArea(true);//托盘状态
deviceLightSoundService.openBeep(CmdBeepMode.info);
delay(2);
deviceLightSoundService.closeBeep();
} finally {
transferModuleService.releaseTransferModule();//转运模组释放
}
List<TrayState> trayList = deviceStateService.getDeviceState().getTrays();
trayList.removeIf((tray)->tray.getHeatModuleCode().equals(heatModuleCode));
}

6
src/main/java/com/iflytop/sgs/app/service/device/module/TransferModuleService.java

@ -43,12 +43,12 @@ public class TransferModuleService {
// 1. 先把自己加入对应类型的队列尾部
Thread current = Thread.currentThread();
switch (type) {
case move_heat:
heatQueue.add(current);
break;
case move_liquid:
solutionQueue.add(current);
break;
case move_heat:
heatQueue.add(current);
break;
case move_anneal:
annealQueue.add(current);
break;

2
src/main/resources/sql/init.sql

@ -7,7 +7,7 @@ CREATE TABLE IF NOT EXISTS user
password TEXT,
role TEXT,
fixed_user TEXT,
deleted TEXT,
deleted TEXT DEFAULT 'DISABLE',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Loading…
Cancel
Save