| | |
| | | steCommand.setTaskNo(wrkCharge.getWrkNo()); // 工作号 |
| | | steCommand.setTaskMode(SteTaskModeType.findOriginByLoc(steProtocol.getRow().intValue())); // 任务模式: 去近点 等待堆垛机叉取 |
| | | |
| | | steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue()); |
| | | steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue()); |
| | | steCommand.setBay(steProtocol.getBay()); |
| | | steCommand.setLev(steProtocol.getLev()); |
| | | |
| | |
| | | steThread.setResetFlag(true); |
| | | } |
| | | } else if (wrkCharge.getWrkSts() == 25) { |
| | | // 25.小车去充电 ===>> 26.等待充电 |
| | | // 25.小车走行 ===>> 26.等待充电 |
| | | wrkCharge.setWrkSts(26L); |
| | | if (!wrkChargeService.updateById(wrkCharge)) { |
| | | log.error("修改充电任务状态 25.小车去充电 ===>> 26.等待充电 失败!!,工作号={}", wrkCharge.getWrkNo()); |
| | | log.error("修改充电任务状态 25.小车走行 ===>> 26.等待充电 失败!!,工作号={}", wrkCharge.getWrkNo()); |
| | | } else { |
| | | steThread.setResetFlag(true); |
| | | } |
| | |
| | | wrkCharge.setSteNo(ste.getId()); |
| | | wrkCharge.setWrkNo(commonService.getChargeWorkNo(4)); |
| | | wrkCharge.setWrkSts(21L); // 21.准备充电 |
| | | // wrkCharge.setCrnNo(basSte.getCrnNo()); |
| | | wrkCharge.setCrnNo(2); // 固定2号堆垛机 |
| | | wrkCharge.setIoPri((double) 10); |
| | | wrkCharge.setLocNo(chargeLocNo); |
| | | wrkCharge.setMemo("charge"); |
| | |
| | | |
| | | // 22.小车待搬 |
| | | if (wrkCharge.getWrkSts() == 22) { |
| | | // 搬小车至充电库位 |
| | | LocMast locMast = locMastService.selectById(basSte.getIdleLoc()); |
| | | |
| | | // 堆垛机命令下发区 -------------------------------------------------------------------------- |
| | | CrnCommand crnCommand = new CrnCommand(); |
| | | crnCommand.setCrnNo(wrkCharge.getCrnNo()); // 堆垛机编号 |
| | | crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 工作号 |
| | | crnCommand.setAckFinish((short) 0); // 任务完成确认位 |
| | | crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 任务模式: 库位移转 |
| | | crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue()); // 源库位排 |
| | | crnCommand.setSourcePosY(steProtocol.getBay()); // 源库位列 |
| | | crnCommand.setSourcePosZ(steProtocol.getLev()); // 源库位层 |
| | | crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo()).shortValue()); // 目标库位排 |
| | | crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 目标库位列 |
| | | crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 目标库位层 |
| | | if (!MessageQueue.offer(SlaveType.Crn, wrkCharge.getCrnNo(), new Task(2, crnCommand))) { |
| | | log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkCharge.getCrnNo(), JSON.toJSON(crnCommand)); |
| | | } else { |
| | | // 修改穿梭车运行中排列层 |
| | | steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo()), locMast.getBay1(), locMast.getLev1()); |
| | | // 修改工作档状态 22.小车待搬 => 23.吊车搬运 |
| | | Date now = new Date(); |
| | | wrkCharge.setWrkSts(23L); |
| | | wrkCharge.setCrnStrTime(now); |
| | | wrkCharge.setModiTime(now); |
| | | if (!wrkChargeService.updateById(wrkCharge)) { |
| | | log.error("修改工作档状态 22.小车待搬 => 23.吊车搬运 失败!!,工作号={}", wrkCharge.getWrkNo()); |
| | | // 搬小车至小车走向通道 |
| | | List<String> channel = slaveProperties.getChannel(); |
| | | for (String channelLocNo : channel) { |
| | | Integer otherSte = existOtherSte(channelLocNo, wrkCharge.getSteNo()); |
| | | if (null != otherSte) { |
| | | log.warn("{}号小车移入{}库位组失败,原因:存在{}号穿梭车!", wrkCharge.getSteNo(), channelLocNo, otherSte); |
| | | } else { |
| | | LocMast channelLoc = locMastService.selectById(channelLocNo); |
| | | |
| | | // 堆垛机命令下发区 -------------------------------------------------------------------------- |
| | | CrnCommand crnCommand = new CrnCommand(); |
| | | crnCommand.setCrnNo(wrkCharge.getCrnNo()); // 堆垛机编号 |
| | | crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 工作号 |
| | | crnCommand.setAckFinish((short) 0); // 任务完成确认位 |
| | | crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 任务模式: 库位移转 |
| | | crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue()); // 源库位排 |
| | | crnCommand.setSourcePosY(steProtocol.getBay()); // 源库位列 |
| | | crnCommand.setSourcePosZ(steProtocol.getLev()); // 源库位层 |
| | | crnCommand.setDestinationPosX(Utils.getGroupRow(channelLoc.getLocNo(), true).shortValue()); // 目标库位排 |
| | | crnCommand.setDestinationPosY(channelLoc.getBay1().shortValue()); // 目标库位列 |
| | | crnCommand.setDestinationPosZ(channelLoc.getLev1().shortValue()); // 目标库位层 |
| | | if (!MessageQueue.offer(SlaveType.Crn, wrkCharge.getCrnNo(), new Task(2, crnCommand))) { |
| | | log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkCharge.getCrnNo(), JSON.toJSON(crnCommand)); |
| | | } else { |
| | | // 修改穿梭车运行中排列层 |
| | | steThread.modifyPos(Utils.getGroupRow(channelLoc.getLocNo(), true), channelLoc.getBay1(), channelLoc.getLev1()); |
| | | // 修改工作档状态 22.小车待搬 => 23.吊车搬运 |
| | | Date now = new Date(); |
| | | wrkCharge.setWrkSts(23L); |
| | | wrkCharge.setCrnStrTime(now); |
| | | wrkCharge.setModiTime(now); |
| | | if (!wrkChargeService.updateById(wrkCharge)) { |
| | | log.error("修改工作档状态 22.小车待搬 => 23.吊车搬运 失败!!,工作号={}", wrkCharge.getWrkNo()); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | |
| | |
| | | SteCommand steCommand = new SteCommand(); |
| | | steCommand.setSteNo(wrkCharge.getSteNo()); // 穿梭车编号 |
| | | steCommand.setTaskNo(wrkCharge.getWrkNo()); // 工作号 |
| | | steCommand.setTaskMode(SteTaskModeType.findChargeByLoc(steProtocol.getRow().intValue())); |
| | | steCommand.setTaskMode(SteTaskModeType.GO_ORIGIN); // 去右端 |
| | | if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) { |
| | | log.error("穿梭车命令下发失败,穿梭车号={},任务数据={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand)); |
| | | } else { |
| | | // 修改工作档状态 24.小车到达 ===> 25.小车去充电 |
| | | // 修改工作档状态 24.小车到达 ===> 25.小车走行 |
| | | wrkCharge.setWrkSts(25L); |
| | | Date now = new Date(); |
| | | wrkCharge.setCrnEndTime(now); |
| | | wrkCharge.setModiTime(now); |
| | | if (!wrkChargeService.updateById(wrkCharge)) { |
| | | log.error("修改充电任务状态 24.小车到达 ===> 25.小车去充电 失败!!,工作号={}", wrkCharge.getWrkNo()); |
| | | log.error("修改充电任务状态 24.小车到达 ===> 25.小车走行 失败!!,工作号={}", wrkCharge.getWrkNo()); |
| | | } |
| | | } |
| | | } |
| | | } else if (wrkCharge.getWrkSts() == 26) { |
| | | if (steProtocol.getChargeStatus() == 0) { continue; } |
| | | // 给输送线下发充电任务 |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); |
| | | SteChargeType steChargeType = SteChargeType.get(wrkCharge.getLocNo()); |
| | | if (null != steChargeType) { |
| | | if (devpThread.charge(steChargeType.ssbm - 1, true)) { |
| | | // 修改工作档状态 26.等待充电 ===> 28.完成充电 |
| | | wrkCharge.setWrkSts(28L); |
| | | if (!wrkChargeService.updateById(wrkCharge)) { |
| | | log.error("修改充电任务状态 26.等待充电 ===> 28.完成充电 失败!!,工作号={}", wrkCharge.getWrkNo()); |
| | | } else { |
| | | steThread.setResetFlag(true); |
| | | } |
| | | } |
| | | // 27.放至充电位 |
| | | LocMast chargeLoc = locMastService.selectById(wrkCharge.getLocNo()); |
| | | |
| | | // 堆垛机命令下发区 -------------------------------------------------------------------------- |
| | | CrnCommand crnCommand = new CrnCommand(); |
| | | crnCommand.setCrnNo(wrkCharge.getCrnNo()); // 堆垛机编号 |
| | | crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 工作号 |
| | | crnCommand.setAckFinish((short) 0); // 任务完成确认位 |
| | | crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 任务模式: 库位移转 |
| | | crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue()); // 源库位排 |
| | | crnCommand.setSourcePosY(steProtocol.getBay()); // 源库位列 |
| | | crnCommand.setSourcePosZ(steProtocol.getLev()); // 源库位层 |
| | | crnCommand.setDestinationPosX(Utils.getGroupRow(channelLoc.getLocNo(), true).shortValue()); // 目标库位排 |
| | | crnCommand.setDestinationPosY(channelLoc.getBay1().shortValue()); // 目标库位列 |
| | | crnCommand.setDestinationPosZ(channelLoc.getLev1().shortValue()); // 目标库位层 |
| | | if (!MessageQueue.offer(SlaveType.Crn, wrkCharge.getCrnNo(), new Task(2, crnCommand))) { |
| | | log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkCharge.getCrnNo(), JSON.toJSON(crnCommand)); |
| | | } else { |
| | | log.error("获取充电桩号失败,解析库位:{}", wrkCharge.getLocNo()); |
| | | // 修改穿梭车运行中排列层 |
| | | steThread.modifyPos(Utils.getGroupRow(channelLoc.getLocNo(), true), channelLoc.getBay1(), channelLoc.getLev1()); |
| | | // 修改工作档状态 22.小车待搬 => 23.吊车搬运 |
| | | Date now = new Date(); |
| | | wrkCharge.setWrkSts(23L); |
| | | wrkCharge.setCrnStrTime(now); |
| | | wrkCharge.setModiTime(now); |
| | | if (!wrkChargeService.updateById(wrkCharge)) { |
| | | log.error("修改工作档状态 22.小车待搬 => 23.吊车搬运 失败!!,工作号={}", wrkCharge.getWrkNo()); |
| | | } |
| | | } |
| | | } |
| | | } |