From 85d0972114327e5a1f515a00895d51dc32a4f2b4 Mon Sep 17 00:00:00 2001
From: L <L@132>
Date: 星期五, 16 一月 2026 15:36:02 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/core/thread/RgvThread.java |  302 +++++++++++++++++++++++++++++++------------------
 1 files changed, 190 insertions(+), 112 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index a3c6f6d..a6a852d 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -65,7 +65,11 @@
     private boolean resetFlag2 = false;
 
     private boolean connectRgv = false;
+    private boolean connectRgv2 = false;
+    public Long currentTimeMilliConnectRgv= 0L;
+
     private boolean delRgvTask = false;
+    private short wrkSign = 0;
 
     public RgvThread(RgvSlave slave) {
         this.slave = slave;
@@ -74,16 +78,7 @@
     @Override
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
-        connectRgv = this.connect();
-        while(!connectRgv){
-            try {
-                connectRgv = this.connect();
-                Thread.sleep(100);
-            } catch (Exception e){
-
-            }
-        }
-
+//        initRgv();
         // 鍚姩绾跨▼鑷姩閲嶈繛
         new Thread(this::rgvConnect).start();
 
@@ -114,10 +109,12 @@
                     }
                 }
             } catch (Exception e) {
+                connectRgv = false;
+                connectRgv2 = false;
                 log.error("rgv杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
                 try{
                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                    deviceErrorService.addDeviceError("rgv", slave.getId(), "rgv杩炴帴澶辫触"+e.getMessage());
+                    deviceErrorService.addDeviceError("rgvErr", slave.getId(), "rgv杩炴帴澶辫触"+e.getMessage());
                 } catch (Exception e2){
 //                    log.error("e2:"+e2.getMessage());
                 }
@@ -131,8 +128,9 @@
         while (true) {
             try {
                 if(!connectRgv){
+                    connectRgv2 = false;
                     try {
-                        Thread.sleep(1000L);
+                        Thread.sleep(20L);
                     } catch (Exception e){
 
                     }
@@ -140,15 +138,18 @@
                     continue;
                 }
                 Thread.sleep(20);
-//                System.out.println("璇荤嚎绋�"+ slave.getId());
+//                System.out.println("璇荤嚎绋�,灏忚溅鍙�"+ slave.getId()+"鏃堕棿鎴筹細"+System.currentTimeMillis());
 
                 readStatus();
+                connectRgv2 = connectRgv;
 
             } catch (Exception e) {
+                connectRgv = false;
+                connectRgv2 = false;
                 log.error("RGV鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
                 try{
                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                    deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV鏁版嵁璇诲彇绾跨▼寮傚父"+e.getMessage());
+                    deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV鏁版嵁璇诲彇绾跨▼寮傚父"+e.getMessage());
                 } catch (Exception e2){
 //                    log.error("e2:"+e2.getMessage());
                 }
@@ -179,21 +180,25 @@
                     delRgvTask = false;
                     continue;
                 }
-                Thread.sleep(40);
+                Thread.sleep(100L);
+
                 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);
                 }
             } catch (Exception e) {
+                connectRgv = false;
+                connectRgv2 = false;
                 log.error("RGV鏁版嵁浠诲姟涓嬪彂澶嶄綅绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
                 try{
                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                    deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV鏁版嵁浠诲姟涓嬪彂澶嶄綅绾跨▼寮傚父"+e.getMessage());
+                    deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV鏁版嵁浠诲姟涓嬪彂澶嶄綅绾跨▼寮傚父"+e.getMessage());
                 } catch (Exception e2){
 //                    log.error("e2:"+e2.getMessage());
                 }
-                initRgv();
+                initRgv2();
 //                e.printStackTrace();
             }
 
@@ -202,75 +207,12 @@
     }
 
     /**
-     * 浠诲姟涓嬪彂
-     */
-//    private void taskWalkIssued2() {
-//        while (true) {
-//            try {
-//                // 浼戠湢 1 绉�
-//                Thread.sleep(100);
-//                if (!deviceDetection()) {
-//                    continue;
-//                }
-//                RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
-//                RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
-//                if (rgvProtocol == null || rgvTaskProtocol == null) {
-//                    initRgv();
-//                    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;
-//                }
-//
-//                List<TaskProtocol> 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;
-//                        }
-//                    }
-//                }
-//            } catch (Exception e) {
-//                log.error("RGV浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-//                try{
-//                    DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-//                    deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV浠诲姟涓嬪彂绾跨▼寮傚父"+e.getMessage());
-//                } catch (Exception e2){
-//                    log.error("e2:"+e2.getMessage());
-//                }
-////                e.printStackTrace();
-//            }
-//        }
-//    }
-
-    /**
      * 婕父
      */
     private void taskWalkIssued() {
         while (true) {
             try {
-                if(!connectRgv){
+                if(!connectRgv2){
                     try {
                         Thread.sleep(1000L);
                     } catch (Exception e){
@@ -278,7 +220,7 @@
                     }
                     continue;
                 }
-                // 浼戠湢 1 绉�
+                // 浼戠湢 0.1 绉�
                 Thread.sleep(100);
 
                 if (!deviceDetection()) {
@@ -286,7 +228,7 @@
                 }
                 RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
                 if (rgvTaskProtocol == null) {
-                    initRgv();
+                    initRgv2();
                     rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
                 }
                 if (rgvTaskProtocol.getAvoid() != 1) {
@@ -300,10 +242,12 @@
                 write(issued);
                 rgvTaskProtocol.setAvoid(0);
 
-                Thread.sleep(200);
+//                Thread.sleep(200);
                 RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
 
             } catch (Exception e) {
+                connectRgv = false;
+                connectRgv2 = false;
                 log.error("RGV琛岃蛋浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�" + e.getMessage());
 //                e.printStackTrace();
             }
@@ -315,7 +259,7 @@
      */
     private void taskIssued() {
         while (true) {
-            if(!connectRgv){
+            if(!connectRgv2){
                 try {
                     Thread.sleep(1000L);
                 } catch (Exception e){
@@ -328,12 +272,12 @@
                 continue;
             }
             try {
-                Thread.sleep(50);
+                Thread.sleep(200);
                 rgvRun = RgvRunCache.getRgvRun();
 //                System.out.println(JSON.toJSON(rgvRun));
 
                 // 浼戠湢 1 绉�
-                if (System.currentTimeMillis() - rgvRun.currentTimeMilliOld > 1000) {
+                if (System.currentTimeMillis() - rgvRun.currentTimeMilliOld > 500L) {
                     rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
                 } else {
                     continue;
@@ -351,7 +295,7 @@
                 RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
                 RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
                 if (rgvProtocol == null || rgvTaskProtocol == null) {
-                    initRgv();
+                    initRgv2();
                     rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
                     rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
                 }
@@ -461,10 +405,12 @@
                 rgvRun.setRgvNo(slave.getOtherId());
                 RgvRunCache.updateRgvStatus(rgvRun);
             } catch (Exception e) {
+                connectRgv = false;
+                connectRgv2 = false;
                 log.error("RGV浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
                 try{
                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                    deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV浠诲姟涓嬪彂绾跨▼寮傚父"+e.getMessage());
+                    deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV浠诲姟涓嬪彂绾跨▼寮傚父"+e.getMessage());
                 } catch (Exception e2){
 //                    log.error("e2:"+e2.getMessage());
                 }
@@ -597,7 +543,7 @@
                                                 errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
                                                 try{
                                                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                                                    deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
+                                                    deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
                                                 } catch (Exception e2){
 //                                                    log.error("e2:"+e2.getMessage());
                                                 }
@@ -689,7 +635,7 @@
 
                         try{
                             DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                            deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
+                            deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
                         } catch (Exception e2){
 //                            log.error("e2:"+e2.getMessage());
                         }
@@ -717,7 +663,7 @@
 
                         try{
                             DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                            deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
+                            deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
                         } catch (Exception e2){
 //                            log.error("e2:"+e2.getMessage());
                         }
@@ -746,7 +692,7 @@
 
                             try{
                                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                                deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
+                                deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
                             } catch (Exception e2){
 //                                log.error("e2:"+e2.getMessage());
                             }
@@ -803,7 +749,7 @@
 
                                                 try{
                                                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                                                    deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
+                                                    deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
                                                 } catch (Exception e2){
 //                                                    log.error("e2:"+e2.getMessage());
                                                 }
@@ -828,6 +774,67 @@
                             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.getCarBodyJiaoMing() - avoidDistance - rgvProtocolOther.getCarBodyKunPeng();
                     if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) {
                         log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
@@ -835,7 +842,7 @@
 
                         try{
                             DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                            deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
+                            deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
                         } catch (Exception e2){
 //                            log.error("e2:"+e2.getMessage());
                         }
@@ -863,7 +870,7 @@
 
                         try{
                             DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                            deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
+                            deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
                         } catch (Exception e2){
 //                            log.error("e2:"+e2.getMessage());
                         }
@@ -893,7 +900,7 @@
 
                             try{
                                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                                deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
+                                deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
                             } catch (Exception e2){
 //                                log.error("e2:"+e2.getMessage());
                             }
@@ -955,12 +962,47 @@
             log.error("RGV寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
             try{
                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV寮傚父"+e.getMessage());
+                deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV寮傚父"+e.getMessage());
             } catch (Exception e2){
 //                log.error("e2:"+e2.getMessage());
             }
             rgvProtocol.setStatusEnable(true);
         }
+
+        RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
+        if (rgvTaskProtocol == null) {
+            rgvTaskProtocol = new RgvTaskProtocol();
+            rgvTaskProtocol.setRgvNo(slave.getId());
+        }
+        rgvTaskProtocol.setAvoid(0);
+        rgvTaskProtocol.setAvoidingTheDestination(0L);
+
+        RgvStatusCache.updateRgvStatus(rgvProtocol);
+
+        RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
+
+    }
+
+    /**
+     * 鍒濆鍖朢GV鐘舵��
+     */
+    private void initRgv2() {
+        RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+        if (rgvProtocol == null) {
+            rgvProtocol = new RgvProtocol();
+            rgvProtocol.setRgvNo(slave.getId());
+        }
+        rgvProtocol.setMode((short) -1);
+        rgvProtocol.setStatus((short) -1);
+        rgvProtocol.setWalkPos((short) 0);
+        rgvProtocol.setRgvPos(0L);
+        rgvProtocol.setAlarm((short) 0);
+        rgvProtocol.setxSpeed((short) 0);
+        rgvProtocol.setxDistance((short) 0);
+        rgvProtocol.setxDuration((short) 0);
+        rgvProtocol.setCarBodyJiaoMing(0L);
+        rgvProtocol.setCarBodyKunPeng(0L);
+        rgvProtocol.setStatusEnable(true);
 
         RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
         if (rgvTaskProtocol == null) {
@@ -991,14 +1033,21 @@
 //            OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慠GV plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
             log.error("RGV plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
 
-            try{
-                DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                deviceErrorService.addDeviceError("rgv", slave.getId(), "RGVplc杩炴帴澶辫触");
-            } catch (Exception e2){
+            if (System.currentTimeMillis()-currentTimeMilliConnectRgv>1000*60*10){
+                try{
+                    DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+                    deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGVplc杩炴帴澶辫触");
+                } catch (Exception e2){
 //                log.error("e2:"+e2.getMessage());
+                }
+                if (currentTimeMilliConnectRgv == 0){
+                    currentTimeMilliConnectRgv = System.currentTimeMillis()-1000*60*10-1;
+                } else {
+                    currentTimeMilliConnectRgv = System.currentTimeMillis();
+                }
             }
         }
-        initRgv();
+        initRgv2();
 //        siemensNet.ConnectClose();
         return result;
     }
@@ -1026,6 +1075,16 @@
                 }
 
                 rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 8));
+//                rgvProtocol.setStatus((short)1);
+
+                //浣滀笟鍚姩涓�  瑙e喅浠诲姟涓嬪彂鍚庡皬杞︾姸鎬佹湭鏇存柊锛屽皬杞︾姸鎬佷笉鍙婃椂
+                if (this.wrkSign == 1 && rgvProtocol.getStatus()!=(short)1){
+                    this.wrkSign = 0;
+                }
+                if (this.wrkSign == 1){
+                    rgvProtocol.setStatus((short)110);
+                }
+
                 rgvProtocol.setTaskNo((long)siemensNet.getByteTransform().TransInt32(result.Content, 10));
 
                 rgvProtocol.setRgvNo((int)siemensNet.getByteTransform().TransInt16(result.Content, 14));
@@ -1044,8 +1103,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()));
 //                // 宸ヤ綅1澶嶄綅淇″彿
 //                if (rgvProtocol.getStatusType().equals(RgvStatusType.WAITING)
@@ -1079,7 +1140,7 @@
 
                         try{
                             DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                            deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV plc鏁版嵁搴撴洿鏂板け璐�");
+                            deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV plc鏁版嵁搴撴洿鏂板け璐�");
                         } catch (Exception e2){
 //                            log.error("e2:"+e2.getMessage());
                         }
@@ -1093,26 +1154,29 @@
                 RgvStatusCache.updateRgvStatus(rgvProtocol);
 
             } else {
-                initRgv();
                 connectRgv = false;
+                connectRgv2 = false;
+                initRgv();
 //                OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
                 log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
 
                 try{
                     DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                    deviceErrorService.addDeviceError("rgv", slave.getId(), "璇诲彇RGV plc鐘舵�佷俊鎭け璐�");
+                    deviceErrorService.addDeviceError("rgvErr", slave.getId(), "璇诲彇RGV plc鐘舵�佷俊鎭け璐�");
                 } catch (Exception e2){
 //                    log.error("e2:"+e2.getMessage());
                 }
             }
         } catch (Exception e) {
+            connectRgv = false;
+            connectRgv2 = false;
 //            e.printStackTrace();
 //            OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
             log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
 
             try{
                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                deviceErrorService.addDeviceError("rgv", slave.getId(), "璇诲彇RGV plc鐘舵�佷俊鎭け璐�");
+                deviceErrorService.addDeviceError("rgvErr", slave.getId(), "璇诲彇RGV plc鐘舵�佷俊鎭け璐�");
             } catch (Exception e2){
 //                log.error("e2:"+e2.getMessage());
             }
@@ -1129,7 +1193,7 @@
 
             try{
                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV鍐欏叆鍛戒护涓虹┖");
+                deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV鍐欏叆鍛戒护涓虹┖");
             } catch (Exception e2){
 //                log.error("e2:"+e2.getMessage());
             }
@@ -1137,9 +1201,8 @@
         }
 //        convertRow(command);
 //        taskProtocol.setRgvNo(slave.getId());
-        Long[] array = new Long[11];
+//        Long[] array = new Long[11];
         OperateResult result41 = siemensNet.Write("DB100.12.0", false);
-
 //        array[0] = taskProtocol.getAckFinish1();
 //        array[1] = taskProtocol.getTaskNo();
 //        array[2] = taskProtocol.getTaskMode();
@@ -1151,8 +1214,13 @@
         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 result4 = siemensNet.Write("DB100.12.0", true);
+        this.wrkSign = 1;
+
+//        log.info("浠诲姟涓嬪彂绾跨▼,灏忚溅鍙�"+ slave.getId()+"鏃堕棿鎴筹細"+System.currentTimeMillis());
+
 //        if (taskProtocol.getAckFinish1() == 0) {
 //            short commandFinish = 3;  //宸ヤ綅1銆�2浠诲姟鍚屾椂鍐欏叆
 //            Thread.sleep(100L);
@@ -1180,6 +1248,7 @@
         } catch (Exception ignore) {
         }
 
+        readStatus();
         if (result != null && result.IsSuccess) {
 //            Thread.sleep(50);
 //            this.readStatus();
@@ -1188,7 +1257,7 @@
 
             try{
                 DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
-                deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV 鍛戒护涓嬪彂"+JSON.toJSON(taskProtocol));
+                deviceErrorService.addDeviceError("rgvWrite", slave.getId(), "RGV 鍛戒护涓嬪彂"+JSON.toJSON(taskProtocol));
             } catch (Exception e2){
 //                log.error("e2:"+e2.getMessage());
             }
@@ -1208,6 +1277,7 @@
         OperateResult result1 = siemensNet.Write("DB100.4", (short) 0);
         OperateResult result2 = siemensNet.Write("DB100.6", (int) 0);
         OperateResult result3 = siemensNet.Write("DB100.10", (short) 0); // 鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級    true:宸�   false:鍙�
+        log.info("浠诲姟瀹屾垚涓嬪彂绾跨▼,灏忚溅鍙�"+ slave.getId()+"鏃堕棿鎴筹細"+System.currentTimeMillis());
 
         try {
             // 鏃ュ織璁板綍
@@ -1244,6 +1314,14 @@
     }
 
 
+    /**
+     * 娓呴櫎浣滀笟鍚姩涓�
+     */
+    @Override
+    public void setWrkSign() {
+        this.wrkSign = 0;
+    }
+
     public void setDelRgvTask() {
         delRgvTask = true;
     }

--
Gitblit v1.9.1