From 4f64a5b70500e1ec7b0b350eb66749180ed2634a Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期日, 23 六月 2024 20:10:07 +0800
Subject: [PATCH] # 捷众二期开发

---
 src/main/java/com/zy/core/thread/SiemensDevpThread.java |  268 ++++++++++++++++++-----------------------------------
 1 files changed, 90 insertions(+), 178 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index a2528c8..506993f 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -192,15 +192,58 @@
      * 璇诲彇鐘舵�� ====> 鏁村潡plc
      */
     private void read() throws InterruptedException {
-//        // 鏇存柊鍏ュ嚭搴撴ā寮�
-//        updateIoMode();
-        String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
         ArrayList<Integer> staNos = getStaNo();
         int staNoSize = staNos.size();
+        // 璇诲彇1鍙疯緭閫佺嚎
         if (slave.getId() == 1) {
+            OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) (staNoSize * 8));
+            if (result.IsSuccess) {
+                for (int i = 0; i < staNoSize; i++) {
+                    Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+                    StaProtocol staProtocol = station.get(siteId);
+                    if (null == staProtocol) {
+                        staProtocol = new StaProtocol();
+                        staProtocol.setSiteId(siteId);
+                        station.put(siteId, staProtocol);
+                    }
+                    staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4));     // 宸ヤ綔鍙�
+                    staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4 + 2));   // 鐩爣绔�
+                    boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, 60+i, 1);
+                    staProtocol.setAutoing(status[0]);  // 鑷姩
+                    staProtocol.setLoading(status[1]);  // 鏈夌墿
+                    staProtocol.setInEnable(status[2]); // 鍙叆
+                    staProtocol.setOutEnable(status[3]);// 鍙嚭
+                    staProtocol.setEmptyMk(status[4]);  // 绌烘澘淇″彿
+                    staProtocol.setFullPlt(status[5]);  // 婊℃墭鐩�
+                    staProtocol.setHigh(status[6]);     // 楂樺簱浣�
+                    staProtocol.setLow(status[7]);      // 浣庡簱浣�
+                    staProtocol.setWeight(status[6]);  //鏄惁涓洪噸璐�
+                    if (!staProtocol.isPakMk() && staProtocol.isLoading()) {
+                        staProtocol.setPakMk(true);
+                    }
+                }
+            } else {
+                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+                log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
+            }
+
+            //鏉$爜鎵弿鍣�
+            Thread.sleep(200);
+            ArrayList<Integer> barcodeList = getBarcodeList();
+            OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100.90", (short) (barcodeList.size() * 8));
+            if (result2.IsSuccess) {
+                for (int i = 0; i < barcodeList.size(); i++) {
+                    Integer barcodeId = barcodeList.get(i);
+                    String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8");
+                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
+                    if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+                        barcodeThread.setBarcode(barcode);
+                    }
+                }
+            }
 
         } else if (slave.getId() == 2) {
-            OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*8));
+            OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize * 8));
             if (result.IsSuccess) {
                 for (int i = 0; i < staNoSize; i++) {
                     Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
@@ -211,8 +254,8 @@
                         station.put(siteId, staProtocol);
                     }
                     staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 8));     // 宸ヤ綔鍙�
-                    staProtocol.setStaNo( siemensS7Net.getByteTransform().TransInt16(result.Content, i*8 + 4 ));   // 鐩爣绔�
-                    boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*8+6, 1);
+                    staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 8 + 4));   // 鐩爣绔�
+                    boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i * 8 + 6, 1);
                     staProtocol.setAutoing(status[0]);  // 鑷姩
                     staProtocol.setLoading(status[1]);  // 鏈夌墿
                     staProtocol.setInEnable(status[2]); // 鍙叆
@@ -226,24 +269,6 @@
                         staProtocol.setPakMk(true);
                     }
                 }
-
-                // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
-                try {
-                    List<BasDevp> basDevps = new ArrayList<>();
-                    for (Integer siteId : staNos) {
-                        StaProtocol staProtocol = station.get(siteId);
-                        basDevps.add(staProtocol.toSqlModel());
-                    }
-
-                    BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
-                    if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
-                        throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
-                    News.error(methodName + ":鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
-                }
             } else {
                 OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
                 log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
@@ -251,16 +276,16 @@
 
             //澶栧舰妫�娴�
             OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.42", (short) 8);
-            if (resultErr.IsSuccess){
-                    boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, 0, 1);
-                    StaProtocol staProtocol = station.get(303);
-                    staProtocol.setFrontErr(status[0]);
-                    staProtocol.setBackErr(status[1]);
-                    staProtocol.setHighErr(status[2]);
-                    staProtocol.setLeftErr(status[3]);
-                    staProtocol.setRightErr(status[4]);
-                    staProtocol.setWeightErr(status[5]);
-                    staProtocol.setBarcodeErr(status[6]);
+            if (resultErr.IsSuccess) {
+                boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, 0, 1);
+                StaProtocol staProtocol = station.get(303);
+                staProtocol.setFrontErr(status[0]);
+                staProtocol.setBackErr(status[1]);
+                staProtocol.setHighErr(status[2]);
+                staProtocol.setLeftErr(status[3]);
+                staProtocol.setRightErr(status[4]);
+                staProtocol.setWeightErr(status[5]);
+                staProtocol.setBarcodeErr(status[6]);
             }
 
             //鏉$爜鎵弿鍣�
@@ -270,118 +295,31 @@
             if (result2.IsSuccess) {
                 for (int i = 0; i < barcodeList.size(); i++) {
                     Integer barcodeId = barcodeList.get(i);
-                    String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8");
+                    String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8");
                     BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
-                    if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+                    if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
                         barcodeThread.setBarcode(barcode);
                     }
                 }
             }
 
-//            //鏉$爜鎵弿鍣�
-//            Thread.sleep(200);
-//            OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.60",(short)8);
-//            if (result2.IsSuccess) {
-//                    String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,0,8, "UTF-8");
-//                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, 3);
-//                    if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
-//                        barcodeThread.setBarcode(barcode);
-//                    }
-//            }
         }
+        // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+        try {
+            List<BasDevp> basDevps = new ArrayList<>();
+            for (Integer siteId : staNos) {
+                StaProtocol staProtocol = station.get(siteId);
+                basDevps.add(staProtocol.toSqlModel());
+            }
 
-//
-//        if (result.IsSuccess) {
-//            for (int i = 0; i < staNoSize; i++) {
-//                Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
-//                StaProtocol staProtocol = station.get(siteId);
-//                if (null == staProtocol) {
-//                    staProtocol = new StaProtocol();
-//                    staProtocol.setSiteId(siteId);
-//                    station.put(siteId, staProtocol);
-//                }
-//                staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4));     // 宸ヤ綔鍙�
-//
-//                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4+2));   // 鐩爣绔�
-//            }
-//        }
-
-//        Thread.sleep(200);
-//        OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.60", (short) (staNoSize * 2));
-//        if (result1.IsSuccess) {
-//            for (int i = 0; i < staNoSize; i++) {
-//                Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
-//                boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*2, 1);
-//                boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result1.Content, i*2+1, 1);
-//                StaProtocol staProtocol = station.get(siteId);
-//                staProtocol.setAutoing(status[0]);  // 鑷姩
-//                staProtocol.setLoading(status[1]);  // 鏈夌墿
-//                staProtocol.setInEnable(status[2]); // 鍙叆
-//                staProtocol.setOutEnable(status[3]);// 鍙嚭
-//                staProtocol.setEmptyMk(status[4]);  // 绌烘澘淇″彿
-//                staProtocol.setFullPlt(status[5]);  // 婊℃墭鐩�
-//                staProtocol.setLow(status[6]);      // 浣庡簱浣�
-//                staProtocol.setMedium(status[7]);   // 涓簱浣�
-//                staProtocol.setMedium_high(status2[0]); //涓珮搴撲綅
-//                staProtocol.setHigh(status2[1]);     // 楂樺簱浣�
-//                if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
-//                    staProtocol.setPakMk(true);
-//                }
-//
-//                if (!staProtocol.isLoading()){
-//                    staProtocol.setStamp(0);
-//                }
-//            }
-//        }
-
-        //鎺ユ敹瓒呭瓒呴珮娌℃壂鍒版潯鐮佹姤璀�
-//        Thread.sleep(200);
-//        OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB101.34",(short)(1));
-//        if (result4.IsSuccess) {
-//            startSignal = siemensS7Net.getByteTransform().TransBool(result4.Content, 0, 1);
-//        }
-
-
-        //鏉$爜鎵弿鍣�
-//        Thread.sleep(200);
-//        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.60",(short)(barcodeSize*8));
-//        if (result2.IsSuccess) {
-//            for (int i = 0; i < barcodeSize; i++) {
-//                String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8");
-//                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
-//                if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
-//                    barcodeThread.setBarcode(barcode);
-//                }
-//            }
-//        }
-
-//        if (result.IsSuccess && result1.IsSuccess) {
-//
-//            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
-//
-//            // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
-//            try {
-//                List<BasDevp> basDevps = new ArrayList<>();
-//                for (Integer siteId : staNos) {
-//                    StaProtocol staProtocol = station.get(siteId);
-//                    basDevps.add(staProtocol.toSqlModel());
-//                }
-//
-//                BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
-//                if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
-//                    throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
-//                }
-//            } catch (Exception e) {
-//                initSite();
-//                e.printStackTrace();
-//                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
-//                News.error("SiemensDevp"+" - 3"+" - 鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
-//            }
-//
-//        } else {
-//            OutputQueue.DEVP.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("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
-//        }
+            BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
+            if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
+                throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+        }
     }
 
     /**
@@ -392,57 +330,31 @@
             return;
         }
         ArrayList<Integer> staNos = getStaNo();
-        int index = staNos.indexOf(staProtocol.getSiteId());
-        short[] array = new short[2];
-        array[0] = staProtocol.getWorkNo();
-        array[1] = staProtocol.getStaNo();
-//        OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
-
         OperateResult write = null;
         OperateResult write1 = null;
-//        //浠诲姟涓嬪彂娆℃暟
-//        int writeCount = 0;
-//        do {
-        write1 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo());    // 鐩爣绔�
+        // 鍐�2鍙疯緭閫佺嚎
+        if (slave.getId() == 1) {
+            int index = staNos.indexOf(staProtocol.getSiteId());
+            write = siemensS7Net.Write("DB100." + index * 4, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
             Thread.sleep(500);
-        write = siemensS7Net.Write("DB100." + index*6, staProtocol.getWorkNo().intValue());    // 宸ヤ綔鍙�
-
-//            if(write.IsSuccess || write1.IsSuccess){
-//                Thread.sleep(200);
-//                OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index*4, (short) 2);
-//                OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB100." + (index*4+2), (short) 2);
-//                if(readResult.IsSuccess && readResult1.IsSuccess){
-//                    short workNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0);
-//                    short staNo = siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 0);
-//                    if(staProtocol.getWorkNo().equals(workNo) && staProtocol.getStaNo().equals(staNo)){
-//                        //浠诲姟鍛戒护鍐欏叆鎴愬姛
-//                        log.info("鍐欏叆鍫嗗灈鏈哄懡浠ゅ悗杩斿洖鎴愬姛锛屽苟涓斿洖璇绘垚鍔熴�傚爢鍨涙満plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-//                        break;
-//                    } else {//杩斿洖缁撴灉鏄垚鍔熶簡锛屼絾鏄湡瀹炲�间笉鐩稿悓
-//                        writeCount++;
-//                        log.error("鍐欏叆鍫嗗灈鏈哄懡浠ゅ悗杩斿洖鎴愬姛锛屼絾鏄鍙栦换鍔″�间笉涓�鑷淬�傚爢鍨涙満plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-//                    }
-//                } else {
-//                    writeCount++;
-//                    log.error("鍐欏叆鍫嗗灈鏈哄懡浠ゅ悗璇诲彇澶辫触銆傚爢鍨涙満plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-//                }
-//            }
-//            else {
-//                writeCount++;
-//                log.error("鍐欏叆鍫嗗灈鏈哄懡浠ゅ悗璇诲彇澶辫触銆傚爢鍨涙満plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-//            }
-//        }while (writeCount<5);
+            write1 = siemensS7Net.Write("DB100." + (4 * index + 2), staProtocol.getStaNo());    // 鐩爣绔檈
+        } else {
+            int index = staNos.indexOf(staProtocol.getSiteId());
+            write1 = siemensS7Net.Write("DB100." + (index * 6 + 4), staProtocol.getStaNo());    // 鐩爣绔�
+            Thread.sleep(500);
+            write = siemensS7Net.Write("DB100." + index * 6, staProtocol.getWorkNo().intValue());    // 宸ヤ綔鍙�
+        }
 
         if (!write.IsSuccess || !write1.IsSuccess) {
             staProtocol = station.get(staProtocol.getSiteId());
-            if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
+            if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() == 0) {
                 staProtocol.setPakMk(true);
             }
             OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
-            News.error("SiemensDevp"+" - 4"+" - 鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+            News.error("SiemensDevp" + " - 4" + " - 鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎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)));
-            News.info("SiemensDevp"+" - 5"+" - 杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
+            News.info("SiemensDevp" + " - 5" + " - 杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol));
         }
     }
 

--
Gitblit v1.9.1