From e96fdab4d2a7f7aa86dec7047a3874af28ebe9de Mon Sep 17 00:00:00 2001
From: cpT <1@123>
Date: 星期三, 28 一月 2026 14:49:38 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/controller/DualCrnController.java         |   16 +-
 src/main/java/com/zy/core/network/entity/ZyDualCrnStatusEntity.java |   36 +++++-
 src/main/resources/map/小松地图.xlsx                                    |    0 
 src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java                  |    7 -
 src/main/java/com/zy/core/enums/DualCrnTaskModeType.java            |    6 
 src/main/java/com/zy/asrs/domain/vo/DualCrnStateTableVo.java        |   14 +-
 src/main/java/com/zy/core/model/protocol/DualCrnProtocol.java       |   14 +-
 src/main/java/com/zy/asrs/controller/CrnController.java             |   14 +-
 src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java   |   23 +++-
 src/main/java/com/zy/asrs/domain/vo/CrnStateTableVo.java            |   14 +-
 src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java    |  129 ++++++++++++++++++-------
 src/main/java/com/zy/core/enums/DualCrnStatusType.java              |    5 
 12 files changed, 182 insertions(+), 96 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/CrnController.java b/src/main/java/com/zy/asrs/controller/CrnController.java
index f0e15a4..cacd496 100644
--- a/src/main/java/com/zy/asrs/controller/CrnController.java
+++ b/src/main/java/com/zy/asrs/controller/CrnController.java
@@ -74,13 +74,13 @@
             vo.setForkOffset(crnProtocol.getForkPosType().desc);    // 璐у弶浣嶇疆
             vo.setLiftPos(crnProtocol.getLiftPosType().desc);
             vo.setWalkPos(crnProtocol.getWalkPos() == 1 ? "涓嶅湪瀹氫綅" : "鍦ㄥ畾浣�");
-            vo.setXspeed(crnProtocol.getXSpeed());  //  璧拌閫熷害锛坢/min)
-            vo.setYspeed(crnProtocol.getYSpeed());  //  鍗囬檷閫熷害锛坢/min)
-            vo.setZspeed(crnProtocol.getZSpeed());  //  鍙夌墮閫熷害锛坢/min)
-            vo.setXdistance(crnProtocol.getXDistance());  //  璧拌璺濈(Km)
-            vo.setYdistance(crnProtocol.getYDistance());  //  鍗囬檷璺濈(Km)
-            vo.setXduration(crnProtocol.getXDuration());    //  璧拌鏃堕暱(H)
-            vo.setYduration(crnProtocol.getYDuration());    //  鍗囬檷鏃堕暱(H)
+            vo.setXspeed(String.format("%.2f", crnProtocol.getXSpeed()));  //  璧拌閫熷害锛坢/min)
+            vo.setYspeed(String.format("%.2f", crnProtocol.getYSpeed()));  //  鍗囬檷閫熷害锛坢/min)
+            vo.setZspeed(String.format("%.2f", crnProtocol.getZSpeed()));  //  鍙夌墮閫熷害锛坢/min)
+            vo.setXdistance(String.format("%.2f", crnProtocol.getXDistance()));  //  璧拌璺濈(Km)
+            vo.setYdistance(String.format("%.2f", crnProtocol.getYDistance()));  //  鍗囬檷璺濈(Km)
+            vo.setXduration(String.format("%.2f", crnProtocol.getXDuration()));    //  璧拌鏃堕暱(H)
+            vo.setYduration(String.format("%.2f", crnProtocol.getYDuration()));    //  鍗囬檷鏃堕暱(H)
             vo.setTaskReceive(crnProtocol.getTaskReceive());
 
             if (crnProtocol.getModeType().equals(CrnModeType.AUTO)) {
diff --git a/src/main/java/com/zy/asrs/controller/DualCrnController.java b/src/main/java/com/zy/asrs/controller/DualCrnController.java
index 1d9123d..3a75fb3 100644
--- a/src/main/java/com/zy/asrs/controller/DualCrnController.java
+++ b/src/main/java/com/zy/asrs/controller/DualCrnController.java
@@ -21,6 +21,7 @@
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -63,13 +64,14 @@
             vo.setWalkPos(p.getWalkPos() != null && p.getWalkPos() == 0 ? "鍦ㄥ畾浣�" : "涓嶅湪瀹氫綅");
             vo.setTaskReceive(p.getTaskReceive() != null && p.getTaskReceive() == 1 ? "鎺ユ敹" : "鏃犱换鍔�");
             vo.setTaskReceiveTwo(p.getTaskReceiveTwo() != null && p.getTaskReceiveTwo() == 1 ? "鎺ユ敹" : "鏃犱换鍔�");
-            vo.setXspeed(p.getXSpeed());
-            vo.setYspeed(p.getYSpeed());
-            vo.setZspeed(p.getZSpeed());
-            vo.setXdistance(p.getXDistance());
-            vo.setYdistance(p.getYDistance());
-            vo.setXduration(p.getXDuration());
-            vo.setYduration(p.getYDuration());
+
+            vo.setXspeed(String.format("%.2f", p.getXSpeed()));
+            vo.setYspeed(String.format("%.2f", p.getYSpeed()));
+            vo.setZspeed(String.format("%.2f", p.getZSpeed()));
+            vo.setXdistance(String.format("%.2f", p.getXDistance()));
+            vo.setYdistance(String.format("%.2f", p.getYDistance()));
+            vo.setXduration(String.format("%.2f", p.getXDuration()));
+            vo.setYduration(String.format("%.2f", p.getYDuration()));
             vo.setWarnCode(p.getAlarm() == null ? "-" : String.valueOf(p.getAlarm()));
             if (p.getAlarm() != null && p.getAlarm() > 0) {
                 vo.setDeviceStatus("ERROR");
diff --git a/src/main/java/com/zy/asrs/domain/vo/CrnStateTableVo.java b/src/main/java/com/zy/asrs/domain/vo/CrnStateTableVo.java
index 0f0e4b0..789048e 100644
--- a/src/main/java/com/zy/asrs/domain/vo/CrnStateTableVo.java
+++ b/src/main/java/com/zy/asrs/domain/vo/CrnStateTableVo.java
@@ -84,25 +84,25 @@
     private String command = "";
 
     // 璧拌閫熷害锛坢/min)
-    private Double xspeed = 0D;
+    private String xspeed = "-";
 
     // 鍗囬檷閫熷害锛坢/min)
-    private Double yspeed = 0D;
+    private String yspeed = "-";
 
     // 鍙夌墮閫熷害锛坢/min)
-    private Double zspeed = 0D;
+    private String zspeed = "-";
 
     // 璧拌璺濈(Km)
-    private Double xdistance = 0D;
+    private String xdistance = "-";
 
     // 鍗囬檷璺濈(Km)
-    private Double ydistance = 0D;
+    private String ydistance = "-";
 
     // 璧拌鏃堕暱(H)
-    private Double xduration = 0D;
+    private String xduration = "-";
 
     // 鍗囬檷鏃堕暱(H)
-    private Double yduration = 0D;
+    private String yduration = "-";
 
     private Integer taskReceive;
 
diff --git a/src/main/java/com/zy/asrs/domain/vo/DualCrnStateTableVo.java b/src/main/java/com/zy/asrs/domain/vo/DualCrnStateTableVo.java
index e3dceab..0da191a 100644
--- a/src/main/java/com/zy/asrs/domain/vo/DualCrnStateTableVo.java
+++ b/src/main/java/com/zy/asrs/domain/vo/DualCrnStateTableVo.java
@@ -39,19 +39,19 @@
 
     private String walkPos = "-";
 
-    private Integer xspeed = 0;
+    private String xspeed = "-";
 
-    private Integer yspeed = 0;
+    private String yspeed = "-";
 
-    private Integer zspeed = 0;
+    private String zspeed = "-";
 
-    private Integer xdistance = 0;
+    private String xdistance = "-";
 
-    private Integer ydistance = 0;
+    private String ydistance = "-";
 
-    private Integer xduration = 0;
+    private String xduration = "-";
 
-    private Integer yduration = 0;
+    private String yduration = "-";
 
     private String deviceStatus = "OFFLINE";
 }
diff --git a/src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java b/src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java
index debac09..6d3a357 100644
--- a/src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java
+++ b/src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java
@@ -5,10 +5,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.core.common.R;
 import com.core.common.SpringUtils;
-import com.zy.asrs.controller.CrnController;
-import com.zy.asrs.controller.RgvController;
-import com.zy.asrs.controller.BasMapController;
-import com.zy.asrs.controller.ConsoleController;
+import com.zy.asrs.controller.*;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
@@ -111,7 +108,7 @@
             } else if ("/rgv/table/rgv/state".equals(url)) {
                 resObj = SpringUtils.getBean(RgvController.class).rgvStateTable();
             } else if ("/dualcrn/table/crn/state".equals(url)) {
-                resObj = SpringUtils.getBean(com.zy.asrs.controller.DualCrnController.class).dualCrnStateTable();
+                resObj = SpringUtils.getBean(DualCrnController.class).dualCrnStateTable();
             }
         } catch (Exception e) {
             R err = R.error(e.getMessage());
diff --git a/src/main/java/com/zy/core/enums/DualCrnStatusType.java b/src/main/java/com/zy/core/enums/DualCrnStatusType.java
index ad30097..d3a5163 100644
--- a/src/main/java/com/zy/core/enums/DualCrnStatusType.java
+++ b/src/main/java/com/zy/core/enums/DualCrnStatusType.java
@@ -13,9 +13,8 @@
     ORIGIN_GO(7, "鍥炲師鐐�"),
     ORIGIN_BACK(8, "鍥炲弽鍘熺偣"),
     MOVING(9, "璧拌涓�"),
-    WAITING(90, "浠诲姟瀹屾垚绛夊緟WCS纭"),
-    PAUSE(11, "浠诲姟鏆傚仠"),
-    SOS(99, "鎶ヨ"),
+    WAITING(99, "浠诲姟瀹屾垚绛夊緟WCS纭"),
+    SOS(98, "鎶ヨ"),
     UNKNOW(100, "鍏朵粬"),
     ;
 
diff --git a/src/main/java/com/zy/core/enums/DualCrnTaskModeType.java b/src/main/java/com/zy/core/enums/DualCrnTaskModeType.java
index bc62cc4..66e2cdd 100644
--- a/src/main/java/com/zy/core/enums/DualCrnTaskModeType.java
+++ b/src/main/java/com/zy/core/enums/DualCrnTaskModeType.java
@@ -3,11 +3,11 @@
 public enum DualCrnTaskModeType {
 
     NONE(0),    // 鏃�
-    PICK(1),    // 鍙栬揣
-    PUT(2),    // 鏀捐揣
+    PICK(11),    // 鍙栬揣
+    PUT(12),    // 鏀捐揣
     TRANSFER(3),    // 鍙栨斁璐�
     MOVE(4),    // 绉诲姩
-    CONFIRM(5),    // 纭
+    CONFIRM(13),    // 纭
     ;
 
     public Integer id;
diff --git a/src/main/java/com/zy/core/model/protocol/DualCrnProtocol.java b/src/main/java/com/zy/core/model/protocol/DualCrnProtocol.java
index e8b5eb6..44440a4 100644
--- a/src/main/java/com/zy/core/model/protocol/DualCrnProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/DualCrnProtocol.java
@@ -157,37 +157,37 @@
     /**
      * X琛岃蛋绾块�熷害m/min
      */
-    private Integer xSpeed;
+    private Double xSpeed;
 
     /**
      * Y琛岃蛋绾块�熷害m/min
      */
-    private Integer ySpeed;
+    private Double ySpeed;
 
     /**
      * Z琛岃蛋绾块�熷害m/min
      */
-    private Integer zSpeed;
+    private Double zSpeed;
 
     /**
      * 鍫嗗灈鏈虹疮璁¤蛋琛岃窛绂籯m
      */
-    public Integer xDistance;
+    public Double xDistance;
 
     /**
      * 鍫嗗灈鏈虹疮璁″崌闄嶈窛绂籯m
      */
-    public Integer yDistance;
+    public Double yDistance;
 
     /**
      * 鍫嗗灈鏈虹疮璁¤蛋琛屾椂闀縣
      */
-    public Integer xDuration;
+    public Double xDuration;
 
     /**
      * 鍫嗗灈鏈虹疮璁″崌闄嶆椂闀縣
      */
-    public Integer yDuration;
+    public Double yDuration;
 
     //璐х墿绫诲瀷
     private Integer goodsType;
diff --git a/src/main/java/com/zy/core/network/entity/ZyDualCrnStatusEntity.java b/src/main/java/com/zy/core/network/entity/ZyDualCrnStatusEntity.java
index 33f12eb..33dd5f3 100644
--- a/src/main/java/com/zy/core/network/entity/ZyDualCrnStatusEntity.java
+++ b/src/main/java/com/zy/core/network/entity/ZyDualCrnStatusEntity.java
@@ -78,9 +78,19 @@
     public Integer bay;
 
     /**
+     * 鍫嗗灈鏈哄綋鍓嶅垪鍙�
+     */
+    public Integer bayTwo;
+
+    /**
      * 鍫嗗灈鏈哄綋鍓嶅眰鍙�
      */
     public Integer level;
+
+    /**
+     * 鍫嗗灈鏈哄綋鍓嶅眰鍙�
+     */
+    public Integer levelTwo;
 
     /**
      * 褰撳墠杞借揣鍙颁綅缃�
@@ -97,39 +107,51 @@
     public Integer walkPos;
 
     /**
+     * 璧拌鍦ㄥ畾浣�
+     * 0 = 鍦ㄥ畾浣�
+     * 1 = 涓嶅湪瀹氫綅
+     */
+    public Integer walkPosTwo;
+
+    /**
      * X琛岃蛋绾块�熷害m/min
      */
-    private Integer xSpeed;
+    private Double xSpeed;
 
     /**
      * Y琛岃蛋绾块�熷害m/min
      */
-    private Integer ySpeed;
+    private Double ySpeed;
 
     /**
      * Z琛岃蛋绾块�熷害m/min
      */
-    private Integer zSpeed;
+    private Double zSpeed;
+
+    /**
+     * Z琛岃蛋绾块�熷害m/min
+     */
+    private Double zSpeedTwo;
 
     /**
      * 鍫嗗灈鏈虹疮璁¤蛋琛岃窛绂籯m
      */
-    public Integer xDistance;
+    public Double xDistance;
 
     /**
      * 鍫嗗灈鏈虹疮璁″崌闄嶈窛绂籯m
      */
-    public Integer yDistance;
+    public Double yDistance;
 
     /**
      * 鍫嗗灈鏈虹疮璁¤蛋琛屾椂闀縣
      */
-    public Integer xDuration;
+    public Double xDuration;
 
     /**
      * 鍫嗗灈鏈虹疮璁″崌闄嶆椂闀縣
      */
-    public Integer yDuration;
+    public Double yDuration;
 
     private Integer temp1;
 
diff --git a/src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java b/src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java
index cd57da7..c6a49ee 100644
--- a/src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java
+++ b/src/main/java/com/zy/core/network/real/ZyDualCrnRealConnect.java
@@ -58,7 +58,7 @@
     @Override
     public ZyDualCrnStatusEntity getStatus() {
         try {
-            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 66);
+            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 70);
             if (result.IsSuccess) {
                 ZyDualCrnStatusEntity crnStatus = new ZyDualCrnStatusEntity();
                 crnStatus.setCrnNo(deviceConfig.getDeviceNo());
@@ -67,37 +67,94 @@
                 //宸ヤ綅1
                 crnStatus.setTaskNo((int) siemensNet.getByteTransform().TransInt16(result.Content, 2));
                 crnStatus.setStatus((int) siemensNet.getByteTransform().TransInt16(result.Content, 4));
-                crnStatus.setForkPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 6));
-                crnStatus.setLoaded((int) siemensNet.getByteTransform().TransInt16(result.Content, 8));
-                crnStatus.setTaskReceive((int) siemensNet.getByteTransform().TransInt16(result.Content, 10));
+                crnStatus.setBay((int) siemensNet.getByteTransform().TransInt16(result.Content, 6));
+                crnStatus.setLevel((int) siemensNet.getByteTransform().TransInt16(result.Content, 8));
+                crnStatus.setForkPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 10));
+                crnStatus.setLoaded((int) siemensNet.getByteTransform().TransInt16(result.Content, 12));
+                crnStatus.setTaskReceive((int) siemensNet.getByteTransform().TransInt16(result.Content, 14));
 
                 //宸ヤ綅2
-                crnStatus.setTaskNoTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 12));
-                crnStatus.setStatusTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 14));
-                crnStatus.setForkPosTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 16));
-                crnStatus.setLoadedTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 18));
-                crnStatus.setTaskReceiveTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 20));
+                crnStatus.setTaskNoTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 16));
+                crnStatus.setStatusTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 18));
+                crnStatus.setBayTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 20));
+                crnStatus.setLevelTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 22));
+                crnStatus.setForkPosTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 24));
+                crnStatus.setLoadedTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 26));
+                crnStatus.setTaskReceiveTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 28));
 
-                crnStatus.setBay((int) siemensNet.getByteTransform().TransInt16(result.Content, 22));
-                crnStatus.setLevel((int) siemensNet.getByteTransform().TransInt16(result.Content, 24));
-                crnStatus.setLiftPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 26));
-                crnStatus.setWalkPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 28));
-                crnStatus.setAlarm((int) siemensNet.getByteTransform().TransInt16(result.Content, 30));
-                crnStatus.setTemp1((int) siemensNet.getByteTransform().TransInt16(result.Content, 34));
-                crnStatus.setTemp2((int) siemensNet.getByteTransform().TransInt16(result.Content, 36));
-                crnStatus.setTemp3((int) siemensNet.getByteTransform().TransInt16(result.Content, 38));
-                crnStatus.setTemp4((int) siemensNet.getByteTransform().TransInt16(result.Content, 40));
-                crnStatus.setXSpeed((int) siemensNet.getByteTransform().TransInt16(result.Content, 42));
-                crnStatus.setYSpeed((int) siemensNet.getByteTransform().TransInt16(result.Content, 44));
-                crnStatus.setZSpeed((int) siemensNet.getByteTransform().TransInt16(result.Content, 46));
-                crnStatus.setXDistance((int) siemensNet.getByteTransform().TransInt16(result.Content, 48));
-                crnStatus.setYDistance((int) siemensNet.getByteTransform().TransInt16(result.Content, 50));
-                crnStatus.setXDuration((int) siemensNet.getByteTransform().TransInt16(result.Content, 52));
-                crnStatus.setYDuration((int) siemensNet.getByteTransform().TransInt16(result.Content, 54));
-                crnStatus.setGoodsType((int) siemensNet.getByteTransform().TransInt16(result.Content, 56));
+                crnStatus.setWalkPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 30));
+                crnStatus.setWalkPosTwo((int) siemensNet.getByteTransform().TransInt16(result.Content, 32));
+                crnStatus.setLiftPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 34));
+                crnStatus.setAlarm((int) siemensNet.getByteTransform().TransInt16(result.Content, 36));
+                crnStatus.setXSpeed((double) siemensNet.getByteTransform().TransSingle(result.Content, 38));
+                crnStatus.setYSpeed((double) siemensNet.getByteTransform().TransSingle(result.Content, 42));
+                crnStatus.setZSpeed((double) siemensNet.getByteTransform().TransSingle(result.Content, 46));
+                crnStatus.setZSpeedTwo((double) siemensNet.getByteTransform().TransSingle(result.Content, 50));
+                crnStatus.setXDistance((double) siemensNet.getByteTransform().TransSingle(result.Content, 54));
+                crnStatus.setYDistance((double) siemensNet.getByteTransform().TransSingle(result.Content, 58));
+                crnStatus.setXDuration((double) siemensNet.getByteTransform().TransSingle(result.Content, 62));
+                crnStatus.setYDuration((double) siemensNet.getByteTransform().TransSingle(result.Content, 66));
 
-                String barcode = siemensNet.getByteTransform().TransString(result.Content, 58, 8, "UTF-8");
-                crnStatus.setBarcode(barcode);
+                if (crnStatus.getStatus() == 0 && crnStatus.getTaskReceive() == 0) {
+                    OperateResultExOne<byte[]> taskResult = siemensNet.Read("DB100.0", (short) 18);
+                    if (taskResult.IsSuccess) {
+                        short taskNo = siemensNet.getByteTransform().TransInt16(taskResult.Content, 0);
+                        short taskMode = siemensNet.getByteTransform().TransInt16(taskResult.Content, 2);
+                        short sourcePosX = siemensNet.getByteTransform().TransInt16(taskResult.Content, 4);
+                        short sourcePosY = siemensNet.getByteTransform().TransInt16(taskResult.Content, 6);
+                        short sourcePosZ = siemensNet.getByteTransform().TransInt16(taskResult.Content, 8);
+                        short destinationPosX = siemensNet.getByteTransform().TransInt16(taskResult.Content, 10);
+                        short destinationPosY = siemensNet.getByteTransform().TransInt16(taskResult.Content, 12);
+                        short destinationPosZ = siemensNet.getByteTransform().TransInt16(taskResult.Content, 14);
+                        short confirm = siemensNet.getByteTransform().TransInt16(taskResult.Content, 16);
+
+                        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;
+                            OperateResult taskClearResult = siemensNet.Write("DB100.0", array);
+                        }
+                    }
+                }
+
+                if (crnStatus.getStatusTwo() == 0 && crnStatus.getTaskReceiveTwo() == 0) {
+                    OperateResultExOne<byte[]> taskResult = siemensNet.Read("DB100.18", (short) 18);
+                    if (taskResult.IsSuccess) {
+                        short taskNo = siemensNet.getByteTransform().TransInt16(taskResult.Content, 0);
+                        short taskMode = siemensNet.getByteTransform().TransInt16(taskResult.Content, 2);
+                        short sourcePosX = siemensNet.getByteTransform().TransInt16(taskResult.Content, 4);
+                        short sourcePosY = siemensNet.getByteTransform().TransInt16(taskResult.Content, 6);
+                        short sourcePosZ = siemensNet.getByteTransform().TransInt16(taskResult.Content, 8);
+                        short destinationPosX = siemensNet.getByteTransform().TransInt16(taskResult.Content, 10);
+                        short destinationPosY = siemensNet.getByteTransform().TransInt16(taskResult.Content, 12);
+                        short destinationPosZ = siemensNet.getByteTransform().TransInt16(taskResult.Content, 14);
+                        short confirm = siemensNet.getByteTransform().TransInt16(taskResult.Content, 16);
+
+                        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;
+                            OperateResult taskClearResult = siemensNet.Write("DB100.18", array);
+                        }
+                    }
+                }
+
                 return crnStatus;
             } else {
                 OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧弻宸ヤ綅鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort()));
@@ -161,14 +218,14 @@
              do {
                  OperateResultExOne<byte[]> resultRead = siemensNet.Read(address, (short) 18);
                  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);
+                    short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
+                    short taskMode = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2);
+                    short sourcePosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 4);
+                    short sourcePosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 6);
+                    short sourcePosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 8);
+                    short destinationPosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 10);
+                    short destinationPosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 12);
+                    short destinationPosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 14);
                     if (taskNo == 0 || taskMode == 0 || sourcePosX == 0 || sourcePosY == 0 || sourcePosZ == 0 || destinationPosX == 0 || destinationPosY == 0 || destinationPosZ == 0) {
                         result = siemensNet.Write(address, array);
                     } else {
diff --git a/src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java b/src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java
index 5f6a962..a9eb174 100644
--- a/src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java
@@ -251,13 +251,13 @@
         crnProtocol.setLiftPosTwo(0);
 
         crnProtocol.setAlarm(0);
-        crnProtocol.setXSpeed(0);
-        crnProtocol.setYSpeed(0);
-        crnProtocol.setZSpeed(0);
-        crnProtocol.setXDistance(0);
-        crnProtocol.setYDistance(0);
-        crnProtocol.setXDuration(0);
-        crnProtocol.setYDuration(0);
+        crnProtocol.setXSpeed(0D);
+        crnProtocol.setYSpeed(0D);
+        crnProtocol.setZSpeed(0D);
+        crnProtocol.setXDistance(0D);
+        crnProtocol.setYDistance(0D);
+        crnProtocol.setXDuration(0D);
+        crnProtocol.setYDuration(0D);
 
         BasDualCrnpService basDualCrnpService = null;
         try {
@@ -430,6 +430,9 @@
         crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
         crnCommand.setTaskNo(taskNo); // 宸ヤ綔鍙�
         crnCommand.setTaskMode(DualCrnTaskModeType.PICK.id); // 浠诲姟妯″紡:  鍙栬揣
+        crnCommand.setSourcePosX(Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
+        crnCommand.setSourcePosY(Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
+        crnCommand.setSourcePosZ(Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
         crnCommand.setDestinationPosX(Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
         crnCommand.setDestinationPosY(Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
         crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
@@ -444,6 +447,9 @@
         crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
         crnCommand.setTaskNo(taskNo); // 宸ヤ綔鍙�
         crnCommand.setTaskMode(DualCrnTaskModeType.PUT.id); // 浠诲姟妯″紡:  鏀捐揣
+        crnCommand.setSourcePosX(Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
+        crnCommand.setSourcePosY(Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
+        crnCommand.setSourcePosZ(Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
         crnCommand.setDestinationPosX(Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
         crnCommand.setDestinationPosY(Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
         crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
@@ -458,6 +464,9 @@
         crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
         crnCommand.setTaskNo(taskNo); // 宸ヤ綔鍙�
         crnCommand.setTaskMode(DualCrnTaskModeType.MOVE.id); // 浠诲姟妯″紡:  鍫嗗灈鏈虹Щ鍔�
+        crnCommand.setSourcePosX(Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
+        crnCommand.setSourcePosY(Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
+        crnCommand.setSourcePosZ(Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
         crnCommand.setDestinationPosX(Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
         crnCommand.setDestinationPosY(Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
         crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
diff --git "a/src/main/resources/map/\345\260\217\346\235\276\345\234\260\345\233\276.xlsx" "b/src/main/resources/map/\345\260\217\346\235\276\345\234\260\345\233\276.xlsx"
new file mode 100644
index 0000000..58fed38
--- /dev/null
+++ "b/src/main/resources/map/\345\260\217\346\235\276\345\234\260\345\233\276.xlsx"
Binary files differ

--
Gitblit v1.9.1