From 2b3c541d34ef2735182695d13cd28d5c107f46ef Mon Sep 17 00:00:00 2001
From: 18516761980 <56479841@qq.com>
Date: 星期四, 25 八月 2022 09:37:40 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/enums/CrnTaskModeType.java      |    9 
 src/main/java/com/zy/core/thread/SiemensCrnThread.java    |  422 +++++++++++++++++++----------
 src/main/java/com/zy/core/enums/CrnStatusType.java        |   38 +-
 src/main/java/com/zy/core/CrnThread.java                  |    6 
 src/main/java/com/zy/core/enums/CrnLiftPosType.java       |   10 
 src/main/java/com/zy/core/model/protocol/CrnProtocol.java |  314 ++++++++++++++++-----
 src/main/java/com/zy/core/enums/CrnModeType.java          |    8 
 7 files changed, 542 insertions(+), 265 deletions(-)

diff --git a/src/main/java/com/zy/core/CrnThread.java b/src/main/java/com/zy/core/CrnThread.java
index 7b4ded6..70c3d75 100644
--- a/src/main/java/com/zy/core/CrnThread.java
+++ b/src/main/java/com/zy/core/CrnThread.java
@@ -8,10 +8,4 @@
 
     void setResetFlag(boolean flag);
 
-    void setBackHpFlag(boolean flag);
-
-    /**
-     * 鍫嗗灈鏈烘槸鍚﹀湪鍥炲師鐐硅繍鍔ㄤ腑鏍囪
-     */
-    boolean isBackHpFlag();
 }
diff --git a/src/main/java/com/zy/core/enums/CrnLiftPosType.java b/src/main/java/com/zy/core/enums/CrnLiftPosType.java
index 71b809c..62bbf5e 100644
--- a/src/main/java/com/zy/core/enums/CrnLiftPosType.java
+++ b/src/main/java/com/zy/core/enums/CrnLiftPosType.java
@@ -2,12 +2,12 @@
 
 public enum CrnLiftPosType {
 
-    ERROR(-1, "鏈煡"),   // 涓嶅湪瀹氫綅
+    _DOWN(4, "鍙屼几浣嶄綆浣�"),
+    _UP(3, "鍙屼几浣嶉珮浣�"),
+    DOWN(2, "鍗曚几浣嶄綆浣�"),  // 涓嬪畾浣�
+    UP(1, "鍗曚几浣嶉珮浣�"),   // 涓婂畾浣�
     NONE(0, "涓嶅湪瀹氫綅"),   // 涓嶅湪瀹氫綅
-    _DOWN(1, "鍙屾繁浣庝綅"),  //
-    DOWN(2, "鍗曟繁浣庝綅"),  //
-    _UP(3, "鍗曟繁楂樹綅"),   //
-    UP(4, "鍙屾繁楂樹綅"),   //
+    ERROR(-1, "鏈煡"),   // 涓嶅湪瀹氫綅
     ;
 
     public Integer id;
diff --git a/src/main/java/com/zy/core/enums/CrnModeType.java b/src/main/java/com/zy/core/enums/CrnModeType.java
index 7f2d84a..0b75045 100644
--- a/src/main/java/com/zy/core/enums/CrnModeType.java
+++ b/src/main/java/com/zy/core/enums/CrnModeType.java
@@ -2,11 +2,11 @@
 
 public enum CrnModeType {
 
-    NONE(-1, "绂荤嚎"),
-    STOP(0, "缁翠慨"),
-    HAND(1, "鎵嬪姩"),
+    NONE(0, "鏈�夋嫨"),
+    AUTO(1, "鑷姩"),
     HALF_AUTO(2, "鍗婅嚜鍔�"),
-    AUTO(3, "鑷姩"),
+    HAND(3, "鎵嬪姩"),
+    STOP(4, "缁翠慨"),
     ;
 
     public Integer id;
diff --git a/src/main/java/com/zy/core/enums/CrnStatusType.java b/src/main/java/com/zy/core/enums/CrnStatusType.java
index 371c87f..1229af0 100644
--- a/src/main/java/com/zy/core/enums/CrnStatusType.java
+++ b/src/main/java/com/zy/core/enums/CrnStatusType.java
@@ -2,20 +2,28 @@
 
 public enum CrnStatusType {
 
-    NONE(-1, "绂荤嚎"),
-    IDLE(0, "绌洪棽"),
-    FETCH_MOVING(1, "鍙栬揣琛岃蛋"),
-    FETCH_WAITING(2, "鍙栬揣绛夊緟"),
-    FETCHING(3, "鍙栬揣涓�"),
-    PUT_MOVING(4, "鏀捐揣璧拌"),
-    PUT_WAITING(5, "鏀捐揣绛夊緟"),
-    PUTTING(6, "鏀捐揣涓�"),
-    ORIGIN_GO(7, "鍥炲師鐐�"),
-    ORIGIN_BACK(8, "鍥炲弽鍘熺偣"),
-    MOVING(9, "璧拌涓�"),
-    WAITING(10, "浠诲姟瀹屾垚绛夊緟WCS纭"),
-    PAUSE(11, "浠诲姟鏆傚仠"),
-    SOS(99, "鎶ヨ"),
+//    NONE(-1, "绂荤嚎"),
+//    IDLE(0, "绌洪棽"),
+//    FETCH_MOVING(1, "鍙栬揣琛岃蛋"),
+//    FETCH_WAITING(2, "鍙栬揣绛夊緟"),
+//    FETCHING(3, "鍙栬揣涓�"),
+//    PUT_MOVING(4, "鏀捐揣璧拌"),
+//    PUT_WAITING(5, "鏀捐揣绛夊緟"),
+//    PUTTING(6, "鏀捐揣涓�"),
+//    ORIGIN_GO(7, "鍥炲師鐐�"),
+//    ORIGIN_BACK(8, "鍥炲弽鍘熺偣"),
+//    MOVING(9, "璧拌涓�"),
+//    WAITING(10, "浠诲姟瀹屾垚绛夊緟WCS纭"),
+//    PAUSE(11, "浠诲姟鏆傚仠"),
+//    SOS(99, "鎶ヨ"),
+//    ;
+
+    IDLE(0, "绌洪棽锛屾棤浠诲姟"),
+    NONE_MOVING(1, "鏃犺揣琛岃蛋"),
+    FETCHING(2, "鍙栬揣"),
+    MOVING(3, "鏈夎揣琛岃蛋"),
+    PUTTING(4, "鏀捐揣"),
+    PUT_COMPLETE(5, "鏀捐揣瀹屾垚"),
     ;
 
     public Integer id;
@@ -34,7 +42,7 @@
                 return type;
             }
         }
-        return NONE;
+        return null;
     }
 
     public static CrnStatusType get(CrnStatusType type) {
diff --git a/src/main/java/com/zy/core/enums/CrnTaskModeType.java b/src/main/java/com/zy/core/enums/CrnTaskModeType.java
index be4761d..968c075 100644
--- a/src/main/java/com/zy/core/enums/CrnTaskModeType.java
+++ b/src/main/java/com/zy/core/enums/CrnTaskModeType.java
@@ -6,12 +6,9 @@
     PAKIN(1),    // 鍏ュ簱
     PAKOUT(2),    // 鍑哄簱
     LOC_MOVE(3),    // 搴撲綅绉昏浆
-    X_MOVE(4),    // 绔欎綅绉昏浆
-    Y_MOVE(5),    // 绔欎綅绉昏浆
-    XY_MOVE(6),    // 绔欎綅绉昏浆
-    GO_ORIGIN(7),    // 鍥炲師鐐�
-    BACK_ORIGIN(8),      // 鍥炲弽鍘熺偣
-    CLEAR(9),       // 娓呴敊
+    SITE_MOVE(4),    // 绔欎綅绉昏浆
+    GO_ORIGIN(5),    // 鍥炲師鐐�
+    CLEAR(7),       // 娓呴敊
     ;
 
     public Integer id;
diff --git a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
index a63b90b..87c0781 100644
--- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -1,10 +1,7 @@
 package com.zy.core.model.protocol;
 
 import com.zy.asrs.entity.BasCrnp;
-import com.zy.core.enums.CrnForkPosType;
-import com.zy.core.enums.CrnLiftPosType;
-import com.zy.core.enums.CrnModeType;
-import com.zy.core.enums.CrnStatusType;
+import com.zy.core.enums.*;
 import lombok.Data;
 
 /**
@@ -12,8 +9,6 @@
  */
 @Data
 public class CrnProtocol {
-
-    private Integer crnNo;
 
     /**
      * 1 = 鎵嬪姩妯″紡
@@ -25,14 +20,19 @@
     public CrnModeType modeType;
 
     /**
+     * 鍫嗗灈鏈轰换鍔″畬鎴�
+     */
+    public Short taskFinish;
+
+    /**
+     * 鏍¢獙缁撴灉 1琛ㄧず妫�楠屾垚鍔�
+     */
+    public Short valid;
+
+    /**
      * 1 = 鎬ュ仠
      */
     public Short eStop;
-
-    /**
-     * 寮傚父鐮�
-     */
-    public Short alarm;
 
     /**
      * 浠诲姟鍙�
@@ -70,45 +70,175 @@
     public Short level;
 
     /**
+     * 鍫嗗灈鏈哄綋鍓嶆帓
+     */
+    public Short row;
+
+    /**
+     * 鍫嗗灈鏈哄綋鍓嶅贩閬撳彿
+     */
+    public Short lane;
+
+    /**
+     * 鍫嗗灈鏈洪�氳鐘舵��
+     */
+    public Boolean connStatus;
+
+    /**
+     * 鐢宠鍏ュ簱淇
+     */
+    public Boolean correction;
+
+    /**
+     * 鎵樼洏鍙烽敊
+     */
+    public Boolean tuError;
+
+    /**
+     * 鍙栬揣鏃犵
+     */
+    public Boolean noneError;
+
+    /**
+     * 鍙岄噸鍏ュ簱
+     */
+    public Boolean stockError;
+
+    /**
+     * 浣滀笟鏁版嵁鏃犳晥
+     */
+    public Boolean jobInvalid;
+
+    /**
+     * 绌洪棽鐘舵��
+     */
+    public Boolean idle;
+
+    /**
+     * 鎺у埗鏌滀娇鑳�
+     */
+    public Boolean control;
+
+    /**
+     * 鍋滃噯
+     */
+    public Boolean stopQuasi;
+
+    /**
+     * 杩愯
+     */
+    public Boolean running;
+
+    /**
+     * 鏁呴殰
+     */
+    public Boolean fault;
+
+    /**
+     * 璐у弶涓綅
+     */
+    public Boolean forkHome;
+    /**
+     * 鍗曚几浣嶈揣鍙夊乏浣�
+     */
+    public Boolean forkSingleLeft;
+    /**
+     * 鍗曚几浣嶈揣鍙夊彸浣�
+     */
+    public Boolean forkSingleRight;
+    /**
+     * 鍙屼几浣嶈揣鍙夊乏浣�
+     */
+    public Boolean forkDoubleLeft;
+    /**
+     * 鍙屼几浣嶈揣鍙夊彸浣�
+     */
+    public Boolean forkDoubleRight;
+    /**
+     * 鍗曚几浣嶉珮浣�
+     */
+    public Boolean singleHigh;
+    /**
+     * 鍗曚几浣嶄綆浣�
+     */
+    public Boolean singleLow;
+    /**
+     * 鍙屼几浣嶉珮浣�
+     */
+    public Boolean doubleHigh;
+    /**
+     * 鍙屼几浣嶄綆浣�
+     */
+    public Boolean doubleLow;
+    /**
+     * 绔欏彴楂樹綅
+     */
+    public Boolean platformHigh;
+    /**
+     * 绔欏彴浣庝綅
+     */
+    public Boolean platformLow;
+
+    /**
      * 褰撳墠璐у弶浣嶇疆
      * 0 = 璐у弶鍘熶綅
      * 1 = 璐у弶鍦ㄥ乏渚�
      * 2 = 璐у弶鍦ㄥ彸渚�
      */
-    public Short forkPos;
+    public Short forkPos = -1;
 
-    public CrnForkPosType forkPosType;
+    public CrnForkPosType forkPosType = CrnForkPosType.NONE;
 
     /**
      * 褰撳墠杞借揣鍙颁綅缃�
      * 0 = 涓嬪畾浣�
      * 1 = 涓婂畾浣�
      */
-    public Short liftPos;
+    public Short liftPos = -1;
 
-    public CrnLiftPosType liftPosType;
+    public CrnLiftPosType liftPosType = CrnLiftPosType.ERROR;
 
     /**
      * 璧拌鍦ㄥ畾浣�
      * 0 = 鍦ㄥ畾浣�
      * 1 = 涓嶅湪瀹氫綅
      */
-    public Short walkPos;
+    public Short walkPos = 0;
+
+    /**
+     * 鎷ㄦ寚浣嶇疆
+     * 0 = 涓嶅湪瀹氫綅
+     * 1 = 涓婂畾浣�
+     * 2 = 涓嬪畾浣�
+     */
+    public Short fingerPos;
+
+    public CrnFingerPosType fingerPosType;
 
     /**
      * 杞借揣鍙版湁鐗�
      */
     public Short loaded;
 
-    private Short temp1;
+    /**
+     * 鍫嗗灈鏈哄瀭鐩存晠闅滀唬鐮侊紙鏁板�兼樉绀猴級
+     */
+    private Integer alarm1 = 0;
 
-    private CrnTemp1 crnTemp1;
+    /**
+     * 鍫嗗灈鏈烘按骞虫晠闅滀唬鐮侊紙鏁板�兼樉绀猴級
+     */
+    private Integer alarm2 = 0;;
 
-    private Short temp2;
+    /**
+     * 鍫嗗灈鏈鸿揣鍙夋晠闅滀唬鐮侊紙鏁板�兼樉绀猴級
+     */
+    private Integer alarm3 = 0;;
 
-    private Short temp3;
-
-    private Short temp4;
+    /**
+     * 鍫嗗灈鏈虹姸鎬佹晠闅滀唬鐮侊紙鏁板�兼樉绀猴級
+     */
+    private Integer alarm4 = 0;;
 
     /**
      * 寮傚父1
@@ -139,53 +269,39 @@
     private CrnError4 crnError4;
 
     /**
-     * 寮傚父5
-     */
-    private boolean[] error5;
-
-    private CrnError5 crnError5;
-
-    /**
-     * 寮傚父6
-     */
-    private boolean[] error6;
-
-    private CrnError6 crnError6;
-
-    /**
      * X琛岃蛋绾块�熷害m/min
      */
-    private Float xSpeed;
+    private Float xSpeed = 0F;
 
     /**
      * Y琛岃蛋绾块�熷害m/min
      */
-    private Float ySpeed;
+    private Float ySpeed = 0F;
 
     /**
      * Z琛岃蛋绾块�熷害m/min
      */
-    private Float zSpeed;
+    private Float zSpeed = 0F;
 
     /**
      * 鍫嗗灈鏈虹疮璁¤蛋琛岃窛绂籯m
      */
-    public Float xDistance;
+    public Float xDistance = 0F;
 
     /**
      * 鍫嗗灈鏈虹疮璁″崌闄嶈窛绂籯m
      */
-    public Float yDistance;
+    public Float yDistance = 0F;
 
     /**
      * 鍫嗗灈鏈虹疮璁¤蛋琛屾椂闀縣
      */
-    public Float xDuration;
+    public Float xDuration = 0F;
 
-    /**
+    /**w
      * 鍫嗗灈鏈虹疮璁″崌闄嶆椂闀縣
      */
-    public Float yDuration;
+    public Float yDuration = 0F;
 
     public void setMode(Short mode) {
         this.mode = mode;
@@ -227,12 +343,81 @@
         this.status = CrnStatusType.get(type).id.shortValue();
     }
 
-    public Short getTemp1() {
-        return temp1;
+    public void setFingerPos(Short type) {
+        this.fingerPos = type;
+        this.fingerPosType = CrnFingerPosType.get(type);
     }
 
-    public void setTemp1(Short temp1) {
-        this.temp1 = temp1;
+    public void setError1(boolean[] error1){
+        this.error1 = error1;
+        this.crnError1 = new CrnError1();
+        this.crnError1.remoteStop = error1[0];
+        this.crnError1.mainStop = error1[1];
+        this.crnError1.controlStop = error1[2];
+        this.crnError1.xCoverErr = error1[3];
+        this.crnError1.yCoverErr = error1[4];
+        this.crnError1.zCoverErr = error1[5];
+        this.crnError1.laserErr = error1[6];
+        this.crnError1.barcodeErr = error1[7];
+        this.crnError1.xFrontLimitErr = error1[8];
+        this.crnError1.xBackLimitErr = error1[9];
+        this.crnError1.yUpLimitErr = error1[10];
+        this.crnError1.yDownLimitErr = error1[11];
+        this.crnError1.zLeftLimitErr = error1[12];
+        this.crnError1.zRightLimitErr = error1[13];
+        this.crnError1.leftOverWidthErr1 = error1[14];
+        this.crnError1.leftOverWidthErr2 = error1[15];
+    }
+
+    public void setError2(boolean[] error2){
+        this.error2 = error2;
+        this.crnError2 = new CrnError2();
+        this.crnError2.leftOverLenErr1 = error2[0];
+        this.crnError2.leftOverLenErr2 = error2[1];
+        this.crnError2.leftOverHighErr = error2[2];
+        this.crnError2.rightOverWidthErr1 = error2[3];
+        this.crnError2.rightOverWidthErr2 = error2[4];
+        this.crnError2.rightOverLenErr1 = error2[5];
+        this.crnError2.rightOverLenErr2 = error2[6];
+        this.crnError2.rightOverHighErr = error2[7];
+        this.crnError2.leftLooseRopeErr = error2[8];
+        this.crnError2.rightLooseRopeErr = error2[9];
+        this.crnError2.frontDoorErr = error2[10];
+        this.crnError2.backDoorErr = error2[11];
+        this.crnError2.startupErr = error2[12];
+        this.crnError2.xFrontLocaUpErr = error2[13];
+        this.crnError2.xFrontLocaDownErr = error2[14];
+        this.crnError2.xBackLocaUpErr = error2[15];
+    }
+
+    public void setError3(boolean[] error3) {
+        this.error3 = error3;
+        this.crnError3 = new CrnError3();
+        this.crnError3.xBackLocaDownErr = error3[0];
+        this.crnError3.yUpLocaUpErr = error3[1];
+        this.crnError3.yUpLocaDownErr = error3[2];
+        this.crnError3.yDownLocaUpErr = error3[3];
+        this.crnError3.yDownLocaDownErr = error3[4];
+        this.crnError3.zLeftLocaUpErr = error3[5];
+        this.crnError3.zLeftLocaDownErr = error3[6];
+        this.crnError3.zRightLocaUpErr = error3[7];
+        this.crnError3.zRightLocaDownErr = error3[8];
+        this.crnError3.leftTakeNoneErr = error3[9];
+        this.crnError3.rightTakeNoneErr = error3[10];
+        this.crnError3.leftTakeThenLoadErr = error3[11];
+        this.crnError3.rightTakeThenLoadErr = error3[12];
+        this.crnError3.leftPutAndLoadErr = error3[13];
+        this.crnError3.rightPutAndLoadErr = error3[14];
+        this.crnError3.leftPutThenNoneErr = error3[15];
+    }
+
+    public void setError4(boolean[] error4) {
+        this.error4 = error4;
+        this.crnError4 = new CrnError4();
+        this.crnError4.rightPutThenNoneErr = error4[0];
+        this.crnError4.xLooseBrakeTimeout = error4[1];
+        this.crnError4.yLooseBrakeTimeout = error4[2];
+        this.crnError4.zLooseBrakeTimeout = error4[3];
     }
 
     /**
@@ -244,39 +429,8 @@
 
 
     public BasCrnp toSqlModel(BasCrnp basCrnp){
-        if (alarm!=null) {
-            basCrnp.setCrnErr(alarm.longValue());
-        }
+        basCrnp.setCrnErr(alarm1.longValue());
         basCrnp.setWrkNo(taskNo.intValue());
         return basCrnp;
     }
-
-    public void setxSpeed(Short xSpeed) {
-        this.xSpeed = Float.valueOf(xSpeed);
-    }
-
-    public void setySpeed(Short ySpeed) {
-        this.ySpeed = Float.valueOf(ySpeed);
-    }
-
-    public void setzSpeed(Short zSpeed) {
-        this.zSpeed = Float.valueOf(zSpeed);
-    }
-
-    public void setxDistance(Short xDistance) {
-        this.xDistance = Float.valueOf(xDistance);
-    }
-
-    public void setyDistance(Short yDistance) {
-        this.yDistance = Float.valueOf(yDistance);
-    }
-
-    public void setxDuration(Short xDuration) {
-        this.xDuration = Float.valueOf(xDuration);
-    }
-
-    public void setyDuration(Short yDuration) {
-        this.yDuration = Float.valueOf(yDuration);
-    }
-
 }
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 9bc94c7..f51d5c1 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -38,11 +38,6 @@
     private CrnProtocol crnProtocol;
     private boolean resetFlag = false;
 
-    /**
-     * 鍫嗗灈鏈烘槸鍚﹀湪鍥炲師鐐硅繍鍔ㄤ腑鏍囪
-     */
-    private boolean backHpFlag = false;
-
     public SiemensCrnThread(CrnSlave slave) {
         this.slave = slave;
     }
@@ -50,6 +45,7 @@
     @Override
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
+        initCrnProtocol();
         this.connect();
         while (true) {
             try {
@@ -97,29 +93,19 @@
     }
 
     /**
-     * 鍒濆鍖栧爢鍨涙満鐘舵��
+     * 鍒濆鍖栧爢鍨涙満
      */
-    private void initCrn() {
-        if (null == crnProtocol) {
-            crnProtocol = new CrnProtocol();
-        }
-        crnProtocol.setMode((short) -1);
-//        crnProtocol.setTaskNo((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.setxSpeed((short) 0);
-        crnProtocol.setySpeed((short) 0);
-        crnProtocol.setzSpeed((short) 0);
-        crnProtocol.setxDistance((short) 0);
-        crnProtocol.setyDistance((short) 0);
-        crnProtocol.setxDuration((short) 0);
-        crnProtocol.setyDuration((short) 0);
+    private void initCrnProtocol(){
+        crnProtocol = new CrnProtocol();
+        crnProtocol.setMode((short) 0);
+        crnProtocol.setStatus((short) 0);
+        crnProtocol.setTaskNo((short) 0);
+        crnProtocol.setTaskFinish((short) 0);
+        crnProtocol.setValid((short) 0);
+        crnProtocol.setBay((short) 0);
+        crnProtocol.setLevel((short) 0);
+        crnProtocol.setRow((short) 0);
+        crnProtocol.setLane((short) 0);
     }
 
     @Override
@@ -136,9 +122,8 @@
         } 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()));
             log.error("鍫嗗灈鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
-            initCrn();
         }
-//        siemensNet.ConnectClose();
+        siemensNet.ConnectClose();
         return result;
     }
 
@@ -146,151 +131,290 @@
      * 璇诲彇鐘舵��
      */
     private void readStatus(){
-        try {
-            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56);
-            if (result.IsSuccess) {
-                if (null == crnProtocol) {
-                    crnProtocol = new CrnProtocol();
-                    crnProtocol.setCrnNo(slave.getId());
-                }
-                crnProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));
-                crnProtocol.setTaskNo(siemensNet.getByteTransform().TransInt16(result.Content, 2));
-                crnProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 4));
-                crnProtocol.setBay(siemensNet.getByteTransform().TransInt16(result.Content, 6));
-                crnProtocol.setLevel(siemensNet.getByteTransform().TransInt16(result.Content, 8));
-                crnProtocol.setForkPos(siemensNet.getByteTransform().TransInt16(result.Content, 10));
-                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));
-
-                OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
-
-                // 澶嶄綅淇″彿
-                if (crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
-                    if (resetFlag) {
-                        if(crnProtocol.getTaskNo()==9999){
-                            backHpFlag = false;
-                        }
-                        CrnCommand crnCommand = new CrnCommand();
-                        crnCommand.setAckFinish((short)1);
-                        if (write(crnCommand)) {
-                            resetFlag = false;
-                        }
-                    }
-                }
-
-                try {
-                    // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
-                    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))){
-                        log.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
-                    }
-                } 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()));
-                log.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+        OperateResultExOne<byte[]> result = siemensNet.Read("DB11.2", (short) 104);
+        if (result.IsSuccess) {
+            if (null == crnProtocol) {
+                crnProtocol = new CrnProtocol();
             }
-        } 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()));
-            log.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-            initCrn();
-        }
-    }
+            crnProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));   // 2
+            crnProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 2)); // 4
+            crnProtocol.setTaskNo(siemensNet.getByteTransform().TransInt16(result.Content, 4)); // 6
+            crnProtocol.setTaskFinish(siemensNet.getByteTransform().TransInt16(result.Content, 6)); // 8
+            crnProtocol.setValid(siemensNet.getByteTransform().TransInt16(result.Content, 8));  // 10
 
-    private void convertRow(CrnCommand crnCommand) {
-        if (crnCommand.getSourcePosX() != null && crnCommand.getSourcePosX() != 0) {
-            crnCommand.setSourcePosX((short) (crnCommand.getSourcePosX() - ((slave.getId() - 1) * 4)));
-        }
-        if (crnCommand.getDestinationPosX() != null && crnCommand.getDestinationPosX() != 0) {
-            crnCommand.setDestinationPosX((short) (crnCommand.getDestinationPosX() - ((slave.getId() - 1) * 4)));
+            crnProtocol.setLevel(siemensNet.getByteTransform().TransInt16(result.Content, 14)); // 16
+            crnProtocol.setBay(siemensNet.getByteTransform().TransInt16(result.Content, 16));   // 18
+            crnProtocol.setRow(siemensNet.getByteTransform().TransInt16(result.Content, 18));   // 20
+            crnProtocol.setLane(siemensNet.getByteTransform().TransInt16(result.Content, 20));  // 22
+
+            // 寮傚父
+            crnProtocol.setAlarm1(0);
+            crnProtocol.setAlarm2(0);
+            crnProtocol.setAlarm3(0);
+            crnProtocol.setAlarm4(0);
+            boolean[] err1 = siemensNet.getByteTransform().TransBool(result.Content, 28, 1);    // 30
+            if (err1[0]) { crnProtocol.setAlarm1(1); }
+            if (err1[1]) { crnProtocol.setAlarm1(2); }
+            if (err1[2]) { crnProtocol.setAlarm1(3); }
+            boolean[] err2 = siemensNet.getByteTransform().TransBool(result.Content, 29, 1);    // 31
+            if (err2[0]) { crnProtocol.setAlarm1(4); }
+            if (err2[1]) { crnProtocol.setAlarm1(5); }
+            if (err2[2]) { crnProtocol.setAlarm1(6); }
+            boolean[] err3 = siemensNet.getByteTransform().TransBool(result.Content, 30, 1);    // 32
+            if (err3[6]) { crnProtocol.setAlarm1(7); }
+            if (err3[7]) { crnProtocol.setAlarm1(8); }
+            boolean[] err4 = siemensNet.getByteTransform().TransBool(result.Content, 31, 1);    // 33
+            if (err4[1]) { crnProtocol.setAlarm1(9); }
+            if (err4[5]) { crnProtocol.setAlarm1(10); }
+            if (err4[6]) { crnProtocol.setAlarm1(11); }
+            if (err4[7]) { crnProtocol.setAlarm1(12); }
+            boolean[] err5 = siemensNet.getByteTransform().TransBool(result.Content, 32, 1);    // 34
+            if (err5[0]) { crnProtocol.setAlarm2(13); }
+            if (err5[2]) { crnProtocol.setAlarm2(14); }
+            if (err5[3]) { crnProtocol.setAlarm2(15); }
+            if (err5[5]) { crnProtocol.setAlarm2(16); }
+            if (err5[6]) { crnProtocol.setAlarm2(17); }
+            if (err5[7]) { crnProtocol.setAlarm2(18); }
+            boolean[] err6 = siemensNet.getByteTransform().TransBool(result.Content, 33, 1);    // 35
+            if (err6[1]) { crnProtocol.setAlarm2(19); }
+            if (err6[2]) { crnProtocol.setAlarm2(20); }
+            if (err6[3]) { crnProtocol.setAlarm2(21); }
+            if (err6[4]) { crnProtocol.setAlarm2(22); }
+            boolean[] err7 = siemensNet.getByteTransform().TransBool(result.Content, 34, 1);    // 36
+            if (err7[4]) { crnProtocol.setAlarm2(23); }
+            if (err7[5]) { crnProtocol.setAlarm2(24); }
+            if (err7[6]) { crnProtocol.setAlarm2(25); }
+            boolean[] err8 = siemensNet.getByteTransform().TransBool(result.Content, 36, 1);    // 38
+            if (err8[0]) { crnProtocol.setAlarm3(26); }
+            if (err8[1]) { crnProtocol.setAlarm3(27); }
+            if (err8[2]) { crnProtocol.setAlarm3(28); }
+            if (err8[3]) { crnProtocol.setAlarm3(29); }
+            if (err8[4]) { crnProtocol.setAlarm3(30); }
+            if (err8[5]) { crnProtocol.setAlarm3(31); }
+            if (err8[6]) { crnProtocol.setAlarm3(32); }
+            if (err8[7]) { crnProtocol.setAlarm3(33); }
+            boolean[] err9 = siemensNet.getByteTransform().TransBool(result.Content, 37, 1);    // 39
+            if (err9[0]) { crnProtocol.setAlarm3(34); }
+            if (err9[1]) { crnProtocol.setAlarm3(35); }
+            if (err9[2]) { crnProtocol.setAlarm3(36); }
+            if (err9[3]) { crnProtocol.setAlarm3(37); }
+            if (err9[4]) { crnProtocol.setAlarm3(38); }
+            if (err9[5]) { crnProtocol.setAlarm3(39); }
+            if (err9[6]) { crnProtocol.setAlarm3(40); }
+            if (err9[7]) { crnProtocol.setAlarm3(41); }
+            boolean[] err10 = siemensNet.getByteTransform().TransBool(result.Content, 38, 1);    // 40
+            if (err10[0]) { crnProtocol.setAlarm3(42); }
+            if (err10[1]) { crnProtocol.setAlarm3(43); }
+            if (err10[2]) { crnProtocol.setAlarm3(44); }
+            if (err10[3]) { crnProtocol.setAlarm3(45); }
+            if (err10[4]) { crnProtocol.setAlarm3(46); }
+            boolean[] err11 = siemensNet.getByteTransform().TransBool(result.Content, 39, 1);    // 41
+            if (err11[0]) { crnProtocol.setAlarm3(47); }
+            if (err11[1]) { crnProtocol.setAlarm3(48); }
+            if (err11[2]) { crnProtocol.setAlarm3(49); }
+            boolean[] err12 = siemensNet.getByteTransform().TransBool(result.Content, 40, 1);    // 42
+            if (err12[0]) { crnProtocol.setAlarm4(50); }
+            if (err12[1]) { crnProtocol.setAlarm4(51); }
+            if (err12[2]) { crnProtocol.setAlarm4(52); }
+            if (err12[3]) { crnProtocol.setAlarm4(53); }
+            if (err12[4]) { crnProtocol.setAlarm4(54); }
+            if (err12[5]) { crnProtocol.setAlarm4(55); }
+            boolean[] err13 = siemensNet.getByteTransform().TransBool(result.Content, 41, 1);    // 43
+            if (err13[0]) { crnProtocol.setAlarm4(56); }
+            if (err13[1]) { crnProtocol.setAlarm4(57); }
+            if (err13[2]) { crnProtocol.setAlarm4(58); }
+            if (err13[3]) { crnProtocol.setAlarm4(59); }
+            boolean[] err14 = siemensNet.getByteTransform().TransBool(result.Content, 42, 1);    // 44
+            if (err14[0]) { crnProtocol.setAlarm4(60); }
+            if (err14[1]) { crnProtocol.setAlarm4(61); }
+            if (err14[2]) { crnProtocol.setAlarm4(62); }
+            if (err14[3]) { crnProtocol.setAlarm4(63); }
+            if (err14[4]) { crnProtocol.setAlarm4(64); }
+            if (err14[5]) { crnProtocol.setAlarm4(65); }
+            if (err14[6]) { crnProtocol.setAlarm4(66); }
+            if (err14[7]) { crnProtocol.setAlarm4(67); }
+            boolean[] err15 = siemensNet.getByteTransform().TransBool(result.Content, 43, 1);    // 45
+            if (err15[1]) { crnProtocol.setAlarm4(68); }
+            if (err15[2]) { crnProtocol.setAlarm4(69); }
+            if (err15[3]) { crnProtocol.setAlarm4(70); }
+            if (err15[4]) { crnProtocol.setAlarm4(71); }
+            if (err15[5]) { crnProtocol.setAlarm4(72); }
+            if (err15[6]) { crnProtocol.setAlarm4(73); }
+
+            boolean[] bool1 = siemensNet.getByteTransform().TransBool(result.Content, 60, 1);    // 62
+            crnProtocol.setConnStatus(bool1[0]);
+            crnProtocol.setCorrection(bool1[3]);
+            crnProtocol.setTuError(bool1[4]);
+            crnProtocol.setNoneError(bool1[5]);
+            crnProtocol.setStockError(bool1[6]);
+            crnProtocol.setJobInvalid(bool1[7]);
+            boolean[] bool2 = siemensNet.getByteTransform().TransBool(result.Content, 61, 1);    // 63
+            crnProtocol.setIdle(bool2[0]);
+            crnProtocol.setControl(bool2[1]);
+            crnProtocol.setStopQuasi(bool2[2]);
+            crnProtocol.setRunning(bool2[3]);
+            crnProtocol.setFault(bool2[4]);
+            crnProtocol.setForkHome(bool2[5]);
+            crnProtocol.setForkSingleLeft(bool2[6]);
+            crnProtocol.setForkSingleRight(bool2[7]);
+            boolean[] bool3 = siemensNet.getByteTransform().TransBool(result.Content, 62, 1);    // 64
+            crnProtocol.setForkDoubleLeft(bool3[0]);
+            crnProtocol.setForkDoubleRight(bool3[1]);
+            crnProtocol.setSingleHigh(bool3[2]);
+            crnProtocol.setSingleLow(bool3[3]);
+            crnProtocol.setDoubleHigh(bool3[4]);
+            crnProtocol.setDoubleLow(bool3[5]);
+            crnProtocol.setPlatformHigh(bool3[6]);
+            crnProtocol.setPlatformLow(bool3[7]);
+            boolean[] bool4 = siemensNet.getByteTransform().TransBool(result.Content, 64, 1);    // 66
+            crnProtocol.setLoaded((short) (bool4[4]?1:0));  // 鏈夌墿
+
+            // 閫熷害
+            crnProtocol.setXSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 22));    // 24
+            crnProtocol.setYSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 24));    // 26
+            crnProtocol.setZSpeed((float) siemensNet.getByteTransform().TransInt16(result.Content, 26));    // 28
+            // 绱閲岀▼銆佹椂闀�
+            crnProtocol.setXDistance((float) siemensNet.getByteTransform().TransInt32(result.Content, 88));    // 90
+            crnProtocol.setYDistance((float) siemensNet.getByteTransform().TransInt32(result.Content, 92));    // 94
+            crnProtocol.setXDuration((float) siemensNet.getByteTransform().TransInt32(result.Content, 96));    // 98
+            crnProtocol.setYDuration((float) siemensNet.getByteTransform().TransInt32(result.Content, 100));    // 102
+
+            // 澧炲己
+            if (crnProtocol.getForkHome()) {
+                crnProtocol.setForkPos(CrnForkPosType.HOME);
+            }
+            if (crnProtocol.getForkSingleLeft()) {
+                crnProtocol.setForkPos(CrnForkPosType.LEFT);
+            }
+            if (crnProtocol.getForkSingleRight()) {
+                crnProtocol.setForkPos(CrnForkPosType.RIGHT);
+            }
+            if (crnProtocol.getForkDoubleLeft()) {
+                crnProtocol.setForkPos(CrnForkPosType._LEFT);
+            }
+            if (crnProtocol.getForkDoubleRight()) {
+                crnProtocol.setForkPos(CrnForkPosType._RIGHT);
+            }
+            if (crnProtocol.getSingleHigh()) {
+                crnProtocol.setLiftPos(CrnLiftPosType.UP);
+            }
+            if (crnProtocol.getSingleLow()) {
+                crnProtocol.setLiftPos(CrnLiftPosType.DOWN);
+            }
+            if (crnProtocol.getDoubleHigh()) {
+                crnProtocol.setLiftPos(CrnLiftPosType._UP);
+            }
+            if (crnProtocol.getDoubleLow()) {
+                crnProtocol.setLiftPos(CrnLiftPosType._DOWN);
+            }
+            if (crnProtocol.getIdle()) {
+                crnProtocol.setStatus(CrnStatusType.IDLE);
+            }
+
+            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+
+            // 澶嶄綅淇″彿
+            if (crnProtocol.getTaskFinish() == 1) {
+                if (resetFlag) {
+                    CrnCommand crnCommand = new CrnCommand();
+                    crnCommand.setAckFinish((short)1);
+                    if (write(crnCommand)) {
+                        resetFlag = false;
+                    }
+
+                }
+            }
+
+            try {
+                // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+                BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
+                BasCrnp basCrnp = new BasCrnp();
+                basCrnp.setCrnNo(slave.getId());
+                if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){
+                    log.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+                }
+            } catch (Exception ignore){}
+
+        } 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()));
+            log.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
         }
     }
 
     /**
      * 鍐欏叆鏁版嵁
      */
-    private boolean write(CrnCommand command) throws InterruptedException {
+    private boolean write(CrnCommand command){
         if (null == command) {
             log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
             return false;
         }
-//        convertRow(command);
+        if (command.getTaskNo() == 0 && command.getAckFinish() == 0) {
+            command.setTaskNo((short) 9999);
+        }
         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 result = siemensNet.Write("DB100.0", array);
-
+        short[] array = new short[9];
         if (command.getAckFinish() == 0) {
-            short commandFinish = 1;
-            Thread.sleep(100L);
-            result = siemensNet.Write("DB100.18", commandFinish);
+            array[0] = 5;
+        } else {
+            array[0] = 0;
+        }
+        array[1] = command.getSourcePosZ();
+        array[2] = command.getSourcePosY();
+        array[3] = command.getSourcePosX();
+        array[4] = command.getDestinationPosZ();
+        array[5] = command.getDestinationPosY();
+        array[6] = command.getDestinationPosX();
+        array[7] = command.getSourceStaNo();
+        array[8] = command.getDestinationStaNo();
+        // 浣滀笟淇℃伅
+        OperateResult result = siemensNet.Write("DB1000.0", array);
+        // 浠诲姟鍙� + 瀹屾垚浣�
+        short[] array2 = new short[2];
+        array2[0] = command.getTaskNo();
+        array2[1] = command.getAckFinish();
+        OperateResult result1 = siemensNet.Write("DB1000.24", array2);
+
+        // 缁撴潫浣�
+        if (command.getAckFinish() == 0) {
+            OperateResult result2 = siemensNet.Write("DB1000.28.1", true);
         }
 
+        // 鏃ュ織璁板綍
         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);
+            if (command.getAckFinish() != 1) {
+                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.toJSON(command));
+        if (result.IsSuccess && result1.IsSuccess) {
+            log.warn("鍫嗗灈鏈哄懡浠や笅鍙慬id:{},鏃堕棿锛歿}] >>>>> {}", slave.getId(), DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmsssss_F), 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()));
-            log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+            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());
             return false;
         }
     }
-
 
     @Override
     public void close() {

--
Gitblit v1.9.1