From 3ceabb21c1fd2b7fbdbc5c77c23f26152ec7f9aa Mon Sep 17 00:00:00 2001 From: 1 <1@123> Date: 星期五, 09 五月 2025 18:57:25 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/RgvThread.java | 75 ++++++++++++++++++++++++++++++++++--- 1 files changed, 69 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java index d354a5b..38b1d23 100644 --- a/src/main/java/com/zy/core/thread/RgvThread.java +++ b/src/main/java/com/zy/core/thread/RgvThread.java @@ -81,6 +81,7 @@ // 鍚姩婕父绾跨▼ new Thread(this::taskWalkIssued).start(); + new Thread(this::taskWalkIssued2).start(); // 鍚姩浠诲姟瀹屾垚绾跨▼ new Thread(this::taskComplete).start(); @@ -114,7 +115,7 @@ OperateResultExOne<byte[]> result = siemensNet.Read("DB100.12", (short) 1); boolean[] status = siemensNet.getByteTransform().TransBool(result.Content, 0, 1); if (status[0]){ - OperateResult result4 = siemensNet.Write("DB100.12.0", true); + OperateResult result4 = siemensNet.Write("DB100.12.0", false); } } catch (Exception e) { log.error("RGV鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛�" + e.getMessage()); @@ -124,6 +125,64 @@ } + } + + /** + * 浠诲姟涓嬪彂 + */ + private void taskWalkIssued2() { + while (true) { + try { + // 浼戠湢 1 绉� + Thread.sleep(100); + if (!deviceDetection()) { + continue; + } + RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId()); + RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); + if (rgvProtocol == null || rgvTaskProtocol == null) { + initRgv(); + rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId()); + rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); + } + if (rgvTaskProtocol.getAvoid() != 0) { + continue; + } + if (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE)){ + continue; + } + if (rgvProtocol.getLoaded() == -1){ + continue; + } + + List<TaskProtocol> allTakeTaskProtocol = taskProtocolCache.getAllWalkTaskProtocol(); + for (TaskProtocol taskProtocol : allTakeTaskProtocol) { + if (taskProtocol.getIsRunning() == 1) {//鍑嗗涓嬪彂 + // 鍙岃溅 + if (rgvOtherStatusEnable()) { + //鍙︿竴鍙拌溅鏄惁鍏佽姝ゅ彴杞︽墽琛� + if (!otherRgvAvoid(taskProtocol.getTargetPosition())) { + continue; + } + } + if (taskProtocol.getTargetPosition()<=rgvProtocol.getRgvPos()+50 + && taskProtocol.getTargetPosition()>=rgvProtocol.getRgvPos()-50){ + taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); + break; + } else { + Thread.sleep(100); + TaskProtocol issued = new TaskProtocol(taskProtocol,true); + write(issued); + taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); + break; + } + } + } + } catch (Exception e) { + log.error("RGV鍙栬揣浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�" + e.getMessage()); +// e.printStackTrace(); + } + } } /** @@ -149,6 +208,8 @@ TaskProtocol issued = new TaskProtocol(); issued.setTaskNo(32222L); issued.setTargetPosition(rgvTaskProtocol.getAvoidingTheDestination()); + issued.setTaskStatus(1); + issued.setDirection(true); write(issued); rgvTaskProtocol.setAvoid(0); @@ -186,11 +247,14 @@ if (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE)){ continue; } + if (rgvProtocol.getLoaded() == -1){ + continue; + } List<TaskProtocol> allTakeTaskProtocol = taskProtocolCache.getTakeOrPutTaskProtocol(rgvProtocol.getLoaded()); for (TaskProtocol taskProtocol : allTakeTaskProtocol) { if (taskProtocol.getIsRunning() == 1) {//鍑嗗涓嬪彂 - RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); +// RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); //鍙岃溅 if (rgvOtherStatusEnable()) { //鍙︿竴鍙拌溅鏄惁鍏佽姝ゅ彴杞︽墽琛� @@ -203,15 +267,12 @@ Thread.sleep(100); TaskProtocol issued = new TaskProtocol(taskProtocol); write(issued); - taskProtocol.setIsRunning(4); - taskProtocolCache.updateTaskProtocol(taskProtocol); + taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); break; } else { Thread.sleep(100); TaskProtocol issued = new TaskProtocol(taskProtocol,true); write(issued); -// taskProtocol.setIsRunning(4); -// taskProtocolCache.updateTaskProtocol(taskProtocol); break; } } @@ -541,6 +602,8 @@ // convertRow(command); // taskProtocol.setRgvNo(slave.getId()); Long[] array = new Long[11]; + OperateResult result41 = siemensNet.Write("DB100.12.0", false); + // array[0] = taskProtocol.getAckFinish1(); // array[1] = taskProtocol.getTaskNo(); // array[2] = taskProtocol.getTaskMode(); -- Gitblit v1.9.1