From 7b8021d7ff94015d7034ead10fea5006d0032301 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期五, 24 四月 2026 09:13:51 +0800
Subject: [PATCH] WCS功能完善

---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java |  543 ++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 369 insertions(+), 174 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 6986acf..64f0104 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -5,22 +5,22 @@
 import HslCommunication.Profinet.Siemens.SiemensPLCS;
 import HslCommunication.Profinet.Siemens.SiemensS7Net;
 import com.alibaba.fastjson.JSON;
-import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.SpringUtils;
+import com.zy.core.CrnThread;
+import com.zy.core.cache.MessageQueue;
+import com.zy.core.cache.OutputQueue;
+import com.zy.core.enums.CrnTaskModeType;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.model.CrnSlave;
+import com.zy.core.model.Task;
+import com.zy.core.model.command.CrnCommand;
+import com.zy.core.model.protocol.CrnProtocol;
 import com.zy.entity.BasCrnOpt;
 import com.zy.entity.BasCrnp;
 import com.zy.service.BasCrnOptService;
 import com.zy.service.BasCrnpService;
 import com.zy.utils.News;
-import com.zy.core.CrnThread;
-import com.zy.core.cache.MessageQueue;
-import com.zy.core.cache.OutputQueue;
-import com.zy.core.enums.*;
-import com.zy.core.model.CrnSlave;
-import com.zy.core.model.Task;
-import com.zy.core.model.command.CrnCommand;
-import com.zy.core.model.protocol.CrnProtocol;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 
@@ -80,15 +80,16 @@
                             command = new CrnCommand();
                         }
                         command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-                        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
+                        command.setTaskNo((short)0); // 宸ヤ綔鍙�
                         command.setAckFinish((short) 1);  // 浠诲姟瀹屾垚纭浣�
-                        command.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡
+                        command.setTaskMode(CrnTaskModeType.RESET); // 浠诲姟妯″紡
                         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.setCommand((short)0);
                         write(command);
                         break;
                     default:
@@ -194,23 +195,57 @@
                 crnProtocol.setyDistance(siemensNet.getByteTransform().TransSingle(result.Content, 44));
                 crnProtocol.setxDuration(siemensNet.getByteTransform().TransSingle(result.Content, 48));
                 crnProtocol.setyDuration(siemensNet.getByteTransform().TransSingle(result.Content, 52));
+//                crnProtocol.setTaskReceive(siemensNet.getByteTransform().TransInt16(result.Content, 60));
 
                 OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+//                if (crnProtocol.getStatus() == 0 && crnProtocol.getTaskReceive() == 0) {
+//                    OperateResultExOne<byte[]> taskResult = siemensNet.Read("DB100.0", (short) 20);
+//                    if (taskResult.IsSuccess) {
+//                        short taskNo = siemensNet.getByteTransform().TransInt16(taskResult.Content, 2);
+//                        short taskMode = siemensNet.getByteTransform().TransInt16(taskResult.Content, 4);
+//                        short sourcePosX = siemensNet.getByteTransform().TransInt16(taskResult.Content, 6);
+//                        short sourcePosY = siemensNet.getByteTransform().TransInt16(taskResult.Content, 8);
+//                        short sourcePosZ = siemensNet.getByteTransform().TransInt16(taskResult.Content, 10);
+//                        short destinationPosX = siemensNet.getByteTransform().TransInt16(taskResult.Content, 12);
+//                        short destinationPosY = siemensNet.getByteTransform().TransInt16(taskResult.Content, 14);
+//                        short destinationPosZ = siemensNet.getByteTransform().TransInt16(taskResult.Content, 16);
+//                        short confirm = siemensNet.getByteTransform().TransInt16(taskResult.Content, 18);
+//
+//                        if(taskNo != 0 || taskMode != 0 || sourcePosX != 0 || sourcePosY != 0 || sourcePosZ != 0 || destinationPosX != 0 || destinationPosY != 0 || destinationPosZ != 0 || confirm != 0) {
+//                            short[] array = new short[10];
+//                            array[0] = (short) 0;
+//                            array[1] = (short) 0;
+//                            array[2] = (short) 0;
+//                            array[3] = (short) 0;
+//                            array[4] = (short) 0;
+//                            array[5] = (short) 0;
+//                            array[6] = (short) 0;
+//                            array[7] = (short) 0;
+//                            array[8] = (short) 0;
+//                            array[9] = (short) 0;
+//                            siemensNet.Write("DB100.0", array);
+//
+//                            // 鏈�鍚庝换鍔″畬鎴愭椂闂�
+//                            basCrnp.setModiTime(new Date());
+//                            Thread.sleep(300);
+//                        }
+//                    }
+//                }
 
                 // 澶嶄綅淇″彿
-                if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
-                    News.info("{}鍙峰爢鍨涙満锛屾敹鍒颁换鍔}瀹屾垚淇″彿",crnProtocol.getCrnNo(),crnProtocol.getTaskNo());
-                    if (resetFlag) {
-                        if(crnProtocol.getTaskNo()==9999){
-                            backHpFlag = false;
-                        }
-                        CrnCommand crnCommand = new CrnCommand();
-                        crnCommand.setAckFinish((short)1);
-                        if (write(crnCommand)) {
-                            resetFlag = false;
-                        }
-                    }
-                }
+//                if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
+//                    News.info("{}鍙峰爢鍨涙満锛屾敹鍒颁换鍔}瀹屾垚淇″彿",crnProtocol.getCrnNo(),crnProtocol.getTaskNo());
+//                    if (resetFlag) {
+//                        if(crnProtocol.getTaskNo()==9999){
+//                            backHpFlag = false;
+//                        }
+//                        CrnCommand crnCommand = new CrnCommand();
+//                        crnCommand.setAckFinish((short)1);
+//                        if (write(crnCommand)) {
+//                            resetFlag = false;
+//                        }
+//                    }
+//                }
 
                 try {
                     // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
@@ -244,140 +279,297 @@
             News.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
             return false;
         }
-        // 鍚戝爢鍨涙満鍙戜换鍔″墠鐨勫爢鍨涙満鐘舵��
-        try{
-            OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 24);
-            if (resultRead.IsSuccess) {
-                CrnCommand one = new CrnCommand();
-                one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2));
-                one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4));
-                one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6));
-                one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
-                one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10));
-                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().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())
-                ){
-                    News.error("涓嬪彂鍓嶏細[id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
-                } else {
-                    News.info("涓嬪彂鍓嶏細[id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+
+        // 浠诲姟瀹屾垚纭浣嶆槸鍚︾疆0
+        int writeAck = 0;
+        boolean commandResult = false;
+        do {
+            OperateResult result = siemensNet.Write("DB100.0", (short) 0);
+            if (result.IsSuccess) {
+                OperateResultExOne<byte[]> commandReadResult = siemensNet.Read("DB100.0", (short) 2);
+                if (commandReadResult.IsSuccess) {
+                    short commandRead = siemensNet.getByteTransform().TransInt16(commandReadResult.Content, 0);
+                    if (commandRead == 1) {
+                        Thread.sleep(500);
+                    } else {
+                        commandResult = true;
+                        break;
+                    }
                 }
             }
-        }catch (Exception e){
-            News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�");
-        }
+            writeAck++;
+            Thread.sleep(200);
+        } while (writeAck < 5);
 
-        command.setCrnNo(slave.getId());
-
-        short[] array = new short[10];
-        array[0] = command.getAckFinish(); // 浠诲姟瀹屾垚纭浣�
-        array[1] = command.getTaskNo();  // 浠诲姟鍙�
-        array[2] = command.getTaskMode();  // 妯″紡
-        array[3] = command.getSourcePosX(); // 婧愪綅缃帓鍙�
-        array[4] = command.getSourcePosY(); // 婧愪綅缃垪鍙�
-        array[5] = command.getSourcePosZ(); // 婧愪綅缃眰鍙�
-        array[6] = command.getDestinationPosX();  // 鐩爣浣嶇疆鎺掑彿
-        array[7] = command.getDestinationPosY(); // 鐩爣浣嶇疆鍒楀彿
-        array[8] = command.getDestinationPosZ(); // 鐩爣浣嶇疆灞傚彿
-        array[9] = command.getCommand();
-//        array[10] = 0;   //澶囩敤1
-
-        OperateResult result = siemensNet.Write("DB100.0", array);
-        News.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), array);
-
-        if (!result.IsSuccess) {
-            News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
-            MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command));
-            Thread.sleep(100);
-            readStatus();
+        if (!commandResult) {
+            News.error("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}" + command.getCrnNo() + "浠诲姟鐘舵�佷綅寮傚父");
             return false;
         }
 
-        //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
-        Thread.sleep(200);
-        try{
-            OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 24);
-            if (resultRead.IsSuccess) {
-                CrnCommand one = new CrnCommand();
-                one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2));
-                one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4));
-                one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6));
-                one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
-                one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10));
-                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.setTraySize(siemensNet.getByteTransform().TransBool(resultRead.Content, 22));
-                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())
+        if(command.getTaskModeType() == CrnTaskModeType.RESET) {
+            short[] array = new short[9];
+            array[0] = command.getAckFinish();
+            array[1] = (short) 0;
+            array[2] = (short) 0;
+            array[3] = (short) 0;
+            array[4] = (short) 0;
+            array[5] = (short) 0;
+            array[6] = (short) 0;
+            array[7] = (short) 0;
+            array[8] = (short) 0;
 
-                ){
-                    try{
-                        News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
-                    }catch (Exception e){
-                        try{
-                            News.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSON(command),JSON.toJSON(resultRead));
-                        }catch (Exception e1){
-                            News.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+            // 鍐欏叆浠诲姟鏁版嵁
+            int idx = 0;
+            boolean commandDataResult = false;
+            do {
+                OperateResult result = siemensNet.Write("DB100.0", array);
+                if (result.IsSuccess) {
+                    OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20);
+                    if (resultRead.IsSuccess) {
+                        short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2);
+                        short taskMode = siemensNet.getByteTransform().TransInt16(resultRead.Content, 4);
+                        short sourcePosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 6);
+                        short sourcePosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 8);
+                        short sourcePosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 10);
+                        short destinationPosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 12);
+                        short destinationPosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 14);
+                        short destinationPosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 16);
+                        if (taskNo != 0 || taskMode != 0 || sourcePosX != 0 || sourcePosY != 0 || sourcePosZ != 0 || destinationPosX != 0 || destinationPosY != 0 || destinationPosZ != 0) {
+                            result = siemensNet.Write("DB100.0", array);
+                        } else {
+                            commandDataResult = true;
+                            break;
                         }
                     }
-                    News.error("鍫嗗灈鏈哄懡浠ゅ洖璇诲け璐ュ悗锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
-                    MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command));
-                    Thread.sleep(100);
-                    readStatus();
-                    return false;
-                } else {
-                    News.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
                 }
+                idx++;
+                Thread.sleep(200);
+            } while (idx < 5);
+
+            if (!commandDataResult) {
+                News.error("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}" + command.getCrnNo() + "鍫嗗灈鏈哄啓鍏ヤ换鍔℃暟鎹け璐�");
+                return false;
             }
-        }catch (Exception e){
-            News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�");
-        }
-
-
-        if (command.getAckFinish() == 0) {
-            if (result.IsSuccess) {
-                Thread.sleep(300);
-                //浠诲姟涓嬪彂娆℃暟
-                int writeCount2 = 0;
-
-                do {
-                    writeCount2++;
-                    short commandFinish = (short) 1;
-                    result = siemensNet.Write("DB100.18", commandFinish);
-                    if(result.IsSuccess){
-                        //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
-                        Thread.sleep(200);
-                        OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.18", (short) 2);
-                        if (resultRead.IsSuccess) {
-                            commandFinish=siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
-                            if (commandFinish != 1){
-                                News.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
-                            }else{
-                                //浠诲姟鍛戒护鍐欏叆鎴愬姛
-                                News.info("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍥炶鎴愬姛锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
-                                break;
-                            }
-                        }else {
-                            News.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍥炶澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
-                        }
-                    } else {
-                        News.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍐欏叆澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
-                    }
-                }while (writeCount2<5);
-            }
-        } else {
             BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
             BasCrnp basCrnp = basCrnpService.selectById(slave.getId());
             basCrnp.setModiTime(new Date());
             basCrnpService.updateById(basCrnp);
+
+        } else {
+            short[] array = new short[9];
+            array[0] = command.getAckFinish();
+            array[1] = command.getTaskNo();
+            array[2] = command.getTaskMode();
+            array[3] = command.getSourcePosX();
+            array[4] = command.getSourcePosY();
+            array[5] = command.getSourcePosZ();
+            array[6] = command.getDestinationPosX();
+            array[7] = command.getDestinationPosY();
+            array[8] = command.getDestinationPosZ();
+
+            // 鍐欏叆浠诲姟鏁版嵁
+            int idx = 0;
+            boolean commandDataResult = false;
+            do {
+                OperateResult result = siemensNet.Write("DB100.0", array);
+                if (result.IsSuccess) {
+                    OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20);
+                    if (resultRead.IsSuccess) {
+                        short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2);
+                        short taskMode = siemensNet.getByteTransform().TransInt16(resultRead.Content, 4);
+                        short sourcePosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 6);
+                        short sourcePosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 8);
+                        short sourcePosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 10);
+                        short destinationPosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 12);
+                        short destinationPosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 14);
+                        short destinationPosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 16);
+                        if (taskNo != command.getTaskNo()
+                                || taskMode != command.getTaskMode()
+                                || sourcePosX != command.getSourcePosX()
+                                || sourcePosY != command.getSourcePosY()
+                                || sourcePosZ != command.getSourcePosZ()
+                                || destinationPosX != command.getDestinationPosX()
+                                || destinationPosY != command.getDestinationPosY()
+                                || destinationPosZ != command.getDestinationPosZ()) {
+                            result = siemensNet.Write("DB100.0", array);
+                        } else {
+                            commandDataResult = true;
+                            break;
+                        }
+                    }
+                }
+                idx++;
+                Thread.sleep(200);
+            } while (idx < 5);
+
+            if (!commandDataResult) {
+                News.error("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}" + command.getCrnNo() + "鍫嗗灈鏈哄啓鍏ヤ换鍔℃暟鎹け璐�");
+                return false;
+            }
+
+            // 涓嬪彂浠诲姟涓嬪彂纭浣�
+            int writeConfirmIdx = 0;
+            boolean commandConfirmResult = false;
+            do {
+                OperateResult result = siemensNet.Write("DB100.18", (short) 1);
+                if (result.IsSuccess) {
+                    OperateResultExOne<byte[]> commandReadResult = siemensNet.Read("DB100.18", (short) 2);
+                    if (commandReadResult.IsSuccess) {
+                        short commandRead = siemensNet.getByteTransform().TransInt16(commandReadResult.Content, 0);
+                        if (commandRead == 0) {
+                            Thread.sleep(500);
+                        } else {
+                            commandConfirmResult = true;
+                            break;
+                        }
+                    }
+                }
+                writeConfirmIdx++;
+                Thread.sleep(200);
+            } while (writeConfirmIdx < 5);
+
+            if (!commandConfirmResult) {
+                News.error("鍫嗗灈鏈哄啓鍏ョ‘璁ゆ暟鎹け璐� ===>> [id:{}]", command.getCrnNo());
+                return false;
+            }
         }
+        // 鍚戝爢鍨涙満鍙戜换鍔″墠鐨勫爢鍨涙満鐘舵��
+//        try{
+//            OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 24);
+//            if (resultRead.IsSuccess) {
+//                CrnCommand one = new CrnCommand();
+//                one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2));
+//                one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4));
+//                one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6));
+//                one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
+//                one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10));
+//                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().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())
+//                ){
+//                    News.error("涓嬪彂鍓嶏細[id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+//                } else {
+//                    News.info("涓嬪彂鍓嶏細[id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+//                }
+//            }
+//        }catch (Exception e){
+//            News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�");
+//        }
+//
+//        command.setCrnNo(slave.getId());
+//
+//        short[] array = new short[10];
+//        array[0] = command.getAckFinish(); // 浠诲姟瀹屾垚纭浣�
+//        array[1] = command.getTaskNo();  // 浠诲姟鍙�
+//        array[2] = command.getTaskMode();  // 妯″紡
+//        array[3] = command.getSourcePosX(); // 婧愪綅缃帓鍙�
+//        array[4] = command.getSourcePosY(); // 婧愪綅缃垪鍙�
+//        array[5] = command.getSourcePosZ(); // 婧愪綅缃眰鍙�
+//        array[6] = command.getDestinationPosX();  // 鐩爣浣嶇疆鎺掑彿
+//        array[7] = command.getDestinationPosY(); // 鐩爣浣嶇疆鍒楀彿
+//        array[8] = command.getDestinationPosZ(); // 鐩爣浣嶇疆灞傚彿
+//        array[9] = command.getCommand();
+////        array[10] = 0;   //澶囩敤1
+//
+//        OperateResult result = siemensNet.Write("DB100.0", array);
+//        News.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), array);
+//
+//        if (!result.IsSuccess) {
+//            News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+//            MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command));
+//            Thread.sleep(100);
+//            readStatus();
+//            return false;
+//        }
+//
+//        //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
+//        Thread.sleep(200);
+//        try{
+//            OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 24);
+//            if (resultRead.IsSuccess) {
+//                CrnCommand one = new CrnCommand();
+//                one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2));
+//                one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4));
+//                one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6));
+//                one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
+//                one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10));
+//                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.setTraySize(siemensNet.getByteTransform().TransBool(resultRead.Content, 22));
+//                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{
+//                        News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+//                    }catch (Exception e){
+//                        try{
+//                            News.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSON(command),JSON.toJSON(resultRead));
+//                        }catch (Exception e1){
+//                            News.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+//                        }
+//                    }
+//                    News.error("鍫嗗灈鏈哄懡浠ゅ洖璇诲け璐ュ悗锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+//                    MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command));
+//                    Thread.sleep(100);
+//                    readStatus();
+//                    return false;
+//                } else {
+//                    News.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+//                }
+//            }
+//        }catch (Exception e){
+//            News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�");
+//        }
+//
+//
+//        if (command.getAckFinish() == 0) {
+//            if (result.IsSuccess) {
+//                Thread.sleep(300);
+//                //浠诲姟涓嬪彂娆℃暟
+//                int writeCount2 = 0;
+//
+//                do {
+//                    writeCount2++;
+//                    short commandFinish = (short) 1;
+//                    result = siemensNet.Write("DB100.18", commandFinish);
+//                    if(result.IsSuccess){
+//                        //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
+//                        Thread.sleep(200);
+//                        OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.18", (short) 2);
+//                        if (resultRead.IsSuccess) {
+//                            commandFinish=siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
+//                            if (commandFinish != 1){
+//                                News.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+//                            }else{
+//                                //浠诲姟鍛戒护鍐欏叆鎴愬姛
+//                                News.info("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍥炶鎴愬姛锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+//                                break;
+//                            }
+//                        }else {
+//                            News.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍥炶澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+//                        }
+//                    } else {
+//                        News.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍐欏叆澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+//                    }
+//                }while (writeCount2<5);
+//            }
+//        } else {
+//            BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
+//            BasCrnp basCrnp = basCrnpService.selectById(slave.getId());
+//            basCrnp.setModiTime(new Date());
+//            basCrnpService.updateById(basCrnp);
+//        }
+//        if (command.getAckFinish() == 1) {
+
+//        }
 
         try {
             // 鏃ュ織璁板綍
@@ -402,16 +594,16 @@
             bean.insert(basCrnOpt);
         } catch (Exception ignore) {}
 
-        if (result.IsSuccess) {
-            this.readStatus();
+//        if (result.IsSuccess) {
+//            this.readStatus();
             News.info("鍫嗗灈鏈哄懡浠や笅鍙慬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("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-            return false;
-        }
+//        } 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("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+//            return false;
+//        }
     }
 
     @Override
@@ -424,8 +616,8 @@
     /*****************************************************************************************/
     public static void main(String[] args) throws InterruptedException {
         CrnSlave slave = new CrnSlave();
-        slave.setId(1);
-        slave.setIp("10.10.10.1");
+        slave.setId(3);
+        slave.setIp("10.10.10.100");
         slave.setRack(0);
         slave.setSlot(0);
         SiemensCrnThread crnThread = new SiemensCrnThread(slave);
@@ -435,39 +627,41 @@
         Thread.sleep(3000L);
 
         // 1.鍏ュ簱 婧愬拰鐩爣閮藉彂
-//        CrnCommand command = new CrnCommand();
-//        command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙�
-//        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
+        CrnCommand command = new CrnCommand();
+        command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙�
+        command.setTaskNo((short) 80); // 宸ヤ綔鍙�
 //        command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-//        command.setTaskMode(CrnTaskModeType.PAKIN); // 浠诲姟妯″紡
-//        command.setSourcePosX((short) 1);     // 婧愬簱浣嶆帓
-//        command.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
-//        command.setSourcePosZ((short) 1);     // 婧愬簱浣嶅眰
-//        command.setDestinationPosX((short) 2);     // 鐩爣搴撲綅鎺�
-//        command.setDestinationPosY((short) 3);     // 鐩爣搴撲綅鍒�
-//        command.setDestinationPosZ((short) 1);     // 鐩爣搴撲綅灞�
-//        crnThread.write(command);
+        command.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡
+        command.setSourcePosX((short) 11);     // 婧愬簱浣嶆帓
+        command.setSourcePosY((short) 4);     // 婧愬簱浣嶅垪
+        command.setSourcePosZ((short) 1);     // 婧愬簱浣嶅眰
+        command.setDestinationPosX((short) 12);     // 鐩爣搴撲綅鎺�
+        command.setDestinationPosY((short) 5);     // 鐩爣搴撲綅鍒�
+        command.setDestinationPosZ((short) 1);     // 鐩爣搴撲綅灞�
+        command.setCommand((short) 1);     // 鐩爣搴撲綅灞�
+        crnThread.write(command);
 
         // 2.鍑哄簱 婧愬拰鐩爣閮藉彂
 //        CrnCommand command = new CrnCommand();
-//        command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙�
-//        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
-//        command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-//        command.setTaskMode(CrnTaskModeType.PAKOUT); // 浠诲姟妯″紡
-//        command.setSourcePosX((short) 2);     // 婧愬簱浣嶆帓
-//        command.setSourcePosY((short) 4);     // 婧愬簱浣嶅垪
-//        command.setSourcePosZ((short) 3);     // 婧愬簱浣嶅眰
-//        command.setDestinationPosX((short) 1);     // 鐩爣搴撲綅鎺�
-//        command.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
+//        command.setCrnNo(2); // 鍫嗗灈鏈虹紪鍙�
+//        command.setTaskNo((short) 80); // 宸ヤ綔鍙�
+////        command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+//        command.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡
+//        command.setSourcePosX((short) 5);     // 婧愬簱浣嶆帓
+//        command.setSourcePosY((short) 1);     // 婧愬簱浣嶅垪
+//        command.setSourcePosZ((short) 1);     // 婧愬簱浣嶅眰
+//        command.setDestinationPosX((short) 7);     // 鐩爣搴撲綅鎺�
+//        command.setDestinationPosY((short) 1);     // 鐩爣搴撲綅鍒�
 //        command.setDestinationPosZ((short) 1);     // 鐩爣搴撲綅灞�
+//        command.setCommand((short) 1);
 //        crnThread.write(command);
 
 
 //        // 3.搴撲綅绉昏浆   婧愬拰鐩爣閮藉彂 pass
 //        CrnCommand command = new CrnCommand();
-//        command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-//        command.setTaskNo((short) 2); // 宸ヤ綔鍙�
-//        command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+//        command.setCrnNo(2); // 鍫嗗灈鏈虹紪鍙�
+//        command.setTaskNo((short) 88); // 宸ヤ綔鍙�
+////        command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
 //        command.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
 //        command.setSourcePosX((short)2);     // 婧愬簱浣嶆帓
 //        command.setSourcePosY((short)1);     // 婧愬簱浣嶅垪
@@ -475,6 +669,7 @@
 //        command.setDestinationPosX((short)3);     // 鐩爣搴撲綅鎺�
 //        command.setDestinationPosY((short)1);     // 鐩爣搴撲綅鍒�
 //        command.setDestinationPosZ((short)1);     // 鐩爣搴撲綅灞�
+//        command.setCommand((short)1);
 //        crnThread.write(command);
 
         // 4.绔欎綅绉昏浆   婧愬拰鐩爣閮藉彂

--
Gitblit v1.9.1