From 2cf9b53834bf61455fffd322b0201b3d0080577a Mon Sep 17 00:00:00 2001 From: 1 <1@123> Date: 星期六, 10 五月 2025 17:06:49 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/RgvThread.java | 99 +++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 87 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java index 0258e1d..1e6df7b 100644 --- a/src/main/java/com/zy/core/thread/RgvThread.java +++ b/src/main/java/com/zy/core/thread/RgvThread.java @@ -48,11 +48,11 @@ // private RgvProtocol rgvProtocol; private TaskProtocolCache taskProtocolCache = new TaskProtocolCache(); // # 杞ㄩ亾鎬婚暱 - private Long trackEntireLength = 100L; + private Long trackEntireLength = 215000L; //# 杞ㄩ亾鍩哄噯鐐� - private Long trackBenchmark = 100L; + private Long trackBenchmark = 1L; // # 閬胯璺濈 - private Long avoidDistance = 100L; + private Long avoidDistance = 4000L; /** * 宸ヤ綅1澶嶄綅淇″彿 @@ -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()) { //鍙︿竴鍙拌溅鏄惁鍏佽姝ゅ彴杞︽墽琛� @@ -198,12 +262,19 @@ continue; } } - Thread.sleep(100); - TaskProtocol issued = new TaskProtocol(taskProtocol); - write(issued); - taskProtocol.setIsRunning(4); - taskProtocolCache.updateTaskProtocol(taskProtocol); - break; + if (taskProtocol.getTargetPosition()<=rgvProtocol.getRgvPos()+50 + && taskProtocol.getTargetPosition()>=rgvProtocol.getRgvPos()-50){ + Thread.sleep(100); + TaskProtocol issued = new TaskProtocol(taskProtocol); + write(issued); + taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); + break; + } else { + Thread.sleep(100); + TaskProtocol issued = new TaskProtocol(taskProtocol,true); + write(issued); + break; + } } } } catch (Exception e) { @@ -449,8 +520,10 @@ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId()); if (rgvProtocol == null) { rgvProtocol = new RgvProtocol(); - rgvProtocol.setRgvNo(slave.getId()); } + rgvProtocol.setRgvNo(slave.getId()); + rgvProtocol.setCarBodyJiaoMing(slave.getCarBodyJiaoMing()); + rgvProtocol.setCarBodyKunPeng(slave.getCarBodyKunPeng()); rgvProtocol.setRgvPos((long)siemensNet.getByteTransform().TransInt32(result.Content, 0)); rgvProtocol.setRgvPosDestination((long)siemensNet.getByteTransform().TransInt32(result.Content, 4)); @@ -531,6 +604,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