From bdd676ea0246acd555fff9c98c8d0bf24865437c Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 19 一月 2026 17:42:50 +0800
Subject: [PATCH] WCS功能完善

---
 src/main/java/com/zy/core/thread/SiemensDevpThread.java |   60 +++++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 41 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index cfc018f..9b06e15 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -45,20 +45,20 @@
     private short heartBeatVal = 1;
     private StaError1 staError1;
     public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{
-        add(101);add(102);add(103);add(104);add(105);add(106);add(107);add(108);
+        add(201);add(202);add(203);add(204);add(205);
     }};
 
     public static final ArrayList<Integer> BarcodeList = new ArrayList<Integer>() {{
-        add(1); add(2);
+        add(1); add(2);add(3);
     }};
     public static final ArrayList<Integer> staNosErrList = new ArrayList<Integer>() {{
-        add(104); add(106);
+        add(201); add(203); add(205);
     }};
 
     /**
      * 鏉$爜鏁伴噺
      */
-    private int barcodeSize = 2;
+    private int barcodeSize = 3;
 
     /**
      * 鍏ュ嚭搴撴ā寮�
@@ -98,6 +98,9 @@
                     case 2:
                         write((StaProtocol)task.getData());
 //                        log.error("杈撻�佺嚎涓嬪彂鍛戒护锛�"+((StaProtocol) task.getData()).getWorkNo()+","+((StaProtocol) task.getData()).getStaNo());
+                        break;
+                    case 3:
+                        write1((StaProtocol)task.getData());
                         break;
                     default:
                         break;
@@ -183,7 +186,7 @@
     private void read() {
 
         // 绔欑偣淇℃伅
-        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (8*8));
+        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (8*5));
         if (result.IsSuccess) {
             for (int i = 0; i < staNos.size(); i++) {
                 Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
@@ -205,8 +208,9 @@
                 staProtocol.setEmptyMk(status[4]);  // 绌烘澘淇″彿
                 staProtocol.setFullPlt(status[5]);  // 婊℃墭鐩�
                 staProtocol.setHigh(status[6]);     // 楂樺簱浣�
-                staProtocol.setLow(status[7]);      // 涓簱浣�
-                staProtocol.setCenter(status[8]);   // 浣庡簱浣�
+                staProtocol.setLow(status[7]);      // 浣庡簱浣�
+                staProtocol.setChang(status[8]);   // 闀挎墭鐩�
+                staProtocol.setDuan(status[9]);   // 鐭墭鐩�
 
                 if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
                     staProtocol.setPakMk(true);
@@ -220,7 +224,7 @@
         }
 
         // 鏉$爜鎵弿鍣�
-        OperateResultExOne<byte[]> barcodeResult = siemensS7Net.Read("DB101.400", (short) (BarcodeList.size() * 10));
+        OperateResultExOne<byte[]> barcodeResult = siemensS7Net.Read("DB101.600", (short) (BarcodeList.size() * 10));
         if (barcodeResult.IsSuccess) {
             for (int i = 0; i < BarcodeList.size(); i++) {
                 String barcode = siemensS7Net.getByteTransform().TransString(barcodeResult.Content,i*10 + 2,8, "UTF-8");
@@ -232,28 +236,28 @@
         }
 
         // 澶栧舰妫�娴�
-        OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.430", (short) (staNosErrList.size() *4)); // 涓嶈繛缁紝澶氳涓棿涓�涓�
+        OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.700", (short) (staNosErrList.size() *4)); // 涓嶈繛缁紝澶氳涓棿涓�涓�
         if (resultErr.IsSuccess){
             for (int i = 0;i<staNosErrList.size();i++){
-                boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i*4, 1);
+                boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i*4 + 2, 1);
                 StaProtocol staProtocol = station.get(staNosErrList.get(i));
                 staProtocol.setFrontErr(status[0]);
                 staProtocol.setBackErr(status[1]);
                 staProtocol.setHighErr(status[2]);
                 staProtocol.setLeftErr(status[3]);
                 staProtocol.setRightErr(status[4]);
-                staProtocol.setGroupSupportErr(status[5]);
+//                staProtocol.setGroupSupportErr(status[5]);
+                staProtocol.setWeightErr(status[5]);
                 staProtocol.setBarcodeErr(status[6]);
-                staProtocol.setWeightErr(status[7]);
-                short goodsHeight = siemensS7Net.getByteTransform().TransInt16(resultErr.Content, i * 4 + 2);
-                staProtocol.setGoodsHeight(goodsHeight);
+//                short goodsHeight = siemensS7Net.getByteTransform().TransInt16(resultErr.Content, i * 4 + 2);
+//                staProtocol.setGoodsHeight(goodsHeight);
             }
         }
 
         // 鏁呴殰淇℃伅鍙嶉
-        OperateResultExOne<byte[]> resultErr2 = siemensS7Net.Read("DB101.442", (short) (staNos.size() * 4));
+        OperateResultExOne<byte[]> resultErr2 = siemensS7Net.Read("DB101.400", (short) (staNos.size() * 4));
         if (resultErr2.IsSuccess) {
-            for (int i = 0; i < staNos.size(); i++) {
+        for (int i = 0; i < staNos.size(); i++) {
                 boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr2.Content, i*4 + 2, 1);
                 StaProtocol staProtocol = station.get(staNos.get(i)); // 绔欑偣缂栧彿
                 staProtocol.setBreakerErr(status[0]);
@@ -305,15 +309,15 @@
             return;
         }
 
-        int address = staNos.indexOf(staProtocol.getSiteId()) * 4;
+        int address = staNos.indexOf(staProtocol.getSiteId()) * 6;
 
         OperateResult write;
         OperateResult write1;
         //浠诲姟涓嬪彂娆℃暟
         int writeCount = 0;
         do {
-            write = siemensS7Net.Write("DB100." + address, staProtocol.getWorkNo().shortValue());    // 宸ヤ綔鍙�
-            write1 = siemensS7Net.Write("DB100." + (address + 2), staProtocol.getStaNo());    // 鐩爣绔�
+            write1 = siemensS7Net.Write("DB100." + (address + 4), staProtocol.getStaNo());    // 鐩爣绔�
+            write = siemensS7Net.Write("DB100." + address, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
             Thread.sleep(200);
             if(write.IsSuccess && write1.IsSuccess){
                 break;
@@ -339,6 +343,24 @@
     }
 
     /**
+     * 鎵爜鍣ㄨЕ鍙�
+     */
+    private void write1(StaProtocol staProtocol) {
+        if (null == staProtocol) {
+            return;
+        }
+        OperateResult writeResult1 = siemensS7Net.Write("DB100.500",  true);    // 鎵爜鍣ㄨЕ鍙�
+        if (!writeResult1.IsSuccess) {
+
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
+            log.error("鍐欏叆鎵爜鍣ㄨЕ鍙戞暟鎹け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+        } else {
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
+            log.info("鎵爜鍣ㄨЕ鍙戜笅鍙� [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
+        }
+    }
+
+    /**
      * 蹇冭烦
      */
     private void heartbeat(){

--
Gitblit v1.9.1