| | |
| | | new Thread(this::taskIssued).start(); |
| | | |
| | | // 启动漫游线程 |
| | | // new Thread(this::taskWalkIssued).start(); |
| | | new Thread(this::taskWalkIssued).start(); |
| | | // new Thread(this::taskWalkIssued2).start(); |
| | | |
| | | // 启动任务完成线程 |
| | |
| | | /** |
| | | * 漫游 |
| | | */ |
| | | // private void taskWalkIssued() { |
| | | // while (true) { |
| | | // try { |
| | | // // 休眠 1 秒 |
| | | // Thread.sleep(100); |
| | | // |
| | | // if (!deviceDetection()) { |
| | | // continue; |
| | | // } |
| | | // RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); |
| | | // if (rgvTaskProtocol == null) { |
| | | // initRgv(); |
| | | // rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); |
| | | // } |
| | | // if (rgvTaskProtocol.getAvoid() != 1) { |
| | | // continue; |
| | | // } |
| | | // TaskProtocol issued = new TaskProtocol(); |
| | | // issued.setTaskNo(32222L); |
| | | // issued.setTargetPosition(rgvTaskProtocol.getAvoidingTheDestination()); |
| | | // issued.setTaskStatus(1); |
| | | // issued.setDirection(true); |
| | | // write(issued); |
| | | // rgvTaskProtocol.setAvoid(0); |
| | | // |
| | | // Thread.sleep(200); |
| | | // RgvTaskCache.updateRgvStatus(rgvTaskProtocol); |
| | | // |
| | | // } catch (Exception e) { |
| | | // log.error("RGV行走任务下发线程异常!!!" + e.getMessage()); |
| | | //// e.printStackTrace(); |
| | | // } |
| | | // } |
| | | // } |
| | | private void taskWalkIssued() { |
| | | while (true) { |
| | | try { |
| | | // 休眠 1 秒 |
| | | Thread.sleep(100); |
| | | |
| | | if (!deviceDetection()) { |
| | | continue; |
| | | } |
| | | RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); |
| | | if (rgvTaskProtocol == null) { |
| | | initRgv(); |
| | | rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); |
| | | } |
| | | if (rgvTaskProtocol.getAvoid() != 1) { |
| | | continue; |
| | | } |
| | | TaskProtocol issued = new TaskProtocol(); |
| | | issued.setTaskNo(32222L); |
| | | issued.setTargetPosition(rgvTaskProtocol.getAvoidingTheDestination()); |
| | | issued.setTaskStatus(1); |
| | | issued.setDirection(true); |
| | | write(issued); |
| | | rgvTaskProtocol.setAvoid(0); |
| | | |
| | | Thread.sleep(200); |
| | | RgvTaskCache.updateRgvStatus(rgvTaskProtocol); |
| | | |
| | | } catch (Exception e) { |
| | | log.error("RGV行走任务下发线程异常!!!" + e.getMessage()); |
| | | // e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 任务下发 |
| | |
| | | continue; |
| | | } |
| | | if (rgvTaskProtocol.getAvoid() != 0) { |
| | | if (rgvTaskProtocol.getAvoid() == 1) { |
| | | TaskProtocol issued = new TaskProtocol(); |
| | | issued.setTaskNo(32222L); |
| | | issued.setTargetPosition(rgvTaskProtocol.getAvoidingTheDestination()); |
| | | issued.setTaskStatus(1); |
| | | issued.setDirection(true); |
| | | write(issued); |
| | | RgvErrCache.updateRgvErr(slave.getId()); |
| | | rgvTaskProtocol.setAvoid(0); |
| | | |
| | | // try{Thread.sleep(50L);} catch (Exception e){} |
| | | |
| | | RgvTaskCache.updateRgvStatus(rgvTaskProtocol); |
| | | } |
| | | rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; |
| | | rgvRun.setRgvNo(slave.getOtherId()); |
| | | RgvRunCache.updateRgvStatus(rgvRun); |
| | |
| | | |
| | | public boolean otherRgvAvoid(Long targetPosition) { |
| | | RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId()); |
| | | long onePos = Math.abs(targetPosition - rgvProtocol.getRgvPos()); |
| | | if (onePos<50){ |
| | | return true; |
| | | } |
| | | RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); |
| | | |
| | | RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); |
| | |
| | | return false; |
| | | } |
| | | } |
| | | TaskProtocol nowPosRunTask2 = taskProtocolCacheOther.getNowPosRunTask2(); |
| | | if (!Cools.isEmpty(nowPosRunTask2)){ |
| | | boolean signNowPosRun = true; |
| | | boolean signNowPosA = true; |
| | | if (targetPosition - rgvProtocol.getRgvPos()>0){ |
| | | if (nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos()>0){ |
| | | if (rgvProtocol.getRgvPos()>rgvProtocolOther.getRgvPos()){ |
| | | signNowPosA = false; |
| | | signNowPosRun = false; |
| | | } |
| | | } |
| | | } else if (targetPosition - rgvProtocol.getRgvPos()<0){ |
| | | if (nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos()<0){ |
| | | if (rgvProtocol.getRgvPos()<rgvProtocolOther.getRgvPos()){ |
| | | signNowPosA = false; |
| | | signNowPosRun = false; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (signNowPosA){ |
| | | if (nowPosRunTask2.getTaskStatus()==3){ |
| | | long twoPos = Math.abs(nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos()); |
| | | if (Math.abs(onePos - twoPos)>100){ |
| | | if (onePos-50>twoPos+50){ |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, nowPosRunTask2.getTargetPositionStaNoPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(nowPosRunTask2.getTargetPositionStaNo()); |
| | | if (staProtocol == null ) { |
| | | signNowPosRun =false; |
| | | } |
| | | if (signNowPosRun){ |
| | | // 判断是否满足入库条件 |
| | | if (staProtocol.isAutoing() && !staProtocol.isLoading() |
| | | ){ |
| | | errorRgv = slave.getOtherId()+"号RGV等待作业..."; |
| | | return false; |
| | | } |
| | | } |
| | | signNowPosRun =false; |
| | | } |
| | | } |
| | | } else { |
| | | long twoPos = Math.abs(nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos()); |
| | | if (twoPos<100){ |
| | | errorRgv = slave.getOtherId()+"号RGV等待作业..."; |
| | | return false; |
| | | } |
| | | if (Math.abs(onePos - twoPos)>100){ |
| | | if (onePos-50>twoPos+50){ |
| | | signNowPosRun =false; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (signNowPosRun){ |
| | | errorRgv = slave.getOtherId()+"号RGV等待作业..."; |
| | | return false; |
| | | } |
| | | } |
| | | long avoid = targetPosition + rgvProtocol.getCarBodyKunPeng() + avoidDistance + rgvProtocolOther.getCarBodyJiaoMing(); |
| | | if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) { |
| | | log.error("RGV行走超出范围!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); |