From c1ef2d1fc4c0dae2bc8452924dcd77a0ff3a1ef5 Mon Sep 17 00:00:00 2001
From: cpT <1@123>
Date: 星期四, 19 六月 2025 15:02:52 +0800
Subject: [PATCH] #改造

---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java |  547 ++++++-----------------------------------------------
 1 files changed, 69 insertions(+), 478 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index ab05097..8137225 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -12,7 +12,9 @@
 import com.zy.asrs.entity.BasCrnp;
 import com.zy.asrs.service.BasCrnOptService;
 import com.zy.asrs.service.BasCrnpService;
+import com.zy.asrs.service.DeviceErrorService;
 import com.zy.core.CrnThread;
+import com.zy.core.cache.CrnErrCache;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.OutputQueue;
 import com.zy.core.enums.CrnStatusType;
@@ -21,7 +23,6 @@
 import com.zy.core.model.CrnSlave;
 import com.zy.core.model.Task;
 import com.zy.core.model.command.CrnCommand;
-import com.zy.core.model.cpmmandParam.CrnCommandParam;
 import com.zy.core.model.protocol.CrnProtocol;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
@@ -41,7 +42,6 @@
     private CrnSlave slave;
     private CrnProtocol crnProtocol;
     private boolean resetFlag = false;
-    private boolean resetFlagTwo = false;
 
     public Long sign = System.currentTimeMillis();
 
@@ -51,7 +51,7 @@
      * 鍫嗗灈鏈烘槸鍚﹀湪鍥炲師鐐硅繍鍔ㄤ腑鏍囪
      */
     private boolean backHpFlag = false;
-    private boolean backHpFlagTwo = false;
+    public Long currentTimeMilliConnectCrn= 0L;
 
     public SiemensCrnThread(CrnSlave slave) {
         this.slave = slave;
@@ -61,7 +61,6 @@
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
         this.connect();
-        sign = System.currentTimeMillis();
         while (isRunning) {
             try {
                 int step = 1;
@@ -96,32 +95,6 @@
                         command.setDestinationPosZ((short)0);     // 鐩爣搴撲綅灞�
                         write(command);
                         break;
-                    // 鍐欏叆鏁版嵁
-                    case 5:
-                        write5((CrnCommand) task.getData());
-                        break;
-                    // 澶嶄綅
-                    case 6:
-                        CrnCommand command2 = (CrnCommand) task.getData();
-                        if (null == command2) {
-                            command2 = new CrnCommand();
-                        }
-                        command2.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-                        command2.setTaskNo((short) 0); // 宸ヤ綔鍙�
-                        command2.setAckFinish((short) 1);  // 浠诲姟瀹屾垚纭浣�
-                        command2.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡
-                        command2.setSourcePosX((short)0);     // 婧愬簱浣嶆帓
-                        command2.setSourcePosY((short)0);     // 婧愬簱浣嶅垪
-                        command2.setSourcePosZ((short)0);     // 婧愬簱浣嶅眰
-                        command2.setDestinationPosX((short)0);     // 鐩爣搴撲綅鎺�
-                        command2.setDestinationPosY((short)0);     // 鐩爣搴撲綅鍒�
-                        command2.setDestinationPosZ((short)0);     // 鐩爣搴撲綅灞�
-                        write5(command2);
-                        break;
-                    // 鍙屽伐浣嶅悓鏃朵綔涓�
-                    case 9:
-                        write9((CrnCommandParam) task.getData());
-                        break;
                     default:
                         break;
                 }
@@ -144,7 +117,6 @@
         crnProtocol.setMode((short) -1);
 //        crnProtocol.setTaskNo((short)0);
         crnProtocol.setStatus((short)-1);
-        crnProtocol.setStatusTwo((short)-1);
         crnProtocol.setBay((short)0);
         crnProtocol.setLevel((short)0);
         crnProtocol.setForkPos((short) -1);
@@ -159,16 +131,6 @@
         crnProtocol.setyDistance((short) 0);
         crnProtocol.setxDuration((short) 0);
         crnProtocol.setyDuration((short) 0);
-
-        // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
-        BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
-        BasCrnp basCrnp = basCrnpService.selectById(slave.getId());
-        basCrnp.setCrnSts((int)crnProtocol.getMode());
-        basCrnp.setCrnStatusOne(-1);
-        basCrnp.setCrnStatusTwo(-1);
-        if (!basCrnpService.updateById(basCrnp)){
-            log.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
-        }
     }
 
     @Override
@@ -196,16 +158,10 @@
      */
     private void readStatus(){
         try {
-            OperateResultExOne<byte[]> result = new OperateResultExOne<byte[]>();
-            if (slave.getId()>2 && slave.getId()<6){
-                result = siemensNet.Read("DB101.0", (short) 66);
-            } else {
-                result = siemensNet.Read("DB101.0", (short) 56);
-            }
+            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 58);
             if (result.IsSuccess) {
                 if (null == crnProtocol) {
                     crnProtocol = new CrnProtocol();
-                    crnProtocol.setCrnNo(slave.getId());
                 }
                 crnProtocol.setCrnNo(slave.getId());
                 crnProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));
@@ -214,56 +170,29 @@
                 crnProtocol.setBay(siemensNet.getByteTransform().TransInt16(result.Content, 6));
                 crnProtocol.setLevel(siemensNet.getByteTransform().TransInt16(result.Content, 8));
                 crnProtocol.setForkPos(siemensNet.getByteTransform().TransInt16(result.Content, 10));
-
-                if (slave.getId()<3 || slave.getId()>5){
-                    crnProtocol.setLiftPos(siemensNet.getByteTransform().TransInt16(result.Content, 12));
-                    crnProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 14));
-                    crnProtocol.setLoaded(siemensNet.getByteTransform().TransInt16(result.Content, 16));
-                    crnProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 18));
-                    crnProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 20));
-                    crnProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 22));
-                    crnProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 24));
-                    crnProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 26));
-                    crnProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28));
-                    crnProtocol.setySpeed(siemensNet.getByteTransform().TransInt16(result.Content, 32));
-                    crnProtocol.setzSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 36));
-                    crnProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40));
-                    crnProtocol.setyDistance(siemensNet.getByteTransform().TransInt16(result.Content, 44));
-                    crnProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
-                    crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 52));
-                } else {
-                    crnProtocol.setLoaded(siemensNet.getByteTransform().TransInt16(result.Content, 12));
-
-                    crnProtocol.setTaskNoTwo(siemensNet.getByteTransform().TransInt16(result.Content, 14));
-                    crnProtocol.setStatusTwo(siemensNet.getByteTransform().TransInt16(result.Content, 16));
-                    crnProtocol.setBayTwo(siemensNet.getByteTransform().TransInt16(result.Content, 18));
-                    crnProtocol.setLevelTwo(siemensNet.getByteTransform().TransInt16(result.Content, 20));
-                    crnProtocol.setForkPosTwo(siemensNet.getByteTransform().TransInt16(result.Content, 22));
-                    crnProtocol.setLoadedTwo(siemensNet.getByteTransform().TransInt16(result.Content, 24));
-
-                    crnProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 26));
-                    crnProtocol.setWalkPosTwo(siemensNet.getByteTransform().TransInt16(result.Content, 28));
-
-                    crnProtocol.setLiftPos(siemensNet.getByteTransform().TransInt16(result.Content, 30));
-                    crnProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 32));
-
-                    crnProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 34));
-                    crnProtocol.setySpeed(siemensNet.getByteTransform().TransInt16(result.Content, 38));
-                    crnProtocol.setzSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 42));
-//                    crnProtocol.setzSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 42));
-
-                    crnProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 50));
-                    crnProtocol.setyDistance(siemensNet.getByteTransform().TransInt16(result.Content, 54));
-                    crnProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 58));
-                    crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 62));
-                }
+                crnProtocol.setLiftPos(siemensNet.getByteTransform().TransInt16(result.Content, 12));
+                crnProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 14));
+                crnProtocol.setLoaded(siemensNet.getByteTransform().TransInt16(result.Content, 16));
+                crnProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 18));
+                crnProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 20));
+                crnProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 22));
+                crnProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 24));
+                crnProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 26));
+                crnProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28));
+                crnProtocol.setySpeed(siemensNet.getByteTransform().TransInt16(result.Content, 32));
+                crnProtocol.setzSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 36));
+                crnProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40));
+                crnProtocol.setyDistance(siemensNet.getByteTransform().TransInt16(result.Content, 44));
+                crnProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
+                crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 52));
+                crnProtocol.setLaneNo((int)siemensNet.getByteTransform().TransInt16(result.Content, 56));//宸烽亾鍙�
 
                 OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
                 // 澶嶄綅淇″彿
-                if (!Cools.isEmpty(crnProtocol.getStatusType()) && (crnProtocol.getStatusType().equals(CrnStatusType.WAITING) || crnProtocol.getStatusType().equals(CrnStatusType.SEPARATE_WAITING))) {
-                    log.error("-------------------------宸ヤ綅1-------------------------绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}, 宸ヤ綔鍙凤細{}, 杞借揣鍙�:{}]==>> 鐘舵�佷负{}锛岀瓑寰呯‘璁わ紒锛�",
-                            slave.getId(),crnProtocol.getTaskNo(), crnProtocol.getLoaded()==1 ? "鏈夌墿" : "鏃犵墿",crnProtocol.getStatusType());
+                if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
+                    log.error("-------------------------------------------绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}, 宸ヤ綔鍙凤細{}, 杞借揣鍙�:{}]==>> 鐘舵�佷负10锛岀瓑寰呯‘璁わ紒锛�",
+                            slave.getId(),crnProtocol.getTaskNo(), crnProtocol.getLoaded()==1 ? "鏈夌墿" : "鏃犵墿");
                     if (resetFlag) {
                         if(crnProtocol.getTaskNo()==9999){
                             backHpFlag = false;
@@ -272,22 +201,6 @@
                         crnCommand.setAckFinish((short)1);
                         if (write(crnCommand)) {
                             resetFlag = false;
-                        }
-                    }
-                }
-
-                // 澶嶄綅淇″彿
-                if (!Cools.isEmpty(crnProtocol.getStatusTypeTwo()) && (crnProtocol.getStatusTypeTwo().equals(CrnStatusType.WAITING) || crnProtocol.getStatusTypeTwo().equals(CrnStatusType.SEPARATE_WAITING))) {
-                    log.error("-------------------------宸ヤ綅2-------------------------绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}, 宸ヤ綔鍙凤細{}, 杞借揣鍙�:{}]==>> 鐘舵�佷负{}锛岀瓑寰呯‘璁わ紒锛�",
-                            slave.getId(),crnProtocol.getTaskNoTwo(), crnProtocol.getLoadedTwo()==1 ? "鏈夌墿" : "鏃犵墿",crnProtocol.getStatusTypeTwo());
-                    if (resetFlagTwo) {
-                        if(crnProtocol.getTaskNoTwo()==9999){
-                            backHpFlagTwo = false;
-                        }
-                        CrnCommand crnCommand = new CrnCommand();
-                        crnCommand.setAckFinish((short)1);
-                        if (write5(crnCommand)) {
-                            resetFlagTwo = false;
                         }
                     }
                 }
@@ -307,6 +220,21 @@
                 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()));
                 log.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+                if (System.currentTimeMillis()-currentTimeMilliConnectCrn>1000*60*10){
+                    try{
+                        DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+                        deviceErrorService.addDeviceError("Crn", slave.getId(), "璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐�");
+                    } catch (Exception e2){
+                        Thread.sleep(1000);
+//                log.error("e2:"+e2.getMessage());
+                    }
+                    if (currentTimeMilliConnectCrn == 0){
+                        currentTimeMilliConnectCrn = System.currentTimeMillis()-1000*60*10-1;
+                    } else {
+                        currentTimeMilliConnectCrn = System.currentTimeMillis();
+
+                    }
+                }
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -333,6 +261,8 @@
             log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
             return false;
         }
+        CrnErrCache.updateCrnErr(slave.getId(), "-");
+
 //        convertRow(command);
         command.setCrnNo(slave.getId());
         short[] array = new short[10];
@@ -345,75 +275,42 @@
         array[6] = command.getDestinationPosX();
         array[7] = command.getDestinationPosY();
         array[8] = command.getDestinationPosZ();
-//        array[9] = command.getSourceStaNo();
-//        array[10] = command.getDestinationStaNo();
         array[9] = command.getCommand();
         OperateResult result18 = siemensNet.Write("DB100.18", (short)0);
+        try{
+            Thread.sleep(50L);
+        } catch (Exception e){}
+
         OperateResult result = siemensNet.Write("DB100.0", array);
-        log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), array);
 
-
-
-        //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
-        Thread.sleep(200);
-        int writeCount = 1;
-        do {
+        int i=0;
+        do{
+            //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
             try{
-                if(!result.IsSuccess){
-                    log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSONString(command),writeCount);
-                    result = siemensNet.Write("DB100.0", array);
-                    Thread.sleep(100);
-                    writeCount++;
-                    continue;
-                }
-                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())
-                    ){
-                        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{
-                            Thread.sleep(100);
-                        }catch (Exception e){
+                Thread.sleep(100L);
+            } catch (Exception e){}
+            OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB101.0", (short) 4);
+            if (resultRead.IsSuccess) {
+                CrnCommand one = new CrnCommand();
+                one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2));
+                if (!command.getTaskNo().equals(one.getTaskNo())
+                ){
+                    i++;
+                    CrnErrCache.updateCrnErr(slave.getId(), "鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�");
 
-                        }
-                        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));
-                        break;
-                    }
+                    log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}]>>>>閲嶅啓[{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), i,JSON.toJSON(command),JSON.toJSON(one));
+                    result = siemensNet.Write("DB100.0", array);
+                }else{
+                    break;
                 }
-            }catch (Exception e){
-                log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�,寮傚父锛�"+e);
             }
-            writeCount++;
-        } while (writeCount<6);
+        }while(i<5);
 
         if (command.getAckFinish() == 0) {
             short commandFinish = 1;
-            Thread.sleep(100L);
+            try{
+                Thread.sleep(100L);
+            } catch (Exception e){}
             result = siemensNet.Write("DB100.18", commandFinish);
             int signFinish = 1;
             while (signFinish<5){
@@ -422,321 +319,13 @@
                 if (transInt16 != commandFinish){
                     log.info("涓嬪彂DB100.18  鍥炶澶辫触" + "commandFinish:"+commandFinish);
                     log.info("涓嬪彂DB100.18  鍥炶澶辫触" + "array:"+ JSON.toJSONString(array));
+                    CrnErrCache.updateCrnErr(slave.getId(), "涓嬪彂DB100.18  鍥炶澶辫触");
+
                     result = siemensNet.Write("DB100.18", commandFinish);
                     signFinish++;
                 }else {
                     log.info("涓嬪彂DB100.18" + "commandFinish:"+commandFinish);
                     log.info("涓嬪彂DB100.18" + "array:"+ JSON.toJSONString(array));
-                    break;
-                }
-            }
-        }
-
-        try {
-            // 鏃ュ織璁板綍
-            BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class);
-            BasCrnOpt basCrnOpt = new BasCrnOpt(
-                    command.getTaskNo().intValue(),    // 浠诲姟鍙�
-                    command.getCrnNo(),    // 鍫嗗灈鏈篬闈炵┖]
-                    new Date(),    // 涓嬪彂鏃堕棿
-                    command.getTaskModeType().toString(),    // 妯″紡
-                    command.getSourcePosX().intValue(),    // 婧愭帓
-                    command.getSourcePosY().intValue(),    // 婧愬垪
-                    command.getSourcePosZ().intValue(),    // 婧愬眰
-                    null,    // 婧愮珯
-                    command.getDestinationPosX().intValue(),    // 鐩爣鎺�
-                    command.getDestinationPosY().intValue(),    // 鐩爣鍒�
-                    command.getDestinationPosZ().intValue(),    // 鐩爣灞�
-                    null,    // 鐩爣绔�
-                    null,    // 鍝嶅簲缁撴灉
-                    null,    // 淇敼鏃堕棿
-                    null    // 淇敼浜哄憳
-            );
-            bean.insert(basCrnOpt);
-        } catch (Exception ignore) {}
-
-        if (result != null && result.IsSuccess) {
-            Thread.sleep(200);
-            this.readStatus();
-            log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSONString(command));
-            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSONString(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()));
-            log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-            return false;
-        }
-    }
-
-    /**
-     * 鍐欏叆鏁版嵁  宸ヤ綅2
-     */
-    private boolean write5(CrnCommand command) throws InterruptedException {
-        if (null == command) {
-            log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
-            return false;
-        }
-//        convertRow(command);
-        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.getSourceStaNo();
-//        array[10] = command.getDestinationStaNo();
-        array[9] = command.getCommand();
-        OperateResult result18 = siemensNet.Write("DB100.38", (short)0);
-        OperateResult result = siemensNet.Write("DB100.20", array);
-        log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), array);
-
-        //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
-        Thread.sleep(200);
-        int writeCount = 1;
-        do {
-            try{
-                if(!result.IsSuccess){
-                    log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSONString(command),writeCount);
-                    result = siemensNet.Write("DB100.20", array);
-                    Thread.sleep(100);
-                    writeCount++;
-                    continue;
-                }
-                OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.20", (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())
-                    ){
-                        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{
-                            Thread.sleep(100);
-                        }catch (Exception e){
-
-                        }
-                        log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSONString(command),writeCount);
-                        result = siemensNet.Write("DB100.20", array);
-                        writeCount++;
-                        continue;
-                    } else {
-                        log.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSONString(command),JSON.toJSONString(one));
-                        break;
-                    }
-                }
-            }catch (Exception e){
-                log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�,寮傚父锛�"+e);
-            }
-            writeCount++;
-        } while (writeCount<6);
-
-        if (command.getAckFinish() == 0) {
-            short commandFinish = 1;
-            Thread.sleep(100L);
-            result = siemensNet.Write("DB100.38", commandFinish);
-            int signFinish = 1;
-            while (signFinish<5){
-                OperateResultExOne<byte[]> result10018 = siemensNet.Read("DB100.38", (short) 2);
-                short transInt16 = siemensNet.getByteTransform().TransInt16(result10018.Content, 0);
-                if (transInt16 != commandFinish){
-                    log.info("涓嬪彂DB100.38  鍥炶澶辫触" + "commandFinish:"+commandFinish);
-                    log.info("涓嬪彂DB100.38  鍥炶澶辫触" + "array:"+ JSON.toJSONString(array));
-                    result = siemensNet.Write("DB100.38", commandFinish);
-                    signFinish++;
-                }else {
-                    log.info("涓嬪彂DB100.38" + "commandFinish:"+commandFinish);
-                    log.info("涓嬪彂DB100.38" + "array:"+ JSON.toJSONString(array));
-                    break;
-                }
-            }
-        }
-
-        try {
-            // 鏃ュ織璁板綍
-            BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class);
-            BasCrnOpt basCrnOpt = new BasCrnOpt(
-                    command.getTaskNo().intValue(),    // 浠诲姟鍙�
-                    command.getCrnNo(),    // 鍫嗗灈鏈篬闈炵┖]
-                    new Date(),    // 涓嬪彂鏃堕棿
-                    command.getTaskModeType().toString(),    // 妯″紡
-                    command.getSourcePosX().intValue(),    // 婧愭帓
-                    command.getSourcePosY().intValue(),    // 婧愬垪
-                    command.getSourcePosZ().intValue(),    // 婧愬眰
-                    null,    // 婧愮珯
-                    command.getDestinationPosX().intValue(),    // 鐩爣鎺�
-                    command.getDestinationPosY().intValue(),    // 鐩爣鍒�
-                    command.getDestinationPosZ().intValue(),    // 鐩爣灞�
-                    null,    // 鐩爣绔�
-                    null,    // 鍝嶅簲缁撴灉
-                    null,    // 淇敼鏃堕棿
-                    null    // 淇敼浜哄憳
-            );
-            bean.insert(basCrnOpt);
-        } catch (Exception ignore) {}
-
-        if (result != null && result.IsSuccess) {
-            Thread.sleep(200);
-            this.readStatus();
-            log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSONString(command));
-            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSONString(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()));
-            log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-            return false;
-        }
-    }
-
-    /**
-     * 鍐欏叆鏁版嵁  鍙屽伐浣�
-     */
-    private boolean write9(CrnCommandParam command) throws InterruptedException {
-        if (null == command) {
-            log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
-            return false;
-        }
-        command.setCrnNo(slave.getId());
-        short[] array = new short[22];
-        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] = command.getAckFinish2();
-        array[11] = command.getTaskNo2();
-        array[12] = command.getTaskMode2();
-        array[13] = command.getSourcePosX2();
-        array[14] = command.getSourcePosY2();
-        array[15] = command.getSourcePosZ2();
-        array[16] = command.getDestinationPosX2();
-        array[17] = command.getDestinationPosY2();
-        array[18] = command.getDestinationPosZ2();
-        array[19] = command.getCommand();
-        array[20] = (short)1;
-        array[21] = (short)1;
-        OperateResult result18 = siemensNet.Write("DB100.18", (short)0);
-        OperateResult result38 = siemensNet.Write("DB100.38", (short)0);
-        OperateResult result = siemensNet.Write("DB100.0", array);
-//        OperateResult result = siemensNet.Write("DB100.20", array);
-        log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), array);
-
-        //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
-        Thread.sleep(200);
-        int writeCount = 1;
-        do {
-            try{
-                if(!result.IsSuccess){
-                    log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount);
-                    result = siemensNet.Write("DB100.0", array);
-                    Thread.sleep(100);
-                    writeCount++;
-                    continue;
-                }
-                OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 40);
-                if (resultRead.IsSuccess) {
-                    CrnCommandParam one = new CrnCommandParam();
-                    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.setTaskNo2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 22));
-                    one.setTaskMode2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 24));
-                    one.setSourcePosX2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 26));
-                    one.setSourcePosY2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 28));
-                    one.setSourcePosZ2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 30));
-                    one.setDestinationPosX2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 32));
-                    one.setDestinationPosY2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 34));
-                    one.setDestinationPosZ2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 36));
-                    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())
-                            ||
-                            !command.getTaskNo2().equals(one.getTaskNo2()) || !command.getTaskMode2().equals(one.getTaskMode2())
-                            || !command.getSourcePosX2().equals(one.getSourcePosX2()) || !command.getSourcePosY2().equals(one.getSourcePosY2())
-                            || !command.getSourcePosZ2().equals(one.getSourcePosZ2()) || !command.getDestinationPosX2().equals(one.getDestinationPosX2())
-                            || !command.getDestinationPosY2().equals(one.getDestinationPosY2()) || !command.getDestinationPosZ2().equals(one.getDestinationPosZ2())
-                    ){
-                        try{
-                            log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
-                        }catch (Exception e){
-                            try{
-                                log.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSON(command),JSON.toJSON(resultRead));
-                            }catch (Exception e1){
-                                log.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
-                            }
-                        }
-                        try{
-                            Thread.sleep(100);
-                        }catch (Exception e){
-
-                        }
-                        log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount);
-                        result = siemensNet.Write("DB100.0", array);
-                        writeCount++;
-                        continue;
-                    } else {
-                        log.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
-                        break;
-                    }
-                }
-            }catch (Exception e){
-                log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�,寮傚父锛�"+e);
-            }
-            writeCount++;
-        } while (writeCount<6);
-
-        if (command.getAckFinish() == 0) {
-            short commandFinish = 1;
-            Thread.sleep(100L);
-            result18 = siemensNet.Write("DB100.18", commandFinish);
-            result38 = siemensNet.Write("DB100.38", commandFinish);
-            int signFinish = 1;
-            while (signFinish<5){
-                OperateResultExOne<byte[]> result10018 = siemensNet.Read("DB100.18", (short) 2);
-                OperateResultExOne<byte[]> result10038 = siemensNet.Read("DB100.38", (short) 2);
-                short transInt1618 = siemensNet.getByteTransform().TransInt16(result10018.Content, 0);
-                short transInt1638 = siemensNet.getByteTransform().TransInt16(result10038.Content, 0);
-                if (transInt1618 != commandFinish || transInt1638 != commandFinish){
-                    log.info("涓嬪彂DB100.18/DB100.38  鍥炶澶辫触" + "commandFinish:"+commandFinish);
-                    log.info("涓嬪彂DB100.18/DB100.38  鍥炶澶辫触" + "array:"+ JSON.toJSONString(array));
-                    result18 = siemensNet.Write("DB100.18", commandFinish);
-                    result38 = siemensNet.Write("DB100.38", commandFinish);
-                    signFinish++;
-                }else {
-                    log.info("涓嬪彂DB100.18/DB100.38" + "commandFinish:"+commandFinish);
-                    log.info("涓嬪彂DB100.18/DB100.38" + "array:"+ JSON.toJSONString(array));
                     break;
                 }
             }
@@ -774,6 +363,8 @@
         } else {
             OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
             log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+            CrnErrCache.updateCrnErr(slave.getId(), "鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触");
+
             return false;
         }
     }

--
Gitblit v1.9.1