Browse Source

系统配置参数量

master
王梦远 2 months ago
parent
commit
d9a99461e1
  1. 12
      src/main/java/com/iflytop/sgs/app/service/api/CraftsService.java
  2. 35
      src/main/java/com/iflytop/sgs/app/service/crafts/CraftsStepService.java
  3. 5
      src/main/java/com/iflytop/sgs/app/service/device/module/HeatModuleService.java
  4. 20
      src/main/java/com/iflytop/sgs/common/enums/SystemConfigCode.java
  5. 4
      src/main/java/com/iflytop/sgs/common/result/ResultCode.java

12
src/main/java/com/iflytop/sgs/app/service/api/CraftsService.java

@ -23,6 +23,7 @@ import com.iflytop.sgs.app.service.device.DeviceStateService;
import com.iflytop.sgs.app.service.device.module.HeatModuleService;
import com.iflytop.sgs.app.ws.server.WebSocketSender;
import com.iflytop.sgs.common.enums.HeatModuleCode;
import com.iflytop.sgs.common.enums.SystemConfigCode;
import com.iflytop.sgs.common.enums.automaton.CraftEvents;
import com.iflytop.sgs.common.enums.automaton.CraftStates;
import com.iflytop.sgs.common.exception.AppException;
@ -61,6 +62,7 @@ public class CraftsService extends ServiceImpl<CraftsMapper, Crafts> {
private ExecutorService executor;
private final DeviceStateService deviceStateService;
private final ObjectProvider<CraftsState> craftsStateObjectProvider;
private final SystemConfigService systemConfigService;
@PostConstruct
public void init() {
@ -102,16 +104,22 @@ public class CraftsService extends ServiceImpl<CraftsMapper, Crafts> {
heatModuleCode = heatModuleState.getModuleCode();
}
} else {
//判断加热区温度是否达标
if (futureMap.containsKey(heatModuleCode)) {//校验指定加热模块是否正在执行工艺
log.error("工艺正在执行中,不可重复开始执行。");
throw new AppException(ResultCode.CRAFT_RUNNING);
}
}
//判断温度
Double coldTemperature = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.fan_stop_temperature);//加热区能能够执行加热的最低温度
double currentTemperature = deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).getTemperature();
if (currentTemperature > coldTemperature) {
log.error("加热模块温度过高");
throw new AppException(ResultCode.HEAT_MODULE_TEMPERATURE_IS_HEIGHT);
}
craftMonitor.setHeatId(heatModuleCode);
craftMonitorService.save(craftMonitor);
log.info("准备开始工艺,加热模块{},工艺{}", heatModuleCode, craft.getName());
//TODO 传感器校验heatModuleCode是否被占用
// 校验已有上下文状态仅允许在 READYSTOPPED FINISHED 状态下重置
// CraftsContext existing = contextMap.get(heatModuleCode);
// if (existing != null) {

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

@ -32,6 +32,7 @@ import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
/**
* 工艺步骤执行服务
@ -232,22 +233,6 @@ public class CraftsStepService {
log.info("工艺{},将X轴移动至目标加热模块托盘夹取点", heatModuleCode);
transferModuleService.transferXMove(heatModuleTrayClawPoint3D.getX());//将X轴移动至目标加热模块托盘夹取点
log.info("工艺{},Z轴下降至夹取点", heatModuleCode);
//判断温度
Double coldTemperature = systemConfigService.getSystemConfigDoubleByCode(SystemConfigCode.fan_stop_temperature);//降温至
double currentTemperature = deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).getTemperature();
if (currentTemperature > coldTemperature) {
log.info("工艺{},散热打开", heatModuleCode);
heatModuleService.fanStart(heatModuleCode);//散热打开
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setFanOpen(true); //设置加热区风扇打开
// while (!codeIsSuitable(heatModuleCode, coldTemperature)) {
// delay(5);
// }
delay(60);
log.info("工艺{},散热关闭", heatModuleCode);
heatModuleService.fanClose(heatModuleCode);//散热关闭
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setFanOpen(false); //设置加热区风扇关闭
}
transferModuleService.transferZMove(heatModuleTrayClawPoint3D.getZ());//Z轴下降至夹取点使托盘落入石墨加热盘
log.info("工艺{},X轴移出卡槽", heatModuleCode);
transferModuleService.transferXMoveBy(transferModuleXPickTrayMoveDistance);//X轴移出卡槽
@ -292,7 +277,7 @@ public class CraftsStepService {
Double volume = params.getDouble("volume");//
JSONArray jsonArray = params.getJSONArray("columns");//列数
Double height = params.getDouble("height");//下降进入试管的高度
if (height > 54) {
if (height > 54) {//到达试管底部的最大距离
throw new AppException(ResultCode.CRAFT_PARAMS_MISTAKE);
}
Integer channel = container.getChannel();//获取阀门通道
@ -466,16 +451,14 @@ public class CraftsStepService {
craftMonitor.setCurrentStepResult(String.valueOf(result));
craftMonitorService.saveOrUpdate(craftMonitor);
/*工艺监控清理上步的记录*/
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);
heatModuleService.heatRodOpen(heatModuleCode, temperature);
heatModuleService.fanClose(heatModuleCode);//关闭风扇
heatModuleService.heatRodOpen(heatModuleCode, temperature);//打开加热棒
while (!heatIsSuitable(heatModuleCode, temperature)) {//判断温度是否到达
delay(1);
}
@ -736,8 +719,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); //设置加热区状态
@ -866,7 +849,7 @@ public class CraftsStepService {
}
/*
* 检测加热区降温温度是否合适
* 检测加热区温度是否合适
* */
public boolean heatIsSuitable(HeatModuleCode heatModuleCode, Double temperature) throws Exception {
double currentTemperature = deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).getTemperature();
@ -875,9 +858,9 @@ public class CraftsStepService {
}
/*
* 检测加热区温温度是否合适
* 检测加热区温温度是否合适
* */
public boolean codeIsSuitable(HeatModuleCode heatModuleCode, Double temperature) throws Exception {
public boolean coldIsSuitable(HeatModuleCode heatModuleCode, Double temperature) throws Exception {
double currentTemperature = deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).getTemperature();
log.info("工艺{},当前温度{}",heatModuleCode,currentTemperature);
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "加热区温度", currentTemperature));

5
src/main/java/com/iflytop/sgs/app/service/device/module/HeatModuleService.java

@ -138,12 +138,11 @@ public class HeatModuleService {
* 获取一个空闲加热区
*/
public HeatModuleState getIdleHeatModule() {
//List<HeatModuleState> heatModuleStateList=deviceStateService.getDeviceState().getHeatModule();
//heatModuleStateList.removeIf(heatModuleState -> heatModuleState.getModuleCode().equals(HeatModuleCode.heat_module_04));
for (HeatModuleState heatModuleState : deviceStateService.getDeviceState().getHeatModule()) {
boolean flag = true;
for (TrayState trayState : deviceStateService.getDeviceState().getTrays()) {
if (heatModuleState.getModuleCode().equals(trayState.getHeatModuleCode())) {
if (heatModuleState.getModuleCode().equals(HeatModuleCode.heat_module_04) ||
heatModuleState.getModuleCode().equals(trayState.getHeatModuleCode())) {
flag = false;
break;
}

20
src/main/java/com/iflytop/sgs/common/enums/SystemConfigCode.java

@ -7,20 +7,20 @@ import lombok.Getter;
*/
@Getter
public enum SystemConfigCode {
water("水加液系数"),
thick("浓硝酸加液系数"),
thin("稀硝酸加液系数"),
back_flow_distance("回吸放滴落距离"),
pre_fill_distance("加液预充距离"),
drain_distance("加液排空距离"),
reduce_distance("过量抽液距离"),
water("水加液系数 标准2"),
thick("浓硝酸加液系数 标准2"),
thin("稀硝酸加液系数 标准2"),
back_flow_distance("回吸放滴落距离 0-0.2"),
pre_fill_distance("加液预充距离 最小17"),
drain_distance("加液排空距离 最小17"),
reduce_distance("过量抽液距离 7左右"),
cycle_clean_max("允许的最大清洁次数"),
liquid_max_speed("蠕动泵最大转速限制"),
liquid_max_speed("蠕动泵最大转速限制 150"),
door_origin_is_ignore("忽略门自检"),
crafts_end_beep_times("工艺结束蜂鸣器响次数"),
fan_stop_temperature("风扇关闭的温度设置"),
pre_fill_when_open_service("开机是否预充"),
pre_fill_distance_when_open_service("开机预充距离"),
pre_fill_when_open_service("开机是否预充 默认true"),
pre_fill_distance_when_open_service("开机预充距离 最小3"),
;
private final String description;

4
src/main/java/com/iflytop/sgs/common/result/ResultCode.java

@ -70,7 +70,9 @@ public enum ResultCode implements IResultCode, Serializable {
HEAT_MODULE_NO_IDLE("6033", "加热模块无空闲"),
TRANSFER_MODULE_YES_TRAY("6034", "夹爪存在托盘"),
NOT_ALLOWED_HEAT_MODULE("6035", "不允许选择的加热区"),
FEED_AREA_EXIST_TRAY("6036", "上料区无托盘"),;
FEED_AREA_EXIST_TRAY("6036", "上料区无托盘"),
FAN_START_FAIL("6037", "散热打开失败"),
HEAT_MODULE_TEMPERATURE_IS_HEIGHT("6038", "目标加热区温度过高");
/** 状态码 */
private final String code;
/** 提示信息 */

Loading…
Cancel
Save