From ea8833f7c9fa7e6cda12319a79af8ffcda1f9e25 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期四, 03 三月 2022 15:30:31 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/model/command/SteCommand.java |  116 +++++++++--------------
 src/main/java/com/zy/core/thread/SteThread.java         |   88 +++++++----------
 src/main/java/com/zy/core/enums/SteTaskModeType.java    |   52 ++++++++++
 3 files changed, 135 insertions(+), 121 deletions(-)

diff --git a/src/main/java/com/zy/core/enums/SteTaskModeType.java b/src/main/java/com/zy/core/enums/SteTaskModeType.java
new file mode 100644
index 0000000..be7cfce
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/SteTaskModeType.java
@@ -0,0 +1,52 @@
+package com.zy.core.enums;
+
+public enum SteTaskModeType {
+
+    INIT(0),    // 鍒濆
+    OUT_LEFT(1),    // 宸﹀嚭搴�
+    OUT_RIGHT(2),    // 鍙冲嚭搴�
+    IN_LEFT(3),    // 宸﹀叆搴�
+    IN_RIGHT(4),    // 鍙冲叆搴�
+    MOVE_LEFT(5),    // 宸︾Щ搴�
+    MOVE_RIGHT(6),    // 鍙崇Щ搴�
+    GO_ORIGIN(7),    // 鍥炲師鐐�
+    BACK_ORIGIN(8),      // 鍥炲弽鍘熺偣
+    TO_A(9),        // A鐐�
+    TO_B(10),       // B鐐�
+    FIT_LEFT(11),   // 宸︽惉绉�
+    FIT_RIGHT(12),      // 鍙虫惉绉�
+    CHARGE(13),         // 鍏呯數
+    CHECK_LEFT(14),     // 宸︾洏鐐�
+    CHECK_RIGHT(15),    // 鍙崇洏鐐�
+    ;
+
+    public Integer id;
+    SteTaskModeType(Integer id) {
+        this.id = id;
+    }
+
+    public static SteTaskModeType get(Short id) {
+        if (null == id) {
+            return null;
+        }
+        for (SteTaskModeType type : SteTaskModeType.values()) {
+            if (type.id.equals(id.intValue())) {
+                return type;
+            }
+        }
+        return null;
+    }
+
+    public static SteTaskModeType get(SteTaskModeType type) {
+        if (null == type) {
+            return null;
+        }
+        for (SteTaskModeType crnTaskModeType : SteTaskModeType.values()) {
+            if (crnTaskModeType == type) {
+                return crnTaskModeType;
+            }
+        }
+        return null;
+    }
+
+}
diff --git a/src/main/java/com/zy/core/model/command/SteCommand.java b/src/main/java/com/zy/core/model/command/SteCommand.java
index 4deb5d5..88fa4ef 100644
--- a/src/main/java/com/zy/core/model/command/SteCommand.java
+++ b/src/main/java/com/zy/core/model/command/SteCommand.java
@@ -1,11 +1,8 @@
 package com.zy.core.model.command;
 
 import com.alibaba.fastjson.annotation.JSONField;
-import com.zy.core.enums.CrnTaskModeType;
+import com.zy.core.enums.SteTaskModeType;
 import lombok.Data;
-
-import java.util.Calendar;
-import java.util.Date;
 
 /**
  * 绌挎杞﹀懡浠ゆ姤鏂�
@@ -14,96 +11,75 @@
 @Data
 public class SteCommand {
 
-    // 鍫嗗灈鏈哄彿
-    private Integer crnNo = 0;
-
-    // 浠诲姟瀹屾垚纭浣�
-    private Short ackFinish = 0;
+    // 绌挎杞﹀彿
+    private Integer steNo = 0;
 
     // 浠诲姟鍙�
     private Short taskNo = 0;
 
-    /**
-     * 浠诲姟妯″紡锛�
-     * 0 = 鏃�
-     * 1 = 鍏ュ簱   婧愬拰鐩爣閮藉彂
-     * 2 = 鍑哄簱   婧愬拰鐩爣閮藉彂
-     * 3 = 搴撲綅绉昏浆 婧愬拰鐩爣閮藉彂
-     * 4 = 绔欎綅绉昏浆 婧愬拰鐩爣閮藉彂
-     * 5 = 鍥炲師鐐�  涓嶇敤鍙�
-     * 6 = 鍘诲弽鍘熺偣 鐩爣鍙�
-     * 7 = 鍧愭爣绉昏 鐩爣鍙�
-     * 90 = 璁剧疆鏃堕棿
-     * 99 = 鍙栨秷褰撳墠浠诲姟
-     */
+    // 浣滀笟绫诲瀷
     private Short taskMode = 0;
 
     @JSONField(serialize = false)
-    private CrnTaskModeType taskModeType;
+    private SteTaskModeType taskModeType;
 
-    // 婧愪綅缃帓鍙�
-    private Short sourcePosX = 0;
+    // 鎺�
+    private Integer row;
 
-    // 婧愪綅缃垪鍙�
-    private Short sourcePosY = 0;
+    // 鍒�
+    private Integer bay;
 
-    // 婧愪綅缃眰鍙�
-    private Short sourcePosZ = 0;
+    // 灞�
+    private Integer lev;
 
-    // 婧愮珯
-    private Short sourceStaNo = 0;
+    // 璧峰璁惧鍙�
+    private Integer startSsbm;
 
-    // 婧愬贩閬�
-    private Short sourceLane = 0;
+    // 鐩殑璁惧鍙�
+    private Integer endSsbm;
 
-    // 鐩爣浣嶇疆鎺掑彿
-    private Short destinationPosX = 0;
+    // 鎺у埗妯″紡 0=鑴辨満 1=鑱旀満
+    private Integer controlMode;
 
-    // 鐩爣浣嶇疆鍒楀彿
-    private Short destinationPosY = 0;
+    // 寮�鍚俊鍙� 1-鍚姩
+    private Integer open;
 
-    // 鐩爣浣嶇疆灞傚彿
-    private Short destinationPosZ = 0;
+    // 鍒濆鍖�
+    private Integer init;
 
-    // 鐩爣绔�
-    private Short destinationStaNo = 0;
+    // 澶嶄綅淇″彿 1=澶嶄綅
+    private Integer reset;
 
-    // 鐩爣宸烽亾
-    private Short destinationLane = 0;
+    // 鍒犻櫎鎸囦护 1=鍒犻櫎
+    private Integer delete;
 
-    // 浠诲姟纭 0锛氭湭纭 1锛氬凡纭
-    private Short command = 0;
+    // 鎵樼洏闂磋窛 涓棿鎵樼洏涔嬮棿璺濈 鍗曚綅姣背
+    private Integer space;
+
+    // 闂磋窛纭
+    private Integer spaceYes;
+
+    // 鎺掍慨鏀�
+    private Integer rowModify;
+
+    // 鍒椾慨鏀�
+    private Integer bayModify;
+
+    // 灞備慨鏀�
+    private Integer levModify;
+
+    // 淇敼纭
+    private Integer modifyYes;
+
 
     public void setTaskMode(Short taskMode){
         this.taskMode = taskMode;
-        this.taskModeType = CrnTaskModeType.get(taskModeType);
+        this.taskModeType = SteTaskModeType.get(taskModeType);
     }
 
-    public void setTaskMode(CrnTaskModeType type) {
+    public void setTaskMode(SteTaskModeType type) {
         this.taskModeType = type;
-        this.taskMode = CrnTaskModeType.get(type).id.shortValue();
+        this.taskMode = SteTaskModeType.get(type).id.shortValue();
     }
 
-    public static void main(String[] args) {
-        Date date = new Date();
-        Calendar cal = Calendar.getInstance();
-        cal.setTime(date);
-
-        System.out.println(cal.get(Calendar.YEAR));
-        //榛樿浠�0-11
-        System.out.println(cal.get(Calendar.MONTH)+1);
-        System.out.println(cal.get(Calendar.DATE));
-        int hour = cal.get(Calendar.HOUR_OF_DAY);
-        System.out.println("鏃�");
-        System.out.println(hour);
-        int minute = cal.get(Calendar.MINUTE);
-        System.out.println("鍒�");
-        System.out.println(minute);
-        int second = cal.get(Calendar.SECOND);
-        System.out.println("绉�");
-        System.out.println(second);
-        int mm = cal.get(Calendar.DAY_OF_WEEK) - 1; // 鏄熸湡锛�0(鏃�)锝�6(鍏�)
-        System.out.println("绀兼嫓");
-        System.out.println(mm);
-    }
 }
diff --git a/src/main/java/com/zy/core/thread/SteThread.java b/src/main/java/com/zy/core/thread/SteThread.java
index c3e317a..c44d079 100644
--- a/src/main/java/com/zy/core/thread/SteThread.java
+++ b/src/main/java/com/zy/core/thread/SteThread.java
@@ -2,7 +2,8 @@
 
 import HslCommunication.Core.Types.OperateResult;
 import HslCommunication.Core.Types.OperateResultExOne;
-import HslCommunication.Profinet.Melsec.MelsecMcNet;
+import HslCommunication.Profinet.Siemens.SiemensPLCS;
+import HslCommunication.Profinet.Siemens.SiemensS7Net;
 import com.alibaba.fastjson.JSON;
 import com.core.common.DateUtils;
 import com.core.common.SpringUtils;
@@ -35,7 +36,7 @@
 @Slf4j
 public class SteThread implements Runnable, ThreadHandler {
 
-    private MelsecMcNet melsecMcNet;
+    private SiemensS7Net siemensS7Net;
     private SteSlave slave;
     private SteProtocol steProtocol;
     private short heartBeatVal = 1;
@@ -49,11 +50,6 @@
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
         this.connect();
-//        try {
-//            Thread.sleep(2000);
-//        } catch (InterruptedException e) {
-//            e.printStackTrace();
-//        }
         while (true) {
             try {
                 int step = 1;
@@ -76,7 +72,7 @@
                         if (null == command) {
                             command = new SteCommand();
                         }
-                        command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                        command.setCrnNo(slave.getId()); // 绌挎杞︾紪鍙�
                         command.setTaskNo((short) 0); // 宸ヤ綔鍙�
                         command.setAckFinish((short) 1);  // 浠诲姟瀹屾垚纭浣�
                         command.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡
@@ -130,15 +126,17 @@
     @Override
     public boolean connect() {
         boolean result = false;
-        melsecMcNet = new MelsecMcNet(slave.getIp(), slave.getPort());
-        OperateResult connect = melsecMcNet.ConnectServer();
+        siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp());
+        siemensS7Net.setRack(slave.getRack().byteValue());
+        siemensS7Net.setSlot(slave.getSlot().byteValue());
+        OperateResult connect = siemensS7Net.ConnectServer();
         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());
+            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());
         } 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());
             initSte();
         }
 //        melsecMcNet.ConnectClose();
@@ -155,38 +153,26 @@
 //                flag1=1;
 //                System.out.println("===");
 //            }
-            OperateResultExOne<byte[]> result = melsecMcNet.Read("D20", (short) 70);
+            OperateResultExOne<byte[]> result = siemensS7Net.Read("D20", (short) 70);
             if (result.IsSuccess) {
                 if (null == steProtocol) {
                     steProtocol = new SteProtocol();
                 }
-                steProtocol.setMode(melsecMcNet.getByteTransform().TransInt16(result.Content, 0));
-                steProtocol.setTaskNo(melsecMcNet.getByteTransform().TransInt16(result.Content, 2));
-                steProtocol.setStatus(melsecMcNet.getByteTransform().TransInt16(result.Content, 4));
-                steProtocol.setBay(melsecMcNet.getByteTransform().TransInt16(result.Content, 6));
-                steProtocol.setLevel(melsecMcNet.getByteTransform().TransInt16(result.Content, 8));
-                steProtocol.setForkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 10));
-                steProtocol.setLiftPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 12));
-                steProtocol.setWalkPos(melsecMcNet.getByteTransform().TransInt16(result.Content, 14));
-                steProtocol.setLoaded(melsecMcNet.getByteTransform().TransInt16(result.Content, 16));
-                steProtocol.setAlarm(melsecMcNet.getByteTransform().TransInt16(result.Content, 18));
-                steProtocol.setTemp1(melsecMcNet.getByteTransform().TransInt16(result.Content, 20));
-                steProtocol.setTemp2(melsecMcNet.getByteTransform().TransInt16(result.Content, 22));
-                steProtocol.setTemp3(melsecMcNet.getByteTransform().TransInt16(result.Content, 24));
-                steProtocol.setTemp4(melsecMcNet.getByteTransform().TransInt16(result.Content, 26));
-                steProtocol.setXSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 28));
-                steProtocol.setYSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 32));
-                steProtocol.setZSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 36));
-                steProtocol.setXDistance(melsecMcNet.getByteTransform().TransSingle(result.Content, 40));
-                steProtocol.setYDistance(melsecMcNet.getByteTransform().TransSingle(result.Content, 44));
-                steProtocol.setXDuration(melsecMcNet.getByteTransform().TransSingle(result.Content, 48));
-                steProtocol.setYDuration(melsecMcNet.getByteTransform().TransSingle(result.Content, 52));
+                steProtocol.setMode(siemensS7Net.getByteTransform().TransInt16(result.Content, 0));
+                steProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 2));
+                steProtocol.setStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 4));
+                steProtocol.setBay(siemensS7Net.getByteTransform().TransInt16(result.Content, 6));
+                steProtocol.setLevel(siemensS7Net.getByteTransform().TransInt16(result.Content, 8));
+                steProtocol.setForkPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 10));
+                steProtocol.setLiftPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 12));
+                steProtocol.setWalkPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 14));
+                steProtocol.setLoaded(siemensS7Net.getByteTransform().TransInt16(result.Content, 16));
+                steProtocol.setAlarm(siemensS7Net.getByteTransform().TransInt16(result.Content, 18));
 
                 OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
                 // 澶嶄綅淇″彿
                 if (steProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
-                    log.error("-------------------------------------------绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}][宸ヤ綔鍙凤細{}]==>> 鐘舵�佷负90锛岀瓑寰呯‘璁わ紒锛�",slave.getId(),steProtocol.getTaskNo());
                     if (resetFlag) {
                         SteCommand steCommand = new SteCommand();
                         steCommand.setAckFinish((short)1);
@@ -203,17 +189,17 @@
                 basCrnp.setCrnErr(steProtocol.getAlarm()==null?0:steProtocol.getAlarm().longValue());
                 basCrnp.setCrnNo(slave.getId());
                 if (!basCrnpService.updateById(steProtocol.toSqlModel(basCrnp))){
-                    log.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                    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()));
+                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());
+            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());
             initSte();
         }
 
@@ -224,7 +210,7 @@
      */
     private boolean write(SteCommand command){
         if (null == command) {
-            log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
+            log.error("绌挎杞﹀啓鍏ュ懡浠や负绌�");
             return false;
         }
         command.setCrnNo(slave.getId());
@@ -239,11 +225,11 @@
         array[7] = command.getDestinationPosY();
         array[8] = command.getDestinationPosZ();
         array[9] = command.getCommand();
-        OperateResult result = melsecMcNet.Write("D0", array);
+        OperateResult result = siemensS7Net.Write("D0", array);
 
         if (command.getAckFinish() == 0) {
             short commandFinish = 1;
-            result = melsecMcNet.Write("D9", commandFinish);
+            result = siemensS7Net.Write("D9", commandFinish);
         }
 
         try {
@@ -251,7 +237,7 @@
             BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class);
             BasCrnOpt basCrnOpt = new BasCrnOpt(
                     command.getTaskNo().intValue(),    // 浠诲姟鍙�
-                    command.getCrnNo(),    // 鍫嗗灈鏈篬闈炵┖]
+                    command.getCrnNo(),    // 绌挎杞闈炵┖]
                     new Date(),    // 涓嬪彂鏃堕棿
                     command.getTaskModeType().toString(),    // 妯″紡
                     command.getSourcePosX().intValue(),    // 婧愭帓
@@ -270,19 +256,19 @@
         } catch (Exception ignore) {}
 
         if (result.IsSuccess) {
-            log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
+            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)));
             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()));
-            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());
             return false;
         }
     }
 
     @Override
     public void close() {
-        melsecMcNet.ConnectClose();
+        siemensS7Net.ConnectClose();
     }
 
     /**
@@ -294,7 +280,7 @@
         } else {
             heartBeatVal = 1;
         }
-        OperateResult write = melsecMcNet.Write("D10", heartBeatVal);
+        OperateResult write = siemensS7Net.Write("D10", heartBeatVal);
         if (!write.IsSuccess) {
             log.error("杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId());
         }

--
Gitblit v1.9.1