| | |
| | | } |
| | | |
| | | /** |
| | | * AGV补货 => 机械臂拣料 |
| | | */ |
| | | public void agvRestockByRobot() { |
| | | //检测300站是否自动、有物、工作号 |
| | | for (DevpSlave devp : slaveProperties.getDevp()) { |
| | | // 获取入库站信息 |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(300); |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() != 0) { |
| | | //查询是否有工作档 |
| | | WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol.getWorkNo().intValue()); |
| | | if (wrkMast == null) { |
| | | continue; |
| | | } |
| | | |
| | | if (wrkMast.getWrkSts() != 25) {//25.提升机搬运完成 |
| | | continue; |
| | | } |
| | | |
| | | if (wrkMast.getMk().equals("Y")) {//标记为Y表示需要用到机械臂拣料 |
| | | Short targetSta = null;//目标站 |
| | | //判断机械臂拣料站是否空闲 |
| | | StaProtocol staProtocol303 = devpThread.getStation().get(303); |
| | | StaProtocol staProtocol317 = devpThread.getStation().get(317); |
| | | if (staProtocol303.isAutoing() && !staProtocol303.isLoading()) { |
| | | //自动、无物 |
| | | targetSta = (short) 303; |
| | | } else if (staProtocol317.isAutoing() && !staProtocol317.isLoading()) { |
| | | //自动、无物 |
| | | targetSta = (short) 317; |
| | | }else { |
| | | continue;//没有空闲站点 |
| | | } |
| | | |
| | | targetSta = (short) 317; |
| | | |
| | | //覆盖工作档目标站 |
| | | wrkMast.setStaNo(targetSta.intValue()); |
| | | if (wrkMastMapper.updateById(wrkMast) > 0) { |
| | | //向300站写入目标站 |
| | | staProtocol = staProtocol.clone(); |
| | | staProtocol.setStaNo(targetSta);//移动到目标站 |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | try { |
| | | Thread.sleep(500); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | |
| | | StaProtocol staProtocol303 = devpThread.getStation().get(303); |
| | | StaProtocol staProtocol317 = devpThread.getStation().get(317); |
| | | if (staProtocol303.isAutoing() && staProtocol303.isLoading() && staProtocol303.getWorkNo() != 0) { |
| | | //调度机械臂 |
| | | //查询是否有工作档 |
| | | WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol303.getWorkNo().intValue()); |
| | | if (wrkMast == null) { |
| | | continue; |
| | | } |
| | | WrkDetl wrkDetl = wrkDetlService.selectById(wrkMast.getWrkNo()); |
| | | if (wrkDetl == null) { |
| | | continue; |
| | | } |
| | | RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetl.getAnfme().intValue(), "303"); |
| | | }else if (staProtocol317.isAutoing() && staProtocol317.isLoading() && staProtocol317.getWorkNo() != 0) { |
| | | //调度机械臂 |
| | | //查询是否有工作档 |
| | | WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol317.getWorkNo().intValue()); |
| | | if (wrkMast == null) { |
| | | continue; |
| | | } |
| | | WrkDetl wrkDetl = wrkDetlService.selectById(wrkMast.getWrkNo()); |
| | | if (wrkDetl == null) { |
| | | continue; |
| | | } |
| | | RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetl.getAnfme().intValue(), "317"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 出库 ===>> 工作档信息写入led显示器 |
| | | */ |
| | | public void ledExecute() { |
| | |
| | | } |
| | | } else if (wrkCharge.getWrkSts() == 52) { |
| | | //检测小车是否满电 |
| | | int maxPower = 85; |
| | | int maxPower = 95; |
| | | if (shuttleProtocol.getPowerPercent() < maxPower) { |
| | | continue; |
| | | } |
| | |
| | | assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//源库位(小车当前位置) |
| | | assignCommand.setCommands(commands);//运行命令 |
| | | |
| | | //下发任务 |
| | | MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); |
| | | try { |
| | | Thread.sleep(3000); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | wrkCharge.setWrkSts(53L);//52.小车去充电中 => 53.小车充电完成 |
| | | wrkCharge.setModiTime(new Date()); |
| | | if (wrkChargeMapper.updateById(wrkCharge) > 0) { |
| | | //下发任务 |
| | | MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); |
| | | shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE.id); |
| | | shuttleProtocol.setTaskNo(0); |
| | | shuttleProtocol.setPakMk(false); |
| | | } |
| | | } else if (wrkCharge.getWrkSts() == 53) { |
| | | if (shuttleProtocol.getChargState() == 0) {//小车处于未充电状态 |
| | | boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkCharge.getLocNo()), shuttleThread.getSlave().getId(), shuttleThread); |
| | | if (result) { |
| | | if (!result) { |
| | | continue; |
| | | } |
| | | |
| | | wrkCharge.setWrkSts(60L);//53.小车充电完成 => 60.充电任务完成 |
| | | wrkCharge.setModiTime(new Date()); |
| | | if (wrkChargeMapper.updateById(wrkCharge) > 0) { |
| | | shuttleProtocol.setProtocolStatusType(ShuttleProtocolStatusType.IDLE); |
| | | shuttleProtocol.setTaskNo(0); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |