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