From 2d5f3029da3c66f22071b9d4f39d1470df6b3ff0 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期三, 16 三月 2022 12:53:39 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/MelsecCrnThread.java |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 59 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/MelsecCrnThread.java b/src/main/java/com/zy/core/thread/MelsecCrnThread.java
index 57d10ea..ce0f98d 100644
--- a/src/main/java/com/zy/core/thread/MelsecCrnThread.java
+++ b/src/main/java/com/zy/core/thread/MelsecCrnThread.java
@@ -24,6 +24,7 @@
 import com.zy.core.model.protocol.CrnProtocol;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.text.MessageFormat;
 import java.util.Date;
@@ -39,6 +40,7 @@
     private MelsecMcNet melsecMcNet;
     private CrnSlave slave;
     private CrnProtocol crnProtocol;
+    private short heartBeatVal = 1;
     private boolean resetFlag = false;
 
     public MelsecCrnThread(CrnSlave slave) {
@@ -49,6 +51,11 @@
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
         this.connect();
+//        try {
+//            Thread.sleep(2000);
+//        } catch (InterruptedException e) {
+//            e.printStackTrace();
+//        }
         while (true) {
             try {
                 int step = 1;
@@ -86,12 +93,40 @@
                     default:
                         break;
                 }
+                // 蹇冭烦
+                heartbeat();
                 Thread.sleep(500);
             } catch (Exception e) {
                 e.printStackTrace();
             }
 
         }
+    }
+
+    /**
+     * 鍒濆鍖栧爢鍨涙満鐘舵��
+     */
+    private void initCrn() {
+        if (null == crnProtocol) {
+            crnProtocol = new CrnProtocol();
+        }
+        crnProtocol.setMode((short) -1);
+//        crnProtocol.setTaskNo((short)0);
+        crnProtocol.setStatus((short)-1);
+        crnProtocol.setBay((short)0);
+        crnProtocol.setLevel((short)0);
+        crnProtocol.setForkPos((short) -1);
+        crnProtocol.setLiftPos((short) -1);
+        crnProtocol.setWalkPos((short)0);
+        crnProtocol.setLoaded((short)0);
+        crnProtocol.setAlarm((short)0);
+        crnProtocol.setXSpeed(0F);
+        crnProtocol.setYSpeed(0F);
+        crnProtocol.setZSpeed(0F);
+        crnProtocol.setXDistance(0F);
+        crnProtocol.setYDistance(0F);
+        crnProtocol.setXDuration(0F);
+        crnProtocol.setYDuration(0F);
     }
 
     @Override
@@ -106,8 +141,9 @@
         } else {
             OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝爢鍨涙満plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] ", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
             log.error("鍫嗗灈鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+            initCrn();
         }
-        melsecMcNet.ConnectClose();
+//        melsecMcNet.ConnectClose();
         return result;
     }
 
@@ -116,6 +152,11 @@
      */
     private void readStatus(){
         try {
+//            if (this.slave.getId() == 1 && flag1.equals(0)) {
+//                Thread.sleep(3000);
+//                flag1=1;
+//                System.out.println("===");
+//            }
             OperateResultExOne<byte[]> result = melsecMcNet.Read("D20", (short) 70);
             if (result.IsSuccess) {
                 if (null == crnProtocol) {
@@ -162,6 +203,7 @@
                 BasCrnp basCrnp = new BasCrnp();
                 basCrnp.setCrnErr(crnProtocol.getAlarm()==null?0:crnProtocol.getAlarm().longValue());
                 basCrnp.setCrnNo(slave.getId());
+                basCrnp.setCrnSts((int)crnProtocol.getMode());
                 if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){
                     log.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
                 }
@@ -174,6 +216,7 @@
             e.printStackTrace();
             OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
             log.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+            initCrn();
         }
 
     }
@@ -244,6 +287,21 @@
         melsecMcNet.ConnectClose();
     }
 
+    /**
+     * 蹇冭烦
+     */
+    private void heartbeat(){
+        if (heartBeatVal == 1) {
+            heartBeatVal = 2;
+        } else {
+            heartBeatVal = 1;
+        }
+        OperateResult write = melsecMcNet.Write("D10", heartBeatVal);
+        if (!write.IsSuccess) {
+            log.error("杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId());
+        }
+    }
+
 
     /******************************************************************************************/
     /**************************************** 娴嬭瘯涓撶敤 *****************************************/

--
Gitblit v1.9.1