From 19b3cd8d64af08e5c0b3bd680c699e46a07e13d3 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期五, 18 七月 2025 15:50:44 +0800
Subject: [PATCH] #预调度生成任务

---
 src/main/java/com/zy/core/thread/SiemensDevpThread.java |   77 +++++++++++++++++++++++++++++++++++++-
 1 files changed, 74 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 4055c3b..627bb17 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -95,6 +95,16 @@
         add(203);add(205);add(208);add(211);
     }};
 
+    public static final ArrayList<Integer> staNosInList1 = new ArrayList<Integer>() {{
+        add(122);
+        add(222);add(224);add(227);add(230);
+    }};
+
+    public static final ArrayList<Integer> staNosInList2 = new ArrayList<Integer>() {{
+        add(101); add(104);add(106);add(108);
+        add(202);add(204);add(207);add(210);
+    }};
+
     private Integer count=0;
 
     /**
@@ -117,6 +127,17 @@
 
     public SiemensDevpThread(DevpSlave slave) {
         this.slave = slave;
+    }
+
+    private ArrayList<Integer> getStaNoIn() {
+        switch (slave.getId()) {
+            case 1:
+                return staNosInList1;
+            case 2:
+                return staNosInList2;
+            default:
+                throw new CoolException("鏈嶅姟鍣ㄥ紓甯�");
+        }
     }
 
     private ArrayList<Integer> getStaNoErr() {
@@ -182,6 +203,9 @@
                     case 2:
                         write((StaProtocol)task.getData());
                         log.error("杈撻�佺嚎涓嬪彂鍛戒护锛�"+((StaProtocol) task.getData()).getWorkNo()+","+((StaProtocol) task.getData()).getStaNo());
+                        break;
+                    case 3:
+                        write2((StaProtocol)task.getData());
                         break;
                     default:
                         break;
@@ -271,6 +295,7 @@
         ArrayList<Integer> staNos = getStaNo();
         ArrayList<Integer> staNosErrList = getStaNoErr();
         ArrayList<Integer> staNoWeight = getStaNoWeight();
+        ArrayList<Integer> staNosInList = getStaNoIn();
         int staNoSize = staNos.size();
         OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (500 * 8));
         OperateResultExOne<byte[]> resultWeight = null;
@@ -355,6 +380,20 @@
                 }
             }
 
+            //鍏ュ簱婊¤冻
+            ArrayList<Integer> staNosIns = staNosInList;
+            int staNosInSize = staNosIns.size();
+            OperateResultExOne<byte[]> resultIn = siemensS7Net.Read("DB1000.0", (short) (staNosInSize * 6));
+            if(resultIn.IsSuccess){
+                for (int i = 0; i < staNosInSize; i++) {
+                    Integer siteId = staNosIns.get(i);
+                    StaProtocol staProtocol = station.get(siteId);
+                    staProtocol.setStamp(siemensS7Net.getByteTransform().TransInt32(result.Content, i*6));
+                }
+            }
+
+
+
 //        //plc鏁呴殰
 //        OperateResultExOne<byte[]> resultErr2 = siemensS7Net.Read("DB101.1728", (short) (staNoSize*4));
 //        if (resultErr2.IsSuccess) {
@@ -432,9 +471,41 @@
         }
 
 
-    /**
-     * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
-     */
+
+    private void write2(StaProtocol staProtocol) throws InterruptedException {
+        OperateResult write = null;
+        int writeCount = 0;
+        ArrayList<Integer> staNosInList = getStaNoIn();
+
+        ArrayList<Integer> staNosIns = staNosInList;
+        int staNosInSize = staNosIns.size();
+        OperateResultExOne<byte[]> resultIn = siemensS7Net.Read("DB1000.0", (short) (staNosInSize * 6));
+        int offset = 0;
+        if(resultIn.IsSuccess){
+            for (int i = 0; i < staNosInSize; i++) {
+                Integer siteId = staNosIns.get(i);
+                if(staProtocol.getSiteId() == siteId){
+                    offset = i;
+                }
+            }
+        }
+        do {
+            write = siemensS7Net.Write("DB1000." + offset*6 + 2,staProtocol.getWorkNo());    // 宸ヤ綔鍙�
+
+            if(write.IsSuccess ){
+                log.error("鍐欏叆杈撻�佺嚎鍛戒护鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+                break;
+            }
+            else {
+                writeCount++;
+                log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+            }
+        }while (writeCount<5);
+    }
+
+        /**
+         * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
+         */
     private void write(StaProtocol staProtocol) throws InterruptedException {
         if (null == staProtocol) {
             return;

--
Gitblit v1.9.1