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 ++++++++-------------------
src/main/java/com/zy/core/cache/RgvRunCache.java | 60 +++++++++++++++
src/main/java/com/zy/core/model/protocol/RgvTaskProtocol.java | 2
src/main/java/com/zy/core/model/protocol/RgvRunProtocol.java | 18 ++++
src/main/resources/application.yml | 4
5 files changed, 114 insertions(+), 80 deletions(-)
diff --git a/src/main/java/com/zy/core/cache/RgvRunCache.java b/src/main/java/com/zy/core/cache/RgvRunCache.java
new file mode 100644
index 0000000..a16500d
--- /dev/null
+++ b/src/main/java/com/zy/core/cache/RgvRunCache.java
@@ -0,0 +1,60 @@
+package com.zy.core.cache;
+
+import com.core.common.Cools;
+import com.zy.core.model.protocol.RgvRunProtocol;
+import com.zy.core.model.protocol.RgvTaskProtocol;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+public class RgvRunCache {
+ // 鏈湴缂撳瓨锛岄敭涓� currentPosition锛屽�间负 DeviceStatus
+ private static final ConcurrentHashMap<String, RgvRunProtocol> cache = new ConcurrentHashMap<>();
+
+ /**
+ * 鏇存柊璁惧鐘舵��
+ */
+ public static void updateRgvStatus(RgvRunProtocol status) {
+ try {
+ cache.put(status.getDev(), status);
+ } finally {
+ }
+ }
+
+ /**
+ * 鑾峰彇璁惧鐘舵��
+ */
+ public static RgvRunProtocol getRgvRun() {
+ try {
+ RgvRunProtocol rgv = cache.get("RGV");
+ if (Cools.isEmpty(rgv)){
+ rgv = new RgvRunProtocol();
+ }
+ return rgv;
+ } finally {
+ }
+ }
+
+ /**
+ * 鑾峰彇璁惧鐘舵��
+ */
+ public static RgvRunProtocol getRgvStatus(String dev) {
+ try {
+ return cache.get(dev);
+ } finally {
+ }
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夎澶囩姸鎬�
+ */
+ public static ConcurrentHashMap<String, RgvRunProtocol> getAllRgvStatus() {
+ try {
+ return new ConcurrentHashMap<>(cache); // 杩斿洖鍓湰
+ } finally {
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/core/model/protocol/RgvRunProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvRunProtocol.java
new file mode 100644
index 0000000..82a4503
--- /dev/null
+++ b/src/main/java/com/zy/core/model/protocol/RgvRunProtocol.java
@@ -0,0 +1,18 @@
+package com.zy.core.model.protocol;
+
+import lombok.Data;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+@Data
+public class RgvRunProtocol {
+
+
+ private String dev = "RGV";
+ private Integer RgvNo = 1;
+
+ public Long currentTimeMilliOld = 0L;
+
+ public RgvRunProtocol(){}
+}
diff --git a/src/main/java/com/zy/core/model/protocol/RgvTaskProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvTaskProtocol.java
index f542a08..2bb5cf2 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvTaskProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvTaskProtocol.java
@@ -21,7 +21,5 @@
*/
public Long AvoidingTheDestination;
- public boolean signRun = true;
-
public RgvTaskProtocol(){}
}
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));
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 9ac2b12..b9b5a21 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -71,8 +71,8 @@
#url: 10.32.53.195:8080
# WMS绯荤粺ip
# url: 10.210.157.109:8090
- url: 27.172.1.135:20006
-# url: 27.172.2.104:9027
+# url: 27.172.1.135:20006
+ url: 27.172.2.104:9027
# 鍏ュ簱浠诲姟鐢宠鎺ュ彛
#inboundTaskApplyPath: api/InterFace/inboundTaskApply
inboundTaskApplyPath: xf-management/api/external/wcs/inboundTaskApply
--
Gitblit v1.9.1