src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SteThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -817,6 +817,11 @@ steCommand.setSteNo(steNo); // 穿梭车编号 steCommand.setTaskNo(wrkMast.getWrkNo()); // 工作号 steCommand.setTaskMode(SteTaskModeType.TO_B); // 任务模式: 去近点 等待堆垛机叉取 steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue()); steCommand.setBay(steProtocol.getBay()); steCommand.setLev(steProtocol.getLev()); if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) { log.error("穿梭车命令下发失败,穿梭车号={},任务数据={}", steNo, JSON.toJSON(steCommand)); } else { @@ -860,6 +865,8 @@ if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { // 修改穿梭车运行中排列层 steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo()), locMast.getBay1(), locMast.getLev1()); // 修改工作档状态 3.小车待搬 => 4.迁入小车 Date now = new Date(); wrkMast.setWrkSts(4L); @@ -887,6 +894,8 @@ if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { // 修改穿梭车运行中排列层 steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo()), locMast.getBay1(), locMast.getLev1()); // 修改工作档状态 12.小车待搬 => 13.迁入小车 Date now = new Date(); wrkMast.setWrkSts(13L); @@ -937,7 +946,8 @@ if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { // 修改穿梭车运行中排列层 steThread.modifyPos(Utils.getGroupRow(idleLocNo), Utils.getBay(idleLocNo), Utils.getLev(idleLocNo)); // 修改工作档状态 3.小车待搬 => 5.迁出小车 Date now = new Date(); wrkMast.setWrkSts(5L); @@ -1028,6 +1038,11 @@ if (wrkMastMapper.updateById(wrkMast) > 0) { // 堆垛机复位 crnThread.setResetFlag(true); // 穿梭车重新定位排列层 SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, wrkMast.getSteNo()); if (!steThread.confirmPos()) { log.error("{}号穿梭车重新定位失败!作业工作档任务号:{}", wrkMast.getSteNo(), wrkMast.getWrkNo()); } } else { log.error("修改工作档状态 4.迁入小车 => 6.小车待入 失败!!,工作号={}", wrkMast.getWrkNo()); } @@ -1042,6 +1057,11 @@ if (wrkMastMapper.updateById(wrkMast) > 0) { // 堆垛机复位 crnThread.setResetFlag(true); // 穿梭车重新定位排列层 SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, wrkMast.getSteNo()); if (!steThread.confirmPos()) { log.error("{}号穿梭车重新定位失败!作业工作档任务号:{}", wrkMast.getSteNo(), wrkMast.getWrkNo()); } } else { log.error("修改工作档状态 5.迁出小车 => 6.小车待入 失败!!,工作号={}", wrkMast.getWrkNo()); } @@ -1053,6 +1073,10 @@ SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { continue; } if (steProtocol.getStatusType().equals(SteStatusType.IDLE)) { // 穿梭车重新定位排列层 if (!steThread.confirmPos()) { log.error("{}号穿梭车重新定位失败!作业工作档任务号:{}", wrkMast.getSteNo(), wrkMast.getWrkNo()); } // 命令下发区 -------------------------------------------------------------------------- SteCommand steCommand = new SteCommand(); steCommand.setSteNo(steNo); // 穿梭车编号 src/main/java/com/zy/core/thread/SteThread.java
@@ -219,15 +219,15 @@ return false; } command.setSteNo(slave.getId()); OperateResult result; OperateResult result = null; // 开始任务 if (!command.getWaiting()) { OperateResult result0 = siemensS7Net.Write("D0", command.getTaskNo()); short[] array = new short[10]; array[0] = command.getTaskMode(); // array[1] = command.getTaskNo(); // array[2] = command.getTaskMode(); // array[3] = command.getSourcePosX(); // array[1] = command.getTaskNo(); // array[2] = command.getTaskMode(); // array[3] = command.getSourcePosX(); // array[4] = command.getSourcePosY(); // array[5] = command.getSourcePosZ(); // array[6] = command.getDestinationPosX(); @@ -236,7 +236,9 @@ // array[9] = command.getCommand(); OperateResult result1 = siemensS7Net.Write("D0", array); // 确认开始任务 result = siemensS7Net.Write("D0", true); if (result0.IsSuccess) { result = siemensS7Net.Write("D0", true); } // 任务完成 } else { result = siemensS7Net.Write("D0", true); @@ -265,9 +267,14 @@ // bean.insert(basSteOpt); } catch (Exception ignore) {} if (result.IsSuccess) { if (result != null && result.IsSuccess) { // 维护数据库排列层 // this.modifyPos(); if (!steProtocol.getWaiting()) { this.lastRow = command.getRow().intValue(); this.lastBay = command.getBay().intValue(); this.lastLev = command.getLev().intValue(); } log.info("穿梭车命令下发[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); @@ -292,10 +299,19 @@ BasSteService service = SpringUtils.getBean(BasSteService.class); BasSte basSte = service.selectById(slave.getId()); if (basSte != null) { if (service.updatePos(this.lastRow, this.lastBay, this.lastLev) > 0) { return true; } else { log.error("{}号穿梭车修改数据库定位失败!!!", slave.getId()); // 更新plc数据块 short[] arr = new short[] {this.lastRow.shortValue(), this.lastBay.shortValue(), this.lastLev.shortValue()}; OperateResult result = siemensS7Net.Write("D0", arr); if (result.IsSuccess) { // 更新数据库 if (service.updatePos(this.lastRow, this.lastBay, this.lastLev) > 0) { this.lastRow = null; this.lastBay = null; this.lastLev = null; return true; } else { log.error("{}号穿梭车修改数据库定位失败!!!", slave.getId()); } } }