From 3cf23392ce90c0a99835afe2db3a81206e093819 Mon Sep 17 00:00:00 2001
From: L <L@132>
Date: 星期四, 25 九月 2025 10:02:20 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jshdwcs' into jshdwcs
---
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 77a2b0e..4655ba9 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