From ea8a8579ac78ba244da928f6a31c7aa5fc20a358 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期四, 22 五月 2025 16:34:29 +0800 Subject: [PATCH] * --- src/main/java/com/zy/core/thread/RgvThread.java | 122 ++++++++++++++++++++++++++-------------- 1 files changed, 80 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java index 365d9b9..6ba22dd 100644 --- a/src/main/java/com/zy/core/thread/RgvThread.java +++ b/src/main/java/com/zy/core/thread/RgvThread.java @@ -85,17 +85,18 @@ } } - // 鍚姩璇绘暟鎹嚎绋� + // 鍚姩绾跨▼鑷姩閲嶈繛 new Thread(this::rgvConnect).start(); + // 鍚姩璇绘暟鎹嚎绋� new Thread(this::readStatusRgv).start(); // 鍚姩浠诲姟涓嬪彂绾跨▼ new Thread(this::taskIssued).start(); // 鍚姩婕父绾跨▼ - new Thread(this::taskWalkIssued).start(); - new Thread(this::taskWalkIssued2).start(); +// new Thread(this::taskWalkIssued).start(); +// new Thread(this::taskWalkIssued2).start(); // 鍚姩浠诲姟瀹屾垚绾跨▼ new Thread(this::taskComplete).start(); @@ -123,7 +124,7 @@ private void readStatusRgv() { while (true) { try { - Thread.sleep(100); + Thread.sleep(20); readStatus(); @@ -148,7 +149,7 @@ delRgvTask = false; continue; } - Thread.sleep(100); + Thread.sleep(40); OperateResultExOne<byte[]> result = siemensNet.Read("DB100.12", (short) 1); boolean[] status = siemensNet.getByteTransform().TransBool(result.Content, 0, 1); if (status[0]){ @@ -277,44 +278,56 @@ 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; } + 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); + rgvTaskProtocol.setAvoid(0); + + Thread.sleep(200); + RgvTaskCache.updateRgvStatus(rgvTaskProtocol); + } + continue; + } List<TaskProtocol> allTakeTaskProtocol = taskProtocolCache.getTakeOrPutTaskProtocol(rgvProtocol.getLoaded()); - for (TaskProtocol taskProtocol : allTakeTaskProtocol) { - if (taskProtocol.getIsRunning() == 1) {//鍑嗗涓嬪彂 + if (allTakeTaskProtocol.isEmpty()){ + 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 { + TaskProtocol issued = new TaskProtocol(taskProtocol,true); + write(issued); + taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); + break; + } + } + } + } else { + for (TaskProtocol taskProtocol : allTakeTaskProtocol) { + if (taskProtocol.getIsRunning() == 1) {//鍑嗗涓嬪彂 // RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); - if (taskProtocol.getTaskStatus()==3){ - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, taskProtocol.getTargetPositionStaNoPlcId()); - StaProtocol staProtocol = devpThread.getStation().get(taskProtocol.getTargetPositionStaNo()); - if (staProtocol == null ) { - continue; - } - // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 - if (!staProtocol.isAutoing() || staProtocol.isLoading() - || staProtocol.getWorkNo() != 0 - ){ - Thread.sleep(500); -// System.out.println("<鏀捐揣鐩爣绔�>" + taskProtocol.getTargetPositionStaNo() + "<闈炶嚜鍔ㄦ垨鑰呮湁鐗╂垨鑰呭瓨鍦ㄥ伐浣滃彿锛侊紒锛�>"); -// continue; - } - } - //鍙岃溅 - if (rgvOtherStatusEnable()) { - //鍙︿竴鍙拌溅鏄惁鍏佽姝ゅ彴杞︽墽琛� - if (!otherRgvAvoid(taskProtocol.getTargetPosition())) { - continue; - } - } - if (taskProtocol.getTargetPosition()<=rgvProtocol.getRgvPos()+50 - && taskProtocol.getTargetPosition()>=rgvProtocol.getRgvPos()-50){ if (taskProtocol.getTaskStatus()==3){ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, taskProtocol.getTargetPositionStaNoPlcId()); StaProtocol staProtocol = devpThread.getStation().get(taskProtocol.getTargetPositionStaNo()); @@ -327,17 +340,42 @@ ){ Thread.sleep(500); // System.out.println("<鏀捐揣鐩爣绔�>" + taskProtocol.getTargetPositionStaNo() + "<闈炶嚜鍔ㄦ垨鑰呮湁鐗╂垨鑰呭瓨鍦ㄥ伐浣滃彿锛侊紒锛�>"); +// continue; + } + } + //鍙岃溅 + if (rgvOtherStatusEnable()) { + //鍙︿竴鍙拌溅鏄惁鍏佽姝ゅ彴杞︽墽琛� + if (!otherRgvAvoid(taskProtocol.getTargetPosition())) { continue; } } - TaskProtocol issued = new TaskProtocol(taskProtocol); - write(issued); - taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); - break; - } else { - TaskProtocol issued = new TaskProtocol(taskProtocol,true); - write(issued); - break; + if (taskProtocol.getTargetPosition()<=rgvProtocol.getRgvPos()+50 + && taskProtocol.getTargetPosition()>=rgvProtocol.getRgvPos()-50){ + if (taskProtocol.getTaskStatus()==3){ + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, taskProtocol.getTargetPositionStaNoPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(taskProtocol.getTargetPositionStaNo()); + if (staProtocol == null ) { + continue; + } + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 + if (!staProtocol.isAutoing() || staProtocol.isLoading() + || staProtocol.getWorkNo() != 0 + ){ + Thread.sleep(500); +// System.out.println("<鏀捐揣鐩爣绔�>" + taskProtocol.getTargetPositionStaNo() + "<闈炶嚜鍔ㄦ垨鑰呮湁鐗╂垨鑰呭瓨鍦ㄥ伐浣滃彿锛侊紒锛�>"); + continue; + } + } + TaskProtocol issued = new TaskProtocol(taskProtocol); + write(issued); + taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); + break; + } else { + TaskProtocol issued = new TaskProtocol(taskProtocol,true); + write(issued); + break; + } } } } -- Gitblit v1.9.1