From 7c05f9af4b03b74e6b21ead35d24820e90aa2fea Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期三, 28 五月 2025 14:08:04 +0800 Subject: [PATCH] #ZH --- src/main/java/com/zy/core/thread/RgvThread.java | 148 +++++++++++++++++++++++++++++++++---------------- 1 files changed, 99 insertions(+), 49 deletions(-) diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java index c823915..cd37355 100644 --- a/src/main/java/com/zy/core/thread/RgvThread.java +++ b/src/main/java/com/zy/core/thread/RgvThread.java @@ -94,7 +94,7 @@ new Thread(this::taskIssued).start(); // 鍚姩婕父绾跨▼ -// new Thread(this::taskWalkIssued).start(); + new Thread(this::taskWalkIssued).start(); // new Thread(this::taskWalkIssued2).start(); // 鍚姩浠诲姟瀹屾垚绾跨▼ @@ -250,40 +250,40 @@ /** * 婕父 */ -// 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(); + } + } + } /** * 浠诲姟涓嬪彂 @@ -336,20 +336,6 @@ 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); @@ -537,6 +523,10 @@ 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()); @@ -599,6 +589,66 @@ 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()+"鍙稲GV绛夊緟浣滀笟..."; + return false; + } + } + signNowPosRun =false; + } + } + } else { + long twoPos = Math.abs(nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos()); + if (twoPos<100){ + errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟..."; + return false; + } + if (Math.abs(onePos - twoPos)>100){ + if (onePos-50>twoPos+50){ + signNowPosRun =false; + } + } + } + } + + if (signNowPosRun){ + errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟..."; + 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()); -- Gitblit v1.9.1