From b791daa70e38b4e426d2b065da5bd317fe8c91f3 Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期二, 27 五月 2025 11:18:46 +0800 Subject: [PATCH] #ZH --- src/main/java/com/zy/core/thread/RgvThread.java | 110 +++++++++++++++++-------------------------------------- 1 files changed, 34 insertions(+), 76 deletions(-) diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java index 561a4e5..3c70e71 100644 --- a/src/main/java/com/zy/core/thread/RgvThread.java +++ b/src/main/java/com/zy/core/thread/RgvThread.java @@ -25,10 +25,7 @@ import com.zy.core.model.RgvSlave; import com.zy.core.model.Task; import com.zy.core.model.command.RgvCommand; -import com.zy.core.model.protocol.RgvProtocol; -import com.zy.core.model.protocol.RgvTaskProtocol; -import com.zy.core.model.protocol.StaProtocol; -import com.zy.core.model.protocol.TaskProtocol; +import com.zy.core.model.protocol.*; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; @@ -56,7 +53,6 @@ private Long trackBenchmark = 1L; // # 閬胯璺濈 private Long avoidDistance = 5000L; - private Long currentTimeMilliOld = 0L; /** * 宸ヤ綅1澶嶄綅淇″彿 @@ -292,19 +288,25 @@ */ private void taskIssued() { while (true) { + RgvRunProtocol rgvRun = RgvRunCache.getRgvRun(); + if (!rgvRun.getRgvNo().equals(slave.getId())){ + continue; + } try { + Thread.sleep(50); + rgvRun = RgvRunCache.getRgvRun(); + System.out.println(JSON.toJSON(rgvRun)); + // 浼戠湢 1 绉� - if (System.currentTimeMillis() - currentTimeMilliOld > 100) { - currentTimeMilliOld = System.currentTimeMillis()+50; + if (System.currentTimeMillis() - rgvRun.currentTimeMilliOld > 1500) { + rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; } else { continue; } if (!deviceDetection()) { - currentTimeMilliOld = System.currentTimeMillis()+50; - continue; - } - if (!signRunStart()){ - currentTimeMilliOld = System.currentTimeMillis()+50; + rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; + rgvRun.setRgvNo(slave.getOtherId()); + RgvRunCache.updateRgvStatus(rgvRun); continue; } @@ -316,13 +318,15 @@ rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); } if (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)){ - signRunEnd(); - currentTimeMilliOld = System.currentTimeMillis()+50; + rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; + rgvRun.setRgvNo(slave.getOtherId()); + RgvRunCache.updateRgvStatus(rgvRun); continue; } if (rgvProtocol.getLoaded() == -1){ - signRunEnd(); - currentTimeMilliOld = System.currentTimeMillis()+50; + rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; + rgvRun.setRgvNo(slave.getOtherId()); + RgvRunCache.updateRgvStatus(rgvRun); continue; } if (rgvTaskProtocol.getAvoid() != 0) { @@ -339,8 +343,9 @@ RgvTaskCache.updateRgvStatus(rgvTaskProtocol); } - signRunEnd(); - currentTimeMilliOld = System.currentTimeMillis()+50; + rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; + rgvRun.setRgvNo(slave.getOtherId()); + RgvRunCache.updateRgvStatus(rgvRun); continue; } @@ -384,12 +389,12 @@ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, taskProtocol.getTargetPositionStaNoPlcId()); StaProtocol staProtocol = devpThread.getStation().get(taskProtocol.getTargetPositionStaNo()); if (staProtocol == null ) { - continue; + break; } // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 if (!staProtocol.isAutoing() || staProtocol.isLoading() ){ - continue; + break; } } TaskProtocol issued = new TaskProtocol(taskProtocol); @@ -404,8 +409,9 @@ } } } - signRunEnd(); - currentTimeMilliOld = System.currentTimeMillis()+50; + rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; + rgvRun.setRgvNo(slave.getOtherId()); + RgvRunCache.updateRgvStatus(rgvRun); } catch (Exception e) { log.error("RGV浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); try{ @@ -414,6 +420,11 @@ } catch (Exception e2){ log.error("e2:"+e2.getMessage()); } + rgvRun = RgvRunCache.getRgvRun(); + rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50; + rgvRun.setRgvNo(slave.getOtherId()); + RgvRunCache.updateRgvStatus(rgvRun); + continue; // e.printStackTrace(); } } @@ -437,54 +448,6 @@ return true; } - public boolean signRunStart() { - RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); - if (rgvTaskProtocol == null) { - return false; - } - RgvTaskProtocol rgvTaskProtocolOther = RgvTaskCache.getRgvStatus(slave.getOtherId()); - if (rgvTaskProtocolOther == null) { - return false; - } - if(!rgvTaskProtocol.isSignRun()) { - return false; - } - if(rgvTaskProtocolOther.isSignRun()) { - rgvTaskProtocol.setSignRun(rgvTaskProtocol.getRgvNo()==1); - RgvTaskCache.updateRgvStatus(rgvTaskProtocol); - return false; - } - rgvTaskProtocol.setSignRun(false); - RgvTaskCache.updateRgvStatus(rgvTaskProtocol); - return true; - } - - public boolean signRunEnd() { - RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); - if (rgvTaskProtocol == null) { - return false; - } - RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); - if (rgvProtocolOther == null) { - return false; - } - if (rgvProtocolOther.statusEnable) { - RgvTaskProtocol rgvTaskProtocolOther = RgvTaskCache.getRgvStatus(slave.getOtherId()); - if (rgvTaskProtocolOther == null) { - return false; - } - rgvTaskProtocol.setSignRun(false); - RgvTaskCache.updateRgvStatus(rgvTaskProtocol); - - rgvTaskProtocolOther.setSignRun(true); - RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther); - } else { - rgvTaskProtocol.setSignRun(true); - RgvTaskCache.updateRgvStatus(rgvTaskProtocol); - } - return true; - } - public boolean deviceDetection() { RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId()); @@ -495,9 +458,6 @@ } if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1 || rgvProtocol.getRgvPosDestination() == 0L || ((!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) { - if (signRunStart()){ - signRunEnd(); - } return false; } RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); @@ -510,9 +470,6 @@ } if (rgvProtocolOther.statusEnable) { if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L) || rgvTaskProtocolOther.getAvoid() == -1 || rgvProtocolOther.getRgvPosDestination() == 0L) { - if (signRunStart()){ - signRunEnd(); - } return false; } } @@ -916,6 +873,7 @@ if (rgvProtocol.getRgvPosDestination()==0L){ rgvProtocol.setRgvPosDestination(rgvProtocol.getRgvPos()); } + rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 8)); rgvProtocol.setTaskNo((long)siemensNet.getByteTransform().TransInt32(result.Content, 10)); -- Gitblit v1.9.1