From 7399121975baf10c25314dede26469a420103ebf Mon Sep 17 00:00:00 2001
From: tqs <56479841@qq.com>
Date: 星期一, 13 三月 2023 13:46:32 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/SiemensDevpThread.java |  125 +++++++++++++++++++++++++++--------------
 1 files changed, 83 insertions(+), 42 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 0328479..b819693 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -11,6 +11,7 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.BasDevp;
 import com.zy.asrs.service.BasDevpService;
+import com.zy.common.utils.News;
 import com.zy.core.DevpThread;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.OutputQueue;
@@ -180,10 +181,10 @@
         if(connect.IsSuccess){
             result = true;
             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.info("杈撻�佺嚎plc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+            News.info("SiemensDevp"+" - 1"+" - 杈撻�佺嚎plc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
         } 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:{}]", slave.getId(), slave.getIp(), slave.getPort());
+            News.error("SiemensDevp"+" - 2"+" - 杈撻�佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
         }
         siemensS7Net.ConnectClose();
         initSite();
@@ -273,38 +274,48 @@
                     staProtocol.setPakMk(true);
                 }
 
-                //20230110锛屾棩蹇楁墦鍗帮紝纭鏀跺埌鍏ュ簱绔欏彲鍏ヤ俊鍙锋椂锛屽搴旀潯鐮佹暟鎹槸鍚﹀凡鏈�
-                if ((siteId==101 || siteId==109 || siteId==117 || siteId==201 || siteId==207 || siteId==213)
-                        && staProtocol.isInEnable()){
-                    Integer barcodeId = 0;
-                    switch (siteId){
-                        case 101:
-                            barcodeId=1;
-                            break;
-                        case 109:
-                            barcodeId=2;
-                            break;
-                        case 117:
-                            barcodeId=3;
-                            break;
-                        case 201:
-                            barcodeId=4;
-                            break;
-                        case 207:
-                            barcodeId=5;
-                            break;
-                        case 213:
-                            barcodeId=6;
-                            break;
-                    }
-                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
-                    if(barcodeThread!=null){
-                        log.info("{}绔欐湁鍙叆淇″彿鏃讹紝鏉$爜鍊间负{}", siteId, barcodeThread.getBarcode());
-                        if(Cools.isEmpty(barcodeThread.getBarcode())){
-                            staProtocol.setInEnable(false);//鏉$爜鏁版嵁涓虹┖鏃讹紝鍏堟竻涓�娆″唴瀛樼殑绔欑偣鍙叆淇″彿锛岀瓑寰呬笅涓�娆¤幏鍙栧彲鍏ヤ俊鍙�
-                        }
-                    }
+                if (!staProtocol.isLoading()){
+                    staProtocol.setStamp(0);
                 }
+                if (staProtocol.getStamp()<2 && staProtocol.isLoading()){
+                    //lfd鍏ュ簱鍗拌  褰搒tamp>=2鏃舵墠鍏ュ簱
+                    staProtocol.setStamp(staProtocol.getStamp()+1);
+                }
+
+//                //20230110锛屾棩蹇楁墦鍗帮紝纭鏀跺埌鍏ュ簱绔欏彲鍏ヤ俊鍙锋椂锛屽搴旀潯鐮佹暟鎹槸鍚﹀凡鏈�
+//                if ((siteId==101 || siteId==109 || siteId==117 || siteId==201 || siteId==207 || siteId==213)
+//                        && staProtocol.isInEnable()){
+//                    Integer barcodeId = 0;
+//                    switch (siteId){
+//                        case 101:
+//                            barcodeId=1;
+//                            break;
+//                        case 109:
+//                            barcodeId=2;
+//                            break;
+//                        case 117:
+//                            barcodeId=3;
+//                            break;
+//                        case 201:
+//                            barcodeId=4;
+//                            break;
+//                        case 207:
+//                            barcodeId=5;
+//                            break;
+//                        case 213:
+//                            barcodeId=6;
+//                            break;
+//                    }
+//                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
+//                    if(barcodeThread!=null){
+//                        //lfd鍏ュ簱鍗拌  褰搒tamp>=2鏃舵墠鍏ュ簱
+//                        staProtocol.setStamp(staProtocol.getStamp()+1);
+//                        News.info("{}绔欐湁鍙叆淇″彿鏃讹紝鏉$爜鍊间负{}", siteId, barcodeThread.getBarcode());
+//                        if(Cools.isEmpty(barcodeThread.getBarcode())){
+//                            staProtocol.setInEnable(false);//鏉$爜鏁版嵁涓虹┖鏃讹紝鍏堟竻涓�娆″唴瀛樼殑绔欑偣鍙叆淇″彿锛岀瓑寰呬笅涓�娆¤幏鍙栧彲鍏ヤ俊鍙�
+//                        }
+//                    }
+//                }
             }
         }
 
@@ -344,7 +355,7 @@
                 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()));
-                log.error("鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", 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 {
@@ -367,20 +378,50 @@
         array[1] = staProtocol.getStaNo();
 //        OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
 
-        OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
-        Thread.sleep(500);
-        OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo());    // 鐩爣绔�
+        OperateResult write = null;
+        OperateResult write1 = null;
+        //浠诲姟涓嬪彂娆℃暟
+        int writeCount = 0;
+        do {
+            write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
+            Thread.sleep(500);
+            write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo());    // 鐩爣绔�
+            if(write.IsSuccess || write1.IsSuccess){
+                Thread.sleep(200);
+                OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index*2, (short) 2);
+                OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB101." + index*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);
 
-        if (!write.IsSuccess) {
+        if (!write.IsSuccess || !write1.IsSuccess) {
             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)));
-            log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎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)));
-            log.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
+            News.info("SiemensDevp"+" - 5"+" - 杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
         }
     }
 
@@ -389,7 +430,7 @@
         if (this.ioModeOf2F != IoModeType.NONE) {
             if (!siemensS7Net.Write("DB100.180", this.ioModeOf2F.id).IsSuccess) {
                 OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎2F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
-                log.error("鍐欏叆杈撻�佺嚎2F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
+                News.error("SiemensDevp"+" - 6"+" - 鍐欏叆杈撻�佺嚎2F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
             }
         }
     }
@@ -405,7 +446,7 @@
         }
         OperateResult write = siemensS7Net.Write("DB100.50", heartBeatVal);
         if (!write.IsSuccess) {
-            log.error("杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId());
+            News.error("SiemensDevp"+" - 7"+" - 杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId());
         }
     }
 

--
Gitblit v1.9.1