From 29d5f847ca4d1f084d8170d5bf2235cd6b7dde14 Mon Sep 17 00:00:00 2001
From: zzgtfwq <zzgtfwq>
Date: 星期一, 08 十二月 2025 14:58:53 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/RgvThread.java |   94 +++++++++++++++++++++++++----------------------
 1 files changed, 50 insertions(+), 44 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index f1c5e9a..b736ba7 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -169,18 +169,20 @@
                     }
                     continue;
                 }
-                if (delRgvTask){
-                    writeDelRgvTask();
-                    delRgvTask = false;
-                    continue;
-                }
+//                if (delRgvTask){
+//                    writeDelRgvTask();
+//                    delRgvTask = false;
+//                    continue;
+//                }
                 Thread.sleep(50L);
 
-                OperateResultExOne<byte[]> result = siemensNet.Read("DB100.12", (short) 1);
-                boolean[] status = siemensNet.getByteTransform().TransBool(result.Content, 0, 1);
-                if (status[0]){
-                    Thread.sleep(500L);
-                    OperateResult result4 = siemensNet.Write("DB100.12.0", false);
+                // 鏋勫缓璁惧鐘舵�佸璞�
+                RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+                if (rgvProtocol == null) {
+                    rgvProtocol = new RgvProtocol();
+                }
+                if (rgvProtocol.getStatusType().equals(RgvStatusType.WAITING)){
+                    OperateResult result4 = siemensNet.Write("DB100.0", (short) 1);
                 }
             } catch (Exception e) {
                 log.error("RGV鏁版嵁浠诲姟涓嬪彂澶嶄綅绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
@@ -666,7 +668,7 @@
                     RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther);
                     return false;
                 }
-            } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.WORKING)) {
+            } else if (!rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE)) {
                 if ((rgvProtocolOther.getRgvPosDestination() - rgvProtocolOther.getCarBodyJiaoMing())
                         - (targetPosition + rgvProtocol.getCarBodyKunPeng())
                         > avoidDistance - 50) {//鏃犻渶閬胯
@@ -874,7 +876,7 @@
                     return false;
                 }
 
-            } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.WORKING)) {
+            } else if (!rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE)) {
                 if ((targetPosition - rgvProtocol.getCarBodyJiaoMing())
                         - (rgvProtocolOther.getRgvPosDestination() + rgvProtocolOther.getCarBodyKunPeng())
                         > avoidDistance-50) {//鏃犻渶閬胯
@@ -1010,7 +1012,8 @@
      */
     private void readStatus() {
         try {
-            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 20);
+            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 36);
+            OperateResultExOne<byte[]> result100 = siemensNet.Read("DB100.0", (short) 18);
             if (result.IsSuccess) {
                 // 鏋勫缓璁惧鐘舵�佸璞�
                 RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
@@ -1021,14 +1024,16 @@
                 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));
+                rgvProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));
+//                rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 2));
+                rgvProtocol.setTaskNo((long)siemensNet.getByteTransform().TransInt32(result.Content, 4));
+                rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 8));
+                rgvProtocol.setLoaded(siemensNet.getByteTransform().TransInt16(result.Content, 10));
+                rgvProtocol.setRgvPos((long)siemensNet.getByteTransform().TransInt32(result.Content, 32));
+                rgvProtocol.setRgvPosDestination((long)siemensNet.getByteTransform().TransInt32(result100.Content, 14));
                 if (rgvProtocol.getRgvPosDestination()==0L){
                     rgvProtocol.setRgvPosDestination(rgvProtocol.getRgvPos());
                 }
-
-                rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 8));
-//                rgvProtocol.setStatus((short)1);
 
                 //浣滀笟鍚姩涓�  瑙e喅浠诲姟涓嬪彂鍚庡皬杞︾姸鎬佹湭鏇存柊锛屽皬杞︾姸鎬佷笉鍙婃椂
                 if (this.wrkSign == 1 && rgvProtocol.getStatus()!=(short)1){
@@ -1038,26 +1043,22 @@
                     rgvProtocol.setStatus((short)110);
                 }
 
-                rgvProtocol.setTaskNo((long)siemensNet.getByteTransform().TransInt32(result.Content, 10));
-
-                rgvProtocol.setRgvNo((int)siemensNet.getByteTransform().TransInt16(result.Content, 14));
-                rgvProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 16));
 //                rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 20));
 //                rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28));
 //                rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40));
-//                rgvProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
+                rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 16));
 
 //                OperateResultExOne<byte[]> result11 = siemensNet.Read("DB100.12", (short) 1);
-                boolean[] status = siemensNet.getByteTransform().TransBool(result.Content, 18, 2);
-                rgvProtocol.setLoaded(status[0]? (short)1:(short)0);
-                rgvProtocol.setErr1(status[8]);
-                rgvProtocol.setErr2(status[9]);
-                rgvProtocol.setErr3(status[10]);
-                rgvProtocol.setErr4(status[11]);
-                rgvProtocol.setErr5(status[12]);
-                rgvProtocol.setErr6(status[13]);
-                rgvProtocol.setErr7(status[14]);
-                rgvProtocol.setErr8(status[15]);
+//                boolean[] status = siemensNet.getByteTransform().TransBool(result.Content, 18, 2);
+//                rgvProtocol.setLoaded(status[0]? (short)1:(short)0);
+//                rgvProtocol.setErr1(status[8]);
+//                rgvProtocol.setErr2(status[9]);
+//                rgvProtocol.setErr3(status[10]);
+//                rgvProtocol.setErr4(status[11]);
+//                rgvProtocol.setErr5(status[12]);
+//                rgvProtocol.setErr6(status[13]);
+//                rgvProtocol.setErr7(status[14]);
+//                rgvProtocol.setErr8(status[15]);
 //                System.out.println("璇荤嚎绋�"+ slave.getId()+"---"+JSON.toJSONString(rgvProtocol));
 //                System.out.println("璇荤嚎绋�,灏忚溅鍙�"+ slave.getId()+"鏃堕棿鎴筹細"+System.currentTimeMillis()+"灏忚溅鏁版嵁锛�"+JSON.toJSONString(rgvProtocol));
                 OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), slave.getId()));
@@ -1072,9 +1073,9 @@
 //                        }
 //                    }
 //                }
-                if (rgvProtocol.getAlarm$()!=0){
-                    RgvErrCache.updateRgvErr(slave.getId(),rgvProtocol.getAlarmM());
-                }
+//                if (rgvProtocol.getAlarm$()!=0){
+//                    RgvErrCache.updateRgvErr(slave.getId(),rgvProtocol.getAlarmM());
+//                }
 
                 try {
                     // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
@@ -1152,21 +1153,26 @@
 //        convertRow(command);
 //        taskProtocol.setRgvNo(slave.getId());
 //        Long[] array = new Long[11];
-        OperateResult result41 = siemensNet.Write("DB100.12.0", false);
+        OperateResult result41 = siemensNet.Write("DB100.0", (short) 0);
 //        array[0] = taskProtocol.getAckFinish1();
 //        array[1] = taskProtocol.getTaskNo();
 //        array[2] = taskProtocol.getTaskMode();
 //        array[4] = command.getDestinationStaNo();
 //        array[10] = taskProtocol.getCommand();
-        int taskStatus = taskProtocol.getTaskStatus();
+        int taskStatus = taskProtocol.getTaskStatus$();
+        int targetPositionStaNo = taskProtocol.getTargetPositionStaNo();
+        int targetPositionStaNoEnd = taskProtocol.getTargetPositionStaNoEnd();
 
-        OperateResult result = siemensNet.Write("DB100.0", taskProtocol.getTargetPosition().intValue());
-        OperateResult result1 = siemensNet.Write("DB100.4", (short) taskStatus);
-        OperateResult result2 = siemensNet.Write("DB100.6", taskProtocol.getTaskNo().intValue());
-        OperateResult result3 = siemensNet.Write("DB100.10", taskProtocol.isDirection()? (short) 1 :  (short) 2); // 鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級    true:宸�   false:鍙�
-        Thread.sleep(20L);
+        OperateResult result2 = siemensNet.Write("DB100.2", taskProtocol.getTaskNo().intValue());
+        OperateResult result1 = siemensNet.Write("DB100.6", (short) taskStatus);
+        OperateResult result11 = siemensNet.Write("DB100.8", (short) targetPositionStaNo);
+        OperateResult result12 = siemensNet.Write("DB100.10", (short) targetPositionStaNo);
+        OperateResult result = siemensNet.Write("DB100.14", taskProtocol.getTargetPosition().intValue());
+        OperateResult result13 = siemensNet.Write("DB100.18", (short) targetPositionStaNoEnd);
+//        OperateResult result3 = siemensNet.Write("DB100.10", taskProtocol.isDirection()? (short) 1 :  (short) 2); // 鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級    true:宸�   false:鍙�
+        Thread.sleep(10L);
 
-        OperateResult result4 = siemensNet.Write("DB100.12.0", true);
+        OperateResult result4 = siemensNet.Write("DB100.12", (short) 1);
         this.wrkSign = 1;
 
 //        log.info("浠诲姟涓嬪彂绾跨▼,灏忚溅鍙�"+ slave.getId()+"鏃堕棿鎴筹細"+System.currentTimeMillis());

--
Gitblit v1.9.1