From 09c4b134bf8b8221635a06bd7ee3064c759b7dcf Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 24 三月 2023 12:57:06 +0800
Subject: [PATCH] 提升机代码部分

---
 src/main/java/com/zy/core/properties/SlaveProperties.java   |    2 
 src/main/java/com/zy/core/model/command/ShuttleCommand.java |    3 
 src/main/java/com/zy/core/thread/LiftThread.java            |  237 ++++++++++++++++++++++++++
 src/main/java/com/zy/core/model/command/LiftCommand.java    |   67 +++++++
 src/main/java/com/zy/core/thread/ShuttleThread.java         |   12 -
 src/main/java/com/zy/core/enums/SlaveType.java              |    1 
 src/main/java/com/zy/core/cache/OutputQueue.java            |    2 
 src/main/java/com/zy/core/model/LiftSlave.java              |   37 ++++
 src/main/java/com/zy/core/model/protocol/LiftProtocol.java  |  164 ++++++++++++++++++
 src/main/java/com/zy/core/ServerBootstrap.java              |    7 
 10 files changed, 521 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java
index 6d94ede..024304c 100644
--- a/src/main/java/com/zy/core/ServerBootstrap.java
+++ b/src/main/java/com/zy/core/ServerBootstrap.java
@@ -98,6 +98,13 @@
             new Thread((Runnable) devpThread).start();
             SlaveConnection.put(SlaveType.Devp, devp.getId(), devpThread);
         }
+        // 鍒濆鍖栨彁鍗囨満
+        News.info("鍒濆鍖栨彁鍗囨満........................................................");
+        for (LiftSlave liftSlave : slaveProperties.getLift()) {
+            LiftThread liftThread = new LiftThread(liftSlave);
+            new Thread(liftThread).start();
+            SlaveConnection.put(SlaveType.Lift, liftSlave.getId(), liftThread);
+        }
         // 鍒濆鍖栧洓鍚戠┛姊溅
         News.info("鍒濆鍖栧洓鍚戠┛姊溅......................................................");
         for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) {
diff --git a/src/main/java/com/zy/core/cache/OutputQueue.java b/src/main/java/com/zy/core/cache/OutputQueue.java
index 6a18ab3..e3f2d37 100644
--- a/src/main/java/com/zy/core/cache/OutputQueue.java
+++ b/src/main/java/com/zy/core/cache/OutputQueue.java
@@ -19,5 +19,7 @@
     public static ArrayBlockingQueue<String> STE = new ArrayBlockingQueue<>(32);
     //鍥涘悜绌挎杞﹁緭鍑烘棩蹇�
     public static ArrayBlockingQueue<String> SHUTTLE = new ArrayBlockingQueue<>(32);
+    //鎻愬崌鏈鸿緭鍑烘棩蹇�
+    public static ArrayBlockingQueue<String> LIFT = new ArrayBlockingQueue<>(32);
 
 }
diff --git a/src/main/java/com/zy/core/enums/SlaveType.java b/src/main/java/com/zy/core/enums/SlaveType.java
index 86d676a..f2e1999 100644
--- a/src/main/java/com/zy/core/enums/SlaveType.java
+++ b/src/main/java/com/zy/core/enums/SlaveType.java
@@ -10,6 +10,7 @@
     Car,
     Ste,
     Shuttle,
+    Lift,
     ;
 
     public static SlaveType findInstance(String s){
diff --git a/src/main/java/com/zy/core/model/LiftSlave.java b/src/main/java/com/zy/core/model/LiftSlave.java
new file mode 100644
index 0000000..79bf2a4
--- /dev/null
+++ b/src/main/java/com/zy/core/model/LiftSlave.java
@@ -0,0 +1,37 @@
+package com.zy.core.model;
+
+import com.zy.core.Slave;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class LiftSlave extends Slave {
+
+    private Integer rack;
+
+    private Integer slot;
+
+    private Boolean demo;
+
+    @Data
+    public static class Sta {
+
+        // 杈撻�佺嚎plc缂栧彿
+        private Integer devpPlcId;
+
+        // 绌挎杞︾珯鐐圭紪鍙�
+        private Integer staNo;
+
+        // 鎺�
+        private Integer row;
+
+        // 鍒�
+        private Integer bay;
+
+        // 灞�
+        private Integer lev;
+
+    }
+
+}
diff --git a/src/main/java/com/zy/core/model/command/LiftCommand.java b/src/main/java/com/zy/core/model/command/LiftCommand.java
new file mode 100644
index 0000000..173e7a0
--- /dev/null
+++ b/src/main/java/com/zy/core/model/command/LiftCommand.java
@@ -0,0 +1,67 @@
+package com.zy.core.model.command;
+
+import lombok.Data;
+
+
+/**
+ * 鎻愬崌鏈哄懡浠ゆ姤鏂�
+ */
+@Data
+public class LiftCommand {
+
+    /**
+     * 鎻愬崌鏈哄彿
+     */
+    private Integer liftNo = 0;
+
+    /**
+     * 浠诲姟鍙�
+     */
+    private Integer taskNo = 0;
+
+    /**
+     * 浣滀笟绫诲瀷
+     */
+    private Short taskMode = 0;
+
+    /**
+     * 浠诲姟纭 false锛氭湭纭 true锛氬凡纭
+     */
+    private Boolean complete = Boolean.FALSE;
+
+    /**
+     * 寮�濮嬭繍琛�
+     */
+    private Short run;
+
+    /**
+     * 鐩爣浣嶇疆
+     */
+    private Short distPosition;
+
+    /**
+     * 杩愯閫熷害
+     */
+    private Short speed;
+
+    /**
+     * 浜屽眰楂樺害璁惧畾
+     */
+    private Short height2;
+
+    /**
+     * 涓夊眰楂樺害璁惧畾
+     */
+    private Short height3;
+
+    /**
+     * 鍥涘眰楂樺害璁惧畾
+     */
+    private Short height4;
+
+    /**
+     * 鎻愬崌鏈洪攣瀹�
+     */
+    private Short liftLock;
+
+}
diff --git a/src/main/java/com/zy/core/model/command/ShuttleCommand.java b/src/main/java/com/zy/core/model/command/ShuttleCommand.java
index 17534f0..2701793 100644
--- a/src/main/java/com/zy/core/model/command/ShuttleCommand.java
+++ b/src/main/java/com/zy/core/model/command/ShuttleCommand.java
@@ -2,6 +2,9 @@
 
 import lombok.Data;
 
+/**
+ * 鍥涘悜绌挎杞﹀懡浠ゆ姤鏂�
+ */
 @Data
 public class ShuttleCommand {
 
diff --git a/src/main/java/com/zy/core/model/protocol/LiftProtocol.java b/src/main/java/com/zy/core/model/protocol/LiftProtocol.java
new file mode 100644
index 0000000..bbdc2f7
--- /dev/null
+++ b/src/main/java/com/zy/core/model/protocol/LiftProtocol.java
@@ -0,0 +1,164 @@
+package com.zy.core.model.protocol;
+
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 鎻愬崌鏈�
+ */
+@Slf4j
+@Data
+public class LiftProtocol {
+
+    /**
+     * 鎻愬崌鏈哄彿
+     */
+    private Short liftNo;
+
+    /**
+     * 浠诲姟鍙�
+     */
+    private Short taskNo = 0;
+
+    /**
+     * 灞�
+     */
+    private Short lev;
+
+    /**
+     * 鎻愬崌鏈洪攣瀹�
+     */
+    private Short liftLock;
+
+    /**
+     * 浣嶇疆鍒拌揪鍙嶉
+     */
+    private Short positionArrivalFeedback;
+
+    /**
+     * 鍑嗗灏辩华
+     * 灏辩华涓�1锛屾湭灏辩华涓�0
+     */
+    private Boolean ready;
+
+    /**
+     * 杩愯涓�
+     * 杩愯涓负1锛屾湭杩愯涓�0
+     */
+    private Boolean running;
+
+    /**
+     * 鑱旀満/鍗曟満
+     * 鑱旀満涓�1锛屽崟鏈轰负0
+     */
+    private Boolean mode;
+
+    /**
+     * 杈撻�佺嚎鍓嶇鍏夌數鏈夎揣
+     * 鏈夎揣涓�1锛屾棤璐т负0锛堝墠绔寚闈犺繎璐ф灦渚э級
+     */
+    private Boolean lineFrontHasStock;
+
+    /**
+     * 杈撻�佺嚎姝h浆鍙嶉
+     * 姝h浆杩愯涓�1锛屽惁鍒欎负0
+     */
+    private Boolean forwardRotationFeedback;
+
+    /**
+     * 杈撻�佺嚎鍙嶈浆鍙嶉
+     * 鍙嶈浆杩愯涓�1锛屽惁鍒欎负0
+     */
+    private Boolean reverseFeedback;
+
+    /**
+     * 杈撻�佺嚎鐢垫満杩囪浇
+     * 杩囪浇涓�0锛屾甯镐负1
+     */
+    private Boolean motorOverload;
+
+    /**
+     * 杈撻�佺嚎鏈鍏夌數鏈夎揣
+     * 鏈夎揣涓�1锛屾棤璐т负0
+     */
+    private Boolean lineEndHasStock;
+
+    /**
+     * 杩涜緭閫佺嚎鍗℃墭鐩樻姤璀�
+     * 鎶ヨ涓�1锛屾湭鎶ヨ涓�0
+     */
+    private Boolean inConveyLineCardTrayAlarm;
+
+    /**
+     * 鍑鸿緭閫佺嚎鍗℃墭鐩樻姤璀�
+     * 鎶ヨ涓�1锛屾湭鎶ヨ涓�0
+     */
+    private Boolean outConveyLineCardTrayAlarm;
+
+    /**
+     * 骞冲彴浣嶇疆鍋忓樊鎶ヨ
+     * 鎶ヨ涓�1锛屾湭鎶ヨ涓�0
+     */
+    private Boolean platPositionDeviationAlarm;
+
+    /**
+     * 骞冲彴鎵煩鍋忓樊鎶ヨ
+     * 鎶ヨ涓�1锛屾湭鎶ヨ涓�0
+     */
+    private Boolean platTorqueDeviationAlarm;
+
+    /**
+     * 骞冲彴鍥涘悜杞︽娴�
+     * 鏈夎溅涓�1锛屾棤杞︿负0
+     */
+    private Boolean platShuttleCheck;
+
+    /**
+     * 鏈氨缁姸鎬�
+     * 1.	涓嶅湪鎸囧畾灞�
+     * 2.	鍥涜酱涓嶅悓姝�
+     * 3.	骞冲彴鍓嶉檺鍏夌數琚尅鍒帮紙闈犺繎璐ф灦锛�
+     * 4.	骞冲彴鍚庨檺鍏夌數琚尅鍒帮紙杩滅璐ф灦锛�
+     * 5.	骞冲彴涓婇檺浣嶆姤璀�
+     * 6.	骞冲彴涓嬮檺浣嶆姤璀�
+     * 7.	鐢垫煖鎬ュ仠鎶ヨ
+     * 8.	杈撻�佺嚎鍓嶉檺浣嶈鎸″埌锛堥潬杩戣揣鏋讹級
+     * 9.	杈撻�佺嚎鍚庨檺浣嶈鎸″埌锛堣繙绂昏揣鏋讹級
+     * 10.	瑙︽懜灞忕揣鎬ュ仠姝㈣鎸変笅
+     * 11.	鍥涜酱鍔ㄥ姏绾挎柇绾�
+     * 12.	鍗曟満妯″紡
+     * 13.	鍥涜酱鎶ヨ
+     * 14.	浣嶇疆鍋忓樊杩囧ぇ
+     * 15.	鎵煩鍋忓樊杩囧ぇ
+     * 16.	杈撻�佺嚎杩囪浇
+     * 17.	杩涙彁鍗囨満鍗℃墭鐩�
+     * 18.	鍑烘彁鍗囨満鍗℃墭鐩�
+     */
+    private Short notReady;
+
+    /**
+     * 浼烘湇1閿欒
+     */
+    private Short servoError1;
+
+    /**
+     * 浼烘湇2閿欒
+     */
+    private Short servoError2;
+
+    /**
+     * 浼烘湇3閿欒
+     */
+    private Short servoError3;
+
+    /**
+     * 浼烘湇4閿欒
+     */
+    private Short servoError4;
+
+    /**
+     * 鎻愬崌鏈哄疄闄呴�熷害鍙嶉
+     */
+    private Short liftActualSpeed;
+
+}
diff --git a/src/main/java/com/zy/core/properties/SlaveProperties.java b/src/main/java/com/zy/core/properties/SlaveProperties.java
index 4d026aa..b905e0b 100644
--- a/src/main/java/com/zy/core/properties/SlaveProperties.java
+++ b/src/main/java/com/zy/core/properties/SlaveProperties.java
@@ -41,4 +41,6 @@
 
     private List<ShuttleSlave> shuttle = new ArrayList<>();
 
+    private List<LiftSlave> lift = new ArrayList<>();
+
 }
diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java
new file mode 100644
index 0000000..f67aa95
--- /dev/null
+++ b/src/main/java/com/zy/core/thread/LiftThread.java
@@ -0,0 +1,237 @@
+package com.zy.core.thread;
+
+import HslCommunication.Core.Transfer.DataFormat;
+import HslCommunication.Core.Types.OperateResult;
+import HslCommunication.Core.Types.OperateResultExOne;
+import HslCommunication.ModBus.ModbusTcpNet;
+import com.alibaba.fastjson.JSON;
+import com.core.common.DateUtils;
+import com.core.exception.CoolException;
+import com.zy.core.News;
+import com.zy.core.ThreadHandler;
+import com.zy.core.cache.MessageQueue;
+import com.zy.core.cache.OutputQueue;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.model.LiftSlave;
+import com.zy.core.model.Task;
+import com.zy.core.model.command.LiftCommand;
+import com.zy.core.model.protocol.LiftProtocol;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+
+import java.text.MessageFormat;
+import java.util.Date;
+
+/**
+ * 鎻愬崌鏈虹嚎绋�
+ */
+@Data
+@Slf4j
+public class LiftThread implements  Runnable, ThreadHandler {
+
+    private ModbusTcpNet modbusTcpNet;
+    private LiftSlave slave;
+    private LiftProtocol liftProtocol;
+
+    public LiftThread(LiftSlave slave) {
+        this.slave = slave;
+    }
+
+    @Override
+    public void run() {
+        this.connect();
+        while (true) {
+            try {
+                int step = 1;
+                Task task = MessageQueue.poll(SlaveType.Lift, slave.getId());
+                if (task != null) {
+                    step = task.getStep();
+                }
+                switch (step) {
+                    // 璇绘暟鎹�
+                    case 1:
+                        readStatus();
+                        break;
+                    // 鍐欏叆鏁版嵁
+                    case 2:
+                        write((LiftCommand) task.getData());
+                        break;
+                    default:
+                        break;
+                }
+                Thread.sleep(500);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    @Override
+    public boolean connect() {
+        boolean result = false;
+        //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------//
+        modbusTcpNet = new ModbusTcpNet(slave.getIp(), slave.getPort(), (byte) 0x01);
+        // 褰撲綘闇�瑕佹寚瀹氭牸寮忕殑鏁版嵁瑙f瀽鏃讹紝灏遍渶瑕佽缃笅闈㈢殑杩欎釜淇℃伅
+        modbusTcpNet.setDataFormat(DataFormat.ABCD);
+        OperateResult connect = modbusTcpNet.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());
+        } 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());
+        }
+        modbusTcpNet.ConnectClose();
+        //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------//
+        return result;
+    }
+
+    @Override
+    public void close() {
+        modbusTcpNet.ConnectClose();
+    }
+
+    private void readStatus() {
+        try {
+            OperateResultExOne<byte[]> result = modbusTcpNet.Read("29", (short) 17);
+            if (result.IsSuccess) {
+                if (null == liftProtocol) {
+                    liftProtocol = new LiftProtocol();
+                    liftProtocol.setLiftNo(slave.getId().shortValue());
+                }
+
+                //----------璇诲彇鎻愬崌鏈虹姸鎬�-----------
+                //鑾峰彇鏁版嵁
+                byte[] content = result.Content;
+                //鎻愬崌鏈洪攣瀹�
+                liftProtocol.setLiftLock(modbusTcpNet.getByteTransform().TransInt16(content,0));
+                //浣嶇疆鍒拌揪鍙嶉
+                liftProtocol.setPositionArrivalFeedback(modbusTcpNet.getByteTransform().TransInt16(content,2));
+                //鍑嗗灏辩华
+                liftProtocol.setReady(modbusTcpNet.getByteTransform().TransBool(content,3));
+                //杩愯涓�
+                liftProtocol.setRunning(modbusTcpNet.getByteTransform().TransBool(content,4));
+                //鑱旀満/鍗曟満
+                liftProtocol.setMode(modbusTcpNet.getByteTransform().TransBool(content,5));
+                //杈撻�佺嚎鍓嶇鍏夌數鏈夎揣
+                liftProtocol.setLineFrontHasStock(modbusTcpNet.getByteTransform().TransBool(content,6));
+                //杈撻�佺嚎姝h浆鍙嶉
+                liftProtocol.setForwardRotationFeedback(modbusTcpNet.getByteTransform().TransBool(content,7));
+                //杈撻�佺嚎鍙嶈浆鍙嶉
+                liftProtocol.setReverseFeedback(modbusTcpNet.getByteTransform().TransBool(content,8));
+                //杈撻�佺嚎鐢垫満杩囪浇
+                liftProtocol.setMotorOverload(modbusTcpNet.getByteTransform().TransBool(content,9));
+                //杈撻�佺嚎鏈鍏夌數鏈夎揣
+                liftProtocol.setLineEndHasStock(modbusTcpNet.getByteTransform().TransBool(content,10));
+                //杩涜緭閫佺嚎鍗℃墭鐩樻姤璀�
+                liftProtocol.setInConveyLineCardTrayAlarm(modbusTcpNet.getByteTransform().TransBool(content,11));
+                //鍑鸿緭閫佺嚎鍗℃墭鐩樻姤璀�
+                liftProtocol.setOutConveyLineCardTrayAlarm(modbusTcpNet.getByteTransform().TransBool(content,12));
+                //骞冲彴浣嶇疆鍋忓樊鎶ヨ
+                liftProtocol.setPlatPositionDeviationAlarm(modbusTcpNet.getByteTransform().TransBool(content,13));
+                //骞冲彴鎵煩鍋忓樊鎶ヨ
+                liftProtocol.setPlatTorqueDeviationAlarm(modbusTcpNet.getByteTransform().TransBool(content,14));
+                //骞冲彴鍥涘悜杞︽娴�
+                liftProtocol.setPlatShuttleCheck(modbusTcpNet.getByteTransform().TransBool(content,15));
+                //鏈氨缁姸鎬�
+                liftProtocol.setNotReady(modbusTcpNet.getByteTransform().TransInt16(content,16));
+                //浼烘湇1閿欒
+                liftProtocol.setServoError1(modbusTcpNet.getByteTransform().TransInt16(content,17));
+                //浼烘湇2閿欒
+                liftProtocol.setServoError2(modbusTcpNet.getByteTransform().TransInt16(content,18));
+                //浼烘湇3閿欒
+                liftProtocol.setServoError3(modbusTcpNet.getByteTransform().TransInt16(content,19));
+                //浼烘湇4閿欒
+                liftProtocol.setServoError4(modbusTcpNet.getByteTransform().TransInt16(content,20));
+                //鎻愬崌鏈哄疄闄呴�熷害鍙嶉
+                liftProtocol.setLiftActualSpeed(modbusTcpNet.getByteTransform().TransInt16(content,21));
+
+                ///璇诲彇鎻愬崌鏈虹姸鎬�-end
+
+                OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+                log.info(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+
+                // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+                //.....
+
+            }else {
+                OutputQueue.LIFT.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) {
+            OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+            initLift();
+        }
+    }
+
+    private boolean write(LiftCommand command){
+        if (null == command) {
+            News.error("鎻愬崌鏈哄啓鍏ュ懡浠や负绌�");
+            return false;
+        }
+
+        command.setLiftNo(slave.getId());
+        // 寮�濮嬩换鍔�
+        short[] array = new short[30];
+        //寮�濮嬭繍琛�
+        array[0] = command.getRun();
+        //鐩爣浣嶇疆
+        array[1] = command.getDistPosition();
+        //杩愯閫熷害
+        array[2] = command.getSpeed();
+        //浜屽眰楂樺害璁惧畾
+        array[3] = command.getHeight2();
+        //涓夊眰楂樺害璁惧畾
+        array[4] = command.getHeight3();
+        //鍥涘眰楂樺害璁惧畾
+        array[5] = command.getHeight4();
+        //鎻愬崌鏈洪攣瀹�
+        array[29] = command.getLiftLock();
+
+        OperateResult result = modbusTcpNet.Write("0", array);;
+        if (result != null && result.IsSuccess) {
+            News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
+            OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
+            return true;
+        } else {
+            OutputQueue.LIFT.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());
+            return false;
+        }
+    }
+
+    /**
+     * 鍒濆鍖栨彁鍗囨満
+     */
+    private void initLift() {
+        if (null == liftProtocol) {
+            liftProtocol = new LiftProtocol();
+        }
+    }
+
+    /******************************************************************************************/
+    /**************************************** 娴嬭瘯涓撶敤 *****************************************/
+    /*****************************************************************************************/
+    public static void main(String[] args) throws InterruptedException {
+        LiftSlave slave = new LiftSlave();
+        slave.setId(1);
+        slave.setIp("192.168.4.24");
+        slave.setPort(502);
+        LiftThread thread = new LiftThread(slave);
+        thread.connect();
+        thread.readStatus();
+
+        LiftCommand command = new LiftCommand();
+        command.setRun((short) 0);
+        command.setDistPosition((short) 12);
+        command.setSpeed((short) 300);
+        command.setHeight2((short) 100);
+        command.setHeight3((short) 200);
+        command.setHeight4((short) 303);
+        command.setLiftLock((short) 1);
+        thread.write(command);
+
+    }
+
+}
diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java
index 1e3d471..cbc2bf8 100644
--- a/src/main/java/com/zy/core/thread/ShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -4,32 +4,24 @@
 import HslCommunication.Core.Types.OperateResult;
 import HslCommunication.Core.Types.OperateResultExOne;
 import HslCommunication.ModBus.ModbusTcpNet;
-import HslCommunication.Profinet.Siemens.SiemensPLCS;
-import HslCommunication.Profinet.Siemens.SiemensS7Net;
 import com.alibaba.fastjson.JSON;
 import com.core.common.DateUtils;
-import com.core.common.RadixTools;
 import com.core.exception.CoolException;
 import com.zy.common.utils.CommonUtils;
 import com.zy.core.News;
 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.ShuttleStatusType;
 import com.zy.core.enums.SlaveType;
 import com.zy.core.model.ShuttleSlave;
-import com.zy.core.model.SteSlave;
 import com.zy.core.model.Task;
 import com.zy.core.model.command.ShuttleCommand;
-import com.zy.core.model.command.SteCommand;
 import com.zy.core.model.protocol.ShuttleProtocol;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 
 import java.text.MessageFormat;
 import java.util.Date;
-import java.util.Random;
 
 /**
  * 鍥涘悜绌挎杞︾嚎绋�
@@ -41,7 +33,6 @@
     private ModbusTcpNet modbusTcpNet;
     private ShuttleSlave slave;
     private ShuttleProtocol shuttleProtocol;
-    private SiemensS7Net siemensS7Net;
 
     public ShuttleThread(ShuttleSlave slave) {
         this.slave = slave;
@@ -99,7 +90,7 @@
 
     @Override
     public void close() {
-
+        modbusTcpNet.ConnectClose();
     }
 
     private void readStatus() {
@@ -175,7 +166,6 @@
 
         command.setShuttleNo(slave.getId());
         // 寮�濮嬩换鍔�
-        //...
         short[] array = new short[17];
         //鎺у埗鎸囦护瀛�
         array[0] = command.getCommandWord();

--
Gitblit v1.9.1