From 62a19bf40e747ab986645728d65a63b927eddb6e Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期三, 09 四月 2025 09:17:54 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/core/thread/SiemensDevpThread.java |  173 +++++++++++++++++++++++++++++++--------------------------
 1 files changed, 95 insertions(+), 78 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 5e9dc63..c50efbf 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -125,10 +125,6 @@
                         write((StaProtocol)task.getData());
                         read();
                         break;
-                   /* case 3:
-                        write2((StaProtocol)task.getData());
-                        read();
-                        break;*/
                     default:
                         break;
                 }
@@ -155,13 +151,13 @@
                 staProtocol.setSiteId(siteId);
                 station.put(siteId, staProtocol);
             }
-            staProtocol.setWorkNo((short) 0);    // ID
+            staProtocol.setWorkNo(0);    // ID
             staProtocol.setAutoing(false);      // 鑷姩
             staProtocol.setLoading(false);      // 鏈夌墿
             staProtocol.setInEnable(false);     // 鍙叆
             staProtocol.setOutEnable(false);    // 鍙嚭
             staProtocol.setEmptyMk(false);      // 绌烘澘淇″彿
-            staProtocol.setStaNo((short) 0);     // 鐩爣绔�
+            staProtocol.setStaNo(0);     // 鐩爣绔�
 
             if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
                 staProtocol.setPakMk(true);
@@ -209,9 +205,9 @@
                     staProtocol.setSiteId(siteId);
                     station.put(siteId, staProtocol);
                 }
-                staProtocol.setWorkNo((short)siemensS7Net.getByteTransform().TransInt32(result.Content, i*8));     // 宸ヤ綔鍙�
+                staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, i*8));     // 宸ヤ綔鍙�
 
-                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*8 + 4));   // 鐩爣绔�
+                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt32(result.Content, i*8 + 4));   // 鐩爣绔�
 
                 boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*8 + 6, 2);
                 staProtocol.setAutoing(status[0]);  // 鑷姩
@@ -226,6 +222,72 @@
                 if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
                     staProtocol.setPakMk(true);
                 }
+            }
+        }
+
+        OperateResultExOne<byte[]> resultAgvAndPlc = siemensS7Net.Read("DB102.0", (short) 30);
+        if (resultAgvAndPlc.IsSuccess) {
+            for (int i = 0; i < staNoSize; i++) {
+                int sign =(i+2)/2-1;
+                if ((i+2)%2!=0){
+                    Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+                    StaProtocol staProtocol = station.get(siteId);
+                    if (null == staProtocol) {
+                        staProtocol = new StaProtocol();
+                        staProtocol.setSiteId(siteId);
+                        station.put(siteId, staProtocol);
+                    }
+//                    staProtocol.setAgvStartPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6+4));     // 鍏佽鍙栬揣
+//                    staProtocol.setAgvStartPlace((short)0);   // 鍏佽鏀捐揣
+                    continue;
+                }
+                Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+                StaProtocol staProtocol = station.get(siteId);
+                if (null == staProtocol) {
+                    staProtocol = new StaProtocol();
+                    staProtocol.setSiteId(siteId);
+                    station.put(siteId, staProtocol);
+                }
+//                staProtocol.setAgvStartPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6));     // 鍏佽鍙栬揣
+//                staProtocol.setAgvStartPlace(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6 + 2));   // 鍏佽鏀捐揣
+            }
+        }
+
+        OperateResultExOne<byte[]> resultAgvAndPlcOk = siemensS7Net.Read("DB132.0", (short) 30);
+        if (resultAgvAndPlcOk.IsSuccess) {
+            for (int i = 0; i < staNoSize; i++) {
+                int sign =(i+2)/2-1;
+                if ((i+2)%2!=0){
+                    Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+                    StaProtocol staProtocol = station.get(siteId);
+                    if (null == staProtocol) {
+                        staProtocol = new StaProtocol();
+                        staProtocol.setSiteId(siteId);
+                        station.put(siteId, staProtocol);
+                    }
+//                    staProtocol.setAgvTargetPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlcOk.Content, sign*6+4));     // 鍏佽鍙栬揣
+//                    staProtocol.setAgvTargetPlace((short)0);   // 鍏佽鏀捐揣
+                    continue;
+                }
+                Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+                StaProtocol staProtocol = station.get(siteId);
+                if (null == staProtocol) {
+                    staProtocol = new StaProtocol();
+                    staProtocol.setSiteId(siteId);
+                    station.put(siteId, staProtocol);
+                }
+//                try{
+//                    staProtocol.setAgvTargetPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlcOk.Content, sign*6));     // 鍙栬揣瀹屾垚
+//                    if (staProtocol.getAgvTargetPick()!=0){
+//                        System.out.println(staProtocol.getAgvTargetPick());
+//                    }
+//                    staProtocol.setAgvTargetPlace(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlcOk.Content, sign*6 + 2));   // 鏀捐揣瀹屾垚
+//                    if (staProtocol.getAgvTargetPlace()!=0){
+//                        System.out.println(staProtocol.getAgvTargetPlace());
+//                    }
+//                }catch (Exception e){
+//                    log.error(""+e);
+//                }
             }
         }
 
@@ -251,14 +313,14 @@
                     Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
                     boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4, 1);
                     StaProtocol staProtocol = station.get(siteId);
-                    staProtocol.setBreakerErr(status[0]);
-                    staProtocol.setInfraredErr(status[1]);
-                    staProtocol.setOutTimeErr(status[2]);
-                    staProtocol.setSeizeSeatErr(status[3]);
-                    staProtocol.setWrkYgoodsN(status[4]);
-                    staProtocol.setInverterErr(status[5]);
-                    staProtocol.setContactErr(status[6]);
-                    staProtocol.setUpcontactErr(status[7]);
+//                    staProtocol.setBreakerErr(status[0]);
+//                    staProtocol.setInfraredErr(status[1]);
+//                    staProtocol.setOutTimeErr(status[2]);
+//                    staProtocol.setSeizeSeatErr(status[3]);
+//                    staProtocol.setWrkYgoodsN(status[4]);
+//                    staProtocol.setInverterErr(status[5]);
+//                    staProtocol.setContactErr(status[6]);
+//                    staProtocol.setUpcontactErr(status[7]);
 
                 }
             }
@@ -321,9 +383,6 @@
         }
     }
 
-    /**
-     * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
-     */
     private void write(StaProtocol staProtocol) throws InterruptedException {
         if (null == staProtocol) {
             return;
@@ -331,42 +390,6 @@
         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 writeResult;
-        //浠诲姟涓嬪彂娆℃暟
-        int writeCount = 0;
-        //浠诲姟涓嬪彂鎴愬姛鏍囪瘑
-        boolean writeFlag = false;
-        OperateResult writeResult1 = siemensS7Net.Write("DB100." + index*6, (int) staProtocol.getWorkNo());    // 宸ヤ綔鍙�
-        OperateResult writeResult2 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo());    // 鐩爣绔�
-        if(writeResult1.IsSuccess&&writeResult2.IsSuccess){
-            //鏇存柊浠诲姟姝ュ簭
-            TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class);
-            TaskWrk taskWrk = taskWrkService.selectByWrkNo((int) staProtocol.getWorkNo());
-            if (taskWrk != null) {
-                taskWrk.setCommandStep(taskWrk.getCommandStep() + 1);//鏇存柊鎸囦护姝ュ簭
-                taskWrkService.updateById(taskWrk);
-            }else{
-                log.error("杈撻�佺嚎鍐欏叆澶辫触"+staProtocol+"++++++++++++++++++++++++++++++++++++++");
-            }
-        }
-
-
-    }
-    private void write2(StaProtocol staProtocol) throws InterruptedException {
-        if (null == staProtocol) {
-            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 writeResult;
         //浠诲姟涓嬪彂娆℃暟
@@ -374,41 +397,36 @@
         //浠诲姟涓嬪彂鎴愬姛鏍囪瘑
         boolean writeFlag = false;
         while(writeCount < 5){
-            writeResult = siemensS7Net.Write("DB100." + index*4, array);    // 宸ヤ綔鍙枫�佺洰鏍囩珯
-
-            if(writeResult.IsSuccess){
+            OperateResult writeResult1 = siemensS7Net.Write("DB100." + index*6,  staProtocol.getWorkNo().intValue());    // 宸ヤ綔鍙�
+            OperateResult writeResult2 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo());    // 鐩爣绔�
+            if(writeResult1.IsSuccess && writeResult2.IsSuccess){
                 Thread.sleep(200);
-                OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index*4, (short)4);
+                OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index*6, (short)6);
                 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)){
+                    Integer workNo = siemensS7Net.getByteTransform().TransInt32(readResult.Content, 0);
+                    short staNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 4);
+                    if(workNo.equals(staProtocol.getWorkNo().intValue()) && staProtocol.getStaNo().equals(staNo)){
                         //浠诲姟鍛戒护鍐欏叆鎴愬姛
                         writeFlag = true;
                         log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-
-                        Date now = new Date();
                         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);
         }
@@ -422,22 +440,21 @@
             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(3, staProtocol));
-            read();//璇诲彇1娆¤澶囩姸鎬�
-            return;
+//            //閲嶆柊娣诲姞鏁版嵁鍒颁换鍔¢槦鍒�
+//            boolean result = MessageQueue.offer(SlaveType.Devp, slave.getId(), new Task(2, staProtocol));
+//            read();//璇诲彇1娆¤澶囩姸鎬�
         } 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));
+            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);
-            }
-
+//            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