From ef4eec8e48c109fb6612a03608c291919745614c Mon Sep 17 00:00:00 2001
From: zhangchao <zc857179121@qq.com>
Date: 星期五, 30 八月 2024 18:42:46 +0800
Subject: [PATCH] 对照协议调整

---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java |  124 ++++++++++++++++++++++------------------
 1 files changed, 68 insertions(+), 56 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 57dd5a6..04f881f 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -79,12 +79,12 @@
                         command.setTaskNo((short) 0); // 宸ヤ綔鍙�
                         command.setAckFinish((short) 1);  // 浠诲姟瀹屾垚纭浣�
                         command.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡
-                        command.setSourcePosX((short)0);     // 婧愬簱浣嶆帓
-                        command.setSourcePosY((short)0);     // 婧愬簱浣嶅垪
-                        command.setSourcePosZ((short)0);     // 婧愬簱浣嶅眰
-                        command.setDestinationPosX((short)0);     // 鐩爣搴撲綅鎺�
-                        command.setDestinationPosY((short)0);     // 鐩爣搴撲綅鍒�
-                        command.setDestinationPosZ((short)0);     // 鐩爣搴撲綅灞�
+                        command.setSourcePosX((short) 0);     // 婧愬簱浣嶆帓
+                        command.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
+                        command.setSourcePosZ((short) 0);     // 婧愬簱浣嶅眰
+                        command.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
+                        command.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
+                        command.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
                         write(command);
                         break;
                     default:
@@ -107,14 +107,14 @@
         }
         crnProtocol.setMode((short) -1);
 //        crnProtocol.setTaskNo((short)0);
-        crnProtocol.setStatus((short)-1);
-        crnProtocol.setBay((short)0);
-        crnProtocol.setLevel((short)0);
+        crnProtocol.setStatus((short) -1);
+        crnProtocol.setBay((short) 0);
+        crnProtocol.setLevel((short) 0);
         crnProtocol.setForkPos((short) -1);
         crnProtocol.setLiftPos((short) -1);
-        crnProtocol.setWalkPos((short)0);
-        crnProtocol.setLoaded((short)0);
-        crnProtocol.setAlarm((short)0);
+        crnProtocol.setWalkPos((short) 0);
+        crnProtocol.setLoaded((short) 0);
+        crnProtocol.setAlarm((short) 0);
         crnProtocol.setxSpeed((short) 0);
         crnProtocol.setySpeed((short) 0);
         crnProtocol.setzSpeed((short) 0);
@@ -131,13 +131,13 @@
         siemensNet.setRack(slave.getRack().byteValue());
         siemensNet.setSlot(slave.getSlot().byteValue());
         OperateResult connect = siemensNet.ConnectServer();
-        if(connect.IsSuccess){
+        if (connect.IsSuccess) {
             result = true;
-            OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戝爢鍨涙満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()));
-            News.info("SiemensCrn"+" - 1"+" - 鍫嗗灈鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝爢鍨涙満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()));
+            News.info("SiemensCrn" + " - 1" + " - 鍫嗗灈鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
         } else {
             OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝爢鍨涙満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()));
-            News.error("SiemensCrn"+" - 2"+" - 鍫嗗灈鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+            News.error("SiemensCrn" + " - 2" + " - 鍫嗗灈鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
             initCrn();
         }
 //        siemensNet.ConnectClose();
@@ -147,7 +147,7 @@
     /**
      * 璇诲彇鐘舵��
      */
-    private void readStatus(){
+    private void readStatus() {
         try {
             OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 66);
             if (result.IsSuccess) {
@@ -185,16 +185,16 @@
                 crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 62));
 
 
-                OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+                OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), slave.getId()));
 
                 // 澶嶄綅淇″彿
                 if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
                     if (resetFlag) {
-                        if(crnProtocol.getTaskNo()==9999){
+                        if (crnProtocol.getTaskNo() == 9999) {
                             backHpFlag = false;
                         }
                         CrnCommand crnCommand = new CrnCommand();
-                        crnCommand.setAckFinish((short)1);
+                        crnCommand.setAckFinish((short) 1);
                         if (write(crnCommand)) {
                             resetFlag = false;
                         }
@@ -206,21 +206,22 @@
                     BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
                     BasCrnp basCrnp = new BasCrnp();
                     basCrnp.setCrnNo(slave.getId());
-                    basCrnp.setCrnSts((int)crnProtocol.getMode());
-                    if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){
-                        News.error("SiemensCrn"+" - 3"+" - 鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+                    basCrnp.setCrnSts((int) crnProtocol.getMode());
+                    if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))) {
+                        News.error("SiemensCrn" + " - 3" + " - 鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
                     }
-                } catch (Exception ignore){}
+                } catch (Exception ignore) {
+                }
 
             } else {
                 initCrn();
                 OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満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()));
-                News.error("SiemensCrn"+" - 4"+" - 璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+                News.error("SiemensCrn" + " - 4" + " - 璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
             }
         } catch (Exception e) {
             e.printStackTrace();
             OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-            News.error("SiemensCrn"+" - 5"+" - 璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+            News.error("SiemensCrn" + " - 5" + " - 璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
             initCrn();
         }
     }
@@ -239,9 +240,10 @@
      */
     private boolean write(CrnCommand command) throws InterruptedException {
         if (null == command) {
-            News.error("SiemensCrn"+" - 6"+" - 鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
+            News.error("SiemensCrn" + " - 6" + " - 鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
             return false;
         }
+        command.setCommand((short) 1);
         System.out.println("------------------");
         System.out.println(command);
 //        convertRow(command);
@@ -261,8 +263,7 @@
         array[11] = command.getDestinationPosXTwo();
         array[12] = command.getDestinationPosYTwo();
         array[13] = command.getDestinationPosZTwo();
-        //array[14] = command.getCommand();
-        array[14] = 1;
+        array[14] = command.getCommand();
         array[15] = command.getAckFinish();
 
 //        array[9] = command.getSourceStaNo();
@@ -277,9 +278,9 @@
         Thread.sleep(200);
         int writeCount = 1;
         do {
-            try{
-                if(!result.IsSuccess){
-                    log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSONString(command),writeCount);
+            try {
+                if (!result.IsSuccess) {
+                    log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSONString(command), writeCount);
                     result = siemensNet.Write("DB100.0", array);
                     Thread.sleep(100);
                     writeCount++;
@@ -296,56 +297,66 @@
                     one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12));
                     one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14));
                     one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16));
+                    one.setSourcePosXTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 18));
+                    one.setSourcePosYTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 20));
+                    one.setSourcePosZTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 22));
+                    one.setDestinationPosXTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 24));
+                    one.setDestinationPosYTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 26));
+                    one.setDestinationPosZTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 28));
+                    one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 30));
                     if (!command.getTaskNo().equals(one.getTaskNo()) || !command.getTaskMode().equals(one.getTaskMode())
                             || !command.getSourcePosX().equals(one.getSourcePosX()) || !command.getSourcePosY().equals(one.getSourcePosY())
                             || !command.getSourcePosZ().equals(one.getSourcePosZ()) || !command.getDestinationPosX().equals(one.getDestinationPosX())
                             || !command.getDestinationPosY().equals(one.getDestinationPosY()) || !command.getDestinationPosZ().equals(one.getDestinationPosZ())
-                    ){
-                        try{
-                            log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSONString(command),JSON.toJSONString(one));
-                        }catch (Exception e){
-                            try{
-                                log.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSONString(command),JSON.toJSONString(resultRead));
-                            }catch (Exception e1){
+                            || !command.getSourcePosXTwo().equals(one.getSourcePosXTwo()) || !command.getSourcePosYTwo().equals(one.getSourcePosYTwo())
+                            || !command.getSourcePosZTwo().equals(one.getSourcePosZTwo()) || !command.getDestinationPosXTwo().equals(one.getDestinationPosXTwo())
+                            || !command.getDestinationPosYTwo().equals(one.getDestinationPosYTwo()) || !command.getDestinationPosZTwo().equals(one.getDestinationPosZTwo())
+                    ) {
+                        try {
+                            log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSONString(command), JSON.toJSONString(one));
+                        } catch (Exception e) {
+                            try {
+                                log.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSONString(command), JSON.toJSONString(resultRead));
+                            } catch (Exception e1) {
                                 log.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSONString(command));
                             }
                         }
-                        try{
+                        try {
                             Thread.sleep(100);
-                        }catch (Exception e){
+                        } catch (Exception e) {
 
                         }
-                        log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSONString(command),writeCount);
+                        log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSONString(command), writeCount);
                         result = siemensNet.Write("DB100.0", array);
                         writeCount++;
                         continue;
                     } else {
-                        log.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSONString(command),JSON.toJSONString(one));
+                        log.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSONString(command), JSON.toJSONString(one));
                         break;
                     }
                 }
-            }catch (Exception e){
-                log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�,寮傚父锛�"+e);
+            } catch (Exception e) {
+                log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�,寮傚父锛�" + e);
             }
             writeCount++;
-        } while (writeCount<6);
+        } while (writeCount < 6);
 
         if (command.getAckFinish() == 0) {
             short commandFinish = 1;
             Thread.sleep(100L);
             result = siemensNet.Write("DB100.30", commandFinish);
             int signFinish = 1;
-            while (signFinish<5){
+            while (signFinish < 5) {
                 OperateResultExOne<byte[]> result10018 = siemensNet.Read("DB100.30", (short) 2);
                 short transInt16 = siemensNet.getByteTransform().TransInt16(result10018.Content, 0);
-                if (transInt16 != commandFinish){
-                    log.info("涓嬪彂DB100.30  鍥炶澶辫触" + "commandFinish:"+commandFinish);
-                    log.info("涓嬪彂DB100.30  鍥炶澶辫触" + "array:"+ JSON.toJSONString(array));
+                if (transInt16 != commandFinish) {
+                    log.info("涓嬪彂DB100.30  鍥炶澶辫触" + "commandFinish:" + commandFinish);
+                    log.info("涓嬪彂DB100.30  鍥炶澶辫触" + "array:" + JSON.toJSONString(array));
                     result = siemensNet.Write("DB100.18", commandFinish);
                     signFinish++;
-                }else {
-                    log.info("涓嬪彂DB100.30" + "commandFinish:"+commandFinish);
-                    log.info("涓嬪彂DB100.30" + "array:"+ JSON.toJSONString(array));
+                } else {
+                    log.info("涓嬪彂DB100.30" + "commandFinish:" + commandFinish);
+                    log.info("涓嬪彂DB100.30" + "array:" + JSON.toJSONString(array));
                     break;
                 }
             }
@@ -379,17 +390,18 @@
                     null    // 淇敼浜哄憳
             );
             bean.save(basCrnOpt);
-        } catch (Exception ignore) {}
+        } catch (Exception ignore) {
+        }
 
         if (result != null && result.IsSuccess) {
             Thread.sleep(200);
             this.readStatus();
-            News.info("SiemensCrn"+" - 7"+" - 鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
+            News.info("SiemensCrn" + " - 7" + " - 鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
             OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
             return true;
         } else {
             OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-            News.error("SiemensCrn"+" - 8"+" - 鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+            News.error("SiemensCrn" + " - 8" + " - 鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
             return false;
         }
     }

--
Gitblit v1.9.1