From f107eaf4d1857d2230a5bc6983e4beb7fb811aa1 Mon Sep 17 00:00:00 2001
From: whycq <you@example.com>
Date: 星期六, 08 七月 2023 22:06:13 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/bfwcs6' into bfwcs6

---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java |   47 +++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 45 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index a5d6264..a308273 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -228,6 +228,22 @@
             return false;
         }
 
+        //涓嬪彂鍓嶅厠闅嗕竴浠�
+        CrnCommand crnCommand = new CrnCommand();
+        crnCommand.setCrnNo(command.getCrnNo());
+        crnCommand.setAckFinish(command.getAckFinish());
+        crnCommand.setTaskNo(command.getTaskNo());
+        crnCommand.setTaskMode(command.getTaskMode());
+        crnCommand.setSourcePosX(command.getSourcePosX());
+        crnCommand.setSourcePosY(command.getSourcePosY());
+        crnCommand.setSourcePosZ(command.getSourcePosZ());
+        crnCommand.setDestinationPosX(command.getDestinationPosX());
+        crnCommand.setDestinationPosY(command.getDestinationPosY());
+        crnCommand.setDestinationPosZ(command.getDestinationPosZ());
+        crnCommand.setSourceStaNo(command.getSourceStaNo());
+        crnCommand.setDestinationStaNo(command.getDestinationStaNo());
+        crnCommand.setCommand(command.getCommand());
+
 //        convertRow(command);
         command.setCrnNo(slave.getId());
         short[] array = new short[10];
@@ -243,6 +259,14 @@
         array[9] = command.getCommand();
         OperateResult result = siemensNet.Write("DB100.0", array);
 
+        if(!result.IsSuccess){
+            log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(crnCommand));
+            MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand));
+            Thread.sleep(100);
+            readStatus();
+            return false;
+        }
+
         //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
         Thread.sleep(200);
         OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20);
@@ -256,12 +280,19 @@
             one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12));
             one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14));
             one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16));
-            if (command.getTaskNo()!=one.getTaskNo() || command.getTaskMode()!=one.getTaskMode()
+            if (!command.getTaskNo().equals(one.getTaskNo()) || command.getTaskMode()!=one.getTaskMode()
                 || command.getSourcePosX()!=one.getSourcePosX() ||  command.getSourcePosY()!=one.getSourcePosY()
                 || command.getSourcePosZ()!=one.getSourcePosZ() || command.getDestinationPosX()!=one.getDestinationPosX()
                 || command.getDestinationPosY()!=one.getDestinationPosY() || command.getDestinationPosZ()!=one.getDestinationPosZ()
             ){
                 News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+                News.error("鍫嗗灈鏈哄懡浠ゅ洖璇诲け璐ュ悗锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(crnCommand));
+                MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand));
+                Thread.sleep(100);
+                readStatus();
+                return false;
+            }else{
+                News.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
             }
         }
 
@@ -270,7 +301,19 @@
                 short commandFinish = 1;
                 Thread.sleep(300);
                 News.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鎴愬姛锛屽紑濮嬪啓纭浣峓id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
-                result = siemensNet.Write("DB100.18", commandFinish);
+                Integer counts = 0;
+                while(true) {
+                    result = siemensNet.Write("DB100.18", commandFinish);
+                    if(result.IsSuccess){
+                        break;
+                    } else {
+                        counts++;
+                        if(counts>5){
+                            break;
+                        }
+                    }
+                    Thread.sleep(300);
+                }
             }
         }
 

--
Gitblit v1.9.1