From d867d8d14b00e20ecfb00e349611ea62c4853c78 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 24 三月 2023 10:16:53 +0800
Subject: [PATCH] 四向穿梭车通讯协议代码部分

---
 src/main/java/com/zy/core/thread/ShuttleThread.java |  197 ++++++++++++++++++++++++------------------------
 1 files changed, 98 insertions(+), 99 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java
index 224377b..1e3d471 100644
--- a/src/main/java/com/zy/core/thread/ShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -10,6 +10,7 @@
 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;
@@ -28,6 +29,7 @@
 
 import java.text.MessageFormat;
 import java.util.Date;
+import java.util.Random;
 
 /**
  * 鍥涘悜绌挎杞︾嚎绋�
@@ -102,60 +104,58 @@
 
     private void readStatus() {
         try {
-            OperateResultExOne<byte[]> result = modbusTcpNet.Read("0", (short) 17);
+            OperateResultExOne<byte[]> result = modbusTcpNet.Read("200", (short) 17);
             if (result.IsSuccess) {
                 if (null == shuttleProtocol) {
                     shuttleProtocol = new ShuttleProtocol();
                     shuttleProtocol.setShuttleNo(slave.getId().shortValue());
                 }
 
-                //----------璁剧疆鍥涘悜绌挎杞︾姸鎬�-----------
+                //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�-----------
                 //鑾峰彇鏁版嵁
                 byte[] content = result.Content;
+                //灏忚溅蹇欑姸鎬佷綅
+                shuttleProtocol.setBusyStatus(modbusTcpNet.getByteTransform().TransInt16(content,0));
+                //褰撳墠浜岀淮鐮�
+                shuttleProtocol.setCurrentCode(modbusTcpNet.getByteTransform().TransInt16(content,2));
+                //鐢垫睜鐢甸噺鐧惧垎姣�
+                shuttleProtocol.setBatteryPower(modbusTcpNet.getByteTransform().TransInt16(content,4));
+                //鐢垫睜娓╁害
+                shuttleProtocol.setBatteryTemp(modbusTcpNet.getByteTransform().TransInt16(content,6));
+                //閿欒缂栧彿
+                shuttleProtocol.setErrorCode(modbusTcpNet.getByteTransform().TransInt16(content,8));
+                //Plc杈撳嚭鐘舵�両O
+                shuttleProtocol.setPlcOutputStatusIO(modbusTcpNet.getByteTransform().TransInt16(content,10));
+                //閿欒淇℃伅鐮�
+                shuttleProtocol.setStatusErrorCode(modbusTcpNet.getByteTransform().TransInt16(content,12));
+                //PLC杈撳叆鐘舵��
+                shuttleProtocol.setPlcInputStatus(modbusTcpNet.getByteTransform().TransInt16(content,14));
+                //褰撳墠鎴栬�呬箣鍓嶈鍒扮殑浜岀淮鐮佸��
+                shuttleProtocol.setCurrentOrBeforeCode(modbusTcpNet.getByteTransform().TransInt16(content,16));
+                //璇诲埌鐨勪簩缁寸爜X鏂瑰悜鍋忕Щ閲�
+                shuttleProtocol.setCodeOffsetX(modbusTcpNet.getByteTransform().TransInt16(content,18));
+                //璇诲埌鐨勪簩缁寸爜Y鏂瑰悜鍋忕Щ閲�
+                shuttleProtocol.setCodeOffsetY(modbusTcpNet.getByteTransform().TransInt16(content,20));
+                //褰撳墠鐨勭數鍘嬪��
+                shuttleProtocol.setCurrentVoltage(modbusTcpNet.getByteTransform().TransInt16(content,22));
+                //褰撳墠鐨勬ā鎷熼噺鍊�
+                shuttleProtocol.setCurrentAnalogValue(modbusTcpNet.getByteTransform().TransInt16(content,24));
+                //褰撳墠鐨勫崌闄嶄己鏈嶉�熷害
+                shuttleProtocol.setCurrentLiftServoSpeed(modbusTcpNet.getByteTransform().TransInt16(content,26));
+                //褰撳墠鐨勮璧颁己鏈嶉�熷害
+                shuttleProtocol.setCurrentMoveServoSpeed(modbusTcpNet.getByteTransform().TransInt16(content,28));
+                //褰撳墠鐨勫崌闄嶄己鏈嶈礋杞界巼
+                shuttleProtocol.setCurrentLiftServoLoad(modbusTcpNet.getByteTransform().TransInt16(content,30));
+                //褰撳墠鐨勮璧颁己鏈嶈礋杞界巼
+                shuttleProtocol.setCurrentMoveServoLoad(modbusTcpNet.getByteTransform().TransInt16(content,32));
 
-                //--------鎺у埗瀛�--------
-                //鎺у埗鎸囦护瀛�
-                shuttleProtocol.setCommandWord(modbusTcpNet.getByteTransform().TransUInt16(content, 0));
-                //鍚浜岀淮缂栧彿
-                shuttleProtocol.setStartCodeNum(modbusTcpNet.getByteTransform().TransUInt16(content, 2));
-                //涓棿浜岀淮缂栧彿
-                shuttleProtocol.setMiddleCodeNum(modbusTcpNet.getByteTransform().TransUInt16(content, 4));
-                //鐩爣浜岀淮缂栧彿
-                shuttleProtocol.setDistCodeNum(modbusTcpNet.getByteTransform().TransUInt16(content, 6));
-                //璧风偣鍒扮洰鏍囩偣鐨勮窛绂婚暱搴�
-                shuttleProtocol.setStartToDistDistance(modbusTcpNet.getByteTransform().TransInt32(content, 8));
-                //涓棿鐐瑰埌鐩爣鐐圭殑璺濈闀垮害
-                shuttleProtocol.setMiddleToDistDistance(modbusTcpNet.getByteTransform().TransInt32(content, 12));
-                //灏忚溅杩愯鏂瑰悜
-                shuttleProtocol.setRunDirection(modbusTcpNet.getByteTransform().TransUInt16(content, 16));
-                //鎵樼洏椤跺崌
-                shuttleProtocol.setPalletLift(modbusTcpNet.getByteTransform().TransUInt16(content,18));
-                //灏忚溅寮哄埗绉诲姩璺濈
-                shuttleProtocol.setForceMoveDistance(modbusTcpNet.getByteTransform().TransInt32(content, 20));
-                //鍏呯數寮�鍏�
-                shuttleProtocol.setChargeSwitch(modbusTcpNet.getByteTransform().TransUInt16(content,24));
-                //灏忚溅IO鎺у埗
-                shuttleProtocol.setIOControl(modbusTcpNet.getByteTransform().TransUInt16(content,26));
-                //灏忚溅杩愯閫熷害
-                shuttleProtocol.setRunSpeed(modbusTcpNet.getByteTransform().TransUInt16(content,28));
-                //灏忚溅闆疯揪澶囩敤
-                shuttleProtocol.setRadarTmp(modbusTcpNet.getByteTransform().TransUInt16(content,30));
-                //鎸囦护缁撴潫浣�
-                shuttleProtocol.setCommandEnd(modbusTcpNet.getByteTransform().TransUInt16(content,32));
+                ///璇诲彇鍥涘悜绌挎杞︾姸鎬�-end
 
-
-                //---------鐘舵�佸瓧---------
-//                shuttleProtocol.setBusyStatus(modbusTcpNet.getByteTransform().TransUInt16(content,32));
-
-                ///璁剧疆鍥涘悜绌挎杞︾姸鎬�-end
                 OutputQueue.SHUTTLE.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.SHUTTLE.offer(MessageFormat.format("銆恵0}銆憑1}鍥涘悜绌挎杞lc鐘舵�佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId()));
@@ -173,34 +173,52 @@
             return false;
         }
 
-        //鍒ゆ柇灏忚溅鏄惁鍦ㄥ厖鐢�
-        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-        if (devpThread.charge1){
-
-        }
-
         command.setShuttleNo(slave.getId());
-        OperateResult result = null;
         // 寮�濮嬩换鍔�
         //...
+        short[] array = new short[17];
+        //鎺у埗鎸囦护瀛�
+        array[0] = command.getCommandWord();
+        //鍚浜岀淮缂栧彿
+        array[1] = command.getStartCodeNum();
+        //涓棿浜岀淮缂栧彿
+        array[2] = command.getMiddleCodeNum();
+        //鐩爣浜岀淮缂栧彿
+        array[3] = command.getDistCodeNum();
 
+        //璧风偣鍒扮洰鏍囩偣鐨勮窛绂婚暱搴︼紝鍏堝皢int杞负byte鏁扮粍锛屽啀灏哹yte鏁扮粍杞垚涓や釜short锛屽垎鍒崰鐢�4鍜�5绌洪棿
+        short[] startToDistDistances = CommonUtils.intToShorts(command.getStartToDistDistance());
+        array[4] = startToDistDistances[0];
+        array[5] = startToDistDistances[1];
 
-        try {
-            // 鏃ュ織璁板綍
-            if (!command.getComplete() && command.getTaskMode() != 0) {
-                //鏃ュ織璁板綍淇濆瓨鍒版暟鎹簱涓�
-                //.....
-            }
-        } catch (Exception ignore) {}
+        //涓棿鐐瑰埌鐩爣鐐圭殑璺濈闀垮害锛屽厛灏唅nt杞负byte鏁扮粍锛屽啀灏哹yte鏁扮粍杞垚涓や釜short锛屽垎鍒崰鐢�4鍜�5绌洪棿
+        short[] middleToDistDistances = CommonUtils.intToShorts(command.getMiddleToDistDistance());
+        array[6] = middleToDistDistances[0];
+        array[7] = middleToDistDistances[1];
 
+        //灏忚溅杩愯鏂瑰悜
+        array[8] = command.getRunDirection();
+        //鎵樼洏椤跺崌
+        array[9] = command.getPalletLift();
+
+        //灏忚溅寮哄埗绉诲姩璺濈锛屽厛灏唅nt杞负byte鏁扮粍锛屽啀灏哹yte鏁扮粍杞垚涓や釜short锛屽垎鍒崰鐢�4鍜�5绌洪棿
+        short[] forceMoveDistances = CommonUtils.intToShorts(command.getForceMoveDistance());
+        array[10] = forceMoveDistances[0];
+        array[11] = forceMoveDistances[1];
+
+        //鍏呯數寮�鍏�
+        array[12] = command.getChargeSwitch();
+        //灏忚溅IO鎺у埗
+        array[13] = command.getIOControl();
+        //灏忚溅杩愯閫熷害
+        array[14] = command.getRunSpeed();
+        //灏忚溅闆疯揪澶囩敤
+        array[15] = command.getRadarTmp();
+        //鎸囦护缁撴潫浣�
+        array[16] = command.getCommandEnd();
+
+        OperateResult result = modbusTcpNet.Write("0", array);;
         if (result != null && result.IsSuccess) {
-            // 缁存姢鏁版嵁搴撴帓鍒楀眰
-//            if (!steProtocol.getWaiting()) {
-//                if (!Cools.isEmpty(command.getRow(), command.getBay(), command.getLev())) {
-//                    this.modifyPos(command.getRow().intValue(), command.getBay().intValue(), command.getLev().intValue());
-//                }
-//            }
-
             News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
             OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
             return true;
@@ -218,9 +236,9 @@
         if (null == shuttleProtocol) {
             shuttleProtocol = new ShuttleProtocol();
         }
-        shuttleProtocol.setShuttleNo(slave.getId().shortValue());
-        shuttleProtocol.setBusyStatus(ShuttleStatusType.BUSY);
-        shuttleProtocol.setCurrentCode("0");
+//        shuttleProtocol.setShuttleNo(slave.getId().shortValue());
+//        shuttleProtocol.setBusyStatus(ShuttleStatusType.BUSY);
+//        shuttleProtocol.setCurrentCode("0");
     }
 
     /******************************************************************************************/
@@ -234,42 +252,23 @@
         ShuttleThread thread = new ShuttleThread(slave);
         thread.connect();
         thread.readStatus();
-        System.out.println(JSON.toJSONString(thread.shuttleProtocol));
 
-        // 浠诲姟浣滀笟
-//        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();
-//        command.setRun((short)0);
-//        thread.write(command);
+        ShuttleCommand command = new ShuttleCommand();
+        command.setCommandWord((short) 0);
+        command.setStartCodeNum((short) 12323);
+        command.setMiddleCodeNum((short) 22323);
+        command.setDistCodeNum((short) 29999);
+        command.setStartToDistDistance(109999);
+        command.setMiddleToDistDistance(5000);
+        command.setRunDirection((short) 1);
+        command.setPalletLift((short) 2);
+        command.setForceMoveDistance(3000);
+        command.setChargeSwitch((short) 2);
+        command.setIOControl((short) 0);
+        command.setRunSpeed((short) 0);
+        command.setRadarTmp((short) 0);
+        command.setCommandEnd((short) 1);
+        thread.write(command);
 
     }
 }

--
Gitblit v1.9.1