From 8aed3bbc70b7183d3c4085962e7942ee54365a7a Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 17 四月 2023 14:51:26 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/SiemensDevpThread.java |  120 +++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 79 insertions(+), 41 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 10463f9..cba849c 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -10,10 +10,12 @@
 import com.core.common.SpringUtils;
 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;
 import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.IoModeType;
 import com.zy.core.enums.SlaveType;
 import com.zy.core.model.DevpSlave;
 import com.zy.core.model.Task;
@@ -57,6 +59,17 @@
         this.slave = slave;
     }
 
+    /**
+     * 鍏ュ嚭搴撴ā寮�
+     * 0锛氭湭鐭�
+     * 1锛氬叆搴撳惎鍔ㄤ腑
+     * 2.鍏ュ簱妯″紡
+     * 3.鍑哄簱鍚姩涓� 锛堜笉鑳界敓鎴愬叆搴撳伐浣滄。锛�
+     * 4.鍑哄簱妯″紡
+     */
+    public IoModeType ioModeOf1F = IoModeType.NONE;
+    public IoModeType ioModeOf2F = IoModeType.NONE;
+
     @Override
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
@@ -75,7 +88,9 @@
                         break;
                     // 鍐欐暟鎹� ID+鐩爣绔�
                     case 2:
-                        write((StaProtocol)task.getData());
+                        write((StaProtocol)task.getData(), 0);
+                        Thread.sleep(300);
+                        read();
                         break;
                     default:
                         break;
@@ -100,10 +115,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("杈撻�佺嚎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("杈撻�佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
         }
         siemensS7Net.ConnectClose();
         return result;
@@ -113,6 +128,8 @@
      * 璇诲彇鐘舵�� ====> 鏁村潡plc
      */
     private void read() throws InterruptedException {
+        // 鏇存柊鍏ュ嚭搴撴ā寮�
+        updateIoMode();
         OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 50);
         if (result.IsSuccess) {
             for (int i = 0; i < 25; i++) {
@@ -179,8 +196,8 @@
         // 鍏呯數淇″彿浣�
         Thread.sleep(100);
         OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB102.50", (short)1);
-        if (result2.IsSuccess) {
-            boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, 0, 1);
+        if (result3.IsSuccess) {
+            boolean[] status = siemensS7Net.getByteTransform().TransBool(result3.Content, 0, 1);
             charge0 = status[0];
             charge1 = status[1];
             charge2 = status[2];
@@ -203,37 +220,56 @@
                 }
             } catch (Exception e) {
                 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("鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
             }
 
         } 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:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+//            News.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
         }
     }
 
     /**
      * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
      */
-    private void write(StaProtocol staProtocol) throws InterruptedException {
-        if (null == staProtocol) {
+    private void write(StaProtocol staProtocol, int times) throws InterruptedException {
+        if (null == staProtocol || times > 2) {
             return;
         }
         int index = staNos.indexOf(staProtocol.getSiteId());
         OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
-        Thread.sleep(500);
+        Thread.sleep(200);
         OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo());    // 鐩爣绔�
 
         if (!write.IsSuccess || !write1.IsSuccess) {
-            staProtocol = station.get(staProtocol.getSiteId());
-            if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
-                staProtocol.setPakMk(true);
-            }
+            MessageQueue.offer(SlaveType.Devp, slave.getId(), new Task(2, staProtocol));
             OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
-            log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+            News.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+            times++;
+            write(staProtocol, times);
+//            staProtocol = station.get(staProtocol.getSiteId());
+//            if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
+//                staProtocol.setPakMk(true);
+//            }
         } 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("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
+        }
+    }
+
+    // 鏇存柊鍏ュ嚭搴撴ā寮�
+    private void updateIoMode() throws InterruptedException {
+        if (this.ioModeOf1F != IoModeType.NONE) {
+            if (!siemensS7Net.Write("DB100.180", this.ioModeOf1F.id).IsSuccess) {
+                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎103鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+                News.error("鍐欏叆杈撻�佺嚎103鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
+            }
+        }
+        if (this.ioModeOf2F != IoModeType.NONE) {
+            if (!siemensS7Net.Write("DB100.182", this.ioModeOf2F.id).IsSuccess) {
+                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎203鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+                News.error("鍐欏叆杈撻�佺嚎203鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
+            }
         }
     }
 
@@ -248,7 +284,7 @@
         }
         OperateResult write = siemensS7Net.Write("DB100.50", heartBeatVal);
         if (!write.IsSuccess) {
-            log.error("杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId());
+            News.error("杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId());
         }
     }
 
@@ -268,11 +304,15 @@
      * @param index 鍏呯數妗╁簭鍙� 0 寮�濮�
      * @param open true 寮�濮嬪厖鐢碉紱false 缁撴潫鍏呯數
      */
-    public void charge(int index, boolean open) {
-        OperateResult write = siemensS7Net.Write("DB102.50." + index + 3, open);
+    public boolean charge(int index, boolean open) {
+        OperateResult write = siemensS7Net.Write("DB102.50." + (index + 3), open);
         if (!write.IsSuccess) {
-            log.error("杈撻�佺嚎plc缂栧彿={} {}鍙峰厖鐢垫々{}鎺у埗澶辫触", slave.getId(), index + 1, open?"鎵撳紑":"鍏抽棴");
+            News.error("杈撻�佺嚎plc缂栧彿={} {}鍙峰厖鐢垫々{}鎺у埗澶辫触", slave.getId(), index + 1, open?"鎵撳紑":"鍏抽棴");
+            return false;
+        } else {
+            News.error("杈撻�佺嚎plc缂栧彿={} {}鍙峰厖鐢垫々{}鎺у埗鎴愬姛", slave.getId(), index + 1, open?"鎵撳紑":"鍏抽棴");
         }
+        return true;
     }
 
     @Override
@@ -280,26 +320,24 @@
         siemensS7Net.ConnectClose();
     }
 
-    public static void main(String[] args) {
-//        System.out.println(staNos.indexOf(129));
-        System.out.println(staNos.size());
-        for (int i = 0; i<staNos.size(); i++) {
-//            System.out.println(i*2);
-//            System.out.println(i*2 + 200);
-//            System.out.println(i);
+    public static void main(String[] args) throws Exception {
+        DevpSlave slave = new DevpSlave();
+        slave.setIp("10.10.10.61");
+        slave.setPort(102);
+        slave.setRack(0);
+        slave.setSlot(0);
+        SiemensDevpThread devpThread = new SiemensDevpThread(slave);
+        SiemensS7Net siemensS7Net = devpThread.getSiemensS7Net();
+        siemensS7Net.setRack(slave.getRack().byteValue());
+        siemensS7Net.setSlot(slave.getSlot().byteValue());
+        OperateResult connect = siemensS7Net.ConnectServer();
+        if(connect.IsSuccess){
+            News.info("杈撻�佺嚎plc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+        } else {
+            News.error("杈撻�佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
         }
-//        int index = staNos.indexOf(128);
-//        System.out.println(index*2);
-//        System.out.println(index*2 + 200);
-    }
-
-//    public static void main(String[] args) throws Exception {
-//        DevpSlave slave = new DevpSlave();
-//        slave.setIp("192.168.2.125");
-//        SiemensDevpThread devpThread = new SiemensDevpThread(slave);
-//        devpThread.connect();
-//        devpThread.read();
-//        // 鍐�
+        siemensS7Net.ConnectClose();
+        // 鍐�
 //        StaProtocol staProtocol = devpThread.getStation().get(1);
 //        staProtocol.setWorkNo((short) 232);
 //        staProtocol.setStaNo((short) 6);
@@ -311,7 +349,7 @@
 //        // 璇�
 //        devpThread.read();
 //        System.out.println(JSON.toJSONString(devpThread.station));
-//
-//    }
+
+    }
 
 }

--
Gitblit v1.9.1