From c2b0be1a368a88e4adb6dda12d0aa5d3bb0df838 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期二, 27 六月 2023 16:50:50 +0800 Subject: [PATCH] 搜索最近穿梭车,提升机完成方法 --- src/main/java/com/zy/core/thread/ShuttleThread.java | 84 +++++++++++++++++++++++++++++++++++++----- 1 files changed, 74 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java index 7aeff9c..7d23d51 100644 --- a/src/main/java/com/zy/core/thread/ShuttleThread.java +++ b/src/main/java/com/zy/core/thread/ShuttleThread.java @@ -134,16 +134,19 @@ //閿欒缂栧彿 shuttleProtocol.setErrorCode(modbusTcpNet.getByteTransform().TransInt16(content,8)); //Plc杈撳嚭鐘舵�両O - boolean[] booleans = modbusTcpNet.getByteTransform().TransBool(content, 10, 2); - shuttleProtocol.setPlcOutputLift(booleans[1]); - shuttleProtocol.setPlcOutputTransfer(booleans[2]); - shuttleProtocol.setPlcOutputBrake(booleans[3]); - shuttleProtocol.setPlcOutputCharge(booleans[4]); + int plcOutIo = modbusTcpNet.getByteTransform().TransUInt16(content, 10); + int[] plcOutIos = CommonUtils.byteToBits((byte) plcOutIo); + shuttleProtocol.setPlcOutputLift(plcOutIos[1] == 1); + shuttleProtocol.setPlcOutputTransfer(plcOutIos[2] == 1); + shuttleProtocol.setPlcOutputBrake(plcOutIos[3] == 1); + shuttleProtocol.setPlcOutputCharge(plcOutIos[4] == 1); shuttleProtocol.setPlcOutputStatusIO(modbusTcpNet.getByteTransform().TransInt16(content, 10)); //閿欒淇℃伅鐮� shuttleProtocol.setStatusErrorCode(modbusTcpNet.getByteTransform().TransInt16(content,12)); + int plcInIo = modbusTcpNet.getByteTransform().TransUInt16(content, 14); + int[] plcInIos = CommonUtils.byteToBits((byte) plcInIo); //PLC杈撳叆鐘舵�� - shuttleProtocol.setPlcInputStatus(modbusTcpNet.getByteTransform().TransInt16(content,14)); + shuttleProtocol.setPlcInputStatus((short) plcInIos[6]); //褰撳墠鎴栬�呬箣鍓嶈鍒扮殑浜岀淮鐮佸�� shuttleProtocol.setCurrentOrBeforeCode(modbusTcpNet.getByteTransform().TransInt16(content,16)); //璇诲埌鐨勪簩缁寸爜X鏂瑰悜鍋忕Щ閲� @@ -653,9 +656,6 @@ return false; } - //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂) - shuttleProtocol.setPakMk(false); - List<ShuttleCommand> errorCommands = redisCommand.getErrorCommands(); if (errorCommands.size() > 0) { //浼樺厛鎵ц璇ユ寚浠� @@ -736,6 +736,63 @@ int size = commands.size(); ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); + if (commandStep != 0) { + //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀畬鎴� + ShuttleCommand command = commands.get(commandStep - 1); + if (command.getCommandWord().intValue() == 1) { + //绉诲姩鍛戒护 + if (command.getDistCodeNum().intValue() == shuttleProtocol.getCurrentCode().intValue()) { + //涓婁竴鏉℃寚浠ょ殑鐩爣浣嶇疆鍜屽綋鍓嶅皬杞︿綅缃浉鍚岋紝鍒欒瀹氫笂涓�鏉′换鍔″畬鎴� + command.setComplete(true); + } + } else if (command.getCommandWord().intValue() == 2) { + //鎵樼洏椤跺崌鍛戒护 + if (command.getPalletLift().intValue() == 1) { + //椤跺崌 + //鍒ゆ柇鏄惁椤跺崌鍒颁綅 + if (shuttleProtocol.getPlcOutputLift()) { + //鑷姩妯″紡 + if (assignCommand.getAuto() && shuttleProtocol.getPlcInputStatus().intValue() == 1) { + //椤跺崌鍒颁綅,涓旀墭鐩橀浄杈炬湁鐗╋紝璁ゅ畾浠诲姟瀹屾垚 + command.setComplete(true); + }else { + //鎵嬪姩妯″紡锛屼笉鍒ゆ柇鎵樼洏闆疯揪 + //椤跺崌鍒颁綅锛岃瀹氫换鍔″畬鎴� + command.setComplete(true); + } + } + }else { + //涓嬮檷 + //鍒ゆ柇鏄惁涓嬮檷鍒颁綅锛屽垽鏂墭鐩橀浄杈炬槸鍚︽棤鐗� + if (!shuttleProtocol.getPlcOutputLift() && !shuttleProtocol.getPlcOutputTransfer()) { + //鑷姩妯″紡 + if (assignCommand.getAuto() && shuttleProtocol.getPlcInputStatus().intValue() == 0) { + //涓嬮檷鍒颁綅锛屼笖鎵樼洏闆疯揪鏃犵墿锛岃瀹氫换鍔″畬鎴� + command.setComplete(true); + }else { + //鎵嬪姩妯″紡锛屼笉鍒ゆ柇鎵樼洏闆疯揪 + //涓嬮檷鍒颁綅锛屼笖鎵樼洏闆疯揪鏃犵墿锛岃瀹氫换鍔″畬鎴� + command.setComplete(true); + } + } + } + } else if (command.getCommandWord().intValue() == 5) { + //鍏呯數鍛戒护 + //鍒ゆ柇灏忚溅鍏呯數寮�鍏� + if (shuttleProtocol.getPlcOutputCharge()) { + //姝e父鍏呯數锛岃瀹氫换鍔″畬鎴� + command.setComplete(true); + } + } + //浠诲姟鏁版嵁淇濆瓨鍒皉edis + redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); + + if (!command.getComplete()) { + //涓婁竴鏉′换鍔℃湭瀹屾垚锛岀姝笅鍙戝懡浠� + return false; + } + } + //鍙栧嚭鍛戒护 ShuttleCommand command = commands.get(commandStep); @@ -757,8 +814,12 @@ //灏忚溅褰撳墠鍛戒护璧峰浣嶇疆灏辨槸鎻愬崌鏈轰簩缁寸爜锛岃鏄庡皬杞﹂渶瑕佸悜鎻愬崌鏈哄绉诲姩锛屽垯闇�瑕佸垽鏂姸鎬佹槸鍚︽弧瓒� if (command.getStartCodeNum().intValue() == liftProtocol.getBarcode().intValue()){ //鎻愬崌鏈烘槸鍚︾┖闂诧紝鎻愬崌鏈烘槸鍚﹀埌杈剧洰鏍囨ゼ灞傦紝鐩爣妤煎眰鏄惁缁欏嚭鎻愬崌鏈哄埌浣嶄俊鍙蜂綅 - if (!liftProtocol.isIdle()) { + if (!liftProtocol.isIdleNoTask()) { return false;//鎻愬崌鏈哄繖锛岀姝笅鍙戝懡浠� + } + if (liftProtocol.getTaskNo().intValue() != wrkNo) { + //鎻愬崌鏈哄伐浣滃彿鍜屽綋鍓嶅伐浣滀笉鐩稿悓锛岀姝笅鍙戝懡浠� + return false; } Short distCodeNum = command.getDistCodeNum();//鐩爣浜岀淮鐮� @@ -793,6 +854,9 @@ } else { News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戞垚鍔燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); + //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂) + shuttleProtocol.setPakMk(false); + //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘� BasShuttleOptService shuttleOptService = SpringUtils.getBean(BasShuttleOptService.class); if (shuttleOptService != null) { -- Gitblit v1.9.1