|
|
@ -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); |
|
|
|
} |
|
|
|