From c147a3dc2a56ab23b1cfeafef3de2867593f4206 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期五, 21 六月 2024 18:24:05 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/enums/JarTaskModeType.java        |   44 ++++
 src/main/java/com/zy/core/model/JarSlave.java               |    2 
 src/main/java/com/zy/core/model/command/SteCommand.java     |    2 
 src/main/java/com/zy/core/thread/SteThread.java             |  301 +++++++++---------------------
 src/main/java/com/zy/core/thread/JarThread.java             |   41 +--
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   86 ++++++++
 src/main/java/com/zy/core/model/protocol/JarProtocol.java   |   22 ++
 src/main/java/com/zy/core/MainProcess.java                  |    5 
 src/main/java/com/zy/asrs/entity/BasJar.java                |    2 
 src/main/java/com/zy/core/model/command/JarCommand.java     |   47 ++++
 src/main/resources/application.yml                          |   28 ++
 11 files changed, 332 insertions(+), 248 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/BasJar.java b/src/main/java/com/zy/asrs/entity/BasJar.java
index f4e48b3..8c5d91f 100644
--- a/src/main/java/com/zy/asrs/entity/BasJar.java
+++ b/src/main/java/com/zy/asrs/entity/BasJar.java
@@ -1,6 +1,6 @@
 package com.zy.asrs.entity;
 
-import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableId;
 import com.baomidou.mybatisplus.enums.IdType;
 import com.baomidou.mybatisplus.annotations.TableField;
 
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 99755c1..cc21f70 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -4417,7 +4417,7 @@
                     continue;
                 }
                 BasJarMast jarMastByJarIdMax = basJarMastService.getJarMastByJarIdMax(jarSlave.getId().longValue());
-                if (jarMastByJarIdMax.getJarLocDigit()==7){
+                if (!Cools.isEmpty(jarMastByJarIdMax) && jarMastByJarIdMax.getJarLocDigit()==7){
                     continue;
                 }
                 jarGenerateWrkMastStaExecute(jarSlave);
@@ -4441,7 +4441,20 @@
             if (jarProtocol.modeType != JarModeType.AUTO){
                 return false;
             }
-            //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
+
+            JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId());
+            JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol();
+            if (jarOtherProtocol == null) {
+                return false;
+            }
+            if (jarOtherProtocol.modeType != JarModeType.AUTO){
+                return false;
+            }
+
+            //鑷姩銆佺┖闂层�佸彸闂ㄥ叧闂��
+            if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.jarErr==0){
+
+            }
 
         } catch (Exception e){
 //            log.error("鍫嗗灈鏈哄伐浣嶄簩瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),2);
@@ -4449,6 +4462,75 @@
         return false;
     }
 
+    /**
+     *  Jar浠诲姟鍒涘缓  鎵ц
+     */
+    public synchronized boolean jarGenerateWrkMastStaExecuteOne(JarSlave jarSlave) {
+        try{
+            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+            JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId());
+            JarProtocol jarProtocol = jarThread.getJarProtocol();
+            if (jarProtocol == null) {
+                return false;
+            }
+            if (jarProtocol.modeType != JarModeType.AUTO){
+                return false;
+            }
+
+            JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId());
+            JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol();
+            if (jarOtherProtocol == null) {
+                return false;
+            }
+            if (jarOtherProtocol.modeType != JarModeType.AUTO){
+                return false;
+            }
+
+            //鑷姩銆佺┖闂层�佸彸闂ㄥ叧闂��
+            if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.jarErr==0){
+
+            }
+
+        } catch (Exception e){
+//            log.error("鍫嗗灈鏈哄伐浣嶄簩瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),2);
+        }
+        return false;
+    }
+
+    /**
+     *  Jar浠诲姟鍒涘缓  鎵ц
+     */
+    public synchronized boolean jarGenerateWrkMastStaExecuteTwo(JarSlave jarSlave) {
+        try{
+            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+            JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId());
+            JarProtocol jarProtocol = jarThread.getJarProtocol();
+            if (jarProtocol == null) {
+                return false;
+            }
+            if (jarProtocol.modeType != JarModeType.AUTO){
+                return false;
+            }
+
+            JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId());
+            JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol();
+            if (jarOtherProtocol == null) {
+                return false;
+            }
+            if (jarOtherProtocol.modeType != JarModeType.AUTO){
+                return false;
+            }
+
+            //鑷姩銆佺┖闂层�佸彸闂ㄥ叧闂��
+            if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.jarErr==0){
+
+            }
+
+        } catch (Exception e){
+//            log.error("鍫嗗灈鏈哄伐浣嶄簩瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),2);
+        }
+        return false;
+    }
 
     /**
      *  Jar浠诲姟鎵ц
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 6dcb83e..eabfd96 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -76,6 +76,11 @@
                         mainService.storeFinishedTwo();
                     }
 
+                    i++;
+                    if (i>5){
+                        i=0;
+                    }
+
 //                    // 寮傚父淇℃伅璁板綍
 //                    mainService.recErr();
                     // 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱
diff --git a/src/main/java/com/zy/core/enums/JarTaskModeType.java b/src/main/java/com/zy/core/enums/JarTaskModeType.java
new file mode 100644
index 0000000..a0a324f
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/JarTaskModeType.java
@@ -0,0 +1,44 @@
+package com.zy.core.enums;
+/*
+* 2024/6/21
+* */
+public enum JarTaskModeType {
+
+    INIT(1, "宸﹂棬寮�"),    // 鍒濆
+    OUT_RIGHT(2, "宸﹂棬鍏�"),    // 鍙冲嚭搴�
+    OUT_LEFT(3, "鍙抽棬寮�"),    // 宸﹀嚭搴�
+    IN_RIGHT(4, "鍙抽棬鍏�"),    // 鍙冲叆搴�
+    ;
+
+    public Integer id;
+    public String desc;
+    JarTaskModeType(Integer id, String desc) {
+        this.id = id;
+        this.desc = desc;
+    }
+
+    public static JarTaskModeType get(Short id) {
+        if (null == id) {
+            return null;
+        }
+        for (JarTaskModeType type : JarTaskModeType.values()) {
+            if (type.id.equals(id.intValue())) {
+                return type;
+            }
+        }
+        return null;
+    }
+
+    public static JarTaskModeType get(JarTaskModeType type) {
+        if (null == type) {
+            return null;
+        }
+        for (JarTaskModeType crnTaskModeType : JarTaskModeType.values()) {
+            if (crnTaskModeType == type) {
+                return crnTaskModeType;
+            }
+        }
+        return null;
+    }
+
+}
diff --git a/src/main/java/com/zy/core/model/JarSlave.java b/src/main/java/com/zy/core/model/JarSlave.java
index d39fa08..7e65d88 100644
--- a/src/main/java/com/zy/core/model/JarSlave.java
+++ b/src/main/java/com/zy/core/model/JarSlave.java
@@ -20,6 +20,8 @@
 
     private Boolean demo;
 
+    private Integer jarOtherId;
+
     // 纭寲缃愬叆搴撶珯鐐�
     private List<StaStn> jarInSta = new ArrayList<>();
 
diff --git a/src/main/java/com/zy/core/model/command/JarCommand.java b/src/main/java/com/zy/core/model/command/JarCommand.java
new file mode 100644
index 0000000..95593db
--- /dev/null
+++ b/src/main/java/com/zy/core/model/command/JarCommand.java
@@ -0,0 +1,47 @@
+package com.zy.core.model.command;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.zy.core.enums.SteTaskModeType;
+import lombok.Data;
+
+/**
+ * 绌挎杞﹀懡浠ゆ姤鏂�
+ * Created by vincent on 2024/6/21
+ */
+@Data
+public class JarCommand {
+
+    // 纭寲缃愬彿
+    private Integer jarNo = 0;
+
+    // 浠诲姟鍙�
+    private Integer taskNo = 0;
+
+    // 浣滀笟绫诲瀷
+    private Short taskMode = 0;
+
+    // 姝e湪鎵ц浠诲姟
+    public Boolean execute = Boolean.FALSE;
+
+    // 纭浠诲姟瀹屾垚
+    public Boolean complete = Boolean.FALSE;
+
+    @JSONField(serialize = false)
+    private SteTaskModeType taskModeType;
+
+    /**
+     * 杈撳叆绌挎杞﹁繍琛岀姝� 1杩愯锛�0绂佹
+     */
+    private Short run;
+
+    public void setTaskMode(Short taskMode){
+        this.taskMode = taskMode;
+        this.taskModeType = SteTaskModeType.get(taskModeType);
+    }
+
+    public void setTaskMode(SteTaskModeType type) {
+        this.taskModeType = type;
+        this.taskMode = SteTaskModeType.get(type).id.shortValue();
+    }
+
+}
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 1b91911..08a1ba2 100644
--- a/src/main/java/com/zy/core/model/command/SteCommand.java
+++ b/src/main/java/com/zy/core/model/command/SteCommand.java
@@ -6,7 +6,7 @@
 
 /**
  * 绌挎杞﹀懡浠ゆ姤鏂�
- * Created by vincent on 2020/8/11
+ * Created by vincent on 2024/6/21
  */
 @Data
 public class SteCommand {
diff --git a/src/main/java/com/zy/core/model/protocol/JarProtocol.java b/src/main/java/com/zy/core/model/protocol/JarProtocol.java
index e2d5ac4..29966ae 100644
--- a/src/main/java/com/zy/core/model/protocol/JarProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/JarProtocol.java
@@ -8,7 +8,7 @@
 import lombok.extern.slf4j.Slf4j;
 
 /**
- * Created by vincent on 2020/8/7
+ * Created by vincent on 2024/6/21
  */
 @Slf4j
 @Data
@@ -73,6 +73,26 @@
      * */
     private boolean autoing;
 
+    /*
+     * open the left door
+     * */
+    public Integer leftDoorOpen;
+
+    /*
+     * close the left door
+     * */
+    public Integer leftDoorClose;
+
+    /*
+     * open the right door
+     * */
+    public Integer rightDoorOpen;
+
+    /*
+     * close the right door
+     * */
+    public Integer rightDoorClose;
+
 
     /**
      * 寮傚父鐮�
diff --git a/src/main/java/com/zy/core/thread/JarThread.java b/src/main/java/com/zy/core/thread/JarThread.java
index 836bb08..7a2f354 100644
--- a/src/main/java/com/zy/core/thread/JarThread.java
+++ b/src/main/java/com/zy/core/thread/JarThread.java
@@ -5,7 +5,6 @@
 import HslCommunication.Profinet.Siemens.SiemensPLCS;
 import HslCommunication.Profinet.Siemens.SiemensS7Net;
 import com.alibaba.fastjson.JSON;
-import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.SpringUtils;
 import com.core.exception.CoolException;
@@ -21,9 +20,8 @@
 import com.zy.core.enums.SlaveType;
 import com.zy.core.model.JarSlave;
 import com.zy.core.model.Task;
-import com.zy.core.model.command.SteCommand;
+import com.zy.core.model.command.JarCommand;
 import com.zy.core.model.protocol.JarProtocol;
-import com.zy.core.model.protocol.StaProtocol;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 
@@ -32,8 +30,7 @@
 
 /**
  * shuttle 纭寲缃愮嚎绋�
- * Created by vincent on 2020/8/4
- * 涓嶈兘鏈� 妲藉彿 鍜� 鏈烘灦鍙�
+ * Created by vincent on 2024/3/01
  */
 @Data
 @Slf4j
@@ -139,6 +136,14 @@
 
                 jarProtocol.setStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 16));//鐘舵��
 
+                jarProtocol.setLeftDoorOpen((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 18));//open the left door
+
+                jarProtocol.setLeftDoorClose((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 20));//close the left door
+
+                jarProtocol.setRightDoorOpen((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 22));//open the right door
+
+                jarProtocol.setRightDoorClose((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 24));//close the right door
+
 
                 jarProtocol.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, 12) != 2);//鑷姩
                 // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
@@ -168,12 +173,12 @@
     /**
      * 鍐欏叆鏁版嵁
      */
-    private synchronized boolean write(SteCommand command){
+    private synchronized boolean write(JarCommand command){
         if (null == command) {
             News.error("绌挎杞﹀啓鍏ュ懡浠や负绌�");
             return false;
         }
-        command.setSteNo(slave.getId());
+        command.setJarNo(slave.getId());
         OperateResult result = null;
         // 寮�濮嬩换鍔�
         if (!command.getComplete()) {
@@ -212,7 +217,7 @@
                 if (null != bean) {
                     BasSteOpt basSteOpt = new BasSteOpt(
                             command.getTaskNo(),    // 浠诲姟鍙�
-                            command.getSteNo(),    // 绌挎杞�
+                            command.getJarNo(),    // 纭寲缃�
                             new Date(),    // 涓嬪彂鏃堕棿
                             command.getTaskModeType().desc,    // 浣滀笟
                             null,    // 婧愭帓
@@ -236,30 +241,18 @@
 
         if (result != null && result.IsSuccess) {
 
-
-            News.info("绌挎杞﹀懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
-            OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
+            News.info("纭寲缃愬懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSONString(command));
+            OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 纭寲缃愬懡浠や笅鍙戯細 {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSONString(command)));
 
             try {
                 Thread.sleep(500);
             } catch (Exception e){
 
             }
-            OperateResultExOne<byte[]> result1 = siemensS7Net.Read("V998", (short) 4);
-            if (result1.IsSuccess) {
-                short taskNo = siemensS7Net.getByteTransform().TransInt16(result1.Content, 0);
-                short taskType = siemensS7Net.getByteTransform().TransInt16(result1.Content, 2);
-//                readStatus();
-            }
             return true;
         } else {
-            OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆戝啓鍏ョ┛姊溅plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-            News.error("鍐欏叆绌挎杞lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-
-            //鍐欏叆澶辫触鍚庯紝閲嶆柊娣诲姞commanddao 浠诲姟闃熷垪涓�,骞剁珛鍗冲洖璇讳竴娆¤澶囩姸鎬�
-//            MessageQueue.offer(SlaveType.Ste, slave.getId(), new Task(2, command));
-//            readStatus();
-
+            OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆戝啓鍏ョ~鍖栫綈plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+            News.error("鍐欏叆纭寲缃恜lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
             initSte();
             return false;
         }
diff --git a/src/main/java/com/zy/core/thread/SteThread.java b/src/main/java/com/zy/core/thread/SteThread.java
index 9a4be94..536e038 100644
--- a/src/main/java/com/zy/core/thread/SteThread.java
+++ b/src/main/java/com/zy/core/thread/SteThread.java
@@ -17,8 +17,8 @@
 import com.zy.core.ThreadHandler;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.OutputQueue;
-import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.SlaveType;
+import com.zy.core.enums.SteLocaType;
 import com.zy.core.enums.SteStatusType;
 import com.zy.core.model.SteSlave;
 import com.zy.core.model.Task;
@@ -43,8 +43,6 @@
     private SteSlave slave;
     private SteProtocol steProtocol;
     private short heartBeatVal = 1;
-    private boolean V20011 = true;
-    private boolean V20001 = true;
     private boolean resetFlag = false;
 
     public SteThread(SteSlave slave) {
@@ -102,10 +100,10 @@
     @Override
     public boolean connect() {
         boolean result = false;
-        // 涓嶈兘鏈� 妲藉彿 鍜� 鏈烘灦鍙�
-        siemensS7Net = new SiemensS7Net(SiemensPLCS.S200Smart, slave.getIp());
-//        siemensS7Net.setRack(slave.getRack().byteValue());
-//        siemensS7Net.setSlot(slave.getSlot().byteValue());
+        //
+        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;
@@ -125,106 +123,77 @@
      */
     private void readStatus(){
         try {
-            OperateResultExOne<byte[]> result = siemensS7Net.Read("V800", (short) 70);
+            OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) 22);
             if (result.IsSuccess) {
                 if (null == steProtocol) {
                     steProtocol = new SteProtocol();
                     steProtocol.setSteNo(slave.getId().shortValue());
                 }
-//                steProtocol.setSteNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 0));
                 steProtocol.setMode(siemensS7Net.getByteTransform().TransInt16(result.Content, 2));
                 steProtocol.setStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 4));
-                OperateResultExOne<Boolean> executeRes = siemensS7Net.ReadBool("V2001.0");
-                if (executeRes.IsSuccess) {
-                    steProtocol.setExecute(executeRes.Content);
-                }
-                OperateResultExOne<Boolean> waitingRes = siemensS7Net.ReadBool("V2001.1");
+
+                OperateResultExOne<Boolean> waitingRes = siemensS7Net.ReadBool("DB101.20.2");
                 if (waitingRes.IsSuccess) {
                     steProtocol.setWaiting(waitingRes.Content);
                 }
-//                if (steProtocol.getSteNo()==1){
-//                    if (!steProtocol.getWaiting().equals(V20011)){
-//                        News.error("灏忚溅鍙� ={} :V2001.1鍦板潃璇诲彇鍊间笉涓�鑷达紝璇�={}  璁板綍={}",steProtocol.getSteNo(),steProtocol.getWaiting(),V20011);
-//                    }
-//                    V20011=steProtocol.getWaiting();
-//                    OperateResultExOne<Boolean> waitingRes2 = siemensS7Net.ReadBool("V2000.1");
-//                    if (waitingRes2.IsSuccess) {
-//                        if (!waitingRes2.Content.equals(V20001)){
-//                            News.error("灏忚溅鍙� ={} :V2000.1鍦板潃璇诲彇鍊间笉涓�鑷达紝璇�={} 璁板綍={}",steProtocol.getSteNo(),waitingRes2.Content,V20001);
-//                        }
-//                        V20001=waitingRes2.Content;
-//                    }
-//                    OperateResultExOne<Boolean> waitingRes3 = siemensS7Net.ReadBool("V2500.1");
-//                    if (waitingRes3.IsSuccess) {
-//                        if (!waitingRes3.Content.equals(waitingRes2.Content)){
-//                            News.error("灏忚溅鍙� ={} :V2000.1鍦板潃璇诲彇鍊间笉涓�鑷达紝璇�={} 锛� V2500.1鍦板潃璇诲彇鍊间笉涓�鑷达紝璇�={}",steProtocol.getSteNo(),waitingRes2.Content,waitingRes3.Content);
-//                        }
-//                    }
-//                }
-                OperateResultExOne<Boolean> inEmptyRes = siemensS7Net.ReadBool("V2001.2");
-                if (inEmptyRes.IsSuccess) {
-                    steProtocol.setInEmpty(inEmptyRes.Content);
-                }
-                OperateResultExOne<Boolean> outEmptyRes = siemensS7Net.ReadBool("V2001.3");
-                if (outEmptyRes.IsSuccess) {
-                    steProtocol.setOutEmpty(outEmptyRes.Content);
-                }
-                steProtocol.setAlarm(siemensS7Net.getByteTransform().TransInt16(result.Content, 6));
-                steProtocol.setAlarm0(siemensS7Net.getByteTransform().TransInt16(result.Content, 8));
-                steProtocol.setCharge(siemensS7Net.getByteTransform().TransSingle(result.Content, 10));
-//                steProtocol.setFullCharge();
-//                steProtocol.setLowCharge();
-                steProtocol.setFeed(siemensS7Net.getByteTransform().TransInt16(result.Content, 14));
-                steProtocol.setLoca(siemensS7Net.getByteTransform().TransInt16(result.Content, 16));
-//                steProtocol.setCloser();
-//                steProtocol.setSpeed();
-                steProtocol.setPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 18));
-                steProtocol.setLoad(siemensS7Net.getByteTransform().TransInt16(result.Content, 20));
-                steProtocol.setTrack(siemensS7Net.getByteTransform().TransInt16(result.Content, 22));
-                steProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 24));
-                steProtocol.setTaskType(siemensS7Net.getByteTransform().TransInt16(result.Content, 28));
-                steProtocol.setRow(siemensS7Net.getByteTransform().TransInt16(result.Content, 30));
-                steProtocol.setBay(siemensS7Net.getByteTransform().TransInt16(result.Content, 32));
-                steProtocol.setLev(siemensS7Net.getByteTransform().TransInt16(result.Content, 34));
 
-//                steProtocol.setHisTaskNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 58));
-//                steProtocol.setHisTaskStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 62));
-//                steProtocol.setCheckQty(siemensS7Net.getByteTransform().TransInt16(result.Content, 64));
-                steProtocol.setReady(siemensS7Net.getByteTransform().TransInt16(result.Content, 36));
-//                steProtocol.setChargeNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 68));
+                steProtocol.setCharge(siemensS7Net.getByteTransform().TransSingle(result.Content, 6));
+                steProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 10));
+                steProtocol.setTaskType(siemensS7Net.getByteTransform().TransInt16(result.Content, 12));
+                steProtocol.setRow(siemensS7Net.getByteTransform().TransInt16(result.Content, 14));
+                steProtocol.setBay(siemensS7Net.getByteTransform().TransInt16(result.Content, 16));
+                steProtocol.setLev(siemensS7Net.getByteTransform().TransInt16(result.Content, 18));
 
-//                steProtocol.setHeart(siemensS7Net.getByteTransform().TransInt16(result.Content, 72));
-                steProtocol.setCrnStopRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 38));
-                steProtocol.setCrnStopFork(siemensS7Net.getByteTransform().TransInt16(result.Content, 40));
-                steProtocol.setCrnAllowRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 42));
-                steProtocol.setChargeStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 44));
-                OperateResultExOne<Boolean> steChargeRes = siemensS7Net.ReadBool("V740.6");
-                if (steChargeRes.IsSuccess) {
-                    steProtocol.setSteCharge(steChargeRes.Content);
-                    if (steChargeRes.Content){
-                        steProtocol.setChargeStatus((short)1);
+//                steProtocol.setReady(siemensS7Net.getByteTransform().TransInt16(result.Content, 20));
+                boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, 20, 1);
+                steProtocol.setReady(status[0]?(short)1:(short)0);
+//                steProtocol.setReady(status[1]?(short)1:(short)0);
+//                steProtocol.setReady(status[2]?(short)1:(short)0);
+//                steProtocol.setLoad(status[3]?(short)1:(short)0);
+//                steProtocol.setReady(status[4]?(short)1:(short)0);
+                steProtocol.setChargeStatus(status[5]?(short)1:(short)0);
+                steProtocol.setTrack(status[6]?(short)1:(short)0);
+
+                SteLocaType locaType = SteLocaType.NONE;
+                boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result.Content, 21, 1);
+                if (steProtocol.getRow().intValue() >= 6) {
+                    if (status[7]){//A鐐�
+                        locaType = SteLocaType.A;
                     }
-                }
-
-                OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), slave.getId()));
-
-                // 澶嶄綅淇″彿
-                if (steProtocol.getWaiting()) {
-                    News.info("-------------绗竴姝ャ�乕绌挎杞﹀彿锛歿}, 宸ヤ綔鍙凤細{}]==>> 鐘舵�佷负{}锛岀瓑寰匴CS纭锛侊紒{}",
-                            slave.getId(),steProtocol.getTaskNo(),steProtocol.getStatus(), resetFlag);
-                    if (resetFlag) {
-                        News.info("绗簩姝ャ�佹敹鍒颁富绾跨▼澶嶄綅鏍囪 resetFlag = true,[绌挎杞﹀彿锛歿}, 宸ヤ綔鍙凤細{}]==>> 鐘舵�佷负{}锛岀瓑寰匴CS纭锛侊紒{}",
-                                slave.getId(),steProtocol.getTaskNo(),steProtocol.getStatus(), resetFlag);
-                        SteCommand steCommand = new SteCommand();
-                        steCommand.setComplete(true);
-                        if (write(steCommand) && confirmPos()) {
-                            resetFlag = false;
-                            News.info("绗笁姝ャ�佸彂閫佸浣嶅懡浠ゆ垚鍔� resetFlag = false,[绌挎杞﹀彿锛歿}, 宸ヤ綔鍙凤細{}]==>> 鐘舵�佷负{}锛岀瓑寰匴CS纭锛侊紒{}",
-                                    slave.getId(),steProtocol.getTaskNo(),steProtocol.getStatus(), resetFlag);
+                    if (status2[1]){//A寰呮満鐐�
+                        if (locaType.equals(SteLocaType.NONE)) {
+                            locaType = SteLocaType.A_WAITING;
+                        }
+                    }
+                }else {
+                    if (status2[0]){//B鐐�
+                        if (locaType.equals(SteLocaType.NONE)) {
+                            locaType = SteLocaType.B;
+                        }
+                    }
+                    if (status2[2]){//B寰呮満鐐�
+                        if (locaType.equals(SteLocaType.NONE)) {
+                            locaType = SteLocaType.B_WAITING;
                         }
                     }
                 }
 
+                steProtocol.setLoca(locaType.id.shortValue());
+                steProtocol.setReady(status2[3]?(short)1:(short)0);
+                steProtocol.setLoad(status2[4]?(short)1:(short)0);
+
+                OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+
+                // 澶嶄綅淇″彿
+                if (steProtocol.getWaiting()) {
+                    if (resetFlag) {
+                        SteCommand steCommand = new SteCommand();
+                        steCommand.setComplete(true);
+                        if (write(steCommand) && confirmPos()) {
+                            resetFlag = false;
+                        }
+                    }
+                }
 
                 // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
                 BasSteService service = SpringUtils.getBean(BasSteService.class);
@@ -243,13 +212,11 @@
 
                 }
             } else {
-                OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆憑1}绌挎杞lc鐘舵�佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId()));
+                OutputQueue.STE.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.STE.offer(MessageFormat.format("銆恵0}銆戣鍙栫┛姊溅plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//            News.error("璇诲彇绌挎杞lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
             initSte();
         }
 
@@ -258,40 +225,16 @@
     /**
      * 鍐欏叆鏁版嵁
      */
-    private boolean write(SteCommand command) throws InterruptedException {
-        if (null == command) {
+    private boolean write(SteCommand command){
+        return this.write(command, 1);
+    }
+
+    /**
+     * 鍐欏叆鏁版嵁
+     */
+    private boolean write(SteCommand command, int times){
+        if (null == command || times > 2) {
             News.error("绌挎杞﹀啓鍏ュ懡浠や负绌�");
-            return false;
-        }
-        //鍒ゆ柇灏忚溅鏄惁鍦ㄥ厖鐢�
-        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-        if (devpThread.charge0
-                && !Cools.isEmpty(command.getRow(),command.getBay(),command.getLev())
-                && command.getRow().intValue()==1 && command.getBay().intValue()==1 && command.getLev().intValue()==1){
-            // led 寮傚父鏄剧ず
-            LedThread ledThread1 = (LedThread) SlaveConnection.get(SlaveType.Led, 1);
-            LedThread ledThread2 = (LedThread) SlaveConnection.get(SlaveType.Led, 2);
-            LedThread ledThread3 = (LedThread) SlaveConnection.get(SlaveType.Led, 3);
-            if (ledThread1 != null && ledThread2 != null && ledThread3 != null) {
-                MessageQueue.offer(SlaveType.Led, 1, new Task(3, "绌挎杞︽鍦�1鎺掑厖鐢垫々鍏呯數"));
-                MessageQueue.offer(SlaveType.Led, 2, new Task(3, "绌挎杞︽鍦�1鎺掑厖鐢垫々鍏呯數"));
-                MessageQueue.offer(SlaveType.Led, 3, new Task(3, "绌挎杞︽鍦�1鎺掑厖鐢垫々鍏呯數"));
-            }
-            News.error("绌挎杞︽鍦�1鎺掑厖鐢垫々鍏呯數");
-            return false;
-        }else if (devpThread.charge1
-                && !Cools.isEmpty(command.getRow(),command.getBay(),command.getLev())
-                && command.getRow().intValue()==13 && command.getBay().intValue()==1 && command.getLev().intValue()==1){
-            // led 寮傚父鏄剧ず
-            LedThread ledThread1 = (LedThread) SlaveConnection.get(SlaveType.Led, 1);
-            LedThread ledThread2 = (LedThread) SlaveConnection.get(SlaveType.Led, 2);
-            LedThread ledThread3 = (LedThread) SlaveConnection.get(SlaveType.Led, 3);
-            if (ledThread1 != null && ledThread2 != null && ledThread3 != null) {
-                MessageQueue.offer(SlaveType.Led, 1, new Task(3, "绌挎杞︽鍦�13鎺掑厖鐢垫々鍏呯數"));
-                MessageQueue.offer(SlaveType.Led, 2, new Task(3, "绌挎杞︽鍦�13鎺掑厖鐢垫々鍏呯數"));
-                MessageQueue.offer(SlaveType.Led, 3, new Task(3, "绌挎杞︽鍦�13鎺掑厖鐢垫々鍏呯數"));
-            }
-            News.error("绌挎杞︽鍦�13鎺掑厖鐢垫々鍏呯數");
             return false;
         }
         command.setSteNo(slave.getId());
@@ -299,23 +242,12 @@
         // 寮�濮嬩换鍔�
         if (!command.getComplete()) {
             //缁勭粐浠诲姟鍓嶏紝鍏堟竻绌哄啓浠诲姟纭浣嶏紝浠ュ強浠诲姟瀹屾垚纭浣�
-            siemensS7Net.Write("V2000.0", false);
-            siemensS7Net.Write("V2000.1", false);
-//            siemensS7Net.Write("V2500.1", false);
-            Thread.sleep(200);
-            OperateResultExOne<Boolean> waitingRes2 = siemensS7Net.ReadBool("V2000.1");
-            if (waitingRes2.IsSuccess) {
-                if(!waitingRes2.Content){
-                    News.error("閲嶇疆浠诲姟瀹屾垚纭浣嶆垚鍔�");
-                } else {
-                    News.error("閲嶇疆浠诲姟瀹屾垚纭浣嶅け璐�1");
-                }
-            } else {
-                News.error("閲嶇疆浠诲姟瀹屾垚纭浣嶅け璐�2");
-            }
-
+            siemensS7Net.Write("DB100.0", (short) 0);//璁惧鍙�
+            siemensS7Net.Write("DB100.2", (short) 0);//浠诲姟鍙�
+            siemensS7Net.Write("DB100.12.0", false);//浠诲姟寮�濮嬬‘璁や綅
+            siemensS7Net.Write("DB100.12.1", false);//浠诲姟瀹屾垚纭
             // 1.浠诲姟鍙�
-            OperateResult result0 = siemensS7Net.Write("V998", command.getTaskNo().shortValue());
+            OperateResult result0 = siemensS7Net.Write("DB100.2", command.getTaskNo().shortValue());
             try {
                 Thread.sleep(200);
             } catch (InterruptedException e) {
@@ -324,41 +256,25 @@
             // 浣滀笟
             if (command.getTaskMode() != 0) {
                 // 2.浣滀笟
-                OperateResult result1 = siemensS7Net.Write("V1000", command.getTaskMode());
+                OperateResult result1 = siemensS7Net.Write("DB100.4", command.getTaskMode());
                 // 3.纭寮�濮嬩换鍔�
                 if (result0.IsSuccess && result1.IsSuccess) {
-                    result = siemensS7Net.Write("V2000.0", true);
-                    siemensS7Net.Write("V2000.1", false);
-//                    siemensS7Net.Write("V2500.1", false);
-                }
+                    result = siemensS7Net.Write("DB100.12.0", true);
 
-            // 鍏朵粬鎸囦护
-            } else {
-                // 鎺у埗妯″紡
-                if (command.getControlMode() != null) {
-                    result =  siemensS7Net.Write("V1010", command.getControlMode());
-                // 澶嶄綅淇″彿
-                } else if (command.getReset() != null) {
-                    result =  siemensS7Net.Write("V2000.2", command.getReset());
-                // 鍒犻櫎鎸囦护
-                } else if (command.getDelete() != null) {
-                    result =  siemensS7Net.Write("V2000.3", command.getDelete());
-                // 鏃犳晥鎸囦护
-                } else if (command.getRun() != null) {
-                    result =  siemensS7Net.Write("V1016", command.getRun());
-                    // 鏃犳晥鎸囦护
-                }else {
-                    return false;
+                    try {
+                        Thread.sleep(300);
+                    } catch (InterruptedException e) {
+                        e.printStackTrace();
+                    }
                 }
             }
-
-        // 浠诲姟瀹屾垚
+            // 浠诲姟瀹屾垚
         } else {
-            siemensS7Net.Write("V2000.0", false);
-            siemensS7Net.Write("V998", (short) 0);
-            siemensS7Net.Write("V1000", (short) 0);
-            result = siemensS7Net.Write("V2000.1", true);
-//            result = siemensS7Net.Write("V2500.1", true);
+            siemensS7Net.Write("DB100.2", (short) 0);//浠诲姟鍙�
+            siemensS7Net.Write("DB100.4.0", (short) 0);//浠诲姟绫诲瀷
+            siemensS7Net.Write("DB100.12.0", false);//浠诲姟寮�濮嬬‘璁や綅
+
+            result = siemensS7Net.Write("DB100.12.1", true);//浠诲姟瀹屾垚纭
         }
 
         try {
@@ -421,7 +337,7 @@
         if (basSte != null) {
             // 鏇存柊plc鏁版嵁鍧�
             short[] arr = new short[] {basSte.getRow().shortValue(), basSte.getBay().shortValue(), basSte.getLev().shortValue()};
-            OperateResult result = siemensS7Net.Write("V1002", arr);
+            OperateResult result = siemensS7Net.Write("DB100.6", arr);
             if (result.IsSuccess) {
                 // 鏇存柊鏁版嵁搴�
                 if (service.updatePakMk(this.slave.getId(), "N")) {
@@ -436,7 +352,7 @@
 
     public boolean modifyPosHandle(Integer row, Integer bay, Integer lev) {
         short[] arr = new short[] {row.shortValue(), bay.shortValue(), lev.shortValue()};
-        OperateResult result = siemensS7Net.Write("V1002", arr);
+        OperateResult result = siemensS7Net.Write("DB100.6", arr);
         if (!result.IsSuccess) {
             News.error("鏇存柊{}鍙风┛姊溅瀹氫綅澶辫触 ===>> 鎺掞細銆恵}銆�, 鍒楋細銆恵}銆戯紝灞傦細銆恵}銆�", this.slave.getId(), row, bay, lev);
             return false;
@@ -451,7 +367,7 @@
 
     @Override
     public void close() {
-//        siemensS7Net.ConnectClose();
+        siemensS7Net.ConnectClose();
     }
 
     /**
@@ -469,13 +385,6 @@
         }
     }
 
-//    public void modifyPos(int wrkNo, int row, int bay, int lev) {
-//        BasSteService service = SpringUtils.getBean(BasSteService.class);
-//        if (!service.updatePos(wrkNo,this.slave.getId(), row, bay, lev)) {
-//            News.error("鏇存柊{}鍙风┛姊溅瀹氫綅澶辫触 ===>> 鎺掞細銆恵}銆�, 鍒楋細銆恵}銆戯紝灞傦細銆恵}銆�", this.slave.getId(), row, bay, lev);
-//        }
-//    }
-
     /******************************************************************************************/
     /**************************************** 娴嬭瘯涓撶敤 *****************************************/
     /*****************************************************************************************/
@@ -488,36 +397,6 @@
         thread.connect();
         thread.readStatus();
         System.out.println(JSON.toJSONString(thread.steProtocol));
-
-        // 浠诲姟浣滀笟
-//        SteCommand command = new SteCommand();
-//        command.setSteNo(1); // 鍫嗗灈鏈虹紪鍙�
-//        Random random = new Random();
-//        int taskNo = random.nextInt(9090);
-//        command.setTaskNo(taskNo); // 宸ヤ綔鍙�
-//        command.setTaskMode(SteTaskModeType.MOVE_LEFT); // 浠诲姟妯″紡
-//        thread.write(command);
-
-        // 浠诲姟瀹屾垚
-//        SteCommand command = new SteCommand();
-//        command.setSteNo(1); // 鍫嗗灈鏈虹紪鍙�
-//        command.setComplete(Boolean.TRUE); // 浠诲姟妯″紡
-//        thread.write(command);
-
-        // 鎺у埗妯″紡
-//        SteCommand command = new SteCommand();
-//        command.setControlMode((short) 1);
-//        thread.write(command);
-
-        // 澶嶄綅淇″彿
-//        SteCommand command = new SteCommand();
-//        command.setReset(Boolean.TRUE);
-//        thread.write(command);
-
-        // 鍒犻櫎鎸囦护
-//        SteCommand command = new SteCommand();
-//        command.setDelete(Boolean.TRUE);
-//        thread.write(command);
 
         // 绌挎杞﹁繍琛岀姝�
         SteCommand command = new SteCommand();
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 055947f..5906c83 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -345,6 +345,7 @@
     id: 1
     ip: 10.10.10.190
     port: 120
+    jarOtherId: 2
     # 纭寲缃愬叆搴撶珯鐐�
     jarInSta[0]:
       devpPlcId: ${wcs-slave.devp[1].id}
@@ -385,6 +386,7 @@
     id: 2
     ip: 10.10.10.191
     port: 120
+    jarOtherId: 1
     # 纭寲缃愬叆搴撶珯鐐�
     jarInSta[0]:
       devpPlcId: ${wcs-slave.devp[1].id}
@@ -425,6 +427,7 @@
     id: 3
     ip: 10.10.10.192
     port: 120
+    jarOtherId: 4
     # 纭寲缃愬叆搴撶珯鐐�
     jarInSta[0]:
       devpPlcId: ${wcs-slave.devp[1].id}
@@ -465,6 +468,7 @@
     id: 4
     ip: 10.10.10.193
     port: 120
+    jarOtherId: 3
     # 纭寲缃愬叆搴撶珯鐐�
     jarInSta[0]:
       devpPlcId: ${wcs-slave.devp[1].id}
@@ -503,20 +507,28 @@
   # ste1
   ste[0]:
     id: 1
-    ip: 10.10.10.100
-    port: 120
+    ip: 10.10.10.10
+    port: 502
+    rack: 0
+    slot: 0
   # ste2
   ste[1]:
     id: 2
-    ip: 10.10.10.100
-    port: 120
+    ip: 10.10.10.10
+    port: 502
+    rack: 0
+    slot: 0
   # ste3
   ste[2]:
     id: 3
-    ip: 10.10.10.100
-    port: 120
+    ip: 10.10.10.10
+    port: 502
+    rack: 0
+    slot: 0
   # ste4
   ste[3]:
     id: 4
-    ip: 10.10.10.100
-    port: 120
\ No newline at end of file
+    ip: 10.10.10.10
+    port: 502
+    rack: 0
+    slot: 0
\ No newline at end of file

--
Gitblit v1.9.1