From 3d2a161ca245484a3162b439cadf348b2f3a75fa Mon Sep 17 00:00:00 2001
From: 野心家 <1051256694@qq.com>
Date: 星期三, 23 四月 2025 15:06:37 +0800
Subject: [PATCH] 初始化

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

diff --git a/src/main/java/com/zy/core/thread/MelsecCrnThread.java b/src/main/java/com/zy/core/thread/MelsecCrnThread.java
index 53f159b..84ed59e 100644
--- a/src/main/java/com/zy/core/thread/MelsecCrnThread.java
+++ b/src/main/java/com/zy/core/thread/MelsecCrnThread.java
@@ -4,14 +4,15 @@
 import HslCommunication.Core.Types.OperateResultExOne;
 import HslCommunication.Profinet.Melsec.MelsecMcNet;
 import com.alibaba.fastjson.JSON;
-import com.core.common.Arith;
 import com.core.common.DateUtils;
 import com.core.common.SpringUtils;
+import com.core.exception.CoolException;
 import com.zy.asrs.entity.BasCrnOpt;
 import com.zy.asrs.entity.BasCrnp;
 import com.zy.asrs.service.BasCrnOptService;
 import com.zy.asrs.service.BasCrnpService;
 import com.zy.core.CrnThread;
+import com.zy.core.ThreadHandler;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.OutputQueue;
 import com.zy.core.enums.CrnStatusType;
@@ -25,7 +26,6 @@
 import lombok.extern.slf4j.Slf4j;
 
 import java.text.MessageFormat;
-import java.util.Calendar;
 import java.util.Date;
 
 /**
@@ -34,14 +34,18 @@
  */
 @Data
 @Slf4j
-public class MelsecCrnThread implements Runnable, CrnThread {
+public class MelsecCrnThread implements Runnable, ThreadHandler, CrnThread {
 
     private MelsecMcNet melsecMcNet;
     private CrnSlave slave;
     private CrnProtocol crnProtocol;
-    private boolean resetFlag = false;
     private short heartBeatVal = 1;
-    private int heartTimes = 0;
+    private boolean resetFlag = false;
+
+    /**
+     * 鍫嗗灈鏈烘槸鍚﹀湪鍥炲師鐐硅繍鍔ㄤ腑鏍囪
+     */
+    private boolean backHpFlag = false;
 
     public MelsecCrnThread(CrnSlave slave) {
         this.slave = slave;
@@ -51,6 +55,11 @@
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
         this.connect();
+//        try {
+//            Thread.sleep(2000);
+//        } catch (InterruptedException e) {
+//            e.printStackTrace();
+//        }
         while (true) {
             try {
                 int step = 1;
@@ -88,18 +97,40 @@
                     default:
                         break;
                 }
-                // 蹇冭烦 2s涓�娆�
-                heartTimes++;
-                if (Arith.remainder(heartTimes, 4) == 0) {
-                    heartbeat();
-                    heartTimes = 0;
-                }
+                // 蹇冭烦
+                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((short)0);
+        crnProtocol.setySpeed((short)0);
+        crnProtocol.setzSpeed((short)0);
+        crnProtocol.setxDistance((short)0);
+        crnProtocol.setyDistance((short)0);
+        crnProtocol.setxDuration((short)0);
+        crnProtocol.setyDuration((short)0);
     }
 
     @Override
@@ -110,45 +141,13 @@
         if(connect.IsSuccess){
             result = true;
             OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戝爢鍨涙満plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-            log.info("鍫嗗灈鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
+            log.info("鍫嗗灈鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
         } 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());
+            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();
         }
-        // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-        /**
-         *      array[1] = command.getSourcePosY(); // 鍒�
-         *         array[2] = command.getSourcePosZ(); // 灞�
-         *         array[3] = command.getSourcePosX(); // 鎺�
-         *         array[4] = command.getDestinationPosY(); // 鍒�
-         *         array[5] = command.getDestinationPosZ();  // 灞�
-         *         array[6] = command.getDestinationPosX(); // 鎺�
-         *         array[7] = command.getTaskNo();
-         */
-        Date date = new Date();
-        Calendar cal = Calendar.getInstance();
-        cal.setTime(date);
-        CrnCommand crnCommand = new CrnCommand();
-        crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-        crnCommand.setTaskMode(CrnTaskModeType.TIMING); // 浠诲姟妯″紡:  璁剧疆鏃堕棿
-        crnCommand.setSourcePosY((short) cal.get(Calendar.YEAR));     // 骞达細1980锝�2079
-        crnCommand.setSourcePosZ((short) (cal.get(Calendar.MONTH)+1));     // 鏈堬細1锝�12
-        crnCommand.setSourcePosX((short) cal.get(Calendar.DATE));     // 鏃ワ細1锝�31
-        crnCommand.setDestinationPosY((short) cal.get(Calendar.HOUR_OF_DAY));     // 鏃讹細0锝�23
-        crnCommand.setDestinationPosZ((short) cal.get(Calendar.MINUTE));     // 鍒嗭細0锝�59
-        crnCommand.setDestinationPosX((short) cal.get(Calendar.SECOND));     // 绉掞細0锝�59
-//        crnCommand.setTaskNo((short) (cal.get(Calendar.DAY_OF_WEEK) - 1));     // 鏄熸湡锛�0(鏃�)锝�6(鍏�)
-        crnCommand.setTaskNo((short) 0);     // 鏄熸湡锛�0(鏃�)锝�6(鍏�)
-        crnCommand.setTaskSend((short) 1);
-        crnCommand.setAckFinish((short) 0);
-        if (write(crnCommand)) {
-            log.info("鍫嗗灈鏈簆lc鏍″鏃堕棿鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
-        }
-
-        melsecMcNet.ConnectClose();
-        try {
-            Thread.sleep(1000);
-        } catch (InterruptedException ignore) {}
+//        melsecMcNet.ConnectClose();
         return result;
     }
 
@@ -156,61 +155,78 @@
      * 璇诲彇鐘舵��
      */
     private void readStatus(){
-        OperateResultExOne<byte[]> result = melsecMcNet.Read("D1119", (short) 58);
-        if (result.IsSuccess) {
-            if (null == crnProtocol) {
-                crnProtocol = new CrnProtocol();
-            }
-            crnProtocol.setTaskNo(melsecMcNet.getByteTransform().TransInt16(result.Content, 0));
-            crnProtocol.setMode(melsecMcNet.getByteTransform().TransInt16(result.Content, 2));
-            crnProtocol.setStatus(melsecMcNet.getByteTransform().TransInt16(result.Content, 4));
-            crnProtocol.setBay(melsecMcNet.getByteTransform().TransInt16(result.Content, 6));
-            crnProtocol.setLevel(melsecMcNet.getByteTransform().TransInt16(result.Content, 8));
-            crnProtocol.setForkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 10));
-            crnProtocol.setLiftPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 12));
-            crnProtocol.setWalkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 14));
-            crnProtocol.setFingerPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 16));
-            crnProtocol.setLoaded(melsecMcNet.getByteTransform().TransInt16(result.Content, 18));
-            crnProtocol.setAlarm1(melsecMcNet.getByteTransform().TransInt16(result.Content, 20));
-            crnProtocol.setTemp1(melsecMcNet.getByteTransform().TransInt16(result.Content, 22));
-            crnProtocol.setTemp2(melsecMcNet.getByteTransform().TransInt16(result.Content, 24));
-            crnProtocol.setTemp3(melsecMcNet.getByteTransform().TransInt16(result.Content, 26));
-            crnProtocol.setTemp4(melsecMcNet.getByteTransform().TransInt16(result.Content, 28));
-            crnProtocol.setXSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 30));
-            crnProtocol.setYSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 34));
-            crnProtocol.setZSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 38));
-            crnProtocol.setXDistance(melsecMcNet.getByteTransform().TransSingle(result.Content, 42));
-            crnProtocol.setYDistance(melsecMcNet.getByteTransform().TransSingle(result.Content, 46));
-            crnProtocol.setXDuration(melsecMcNet.getByteTransform().TransSingle(result.Content, 50));
-            crnProtocol.setYDuration(melsecMcNet.getByteTransform().TransSingle(result.Content, 54));
-
-            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
-
-            // 澶嶄綅淇″彿
-            if (crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
-                if (resetFlag) {
-                    CrnCommand crnCommand = new CrnCommand();
-                    crnCommand.setAckFinish((short)1);
-                    if (write(crnCommand)) {
-                        resetFlag = false;
-                    }
-
+        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) {
+                    crnProtocol = new CrnProtocol();
+                    crnProtocol.setCrnNo(slave.getId());
                 }
-            }
+                crnProtocol.setMode(melsecMcNet.getByteTransform().TransInt16(result.Content, 0));
+                crnProtocol.setTaskNo(melsecMcNet.getByteTransform().TransInt16(result.Content, 2));
+                crnProtocol.setStatus(melsecMcNet.getByteTransform().TransInt16(result.Content, 4));
+                crnProtocol.setBay(melsecMcNet.getByteTransform().TransInt16(result.Content, 6));
+                crnProtocol.setLevel(melsecMcNet.getByteTransform().TransInt16(result.Content, 8));
+                crnProtocol.setForkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 10));
+                crnProtocol.setLiftPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 12));
+                crnProtocol.setWalkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 14));
+                crnProtocol.setLoaded(melsecMcNet.getByteTransform().TransInt16(result.Content, 16));
+                crnProtocol.setAlarm(melsecMcNet.getByteTransform().TransInt16(result.Content, 18));
+                crnProtocol.setTemp1(melsecMcNet.getByteTransform().TransInt16(result.Content, 20));
+                crnProtocol.setTemp2(melsecMcNet.getByteTransform().TransInt16(result.Content, 22));
+                crnProtocol.setTemp3(melsecMcNet.getByteTransform().TransInt16(result.Content, 24));
+                crnProtocol.setTemp4(melsecMcNet.getByteTransform().TransInt16(result.Content, 26));
+                crnProtocol.setxSpeed(melsecMcNet.getByteTransform().TransInt16(result.Content, 28));
+                crnProtocol.setySpeed(melsecMcNet.getByteTransform().TransInt16(result.Content, 32));
+                crnProtocol.setzSpeed(melsecMcNet.getByteTransform().TransInt16(result.Content, 36));
+                crnProtocol.setxDistance(melsecMcNet.getByteTransform().TransInt16(result.Content, 40));
+                crnProtocol.setyDistance(melsecMcNet.getByteTransform().TransInt16(result.Content, 44));
+                crnProtocol.setxDuration(melsecMcNet.getByteTransform().TransInt16(result.Content, 48));
+                crnProtocol.setyDuration(melsecMcNet.getByteTransform().TransInt16(result.Content, 52));
 
-            // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
-            BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
-            BasCrnp basCrnp = new BasCrnp();
-            basCrnp.setCrnNo(slave.getId());
-            crnProtocol.setAlarm1((short) (crnProtocol.getAlarm1() + 1000));
-            if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){
-                log.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-            }
+                OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
-        } else {
+                // 澶嶄綅淇″彿
+                if (crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
+                    log.error("-------------------------------------------绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}][宸ヤ綔鍙凤細{}]==>> 鐘舵�佷负90锛岀瓑寰呯‘璁わ紒锛�",slave.getId(),crnProtocol.getTaskNo());
+                    if (resetFlag) {
+                        if(crnProtocol.getTaskNo()==9999){
+                            backHpFlag = false;
+                        }
+                        CrnCommand crnCommand = new CrnCommand();
+                        crnCommand.setAckFinish((short)1);
+                        if (write(crnCommand)) {
+                            resetFlag = false;
+                        }
+                    }
+                }
+
+                // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+                BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
+                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());
+                }
+
+            } else {
+                OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆憑1}鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐�",DateUtils.convert(new Date()), slave.getId()));
+                throw new CoolException(MessageFormat.format( "鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort()));
+            }
+        } catch (Exception e) {
+            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();
         }
+
     }
 
     /**
@@ -221,53 +237,100 @@
             log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
             return false;
         }
-        if (command.getAckFinish() == 1) {
-            command.setTaskSend((short) 0);
-            command.setTaskNo((short) 0);
-        } else if (command.getAckFinish() == 0) {
-            command.setTaskSend((short) 1);
-        }
+
+//        OperateResult result = null;
+//        try{
+//            Integer exeCount=0;
+//            do{
+//                command.setCrnNo(slave.getId());
+//                short[] array = new short[10];
+//                array[0] = command.getAckFinish();
+//                array[1] = command.getTaskNo();
+//                array[2] = command.getTaskMode();
+//                array[3] = command.getSourcePosX();
+//                array[4] = command.getSourcePosY();
+//                array[5] = command.getSourcePosZ();
+//                array[6] = command.getDestinationPosX();
+//                array[7] = command.getDestinationPosY();
+//                array[8] = command.getDestinationPosZ();
+//                array[9] = command.getCommand();
+//                result = melsecMcNet.Write("D0", array);
+//                if(result.IsSuccess) {
+//                    if (command.getAckFinish() == 0) {
+//                        short commandFinish = 1;
+//                        result = melsecMcNet.Write("D9", commandFinish);
+//                        if(result.IsSuccess){
+//                            //鍐欎换鍔$‘璁よ繑鍥炴垚鍔熷悗锛屾煡璇㈢‘璁や竴娆�
+//                            Thread.sleep(200);
+//                            OperateResultExOne<byte[]> result1 = melsecMcNet.Read("D9", (short)2);
+//                            if(result1.IsSuccess){
+//                                short commandVal = melsecMcNet.getByteTransform().TransInt16(result1.Content,2);
+//                                if(commandVal==1){
+//                                    break;
+//                                } else {
+//                                    exeCount++;
+//                                }
+//                            } else{
+//                                exeCount++;
+//                            }
+//                        }else{
+//                            exeCount++;
+//                        }
+//                    }
+//                }else{
+//                    exeCount++;
+//                }
+//                Thread.sleep(200);
+//            }while(exeCount>3);
+//        }catch (Exception e){
+//
+//        }
+
         command.setCrnNo(slave.getId());
         short[] array = new short[10];
-        array[0] = command.getTaskMode();
-        array[1] = command.getSourcePosY(); // 鍒�
-        array[2] = command.getSourcePosZ(); // 灞�
-        array[3] = command.getSourcePosX(); // 鎺�
-        array[4] = command.getDestinationPosY(); // 鍒�
-        array[5] = command.getDestinationPosZ();  // 灞�
-        array[6] = command.getDestinationPosX(); // 鎺�
-        array[7] = command.getTaskNo();
-        array[8] = command.getTaskSend();
-        array[9] = command.getAckFinish();
+        array[0] = command.getAckFinish();
+        array[1] = command.getTaskNo();
+        array[2] = command.getTaskMode();
+        array[3] = command.getSourcePosX();
+        array[4] = command.getSourcePosY();
+        array[5] = command.getSourcePosZ();
+        array[6] = command.getDestinationPosX();
+        array[7] = command.getDestinationPosY();
+        array[8] = command.getDestinationPosZ();
+        array[9] = command.getCommand();
+        OperateResult result = melsecMcNet.Write("D0", array);
 
-        OperateResult result = melsecMcNet.Write("D1001", array);
-        if (result.IsSuccess) {
+        if (command.getAckFinish() == 0) {
+            short commandFinish = 1;
+            result = melsecMcNet.Write("D9", commandFinish);
+        }
+
+        try {
+            // 鏃ュ織璁板綍
+            BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class);
+            BasCrnOpt basCrnOpt = new BasCrnOpt(
+                    command.getTaskNo().intValue(),    // 浠诲姟鍙�
+                    command.getCrnNo(),    // 鍫嗗灈鏈篬闈炵┖]
+                    new Date(),    // 涓嬪彂鏃堕棿
+                    command.getTaskModeType().toString(),    // 妯″紡
+                    command.getSourcePosX().intValue(),    // 婧愭帓
+                    command.getSourcePosY().intValue(),    // 婧愬垪
+                    command.getSourcePosZ().intValue(),    // 婧愬眰
+                    null,    // 婧愮珯
+                    command.getDestinationPosX().intValue(),    // 鐩爣鎺�
+                    command.getDestinationPosY().intValue(),    // 鐩爣鍒�
+                    command.getDestinationPosZ().intValue(),    // 鐩爣灞�
+                    null,    // 鐩爣绔�
+                    null,    // 鍝嶅簲缁撴灉
+                    null,    // 淇敼鏃堕棿
+                    null    // 淇敼浜哄憳
+            );
+            bean.insert(basCrnOpt);
+        } catch (Exception ignore) {}
+
+        if (result != null && result.IsSuccess) {
             log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
             OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
-
-            try {
-                // 鏃ュ織璁板綍
-                BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class);
-                BasCrnOpt basCrnOpt = new BasCrnOpt(
-                        command.getTaskNo().intValue(),    // 浠诲姟鍙�
-                        command.getCrnNo(),    // 鍫嗗灈鏈篬闈炵┖]
-                        new Date(),    // 涓嬪彂鏃堕棿
-                        command.getTaskModeType().toString(),    // 妯″紡
-                        command.getSourcePosX().intValue(),    // 婧愭帓
-                        command.getSourcePosY().intValue(),    // 婧愬垪
-                        command.getSourcePosZ().intValue(),    // 婧愬眰
-                        null,    // 婧愮珯
-                        command.getDestinationPosX().intValue(),    // 鐩爣鎺�
-                        command.getDestinationPosY().intValue(),    // 鐩爣鍒�
-                        command.getDestinationPosZ().intValue(),    // 鐩爣灞�
-                        null,    // 鐩爣绔�
-                        null,    // 鍝嶅簲缁撴灉
-                        null,    // 淇敼鏃堕棿
-                        null    // 淇敼浜哄憳
-                );
-                bean.insert(basCrnOpt);
-            } catch (Exception ignore) {}
-
             return true;
         } else {
             OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
@@ -276,25 +339,26 @@
         }
     }
 
+    @Override
+    public void close() {
+        melsecMcNet.ConnectClose();
+    }
+
     /**
      * 蹇冭烦
      */
     private void heartbeat(){
         if (heartBeatVal == 1) {
-            heartBeatVal = 0;
+            heartBeatVal = 2;
         } else {
             heartBeatVal = 1;
         }
-        OperateResult write = melsecMcNet.Write("D1000", heartBeatVal);
+        OperateResult write = melsecMcNet.Write("D10", heartBeatVal);
         if (!write.IsSuccess) {
-            log.error("杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId());
+            log.error("鍫嗗灈鏈簆lc蹇冭烦閫氳澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
         }
     }
 
-    @Override
-    public void close() {
-        melsecMcNet.ConnectClose();
-    }
 
     /******************************************************************************************/
     /**************************************** 娴嬭瘯涓撶敤 *****************************************/
@@ -302,12 +366,14 @@
     public static void main(String[] args) throws InterruptedException {
         CrnSlave slave = new CrnSlave();
         slave.setId(1);
-        slave.setIp("192.168.6.9");
-        MelsecCrnThread crnThread = new MelsecCrnThread(slave);
-        crnThread.connect();
-        crnThread.readStatus();
-        System.out.println(JSON.toJSONString(crnThread.crnProtocol));
-        Thread.sleep(3000L);
+        slave.setIp("192.168.3.39");
+        slave.setPort(5015);
+        slave.setRack(0);
+        slave.setSlot(0);
+        MelsecCrnThread melsecCrnThread = new MelsecCrnThread(slave);
+        melsecCrnThread.connect();
+        melsecCrnThread.readStatus();
+        System.out.println(JSON.toJSONString(melsecCrnThread.crnProtocol));
 
         // 1.鍏ュ簱 婧愬拰鐩爣閮藉彂
 //        CrnCommand command = new CrnCommand();
@@ -380,19 +446,6 @@
 //        command.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
 //        crnThread.write(command);
 
-//        // 7.鍧愭爣绉昏   鐩爣鍙�   pass
-//        CrnCommand command = new CrnCommand();
-//        command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙�
-//        command.setTaskNo((short) 0); // 宸ヤ綔鍙�
-//        command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-//        command.setTaskMode(CrnTaskModeType.OFFSET_MOVE); // 浠诲姟妯″紡
-//        command.setSourcePosX((short) 0);     // 婧愬簱浣嶆帓
-//        command.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
-//        command.setSourcePosZ((short) 0);     // 婧愬簱浣嶅眰
-//        command.setDestinationPosX((short) 2);     // 鐩爣搴撲綅鎺�
-//        command.setDestinationPosY((short) 1);     // 鐩爣搴撲綅鍒�
-//        command.setDestinationPosZ((short) 1);     // 鐩爣搴撲綅灞�
-//        crnThread.write(command);
 
         // 鍙湁鍑虹幇鎸囧畾寮傚父鎵嶈繘琛屽浣�
 //        if (crnThread.crnProtocol.getCrnError2().leftTakeNoneErr
@@ -408,4 +461,5 @@
 //        }
 
     }
+
 }

--
Gitblit v1.9.1