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/thread/SiemensDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -489,12 +489,18 @@ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) { News.warnNoLog("" + mark + " - 0" + " - 开始执行"); WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode); // WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue()); // WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue()); if (wrkMast == null) { // 无拣料数据 continue; WrkMast wrkMast1 = wrkMastMapper.selectPakInStepBarcode(barcode); if (!(wrkMast1 != null && wrkMast1.getWrkSts() == 2 && wrkMast1.getIoType() == 53)) { // 无拣料数据 continue; } else { wrkMast1.setIoType(103); wrkMast = wrkMast1; } } if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) { if (( wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) { continue; } @@ -508,6 +514,7 @@ // log.error("{}号任务数据异常!", wrkMast.getWrkNo()); // } // 获取目标站 Wrapper<StaDesc> wrapper = new QueryWrapper<StaDesc>().eq("type_no", wrkMast.getIoType() - 50).eq("stn_no", pickSta.getStaNo()) // 作业站点 = 拣料出库的目标站 .eq("crn_no", wrkMast.getCrnNo()); // 堆垛机号 StaDesc staDesc = staDescService.getOne(wrapper); @@ -1330,8 +1337,36 @@ // 状态:等待确认 并且 任务完成位 = 1 if (wait && crnProtocol.getTaskNo() != 0) { News.warnNoLog("" + mark + " - 0" + " - 开始执行对工作档的完成操作"); if (crnProtocol.getTaskNo() == 9999) { // if (crnProtocol.getTaskNo() == 9999) { // // 堆垛机复位 // if (statusType == CrnStatusType.WAITING_ONE) { // crnThread.setResetFlag(true); // } else if (statusTypeTwo == CrnStatusType.WAITING_TWO) { // crnThread.setResetFlagTwo(true); // } else { // crnThread.setResetFlag(true); // crnThread.setResetFlagTwo(true); // } // } else { // 获取入库待确认工作档 WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue()); if (wrkMast == null) { News.error("" + mark + " - 1" + " - 堆垛机处于等待确认且任务完成状态,但未找到工作档。堆垛机号={},工作号={}", crn.getId(), crnProtocol.getTaskNo()); continue; } // 入库 + 库位转移 ==> 4.入库完成 if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) { wrkMast.setWrkSts(4L); } else { continue; } Date now = new Date(); wrkMast.setCrnEndTime(now); wrkMast.setModiTime(now); // 修改成功后复位堆垛机 if (wrkMastMapper.updateById(wrkMast) > 0) { // 堆垛机复位 News.info("" + mark + " - 2" + " - 修改成功后复位堆垛机 : 堆垛机号={}", crnThread.getCrnProtocol().getCrnNo()); if (statusType == CrnStatusType.WAITING_ONE) { crnThread.setResetFlag(true); } else if (statusTypeTwo == CrnStatusType.WAITING_TWO) { @@ -1341,39 +1376,11 @@ crnThread.setResetFlagTwo(true); } } else { // 获取入库待确认工作档 WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue()); if (wrkMast == null) { News.error("" + mark + " - 1" + " - 堆垛机处于等待确认且任务完成状态,但未找到工作档。堆垛机号={},工作号={}", crn.getId(), crnProtocol.getTaskNo()); continue; } // 入库 + 库位转移 ==> 4.入库完成 if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) { wrkMast.setWrkSts(4L); } else { continue; } Date now = new Date(); wrkMast.setCrnEndTime(now); wrkMast.setModiTime(now); // 修改成功后复位堆垛机 if (wrkMastMapper.updateById(wrkMast) > 0) { // 堆垛机复位 News.info("" + mark + " - 2" + " - 修改成功后复位堆垛机 : 堆垛机号={}", crnThread.getCrnProtocol().getCrnNo()); if (statusType == CrnStatusType.WAITING_ONE) { crnThread.setResetFlag(true); } else if (statusTypeTwo == CrnStatusType.WAITING_TWO) { crnThread.setResetFlagTwo(true); } else { crnThread.setResetFlag(true); crnThread.setResetFlagTwo(true); } } else { News.error("" + mark + " - 2" + " - 修改成功后复位堆垛机 失败!!,堆垛机号={}", crnThread.getCrnProtocol().getCrnNo()); } News.error("" + mark + " - 2" + " - 修改成功后复位堆垛机 失败!!,堆垛机号={}", crnThread.getCrnProtocol().getCrnNo()); } } //} } News.infoNoLog("" + mark + " - 0" + " - 对工作档的完成操作执行完成"); } src/main/java/com/zy/core/MainProcess.java
@@ -42,6 +42,8 @@ if (!SystemProperties.WCS_RUNNING_STATUS.get()) { continue; } // 拣料、并板、盘点再入库 mainService.stnToCrnStnPick(3); // 演示 //mainService.crnDemoOfLocMove1(); @@ -51,8 +53,7 @@ mainService.generateStoreWrkFile(1); // 组托 //mainService.generateStoreWrkFile0(2); // WMS入库 Thread.sleep(500); // 拣料、并板、盘点再入库 mainService.stnToCrnStnPick(3); // 出库 ===>> 堆垛机出库站到出库站 mainService.crnStnToOutStn(4); // 入出库 ===>> 堆垛机入出库作业下发 src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -295,15 +295,16 @@ Integer siteId = staNos.get(i); // 站点编号 boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr2.Content, i * 4, 1); StaProtocol staProtocol = station.get(siteId); staProtocol.setBreakerErr(status[0]); staProtocol.setInfraredErr(status[1]); staProtocol.setOutTimeErr(status[2]); staProtocol.setSeizeSeatErr(status[3]); staProtocol.setWrkYgoodsN(status[4]); staProtocol.setInverterErr(status[5]); staProtocol.setContactErr(status[6]); staProtocol.setUpcontactErr(status[7]); if (staProtocol != null) { staProtocol.setBreakerErr(status[0]); staProtocol.setInfraredErr(status[1]); staProtocol.setOutTimeErr(status[2]); staProtocol.setSeizeSeatErr(status[3]); staProtocol.setWrkYgoodsN(status[4]); staProtocol.setInverterErr(status[5]); staProtocol.setContactErr(status[6]); staProtocol.setUpcontactErr(status[7]); } } } @@ -340,39 +341,64 @@ if (null == staProtocol) { return; } System.out.println(staProtocol); int index = staNosAll.indexOf(staProtocol.getSiteId()); OperateResult write = null; OperateResult write1 = null; //任务下发次数 int writeCount = 0; boolean wrkNoFlag = false; boolean staNoFlag = false; do { write = siemensS7Net.Write("DB100." + index * 6, (int) staProtocol.getWorkNo()); // 工作号 Thread.sleep(300); write1 = siemensS7Net.Write("DB100." + (index * 6 + 4), staProtocol.getStaNo()); // 目标站 Thread.sleep(100); if (write.IsSuccess && write1.IsSuccess) { Thread.sleep(200); OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index * 6, (short) 4); OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB100." + (index * 6 + 4), (short) 2); if (readResult.IsSuccess && readResult1.IsSuccess) { short workNo = (short) siemensS7Net.getByteTransform().TransInt32(readResult.Content, 0); short staNo = siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 0); if (staProtocol.getWorkNo().equals(workNo) && staProtocol.getStaNo().equals(staNo)) { //任务命令写入成功 log.info("写入堆垛机命令后返回成功,并且回读成功。堆垛机plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); break; } else {//返回结果是成功了,但是真实值不相同 if (!wrkNoFlag) { write = siemensS7Net.Write("DB100." + index * 6, (int) staProtocol.getWorkNo()); // 工作号 Thread.sleep(300); if (write.IsSuccess) { OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index * 6, (short) 4); if (readResult.IsSuccess) { short workNo = (short) siemensS7Net.getByteTransform().TransInt32(readResult.Content, 0); if (staProtocol.getWorkNo().equals(workNo)) { //任务命令写入成功 log.info("写入工作号命令后返回成功,并且回读成功。堆垛机plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); wrkNoFlag = true; } else {//返回结果是成功了,但是真实值不相同 writeCount++; log.error("写入工作号命令后返回成功,但是读取任务值不一致。堆垛机plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); } } else { writeCount++; log.error("写入堆垛机命令后返回成功,但是读取任务值不一致。堆垛机plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); log.error("写入工作号命令后读取失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); } } else { writeCount++; log.error("写入堆垛机命令后读取失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); log.error("写入工作号命令失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); } } else { writeCount++; log.error("写入堆垛机命令后读取失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); } if (!staNoFlag) { write1 = siemensS7Net.Write("DB100." + (index * 6 + 4), staProtocol.getStaNo()); // 目标站 Thread.sleep(300); if (write1.IsSuccess) { OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB100." + (index * 6 + 4), (short) 2); if (readResult1.IsSuccess) { short staNo = siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 0); if (staProtocol.getStaNo().equals(staNo)) { //任务命令写入成功 log.info("写入目标站命令后返回成功,并且回读成功。堆垛机plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); staNoFlag = true; } else {//返回结果是成功了,但是真实值不相同 writeCount++; log.error("写入目标站命令后返回成功,但是读取任务值不一致。堆垛机plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); } } else { writeCount++; log.error("写入目标站命令后读取失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); } } else { writeCount++; log.error("写入目标站命令失败。堆垛机plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); } } if (wrkNoFlag && staNoFlag) { break; } } while (writeCount < 5); @@ -387,6 +413,18 @@ OutputQueue.DEVP.offer(MessageFormat.format("【{0}】 输送线命令下发 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol))); News.info("SiemensDevp" + " - 5" + " - 输送线命令下发 [id:{}] >>>>> 命令下发: {}", slave.getId(), JSON.toJSON(staProtocol)); } if (!write1.IsSuccess) { staProtocol = station.get(staProtocol.getSiteId()); if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() == 0) { staProtocol.setPakMk(true); } OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点数据失败。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(staProtocol))); News.error("SiemensDevp" + " - 4" + " - 写入输送线站点数据失败。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(staProtocol)); } else { OutputQueue.DEVP.offer(MessageFormat.format("【{0}】 输送线命令下发 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol))); News.info("SiemensDevp" + " - 5" + " - 输送线命令下发 [id:{}] >>>>> 命令下发: {}", slave.getId(), JSON.toJSON(staProtocol)); } } // 更新入出库模式 src/main/resources/application.yml
@@ -26,7 +26,7 @@ # field-strategy: 0 logging: path: /stock/out/@pom.build.finalName@/logs path: stock/out/@pom.build.finalName@/logs super: pwd: xltys1995 @@ -35,7 +35,7 @@ enable: false wms: url: 127.0.0.1:8088/bjycwms url: 10.10.10.200:8088/bjycwms # 下位机配置 wcs-slave: