From a1bd5fc40223cee3445fc62b7555afee7bbcdab5 Mon Sep 17 00:00:00 2001 From: pjb <pjb123456> Date: 星期二, 12 八月 2025 16:06:49 +0800 Subject: [PATCH] 小车异常 --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 100 ++++++++++++++++++++++++-------------------------- 1 files changed, 48 insertions(+), 52 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 e3369a5..e5b80a8 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -365,9 +365,11 @@ return; } + List<BasCircularShuttle> basCircularShuttleList = basCircularShuttleService.selectList(new EntityWrapper<BasCircularShuttle>().eq("status", 0)); + LinkedList<RgvProtocol> rgvProtocolList = new LinkedList<>(); - for (int i = 1; i <= 5; i++) { - RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, i); + for (BasCircularShuttle basCircularShuttle : basCircularShuttleList) { + RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basCircularShuttle.getRgvNo()); RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); if (rgvProtocol == null) { continue; @@ -378,12 +380,9 @@ runRgv: for (WrkMast wrkMast : wrkMasts) { Integer rgvSstaNo = wrkMast.getRgvSstaNo(); - // 1090锛�1089,1086,1083 鎸�1083绔欑偣浣嶇疆璁$畻锛岃兘鍙�1083锛屽氨鑳藉彇1090锛�1089锛�1086锛岄伩鍏嶄换鍔″欢杩熶笅鍙戞柟妗堜竴鐩寸粰1083鍙� - if (rgvSstaNo == 1090 || rgvSstaNo == 1089 || rgvSstaNo == 1086) { - rgvSstaNo = 1083; - } BasDevpPosition basDevpPositions = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", rgvSstaNo)); // 绔欑偣 long position = basDevpPositions.getPlcPosition(); // 璧峰绔欎綅缃� + position += 50; // 灏忚溅鍙栬揣瀹氫綅绮惧害 +- 50,绔欑偣浣嶇疆10000锛屽皬杞﹀湪10050涔熸槸鍙互鍙栫殑 TreeMap<Long, RgvProtocol> map = new TreeMap<>(); for (RgvProtocol rgvProtocol : rgvProtocolList) { long distance; @@ -394,26 +393,27 @@ } map.put(distance, rgvProtocol); } -// log.info("鍙栬揣绔欑偣锛歿}锛屽悗闈㈠皬杞︽帓搴�", basDevpPositions.getDevNo()); -// StringBuilder sb = new StringBuilder(); -// for (Map.Entry<Long, RgvProtocol> rgvProtocolMap : map.entrySet()) { -// RgvProtocol rgvProtocol = rgvProtocolMap.getValue(); -// sb.append("[").append(rgvProtocol.getRgvNo()).append(",").append(rgvProtocol.getStatusType().desc).append("]"); -// } -// log.info(sb.toString()); + position -= 50; + log.info("鍙栬揣绔欑偣锛歿}锛屽悗闈㈠皬杞︽帓搴�", basDevpPositions.getDevNo()); + StringBuilder sb = new StringBuilder(); + for (Map.Entry<Long, RgvProtocol> rgvProtocolMap : map.entrySet()) { + RgvProtocol rgvProtocol = rgvProtocolMap.getValue(); + sb.append("[").append(rgvProtocol.getRgvNo()).append(",").append(rgvProtocol.getRgvPos()).append(",").append(rgvProtocol.getStatusType().desc).append("]"); + } + log.info(sb.toString()); for (Map.Entry<Long, RgvProtocol> rgvProtocolMap : map.entrySet()) { RgvProtocol rgvProtocol = rgvProtocolMap.getValue(); // 鏈�杩戣窛绂诲皬杞� // log.info("鍙栬揣绔欑偣锛歿}锛屽悗闈㈡渶杩戝皬杞︼細{},鐘舵��:{}", basDevpPositions.getDevNo(), rgvProtocol.getRgvNo(), rgvProtocol.getStatusType().desc); int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("rgv_no", rgvProtocol.getRgvNo()).eq("wrk_sts", 10)); - if(wrkMast.getIoType() == 10 || wrkMast.getIoType() == 110 || wrkMast.getSourceStaNo() == 1034) { - if (count != 0) { - continue; - } if (rgvProtocol.modeType == RgvModeType.AUTO && (rgvProtocol.getStatusType() == RgvStatusType.IDLE || rgvProtocol.getStatusType() == RgvStatusType.ROAM) && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getAlarm() == 0) { + if (count != 0) { + log.error("{}鍛煎彨灏忚溅锛歿}鍙峰皬杞︾┖闂诧紝浣嗗伐浣滄。鏄剧ず璇ュ皬杞︽湁浠诲姟",wrkMast.getWrkNo(),rgvProtocol.getRgvNo()); + break ; + } RgvCommand rgvCommand = new RgvCommand(); rgvCommand.setRgvNo(rgvProtocol.getRgvNo()); rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� @@ -433,38 +433,30 @@ wrkMast.setRgvCreateTime(now); wrkMastService.updateById(wrkMast); break runRgv; - } - } else { - if (count != 0) { - break; - } - if (rgvProtocol.modeType == RgvModeType.AUTO - && (rgvProtocol.getStatusType() == RgvStatusType.IDLE || rgvProtocol.getStatusType() == RgvStatusType.ROAM) - && rgvProtocol.getTaskNo1() == 0 - && rgvProtocol.getAlarm() == 0) { - RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setRgvNo(rgvProtocol.getRgvNo()); - rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); - rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� - rgvCommand.setSourceStaNo1(wrkMast.getRgvSstaNo().shortValue()); //宸ヤ綅1璧风偣 - rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣 - rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 - if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(2, rgvCommand))) { - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand)); - break runRgv; + } else if(rgvProtocol.modeType == RgvModeType.AUTO + && rgvProtocol.getTaskNo1() != 0){ // 褰撳墠灏忚溅鏀捐揣鐩爣浣嶇疆鍦ㄥ綋鍓嶄换鍔″彇璐х偣涔嬪悗锛岃烦杩囦换鍔″垎閰嶏紝涓嶅啀鍒欏垽鏂笅涓皬杞︾洰鏍囦綅缃� + WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", rgvProtocol.getTaskNo1())); // 褰撳墠rgv浠诲姟 + if(wrkMast1!= null && !Cools.isEmpty(wrkMast1.getRgvDstaNo())) { + // 褰撳墠rgv浠诲姟鐩爣绔欑偣 + BasDevpPosition rgvDstaNoDevPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", wrkMast1.getRgvDstaNo())); + long rgvDstaNoPosition = rgvDstaNoDevPosition.getPlcPosition(); // 褰撳墠rgv浠诲姟鐩爣绔欑偣浣嶇疆 + // 鑾峰彇RGV褰撳墠浣嶇疆鍜岀姸鎬� + long currentRgvPos = rgvProtocol.getRgvPos(); + int rgvStatus = rgvProtocol.getStatusType().id; + + // 瀹氫箟娴姩鑼冨洿锛堜粎鍋滈潬鐘舵�侀�傜敤锛� + long posTolerance = (rgvStatus == 0 || rgvStatus == 2 || rgvStatus == 3 || rgvStatus == 6 || rgvStatus == 7 || rgvStatus == 8 || rgvStatus == 100) ? 50 : 0; + if(currentRgvPos < rgvDstaNoPosition + posTolerance) { // 灏忚溅褰撳墠浣嶇疆 < rgv鐩爣浣嶇疆 + if(!(currentRgvPos - posTolerance < position && position < rgvDstaNoPosition + posTolerance)) { // 杩欎釜浠诲姟浣嶇疆鏄湪褰撳墠rgv浣嶇疆鍓嶉潰骞朵笖杩欎釜浠诲姟璧风偣鍦ㄥ綋鍓峳gv鐩爣绔欑偣涔嬪悗 + break; // 褰撳墠rgv鏀捐揣瀹屾垚鍚庯紝鍙互鍙栧綋鍓嶄换鍔� + } + } else { + if(!(currentRgvPos + posTolerance < position || position < rgvDstaNoPosition - posTolerance)) { + break; + } + } } - log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand)); - Date now = new Date(); - wrkMast.setRgvNo(rgvProtocol.getRgvNo()); - wrkMast.setWrkSts(10L); - wrkMast.setRgvCreateTime(now); - wrkMastService.updateById(wrkMast); - break runRgv; - } else { - break ; // 鍙湅鏈�杩戠殑绗竴涓皬杞� } - } } } } catch (Exception e) { @@ -498,7 +490,7 @@ log.error("鏈煡鍒板皬杞︽墽琛屼换鍔★紒" + rgvProtocol.getTaskNo1()); continue; } else if(wrkMast.getWrkSts() != 10) { - log.error("鎵ц浠诲姟鐘舵�佷笉绗﹀悎锛�" + rgvProtocol.getTaskNo1()); + log.warn("鎵ц浠诲姟鐘舵�佷笉绗﹀悎锛�" + rgvProtocol.getTaskNo1()); continue; } boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo()); @@ -507,6 +499,9 @@ break; } wrkMast.setWrkSts(2L); + if (wrkMast.getIoType()==120){ + wrkMast.setWrkSts(53L); + } Date now = new Date(); wrkMast.setRgvFinishTime(now); wrkMastService.updateById(wrkMast); @@ -532,15 +527,16 @@ && rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getTaskNo1() != 0 ) { - log.info("{}鍙峰皬杞﹀皬杞﹀彇璐ц秺浣嶏紝鐘舵�亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol); - WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", rgvProtocol.getTaskNo1().longValue())); + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", rgvProtocol.getTaskNo1().longValue()) + .eq("rgv_no",rgvProtocol.getRgvNo())); if (Cools.isEmpty(wrkMast)) { - log.error("鏈煡鍒板皬杞︽墽琛屼换鍔★紒" + rgvProtocol.getTaskNo1()); + log.error(rgvProtocol.getRgvNo() + "灏忚溅鍙栬揣瓒婁綅鏈煡鍒板皬杞︽墽琛屼换鍔★紒" + rgvProtocol.getTaskNo1()); continue; } else if(wrkMast.getWrkSts() != 10) { - log.error("鎵ц浠诲姟鐘舵�佷笉绗﹀悎锛�" + rgvProtocol.getTaskNo1()); + log.warn(rgvProtocol.getRgvNo() + "灏忚溅鍙栬揣瓒婁綅鎵ц浠诲姟鐘舵�佷笉绗﹀悎锛�" + rgvProtocol.getTaskNo1()); continue; } + log.info("{}鍙峰皬杞﹀皬杞﹀彇璐ц秺浣嶏紝鐘舵�亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol); boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo()); if (!rgvComplete) { log.error("灏忚溅鍙栬揣瓒婁綅,浠诲姟鍙栨秷,澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo()); -- Gitblit v1.9.1