| | |
| | | continue;//提升机不在目标楼层跳过 |
| | | } |
| | | |
| | | Integer staNo = Utils.levToOutInStaNo(lev); |
| | | Integer staNo = Utils.levToOutInStaNo(lev >= 2 ? lev + 1 : lev); |
| | | //获取目标站信息 |
| | | StaProtocol staProtocol1 = devpThread.getStation().get(staNo); |
| | | if (staProtocol1 == null) { |
| | |
| | | //同一层直接取货无需经过提升机 |
| | | //直接计算车到提升机取货再到库位路径指令 |
| | | List<ShuttleCommand> commands = this.shuttleAssignCommand(wrkMast.getWrkSts() == 4 ? currentLocNo : liftSiteLocNo, liftSiteLocNo, locNo, assignCommand, shuttleThread); |
| | | if (commands == null) { |
| | | continue;//找不到路径等待下一次 |
| | | } |
| | | if (wrkMast.getWrkSts() == 8) { |
| | | //此时车在提升机内部,下达一步指令让车移动到提升机口 |
| | | Integer staNo = Utils.levToOutInStaNo(currentLev);//站点号 |
| | | Integer staNo = Utils.levToOutInStaNo(currentLev >= 2 ? currentLev + 1 : currentLev);//站点号 |
| | | BasDevp basDevp = basDevpService.selectById(staNo); |
| | | |
| | | short startCode = liftProtocol.getBarcode();//提升机内部二维码 |
| | |
| | | command4.setOperaStaNo(distStaNo.shortValue());//操作目标楼层站点 |
| | | command4.setRotationDire(1);//给输送线下发链条转动信号,正转 |
| | | command4.setDevpId(devpId); |
| | | command4.setStaNo(distStaNo.shortValue());//设置目标站 |
| | | commands.add(command4);//将命令添加进list |
| | | |
| | | wrkMast.setWrkSts(3L);//3.提升机搬运中 |
| | | } else if (wrkMast.getWrkSts() == 6) {//6.迁移小车至提升机口完成 => 7.提升机迁移小车中 |
| | | liftProtocol.setShuttleNo(wrkMast.getShuttleNo().shortValue());//设置四向穿梭车号 |
| | | |
| | | //判断小车是否在提升机内,且处于空闲状态 |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | | continue; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); |
| | | if (shuttleProtocol == null) { |
| | | continue; |
| | | } |
| | | if (!shuttleProtocol.isIdle()) { |
| | | continue;//小车状态忙 |
| | | } |
| | | if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) { |
| | | continue;//小车当前二维码和提升机内部二维码不一致,不允许执行 |
| | | } |
| | | |
| | | //工作档目标库位号 |
| | | String wrkMastLocNo = wrkMast.getIoType() == 101 ? wrkMast.getSourceLocNo() : wrkMast.getLocNo(); |
| | | //工作档目标库位楼层 |
| | | int wrkMastLocNoLey = Utils.getLev(wrkMastLocNo); |
| | | if (wrkMastLocNoLey >= 2) { |
| | | wrkMastLocNoLey++; |
| | | } |
| | | |
| | | //提升机前往目标楼层(工作档目标楼层) |
| | | LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), wrkMastLocNoLey); |
| | |
| | | } else if(wrkMast.getWrkSts() == 23) {//23.迁移小车至提升机口完成 => 24.提升机迁移小车中 |
| | | liftProtocol.setShuttleNo(wrkMast.getShuttleNo().shortValue());//设置四向穿梭车号 |
| | | |
| | | //找到四向穿梭车的线程 |
| | | //判断小车是否在提升机内,且处于空闲状态 |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | | continue; |
| | |
| | | continue; |
| | | } |
| | | |
| | | //当前穿梭车库位号 |
| | | String currentLocNo = shuttleProtocol.getCurrentLocNo(); |
| | | //当前穿梭车楼层 |
| | | int currentLocNoLey = Utils.getLev(currentLocNo); |
| | | if (!shuttleProtocol.isIdle()) { |
| | | continue;//小车状态忙 |
| | | } |
| | | if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) { |
| | | continue;//小车当前二维码和提升机内部二维码不一致,不允许执行 |
| | | } |
| | | |
| | | //工作档目标库位号 |
| | | String wrkMastLocNo = wrkMast.getIoType() == 101 ? wrkMast.getSourceLocNo() : wrkMast.getLocNo(); |
| | | //工作档目标库位楼层 |
| | | int wrkMastLocNoLey = Utils.getLev(wrkMastLocNo); |
| | | |
| | | //提升机当前楼层 |
| | | int liftLev = liftProtocol.getLev().intValue(); |
| | | if (liftLev == 0) {//提升机当前楼层为0,提升机失去位置信息,让提升机前往一楼 |
| | | LiftCommand command = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), LiftLevType.ONE.lev); |
| | | commands.add(command);//将命令添加进list |
| | | if (wrkMastLocNoLey >= 2) { |
| | | wrkMastLocNoLey++; |
| | | } |
| | | |
| | | if (liftLev != currentLocNoLey) { |
| | | //不同楼层 |
| | | //获取目标楼层(穿梭车所在楼层)命令 |
| | | LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), currentLocNoLey); |
| | | commands.add(command1);//将命令添加进list |
| | | } |
| | | |
| | | //输送线将四向穿梭车移动进来(反转) |
| | | LiftCommand command2 = liftThread.getLiftTurnCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), 4); |
| | | commands.add(command2);//将命令添加进list |
| | | |
| | | if (liftLev != currentLocNoLey) { |
| | | //提升机前往目标楼层(工作档目标楼层) |
| | | LiftCommand command3 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), wrkMastLocNoLey); |
| | | commands.add(command3);//将命令添加进list |
| | | } |
| | | |
| | | //提升机到达指定楼层,输送线将四向穿梭车移出去 |
| | | //输送线将四向穿梭车移动出去(正转) |
| | | LiftCommand command4 = liftThread.getLiftTurnCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), 1); |
| | | commands.add(command4);//将命令添加进list |
| | | //提升机前往目标楼层(工作档目标楼层) |
| | | LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), wrkMastLocNoLey); |
| | | commands.add(command1);//将命令添加进list |
| | | |
| | | wrkMast.setWrkSts(24L);//23.迁移小车至提升机口完成 => 24.提升机迁移小车中 |
| | | } else if (wrkMast.getWrkSts() == 27) {//27.小车出库搬运完成 |