From 1af93b3d4833dfead180264f41cfaa896ac7d24b Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期六, 22 十一月 2025 08:21:58 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/BasDevpOptServiceImpl.java | 5 +
src/main/java/com/zy/core/model/protocol/StaProtocol.java | 18 ++++++
src/main/java/com/zy/asrs/service/BasDevpOptService.java | 1
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 69 +++++++++++++++++++++-
src/main/java/com/zy/asrs/mapper/BasDevpOptMapper.java | 2
src/main/java/com/zy/asrs/entity/param/AgvTaskAssignmentParam.java | 8 ++
src/main/java/com/zy/core/MainProcess.java | 19 +++---
src/main/java/com/zy/asrs/entity/BasDevpOpt.java | 3
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 47 +++++++++++++--
src/main/resources/mapper/BasDevpOptMapper.xml | 7 ++
10 files changed, 157 insertions(+), 22 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/BasDevpOpt.java b/src/main/java/com/zy/asrs/entity/BasDevpOpt.java
index 55d286f..b1409f6 100644
--- a/src/main/java/com/zy/asrs/entity/BasDevpOpt.java
+++ b/src/main/java/com/zy/asrs/entity/BasDevpOpt.java
@@ -110,7 +110,7 @@
public BasDevpOpt() {}
- public BasDevpOpt(Integer wrkNo,Date sendTime,Integer sourceSta,Integer posSta,Date updateTime,String sourceLoading,String barcode,Long frontErr,Long backErr,Long highErr,Long leftErr,Long rightErr,Long barcodeErr) {
+ public BasDevpOpt(Integer wrkNo,Date sendTime,Integer sourceSta,Integer posSta,Date updateTime,String sourceLoading,String barcode,Long frontErr,Long backErr,Long highErr,Long leftErr,Long rightErr,Long barcodeErr,String posLoading) {
this.wrkNo = wrkNo;
this.sendTime = sendTime;
this.sourceSta = sourceSta;
@@ -124,6 +124,7 @@
this.leftErr = leftErr;
this.rightErr = rightErr;
this.barcodeErr = barcodeErr;
+ this.posLoading =posLoading;
}
// BasDevpOpt basDevpOpt = new BasDevpOpt(
diff --git a/src/main/java/com/zy/asrs/entity/param/AgvTaskAssignmentParam.java b/src/main/java/com/zy/asrs/entity/param/AgvTaskAssignmentParam.java
index 1ce2289..221871e 100644
--- a/src/main/java/com/zy/asrs/entity/param/AgvTaskAssignmentParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/AgvTaskAssignmentParam.java
@@ -35,15 +35,23 @@
switch (basAgvMast.getIoType()){
case 0:
getAgvTaskAssignmentParam0(basAgvMast);
+ taskTyp = "1FQ3";
+ ctnrTyp = "1";
return;
case 1:
getAgvTaskAssignmentParam1(basAgvMast);
+// taskTyp = "1FQ2";
+ ctnrTyp = "1";
return;
case 2:
getAgvTaskAssignmentParam2(basAgvMast);
+ taskTyp = "1FQ1";
+ ctnrTyp = "1";
return;
case 3:
getAgvTaskAssignmentParam3(basAgvMast);
+// taskTyp = "1FQ4";
+ ctnrTyp = "1";
return;
default:
return;
diff --git a/src/main/java/com/zy/asrs/mapper/BasDevpOptMapper.java b/src/main/java/com/zy/asrs/mapper/BasDevpOptMapper.java
index 9d835ab..bd5ed5b 100644
--- a/src/main/java/com/zy/asrs/mapper/BasDevpOptMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/BasDevpOptMapper.java
@@ -8,5 +8,5 @@
@Mapper
@Repository
public interface BasDevpOptMapper extends BaseMapper<BasDevpOpt> {
-
+ String getErr(Integer wrkNo);
}
diff --git a/src/main/java/com/zy/asrs/service/BasDevpOptService.java b/src/main/java/com/zy/asrs/service/BasDevpOptService.java
index 13d23b7..34ad01a 100644
--- a/src/main/java/com/zy/asrs/service/BasDevpOptService.java
+++ b/src/main/java/com/zy/asrs/service/BasDevpOptService.java
@@ -4,5 +4,6 @@
import com.baomidou.mybatisplus.service.IService;
public interface BasDevpOptService extends IService<BasDevpOpt> {
+ String getErr(Integer wrkNo);
}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasDevpOptServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasDevpOptServiceImpl.java
index 9f7d39c..570aa8a 100644
--- a/src/main/java/com/zy/asrs/service/impl/BasDevpOptServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/BasDevpOptServiceImpl.java
@@ -8,5 +8,8 @@
@Service("basDevpOptService")
public class BasDevpOptServiceImpl extends ServiceImpl<BasDevpOptMapper, BasDevpOpt> implements BasDevpOptService {
-
+ @Override
+ public String getErr(Integer wrkNo){
+ return baseMapper.getErr(wrkNo);
+ }
}
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 69c5cfe..afd9cbf 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -111,6 +111,8 @@
private BasArmMastService basArmMastService;
@Autowired
private ApiLogService apiLogService;
+ @Autowired
+ private BasDevpOptService basDevpOptService;
@Value("${wms.url}")
private String wmsUrl;
@@ -201,6 +203,7 @@
MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
}
staProtocol.setWorkNo(wrkNo);
+ staProtocol.setErrCode(errMsg);
News.info("寮傚父鍒ゆ柇{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
wrkNo++;
staProtocol.setStaNo(inSta.getBackSta().shortValue());
@@ -229,6 +232,7 @@
MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
}
staProtocol.setWorkNo(wrkNo);
+ staProtocol.setErrCode(errMsg);
News.info("鏉$爜鍒ゆ柇{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
wrkNo++;
staProtocol.setStaNo(inSta.getBackSta().shortValue());
@@ -299,7 +303,6 @@
}
try {
LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-
SearchLocParam param = new SearchLocParam();
param.setBarcode(barcode);
param.setIoType(1);
@@ -334,6 +337,10 @@
staProtocol.setWorkNo(wrkNo);
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
+ switch (jsonObject.getInteger("code")){
+ case 700: staProtocol.setErrCode("鏈粍鎵�");break;
+ case 500: staProtocol.setErrCode("宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�");break;
+ }
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
News.info("浠诲姟涓嬪彂鍒ゆ柇{}鍏ュ簱鍥為��锛歿}锛岄敊璇紪鍙穥},浠诲姟鍙凤細{}", inSta.getStaNo(), errMsg,jsonObject.getInteger("code"),wrkNo);
wrkNo++;
@@ -2259,7 +2266,8 @@
WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
if (null == wrkMast) {
if(staProtocol.getWorkNo() > 9999){ //寮傚父閫�鍑�
- MessageQueue.offer(SlaveType.Led, 2, new Task(3, "寮傚父閫�鍑�"));
+ String err = basDevpOptService.getErr(staProtocol.getWorkNo());
+ MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, err));
}
continue;
}
@@ -2390,6 +2398,8 @@
// 鍛戒护闆嗗悎
boolean reset = true;
for (Integer staNo : led.getStaArr()) {
+// System.out.println("staArr = " + staNo);
+
// 鑾峰彇鍙夎溅绔欑偣
StaProtocol staProtocol = devpThread.getStation().get(staNo);
if (staProtocol == null) { continue; }
@@ -3553,7 +3563,8 @@
}
if(rgvProtocol.getStatusType1() == RgvStatusType.WORKING){
rgvThread.setPaking(true);
- }else if(rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0 && rgvProtocol.getStatusType1() == RgvStatusType.IDLE){
+ }
+ if(rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0 && rgvProtocol.getStatusType1() == RgvStatusType.IDLE){
rgvThread.setPaking(true);
}
if(rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing()){
@@ -4767,7 +4778,9 @@
// News.info("{}鍙风珯鐐瑰瓨鍦ㄤ换鍔℃墽琛屼腑锛岃绛夊緟浠诲姟鎵ц瀹屾瘯锛歿}", outStaAgv.getStaNo(), barcode);
continue;
}
-
+ if(barcode.equals("0")){
+ continue;
+ }
List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>().eq("barcode", barcode));
if (!locMastList.isEmpty()) {
News.info("{}鍙风珯鐐规潯鐮佷俊鎭噸澶嶏細{}", outStaAgv.getStaNo(), barcode);
@@ -4873,6 +4886,52 @@
}
}
+ /*
+ * agv浠诲姟鐢熸垚 寮傚父閫佸埌鍏ュ簱鍙�
+ * */
+ public synchronized void agvTaskCreateException() {
+ // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ Integer outStaAgv = 1041;
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(outStaAgv);
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (!staProtocol.isLoading()){
+ continue;
+ }
+
+ if (staProtocol.isAutoing() && staProtocol.getWorkNo() > 10000) {
+
+ // 鍒ゆ柇閲嶅宸ヤ綔妗�
+ List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("sta_no", 1037));
+ if (!basAgvMastList.isEmpty()) {
+ News.info("{}鍙风珯鐐瑰瓨鍦ㄤ换鍔℃墽琛屼腑锛岀瓑寰呬换鍔℃墽琛屽畬姣�!!!", outStaAgv);
+ continue;
+ }
+ // 浠诲姟鐢熸垚鍖� --------------------------------------------------------------------------
+
+ BasAgvMast basAgvMast = new BasAgvMast();
+ try {
+ basAgvMast.setTaskNo(staProtocol.getWorkNo());
+ basAgvMast.setSourceStaNo(1041);
+ basAgvMast.setStaNo(1037);
+ basAgvMast.setDevpId(devp.getId());
+ basAgvMast.setIoType(3);//杈撻��==銆嬭緭閫佺嚎绔欑偣 3
+ basAgvMastService.insert(basAgvMast);
+ break;
+ } catch (Exception e) {
+ News.error(JSON.toJSONString(e.getMessage()));
+ }
+ }
+ }
+ }
+
/*
* agv浠诲姟涓嬪彂:AGV搴撲綅==銆嬭緭閫佺嚎绔欑偣
@@ -4916,6 +4975,8 @@
}
}
+
+
/*
* agv浠诲姟涓嬪彂:AGV搴撲綅==銆婣GV搴撲綅
* */
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index fbb579c..534f44b 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -165,15 +165,16 @@
continue;
}
//agv浠诲姟涓嬪彂
-// mainService.agvTaskAssignment0();//0===銆�1 AGV搴撲綅==銆嬭緭閫佺嚎绔欑偣 0
-// mainService.agvTaskAssignment1();//0===銆�1 AGV搴撲綅==銆婣GV搴撲綅 1
-// mainService.agvTaskAssignment2();//0===銆�1 杈撻�佺嚎绔欑偣==銆婣GV搴撲綅 2
-// mainService.agvTaskAssignment3();//0===銆�1 杈撻�佺嚎绔欑偣==銆嬭緭閫佺嚎绔欑偣 3
-//
-//
-// mainService.agvTaskCreateFull();//浠诲姟鐢熸垚 鍑哄簱鍙�==銆婣GV搴撲綅
-// mainService.agvTaskCreateEmpty();//浠诲姟鐢熸垚 鍑哄簱鍙�==銆婣GV搴撲綅
-// mainService.agvTaskCreateR();//浠诲姟鐢熸垚 AGV搴撲綅==銆嬪叆搴撳彛
+ mainService.agvTaskAssignment0();//0===銆�1 AGV搴撲綅==銆嬭緭閫佺嚎绔欑偣 0
+ mainService.agvTaskAssignment1();//0===銆�1 AGV搴撲綅==銆婣GV搴撲綅 1
+ mainService.agvTaskAssignment2();//0===銆�1 杈撻�佺嚎绔欑偣==銆婣GV搴撲綅 2
+ mainService.agvTaskAssignment3();//0===銆�1 杈撻�佺嚎绔欑偣==銆嬭緭閫佺嚎绔欑偣 3
+
+
+ mainService.agvTaskCreateFull();//浠诲姟鐢熸垚 鍑哄簱鍙�==銆婣GV搴撲綅
+ mainService.agvTaskCreateEmpty();//浠诲姟鐢熸垚 鍑哄簱鍙�==銆婣GV搴撲綅
+ mainService.agvTaskCreateR();//浠诲姟鐢熸垚 AGV搴撲綅==銆嬪叆搴撳彛
+ mainService.agvTaskCreateException();//浠诲姟鐢熸垚 鍑哄簱鍙�==銆嬪叆搴撳彛
} catch (Exception e) {
e.printStackTrace();
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 8bcba40..3114eae 100644
--- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -14,6 +14,9 @@
// 绔欑偣缂栧彿
private Integer siteId;
+ //閿欒缂栧彿
+ private String errCode = null;
+
// ----------------------------------------------------------------
// 宸ヤ綔鍙�
private Integer workNo = 0;
@@ -156,6 +159,21 @@
private Boolean sensorDecL = false; //宸︾Щ鏂瑰悜鍑忛��
private Boolean sensorArriveR = false; //鍙崇Щ鏂瑰悜鍒颁綅
private Boolean sensorDecR = false; //鍙崇Щ鏂瑰悜鍑忛��
+
+ //agv----------------------------------------------------------
+ private Boolean heartbeatDevp = false; //蹇冭烦
+ private Boolean conveyorAllowPick = false;//杈撻�佺嚎鍏佽鍙栬揣
+ private Boolean conveyorAllowPlace = false;//杈撻�佺嚎鍏佽鏀捐揣
+ private Boolean conveyorPickDone = false;//杈撻�佺嚎鍙栬揣瀹屾垚纭
+ private Boolean conveyorPlaceDone = false;//杈撻�佺嚎鏀捐揣瀹屾垚纭
+ private Boolean safetyDoorOpen = false;//瀹夊叏闂ㄦ墦寮�
+ private Boolean externalEmergencyStop = false;//澶栭儴鎬ュ仠
+ private Boolean heartbeatAgv = false;
+ private Boolean agvRequestPlace = false;//AGV 鐢宠鏀捐揣
+ private Boolean agvRequestPick = false;//AGV 鐢宠鍙栬揣
+ private Boolean agvPickDone = false;//AGV 鍙栬揣瀹屾垚
+ private Boolean agvPlaceDone = false;//AGV 鏀捐揣瀹屾垚
+ private Boolean agvForbidden = false;//AGV 绂佹杩愯
public BasDevpErrorLog toSqlModelError(){
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index b24cb6d..25712d2 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -167,6 +167,10 @@
put(1036, 512);put(1103, 476);put(1047, 452);put(2037, 270);put(4001,294);
}};
+ public static final Map<Integer, Integer> siteAgvOffsetMap = new HashMap<Integer, Integer>() {{
+ put(1037, 0);put(1039, 2);put(1041, 4);put(2033, 0);put(2034,2);put(4003,4);put(4006,6);
+
+ }};
// 鐗规畩绔欑偣闆嗗悎
private static final Set<Integer> specialSites = new HashSet<>(
@@ -179,6 +183,8 @@
private static final Set<Integer> specialSites3 = new HashSet<>(//鏈烘鑷傜珯鐐�
Arrays.asList(1098,1093,1087,1082,1074,1071,1061,1058));
+ private static final Set<Integer> specialAgvSites = new HashSet<>(//agv鍙栨斁璐х珯鐐�
+ Arrays.asList(1037,1039,1041,2033,2034,4003,4006));
public static final ArrayList<Integer> BarcodeList = new ArrayList<Integer>() {{
add(0); add(1); add(2);
@@ -329,6 +335,9 @@
write((StaProtocol)task.getData());
log.error("杈撻�佺嚎涓嬪彂鍛戒护锛�"+((StaProtocol) task.getData()).getWorkNo()+","+((StaProtocol) task.getData()).getStaNo());
break;
+// case 3:
+// writeAgv((StaProtocol)task.getData());
+// break;
default:
break;
}
@@ -449,7 +458,8 @@
OperateResultExOne<byte[]> result4 = null;//1054-1079
OperateResultExOne<byte[]> result5 = null;//1080-1110
OperateResultExOne<byte[]> resultErr = null;
- OperateResultExOne<byte[]> resultAlarm = null;
+ OperateResultExOne<byte[]> resultPlc = null;
+ OperateResultExOne<byte[]> resultAgv = null;
if(staNoSize == 102){
result1 = siemensS7Net.Read("DB100.0", (short) (2768));//1001-1028
@@ -458,14 +468,15 @@
result4 = siemensS7Net.Read("DB103.0", (short) (2824));//1054-1079
result5 = siemensS7Net.Read("DB102.0", (short) (3428));//1080-1110
resultErr = siemensS7Net.Read("DB3.0", (short) (536));
-// resultAlarm = siemensS7Net.Read("DB800.0", (short) (220));
+// resultAgv = siemensS7Net.Read("DB901.0", (short) (5)); //agv鍙栨斁璐ц姹�
+// resultPlc = siemensS7Net.Read("DB902.0", (short) (5)); //杈撻�佺嚎纭
}else{
result1 = siemensS7Net.Read("DB200.0", (short) (3000));//2001-2030
result2 = siemensS7Net.Read("DB201.0", (short) (720));//2031-2037
result3 = siemensS7Net.Read("DB400.0", (short) (600));//4001-4006
resultErr = siemensS7Net.Read("DB3.0", (short) (354));
-// resultAlarm = siemensS7Net.Read("DB800.0", (short) (126));
-
+// resultAgv = siemensS7Net.Read("DB901.0", (short) (7)); //agv鍙栨斁璐ц姹�
+// resultPlc = siemensS7Net.Read("DB902.0", (short) (7)); //杈撻�佺嚎纭
}
@@ -631,6 +642,30 @@
staProtocol.setSensorDecL(statusSign[19]);
staProtocol.setSensorArriveR(statusSign[20]);
staProtocol.setSensorDecR(statusSign[21]);
+
+// Integer offsetAgv = siteAgvOffsetMap.get(siteId);
+//
+// boolean[] statusPlc = siemensS7Net.getByteTransform().TransBool(resultPlc.Content, offsetAgv, 1);
+// boolean[] statusAgv = siemensS7Net.getByteTransform().TransBool(resultAgv.Content, offsetAgv, 1);
+//
+// if(specialAgvSites.contains(siteId)){
+// // 蹇冭烦
+// staProtocol.setHeartbeatDevp(statusPlc[0]);
+// staProtocol.setHeartbeatAgv(statusAgv[0]);
+// // 杈撻�佺嚎锛圥LC锛�
+// staProtocol.setConveyorAllowPick(statusPlc[1]);
+// staProtocol.setConveyorAllowPlace(statusPlc[2]);
+// staProtocol.setConveyorPickDone(statusPlc[3]);
+// staProtocol.setConveyorPlaceDone(statusPlc[4]);
+// staProtocol.setSafetyDoorOpen(statusPlc[5]);
+// staProtocol.setExternalEmergencyStop(statusPlc[6]);
+// // AGV
+// staProtocol.setAgvRequestPlace(statusAgv[1]);
+// staProtocol.setAgvRequestPick(statusAgv[2]);
+// staProtocol.setAgvPickDone(statusAgv[3]);
+// staProtocol.setAgvPlaceDone(statusAgv[4]);
+// staProtocol.setAgvForbidden(statusAgv[5]);
+// }
if( (staProtocol.getPassTimeOut() ||
@@ -899,8 +934,8 @@
staProtocol.isHighErr()? 1L:0L,
staProtocol.isLeftErr()? 1L:0L,
staProtocol.isRightErr()? 1L:0L,
- staProtocol.isBarcodeErr()? 1L:0L
-
+ staProtocol.isBarcodeErr()? 1L:0L,
+ staProtocol.getErrCode()
);
bean.insert(basDevpOpt);
} catch (Exception ignore) {
diff --git a/src/main/resources/mapper/BasDevpOptMapper.xml b/src/main/resources/mapper/BasDevpOptMapper.xml
index 26f9d6f..54e0b35 100644
--- a/src/main/resources/mapper/BasDevpOptMapper.xml
+++ b/src/main/resources/mapper/BasDevpOptMapper.xml
@@ -23,4 +23,11 @@
</resultMap>
+ <select id="getErr" resultType="String">
+ SELECT TOP 1 pos_loading
+ FROM asr_bas_devp_opt
+ WHERE wrk_no = #{wrkNo}
+ ORDER BY send_time DESC
+ </select>
+
</mapper>
--
Gitblit v1.9.1