From f37003093c6256e7349558faad0532e8b1d0029c Mon Sep 17 00:00:00 2001
From: 野心家 <1051256694@qq.com>
Date: 星期三, 28 五月 2025 17:37:09 +0800
Subject: [PATCH] #ZH
---
src/main/java/com/zy/core/thread/RgvThread.java | 196 +++++++++++++++++++++++++++++++------------------
1 files changed, 124 insertions(+), 72 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 8cf35c2..cd37355 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -94,7 +94,7 @@
new Thread(this::taskIssued).start();
// 鍚姩婕父绾跨▼
-// new Thread(this::taskWalkIssued).start();
+ new Thread(this::taskWalkIssued).start();
// new Thread(this::taskWalkIssued2).start();
// 鍚姩浠诲姟瀹屾垚绾跨▼
@@ -104,6 +104,7 @@
private void rgvConnect() {
while (true) {
try {
+ Thread.sleep(1000);
if(!connectRgv){
try {
connectRgv = this.connect();
@@ -118,7 +119,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "rgv杩炴帴澶辫触"+e.getMessage());
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
initRgv();
// e.printStackTrace();
@@ -140,7 +141,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV鏁版嵁璇诲彇绾跨▼寮傚父"+e.getMessage());
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
initRgv();
// e.printStackTrace();
@@ -173,7 +174,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV鏁版嵁浠诲姟涓嬪彂澶嶄綅绾跨▼寮傚父"+e.getMessage());
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
initRgv();
// e.printStackTrace();
@@ -249,40 +250,40 @@
/**
* 婕父
*/
-// private void taskWalkIssued() {
-// while (true) {
-// try {
-// // 浼戠湢 1 绉�
-// Thread.sleep(100);
-//
-// if (!deviceDetection()) {
-// continue;
-// }
-// RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
-// if (rgvTaskProtocol == null) {
-// initRgv();
-// rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
-// }
-// if (rgvTaskProtocol.getAvoid() != 1) {
-// continue;
-// }
-// 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);
-//
-// } catch (Exception e) {
-// log.error("RGV琛岃蛋浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�" + e.getMessage());
-//// e.printStackTrace();
-// }
-// }
-// }
+ private void taskWalkIssued() {
+ while (true) {
+ try {
+ // 浼戠湢 1 绉�
+ Thread.sleep(100);
+
+ if (!deviceDetection()) {
+ continue;
+ }
+ RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
+ if (rgvTaskProtocol == null) {
+ initRgv();
+ rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
+ }
+ if (rgvTaskProtocol.getAvoid() != 1) {
+ continue;
+ }
+ 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);
+
+ } catch (Exception e) {
+ log.error("RGV琛岃蛋浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�" + e.getMessage());
+// e.printStackTrace();
+ }
+ }
+ }
/**
* 浠诲姟涓嬪彂
@@ -291,7 +292,6 @@
while (true) {
RgvRunProtocol rgvRun = RgvRunCache.getRgvRun();
if (!rgvRun.getRgvNo().equals(slave.getId())){
-
continue;
}
try {
@@ -300,7 +300,7 @@
// System.out.println(JSON.toJSON(rgvRun));
// 浼戠湢 1 绉�
- if (System.currentTimeMillis() - rgvRun.currentTimeMilliOld > 500) {
+ if (System.currentTimeMillis() - rgvRun.currentTimeMilliOld > 1000) {
rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
} else {
continue;
@@ -309,7 +309,9 @@
rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
rgvRun.setRgvNo(slave.getOtherId());
RgvRunCache.updateRgvStatus(rgvRun);
- RgvErrCache.updateRgvErr(slave.getId(),errorRgv);
+ if (!errorRgv.equals("鏃�")){
+ RgvErrCache.updateRgvErr(slave.getId(),errorRgv);
+ }
continue;
}
@@ -334,20 +336,6 @@
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);
- RgvErrCache.updateRgvErr(slave.getId());
- rgvTaskProtocol.setAvoid(0);
-
-// try{Thread.sleep(50L);} catch (Exception e){}
-
- RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
- }
rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
rgvRun.setRgvNo(slave.getOtherId());
RgvRunCache.updateRgvStatus(rgvRun);
@@ -445,7 +433,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV浠诲姟涓嬪彂绾跨▼寮傚父"+e.getMessage());
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
rgvRun = RgvRunCache.getRgvRun();
rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
@@ -495,7 +483,7 @@
return false;
}
if (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM)) {
- errorRgv = slave.getId()+"鍙峰皬杞﹂潪绌洪棽";
+ errorRgv = "鏃�";
return false;
}
if ( (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM)) {
@@ -535,6 +523,10 @@
public boolean otherRgvAvoid(Long targetPosition) {
RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ long onePos = Math.abs(targetPosition - rgvProtocol.getRgvPos());
+ if (onePos<50){
+ return true;
+ }
RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
@@ -574,7 +566,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
return false;
}
@@ -597,6 +589,66 @@
return false;
}
}
+ TaskProtocol nowPosRunTask2 = taskProtocolCacheOther.getNowPosRunTask2();
+ if (!Cools.isEmpty(nowPosRunTask2)){
+ boolean signNowPosRun = true;
+ boolean signNowPosA = true;
+ if (targetPosition - rgvProtocol.getRgvPos()>0){
+ if (nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos()>0){
+ if (rgvProtocol.getRgvPos()>rgvProtocolOther.getRgvPos()){
+ signNowPosA = false;
+ signNowPosRun = false;
+ }
+ }
+ } else if (targetPosition - rgvProtocol.getRgvPos()<0){
+ if (nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos()<0){
+ if (rgvProtocol.getRgvPos()<rgvProtocolOther.getRgvPos()){
+ signNowPosA = false;
+ signNowPosRun = false;
+ }
+ }
+ }
+
+ if (signNowPosA){
+ if (nowPosRunTask2.getTaskStatus()==3){
+ long twoPos = Math.abs(nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos());
+ if (Math.abs(onePos - twoPos)>100){
+ if (onePos-50>twoPos+50){
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, nowPosRunTask2.getTargetPositionStaNoPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(nowPosRunTask2.getTargetPositionStaNo());
+ if (staProtocol == null ) {
+ signNowPosRun =false;
+ }
+ if (signNowPosRun){
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (staProtocol.isAutoing() && !staProtocol.isLoading()
+ ){
+ errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+ return false;
+ }
+ }
+ signNowPosRun =false;
+ }
+ }
+ } else {
+ long twoPos = Math.abs(nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos());
+ if (twoPos<100){
+ errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+ return false;
+ }
+ if (Math.abs(onePos - twoPos)>100){
+ if (onePos-50>twoPos+50){
+ signNowPosRun =false;
+ }
+ }
+ }
+ }
+
+ if (signNowPosRun){
+ errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+ return false;
+ }
+ }
long avoid = targetPosition + rgvProtocol.getCarBodyKunPeng() + avoidDistance + rgvProtocolOther.getCarBodyJiaoMing();
if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) {
log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
@@ -606,7 +658,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
return false;
}
@@ -634,7 +686,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
return false;
}
@@ -663,7 +715,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
return false;
}
@@ -720,7 +772,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
return false;
}
@@ -752,7 +804,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
return false;
}
@@ -780,7 +832,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
return false;
}
@@ -810,7 +862,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
return false;
}
@@ -872,7 +924,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV寮傚父"+e.getMessage());
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
rgvProtocol.setStatusEnable(true);
}
@@ -910,7 +962,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "RGVplc杩炴帴澶辫触");
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
}
initRgv();
@@ -996,7 +1048,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV plc鏁版嵁搴撴洿鏂板け璐�");
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
}
} catch (Exception ignore) {
@@ -1017,7 +1069,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "璇诲彇RGV plc鐘舵�佷俊鎭け璐�");
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
}
} catch (Exception e) {
@@ -1029,7 +1081,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "璇诲彇RGV plc鐘舵�佷俊鎭け璐�");
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
initRgv();
}
@@ -1046,7 +1098,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV鍐欏叆鍛戒护涓虹┖");
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
return false;
}
@@ -1105,7 +1157,7 @@
DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV 鍛戒护涓嬪彂"+JSON.toJSON(taskProtocol));
} catch (Exception e2){
- log.error("e2:"+e2.getMessage());
+// log.error("e2:"+e2.getMessage());
}
OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(taskProtocol)));
return true;
--
Gitblit v1.9.1