From 63f731641998edc06c1e0409ab1901260d36154b Mon Sep 17 00:00:00 2001
From: lsh <1>
Date: 星期四, 11 一月 2024 18:05:20 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/RgvThread.java | 4
src/main/java/com/zy/asrs/entity/WrkMastSta.java | 26 ++
src/main/java/com/zy/core/model/DevpSlave.java | 1
src/main/java/com/zy/asrs/utils/RouteUtils.java | 49 +++++
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 295 +++++++++++++++++++++++++++++---
src/main/java/com/zy/asrs/entity/WrkMast.java | 2
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 3
src/main/resources/mapper/WrkMastMapper.xml | 8
src/main/java/com/zy/core/MainProcess.java | 14 +
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 90 +++++++++
src/main/resources/application.yml | 18 +
11 files changed, 467 insertions(+), 43 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index 69eb8d2..a053554 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -75,7 +75,7 @@
private Integer rgvNo;
/**
- * 寰愬伐姹変簯鎷嗗灈鏍囪 0: 鏈媶 1: 宸叉媶 2:宸插鐞嗗彲涓嬩竴姝ワ紙杞巻鍙叉。锛�
+ * 寰愬伐姹変簯鎷嗗灈鏍囪 0: 鍒濆 1銆佹湭鎷嗗凡涓婃姤 2: 宸叉媶 3:宸插鐞嗗彲涓嬩竴姝ワ紙杞巻鍙叉。锛�
*/
@ApiModelProperty(value= "")
@TableField("sheet_no")
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastSta.java b/src/main/java/com/zy/asrs/entity/WrkMastSta.java
index ee2bcee..930c3ba 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastSta.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastSta.java
@@ -121,6 +121,18 @@
public WrkMastSta() {}
+ public WrkMastSta(Date now, Integer staStart) {
+ this.wrkNo = staStart.longValue()+9999;
+ this.wrkStart = staStart;
+ this.wrkEnd = staStart;
+ this.staStart = staStart;
+ this.staEnd = staStart;
+ this.createTime = now;
+ this.updateTime = now;
+ this.wrkSts = 0;
+ this.bignTime = now;
+ }
+
public WrkMastSta(Long wrkNo, Integer wrkStart, Integer wrkEnd, Integer staStart, Integer staEnd, Date createTime, Date updateTime, Integer type, Integer wrkSts, Integer lineNumber, Integer wrkType, Date bignTime) {
this.wrkNo = wrkNo;
this.wrkStart = wrkStart;
@@ -136,6 +148,20 @@
this.bignTime = bignTime;
}
+ public Integer getStaEnd(Integer souSta) {
+ switch (souSta) {
+ case 100:
+ case 103:
+ case 106:
+ case 109:
+ case 112:
+ case 115:
+ return souSta + 1;
+ default:
+ return souSta;
+ }
+ }
+
// WrkMastSta wrkMastSta = new WrkMastSta(
// null, // 宸ヤ綔鍙穂闈炵┖]
// null, // 宸ヤ綔妗e紑濮嬩綅缃甗闈炵┖]
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index b9b6e3f..8199059 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -42,6 +42,9 @@
// @Select("select top 1 from dbo.asr_wrk_mast where wrk_no=#{workNo}")
WrkMast selectPakInStep3(@Param("workNo")Integer workNo);
+ WrkMast selectPakInStep4(@Param("staNo")Integer staNo,@Param("sheetNo")String sheetNo);
+ WrkMast selectPakInStep5(@Param("staNo")Integer staNo,@Param("sheetNo")String sheetNo);
+
// 鎷f枡鍐嶅叆搴撴椂锛岀珯鐐规湁鐗╀笖闇�姹傛椂鏌ヨ
// @Select("select top 1 * from asr_wrk_mast where wrk_no=#{workNo} and wrk_sts=14 and (io_type=103 or io_type=107 or io_type=104)")
WrkMast selectPickStep(@Param("barcode")String barcode);
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 7c55bb3..93dec60 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -409,6 +409,118 @@
}
/**
+ * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱 鎷嗗灈浣嶇疆
+ */
+ public synchronized void stnToCrnStnPick2() {
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鎷f枡鍏ュ簱鍙�
+ for (DevpSlave.Sta pickSta : devp.getPickSta2()) {
+
+ // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isPakMk() && staProtocol.getWorkNo()==0 && !staProtocol.isOutEnable() && staProtocol.isInEnable()) {
+ WrkMast wrkMast = wrkMastMapper.selectPakInStep4(staProtocol.getSiteId(),"3");
+
+ if (wrkMast == null) {
+ WrkMast wrkMast1 = wrkMastMapper.selectPakInStep5(staProtocol.getSiteId(),"3");
+ if (Cools.isEmpty(wrkMast1) && staProtocol.isEmptyMk()){
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(staProtocol.getSiteId() + 9999L);
+ if (Cools.isEmpty(wrkMastSta)){
+ WrkMastSta wrkMastSta1 = new WrkMastSta(new Date(),staProtocol.getSiteId());
+ wrkMastSta1.setType(2);
+ wrkMastSta1.setWrkType(1);
+ wrkMastStaMapper.insert(wrkMastSta1);
+ }
+ continue;
+ }
+// log.error("绔欑偣鍙�"+staProtocol.getSiteId()+"鏈煡璇㈠埌宸ヤ綔妗f锛�");
+ // 鏃犳嫞鏂欐暟鎹�
+ continue;
+ }
+ if (staProtocol.isEmptyMk()){
+ log.error("绔欑偣鍙�"+staProtocol.getSiteId()+"绌烘澘淇″彿寮傚父锛�");
+ continue;
+ }
+ if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107)
+ || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) {
+ continue;
+ }
+
+ // 鑾峰彇鐩爣绔�
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", wrkMast.getIoType() - 50)
+ .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+ .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ log.error("鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
+ continue;
+ }
+
+ try {
+ // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+ if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
+ }
+ // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+ if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) {
+ throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+ }
+
+ Date now = new Date();
+ // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+ Integer staNo = staDesc.getCrnStn();
+ // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+ wrkMast.setIoTime(now);
+ wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+ wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
+ wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
+ wrkMast.setStaNo(staNo); // 鐩爣绔�
+ wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+ wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.updateById(wrkMast) == 0) {
+ throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+ }
+ // 鏇存柊鏄庣粏妗o_time (鍘嗗彶妗e叧鑱斾娇鐢級
+ wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now);
+ // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+ LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+ locMast.setLocSts("Q");
+ locMast.setModiTime(new Date());
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ continue;
+ }
+
+ // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo(wrkMast.getStaNo());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ if (!result) {
+ log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+ }
+
+ }
+
+ }
+
+ }
+ }
+
+ /**
* 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
*/
public synchronized void crnStnToOutStn() {
@@ -3706,10 +3818,10 @@
*/
public synchronized void stackingCompletionDriveTray2() {
try {
- int[] staNos=new int[]{133,135};//(2涓叆搴撶珯鐐癸紝1妤�2涓嚭搴撶爜鍨涚珯,鏍规嵁鐜板満淇敼)
+ int[] staNos=new int[]{131,135};//(2涓叆搴撶珯鐐癸紝1妤�2涓嚭搴撶爜鍨涚珯,鏍规嵁鐜板満淇敼)
for (int staNo : staNos){
BasDevp basDevp = basDevpService.selectById(staNo);
- if (basDevp.getWrkNo()<9990){
+ if (basDevp.getWrkNo()!=0){
continue;
}
WrkMast wrkMast = wrkMastMapper.selectWrkMastUnstackingOne202(staNo);
@@ -3738,11 +3850,16 @@
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
if (staProtocol.isAutoing()
&& staProtocol.isLoading()
- && staProtocol.getWorkNo() >= 9990
+ && staProtocol.isInEnable()
+ && staProtocol.getWorkNo() == 0
) {//&& staProtocol.isPakMk() && !Cools.isEmpty(barcode)) {
+ //浠诲姟瀹屾垚
+ boolean result1 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(3, staProtocol));
+ Thread.sleep(100);
+
staProtocol.setWorkNo(wrkMast.getWrkNo());
- staProtocol.setStaNo(wrkMast.getStaNo());
+ staProtocol.setStaNo(144);
devpThread.setPakMk(staProtocol.getSiteId(), false);
boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol));
if (!result) {
@@ -3750,6 +3867,10 @@
}
wrkMast.setWrkSts(52L);
wrkMastMapper.updateById(wrkMast);
+ Thread.sleep(100);
+
+ //浠诲姟瀹屾垚
+ boolean result2 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(4, staProtocol));
}
}
@@ -3757,6 +3878,63 @@
// e.printStackTrace();
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
log.error("鍏朵粬 ===>> 鐮佸灈瀹屾垚椹卞姩鎵樼洏杩涘叆涓嬩竴姝�"+e);
+ }
+ }
+
+ /**
+ * 鍏朵粬 ===>> 鐮佸灈瀹屾垚椹卞姩鎵樼洏杩涘叆涓嬩竴姝�
+ */
+ public synchronized void stackingCompletionDriveTrayOk2() {
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鎷f枡鍏ュ簱鍙�
+ for (DevpSlave.Sta pickSta : devp.getPickSta2()) {
+
+ // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isPakMk() && staProtocol.getWorkNo()!=0 && staProtocol.isOutEnable()) {//
+ WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo());
+
+ if (wrkMast == null) {
+ log.error("绔欑偣鍙�"+staProtocol.getSiteId()+"鏈煡璇㈠埌宸ヤ綔妗f锛�");
+ // 鏃犳嫞鏂欐暟鎹�
+ continue;
+ }
+ if (!wrkMast.getSheetNo().equals("2") || wrkMast.getIoType()<100 || wrkMast.getWrkSts()!=14){
+ continue;
+ }
+ if (wrkMast.getIoType()==101){
+ //浠诲姟瀹屾垚
+ boolean result1 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(3, staProtocol));
+ wrkMast.setSheetNo("3");
+ wrkMastMapper.updateById(wrkMast);
+ }else {
+ if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107)
+ || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) {
+ continue;
+ }
+ //浠诲姟瀹屾垚
+ boolean result1 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(3, staProtocol));
+ wrkMast.setSheetNo("3");
+ wrkMastMapper.updateById(wrkMast);
+
+ try{
+ Thread.sleep(100);
+ }catch (Exception e){
+
+ }
+
+ boolean result2 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(4, staProtocol));
+
+ }
+ }
+ }
}
}
/**
@@ -3840,11 +4018,12 @@
// 鍙湁褰揜GV绛夊緟WCS纭銆佽嚜鍔�
if (rgvProtocol.getStatusType() == RgvStatusType.WORKING
&& rgvProtocol.getModeType() == RgvModeType.AUTO
- && (rgvProtocol.getStatusType1()==RgvStatusType.WAITING || rgvProtocol.getStatusType2()==RgvStatusType.WAITING )
+ && ((rgvProtocol.getStatusType1()==RgvStatusType.WAITING || rgvProtocol.getStatusType2()==RgvStatusType.WAITING ) ||
+ (rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING || rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING ))
) {
log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
- if (rgvProtocol.getTaskNo1()!=0&&rgvProtocol.getStatusType1()==RgvStatusType.WAITING){
- if (rgvProtocol.getTaskNo1()==9999){
+ if (rgvProtocol.getTaskNo1()!=0 && (rgvProtocol.getStatusType1()==RgvStatusType.WAITING || rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING)){
+ if (rgvProtocol.getTaskNo1()==29999){
boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
if (!rgvComplete){
log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
@@ -3864,13 +4043,25 @@
log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
break;
}
+
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
+ WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
+ if (!Cools.isEmpty(wrkMast)){
+ // 涓嬪彂绔欑偣淇℃伅
+ staProtocol.setWorkNo(wrkMastSta.getWrkNo().intValue());
+ staProtocol.setStaNo(wrkMast.getStaNo());
+ if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) {
+ continue;
+ }
+ }
wrkMastSta.setWrkSts(3);
wrkMastStaMapper.updateById(wrkMastSta);
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
- }else if (rgvProtocol.getTaskNo2()!=0 && rgvProtocol.getStatusType2()==RgvStatusType.WAITING){
- if (rgvProtocol.getTaskNo2()==9999){
+ }else if (rgvProtocol.getTaskNo2()!=0 && (rgvProtocol.getStatusType2()==RgvStatusType.WAITING || rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING)){
+ if (rgvProtocol.getTaskNo2()==29999){
boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
if (!rgvComplete){
log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
@@ -3889,6 +4080,17 @@
if (!rgvComplete){
log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
break;
+ }
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
+ WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
+ if (!Cools.isEmpty(wrkMast)){
+ // 涓嬪彂绔欑偣淇℃伅
+ staProtocol.setWorkNo(wrkMastSta.getWrkNo().intValue());
+ staProtocol.setStaNo(wrkMast.getStaNo());
+ if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) {
+ continue;
+ }
}
wrkMastSta.setWrkSts(3);
wrkMastStaMapper.updateById(wrkMastSta);
@@ -3925,6 +4127,7 @@
if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
&& rgvProtocol.getModeType() == RgvModeType.AUTO
&& rgvProtocol.getLoaded1()==0
+ && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
) {
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
if (basRgvMap == null) {
@@ -3984,6 +4187,7 @@
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤
if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
&& rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
&& (rgvProtocol.getLoaded2()==3 || rgvProtocol.getLoaded2()==1 )////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗� 锛堝彧鑳芥媶鍙狅級 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛�3 1銆�2灞傞兘鏈夌墿
) {
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
@@ -3999,7 +4203,7 @@
continue;
}
boolean sign = false;
- if (wrkMastSta.getStaStart()==0 && wrkMastSta.getStaEnd()!=0){//鏀�
+ if ( wrkMastSta.getStaEnd()!=0){//鏀�
sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//鎷嗙洏
}else {
continue;
@@ -4113,6 +4317,7 @@
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤
if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
&& rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
&& (rgvProtocol.getLoaded2()==0 || rgvProtocol.getLoaded2()==1 ) //鐜板満淇敼锛氬彔鐩樻満锛�////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗╋紙鍙兘鎷嗗彔锛� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿
) {
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
@@ -4128,7 +4333,7 @@
continue;
}
boolean sign = false;
- if (wrkMastSta.getStaEnd()==0 && wrkMastSta.getStaStart()!=0){//鍙�
+ if ( wrkMastSta.getStaStart()!=0){//鍙�
sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//鍙犵洏
}else {
continue;
@@ -4254,6 +4459,11 @@
if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
continue;
}
+ if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){
+ continue;
+ } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){
+ continue;
+ }
rgvAvoidanceXY(rgvProtocol.getRgvNo());
rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
}
@@ -4303,26 +4513,51 @@
* 灏忚溅XY绉诲姩 閬胯
* */
public synchronized boolean rgvAvoidanceXY(Integer rgvId){
- try{
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
- rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo1((short)9999); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐�
- rgvCommand.setDestinationStaNo1(basRgvMap.getLockStartRoute().shortValue());
- rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
- if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(9, rgvCommand))) {
- //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+ if (rgvId==1){
+ try{
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
+ rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1((short)29999); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐�
+ //basRgvMap.getLockStartRoute().shortValue()
+ rgvCommand.setSourceStaNo1( (short)101);
+ rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+ return false;
+ } else {
+ return true;
+ }
+ }catch (Exception e){
return false;
- } else {
- return true;
- }
- }catch (Exception e){
- return false;
+ }
+ }else {
+ try{
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
+ rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo2((short)29999); // 宸ヤ綅2宸ヤ綔鍙�
+ rgvCommand.setTaskMode2(RgvTaskModeType.X_MOVE); // 宸ヤ綅2浠诲姟妯″紡: 鍥炲師鐐�
+ rgvCommand.setSourceStaNo2((short)117);
+ rgvCommand.setCommand((short) 2); //宸ヤ綅2浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+ return false;
+ } else {
+ return true;
+ }
+ }catch (Exception e){
+ return false;
+
+ }
}
}
@@ -4509,7 +4744,7 @@
public synchronized boolean rgvComplete(Integer rgvId){
try{
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(3, new RgvCommand()))) {
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(3, new RgvCommand()))) {
//step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}",rgvId);
return false;
diff --git a/src/main/java/com/zy/asrs/utils/RouteUtils.java b/src/main/java/com/zy/asrs/utils/RouteUtils.java
index c8cbe52..636cb9d 100644
--- a/src/main/java/com/zy/asrs/utils/RouteUtils.java
+++ b/src/main/java/com/zy/asrs/utils/RouteUtils.java
@@ -280,7 +280,51 @@
}
public static short RgvPosStaOne(Short posId){
- return 1;
+ switch (posId.intValue()){
+ case 1:
+ case 2:
+ return 102;
+ case 3:
+ case 4:
+ return 122;
+ case 5:
+ case 6:
+ return 105;
+ case 7:
+ case 8:
+ return 118;
+ case 9:
+ case 10:
+ case 11:
+ return 119;
+ case 12:
+ case 13:
+ case 14:
+ return 110;
+ case 15:
+ return 120;
+ case 16:
+ case 17:
+ case 18:
+ return 111;
+ case 19:
+ return 121;
+ case 20:
+ case 21:
+ case 22:
+ return 113;
+ case 23:
+ case 24:
+ return 123;
+ case 25:
+ return 114;
+ case 26:
+ case 27:
+ case 28:
+ return 116;
+ default:
+ return 0;
+ }
}
public static short RgvPosStaTwo(Short posId){
@@ -321,6 +365,9 @@
case 24:
return 105;
case 25:
+ case 26:
+ case 27:
+ case 28:
return 104;
default:
return 0;
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 454769e..4903b11 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -56,6 +56,8 @@
// mainService.generateStoreWrkFile0(); // WMS鍏ュ簱
// 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
mainService.stnToCrnStnPick();
+ // 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱鎷嗙洏鍖�
+ mainService.stnToCrnStnPick2();
// 鍑哄簱 ===>> 鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
mainService.crnStnToOutStn();
// 鍏ュ嚭搴� ===>> 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
@@ -86,9 +88,11 @@
//鎵ц灏忚溅绌烘澘鎼繍浠诲姟
mainService.rgvRunWrkMastEmptyStaPut();//鏀�
mainService.rgvRunWrkMastEmptyStaTake();//鍙�
- mainService.rgvRunWrkMastEmptyStaAvoidance();//閬胯
-
-
+ i++;
+ if (i > 3) {
+ mainService.rgvRunWrkMastEmptyStaAvoidance();//閬胯
+ i = 0;
+ }
/////////////////////////////////////RGV璋冨害/////////////////////////////////////
// 寮傚父淇℃伅璁板綍
@@ -124,8 +128,10 @@
mainService.stackingCompletionDriveTray();
//鎷嗗灈瀹屾垚缁х画涓嬩竴姝�
mainService.stackingCompletionDriveTray2();
+ //鎷嗗灈瀹屾垚鎵樼洏缁х画涓嬩竴姝�
+ mainService.stackingCompletionDriveTrayOk2();
//璐存爣瀹屾垚缁х画涓嬩竴姝�
- mainService.stackingCompletionDriveTray3();
+// mainService.stackingCompletionDriveTray3();
} catch (Exception e) {
diff --git a/src/main/java/com/zy/core/model/DevpSlave.java b/src/main/java/com/zy/core/model/DevpSlave.java
index 9cd578c..217dfa9 100644
--- a/src/main/java/com/zy/core/model/DevpSlave.java
+++ b/src/main/java/com/zy/core/model/DevpSlave.java
@@ -26,6 +26,7 @@
private List<Sta> outSta = new ArrayList<>();
private List<Sta> pickSta = new ArrayList<>();
+ private List<Sta> pickSta2 = new ArrayList<>();
private List<Sta> outRgvSta = new ArrayList<>();
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 7f04510..ff27b04 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -111,7 +111,7 @@
commandAvoidanceXY.setAckFinish1((short) 1); // 浠诲姟瀹屾垚纭浣�
commandAvoidanceXY.setTaskMode1(RgvTaskModeType.X_MOVE); // 浠诲姟妯″紡
commandAvoidanceXY.setSourceStaNo1((short)0); // 婧愮珯
- commandAvoidanceXY.setDestinationStaNo1(slave.getId()==1? (short) 101:(short)117); // 鐩爣绔�
+ commandAvoidanceXY.setDestinationStaNo1(slave.getId()==1? (short) 101:(short)116); // 鐩爣绔�
commandAvoidanceXY.setTaskNo2((short) 0); // 宸ヤ綔鍙�
commandAvoidanceXY.setAckFinish2((short) 1); // 浠诲姟瀹屾垚纭浣�
commandAvoidanceXY.setTaskMode2(RgvTaskModeType.X_MOVE); // 浠诲姟妯″紡
@@ -328,7 +328,7 @@
return false;
}
- siemensNet.Write("DB100.20", command.getCommand());
+// siemensNet.Write("DB100.20", command.getCommand());
command.setRgvNo(slave.getId());
short[] array = new short[5];
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index f446c91..92778f0 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -20,6 +20,7 @@
import com.zy.core.model.DevpSlave;
import com.zy.core.model.Task;
import com.zy.core.model.protocol.StaProtocol;
+import io.swagger.models.auth.In;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@@ -124,6 +125,10 @@
// 鍐欐暟鎹� ID+鐩爣绔� 鐮佸灈瀹屾垚 缁欒緭閫佺嚎鍐欎换鍔″畬鎴�
case 3:
write3((StaProtocol)task.getData());
+ break;
+ // 鍐欐暟鎹� ID+鐩爣绔� 鐮佸灈瀹屾垚 缁欒緭閫佺嚎鍐欎换鍔″畬鎴愬浣�
+ case 4:
+ write4((StaProtocol)task.getData());
break;
default:
break;
@@ -338,14 +343,36 @@
if (null == staProtocol) {
return;
}
- ArrayList<Integer> staNos = getStaNo();
- int index = staNos.indexOf(staProtocol.getSiteId());
+ Integer siteId = staProtocol.getSiteId();
+ Integer index =0;
+ switch (siteId){
+ case 118:
+ index=0;
+ break;
+ case 119:
+ index=1;
+ break;
+ case 120:
+ index=2;
+ break;
+ case 121:
+ index=3;
+ break;
+ case 131:
+ index=4;
+ break;
+ case 135:
+ index=5;
+ break;
+ default:
+ return;
+ }
OperateResult write = null;
//浠诲姟涓嬪彂娆℃暟
int writeCount = 0;
do {
- write = siemensS7Net.Write("DB100." + index*6, (short)1); // 宸ヤ綔鍙�
+ write = siemensS7Net.Write("DB100.600." + index, true); // 浠诲姟瀹屾垚
if(write.IsSuccess){
writeCount=6;
}else {
@@ -363,7 +390,62 @@
log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
} else {
OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
- log.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol));
+ log.info("杈撻�佺嚎鍛戒护涓嬪彂鐮佸灈瀹屾垚 缁欒緭閫佺嚎鍐欎换鍔″畬鎴� [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol));
+ }
+ }
+
+ private void write4(StaProtocol staProtocol) throws InterruptedException {
+ if (null == staProtocol) {
+ return;
+ }
+ Integer siteId = staProtocol.getSiteId();
+ Integer index =0;
+ switch (siteId){
+ case 118:
+ index=0;
+ break;
+ case 119:
+ index=1;
+ break;
+ case 120:
+ index=2;
+ break;
+ case 121:
+ index=3;
+ break;
+ case 131:
+ index=4;
+ break;
+ case 135:
+ index=5;
+ break;
+ default:
+ return;
+ }
+
+ OperateResult write = null;
+ //浠诲姟涓嬪彂娆℃暟
+ int writeCount = 0;
+ do {
+ write = siemensS7Net.Write("DB100.600." + index, false); // 浠诲姟瀹屾垚澶嶄綅
+ if(write.IsSuccess){
+ writeCount=6;
+ }else {
+ writeCount++;
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ }
+ }while (writeCount<5);
+
+ if (!write.IsSuccess) {
+ staProtocol = station.get(staProtocol.getSiteId());
+ if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
+ staProtocol.setPakMk(true);
+ }
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
+ log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+ } else {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
+ log.info("杈撻�佺嚎鍛戒护涓嬪彂鐮佸灈瀹屾垚 缁欒緭閫佸浣� [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol));
}
}
// 鏇存柊鍏ュ嚭搴撴ā寮�
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 477b377..0ba0842 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -350,8 +350,24 @@
outSta[0]:
staNo: 11
# 鎷f枡鍏ュ簱鍙�1
+ pickSta2[0]:
+ staNo: 118
+ barcode: ${wcs-slave.barcode[0].id}
+ # 鎷f枡鍏ュ簱鍙�1
+ pickSta2[1]:
+ staNo: 119
+ barcode: ${wcs-slave.barcode[0].id}
+ # 鎷f枡鍏ュ簱鍙�1
+ pickSta2[2]:
+ staNo: 120
+ barcode: ${wcs-slave.barcode[0].id}
+ # 鎷f枡鍏ュ簱鍙�1
+ pickSta2[3]:
+ staNo: 121
+ barcode: ${wcs-slave.barcode[0].id}
+ # 鎷f枡鍏ュ簱鍙�1
pickSta[0]:
- staNo: 11
+ staNo: 122
barcode: ${wcs-slave.barcode[0].id}
# Rgv鍑哄簱鍙�1
outRgvSta[0]:
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index b0937e5..21db737 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -106,6 +106,14 @@
select top 1 * from dbo.asr_wrk_mast where wrk_no=#{workNo}
</select>
+ <select id="selectPakInStep4" resultMap="BaseResultMap">
+ select top 1 * from dbo.asr_wrk_mast where sta_no=#{staNo} and wrk_sts = 14 and io_type>100 and sheet_no=#{sheetNo}
+ </select>
+
+ <select id="selectPakInStep5" resultMap="BaseResultMap">
+ select top 1 * from dbo.asr_wrk_mast where sta_no=#{staNo} and wrk_sts = 14 and io_type>100 and sheet_no!=#{sheetNo}
+ </select>
+
<select id="selectPickStep" resultMap="BaseResultMap">
select top 1 * from asr_wrk_mast where barcode=#{barcode} and wrk_sts=14 and (io_type=103 or io_type=107 or io_type=104)
</select>
--
Gitblit v1.9.1