From d317c70cf46549a5cc190d1e3334bd8945ee46a8 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期二, 27 六月 2023 15:45:04 +0800 Subject: [PATCH] 单步命令完成状态 --- src/main/java/com/zy/core/model/command/ShuttleCommand.java | 5 ++ src/main/java/com/zy/core/thread/LiftThread.java | 37 ++++++++++++++++++ src/main/java/com/zy/core/model/command/LiftCommand.java | 5 ++ src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 16 ++++++- src/main/java/com/zy/core/thread/ShuttleThread.java | 53 +++++++++++++++++++++++++- 5 files changed, 111 insertions(+), 5 deletions(-) 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 c73274d..33c6fd8 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -1701,9 +1701,6 @@ && !liftProtocol.getRunning() ) { - //鏍囪澶嶄綅 - liftProtocol.setPakMk(true); - DevpThread devpThread = null; Integer devpId = null; for (DevpSlave devp : slaveProperties.getDevp()){ @@ -1715,6 +1712,16 @@ //灏嗕换鍔℃。鏍囪涓哄畬鎴� WrkMast wrkMast = wrkMastMapper.selectByWorkNo372428(liftProtocol.getTaskNo().intValue()); if (wrkMast != null) { + //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀埌杈句换鍔℃ゼ灞� + String locNo = wrkMast.getIoType() < 101 ? wrkMast.getLocNo() : wrkMast.getSourceLocNo(); + int lev = Utils.getLev(locNo);//浠诲姟鐩爣妤煎眰 + if (liftProtocol.getLev().intValue() != lev) { + continue;//鎻愬崌鏈烘病鏈夊埌杈剧洰鏍� + } + + //鏍囪澶嶄綅 + liftProtocol.setPakMk(true); + switch (wrkMast.getWrkSts().intValue()) { case 3://3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴� //缁欑洰鏍囩珯璁剧疆宸ヤ綔鍙� @@ -1758,6 +1765,9 @@ //鏌ヨ鏄惁鏈夊厖鐢典换鍔� WrkCharge wrkCharge = wrkChargeMapper.selectByWorkNo(liftProtocol.getTaskNo().intValue()); if (wrkCharge != null) { + //鏍囪澶嶄綅 + liftProtocol.setPakMk(true); + switch (wrkCharge.getWrkSts().intValue()) { case 54://鎻愬崌鏈烘惉杩愪腑 wrkCharge.setWrkSts(55L);//鎻愬崌鏈烘惉杩愬畬鎴� diff --git a/src/main/java/com/zy/core/model/command/LiftCommand.java b/src/main/java/com/zy/core/model/command/LiftCommand.java index 51235b4..040910c 100644 --- a/src/main/java/com/zy/core/model/command/LiftCommand.java +++ b/src/main/java/com/zy/core/model/command/LiftCommand.java @@ -80,6 +80,11 @@ */ private Short staNo; + /** + * 鍛戒护鏄惁瀹屾垚,榛樿false鏈畬鎴� + */ + private Boolean complete = false; + public Short getLiftLockShortValue() { if (liftLock == null) { return (short) 0; 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 175783c..aab60da 100644 --- a/src/main/java/com/zy/core/model/command/ShuttleCommand.java +++ b/src/main/java/com/zy/core/model/command/ShuttleCommand.java @@ -93,4 +93,9 @@ */ private Short commandEnd; + /** + * 鍛戒护鏄惁瀹屾垚,榛樿false鏈畬鎴� + */ + private Boolean complete = false; + } diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java index 2504792..a399c9e 100644 --- a/src/main/java/com/zy/core/thread/LiftThread.java +++ b/src/main/java/com/zy/core/thread/LiftThread.java @@ -375,6 +375,43 @@ int size = commands.size(); LiftAssignCommand assignCommand = redisCommand.getAssignCommand(); + if (commandStep != 0) { + //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀畬鎴� + LiftCommand command = commands.get(commandStep - 1); + if (command.getRun().intValue() == 1) { + //鎻愬崌鏈哄崌闄嶅懡浠� + if (command.getDistPosition().intValue() == liftProtocol.getPositionArrivalFeedback().intValue()) { + //鎻愬崌鏈虹洰鏍囨ゼ灞傚拰瀹為檯妤煎眰鐩稿悓锛屽垯璁ゅ畾鍛戒护瀹屾垚 + command.setComplete(true); + } + } else if (command.getRun().intValue() == 2 || command.getRun().intValue() == 3) { + //鏃犺揣姝h浆锛屾湁璐ф杞� + if (!liftProtocol.getForwardRotationFeedback()) { + //杈撻�佺嚎姝h浆鍙嶉涓嶅湪杩愯涓紝璁ゅ畾鍛戒护瀹屾垚 + command.setComplete(true); + } + } else if (command.getRun().intValue() == 6 || command.getRun().intValue() == 7) { + //鏈夎揣鍙嶈浆锛屾棤璐у弽杞� + if (!liftProtocol.getReverseFeedback()) { + //杈撻�佺嚎鍙嶈浆鍙嶉涓嶅湪杩愯涓紝璁ゅ畾鍛戒护瀹屾垚 + command.setComplete(true); + } + } else if (command.getRun().intValue() == 4) { + //杈撻�佺嚎鍋滄 + if (!liftProtocol.getForwardRotationFeedback() && !liftProtocol.getReverseFeedback()) { + //杈撻�佺嚎姝h浆鍙嶈浆閮戒笉鍦ㄨ繍琛屼腑锛岃瀹氬懡浠ゅ畬鎴� + command.setComplete(true); + } + } + //浠诲姟鏁版嵁淇濆瓨鍒皉edis + redisUtil.set("lift_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); + + if (!command.getComplete()) { + //涓婁竴鏉′换鍔℃湭瀹屾垚锛岀姝笅鍙戝懡浠� + return false; + } + } + //鍙栧嚭鍛戒护 LiftCommand command = commands.get(commandStep); if (command.getOperaStaNo() != null && command.getDevpId() != null) { diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java index 4359a0f..7d23d51 100644 --- a/src/main/java/com/zy/core/thread/ShuttleThread.java +++ b/src/main/java/com/zy/core/thread/ShuttleThread.java @@ -739,8 +739,57 @@ if (commandStep != 0) { //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀畬鎴� ShuttleCommand command = commands.get(commandStep - 1); - if (command.getDistCodeNum().intValue() == shuttleProtocol.getCurrentCode().intValue()) { - //涓婁竴鏉℃寚浠ょ殑鐩爣浣嶇疆 + 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; } } -- Gitblit v1.9.1