| | |
| | | //设置四向穿梭车为空闲状态 |
| | | shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); |
| | | } |
| | | //任务号清零 |
| | | shuttleProtocol.setTaskNo((short) 0); |
| | | //源库位清零 |
| | | shuttleProtocol.setSourceLocNo(null); |
| | | //目标库位清零 |
| | | shuttleProtocol.setLocNo(null); |
| | | //标记复位 |
| | | shuttleProtocol.setPakMk(true); |
| | | //任务指令清零 |
| | | shuttleProtocol.setAssignCommand(null); |
| | | if (wrkCharge.getWrkSts() != 57) { |
| | | //任务号清零 |
| | | shuttleProtocol.setTaskNo((short) 0); |
| | | //源库位清零 |
| | | shuttleProtocol.setSourceLocNo(null); |
| | | //目标库位清零 |
| | | shuttleProtocol.setLocNo(null); |
| | | //标记复位 |
| | | shuttleProtocol.setPakMk(true); |
| | | //任务指令清零 |
| | | shuttleProtocol.setAssignCommand(null); |
| | | } |
| | | News.info("四向穿梭车已确认且任务完成状态,复位。四向穿梭车号={}", shuttleProtocol.getShuttleNo()); |
| | | } else { |
| | | News.error("四向穿梭车已确认且任务完成状态,复位失败,但未找到工作档。四向穿梭车号={},工作号={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo()); |
| | |
| | | for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { |
| | | WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge); |
| | | if (wrkCharge == null) { |
| | | return; |
| | | continue; |
| | | } |
| | | |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkCharge.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | | return; |
| | | continue; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); |
| | | if (shuttleProtocol == null) { |
| | | return; |
| | | continue; |
| | | } |
| | | |
| | | //当前穿梭车库位号 |
| | | String currentLocNo = shuttleProtocol.getCurrentLocNo(); |
| | | if (currentLocNo == null) { |
| | | return; |
| | | } |
| | | //小车当前层高 |
| | | Integer currentLev = Utils.getLev(currentLocNo); |
| | | //获取提升机 |
| | | LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1); |
| | | if (liftThread == null) { |
| | | return; |
| | | continue; |
| | | } |
| | | LiftProtocol liftProtocol = liftThread.getLiftProtocol(); |
| | | if (liftProtocol == null) { |
| | | return; |
| | | continue; |
| | | } |
| | | //充电库位号 |
| | | String chargeLocNo = wrkCharge.getLocNo(); |
| | |
| | | Integer chargeLocNoLev = Utils.getLev(chargeLocNo); |
| | | |
| | | if (wrkCharge.getWrkSts() == 51) { |
| | | //当前穿梭车库位号 |
| | | String currentLocNo = shuttleProtocol.getCurrentLocNo(); |
| | | if (currentLocNo == null) { |
| | | continue; |
| | | } |
| | | //小车当前层高 |
| | | Integer currentLev = Utils.getLev(currentLocNo); |
| | | |
| | | if (currentLev == chargeLocNoLev) { |
| | | //同一层无需经过提升机 |
| | | //直接计算车到充电库位 |
| | |
| | | //获取小车到充电库位路径指令 |
| | | List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread); |
| | | if (commands == null) { |
| | | return;//未找到路径 |
| | | continue;//未找到路径 |
| | | } |
| | | //进行充电中 |
| | | shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING); |
| | |
| | | //小车移动到提升机口站点,计算路径 |
| | | List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftSiteLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread); |
| | | if (commands == null) { |
| | | return;//未找到路径 |
| | | continue;//未找到路径 |
| | | } |
| | | |
| | | //获取当前小车所在楼层的站点信息 |
| | | BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo); |
| | | if (basDevp == null) { |
| | | return;//找不到站点信息 |
| | | continue;//找不到站点信息 |
| | | } |
| | | Short basDevpQrCode = Short.parseShort(basDevp.getQrCodeValue());//站点二维码 |
| | | |
| | |
| | | |
| | | //判断提升机是否处于空闲状态 |
| | | if (!liftProtocol.isIdle()) { |
| | | return; |
| | | continue; |
| | | } |
| | | |
| | | //判断小车是否在提升机内 |
| | | if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) { |
| | | //小车不在提升机内 |
| | | return; |
| | | continue; |
| | | } |
| | | |
| | | //给提升机分配任务 |
| | |
| | | |
| | | Short liftLev = liftProtocol.getLev(); |
| | | if (liftLev == null) { |
| | | return; |
| | | continue; |
| | | } |
| | | //判断提升机楼层是否到达目标楼层 |
| | | if (liftLev.intValue() != chargeLocNoLev) { |
| | | return;//没有到达目标楼层 |
| | | continue;//没有到达目标楼层 |
| | | } |
| | | |
| | | //此时车在提升机内部,下达一步指令让车移动到提升机口 |
| | | Integer staNo = Utils.levToOutInStaNo(liftLev >= 2 ? liftLev + 1 : liftLev);//站点号 |
| | | BasDevp basDevp = basDevpService.selectById(staNo); |
| | | if (basDevp == null) { |
| | | return;//站点不存在 |
| | | continue;//站点不存在 |
| | | } |
| | | |
| | | //获取小车到充电库位路径指令 |
| | | List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread); |
| | | //获取提升机口到充电库位路径指令 |
| | | List<ShuttleCommand> commands = this.shuttleAssignCommand(basDevp.getLocNo(), chargeLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread); |
| | | if (commands == null) { |
| | | return;//未找到路径 |
| | | continue;//未找到路径 |
| | | } |
| | | |
| | | short startCode = liftProtocol.getBarcode();//提升机内部二维码 |