From 0ae7648dae40c6b7efa15e276099da7a9213ad37 Mon Sep 17 00:00:00 2001 From: lty <876263681@qq.com> Date: 星期二, 23 九月 2025 22:13:13 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/model/protocol/StaProtocol.java | 30 ++ src/main/java/com/zy/core/thread/RgvThread.java | 61 ++-- src/main/java/com/zy/core/enums/RgvModeType.java | 4 src/main/java/com/zy/asrs/controller/RgvController.java | 2 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 579 +++++++++++++++++++++++----------------- src/main/java/com/zy/core/MainProcess.java | 19 src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 29 ++ src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java | 3 src/main/java/com/zy/core/model/Task.java | 17 + src/main/java/com/zy/core/thread/SiemensDevpThread.java | 74 ++++- src/main/resources/mapper/WrkMastStaMapper.xml | 7 11 files changed, 525 insertions(+), 300 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java index ee4a2ac..085fc48 100644 --- a/src/main/java/com/zy/asrs/controller/RgvController.java +++ b/src/main/java/com/zy/asrs/controller/RgvController.java @@ -89,7 +89,7 @@ if (rgvProtocol == null) continue; vo.setStatusType(rgvProtocol.modeType.desc); // 妯″紡鐘舵�� - vo.setStatus(rgvProtocol.getStatusType().desc); // 鐘舵�� +// vo.setStatus(rgvProtocol.getMode().desc); // 鐘舵�� vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 宸ヤ綅1浠诲姟鍙� vo.setStatus1(rgvProtocol.getStatusType1().desc); // 宸ヤ綅1鐘舵�� vo.setLoading1(rgvProtocol.getLoaded1() ? "鏈夌墿" : "鏃犵墿"); // 宸ヤ綅1鏈夌墿 diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java index 36117fd..99650a2 100644 --- a/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java +++ b/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java @@ -35,6 +35,7 @@ List<WrkMastSta> selectNoInterfereList(@Param("staStarts") List<Integer> staStarts, @Param("staEnds") List<Integer> staEnds); - WrkMastSta selectByWorkSta(@Param("workSta") Integer workSta, @Param("rgvo") Integer rgvNo); + List<WrkMastSta> selectByWorkStaList(@Param("workSta") Integer workSta, @Param("rgvNo") Short rgvNo); + WrkMastSta selectByWorkSta(@Param("workSta") Integer workSta, @Param("rgvNo") Integer rgvNo); } 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 ba96987..655b13f 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -2790,7 +2790,56 @@ // } // } + /** + * 灏忚溅涓婂伐浣嶅乏鍙崇Щ鍔� + * + */ + public synchronized boolean rgvStaMove(Long workNo) { + try { + for (RgvSlave rgv : slaveProperties.getRgv()) { + RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + continue; + } else { + rgvProtocol = rgvProtocol.clone(); + } + if(rgvProtocol.isLoaded2ing() && rgvProtocol.isLoaded1ing()){ + continue; + } + if(rgvProtocol.isLoaded1ing() && !rgvProtocol.isLoaded2ing() && rgvProtocol.getTaskNo1() != 0){ + WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1()); + Short moveSta =0; + if(wrkMastSta.getStaEnd()< 1036 || (2000 < wrkMastSta.getStaEnd() && wrkMastSta.getStaEnd()<2031)){ + moveSta = 2; + boolean rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(),7,wrkMastSta.getWrkNo(),moveSta); + if (!rgvComplete){ + log.error("灏忚溅宸ヤ綅绉诲姩澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); + break; + } + } + } + if(!rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing() && rgvProtocol.getTaskNo2() != 0){ + WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2()); + Short moveSta =0; + + if(wrkMastSta.getStaEnd()> 2030 || (1036 < wrkMastSta.getStaEnd() && wrkMastSta.getStaEnd()<2000)){ + moveSta = 1; + boolean rgvComplete = rgvComplete3((int) rgvProtocol.getRgvNo(),8,wrkMastSta.getWrkNo(),moveSta); + if (!rgvComplete){ + log.error("灏忚溅宸ヤ綅绉诲姩澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); + break; + } + } + } + + + } + }catch (Exception e){ + log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e); + } + } /** * 瀹屾垚灏忚溅浠诲姟 */ @@ -2811,14 +2860,26 @@ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgv.getId()); continue; } + //鏀捐揣纭 + if(rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING && rgvProtocol.getModeType() == RgvModeType.AUTO){ + boolean rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 3); + if (!rgvComplete){ + log.error("灏忚溅鏀捐揣澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo()); + } + } + if(rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING && rgvProtocol.getModeType() == RgvModeType.AUTO){ + boolean rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 6); + if (!rgvComplete){ + log.error("灏忚溅鏀捐揣澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo()); + } + } // 鍙湁褰揜GV宸ヤ綅1绛夊緟WCS纭銆佽嚜鍔� - if ((rgvProtocol.getStatusType1() == RgvStatusType.WAITING || rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING) + if (rgvProtocol.getStatusType1() == RgvStatusType.WAITING && rgvProtocol.getModeType() == RgvModeType.AUTO - && (rgvProtocol.getStatusType() == RgvStatusType.WORKING1) ){ - log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol); + log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType1(),rgvProtocol); if(rgvProtocol.getTaskNo1() == 9999){ // 棰勮皟搴︿换鍔$‘璁� BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); Integer staNo = basRgvMap.getNowRoute(); @@ -2847,27 +2908,19 @@ } } } - if (rgvProtocol.getTaskNo1()!=0 && rgvProtocol.getTaskNo1()!=9999){ + if ( rgvProtocol.getTaskNo1()!=9999){ WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1()); + if(null == wrkMastSta){ + log.error("灏忚溅鏃犱换鍔�"); + continue; + } if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭 - wrkMastSta.setWrkSts(4); //琛岃蛋鐘舵�� - try{ - wrkMastStaMapper.updateById(wrkMastSta); - log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); - }catch (Exception e){ - log.error("鏇存柊灏忚溅浠诲姟澶辫触"); + if(!Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd())){ + continue; } - boolean rgvComplete = false; - - rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7); - if (!rgvComplete){ - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); - break; - } - break; - } - if(wrkMastSta.getWrkSts() == 4){//琛岃蛋纭 + wrkMastSta.setUpdateTime(new Date()); wrkMastSta.setWrkSts(2); +// wrkMastSta.setWorkSta(2); try{ wrkMastStaMapper.updateById(wrkMastSta); log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); @@ -2876,59 +2929,76 @@ } boolean rgvComplete = false; - rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7); + rgvComplete = rgvStaMove(wrkMastSta.getWrkNo()); if (!rgvComplete){ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); break; } break; } - if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){ - log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta); - continue; - } - - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); - StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd()); - if (staProtocol == null) { - continue; - } else { - staProtocol = staProtocol.clone(); - } - if (!staProtocol.isAutoing() || !staProtocol.isLoading()){ - continue; - } - WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue()); - if (!Cools.isEmpty(wrkMast)){ - if (!staProtocol.isPakMk()){ - continue; - } - // 涓嬪彂绔欑偣淇℃伅 - staProtocol.setWorkNo(wrkMast.getWrkNo()); - staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); - devpThread.setPakMk(staProtocol.getSiteId(), false); - log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); - if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) { - continue; - } - } - boolean rgvComplete = false; - - rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),3); - if (!rgvComplete){ - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); - break; - } - WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1()); - wrkMast1.setPdcType("Y"); - - wrkMastService.updateById(wrkMast1); - - wrkMastSta.setWrkSts(3); - wrkMastStaMapper.updateById(wrkMastSta); - BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); - rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471"); +// if(wrkMastSta.getWrkSts() == 4){//琛岃蛋纭 +// wrkMastSta.setWrkSts(2); +// try{ +// wrkMastStaMapper.updateById(wrkMastSta); +// log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); +// }catch (Exception e){ +// log.error("鏇存柊灏忚溅浠诲姟澶辫触"); +// } +// boolean rgvComplete = false; +// +// rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7); +// if (!rgvComplete){ +// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); +// break; +// } +// break; +// } +// if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){ +// log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta); +// continue; +// } +// +// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); +// StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd()); +// if (staProtocol == null) { +// continue; +// } else { +// staProtocol = staProtocol.clone(); +// } +// if (!staProtocol.isAutoing() || !staProtocol.isLoading()){ +// continue; +// } +// WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue()); +// if (!Cools.isEmpty(wrkMast)){ +// if (!staProtocol.isPakMk()){ +// continue; +// } +// // 涓嬪彂绔欑偣淇℃伅 +// staProtocol.setWorkNo(wrkMast.getWrkNo()); +// staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); +// devpThread.setPakMk(staProtocol.getSiteId(), false); +// log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); +// if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) { +// continue; +// } +// } +// boolean rgvComplete = false; +// +// rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),3); +// if (!rgvComplete){ +// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); +// break; +// } +// WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1()); +// wrkMast1.setPdcType("Y"); +// +// wrkMastService.updateById(wrkMast1); +// +// wrkMastSta.setWrkSts(3); +// wrkMastStaMapper.updateById(wrkMastSta); +// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); +// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); +// rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471"); } else { @@ -2936,31 +3006,19 @@ } } // 鍙湁褰揜GV宸ヤ綅2绛夊緟WCS纭銆佽嚜鍔� - if ((rgvProtocol.getStatusType2() == RgvStatusType.WAITING || rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING) + if (rgvProtocol.getStatusType2() == RgvStatusType.WAITING && rgvProtocol.getModeType() == RgvModeType.AUTO - && (rgvProtocol.getStatusType() == RgvStatusType.WORKING1) ){ - log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol); + log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType2(),rgvProtocol); if (rgvProtocol.getTaskNo2() !=0 ){ - WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1()); + WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2()); if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭 - wrkMastSta.setWrkSts(4); //琛岃蛋鐘舵�� - try{ - wrkMastStaMapper.updateById(wrkMastSta); - log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); - }catch (Exception e){ - log.error("鏇存柊灏忚溅浠诲姟澶辫触"); - } boolean rgvComplete = false; - - rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7); + rgvComplete = rgvComplete2((int) rgvProtocol.getRgvNo(),8,wrkMastSta.getWrkNo()); if (!rgvComplete){ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); break; } - break; - } - if(wrkMastSta.getWrkSts() == 4){//琛岃蛋鍚庣‘璁� wrkMastSta.setWrkSts(2); try{ wrkMastStaMapper.updateById(wrkMastSta); @@ -2968,67 +3026,65 @@ }catch (Exception e){ log.error("鏇存柊灏忚溅浠诲姟澶辫触"); } - boolean rgvComplete = false; - - rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7); - if (!rgvComplete){ - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); - break; - } break; } - if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){ - log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta); - continue; - } +// if(wrkMastSta.getWrkSts() == 4){//琛岃蛋鍚庣‘璁� +// wrkMastSta.setWrkSts(2); +// try{ +// wrkMastStaMapper.updateById(wrkMastSta); +// log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); +// }catch (Exception e){ +// log.error("鏇存柊灏忚溅浠诲姟澶辫触"); +// } +// boolean rgvComplete = false; +// +// rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7); +// if (!rgvComplete){ +// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); +// break; +// } +// break; +// } +// if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){ +// log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta); +// continue; +// } - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); - StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd()); - if (staProtocol == null) { - continue; - } else { - staProtocol = staProtocol.clone(); - } - if (!staProtocol.isAutoing() || !staProtocol.isLoading()){ - continue; - } - WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue()); - if (!Cools.isEmpty(wrkMast)){ - if (!staProtocol.isPakMk()){ - continue; - } - // 涓嬪彂绔欑偣淇℃伅 - staProtocol.setWorkNo(wrkMast.getWrkNo()); - staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); - devpThread.setPakMk(staProtocol.getSiteId(), false); - log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); - if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) { - continue; - } - } - int sourceSta = wrkMast.getSourceStaNo(); - boolean rgvComplete = false; +// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); +// StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd()); +// if (staProtocol == null) { +// continue; +// } else { +// staProtocol = staProtocol.clone(); +// } +// if (!staProtocol.isAutoing() || !staProtocol.isLoading()){ +// continue; +// } +// WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue()); +// +// int sourceSta = wrkMast.getSourceStaNo(); +// boolean rgvComplete = false; +// +// //鍙屽伐浣嶅嚭鍏ュ簱涓嶅悓宸ヤ綅澶嶄綅 +// rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),6); - //鍙屽伐浣嶅嚭鍏ュ簱涓嶅悓宸ヤ綅澶嶄綅 - rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),6); - - if (!rgvComplete){ - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); - break; - } - WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1()); - wrkMast1.setPdcType("Y"); - - wrkMastService.updateById(wrkMast1); - - wrkMastSta.setWrkSts(3); - wrkMastStaMapper.updateById(wrkMastSta); - BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); - rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471"); +// if (!rgvComplete){ +// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); +// break; +// } +// WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1()); +// wrkMast1.setPdcType("Y"); +// +// wrkMastService.updateById(wrkMast1); +// +// wrkMastSta.setWrkSts(3); +// wrkMastStaMapper.updateById(wrkMastSta); +// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); +// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); +// rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471"); } else { - log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo()); + log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭锛�",rgvProtocol.getRgvNo()); } } //褰撳皬杞︽棤浠诲姟鏃跺彇娑堥攣瀹� @@ -3061,9 +3117,9 @@ continue; } //灏忚溅鏃犱换鍔℃椂璺宠繃 - if(rgvProtocol.getTaskNo1() ==0 && rgvProtocol.getTaskNo2() == 0){ - continue; - } +// if(rgvProtocol.getTaskNo1() ==0 && rgvProtocol.getTaskNo2() == 0){ +// continue; +// } //鍏ュ簱鏀捐揣 if(rgvThread.isPakIn()){ for(RgvSlave.RgvStn rgvStn : rgv.getRgvInPStn()){//鍏ュ簱鏀捐揣绔欑偣 @@ -3084,7 +3140,7 @@ continue; } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isInEnable() && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) { flag = true; } @@ -3096,31 +3152,40 @@ continue; } BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); +// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� - Integer wrkNo = 0; +// Integer wrkNo = 0; if(rgvProtocol.getTaskNo2() != 0){ wrkNo = rgvProtocol.getTaskNo2(); - }else{ - wrkNo = rgvProtocol.getTaskNo1(); } - WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(wrkNo));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 +// else{ +// wrkNo = rgvProtocol.getTaskNo1(); +// } + if(!rgvProtocol.isLoaded2ing()){ + continue; + } + WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2());//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 if( null == wrkMastSta ) { News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); continue; } - boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null); //鍛戒护涓嬪彂 + if(!Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd())){ + continue; + } + + boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null,2); //鍛戒护涓嬪彂 if (sign){ try{ + wrkMastSta.setWrkSts(3); wrkMastStaMapper.updateById(wrkMastSta); log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); }catch (Exception e){ log.error("鏇存柊灏忚溅浠诲姟澶辫触"); } - boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); - if (!signMap){ - log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); - } +// boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); +// if (!signMap){ +// log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); +// } } else { log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); } @@ -3147,7 +3212,7 @@ continue; } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isOutEnable() + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isOutEnable() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) { flag = true; } @@ -3159,32 +3224,34 @@ continue; } BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� - Integer wrkNo = 0; +// Integer wrkNo = 0; if(rgvProtocol.getTaskNo1() != 0){ wrkNo = rgvProtocol.getTaskNo1(); - }else{ - wrkNo = rgvProtocol.getTaskNo2(); } - WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(wrkNo));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 +// else{ +// wrkNo = rgvProtocol.getTaskNo2(); +// } + WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 + if( null == wrkMastSta ) { - News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍑哄簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); + News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); continue; } - wrkMastSta.setWrkSts(2); - boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null); //鍛戒护涓嬪彂 + if(!Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd())){ + continue; + } + Integer pos = 2; + boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null,pos); //鍛戒护涓嬪彂 if (sign){ try{ + wrkMastSta.setWrkSts(3); wrkMastStaMapper.updateById(wrkMastSta); log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); }catch (Exception e){ log.error("鏇存柊灏忚溅浠诲姟澶辫触"); } - boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); - if (!signMap){ - log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); - } + } else { log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); } @@ -3217,8 +3284,8 @@ } // 鍙湁褰揜GV绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� - if ((rgvProtocol.getStatusType1() == RgvStatusType.IDLE || rgvProtocol.getStatusType2() == RgvStatusType.IDLE) -// && rgvProtocol.getModeType() == RgvModeType.AUTO + if ((rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getStatusType2() == RgvStatusType.IDLE) + && rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk()) { News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛孯GV鍏ュ嚭搴撲綔涓氫笅鍙�"); // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡 @@ -3266,7 +3333,7 @@ public synchronized void rgvRunWrkMastInTest(){ BasRgvMap basRgvMap = basRgvMapMapper.selectById(1); List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); - basRgvMap.setNowRoute(1031); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� + basRgvMap.setNowRoute(1021); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(342);//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 // WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, 1); @@ -3280,10 +3347,10 @@ // } wrkMastSta.setWorkSta(1); wrkMastSta.setRgvNo(1); - wrkMastSta.setStaStart(1031); + wrkMastSta.setStaStart(1035); Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃� boolean sign = false; - sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction); //鍛戒护涓嬪彂 +// sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction,); //鍛戒护涓嬪彂 if (sign){ wrkMastSta.setWrkSts(1); try{ @@ -3343,7 +3410,7 @@ } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() != 0 && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) { flag = true; } @@ -3355,9 +3422,10 @@ continue; } BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); +// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� - WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 +// WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 + WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(staProtocol.getWorkNo());//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 if( null == wrkMastSta ) { News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); @@ -3372,20 +3440,14 @@ rgvThread.setPakRgv(false); continue; } - wrkMastSta.setWorkSta(wrkMastSta2 != null ? 1 : 2); + wrkMastSta.setWorkSta(wrkMastSta2 !=null ? 1 : 2); wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo()); Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃� boolean sign = false; - //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠� - if(wrkMastSta.getWorkSta() == 2 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0 && sign){ - 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){ +// if(!Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd())){ +// continue; +// } + if(Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd()) && wrkMastSta.getWrkSts() == 4){ wrkMastSta.setWrkSts(1); try{ wrkMastStaMapper.updateById(wrkMastSta); @@ -3393,11 +3455,18 @@ }catch (Exception e){ log.error("鏇存柊灏忚溅浠诲姟澶辫触"); } + } + //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠� + if(wrkMastSta.getWorkSta() == 2 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0 && sign){ +// 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,1); //鍛戒护涓嬪彂 + } + if (sign){ rgvThread.setPakOut(false);//鍑哄簱涓嶅厑璁� - boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); - if (!signMap){ - log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); - } } else { log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); } @@ -3436,6 +3505,7 @@ } else { staProtocol = staProtocol.clone(); } + // 鏌ヨ绔欑偣璇︾粏淇℃伅 BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo()); if (staDetl == null) { @@ -3443,7 +3513,7 @@ continue; } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isOutEnable() + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) { flag = true; } @@ -3455,9 +3525,9 @@ continue; } BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); - List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); +// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� - WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 + WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(staProtocol.getWorkNo());//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。 if( null == wrkMastSta ) { News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo()); continue; @@ -3472,20 +3542,12 @@ continue; } WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWorkSta(1, (int) rgvProtocol.getRgvNo()); - wrkMastSta.setWorkSta(wrkMastSta1 != null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣� + wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣� wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo()); boolean sign = false; Short direction = 1;//宸ヤ綅1鏂瑰悜 //鑻ュ彇璐т负宸ヤ綅2涓斿彇璐у彛鍓嶄竴绔欑偣鏈夌墿锛岀粰鍙屽伐浣嶅悓鏃朵笅鍙戞寚浠� - if(wrkMastSta.getWorkSta() == 1 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0 && sign){ - 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){ + if(Objects.equals(rgvProtocol.getRgvPosI2(), wrkMastSta.getStaEnd()) && wrkMastSta.getWrkSts() == 4){ wrkMastSta.setWrkSts(1); try{ wrkMastStaMapper.updateById(wrkMastSta); @@ -3493,11 +3555,17 @@ }catch (Exception e){ log.error("鏇存柊灏忚溅浠诲姟澶辫触"); } + } + if(wrkMastSta.getWorkSta() == 1 && staProtocol2 != null && staProtocol2.isLoading() && staProtocol2.getWorkNo() > 0 && sign){ +// 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,2); //鍛戒护涓嬪彂 + } + if (sign){ rgvThread.setPakIn(false);//鍏ュ簱涓嶅厑璁� - boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); - if (!signMap){ - log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); - } } else { log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); } @@ -3946,61 +4014,45 @@ /* * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔� * */ - public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta,Short direction){ + public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta,Short direction,Integer pos){ try{ // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- RgvCommand rgvCommand = new RgvCommand(); boolean pakIn1 = true; boolean pakIn2 = true; rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 - if(wrkMastSta.getWrkSts() == 0 || wrkMastSta.getWrkSts() == 4){//鍒濆鍚庤璧� - if(wrkMastSta.getWorkSta() == 2){//鍑哄簱RGV鍙栬揣琛岃蛋 - rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� - rgvCommand.setTaskStatus2(RgvTaskStatusType.X_MOVE); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐� - rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 - rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣 -// rgvCommand.setDirection1((short) 2); -// rgvCommand.setWrkTaskMove2(direction); - rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 - pakIn1 = false; - }else{ //鍏ュ簱RGV鍙栬揣琛岃蛋 + if(wrkMastSta.getWrkSts() == 0){//鍒濆鍚庤璧� rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙� rgvCommand.setTaskStatus1(RgvTaskStatusType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅1鐩爣绔欑偣 -// rgvCommand.setDirection1((short) 1); -// rgvCommand.setDirection1(direction); rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 +// } + wrkMastSta.setWrkSts(4); + try{ + wrkMastStaMapper.updateById(wrkMastSta); + log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); + }catch (Exception e){ + log.error("鏇存柊灏忚溅浠诲姟澶辫触"); } - if(!pakIn1){ - 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; - } - }else{ - 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; - } + 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; } } if(wrkMastSta.getWrkSts() == 1){//鍙栬揣 - if(wrkMastSta.getWorkSta() == 2){//鍑哄簱RGV鍙栬揣 + if(pos == 2){//鍑哄簱RGV鍙栬揣 rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� rgvCommand.setTaskStatus2(RgvTaskStatusType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐� rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣 - rgvCommand.setDirection1((short)2); - rgvCommand.setWrkTaskMove2(direction); + rgvCommand.setDirection2((short)2); +// rgvCommand.setWrkTaskMove2(direction); rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 pakIn1 = false; }else{ //鍏ュ簱RGV鍙栬揣 @@ -4010,11 +4062,11 @@ rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆 rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅1鐩爣绔欑偣 rgvCommand.setDirection1((short)1); - rgvCommand.setWrkTaskMove1(direction); +// rgvCommand.setWrkTaskMove1(direction); rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 } if(!pakIn1){ - if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { + 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; @@ -4022,7 +4074,7 @@ return true; } }else{ - if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) { + 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; @@ -4032,13 +4084,13 @@ } } if(wrkMastSta.getWrkSts() == 2) {//鏀捐揣 - if((wrkMastSta.getWorkSta() == 2)){ //宸ヤ綅2浠诲姟鏀捐揣 + if((pos == 2)){ //宸ヤ綅2浠诲姟鏀捐揣 rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙� rgvCommand.setTaskStatus2(RgvTaskStatusType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣 rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆 rgvCommand.setTargetPosition1(wrkMastSta.getStaEnd()); //宸ヤ綅2鐩爣绔欑偣 - rgvCommand.setDirection1((short)2); + rgvCommand.setDirection2((short)2); rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 pakIn2 = false; }else{ //宸ヤ綅1浠诲姟鏀捐揣 @@ -4050,7 +4102,7 @@ rgvCommand.setDirection1((short)1); rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭 } - if(!pakIn2){ + 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)); @@ -4315,6 +4367,43 @@ } } + /* + * 灏忚溅澶嶄綅 + * */ + public synchronized boolean rgvComplete2(Integer rgvId,Integer step,Long workNo){ + try{ + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(step, new RgvCommand(),workNo))) { + //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� + log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}",rgvId); + return false; + } else { + log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}",rgvId); + return true; + } + }catch (Exception e){ + log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}銆傚紓甯革細"+e,rgvId); + return false; + } + } + + public synchronized boolean rgvComplete3(Integer rgvId,Integer step,Long workNo,Short moveSta){ + try{ + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(step, new RgvCommand(),workNo,moveSta))) { + //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� + log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}",rgvId); + return false; + } else { + log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}",rgvId); + return true; + } + }catch (Exception e){ + log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}銆傚紓甯革細"+e,rgvId); + return false; + } + } + diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java index a6a86c4..16f3094 100644 --- a/src/main/java/com/zy/core/MainProcess.java +++ b/src/main/java/com/zy/core/MainProcess.java @@ -37,8 +37,8 @@ thread = new Thread(this::crnAndDevRun); thread.start(); - armThread = new Thread(this::roboticArmDispatch); - armThread.start(); +// armThread = new Thread(this::roboticArmDispatch); +// armThread.start(); } private void crnAndDevRun() { while (!Thread.currentThread().isInterrupted()) { @@ -137,6 +137,9 @@ } //瀹屾垚灏忚溅浠诲姟 mainService.rgvCompleteWrkMastSta(); + + //宸ヤ綅绉诲姩 +// mainService.rgvStaMove(); /////////////////////////////////////RGV璋冨害///////////////////////////////////// } catch (Exception e) { @@ -157,12 +160,12 @@ continue; } -// //arm浠诲姟瀹屾垚 -// mainService.armMissionAccomplished(); -// mainService.armMissionAccomplishedScanToCheckIn(); -// -// //arm浠诲姟涓嬪彂 -// mainService.armTaskAssignment(); + //arm浠诲姟瀹屾垚 + mainService.armMissionAccomplished(); + mainService.armMissionAccomplishedScanToCheckIn(); + + //arm浠诲姟涓嬪彂 + mainService.armTaskAssignment(); } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/com/zy/core/enums/RgvModeType.java b/src/main/java/com/zy/core/enums/RgvModeType.java index 3a344bb..139d63d 100644 --- a/src/main/java/com/zy/core/enums/RgvModeType.java +++ b/src/main/java/com/zy/core/enums/RgvModeType.java @@ -5,8 +5,8 @@ NONE(-1, "绂荤嚎"), STOP(0, "鍏虫満"), HAND(1, "鎵嬪姩"), - HALF_AUTO(2, "鍗婅嚜鍔�"), - AUTO(3, "鑷姩"), +// HALF_AUTO(2, "鍗婅嚜鍔�"), + AUTO(2, "鑷姩"), AUTO2(100, "鍏跺畠"), ; diff --git a/src/main/java/com/zy/core/model/Task.java b/src/main/java/com/zy/core/model/Task.java index c3cf784..9802ae9 100644 --- a/src/main/java/com/zy/core/model/Task.java +++ b/src/main/java/com/zy/core/model/Task.java @@ -12,6 +12,10 @@ private Object data; + private Long workNo; + + private Short moveSta; + public Task() { } @@ -19,4 +23,17 @@ this.step = step; this.data = data; } + + public Task(Integer step, Object data,Long workNo) { + this.step = step; + this.data = data; + this.workNo = workNo; + } + + public Task(Integer step, Object data,Long workNo,Short moveSta) { + this.step = step; + this.data = data; + this.workNo = workNo; + this.moveSta = moveSta; + } } 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 ad4bcae..da1eedd 100644 --- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java @@ -326,6 +326,35 @@ return map.get(RgvPos); } + public Integer getRgvPosI2() { + if (RgvPos == null) return 0; + + // key: 绔欑偣鍙� value: 鍩哄噯鐗╃悊浣嶇疆 + Map<Integer, Integer> posMap = new HashMap<>(); + posMap.put(1004, 6534); + posMap.put(1007, 33634); + posMap.put(1010, 75174); + posMap.put(1014, 102124); + posMap.put(1018, 138224); + posMap.put(1021, 178034); + posMap.put(1024, 219684); + posMap.put(1028, 246724); + posMap.put(1031, 288194); + posMap.put(1035, 315204); + int tolerance = 50; // 鍏佽璇樊鑼冨洿 + + for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) { + int site = entry.getKey(); + int basePos = entry.getValue(); + if (Math.abs(RgvPos - basePos) <= tolerance) { + return site; + } + } + + return 0; // 娌″尮閰嶅埌绔欑偣 + } + + @Override public RgvProtocol clone() { try { diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java index 0e2be39..71d4c4e 100644 --- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java @@ -3,6 +3,9 @@ import com.zy.asrs.entity.BasDevp; import lombok.Data; +import java.util.HashMap; +import java.util.Map; + /** * 杈撻�佺嚎plc鍗曚釜绔欑偣璇︾粏淇℃伅 * Created by vincent on 2020/8/6 @@ -131,5 +134,32 @@ } return null; } +// public Integer getNearbySta() { +// if (getNearbySta == null) return 0; +// +// // key: 绔欑偣鍙� value: 鍩哄噯鐗╃悊浣嶇疆 +// Map<Integer, Integer> posMap = new HashMap<>(); +// posMap.put(1004, 6534); +// posMap.put(1007, 33634); +// posMap.put(1010, 75174); +// posMap.put(1014, 102124); +// posMap.put(1018, 138224); +// posMap.put(1021, 178034); +// posMap.put(1024, 219684); +// posMap.put(1028, 246724); +// posMap.put(1031, 288194); +// posMap.put(1035, 315204); +// int tolerance = 50; // 鍏佽璇樊鑼冨洿 +// +// for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) { +// int site = entry.getKey(); +// int basePos = entry.getValue(); +// if (Math.abs(getNearbySta - basePos) <= tolerance) { +// return site; +// } +// } +// +// return 0; // 娌″尮閰嶅埌绔欑偣 +// } } diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java index 1235f3e..4cfa9fa 100644 --- a/src/main/java/com/zy/core/thread/RgvThread.java +++ b/src/main/java/com/zy/core/thread/RgvThread.java @@ -100,7 +100,7 @@ } command.setRgvNo(slave.getId()); // RGV缂栧彿 command.setTaskNo1(0); // 宸ヤ綔鍙� - command.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣� + command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� command.setTaskStatus1(RgvTaskStatusType.NONE); // 浠诲姟妯″紡 command.setTargetPosition1( 0); // 婧愮珯 command.setEndStaNo1(0); // 鐩爣绔� @@ -116,9 +116,9 @@ } command2.setRgvNo(slave.getId()); // RGV缂栧彿 command2.setTaskNo2(0); // 宸ヤ綔鍙� - command2.setAckFinish2(true); // 浠诲姟瀹屾垚纭浣� + command2.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� command2.setTaskStatus2(RgvTaskStatusType.NONE); // 浠诲姟妯″紡 - command2.setTargetPosition2( 0); // 婧愮珯 + command2.setTargetPosition2(0); // 婧愮珯 command2.setEndStaNo2(0); // 鐩爣绔� command2.setWrkTaskPri((short)0); command2.setWrkTaskMove2((short)0); @@ -131,11 +131,13 @@ command3 = new RgvCommand(); } command3.setRgvNo(slave.getId()); // RGV缂栧彿 - command3.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣� + command3.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� command3.setTaskStatus1(RgvTaskStatusType.NONE); // 浠诲姟妯″紡 command3.setTargetPosition1( 0); // 婧愮珯 + command3.setWrkTaskMove1(task.getMoveSta() !=null ? task.getMoveSta() : 0); command3.setCommand(false); command3.setWrkTaskPri((short)0); + command3.setTaskNo1(Math.toIntExact(task.getWorkNo())); write1(command3); break; case 8 : @@ -144,11 +146,13 @@ command4 = new RgvCommand(); } command4.setRgvNo(slave.getId()); // RGV缂栧彿 - command4.setAckFinish2(true); // 浠诲姟瀹屾垚纭浣� + command4.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� command4.setTaskStatus2(RgvTaskStatusType.NONE); // 浠诲姟妯″紡 - command4.setTargetPosition2( 0); // 灏忚溅鐩爣绔欐竻闆� + command4.setTargetPosition2(0); // 灏忚溅鐩爣绔欐竻闆� + command4.setWrkTaskMove2(task.getMoveSta() !=null ? task.getMoveSta() : 0); command4.setCommand(false); command4.setWrkTaskPri((short)0); + command4.setTaskNo2(Math.toIntExact(task.getWorkNo())); write2(command4); break; // 鍥炲師鐐� 閬胯 @@ -539,7 +543,7 @@ return false; } - OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 34); + OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 39); // OperateResultExOne<byte[]> result4 = siemensNet.Read("DB100.10", (short) 2); if (result1.IsSuccess){ RgvCommand one = new RgvCommand(); @@ -549,13 +553,6 @@ one.setTaskNo1(siemensNet.getByteTransform().TransInt32(result1.Content, 10)); one.setDirection1(siemensNet.getByteTransform().TransInt16(result1.Content, 14)); one.setWrkTaskMove1(siemensNet.getByteTransform().TransInt16(result1.Content, 36)); -// one.setAckFinish1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 0)); -// one.setTaskNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 2)); -// one.setTaskMode1(siemensNet.getByteTransform().TransInt16(result3.Content, 4)); -// one.setSourceStaNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 6)); -// one.setDestinationStaNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 8)); -// one.setCommand(siemensNet.getByteTransform().TransInt16(result4.Content, 0)); - News.error("RGV鍛戒护涓嬪彂鍓嶈鍙栫姸鎬乕id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); } @@ -564,7 +561,7 @@ if (result2.IsSuccess){ News.error("涓嬪彂鍓嶆妸杞﹀瓙纭浣嶇疆涓篺alse"); } - byte[] writeBytes = new byte[34]; + byte[] writeBytes = new byte[40]; command.setRgvNo(slave.getId()); writeInt32(writeBytes, 0, command.getTargetPosition1()); @@ -573,7 +570,7 @@ writeInt32(writeBytes, 10, command.getTaskNo1()); writeInt16(writeBytes, 14, (short)command.getDirection1()); writeBool(writeBytes, 32, 0, command.getAckFinish1()); - writeInt16(writeBytes, 36, (short)command.getWrkTaskMove1()); + writeInt16(writeBytes, 38, (short)command.getWrkTaskMove1()); OperateResult result = siemensNet.Write("DB100.0", writeBytes); @@ -589,10 +586,10 @@ //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔� Thread.sleep(400); try { - OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 34); + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 39); if (resultRead.IsSuccess){ RgvCommand one = new RgvCommand(); - one.setWrkTaskMove1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 36)); + one.setWrkTaskMove1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 38)); one.setDirection1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14)); one.setTaskNo1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 10)); one.setTaskStatus1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8)); @@ -628,7 +625,7 @@ News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�"); } - if (command.getAckFinish1()) { + if (!command.getAckFinish1()) { if (result.IsSuccess) { Thread.sleep(300); //浠诲姟涓嬪彂娆℃暟 @@ -636,7 +633,10 @@ do { writeCount2++; - boolean commandFinish = false; + boolean commandFinish = true; + if(command.getCommand()){ + commandFinish = false; + } result = siemensNet.Write("DB100.32.0", commandFinish); if(result.IsSuccess){ //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔� @@ -708,10 +708,10 @@ return false; } - OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 34); + OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 40); if (result1.IsSuccess){ RgvCommand one = new RgvCommand(); - one.setTargetPosition2(siemensNet.getByteTransform().TransInt32(result1.Content, 16)); + one.setTargetPosition1(siemensNet.getByteTransform().TransInt32(result1.Content, 0)); one.setEndStaNo2(siemensNet.getByteTransform().TransInt32(result1.Content, 20)); one.setTaskStatus2(siemensNet.getByteTransform().TransInt16(result1.Content, 24)); one.setTaskNo2(siemensNet.getByteTransform().TransInt32(result1.Content, 26)); @@ -727,10 +727,10 @@ } - byte[] writeBytes = new byte[34]; + byte[] writeBytes = new byte[42]; command.setRgvNo(slave.getId()); - writeInt32(writeBytes, 16, command.getTargetPosition1()); + writeInt32(writeBytes, 0, command.getTargetPosition1()); writeInt32(writeBytes, 20, command.getEndStaNo2()); writeInt16(writeBytes, 24, (short)command.getTaskStatus2()); writeInt32(writeBytes, 26, command.getTaskNo2()); @@ -754,7 +754,7 @@ //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔� Thread.sleep(400); try { - OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 34); + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 42); if (resultRead.IsSuccess){ RgvCommand one = new RgvCommand(); one.setWrkTaskMove2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 38)); @@ -762,13 +762,13 @@ 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)); + one.setTargetPosition1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 0)); if ( !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()) || + !command.getTargetPosition1().equals(one.getTargetPosition1()) || !command.getWrkTaskMove2().equals(one.getWrkTaskMove2()) ) { try{ @@ -793,7 +793,7 @@ News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�"); } - if (command.getAckFinish1()) { + if (!command.getAckFinish2()) { if (result.IsSuccess) { Thread.sleep(300); //浠诲姟涓嬪彂娆℃暟 @@ -801,7 +801,10 @@ do { writeCount2++; - boolean commandFinish = false; + boolean commandFinish = true; + if(command.getCommand()){ + commandFinish = false; + } result = siemensNet.Write("DB100.32.1", commandFinish); if(result.IsSuccess){ //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔� diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index b203b7b..e2581cb 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -287,13 +287,13 @@ Integer offset3 = getOffsetBySiteId2(siteId); staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, offset + offset2)); // 宸ヤ綔鍙� - staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, offset + offset2 + 12)); // 鐩爣绔� + staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, offset + offset2 + 12)); // 鐩爣绔� boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, offset + offset3, 2); - staProtocol.setAutoing(status[0]); // 鑷姩 + staProtocol.setAutoing(!status[0]); // 鑷姩 boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result.Content, offset + offset3 - 4, 3); - staProtocol.setLoading(status1[0]); // 鏈夌墿 + staProtocol.setLoading(!status1[0]); // 鏈夌墿 if(staProtocol.isLoading()){ staProtocol.setInEnable(false); // 鍙叆 staProtocol.setOutEnable(false);// 鍙嚭 @@ -313,22 +313,41 @@ } } } -// BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class); - //RGV灏忚溅1 + BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class); +// RGV灏忚溅1 // Thread.sleep(100); -// OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB50.200",(short)10); +// OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB101.",(short)27); // if (result3.IsSuccess) { // BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo((int) siemensS7Net.getByteTransform().TransInt16(result3.Content, 0)); // if (!Cools.isEmpty(basRgvMap)){ -// Integer siteId = 1; -// StaProtocol staProtocol = station.get(siteId); -// if (null == staProtocol) { -// staProtocol = new StaProtocol(); -// staProtocol.setSiteId(siteId); -// station.put(siteId, staProtocol); +// Integer siteId1 = 1; +// Integer siteId2 = 2; +// StaProtocol staProtocol1 = station.get(siteId1); +// StaProtocol staProtocol2 = station.get(siteId1); +// +// if (null == staProtocol1) { +// staProtocol1 = new StaProtocol(); +// staProtocol1.setSiteId(siteId1); +// station.put(siteId1, staProtocol1); // } -// staProtocol.setAutoing(true); -// staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, 8))); +// if (null == staProtocol2) { +// staProtocol2 = new StaProtocol(); +// staProtocol2.setSiteId(siteId2); +// station.put(siteId2, staProtocol2); +// +// } +// String pos = String.valueOf(getRgvPosI(siemensS7Net.getByteTransform().TransInt32(result.Content, 4))); +// staProtocol1.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, 2) == 2); +// staProtocol2.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, 2) == 2); +// staProtocol1.setNearbySta(pos); +// staProtocol1.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, 8)); +// staProtocol2.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, 8)); +// staProtocol1.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 16)); +// staProtocol2.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 20)); +// boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result.Content, 24, 2); +// staProtocol1.setLoading(status1[0]); +// staProtocol2.setLoading(status1[1]); +// // staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, 8))); // } // } //RGV灏忚溅2 @@ -547,6 +566,33 @@ } } } + public Integer getRgvPosI(Integer pos) { + if (pos == null) return 0; + + // key: 绔欑偣鍙� value: 鍩哄噯鐗╃悊浣嶇疆 + Map<Integer, Integer> posMap = new HashMap<>(); + posMap.put(1004, 6534); + posMap.put(1007, 33634); + posMap.put(1010, 75174); + posMap.put(1014, 102124); + posMap.put(1018, 138224); + posMap.put(1021, 178034); + posMap.put(1024, 219684); + posMap.put(1028, 246724); + posMap.put(1031, 288194); + posMap.put(1035, 315204); + int tolerance = 50; // 鍏佽璇樊鑼冨洿 + + for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) { + int site = entry.getKey(); + int basePos = entry.getValue(); + if (Math.abs(pos - basePos) <= tolerance) { + return site; + } + } + + return 0; // 娌″尮閰嶅埌绔欑偣 + } /** * 蹇冭烦 diff --git a/src/main/resources/mapper/WrkMastStaMapper.xml b/src/main/resources/mapper/WrkMastStaMapper.xml index 2994c8f..4218dc7 100644 --- a/src/main/resources/mapper/WrkMastStaMapper.xml +++ b/src/main/resources/mapper/WrkMastStaMapper.xml @@ -101,6 +101,13 @@ and rgv_no = #{rgvNo} </select> + <select id="selectByWorkStaList" resultMap="BaseResultMap"> + select * from asr_wrk_mast_sta + where work_sta = #{workSta} + and rgv_no = #{rgvNo} + order by update_time + </select> + <select id="selectAllWrkCount" resultType="java.lang.Integer"> select count(1) from asr_wrk_mast_sta where 1=1 -- Gitblit v1.9.1