From 2ad9181dac193513bd973e09dc7458309a5db723 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 07 六月 2023 17:02:26 +0800
Subject: [PATCH] 输送线站点读取db

---
 src/main/java/com/zy/core/thread/SiemensDevpThread.java |  154 +++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 111 insertions(+), 43 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 718f5af..16309e4 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -45,8 +45,8 @@
     private int barcodeSize = 2;
     public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{
         add(100);add(101);add(102);
-        add(200);add(201);add(202);
-        add(300);add(301);add(302);
+        add(103);add(104);add(105);
+        add(106);add(107);add(108);
     }};
 
     public boolean charge0;
@@ -132,7 +132,7 @@
             }
         }
         Thread.sleep(200);
-        OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB102.100", (short) (staNos.size()));
+        OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB101.0", (short) (staNos.size()));
         if (result1.IsSuccess) {
             for (int i = 0; i < staNos.size(); i++) {
                 Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
@@ -166,52 +166,66 @@
             }
         }
 
-        // 鍏呯數淇″彿浣�
+        // 鍏呯數淇″彿浣�1
         Thread.sleep(50);
-        OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB102.109", (short)1);
-        if (result3.IsSuccess) {
-            boolean[] status = siemensS7Net.getByteTransform().TransBool(result3.Content, 0, 1);
-            charge0 = status[0];
+        OperateResultExOne<byte[]> result32 = siemensS7Net.Read("DB102.109", (short)1);
+        if (result32.IsSuccess) {
+            boolean[] status = siemensS7Net.getByteTransform().TransBool(result32.Content, 0, 1);
+            charge0 = status[0];  //1:鍙互鍏呯數   0锛氬彲鑳界绾� 鍙兘鍦ㄥ厖鐢�
         }
-        // 鍏呯數淇″彿浣�
+        // 鍏呯數淇″彿浣�2
         Thread.sleep(50);
         OperateResultExOne<byte[]> result31 = siemensS7Net.Read("DB100.201", (short)1);
-        if (result3.IsSuccess) {
+        if (result31.IsSuccess) {
             boolean[] status = siemensS7Net.getByteTransform().TransBool(result31.Content, 0, 1);
             charge1 = status[0];
         }
 
         // 澶栧舰妫�娴� - 102
         Thread.sleep(50);
-        OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB102.129", (short)1);
-        if (result4.IsSuccess) {
-            boolean[] status = siemensS7Net.getByteTransform().TransBool(result4.Content, 0, 1);
+        OperateResultExOne<byte[]> result102 = siemensS7Net.Read("DB102.110", (short)1);
+        if (result102.IsSuccess) {
+            boolean[] status = siemensS7Net.getByteTransform().TransBool(result102.Content, 0, 1);
             StaProtocol staProtocol = station.get(102);
-            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]);
+            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]);// 鎵爜澶辫触
         }
-        // 澶栧舰妫�娴� - 203
-        Thread.sleep(50);
-        OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB102.130", (short)1);
-        if (result5.IsSuccess) {
-            boolean[] status = siemensS7Net.getByteTransform().TransBool(result5.Content, 0, 1);
-            StaProtocol staProtocol = station.get(202);
-            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]);
-        }
+//        // 澶栧舰妫�娴� - 201
+//        Thread.sleep(50);
+//        OperateResultExOne<byte[]> result201 = siemensS7Net.Read("DB102.112", (short)1);
+//        if (result201.IsSuccess) {
+//            boolean[] status = siemensS7Net.getByteTransform().TransBool(result201.Content, 0, 1);
+//            StaProtocol staProtocol = station.get(201);
+//            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]);
+//        }
+//        // 澶栧舰妫�娴� - 301
+//        Thread.sleep(50);
+//        OperateResultExOne<byte[]> result301 = siemensS7Net.Read("DB102.114", (short)1);
+//        if (result301.IsSuccess) {
+//            boolean[] status = siemensS7Net.getByteTransform().TransBool(result301.Content, 0, 1);
+//            StaProtocol staProtocol = station.get(301);
+//            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 (result.IsSuccess && result1.IsSuccess) {
-
             OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
             // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
@@ -273,20 +287,74 @@
             return;
         }
         int index = staNos.indexOf(staProtocol.getSiteId());
-        OperateResult write = siemensS7Net.Write("DB100." + index*4, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
-        Thread.sleep(500);
-        OperateResult write1 = siemensS7Net.Write("DB100." + (index*4+2), staProtocol.getStaNo());    // 鐩爣绔�
+        short[] array = new short[2];
+        array[0] = staProtocol.getWorkNo();
+        array[1] = staProtocol.getStaNo();
+//        OperateResult write = siemensS7Net.Write("DB100." + index*4, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
+//        Thread.sleep(500);
+//        OperateResult write1 = siemensS7Net.Write("DB100." + (index*4+2), staProtocol.getStaNo());    // 鐩爣绔�
 
-        if (!write.IsSuccess || !write1.IsSuccess) {
+        OperateResult writeResult;
+        //浠诲姟涓嬪彂娆℃暟
+        int writeCount = 0;
+        //浠诲姟涓嬪彂鎴愬姛鏍囪瘑
+        boolean writeFlag = false;
+        while(writeCount < 5){
+            writeResult = siemensS7Net.Write("DB100." + index*4, array);    // 宸ヤ綔鍙枫�佺洰鏍囩珯
+            if(writeResult.IsSuccess){
+                Thread.sleep(200);
+                OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index*4, (short)4);
+                if(readResult.IsSuccess){
+                    short workNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0);
+                    short staNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 2);
+                    if(staProtocol.getWorkNo().equals(workNo) && staProtocol.getStaNo().equals(staNo)){
+                        //浠诲姟鍛戒护鍐欏叆鎴愬姛
+                        writeFlag = true;
+                        log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+                        break;
+                    } else {//杩斿洖缁撴灉鏄垚鍔熶簡锛屼絾鏄湡瀹炲�间笉鐩稿悓
+                        writeCount++;
+                        OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+                                slave.getId(), JSON.toJSON(staProtocol),writeCount));
+                        log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+                    }
+                } else {
+                    writeCount++;
+                    OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+                            slave.getId(), JSON.toJSON(staProtocol), writeCount));
+                    log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+                }
+            } else {
+                writeCount++;
+                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+                        slave.getId(), JSON.toJSON(staProtocol),writeCount));
+                log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+            }
+            Thread.sleep(200);
+        }
+
+        //鍐欏懡浠ゅ皾璇曚簡5娆¤繕鏄け璐ヤ簡
+        if(!writeFlag){
             staProtocol = station.get(staProtocol.getSiteId());
             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("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护灏濊瘯5娆″け璐ャ�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
+            log.error("鍐欏叆杈撻�佺嚎鍛戒护灏濊瘯5娆″け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+
+            //閲嶆柊娣诲姞鏁版嵁鍒颁换鍔¢槦鍒�
+            boolean result = MessageQueue.offer(SlaveType.Devp, slave.getId(), new Task(2, staProtocol));
+            read();//璇诲彇1娆¤澶囩姸鎬�
+            return;
         } else {
-            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
-            News.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
+            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));
+
+            Integer siteId = staProtocol.getSiteId();
+            staProtocol = station.get(siteId);
+            if ((siteId == 101 || siteId == 201)&&(staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0)) {
+                staProtocol.setPakMk(true);
+            }
         }
     }
 

--
Gitblit v1.9.1