src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/MainProcess.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/protocol/CrnProtocol.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/MelsecCrnThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SiemensDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -89,6 +89,8 @@ private BasCrnErrorMapper basCrnErrorMapper; @Value("${wms.url}") private String wmsUrl; @Value("${crnBackHp.enable}") private boolean crnBackHp; /** * 组托 @@ -549,48 +551,56 @@ } // 库位移转 this.locToLoc(crn, crnProtocol); if (crnBackHp) { //堆垛机没有执行中任务,设备存在入库任务时叫回原点 this.crnRebackHp(crnProtocol); } } } /** * 回原点,堆垛机没有执行中任务,设备存在入库任务时叫回原点 */ public void crnRebackHp(){ for (CrnSlave crn : slaveProperties.getCrn()) { // 获取堆垛机信息 CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); CrnProtocol crnProtocol = crnThread.getCrnProtocol(); if (crnProtocol == null) { continue; } BasCrnp basCrnp = basCrnpService.selectById(crn.getId()); if (basCrnp == null) { log.error("{}号堆垛机尚未在数据库进行维护!", crn.getId()); continue; } public synchronized void crnRebackHp(CrnProtocol crnProtocol){ // for (CrnSlave crn : slaveProperties.getCrn()) { // // 获取堆垛机信息 // CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); // CrnProtocol crnProtocol = crnThread.getCrnProtocol(); // if (crnProtocol == null) { // continue; // } // BasCrnp basCrnp = basCrnpService.selectById(crn.getId()); // if (basCrnp == null) { // log.error("{}号堆垛机尚未在数据库进行维护!", crn.getId()); // continue; // } if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { if(crnProtocol.getBay() ==1 && crnProtocol.getLevel()==1){ continue; return; } // 已经存在吊车执行任务时,则过滤 if (wrkMastMapper.selectWorking(crn.getId()) != null) { continue; // 已经存在吊车执行任务时,则过滤3,12 if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) { return; } //堆垛机有执行中任务,过滤 if (wrkMastMapper.selectCrnWorking(crn.getId()) != null) { continue; //堆垛机有执行中任务,过滤3,4,11,12 if (wrkMastMapper.selectCrnWorking(crnProtocol.getCrnNo()) != null) { return; } //输送线没有入库任务,过滤 if (wrkMastMapper.selectDevWorking(crn.getId()) == null) { continue; } //输送线没有入库任务,过滤2 if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) { return; } // log.info("堆垛机召回原点==>>" + crn.getId() + "号堆垛机有入库任务,召回原点"); // 命令下发区 -------------------------------------------------------------------------- CrnCommand crnCommand = new CrnCommand(); crnCommand.setCrnNo(crn.getId()); // 堆垛机编号 crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 堆垛机编号 crnCommand.setTaskNo((short) 9999); // 工作号 crnCommand.setAckFinish((short) 0); // 任务完成确认位 crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 任务模式: 回原点 @@ -600,11 +610,11 @@ crnCommand.setDestinationPosX((short) 0); // 目标库位排 crnCommand.setDestinationPosY((short) 0); // 目标库位列 crnCommand.setDestinationPosZ((short) 0); // 目标库位层 if (!MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(2, crnCommand))) { log.error("堆垛机回原点命令下发失败,堆垛机号={},任务数据={}", crn.getId(), JSON.toJSON(crnCommand)); if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) { log.error("堆垛机回原点命令下发失败,堆垛机号={},任务数据={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand)); } } } // } } /** @@ -1448,6 +1458,7 @@ if (Utils.isDeepLoc(slaveProperties, row)) { loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1()); if (loc !=null) { if (Utils.isDeepLoc(slaveProperties, loc.getLocNo())){ String shallowLocNo = Utils.getShallowLoc(slaveProperties, loc.getLocNo()); LocMast shallowLoc1 = locMastService.selectById(shallowLocNo); @@ -1455,6 +1466,8 @@ loc = null; } } } if (null != loc) { break; } } src/main/java/com/zy/core/MainProcess.java
@@ -25,6 +25,7 @@ private Thread thread; @Value("${crnBackHp.enable}") private boolean crnBackHp; private boolean look = true; /** * =====>> 开始工作 @@ -68,10 +69,13 @@ // 其他 ===>> LED显示器复位,显示默认信息 mainService.ledReset(); if (crnBackHp) { //堆垛机没有执行中任务,设备存在入库任务时叫回原点 mainService.crnRebackHp(); } // if (crnBackHp) { // if (look) { // //堆垛机没有执行中任务,设备存在入库任务时叫回原点 // mainService.crnRebackHp(); // } // } // look = !look; } catch (Exception e) { e.printStackTrace(); src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -13,6 +13,8 @@ @Data public class CrnProtocol { private Integer crnNo; /** * 1 = 手动模式 * 2 = 自动模式 src/main/java/com/zy/core/thread/MelsecCrnThread.java
@@ -161,6 +161,7 @@ if (result.IsSuccess) { if (null == crnProtocol) { crnProtocol = new CrnProtocol(); crnProtocol.setCrnNo(slave.getId()); } crnProtocol.setMode(melsecMcNet.getByteTransform().TransInt16(result.Content, 0)); crnProtocol.setTaskNo(melsecMcNet.getByteTransform().TransInt16(result.Content, 2)); src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -231,24 +231,24 @@ log.error("更新数据库数据失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } //出库到182站堆垛机任务数据发送给PLC try{ WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class); if(null != wrkMastService){ int count = wrkMastService.getOutToStn182(182); if(count != PRE_COUNT){ OperateResult write = siemensS7Net.Write("DB300.2",(short)count); if (write.IsSuccess) { PRE_COUNT = count; } else { log.error("更新堆垛机出库到182站任务数量错误,任务数量==>>" + count); } } } }catch (Exception e) { e.printStackTrace(); log.error("更新堆垛机出库到182站任务数量失败"); } // //出库到182站堆垛机任务数据发送给PLC // try{ // WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class); // if(null != wrkMastService){ // int count = wrkMastService.getOutToStn182(182); // if(count != PRE_COUNT){ // OperateResult write = siemensS7Net.Write("DB300.2",(short)count); // if (write.IsSuccess) { // PRE_COUNT = count; // } else { // log.error("更新堆垛机出库到182站任务数量错误,任务数量==>>" + count); // } // } // } // }catch (Exception e) { // e.printStackTrace(); // log.error("更新堆垛机出库到182站任务数量失败"); // } } else { OutputQueue.DEVP.offer(MessageFormat.format("【{0}】读取输送线plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); src/main/resources/application.yml
@@ -43,7 +43,7 @@ #堆垛机没有执行中任务,输送有入库任务,叫回原点 crnBackHp: enable: true enable: false # 下位机配置 wcs-slave: