From 4e70a88e1ed6704ec6fca7baac8d0dbe95d0feb1 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期三, 26 二月 2025 08:57:55 +0800
Subject: [PATCH] agv站点修改

---
 src/main/java/com/zy/core/thread/SiemensDevpThread.java |  134 ++++++++++++++++++++++++++++++--------------
 1 files changed, 92 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 9edf634..96f6cde 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -53,10 +53,13 @@
     add(1000);	add(1001);	add(1002);	add(1003);	add(1004);	add(1005);	add(1006);	add(1007);	add(1008);	add(1009);	add(1010);
     add(1011);	add(1012);	add(1013);	add(1014);	add(1015);	add(1016);	add(1017);	add(1018);	add(1019);	add(1020);	add(1021);
     add(1022);	add(1023);	add(1024);	add(1025);	add(1026);	add(1027);	add(1028);	add(1029);	add(1030);
+    add(2000); add(2001); add(2002); add(2003); add(2004);add(2005); add(2006); add(2007);
 //        add(200);add(201);add(202);
     }};
     public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
-       add(1400);
+       add(1040);add(1041);add(1042);add(1043);add(1044);add(1045);add(1046);add(1047);
+       add(2010);add(2011);add(2012);add(2013);add(2014);add(2015);add(2016);add(2017);
+       add(3010);add(3011);add(3012);add(3013);add(3014);add(3015);add(3016);add(3017);
 
 //        add(200);add(201);add(202);
     }};
@@ -125,7 +128,7 @@
                     // 鍐欐暟鎹� ID+鐩爣绔�
                     case 2:
                         writeD((StaProtocol)task.getData(),1);
-                        log.error("杈撻�佺嚎涓嬪彂鍛戒护锛�"+((StaProtocol) task.getData()).getWorkNo()+","+((StaProtocol) task.getData()).getStaNo());
+//                        log.error("杈撻�佺嚎涓嬪彂鍛戒护锛�"+((StaProtocol) task.getData()).getWorkNo()+","+((StaProtocol) task.getData()).getStaNo());
                         break;
                     default:
                         break;
@@ -220,9 +223,9 @@
                 StaProtocol staProtocol = station.get(siteId);
                 if (null == staProtocol) {
                     staProtocol = new StaProtocol();
-                    staProtocol.setSiteId(siteId);
                     station.put(siteId, staProtocol);
                 }
+                staProtocol.setSiteId(siteId);
                 staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, i*66 + 8));     // 宸ヤ綔鍙�
                 staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*66 + 12));   // 鐩爣绔�
                 staProtocol.setState(siemensS7Net.getByteTransform().TransInt16(result.Content, i*66 + 14));  // 妯″紡鐘舵�� 0鍋滄満锛�=1鎵嬪姩锛�=2鑷姩锛�=3鏁呴殰
@@ -230,11 +233,11 @@
                 staProtocol.setRequestIo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*66 + 18));
                 staProtocol.setTrayIo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*66 + 20));
                 staProtocol.setLocIo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*66 + 22));
-                staProtocol.setBarcode(siemensS7Net.getByteTransform().TransString(result.Content,i*66 + 24,16, "UTF-8"));
+                staProtocol.setBarcode(siemensS7Net.getByteTransform().TransString(result.Content,i*66 + 24,16, "UTF-8").trim());
 //                staProtocol.setWeightIo(siemensS7Net.getByteTransform().TransDouble(result.Content,i*66 + 40));
                 staProtocol.setMode(siemensS7Net.getByteTransform().TransInt16(result.Content, i*66 + 44));
 
-                if (!staProtocol.isPakMk() && staProtocol.workType == DevpWorkType.IDLE) {
+                if (!staProtocol.isPakMk() && (staProtocol.workType == DevpWorkType.IDLE  || staProtocol.isPakReset())) {
                     staProtocol.setPakMk(true);
                 }
             }
@@ -307,55 +310,102 @@
     }
 
     private void writeD(StaProtocol staProtocol,Integer count)throws InterruptedException{
+
+        boolean reset = true;
         if (null == staProtocol) {
             return;
+        }
+        staProtocol = staProtocol.clone();
+        Integer oriWrkNo = staProtocol.getWorkNo();
+        short oriStaNo = staProtocol.getStaNo();
+        ArrayList<Integer> staNos = getStaNo();
+        int index = staNos.indexOf(staProtocol.getSiteId());
+
+
+        if(writeWrk(staProtocol,1)){
+
+            int whileCount = 0;
+            OperateResult write3 = siemensS7Net.Write("DB100." + (index*66+6), (short) 1);
+            if (write3.IsSuccess){
+                News.info("杈撻�佺嚎鍛戒护涓嬪彂[id:"+slave.getId()+"] >>>>>"+"["+1+"]");
+                Thread.sleep(100);
+                do {
+                    OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100."+(index*66 +6), (short) 2);
+                    short mk = siemensS7Net.getByteTransform().TransInt16(result2.Content, 0);
+                    if (mk == 2){
+                        OperateResult write5 = siemensS7Net.Write("DB100." + index*66, 0);    // 宸ヤ綔鍙�
+                        Thread.sleep(100);
+                        OperateResult write6 = siemensS7Net.Write("DB100." + (index*66+4), (short) 0);    // 鐩爣绔�
+                        Thread.sleep(100);
+                        OperateResult write4 = siemensS7Net.Write("DB100." + (index*66+6), (short) 0);
+                        reset = false;
+                        if (write4.IsSuccess && write5.IsSuccess && write6.IsSuccess){
+                            News.info("杈撻�佺嚎鍛戒护涓嬪彂[id:"+slave.getId()+"] >>>>>"+"["+"0,0,0"+"]");
+                            OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100."+(index*66), (short) 8);
+                            Integer wrkNo1 = siemensS7Net.getByteTransform().TransInt32(result1.Content, 0);
+                            short staNo1 = siemensS7Net.getByteTransform().TransInt16(result1.Content, 4);
+                            short mk1 = siemensS7Net.getByteTransform().TransInt16(result1.Content, 6);
+                            if (wrkNo1 != 0 || staNo1 !=0 || mk1 !=0){
+                                whileCount++;
+                                News.info("澶嶄綅澶辫触,杈撻�佺嚎鍛戒护涓嬪彂[id:"+slave.getId()+"] >>>>>"+"["+"0,0,0"+"]");
+                            }else {
+                                News.info("杈撻�佺嚎澶嶄綅瀹屾垚");
+                                break;
+                            }
+
+                        }
+                    }else if (reset && mk == 0 ){
+                        OperateResult write7 = siemensS7Net.Write("DB100." + (index*66+6), (short) 1);
+                        News.info("鍥炶1澶辫触锛岃緭閫佺嚎鍛戒护涓嬪彂[id:"+slave.getId()+"] >>>>>"+"["+"1"+"]");
+                        Thread.sleep(100);
+                        whileCount++;
+                    }else {
+                        whileCount++;
+                    }
+                }while (whileCount <10);
+            }
+        }else {
+            log.error("杈撻�佸懡浠や笅鍙戝け璐�"+JSON.toJSONString(staProtocol));
+        }
+
+
+
+    }
+
+    private boolean writeWrk(StaProtocol staProtocol,Integer count)throws InterruptedException {
+
+        if (null == staProtocol) {
+            return false;
         }
         Integer oriWrkNo = staProtocol.getWorkNo();
         short oriStaNo = staProtocol.getStaNo();
 
         ArrayList<Integer> staNos = getStaNo();
         int index = staNos.indexOf(staProtocol.getSiteId());
-
-        OperateResult write1 = siemensS7Net.Write("DB100." + index*66, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
-        Thread.sleep(100);
-        OperateResult write2 = siemensS7Net.Write("DB100." + (index*66+4), staProtocol.getStaNo());    // 鐩爣绔�
-        if(write1.IsSuccess && write2.IsSuccess){
-            OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100."+(index*66), (short) 6);
-            Integer wrkNo = siemensS7Net.getByteTransform().TransInt32(result.Content, 0);
-            short staNo = siemensS7Net.getByteTransform().TransInt16(result.Content, 4);
-            if (!oriWrkNo.equals(wrkNo)  || oriStaNo != staNo){
-                if (count >= 5){
-                    log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), count);
-                    return;
-                }
-                count++;
-                writeD(staProtocol,count);
-            }
-            int whileCount = 0;
-            OperateResult write3 = siemensS7Net.Write("DB100." + (index*66+6), (short) 1);
-            if (write3.IsSuccess){
-                Thread.sleep(200);
-                do {
-                    OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100."+(index*66 +6), (short) 2);
-                    short mk = siemensS7Net.getByteTransform().TransInt16(result2.Content, 0);
-                    if (mk == 2){
-                        OperateResult write5 = siemensS7Net.Write("DB100." + index*66, 0);    // 宸ヤ綔鍙�
-                        OperateResult write6 = siemensS7Net.Write("DB100." + (index*66+4), (short) 0);    // 鐩爣绔�
-                        OperateResult write4 = siemensS7Net.Write("DB100." + (index*66+6), (short) 0);
-                        if (write4.IsSuccess){
-                            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));
-                            break;
-                        }
-                    }else {
-                        whileCount++;
+        do {
+            log.info("杈撻�侀�掑綊娆℃暟:" + count);
+            OperateResult write1 = siemensS7Net.Write("DB100." + index * 66, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
+            Thread.sleep(100);
+            OperateResult write2 = siemensS7Net.Write("DB100." + (index * 66 + 4), staProtocol.getStaNo());    // 鐩爣绔�
+            if (write1.IsSuccess && write2.IsSuccess) {
+                News.info("杈撻�佺嚎鍛戒护涓嬪彂[id:" + slave.getId() + "] >>>>>" + "[" + staProtocol.getWorkNo() + "," + staProtocol.getStaNo() + "]");
+                OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100." + (index * 66), (short) 6);
+                Integer wrkNo = siemensS7Net.getByteTransform().TransInt32(result.Content, 0);
+                short staNo = siemensS7Net.getByteTransform().TransInt16(result.Content, 4);
+                if (!oriWrkNo.equals(wrkNo) || oriStaNo != staNo) {
+                    if (count >= 5) {
+                        log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), count);
+                        return false;
                     }
-                }while (whileCount <5);
+                    count++;
+                }else {
+                    return true;
+                }
             }
-        }
+        }while (count <=5);
 
 
-
+        return true;
     }
 
     // 鏇存柊鍏ュ嚭搴撴ā寮�

--
Gitblit v1.9.1