From 924d0d98c49c324669ba9dc5158b2141416447cc Mon Sep 17 00:00:00 2001 From: lty <876263681@qq.com> Date: 星期四, 21 八月 2025 16:26:44 +0800 Subject: [PATCH] #rgv同时下发工位1和工位2任务,标记优先级 --- src/main/java/com/zy/core/thread/RgvThread.java | 268 +++++++++++++++++++++-------- src/main/java/com/zy/core/model/RgvSlave.java | 2 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 223 ++++++++++++++++++++---- src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 1 src/main/resources/mapper/WrkMastMapper.xml | 6 src/main/java/com/zy/asrs/entity/BasRgvOpt.java | 7 src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 8 src/main/java/com/zy/core/model/command/RgvCommand.java | 8 src/main/resources/application.yml | 7 9 files changed, 416 insertions(+), 114 deletions(-) diff --git a/src/main/java/com/zy/asrs/entity/BasRgvOpt.java b/src/main/java/com/zy/asrs/entity/BasRgvOpt.java index 9a422b2..cfad4ad 100644 --- a/src/main/java/com/zy/asrs/entity/BasRgvOpt.java +++ b/src/main/java/com/zy/asrs/entity/BasRgvOpt.java @@ -165,6 +165,13 @@ this.updateBy = updateBy; this.memo = memo; } + public BasRgvOpt(Integer wrkNo1, Integer wrkNo2, Integer rgvNo, Date sendTime, Integer posSta){ + this.wrkNo1 = wrkNo1; + this.wrkNo2 = wrkNo2; + this.rgvNo = rgvNo; + this.sendTime = sendTime; + this.posSta = posSta; + } public BasRgvOpt(Integer wrkNo1, Integer wrkNo2, Integer rgvNo, Date sendTime, String mode, Integer sourceSta, Integer posSta, Integer sourceRow, Integer posRow, Integer response, Date updateTime, Long updateBy) { this.wrkNo1 = wrkNo1; diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java index 7d8e423..265fb12 100644 --- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java +++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java @@ -113,4 +113,5 @@ WrkMast selectPickStep3(@Param("barcode")String barcode); WrkMast selectByWrkNo(@Param("wrkNo")Integer wrkNo); + Integer countPakOutEmpty(@Param("staNo")Integer outSite); } 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 d4e4613..138e4e3 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -2535,16 +2535,20 @@ public synchronized void autoEmptyOut() { SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); List<Integer> list = new ArrayList<>(); - list.add(1108);list.add(112); - Map<Integer,Integer> map = new HashMap<>(); - map.put(101,102);map.put(112,111); + list.add(1108);list.add(2031); for (Integer site:list){ - WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("sta_no", map.get(site))); - if (!Cools.isEmpty(wrkMast)){ + Integer emptyCount = wrkMastMapper.countPakOutEmpty(site); + StaProtocol staProtocol = null; + if(emptyCount >= 2 && site == 1108){ + continue; + }else if(emptyCount == 1 && site == 2031){ continue; } //濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔� - StaProtocol staProtocol = devpThread.getStation().get(site); + switch (site){ + case 1108:staProtocol = devpThread.getStation().get(site - 2);break; + case 2031:staProtocol = devpThread.getStation().get(site);break; + } if (staProtocol == null) { return; } else { @@ -2555,10 +2559,6 @@ && staProtocol.isOutEnable() //鍙嚭淇″彿 && staProtocol.getWorkNo() == 0 ) { - WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(site); - if (null != pakoutEmpty) { - return; - } Short loctype1 = 1; LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1); locTypeDto.setSiteId(site); @@ -2799,17 +2799,16 @@ StaProtocol staProtocol = devpThread.getStation().get(staNo); boolean rgvComplete = false; - long now = System.currentTimeMillis(); - if (staProtocol.isLoading()) { - rgvProtocol.setLoadingStartTime(null); // 宸插埌浣嶏紝娓呯┖鏃堕棿鎴� - } else { - if (rgvProtocol.getLoadingStartTime() == null) { - rgvProtocol.setLoadingStartTime(now); - } - } +// long now = System.currentTimeMillis(); +// if (staProtocol.isLoading()) { +// rgvProtocol.setLoadingStartTime(null); // 宸插埌浣嶏紝娓呯┖鏃堕棿鎴� +// } else { +// if (rgvProtocol.getLoadingStartTime() == null) { +// rgvProtocol.setLoadingStartTime(now); +// } +// } - if (staProtocol.isLoading() || - (rgvProtocol.getLoadingStartTime() != null && now - rgvProtocol.getLoadingStartTime() > 10000)) { + if (staProtocol.isLoading()) { rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 3); if (!rgvComplete){ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛佺瓑寰呭叆搴撳彇璐�", rgvProtocol.getRgvNo()); @@ -3062,7 +3061,7 @@ } } - //鍏ュ簱鏀捐揣 + //鍑哄簱鏀捐揣 if( rgvThread.isPakOut()){ for(RgvSlave.RgvStn rgvStn : rgv.getRgvOutPStn()){//鍏ュ簱鏀捐揣绔欑偣 boolean flag = false; @@ -3070,7 +3069,7 @@ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId()); StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo()); if (staProtocol == null) { - News.infoNoLog( " - 1" + " - 1" + " - Rgv鍏ュ簱鏀捐揣绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol); + News.infoNoLog( " - 1" + " - 1" + " - Rgv鍑哄簱鏀捐揣绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol); continue; } else { staProtocol = staProtocol.clone(); @@ -3078,7 +3077,7 @@ // 鏌ヨ绔欑偣璇︾粏淇℃伅 BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo()); if (staDetl == null) { - News.error( " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv鏀捐揣绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo()); + News.error( " - 1" + " - 2" + " - 鍑哄簱 ===>>Rgv鏀捐揣绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo()); continue; } @@ -3087,7 +3086,7 @@ flag = true; } if (!flag) { - News.errorNoLog( " - 1" + " - 3" + " - Rgv鍏ュ簱鏀捐揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):" + News.errorNoLog( " - 1" + " - 3" + " - Rgv鍑哄簱鏀捐揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):" + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading() + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isOutEnable() + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanouting()); @@ -3104,7 +3103,7 @@ } WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(wrkNo));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 if( null == wrkMastSta ) { - News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); + News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍑哄簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); continue; } wrkMastSta.setWrkSts(2); @@ -3202,17 +3201,34 @@ public synchronized void rgvRunWrkMastIn(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark) { for (RgvSlave.RgvStn rgvStn : slave.getRgvInTStn()) {//rgv鍏ュ簱鍙栬揣绔欑偣 boolean flag = false; + boolean ds = false; //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId()); StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo()); - RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo()); + StaProtocol staProtocol2 = null; + RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo()); + if(rgvStn.getStaNo2()!= null ){ + staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2()); + if (staProtocol2 == null) { + News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol); + continue; + } else { + staProtocol2 = staProtocol2.clone(); + } + BasDevp staDetl2 = basDevpService.selectById(rgvStn.getStaNo2()); + if (staDetl2 == null) { + News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo()); + continue; + } + } if (staProtocol == null) { News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol); continue; } else { staProtocol = staProtocol.clone(); } + // 鏌ヨ绔欑偣璇︾粏淇℃伅 BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo()); if (staDetl == null) { @@ -3236,12 +3252,13 @@ List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 + if( null == wrkMastSta ) { News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); continue; } WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, (int) rgvProtocol.getRgvNo()); - boolean result = true; + boolean result = false; if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠� result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣 } @@ -3252,7 +3269,16 @@ wrkMastSta.setWorkSta(wrkMastSta2 != null ? 1 : 2); wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo()); Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃� - boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction); //鍛戒护涓嬪彂 + boolean sign = false; + //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠� + if(wrkMastSta.getWorkSta() == 2 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0){ + WrkMastSta wrkMastSta3 = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol2.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 + wrkMastSta3.setWorkSta(1); + wrkMastSta3.setRgvNo((int) rgvProtocol.getRgvNo()); + sign = rgvTakeFullAll2(basRgvMap.getRgvNo(), wrkMastSta, wrkMastSta3); + }else{ + sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction); //鍛戒护涓嬪彂 + } if (sign){ wrkMastSta.setWrkSts(1); try{ @@ -3283,7 +3309,21 @@ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId()); StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo()); RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo()); - + StaProtocol staProtocol2 = null; + if(rgvStn.getStaNo2()!= null ){ + staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2()); + if (staProtocol2 == null) { + News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol); + continue; + } else { + staProtocol2 = staProtocol2.clone(); + } + BasDevp staDetl2 = basDevpService.selectById(rgvStn.getStaNo2()); + if (staDetl2 == null) { + News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo()); + continue; + } + } if (staProtocol == null) { News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍑哄簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol); continue; @@ -3316,12 +3356,29 @@ News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); continue; } + WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, (int) rgvProtocol.getRgvNo()); + boolean result = false; + if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠� + result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣 + } + if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣 + rgvThread.setPakRgv(false); + continue; + } WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWorkSta(1, (int) rgvProtocol.getRgvNo()); wrkMastSta.setWorkSta(wrkMastSta1 != null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣� wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo()); - + boolean sign = false; Short direction = 1;//宸ヤ綅1鏂瑰悜 - boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta, direction); //鍛戒护涓嬪彂 + //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠� + if(wrkMastSta.getWorkSta() == 1 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0){ + WrkMastSta wrkMastSta3 = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol2.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 + wrkMastSta3.setWorkSta(2); + wrkMastSta3.setRgvNo((int) rgvProtocol.getRgvNo()); + sign = rgvTakeFullAll2(basRgvMap.getRgvNo(), wrkMastSta, wrkMastSta3); + }else{ + sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction); //鍛戒护涓嬪彂 + } if (sign){ wrkMastSta.setWrkSts(1); try{ @@ -3509,7 +3566,7 @@ // 鏍规嵁杈撻�佺嚎plc閬嶅巻 for (DevpSlave devp : slaveProperties.getDevp()) { // 閬嶅巻鍏ュ簱鍙� 鍏ュ簱棰勮皟搴� - List<Integer> staNos = Arrays.asList(1042, 1043, 1105, 1104); + List<Integer> staNos = Arrays.asList( 1043, 1104,1037); for (Integer staNo : staNos) { SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(staNo); @@ -3520,10 +3577,14 @@ rgvCommand.setTaskNo1(9999); // 宸ヤ綅1宸ヤ綔鍙� rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 绉诲姩 rgvCommand.setEndStaNo1(0); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 - if(staNo == 1042 || staNo ==1043){ - rgvCommand.setTargetPosition1(1042); //宸ヤ綅1鐩爣绔欑偣 - }else{ - rgvCommand.setTargetPosition1(1105); //宸ヤ綅1鐩爣绔欑偣 + switch (staNo){ + case 1043: rgvCommand.setTargetPosition1(1042);break; //宸ヤ綅1鐩爣绔欑偣 + case 1104: rgvCommand.setTargetPosition1(1105);break; + case 1037: rgvCommand.setTargetPosition1(1036);break; + + } + if(Objects.equals(basRgvMap.getNowRoute(), staNo)){ + continue; } rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 if (!MessageQueue.offer(SlaveType.Rgv, (int) rgvProtocol.getRgvNo(), new Task(4, rgvCommand))) { @@ -3864,6 +3925,96 @@ } } + + /* + * 灏忚溅鍙栬揣鑷冲弻宸ヤ綅浠诲姟 + * */ + public synchronized boolean rgvTakeFullAll2(Integer rgvId,WrkMastSta wrkMastSta,WrkMastSta wrkMastSta2){ + try{ + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + RgvCommand rgvCommand = new RgvCommand(); + boolean pakIn1 = true; + boolean pakIn2 = true; + rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 + if(wrkMastSta.getWrkSts() == 0) {//鍙栬揣 + if (wrkMastSta.getWorkSta() == 2) {//鍏ュ簱RGV鍙栬揣 + rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� + rgvCommand.setTaskStatus2(RgvTaskStatusType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 + rgvCommand.setTargetPosition2(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣 + rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 + rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta2.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� + rgvCommand.setTaskStatus1(RgvTaskStatusType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo1(wrkMastSta2.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 + rgvCommand.setTargetPosition1(wrkMastSta2.getStaStart()); //宸ヤ綅1鐩爣绔欑偣 + rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 + rgvCommand.setWrkTaskPri((short) 2); //浼樺厛鎵ц宸ヤ綅2浠诲姟 + } else { //鍑哄簱RGV鍙栬揣 + rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� + rgvCommand.setTaskStatus1(RgvTaskStatusType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 + rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅1鐩爣绔欑偣 + rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� + rgvCommand.setTaskStatus2(RgvTaskStatusType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐� + rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 + rgvCommand.setTargetPosition2(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣 + rgvCommand.setWrkTaskPri((short) 1); //鍑哄簱鍙栬揣浼樺厛鎵ц宸ヤ綅1浠诲姟 + rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 + } + if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(2, rgvCommand))) { + //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� + log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); + return false; + } else { + return true; + } + } + +// if(wrkMastSta.getWrkSts() == 2) {//鏀捐揣 +// if((wrkMastSta.getWorkSta() == 2)){ //宸ヤ綅2浠诲姟鏀捐揣 +// rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� +// rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� +// rgvCommand.setTaskStatus2(RgvTaskStatusType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣 +// rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 +// rgvCommand.setTargetPosition2(wrkMastSta.getStaEnd()); //宸ヤ綅2鐩爣绔欑偣 +// rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 +// pakIn2 = false; +// }else{ //宸ヤ綅1浠诲姟鏀捐揣 +// rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� +// rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� +// rgvCommand.setTaskStatus1(RgvTaskStatusType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣 +// rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 +// rgvCommand.setTargetPosition1(wrkMastSta.getStaEnd()); //宸ヤ綅1鐩爣绔欑偣 +// rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 +// } +// if(!pakIn2){ +// if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { +// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� +// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); +// return false; +// } else { +// return true; +// } +// }else{ +// if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) { +// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� +// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); +// return false; +// } else { +// return true; +// } +// } +// } + return true; + }catch (Exception e){ + return false; + } + } + /* * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔� * */ diff --git a/src/main/java/com/zy/core/model/RgvSlave.java b/src/main/java/com/zy/core/model/RgvSlave.java index 90e3310..321a4ec 100644 --- a/src/main/java/com/zy/core/model/RgvSlave.java +++ b/src/main/java/com/zy/core/model/RgvSlave.java @@ -54,6 +54,8 @@ // RGV绔欑偣缂栧彿 private Integer staNo; + // RGV浜岀珯鐐圭紪鍙� + private Integer staNo2; // // 鎺� // private Integer row; diff --git a/src/main/java/com/zy/core/model/command/RgvCommand.java b/src/main/java/com/zy/core/model/command/RgvCommand.java index 6e9692d..d6c6da9 100644 --- a/src/main/java/com/zy/core/model/command/RgvCommand.java +++ b/src/main/java/com/zy/core/model/command/RgvCommand.java @@ -132,6 +132,14 @@ */ private Boolean command = false; + /** + * 鍚屾椂涓嬪彂鏃朵綔涓氶『搴� + * 0锛氭棤锛堜笉鍒ゆ柇锛� + * 1锛氬伐浣�1鍏堟墽琛� + * 2锛氬伐浣�2鍏堟墽琛� + */ + Short wrkTaskPri = 0; + public void setTaskMode1(Short taskMode1){ this.taskMode1 = taskMode1; this.taskModeType1 = RgvTaskModeType.get(taskModeType1); diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java index 8e1746f..a0bfe6d 100644 --- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java @@ -28,6 +28,14 @@ private transient Long loadingStartTime; + /** + * 鎵ц浼樺厛绾� + * 0:涓嶅垽鏂� + * 1锛氬伐浣�1鍏堟墽琛� + * 2锛氬伐浣�2鍏堟墽琛� + */ + public Short wrkTaskPri; + /** * RGV褰撳墠鐘舵�佸伐浣�1 diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java index 65736ca..4817eb5 100644 --- a/src/main/java/com/zy/core/thread/RgvThread.java +++ b/src/main/java/com/zy/core/thread/RgvThread.java @@ -80,10 +80,10 @@ case 1: readStatus(); break; -// // 宸ヤ綅1銆�2鍐欏叆鏁版嵁 -// case 2: -// write((RgvCommand) task.getData()); -// break; + // 宸ヤ綅1銆�2鍐欏叆鏁版嵁 + case 2: + write12((RgvCommand) task.getData()); + break; //宸ヤ綅1鍐欏叆鏁版嵁 case 4: write1((RgvCommand) task.getData()); @@ -104,6 +104,7 @@ command.setTaskStatus1(RgvTaskStatusType.NONE); // 浠诲姟妯″紡 command.setTargetPosition1( 0); // 婧愮珯 command.setEndStaNo1(0); // 鐩爣绔� + command.setWrkTaskPri((short)0); command.setCommand(false); write1(command); break; @@ -118,6 +119,7 @@ command2.setTaskStatus2(RgvTaskStatusType.NONE); // 浠诲姟妯″紡 command2.setTargetPosition2( 0); // 婧愮珯 command2.setEndStaNo2(0); // 鐩爣绔� + command2.setWrkTaskPri((short)0); command2.setCommand(false); write2(command2); break; @@ -131,6 +133,7 @@ command3.setTaskStatus1(RgvTaskStatusType.NONE); // 浠诲姟妯″紡 command3.setTargetPosition1( 0); // 婧愮珯 command3.setCommand(false); + command3.setWrkTaskPri((short)0); write1(command3); break; case 8 : @@ -143,6 +146,7 @@ command4.setTaskStatus2(RgvTaskStatusType.NONE); // 浠诲姟妯″紡 command4.setTargetPosition2( 0); // 灏忚溅鐩爣绔欐竻闆� command4.setCommand(false); + command4.setWrkTaskPri((short)0); write2(command4); break; // 鍥炲師鐐� 閬胯 @@ -195,6 +199,7 @@ rgvProtocol.setErr5(false); rgvProtocol.setErr6(false); rgvProtocol.setErr7(false); + rgvProtocol.setWrkTaskPri((short)0); //宸ヤ綅1鐘舵�� rgvProtocol.setTaskNo1(0); rgvProtocol.setStatus1((short)-1); @@ -242,7 +247,7 @@ */ private void readStatus(){ try { - OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 30); + OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 27); if (result.IsSuccess) { if (null == rgvProtocol) { rgvProtocol = new RgvProtocol(); @@ -276,6 +281,7 @@ rgvProtocol.setErr5(status3[4]); rgvProtocol.setErr6(status3[5]); rgvProtocol.setErr7(status3[6]); + // rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 12)); // rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 14)); @@ -346,73 +352,179 @@ } } -// /** -// * 宸ヤ綅1銆�2鍚屾椂鍐欏叆鏁版嵁 -// */ -// private boolean write(RgvCommand command) throws InterruptedException { -// if (null == command) { -// log.error("RGV鍐欏叆鍛戒护涓虹┖"); -// return false; -// } -//// convertRow(command); -// command.setRgvNo(slave.getId()); -// short[] array = new short[11]; -// array[0] = command.getAckFinish1(); -// array[1] = command.getTaskNo1(); -// array[2] = command.getTaskMode1(); -// array[3] = command.getSourceStaNo1(); -// array[4] = command.getDestinationStaNo1(); -//// array[0] = command.getAckFinish1(); -//// array[1] = command.getTaskNo1(); -//// array[2] = command.getTaskMode1(); -//// array[3] = command.getSourceStaNo1(); -//// array[4] = command.getDestinationStaNo1(); -//// array[5] = command.getAckFinish2(); -//// array[6] = command.getTaskNo2(); -//// array[7] = command.getTaskMode2(); -//// array[8] = command.getSourceStaNo2(); -//// array[9] = command.getDestinationStaNo2(); -//// array[10] = command.getCommand(); -// OperateResult result = siemensNet.Write("DB100.0", array); -// -//// if (command.getAckFinish1() == 0 && command.getAckFinish2() == 0) { -//// short commandFinish = 3; //宸ヤ綅1銆�2浠诲姟鍚屾椂鍐欏叆 -//// Thread.sleep(100L); -//// result = siemensNet.Write("DB100.20", commandFinish); -//// } -// -// try { -// // 鏃ュ織璁板綍 -// BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class); -// BasRgvOpt basRgvOpt = new BasRgvOpt( -// command.getTaskNo1().intValue(), -// command.getTaskNo2().intValue(), -// command.getRgvNo(), -// new Date(), -// command.getTaskModeType1().toString(), -// command.getSourceStaNo1().intValue(), -// command.getDestinationStaNo1().intValue(), -// command.getSourceStaNo2().intValue(), -// command.getDestinationStaNo2().intValue(), -// null, -// new Date(), -// null -// ); -// bean.insert(basRgvOpt); -// } catch (Exception ignore) {} -// -// if (result != null && result.IsSuccess) { -// Thread.sleep(200); -// this.readStatus(); -// log.info("RGV 鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); -// OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); -// return true; -// } else { -// OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戝啓鍏GV plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); -// log.error("鍐欏叆RGV plc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); -// return false; -// } -// } + /** + * 宸ヤ綅1銆�2鍚屾椂鍐欏叆鏁版嵁 + */ + private boolean write12(RgvCommand command) throws InterruptedException { + if (null == command) { + log.error("RGV鍐欏叆鍛戒护涓虹┖"); + return false; + } + + OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 34); +// OperateResultExOne<byte[]> result4 = siemensNet.Read("DB100.10", (short) 2); + if (result1.IsSuccess){ + RgvCommand one = new RgvCommand(); + one.setTargetPosition1(siemensNet.getByteTransform().TransInt32(result1.Content, 0)); + one.setEndStaNo1(siemensNet.getByteTransform().TransInt32(result1.Content, 4)); + one.setTaskStatus1(siemensNet.getByteTransform().TransInt16(result1.Content, 8)); + one.setTaskNo1(siemensNet.getByteTransform().TransInt32(result1.Content, 10)); + one.setDirection1(siemensNet.getByteTransform().TransInt16(result1.Content, 14)); + one.setTargetPosition2(siemensNet.getByteTransform().TransInt32(result1.Content, 16)); + one.setEndStaNo2(siemensNet.getByteTransform().TransInt32(result1.Content, 20)); + one.setTaskStatus2(siemensNet.getByteTransform().TransInt16(result1.Content, 24)); + one.setTaskNo2(siemensNet.getByteTransform().TransInt32(result1.Content, 26)); + one.setDirection2(siemensNet.getByteTransform().TransInt16(result1.Content, 30)); + + News.error("RGV鍛戒护涓嬪彂鍓嶈鍙栫姸鎬乕id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); + } + OperateResult result2 = siemensNet.Write("DB100.34", false); + if (result2.IsSuccess){ + News.error("涓嬪彂鍓嶆妸杞﹀瓙纭浣嶇疆涓篺alse"); + } + byte[] writeBytes = new byte[36]; + command.setRgvNo(slave.getId()); + siemensNet.getByteTransform().TransInt32(writeBytes, 0, command.getTargetPosition1()); + siemensNet.getByteTransform().TransInt32(writeBytes, 4, command.getEndStaNo1()); + siemensNet.getByteTransform().TransInt16(writeBytes, 8, command.getTaskStatus1()); + siemensNet.getByteTransform().TransInt32(writeBytes, 10, command.getTaskNo1()); + siemensNet.getByteTransform().TransInt16(writeBytes, 14, command.getDirection1()); + setBool(writeBytes, 32, 0, command.getAckFinish1()); + siemensNet.getByteTransform().TransInt32(writeBytes, 16, command.getTargetPosition2()); + siemensNet.getByteTransform().TransInt32(writeBytes, 20, command.getEndStaNo2()); + siemensNet.getByteTransform().TransInt16(writeBytes, 24, command.getTaskStatus2()); + siemensNet.getByteTransform().TransInt32(writeBytes, 26, command.getTaskNo2()); + siemensNet.getByteTransform().TransInt16(writeBytes, 30, command.getDirection2()); + setBool(writeBytes, 32, 1, command.getAckFinish2()); + siemensNet.getByteTransform().TransInt16(writeBytes, 36, command.getWrkTaskPri()); + + OperateResult result = siemensNet.Write("DB100.0", writeBytes); + + if (!result.IsSuccess){ + News.error("鍐欏叆RGVplc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===> [id:{}],{}",slave.getId(),JSON.toJSON(command)); + MessageQueue.offer(SlaveType.Rgv,slave.getId(),new Task(2,command)); + Thread.sleep(100); + readStatus(); + return false; + } + + //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔� + Thread.sleep(400); + try { + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 36); + if (resultRead.IsSuccess){ + RgvCommand one = new RgvCommand(); + one.setDirection1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14)); + one.setTaskNo1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 10)); + one.setTaskStatus1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8)); + one.setEndStaNo1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 4)); + one.setTargetPosition1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 0)); + one.setWrkTaskPri(siemensNet.getByteTransform().TransInt16(resultRead.Content, 36)); + one.setDirection2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 30)); + one.setTaskNo2(siemensNet.getByteTransform().TransInt32(resultRead.Content, 26)); + one.setTaskStatus2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 24)); + one.setEndStaNo2(siemensNet.getByteTransform().TransInt32(resultRead.Content, 20)); + one.setTargetPosition2(siemensNet.getByteTransform().TransInt32(resultRead.Content, 16)); + if ( + !command.getDirection1().equals(one.getDirection1()) || + !command.getTaskNo1().equals(one.getTaskNo1()) || + !command.getTaskStatus1().equals(one.getTaskStatus1()) || + !command.getEndStaNo1().equals(one.getEndStaNo1()) || + !command.getTargetPosition1().equals(one.getTargetPosition1()) || + !command.getDirection2().equals(one.getDirection2()) || + !command.getTaskNo2().equals(one.getTaskNo2()) || + !command.getTaskStatus2().equals(one.getTaskStatus2()) || + !command.getEndStaNo2().equals(one.getEndStaNo2()) || + !command.getTargetPosition2().equals(one.getTargetPosition2()) + ) { + try{ + News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); + }catch (Exception e){ + try{ + News.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSON(command),JSON.toJSON(resultRead)); + }catch (Exception e1){ + News.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSON(command)); + } + } + News.error("Rgv鍛戒护鍥炶澶辫触鍚庯紝閲嶆柊娣诲姞浠诲姟鍒伴槦鍒� ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command)); + MessageQueue.offer(SlaveType.Rgv, slave.getId(), new Task(4, command)); + Thread.sleep(100); + readStatus(); + return false; + }else { + News.info("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); + } + } + }catch (Exception e){ + News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�"); + } + + if (command.getAckFinish1() || command.getAckFinish2()) { + if (result.IsSuccess) { + Thread.sleep(300); + //浠诲姟涓嬪彂娆℃暟 + int writeCount2 = 0; + + do { + writeCount2++; + boolean commandFinish = false; + boolean commandFinish2 = false; + result = siemensNet.Write("DB100.DBX32.0", commandFinish); + OperateResult result3 = siemensNet.Write("DB100.DBX32.1", commandFinish); + + if(result.IsSuccess && result3.IsSuccess){ + //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔� + Thread.sleep(200); + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.32", (short) 2); + if (resultRead.IsSuccess) { + commandFinish=siemensNet.getByteTransform().TransBool(resultRead.Content, 0); + commandFinish2=siemensNet.getByteTransform().TransBool(resultRead.Content, 1); + + if (!commandFinish && !commandFinish2) { + News.error("RGV浠诲姟纭浣�"+commandFinish+"鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); + }else{ + //浠诲姟鍛戒护鍐欏叆鎴愬姛 + News.info("RGV浠诲姟纭浣�"+commandFinish+"鍥炶鎴愬姛锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); + break; + } + }else { + News.error("RGV浠诲姟纭浣�"+commandFinish+"鍥炶澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); + } + } else { + News.error("RGV浠诲姟纭浣�"+commandFinish+"鍐欏叆澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); + } + }while (writeCount2<5); + } + } + + + try { + // 鏃ュ織璁板綍 + BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class); + BasRgvOpt basRgvOpt = new BasRgvOpt( + command.getTaskNo1(), + command.getTaskNo2(), + command.getRgvNo(), + new Date(), + command.getTargetPosition1() + ); + bean.insert(basRgvOpt); + } catch (Exception ignore) { + log.error(ignore.getMessage()); + } + + if (result != null && result.IsSuccess) { + Thread.sleep(200); + this.readStatus(); + log.info("RGV 宸ヤ綅1鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); + OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 宸ヤ綅12鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); + return true; + } else { + OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戝啓鍏GV plc宸ヤ綅12鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + log.error("鍐欏叆RGV plc宸ヤ綅1鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + return false; + } + } /** * 宸ヤ綅1鍐欏叆鏁版嵁 @@ -445,7 +557,7 @@ OperateResult result2 = siemensNet.Write("DB100.34", false); if (result2.IsSuccess){ - News.error("涓嬪彂鍓嶆妸杞﹀瓙纭浣嶇疆涓�0"); + News.error("涓嬪彂鍓嶆妸杞﹀瓙纭浣嶇疆涓篺alse"); } byte[] writeBytes = new byte[34]; command.setRgvNo(slave.getId()); @@ -636,11 +748,11 @@ OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 34); if (resultRead.IsSuccess){ RgvCommand one = new RgvCommand(); - one.setDirection1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 30)); - one.setTaskNo1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 26)); - one.setTaskStatus1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 24)); - one.setEndStaNo1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 20)); - one.setTargetPosition1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 16)); + one.setDirection2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 30)); + one.setTaskNo2(siemensNet.getByteTransform().TransInt32(resultRead.Content, 26)); + one.setTaskStatus2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 24)); + one.setEndStaNo2(siemensNet.getByteTransform().TransInt32(resultRead.Content, 20)); + one.setTargetPosition2(siemensNet.getByteTransform().TransInt32(resultRead.Content, 16)); if ( !command.getDirection2().equals(one.getDirection2()) || !command.getTaskNo2().equals(one.getTaskNo2()) || diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index cf079d9..31bac27 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -178,9 +178,11 @@ rgvInTStn[0]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 1042 + staNo2: 1043 rgvInTStn[1]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 1105 + staNo2: 1104 rgvInTStn[2]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 1038 @@ -207,18 +209,23 @@ rgvOutTStn[0]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 1007 + staNo2: 1005 rgvOutTStn[1]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 1010 + staNo2: 1008 rgvOutTStn[2]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 1021 + staNo2: 1019 rgvOutTStn[3]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 1024 + staNo2: 1022 rgvOutTStn[4]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 1031 + staNo2: 1029 #RGV鍑哄簱鏀捐揣绔欑偣 rgvOutPStn[0]: devpPlcId: ${wcs-slave.devp[0].id} diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml index 296c581..66aac22 100644 --- a/src/main/resources/mapper/WrkMastMapper.xml +++ b/src/main/resources/mapper/WrkMastMapper.xml @@ -185,6 +185,12 @@ <select id="selectPakoutEmpty" resultMap="BaseResultMap"> select top 1 * from dbo.asr_wrk_mast where io_type = 110 and sta_no = #{staNo} order by io_time,wrk_no </select> + <select id="countPakOutEmpty" resultType="int"> + select count(*) + from dbo.asr_wrk_mast + where io_type = 110 and sta_no = #{staNo} + </select> + <select id="selectPickStep2" resultMap="BaseResultMap"> select top 1 * from asr_wrk_mast where barcode = #{barcode} and (wrk_sts=14 and io_type=107) or (wrk_sts=2 and io_type=57) </select> -- Gitblit v1.9.1