From f287ab5ee6b9938e0d48cdb62c05078bdec463d8 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期二, 22 四月 2025 20:06:22 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/core/enums/RgvStatusType.java | 10
src/main/java/com/zy/core/thread/RgvThread.java | 271 ++++++--
src/main/java/com/zy/core/cache/TaskProtocolCache.java | 120 ++++
src/main/java/com/zy/core/enums/RgvModeType.java | 10
src/main/java/com/zy/core/model/RgvSlave.java | 14
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 1106 --------------------------------------
src/main/resources/application-prod.yml | 38 -
src/main/java/com/zy/core/MainProcess.java | 29 -
src/main/java/com/zy/core/cache/RgvStatusCache.java | 44 +
src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 33
src/main/java/com/zy/core/model/protocol/TaskProtocol.java | 33 +
11 files changed, 433 insertions(+), 1,275 deletions(-)
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 c0c2334..dffdfc5 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -13,7 +13,6 @@
import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.CommandUtils;
-import com.zy.asrs.utils.RouteUtils;
import com.zy.asrs.utils.Utils;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
@@ -24,16 +23,12 @@
import com.zy.core.enums.*;
import com.zy.core.model.CrnSlave;
import com.zy.core.model.DevpSlave;
-import com.zy.core.model.RgvSlave;
import com.zy.core.model.Task;
import com.zy.core.model.command.CrnCommand;
-import com.zy.core.model.command.RgvCommand;
import com.zy.core.model.protocol.CrnProtocol;
-import com.zy.core.model.protocol.RgvProtocol;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.BarcodeThread;
-import com.zy.core.thread.RgvThread;
import com.zy.core.thread.SiemensDevpThread;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -74,31 +69,21 @@
private TaskWrkService taskWrkService;
@Autowired
private StaDescMapper staDescMapper;
-
@Autowired
private StaDescService staDescService;
-
@Autowired
private ApiLogService apiLogService;
@Autowired
private CommonService commonService;
@Autowired
- private BasRgvService basRgvService;
- @Autowired
- private WrkMastStaMapper wrkMastStaMapper;
- @Autowired
- private BasRgvMapMapper basRgvMapMapper;
+ private CrnController crnController;
@Value("${wms.url}")
private String wmsUrl;
@Value("${wms.inboundTaskApplyPath}")
private String inboundTaskApplyPath;
- @Value("${wms.movePath}")
- private String movePath;
@Value("${wms.taskStatusFeedbackPath}")
private String taskStatusFeedbackPath;
- @Autowired
- private CrnController crnController;
@Value("${wms.rgvOpen}")
private boolean rgvOpen;
@@ -112,10 +97,8 @@
@Value("${constant-parameters.trackProportion}")
private Long trackProportion;
- public void generateStoreWrkFile() throws IOException, InterruptedException {
+ public void generateStoreWrkFile() {
try {
-
-
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
for (DevpSlave devp : slaveProperties.getDevp()) {
// 閬嶅巻鍏ュ簱鍙�
@@ -387,7 +370,6 @@
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}
-
/**
* 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
@@ -1117,1092 +1099,8 @@
if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
}
-
-// } else if (param.getIoType() == 2) {
-// taskWrk.setWrkSts(11);
-// if (!Cools.isEmpty(param.getStartPoint())) {
-// taskWrk.setStartPoint(Utils.getWcsLocNo(param.getStartPoint()));//璧风偣
-// taskWrk.setOriginStartPoint(param.getStartPoint());
-// }
-// taskWrk.setTargetPoint(param.getTargetPoint());
-// }else if (param.getIoType() == 3){
-// taskWrk.setWrkSts(11);
-// if (!Cools.isEmpty(param.getStartPoint())) {
-// taskWrk.setStartPoint(param.getStartPoint());//璧风偣
-// taskWrk.setOriginStartPoint(param.getStartPoint());
-// }
}
return taskWrk;
- }
- /**
- * 瀹屾垚灏忚溅浠诲姟
- */
- public synchronized void rgvCompleteWrkMastSta() {
- try{
- for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- continue;
- }
- BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
- if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
- continue;
- }
-
- // 鍙湁褰揜GV绛夊緟WCS纭銆佽嚜鍔�
- if (rgvProtocol.getStatusType() == RgvStatusType.WORKING
- && rgvProtocol.getModeType() == RgvModeType.AUTO
- && ((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 || rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING)){
- if (rgvProtocol.getTaskNo1()==(short)32222){
- boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
- if (!rgvComplete){
- log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
- }
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
- rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
- break;
- }
- WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().longValue());
- if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=1 || wrkMastSta.getWrkSts()!=1){
- log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
- continue;
- }
- /* WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
- if (!Cools.isEmpty(wrkMast) && wrkMastSta.getWrkType()!=5){
- Thread.sleep(200);
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
- StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
- if (staProtocol == null) {
- continue;
- } else {
- staProtocol = staProtocol.clone();
- }
- if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
- continue;
- }
- // 涓嬪彂绔欑偣淇℃伅
- staProtocol.setWorkNo(wrkMast.getWrkNo());
- staProtocol.setStaNo(wrkMast.getStaNo());
- if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) {
- continue;
- }
- log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟锛�"+staProtocol);
-// try{
-// Thread.sleep(1000);
-// DevpThread devpThreadEnd = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-// StaProtocol staProtocolEnd = devpThreadEnd.getStation().get(wrkMastSta.getStaEnd());
-// log.error("灏忚溅浠诲姟瀹屾垚璇诲彇杈撻�佺嚎浠诲姟锛�"+staProtocolEnd);
-// if (staProtocolEnd.getWorkNo()==0 ){ //|| !staProtocolEnd.getWorkNo().equals(wrkMast.getWrkNo())
-// staProtocolEnd.setWorkNo(wrkMast.getWrkNo());
-// staProtocolEnd.setStaNo(wrkMast.getStaNo());
-// if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocolEnd))) {
-// continue;
-// }
-// log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟绗簩娆★細"+staProtocolEnd);
-// }
-// }catch (Exception e){
-//
-// }
- }*/
- boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
- if (!rgvComplete){
- log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
- break;
- }
- 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 || rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING)){
- if (rgvProtocol.getTaskNo2()==(short)32222){
- boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
- if (!rgvComplete){
- log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
- }
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
- rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
- break;
- }
- WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2().longValue());
- if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=2){
- log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
- continue;
- }
- /*WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
- if (!Cools.isEmpty(wrkMast) && wrkMastSta.getWrkType()!=5){
- Thread.sleep(200);
- DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
- StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
- if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
- continue;
- }
- // 涓嬪彂绔欑偣淇℃伅
- staProtocol.setWorkNo(wrkMast.getWrkNo());
- staProtocol.setStaNo(wrkMast.getStaNo());
- if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) {
- continue;
- }
- log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟锛�"+staProtocol);
-// try{
-// Thread.sleep(1000);
-// DevpThread devpThreadEnd = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-// StaProtocol staProtocolEnd = devpThreadEnd.getStation().get(wrkMastSta.getStaEnd());
-// log.error("灏忚溅浠诲姟瀹屾垚璇诲彇杈撻�佺嚎浠诲姟锛�"+staProtocolEnd);
-// if (staProtocolEnd.getWorkNo()==0 ){ //|| !staProtocolEnd.getWorkNo().equals(wrkMast.getWrkNo())
-// staProtocolEnd.setWorkNo(wrkMast.getWrkNo());
-// staProtocolEnd.setStaNo(wrkMast.getStaNo());
-// if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocolEnd))) {
-// continue;
-// }
-// log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟绗簩娆★細"+staProtocolEnd);
-// }
-// }catch (Exception e){
-//
-// }
- }*/
- boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
- if (!rgvComplete){
- log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
- break;
- }
- wrkMastSta.setWrkSts(3);
- wrkMastStaMapper.updateById(wrkMastSta);
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
- rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
- }else {
- log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo());
- }
- }
- }
- }catch (Exception e){
- log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e);
- }
- }
- /**
- * 鍏ュ嚭搴� ===>> 灏忚溅浣滀笟涓嬪彂
- */
- public synchronized boolean rgvIoExecute(Integer sign) {
- boolean rgvIoExecuteSign = false;
- try{
- for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
- // 鑾峰彇灏忚溅淇℃伅
- boolean signWork = false;
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- continue;
- }
- BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
- if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
- continue;
- }
-
- // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
- if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
- && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
- && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
- && rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getLoaded1()==0
- && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
- ) {
- switch (sign){
- //鎵ц灏忚溅璐х墿鎼繍浠诲姟
- case 1:
- signWork = rgvRunWrkMastFullSta(rgvSlave);
- break;
- //鎵ц灏忚溅绌烘澘鎼繍浠诲姟
- case 2://鏀�//鎷嗙洏
- signWork = rgvRunWrkMastEmptyStaPut(rgvSlave);
- break;
- case 3://婊℃斁
- signWork = rgvRunWrkMastEmptyStaPutFull(rgvSlave);
- break;
- case 4://鍙栧彔鐩�
- signWork = rgvRunWrkMastEmptyStaTake(rgvSlave);
- break;
- case 6:////鎻愬崌
-// signWork = qwe();
- break;
- default:
- break;
- }
- for (int signCount = 1;!signWork && signCount<7;signCount++){
- switch (signCount){
- case 1://鎵ц灏忚溅璐х墿鎼繍浠诲姟
- signWork = rgvRunWrkMastFullSta(rgvSlave);
- break;
- case 2://鏀�//鎷嗙洏
- signWork = rgvRunWrkMastEmptyStaPut(rgvSlave);
- break;
- case 3://婊℃斁
- signWork = rgvRunWrkMastEmptyStaPutFull(rgvSlave);
- break;
- case 4://鍙栧彔鐩�
- signWork = rgvRunWrkMastEmptyStaTake(rgvSlave);
- break;
- case 6:////鎻愬崌
-// signWork = rgvRunWrkMastEmptyStaPut();
- break;
- default:
- break;
- }
- }
- }else {
- continue;
- }
- if (!rgvIoExecuteSign){
- rgvIoExecuteSign = signWork;
- }
- }
-// if (!rgvIoExecuteSign){
-// if (sign>6){
-//
-// }
-// }
- }catch (Exception e){
- log.error("RGV灏忚溅浠诲姟涓嬪彂鎶ラ敊"+e);
- }
- return rgvIoExecuteSign;
- }
-
- /**
- * 鎵ц灏忚溅鎼繍浠诲姟
- */
- public synchronized boolean rgvRunWrkMastFullSta(RgvSlave rgvSlave) {
- try{
-// for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- return false;
- }
- BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
- if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
- return false;
- }
-
- // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
- if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
- && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
- && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
- && rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getLoaded1()==0
- && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
- ) {
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(basRgv.getRgvNo());
- if (basRgvMap == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
- return false;
- }
- List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
- basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
- List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
- for (WrkMastSta wrkMastSta : wrkMastStaList){
- if (wrkMastSta.getType()!=1 || wrkMastSta.getWrkType()!=3){//1:婊$増 3锛氬彇鏀�
- continue;
- }
- BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
- if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y") || basDevp.getWrkNo()!=0){
- continue;
- }
- Date date = new Date();
-
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId());
- StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo());
- if (staProtocol == null) {
- log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta);
- continue;
- }
- if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo() != 0){
- continue;
- }
- if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){
- if (staProtocol.isLoadingSuper()){
- continue;
- }
- }
- if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
- if (!staProtocol.isEmptyMk()){
- continue;
- }
- }
- BasDevp basDevpS = basDevpService.selectById(wrkMastSta.getStaStart());
- if (!basDevpS.getAutoing().equals("Y") || !basDevpS.getLoading().equals("Y") || basDevpS.getWrkNo()!=wrkMastSta.getWrkNo().intValue()){
- continue;
- }
- StaProtocol staProtocols = devpThread.getStation().get(basDevpS.getDevNo());
- if (staProtocols == null) {
- log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta);
- continue;
- }
- if (!staProtocols.isAutoing() || !staProtocols.isLoading() || staProtocols.getWorkNo() != wrkMastSta.getWrkNo().intValue()){
- continue;
- }
-
-
- log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta);
- log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp);
- boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta);
- if (sign){
- boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd());
- if (signMap){
- wrkMastSta.setWrkSts(1);
- try{
- wrkMastStaMapper.updateById(wrkMastSta);
- }catch (Exception e){
- log.error("鏇存柊灏忚溅浠诲姟澶辫触");
- }
- return true;
- }else {
- log.error("3864琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
- }
- }else {
- log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
- }
- break;
- }
- }
-// }
- }catch (Exception e){
- log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�");
- log.error("3875琛�"+e);
- }
- return false;
- }
- /**
- * 鎵ц灏忚溅鎼繍浠诲姟//鎷嗙洏
- */
- public synchronized boolean rgvRunWrkMastEmptyStaPut(RgvSlave rgvSlave) {//鎷嗙洏
- try{
-// for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- return false;
- }
- BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
- if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
- return false;
- }
-
- // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤//鎷嗙洏
- if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
- && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
- && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
- && rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
- && (rgvProtocol.getLoaded2()==3 || rgvProtocol.getLoaded2()==1 || rgvProtocol.getLoaded2()==4)////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗� 锛堝彧鑳芥媶鍙狅級 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗�() 锛�3 1銆�2灞傞兘鏈夌墿 4锛氾紙锛夊彧鍏佽鎷嗙洏
- ) {
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- if (basRgvMap == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
- return false;
- }
- basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
- List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//鑾峰彇娲诲姩鑼冨洿
- List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//鏌ヨ鍙墽琛屼换鍔�
- for (WrkMastSta wrkMastSta : wrkMastStaList){
- if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=2){// 2:绌烘澘 || 宸ヤ綔绫诲瀷 1:鍙栵紙鍙犵洏锛� 2锛氭媶鐩� 5锛氭弧鍙� 6锛氭弧鏀�
- continue;
- }
- boolean sign = false;
- if ( wrkMastSta.getStaEnd()!=0){//鏀�
- BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
- if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y") || basDevp.getWrkNo()!=0){
- continue;
- }
- Date date = new Date();
-
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId());
- StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo());
- if (staProtocol == null) {
- log.info(date+"鎷嗙洏浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta);
- continue;
- }
- if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo() != 0){
- continue;
- }
- if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){
- if (staProtocol.isLoadingSuper()){
- continue;
- }
- }
- if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
- if (!staProtocol.isEmptyMk()){
- continue;
- }
- }
-
- log.info(date+"鎷嗙洏浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta);
- log.info(date+"鎷嗙洏浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp);
- sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//鎷嗙洏
- }else {
- continue;
- }
- if (sign){
- boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd());
- if (signMap){
- wrkMastSta.setWrkSts(2);
- try{
- wrkMastStaMapper.updateById(wrkMastSta);
- }catch (Exception e){
- log.error("鏇存柊灏忚溅浠诲姟澶辫触");
- }
- return true;
- }else {
- log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
- }
- }else {
- log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
- }
- break;
- }
- }
-// }
- }catch (Exception e){
- log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触");
- log.error("3933琛�"+e);
- }
- return false;
- }
-
- /**
- * 鎵ц灏忚溅鎼繍浠诲姟
- */
- public synchronized boolean rgvRunWrkMastEmptyStaPutFull(RgvSlave rgvSlave) {//婊℃斁
- try{
-// for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- return false;
- }
- BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
- if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
- return false;
- }
-
- // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤
- if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
- && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
- && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
- && rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
- && (rgvProtocol.getLoaded2()==2 || rgvProtocol.getLoaded2()==3 ) ////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿 4锛氾紙锛夊彧鍏佽鎷嗙洏
- ) {
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- if (basRgvMap == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
- return false;
- }
- basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
- List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//鑾峰彇娲诲姩鑼冨洿
- List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//鏌ヨ鍙墽琛屼换鍔�
- for (WrkMastSta wrkMastSta : wrkMastStaList){
- if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=6){// 2:绌烘澘 || 宸ヤ綔绫诲瀷 1:鍙栵紙鍙犵洏锛� 2锛氭媶鐩� 5锛氭弧鍙� 6锛氭弧鏀� 7:鎻愬崌
- continue;
- }
- boolean sign = false;
- if ( wrkMastSta.getStaEnd()!=0){//婊℃斁
- BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
- if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y") || basDevp.getWrkNo()!=0){
- continue;
- }
- Date date = new Date();
-
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId());
- StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo());
- if (staProtocol == null) {
- log.info(date+"婊℃斁浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta);
- continue;
- }
- if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo() != 0){
- continue;
- }
- if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){
- if (staProtocol.isLoadingSuper()){
- continue;
- }
- }
- if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
- if (!staProtocol.isEmptyMk()){
- continue;
- }
- }
-
- log.info(date+"婊℃斁浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta);
- log.info(date+"婊℃斁浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp);
- sign = rgvPutEmptyFull(rgvProtocol.getRgvNo(),wrkMastSta);
- }else {
- continue;
- }
- if (sign){
- boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd());
- if (signMap){
- wrkMastSta.setWrkSts(2);
- try{
- wrkMastStaMapper.updateById(wrkMastSta);
- }catch (Exception e){
- log.error("鏇存柊灏忚溅浠诲姟澶辫触");
- }
- return true;
- }else {
- log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
- }
- }else {
- log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
- }
- break;
- }
- }
-// }
- }catch (Exception e){
- log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触");
- log.error("3933琛�"+e);
- }
- return false;
- }
-
- public synchronized boolean rgvRunWrkMastEmptyStaTake(RgvSlave rgvSlave) {//鍙犵洏
- try{
-// for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- return false;
- }
- BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
- if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
- return false;
- }
-
- // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤
- if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
- && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
- && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
- && rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
- && (rgvProtocol.getLoaded2()==0 || rgvProtocol.getLoaded2()==1 ) //鐜板満淇敼锛氬彔鐩樻満锛�////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗╋紙鍙兘鎷嗗彔锛� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿 4锛氾紙锛夊彧鍏佽鎷嗙洏
- ) {
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- if (basRgvMap == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
- return false;
- }
- List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
- basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
- List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
- for (WrkMastSta wrkMastSta : wrkMastStaList){
- if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=1){// 2:绌烘澘 || 宸ヤ綔绫诲瀷 1:鍙栵紙鍙犵洏锛� 2锛氭媶鐩� 5锛氭弧鍙� 6锛氭弧鏀�
- continue;
- }
- boolean sign = false;
- if ( wrkMastSta.getStaStart()!=0){//鍙�
- BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaStart());
- if (!basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("Y")){
- continue;
- }
- Date date = new Date();
-
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId());
- StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo());
- if (staProtocol == null) {
- log.info(date+"鍙犵洏浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta);
- continue;
- }
- if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
- continue;
- }
- if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){
- if (!staProtocol.isEmptyMk()){
- continue;
- }
- }
-
- log.info(date+"鍙犵洏浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta);
- log.info(date+"鍙犵洏浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp);
- sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//鍙犵洏
- }else {
- continue;
- }
- if (sign){
- boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute());
- if (signMap){
- wrkMastSta.setWrkSts(1);
- try{
- wrkMastStaMapper.updateById(wrkMastSta);
- }catch (Exception e){
- log.error("鏇存柊灏忚溅浠诲姟澶辫触");
- }
- return true;
- }else {
- log.error("3879琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
- }
- }else {
- log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
- }
- break;
- }
- }
-// }
- }catch (Exception e){
- log.error("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触");
- log.error("3989琛�"+e);
- }
- return false;
- }
-
- /*
- * 鏈変换鍔′絾鏈墽琛� 姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃�
- * */
- public synchronized void rgvRunWrkMastEmptyStaAvoidance() {
- try{
-// Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
-// if (integer==0){
-// return;
-// }
- WrkMastSta wrkMastSta = wrkMastStaMapper.selectAllWrkStsCountWrkMastSta(null, 0);
- if (Cools.isEmpty(wrkMastSta)){
- return;
- }
- boolean signRgv = true;
- boolean signRgv1 = true;
- boolean signRgv2 = true;
- for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- continue;
- }
- BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
- if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
- continue;
- }
-
- // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
- if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
- && rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
- && rgvProtocol.getTaskNo1()==0
- && rgvProtocol.getTaskNo2()==0
- && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
- && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
- ) {
- if (rgvProtocol.getRgvNo()!=1){
- if (!rgvProtocol.getRgvPosI().equals(120) && !rgvProtocol.getRgvPosI().equals(110)){
- continue;
- }
- rgvAvoidanceXY(rgvProtocol.getRgvNo());
-// return;
- continue;
- }
- if (!rgvProtocol.getRgvPosI().equals(110) && !rgvProtocol.getRgvPosI().equals(108) && !rgvProtocol.getRgvPosI().equals(119)){
- continue;
- }
- Integer count108Y = wrkMastStaMapper.selectAllWrkCount108Y();
- if (count108Y!=0){
- continue;
- }
-// Integer count108 = wrkMastStaMapper.selectAllWrkCount108();
-// if (count108!=0){
-// continue;
-// }
- rgvAvoidanceXY(rgvProtocol.getRgvNo());
- continue;
-// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-// Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMap.getRgvNo(), basRgvMap.getEndRoute()); //鑾峰彇鍚堝苟骞叉秹椤�
-// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(),fallMerge);
-// List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route ,route);
-// if (!wrkMastStaList.isEmpty()){
-// log.info("灏忚溅瀛樺湪鍙墽琛屼换鍔★紝璺宠繃閬胯锛侊紒4214");
-// return;
-// }
-// if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
-//// if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),RouteUtils.RouteIndexFarMas(rgvProtocol.getRgvNo(),rgvRunSta[rgvProtocol.getRgvNo()-1]),rgvProtocol.getRgvNo())){
-//// if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),rgvRunSta[rgvProtocol.getRgvNo()-1],rgvProtocol.getRgvNo())){
-// if (rgvProtocol.getRgvNo()==1){
-// signRgv1 = false;
-// }else {
-// signRgv2 = false;
-// }
-// }
-// if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){
-// signRgv1 = false;
-// continue;
-// } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){
-// signRgv2 = false;
-// continue;
-// }
- }else {
- signRgv = false;
- break;
- }
- }
-// if (signRgv && (signRgv1 || signRgv2)){
-// for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-// if (rgvProtocol == null) {
-// continue;
-// }
-//
-// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-// && rgvProtocol.getModeType() == RgvModeType.AUTO
-// && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
-// && rgvProtocol.getTaskNo1()==0
-// && rgvProtocol.getTaskNo2()==0
-// && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-// && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-// ) {
-// 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;
-// }
-// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-// rgvAvoidanceXY(rgvProtocol.getRgvNo());
-// rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
-//
-// }
-// }
-// }
- }catch (Exception e){
- log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
- log.error("4109琛�"+e);
- }
- }
-
- /*
- * 鍒锋柊鍦板浘鏁版嵁
- * */
- public synchronized void refreshRgvMap() {
- try{
- for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- continue;
- }
- BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
- if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
- continue;
- }
-
- // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
- if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
- && rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
- && rgvProtocol.getTaskNo1()==0
- && rgvProtocol.getTaskNo2()==0
- ) {
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvSlave.getId());
- basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
- rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
- }
- }
- }catch (Exception e){
- log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
- log.error("4109琛�"+e);
- }
- }
-
- /*
- * 灏忚溅XY绉诲姩 閬胯
- * */
- public synchronized boolean rgvAvoidanceXY(Integer rgvId){
- 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)32222); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐�
- //basRgvMap.getLockStartRoute().shortValue()
- rgvCommand.setSourceStaNo1( (short)104);
- 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 {
- try{
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
- rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo2((short)32222); // 宸ヤ綅2宸ヤ綔鍙�
- rgvCommand.setTaskMode2(RgvTaskModeType.X_MOVE); // 宸ヤ綅2浠诲姟妯″紡: 鍥炲師鐐�
- rgvCommand.setSourceStaNo2((short)114);
- 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;
-
- }
- }
- }
-
-
- /*
- * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
- * */
- public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta){
- try{
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
- rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐�
- rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅1璧风偣
- rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅1鐩爣绔欑偣
- 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鍐欎换鍔�
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
- return false;
- } else {
- return true;
- }
- }catch (Exception e){
- return false;
- }
- }
-
- /*
- * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
- * */
- public synchronized boolean rgvTakeFull(Integer rgvId,WrkMastSta wrkMastSta){
- try{
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
- rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栬揣
- rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅1璧风偣
- 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鍐欎换鍔�
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
- return false;
- } else {
- return true;
- }
- }catch (Exception e){
- return false;
- }
- }
-
- /*
- * 灏忚溅鏀捐揣鑷宠緭閫佺嚎浠诲姟
- * */
- public synchronized boolean rgvPutFull(Integer rgvId,WrkMastSta wrkMastSta){
- try{
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
- rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣
- rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅1鐩爣绔欑偣
- 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鍐欎换鍔�
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
- return false;
- } else {
- return true;
- }
- }catch (Exception e){
- return false;
- }
- }
-
- /*
- * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟 鍙犵洏
- * */
- public synchronized boolean rgvTakeEmpty(Integer rgvId,WrkMastSta wrkMastSta){
- try{
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
- rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
- rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栬揣
- rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅2璧风偣
- 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鍐欎换鍔�
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
- return false;
- } else {
- return true;
- }
- }catch (Exception e){
- return false;
- }
- }
-
- /*
- * 灏忚溅鏀剧┖鏉胯嚦杈撻�佺嚎浠诲姟 //鎷嗙洏
- * */
- public synchronized boolean rgvPutEmpty(Integer rgvId,WrkMastSta wrkMastSta){
- try{
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
- rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
- rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣
- rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅2鐩爣绔欑偣
- 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鍐欎换鍔�
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
- return false;
- } else {
- return true;
- }
- }catch (Exception e){
- return false;
- }
- }
-
- /*
- * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟 婊″彇
- * */
- public synchronized boolean rgvTakeEmptyFull(Integer rgvId,WrkMastSta wrkMastSta){
- try{
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
- rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
- rgvCommand.setTaskMode2(RgvTaskModeType.FETCH_5); // 宸ヤ綅2浠诲姟妯″紡: 婊″彇
- rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅2璧风偣
- 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鍐欎换鍔�
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
- return false;
- } else {
- return true;
- }
- }catch (Exception e){
- return false;
- }
- }
-
- /*
- * 灏忚溅鏀剧┖鏉胯嚦杈撻�佺嚎浠诲姟 //婊℃斁
- * */
- public synchronized boolean rgvPutEmptyFull(Integer rgvId,WrkMastSta wrkMastSta){
- try{
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
- rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
- rgvCommand.setTaskMode2(RgvTaskModeType.PUT_6); // 宸ヤ綅2浠诲姟妯″紡: 婊℃斁
- rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅2鐩爣绔欑偣
- 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鍐欎换鍔�
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
- return false;
- } else {
- return true;
- }
- }catch (Exception e){
- return false;
- }
- }
-
- /*
- * 灏忚溅澶嶄綅
- * */
- public synchronized boolean rgvComplete(Integer rgvId){
- try{
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- 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;
- } else {
- log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}",rgvId);
- return true;
- }
- }catch (Exception e){
- log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}銆傚紓甯革細"+e,rgvId);
- return false;
- }
- }
-
- /*
- * 灏忚溅鍦板浘鏇存柊 鏇存柊閿�
- * */
- public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd){
- if (rgvOpen){
- return true;
- }
-
-// List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute());
- //鏇存柊褰撳墠灏忚溅閿�
- try{
- Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐�
-// Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(staEnd, staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐�
- Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //鑾峰彇鍚堝苟骞叉秹椤�
- basRgvMapCurrent.setLockEndRoute(fallMerge);
- basRgvMapMapper.updateById(basRgvMapCurrent);
-
- //鏇存柊鍙︿竴鍙板皬杞﹀湴鍥�
- Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther();
- BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther);
- List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute());
- Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�
- Integer lockEndRouteL = RouteUtils.RouteIndexFarMasL(rgvNoOther, lockEndRoute);//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�
- basRgvMapOther.setEndRoute(lockEndRouteL);
- basRgvMapMapper.updateById(basRgvMapOther);
- return true;
- }catch (Exception e){
- log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛�");
- return false;
- }
}
}
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 227e183..ca69fe5 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -5,11 +5,9 @@
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PreDestroy;
-import java.util.ArrayList;
/**
* WCS涓绘祦绋�
@@ -24,9 +22,6 @@
private MainServiceImpl mainService;
// 鎵�灞炵嚎绋�
private Thread thread;
- // 棰戠巼
- private int i = 0;
- private int k = 0;
/**
* =====>> 寮�濮嬪伐浣�
@@ -44,8 +39,6 @@
continue;
}
- // 婕旂ず
-// mainService.crnDemoOfLocMove1();
// 鍏ュ簱 ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。
mainService.generateStoreWrkFile(); // 缁勬墭
// 鍑哄簱 ===>> 鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
@@ -57,28 +50,6 @@
// 鍫嗗灈鏈哄紓甯镐俊鎭褰�
mainService.recCrnErr();
-
-
- i++;
- k++;
- if (i<7) {
- // RGV ===>> 灏忚溅浠诲姟浣滀笟涓嬪彂
- try{
- boolean rgvIoExecuteSign = mainService.rgvIoExecute(i);
- if (rgvIoExecuteSign){
- k = 0;
- } else if (k>7){
- k = 0;
- mainService.rgvRunWrkMastEmptyStaAvoidance();//閬胯
- }
- }catch (Exception e){
- log.error("RGV ===>> 灏忚溅浠诲姟浣滀笟涓嬪彂寮傚父"+e);
- }
- }else {
- i = 0;
- }
- //瀹屾垚灏忚溅浠诲姟
- mainService.rgvCompleteWrkMastSta();
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/main/java/com/zy/core/cache/RgvStatusCache.java b/src/main/java/com/zy/core/cache/RgvStatusCache.java
new file mode 100644
index 0000000..73a8cb5
--- /dev/null
+++ b/src/main/java/com/zy/core/cache/RgvStatusCache.java
@@ -0,0 +1,44 @@
+package com.zy.core.cache;
+
+import com.zy.core.model.protocol.RgvProtocol;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+public class RgvStatusCache {
+ // 鏈湴缂撳瓨锛岄敭涓� currentPosition锛屽�间负 DeviceStatus
+ private static final ConcurrentHashMap<Integer, RgvProtocol> cache = new ConcurrentHashMap<>();
+
+ /**
+ * 鏇存柊璁惧鐘舵��
+ */
+ public static void updateRgvStatus(RgvProtocol status) {
+ try {
+ cache.put(status.getRgvNo(), status);
+ } finally {
+ }
+ }
+
+ /**
+ * 鑾峰彇璁惧鐘舵��
+ */
+ public static RgvProtocol getRgvStatus(Integer RgvNo) {
+ try {
+ return cache.get(RgvNo);
+ } finally {
+ }
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夎澶囩姸鎬�
+ */
+ public static ConcurrentHashMap<Integer, RgvProtocol> getAllRgvStatus() {
+ try {
+ return new ConcurrentHashMap<>(cache); // 杩斿洖鍓湰
+ } finally {
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/core/cache/TaskProtocolCache.java b/src/main/java/com/zy/core/cache/TaskProtocolCache.java
new file mode 100644
index 0000000..e17f307
--- /dev/null
+++ b/src/main/java/com/zy/core/cache/TaskProtocolCache.java
@@ -0,0 +1,120 @@
+package com.zy.core.cache;
+
+import com.zy.core.model.protocol.TaskProtocol;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+@Slf4j
+public class TaskProtocolCache {
+ // 鏈湴缂撳瓨锛岄敭涓� taskNo锛屽�间负 TaskProtocol
+ private final ConcurrentHashMap<Long, TaskProtocol> cache = new ConcurrentHashMap<>();
+
+ // 璇诲啓閿侊紝纭繚绾跨▼瀹夊叏
+// private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+
+ /**
+ * 鏇存柊璁惧鐘舵��
+ */
+ public void updateTaskProtocol(TaskProtocol status) {
+ cache.put(status.getTaskNo(), status);
+ }
+
+ /**
+ * 鍒犻櫎浠诲姟缂撳瓨
+ */
+ public TaskProtocol removeTaskProtocol(String taskNo) {
+// lock.readLock().lock(); // 鍔犺閿�
+ try {
+ return cache.remove(taskNo);
+ } finally {
+// lock.readLock().unlock(); // 閲婃斁璇婚攣
+ }
+ }
+
+ /**
+ * 鑾峰彇浠诲姟缂撳瓨
+ */
+ public TaskProtocol getTaskProtocol(String taskNo) {
+// lock.readLock().lock(); // 鍔犺閿�
+ try {
+ return cache.get(taskNo);
+ } finally {
+// lock.readLock().unlock(); // 閲婃斁璇婚攣
+ }
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈変换鍔�
+ */
+ public ConcurrentHashMap<Long, TaskProtocol> getAllTaskProtocol() {
+// lock.readLock().lock(); // 鍔犺閿�
+ try {
+ return new ConcurrentHashMap<>(cache); // 杩斿洖鍓湰
+ } finally {
+// lock.readLock().unlock(); // 閲婃斁璇婚攣
+ }
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夊彇浠诲姟
+ */
+ public List<TaskProtocol> getAllTakeTaskProtocol() {
+// lock.readLock().lock(); // 鍔犺閿�
+ try {
+ List<TaskProtocol> allTakeTaskProtocol = new ArrayList<>();
+ for (TaskProtocol task : cache.values()) {
+ if (task.getTaskStatus()==1) {
+ allTakeTaskProtocol.add(task);
+ }
+ }
+ return allTakeTaskProtocol; // 杩斿洖鍓湰
+ } finally {
+// lock.readLock().unlock(); // 閲婃斁璇婚攣
+ }
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夊彇浠诲姟
+ */
+ public List<TaskProtocol> getAllPutTaskProtocol() {
+// lock.readLock().lock(); // 鍔犺閿�
+ try {
+ List<TaskProtocol> allPutTaskProtocol = new ArrayList<>();
+ for (TaskProtocol task : cache.values()) {
+ if (task.getTaskStatus()==2) {
+ allPutTaskProtocol.add(task);
+ }
+ }
+ return allPutTaskProtocol; // 杩斿洖鍓湰
+ } finally {
+// lock.readLock().unlock(); // 閲婃斁璇婚攣
+ }
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夊彇浠诲姟
+ */
+ public List<TaskProtocol> getAllWalkTaskProtocol() {
+// lock.readLock().lock(); // 鍔犺閿�
+ try {
+ List<TaskProtocol> allWalkTaskProtocol = new ArrayList<>();
+ for (TaskProtocol task : cache.values()) {
+ if (task.getTaskStatus()==0) {
+ allWalkTaskProtocol.add(task);
+ }
+ }
+ return allWalkTaskProtocol; // 杩斿洖鍓湰
+ } finally {
+// lock.readLock().unlock(); // 閲婃斁璇婚攣
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/core/enums/RgvModeType.java b/src/main/java/com/zy/core/enums/RgvModeType.java
index f1dbe1e..ec6fcb3 100644
--- a/src/main/java/com/zy/core/enums/RgvModeType.java
+++ b/src/main/java/com/zy/core/enums/RgvModeType.java
@@ -7,7 +7,7 @@
HAND(1, "鎵嬪姩"),
HALF_AUTO(2, "鍗婅嚜鍔�"),
AUTO(3, "鑷姩"),
- AUTO2(100, "鍏跺畠"),
+ OTHER(100, "鍏跺畠"),
;
public Integer id;
@@ -19,25 +19,25 @@
public static RgvModeType get(Short id) {
if (null == id) {
- return null;
+ return OTHER;
}
for (RgvModeType type : RgvModeType.values()) {
if (type.id.equals(id.intValue())) {
return type;
}
}
- return null;
+ return OTHER;
}
public static RgvModeType get(RgvModeType type) {
if (null == type) {
- return null;
+ return OTHER;
}
for (RgvModeType rgvModeType : RgvModeType.values()) {
if (rgvModeType == type) {
return rgvModeType;
}
}
- return null;
+ return OTHER;
}
}
diff --git a/src/main/java/com/zy/core/enums/RgvStatusType.java b/src/main/java/com/zy/core/enums/RgvStatusType.java
index 5361565..6ef70b2 100644
--- a/src/main/java/com/zy/core/enums/RgvStatusType.java
+++ b/src/main/java/com/zy/core/enums/RgvStatusType.java
@@ -11,7 +11,7 @@
WAITING(90, "浠诲姟瀹屾垚绛夊緟WCS纭"),
FETCHWAITING(91, "鍙栬揣浠诲姟瀹屾垚绛夊緟WCS纭"),
SOS99(99, "鎶ヨ99"),
- SOS100(100, "鍏跺畠100")
+ OTHER(100, "鍏跺畠100")
;
public Integer id;
@@ -23,25 +23,25 @@
public static RgvStatusType get(Short id) {
if (null == id) {
- return null;
+ return OTHER;
}
for (RgvStatusType type : RgvStatusType.values()) {
if (type.id.equals(id.intValue())) {
return type;
}
}
- return NONE;
+ return OTHER;
}
public static RgvStatusType get(RgvStatusType type) {
if (null == type) {
- return null;
+ return OTHER;
}
for (RgvStatusType rgvStatusType : RgvStatusType.values()) {
if (rgvStatusType == type) {
return rgvStatusType;
}
}
- return null;
+ return OTHER;
}
}
diff --git a/src/main/java/com/zy/core/model/RgvSlave.java b/src/main/java/com/zy/core/model/RgvSlave.java
index f16c22d..b354f8e 100644
--- a/src/main/java/com/zy/core/model/RgvSlave.java
+++ b/src/main/java/com/zy/core/model/RgvSlave.java
@@ -22,22 +22,10 @@
private Boolean demo;
- private Integer devpPlcId;
+ private Integer otherId;
// RGV鍏ュ簱婧愮珯鐐�
private List<RgvStn> rgvInSStn = new ArrayList<>();
-
- // RGV鍑哄簱婧愮珯鐐�
- private List<RgvStn> rgvOutSStn = new ArrayList<>();
-
- // RGV鍙犵洏
- private List<RgvStn> rgvEmptyInSStn = new ArrayList<>();
-
- // RGV绌烘澘鍏ュ簱
- private List<RgvStn> rgvEmptyOutSStn = new ArrayList<>();
-
- // RGV鍑哄簱鐩爣绔欑偣
- private List<RgvStn> rgvDestStn = new ArrayList<>();
@Data
public static class RgvStn {
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 6e317ff..902050f 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -18,9 +18,9 @@
* 2 = 鑷姩妯″紡
* 3 = 鐢佃剳妯″紡
*/
- public Short mode;
+ public Short mode = -1;
- public RgvModeType modeType;
+ public RgvModeType modeType = RgvModeType.NONE;
/**
* RGV褰撳墠鐘舵��
@@ -28,12 +28,12 @@
* 1锛氫綔涓氫腑
* 2锛氭姤璀�
*/
- public Short status;
+ public Short status = -1;
/**
* 鐘舵�佹灇涓�
*/
- public RgvStatusType statusType;
+ public RgvStatusType statusType = RgvStatusType.NONE;
/**
* 浠诲姟鍙�
@@ -41,14 +41,14 @@
public Short taskNo = 0;
/**
- * 宸ヤ綅1鏈夌墿
+ * 鏈夌墿
*/
public Short loaded;//0 鏃犵墿锛�1 鏈夌墿
/**
* RGV褰撳墠浣嶇疆
*/
- public Long RgvPos;
+ public Long RgvPos = 0L;
/**
* 璧拌鍦ㄥ畾浣�
@@ -76,6 +76,21 @@
* 绱璧拌鏃堕暱h
*/
public Float xDuration;
+
+ /**
+ * 鏄惁閬胯
+ */
+ public Short Avoid;//0\1\2
+
+ /**
+ * 閬胯鐩殑鍦�
+ */
+ public Short AvoidingTheDestination;
+
+ /**
+ * 鏄惁鍚敤
+ */
+ public boolean statusEnable;//0\1\2
public void setMode(Short mode) {
this.mode = mode;
@@ -115,12 +130,6 @@
public void setxDuration(Short xDuration) {
this.xDuration = Float.valueOf(xDuration);
- }
-
- public Integer getRgvPosI(){
- //闇�瑕佹牴鎹幇鍦烘敼閫� 鏍规嵁璇诲埌鐨勫�艰幏鍙栧搴旂珯鐐逛綅缃�
- if (RgvPos==null) return 0;
- return RgvPos.intValue();
}
}
diff --git a/src/main/java/com/zy/core/model/protocol/TaskProtocol.java b/src/main/java/com/zy/core/model/protocol/TaskProtocol.java
new file mode 100644
index 0000000..1e36720
--- /dev/null
+++ b/src/main/java/com/zy/core/model/protocol/TaskProtocol.java
@@ -0,0 +1,33 @@
+package com.zy.core.model.protocol;
+
+import lombok.Data;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+@Data
+public class TaskProtocol {
+ private volatile Long taskNo; // 浠诲姟鍙凤紙涓诲睘鎬э級
+ private volatile Long targetPosition = 0L; // 鐩爣浣嶇疆
+ private volatile Long currentPosition = 0L; // 褰撳墠浣嶇疆
+
+ private volatile int isRunning = 0; // 杩愯鐘舵�� 0锛氬垵濮� 1锛氱瓑寰呮墽琛� 2锛氭墽琛屼腑 3锛氭墽琛屼腑鏂� 4锛氬畬缁�
+
+ private volatile int taskStatus = 0; //浣滀笟妯″紡 0锛氳璧� 1锛氬彇 2锛氭斁
+
+ public TaskProtocol(){}
+
+ public TaskProtocol(Long taskNo, Long targetPosition, Long currentPosition, int isRunning, int taskStatus) {
+ this.taskNo = taskNo;
+ this.targetPosition = targetPosition;
+ this.currentPosition = currentPosition;
+ this.isRunning = isRunning;
+ this.taskStatus = taskStatus;
+ }
+
+ public TaskProtocol(TaskProtocol taskProtocol) {
+ this.taskNo = taskProtocol.getTaskNo();
+ this.targetPosition = taskProtocol.getTargetPosition();
+ this.taskStatus = taskProtocol.getTaskStatus();
+ }
+}
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 886278b..620c6e5 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -5,6 +5,7 @@
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.alibaba.fastjson.JSON;
+import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
import com.zy.asrs.entity.BasRgv;
@@ -15,6 +16,9 @@
import com.zy.core.ThreadHandler;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
+import com.zy.core.cache.RgvStatusCache;
+import com.zy.core.cache.TaskProtocolCache;
+import com.zy.core.enums.RgvModeType;
import com.zy.core.enums.RgvStatusType;
import com.zy.core.enums.RgvTaskModeType;
import com.zy.core.enums.SlaveType;
@@ -22,11 +26,14 @@
import com.zy.core.model.Task;
import com.zy.core.model.command.RgvCommand;
import com.zy.core.model.protocol.RgvProtocol;
+import com.zy.core.model.protocol.TaskProtocol;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.text.MessageFormat;
import java.util.Date;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
/**
* RGV绾跨▼
@@ -38,7 +45,9 @@
private SiemensS7Net siemensNet;
private RgvSlave slave;
- private RgvProtocol rgvProtocol;
+// private RgvProtocol rgvProtocol;
+ private TaskProtocolCache taskProtocolCache = new TaskProtocolCache();
+
/**
* 宸ヤ綅1澶嶄綅淇″彿
*/
@@ -55,46 +64,135 @@
@Override
@SuppressWarnings("InfiniteLoopStatement")
public void run() {
- this.connect();
+ boolean connect = this.connect();
+ if (connect){
+
+ // 鍚姩璇绘暟鎹嚎绋�
+ new Thread(this::readStatusRgv).start();
+
+ // 鍚姩浠诲姟涓嬪彂绾跨▼
+ new Thread(this::taskTakeIssued).start();
+
+ new Thread(this::taskPutIssued).start();
+
+ new Thread(this::taskWalkIssued).start();
+ }
+ }
+
+ private void readStatusRgv(){
while (true) {
try {
- int step = 1;
- Task task = MessageQueue.poll(SlaveType.Rgv, slave.getId());
- if (task != null) {
- step = task.getStep();
- }
- switch (step) {
- // 璇绘暟鎹�
- case 1:
- readStatus();
- break;
- // 宸ヤ綅1銆�2鍐欏叆鏁版嵁
- case 2:
- write((RgvCommand) task.getData());
- break;
- // 澶嶄綅
- case 3:
- RgvCommand command = (RgvCommand) task.getData();
- if (null == command) {
- command = new RgvCommand();
- }
- command.setRgvNo(slave.getId()); // RGV缂栧彿
- command.setTaskNo((short) 0); // 宸ヤ綔鍙�
- command.setAckFinish((short) 1); // 浠诲姟瀹屾垚纭浣�
- command.setTaskMode(RgvTaskModeType.NONE); // 浠诲姟妯″紡
- command.setDestinationStaNo(0L); // 鐩爣绔�
- command.setCommand((short)0);
- write(command);
- break;
- default:
- break;
- }
- Thread.sleep(500);
+ Thread.sleep(100);
+
+ readStatus();
+
} catch (Exception e) {
- log.error("RGV绾跨▼寮傚父锛侊紒锛�"+e.getMessage());
+ log.error("RGV鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛�"+e.getMessage());
+ initRgv();
// e.printStackTrace();
}
+ }
+
+ }
+
+ /**
+ * 浠诲姟涓嬪彂
+ */
+ private void taskTakeIssued() {
+ while (true) {
+ try {
+ // 浼戠湢 1 绉�
+ Thread.sleep(100);
+ if (!deviceDetection()){
+ continue;
+ }
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ if (rgvProtocol == null) {
+ initRgv();
+ rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ }
+ if (rgvProtocol.getAvoid() == 0 || !rgvProtocol.getLoaded().equals((short) 0)) {
+ continue;
+ }
+ List<TaskProtocol> allTakeTaskProtocol = taskProtocolCache.getAllTakeTaskProtocol();
+ for(TaskProtocol taskProtocol: allTakeTaskProtocol){
+ if (taskProtocol.getTaskStatus() == 1){//鍑嗗涓嬪彂
+
+
+
+
+
+
+
+
+ TaskProtocol issued = new TaskProtocol(taskProtocol);
+ write(issued);
+ taskProtocol.setIsRunning(taskProtocol.getIsRunning() +1);
+ taskProtocolCache.updateTaskProtocol(taskProtocol);
+ break;
+ }
+ }
+
+
+ } catch (Exception e) {
+ log.error("RGV鍙栬揣浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�"+e.getMessage());
+// e.printStackTrace();
+ }
+ }
+ }
+
+ public boolean deviceDetection(){
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ if (rgvProtocol == null) {
+ return false;
+ }
+ if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L)
+ || !rgvProtocol.getStatusType().equals(RgvStatusType.IDLE)) {
+ return false;
+ }
+ RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+ if (rgvProtocolOther == null) {
+ return false;
+ }
+ if (rgvProtocolOther.statusEnable){
+ if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * 浠诲姟涓嬪彂
+ */
+ private void taskPutIssued() {
+ while (true) {
+ try {
+ // 浼戠湢 1 绉�
+ Thread.sleep(100);
+
+ } catch (Exception e) {
+ log.error("RGV鏀捐揣浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�"+e.getMessage());
+// e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * 浠诲姟涓嬪彂
+ */
+ private void taskWalkIssued() {
+ while (true) {
+ try {
+ // 浼戠湢 1 绉�
+ Thread.sleep(100);
+
+
+ } catch (Exception e) {
+ log.error("RGV琛岃蛋浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�"+e.getMessage());
+// e.printStackTrace();
+ }
}
}
@@ -102,8 +200,10 @@
* 鍒濆鍖朢GV鐘舵��
*/
private void initRgv() {
- if (null == rgvProtocol) {
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ if (rgvProtocol == null) {
rgvProtocol = new RgvProtocol();
+ rgvProtocol.setRgvNo(slave.getId());
}
rgvProtocol.setMode((short) -1);
rgvProtocol.setStatus((short)-1);
@@ -113,6 +213,15 @@
rgvProtocol.setxSpeed((short) 0);
rgvProtocol.setxDistance((short) 0);
rgvProtocol.setxDuration((short) 0);
+ BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
+ BasRgv rgv = basRgvService.selectById(slave.getId());
+ if (!Cools.isEmpty(rgv)){
+ rgvProtocol.setStatusEnable(rgv.getStatus() == 1);
+ } else {
+ rgvProtocol.setStatusEnable(false);
+ }
+ RgvStatusCache.updateRgvStatus(rgvProtocol);
+
}
@Override
@@ -142,7 +251,9 @@
try {
OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 34);
if (result.IsSuccess) {
- if (null == rgvProtocol) {
+ // 鏋勫缓璁惧鐘舵�佸璞�
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ if (rgvProtocol == null) {
rgvProtocol = new RgvProtocol();
rgvProtocol.setRgvNo(slave.getId());
}
@@ -155,37 +266,49 @@
// rgvProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
- // 宸ヤ綅1澶嶄綅淇″彿
- if (rgvProtocol.getStatusType().equals(RgvStatusType.WAITING)
- || rgvProtocol.getStatusType().equals(RgvStatusType.FETCHWAITING)) {
- if (resetFlag1) {
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setAckFinish1((short)1);
- if (write(rgvCommand)) {
- resetFlag1 = false;
- }
- }
- }
+// // 宸ヤ綅1澶嶄綅淇″彿
+// if (rgvProtocol.getStatusType().equals(RgvStatusType.WAITING)
+// || rgvProtocol.getStatusType().equals(RgvStatusType.FETCHWAITING)) {
+// if (resetFlag1) {
+// RgvCommand rgvCommand = new RgvCommand();
+// rgvCommand.setAckFinish1((short)1);
+// if (write(rgvCommand)) {
+// resetFlag1 = false;
+// }
+// }
+// }
try {
// 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
- BasRgv basRgv = new BasRgv();
+ BasRgv basRgv = basRgvService.selectById(slave.getId());
+ if (!Cools.isEmpty(basRgv)){
+ rgvProtocol.setStatusEnable(basRgv.getStatus() == 1);
+ } else {
+ rgvProtocol.setStatusEnable(false);
+ }
+// BasRgv basRgv = new BasRgv();
basRgv.setRgvNo(slave.getId());
basRgv.setRgvSts((int)rgvProtocol.getMode());
if (!basRgvService.updateById(rgvProtocol.toSqlModel(basRgv))){
log.error("RGV plc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
}
- } catch (Exception ignore){}
+ } catch (Exception ignore){
+
+ }
+
+
+ // 鏇存柊缂撳瓨
+ RgvStatusCache.updateRgvStatus(rgvProtocol);
} else {
initRgv();
- OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+// OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
}
} catch (Exception e) {
- e.printStackTrace();
- OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+// e.printStackTrace();
+// OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
initRgv();
}
@@ -194,40 +317,40 @@
/**
* 鍐欏叆鏁版嵁
*/
- private boolean write(RgvCommand command) throws InterruptedException {
- if (null == command) {
+ private boolean write(TaskProtocol taskProtocol) throws InterruptedException {
+ if (null == taskProtocol) {
log.error("RGV鍐欏叆鍛戒护涓虹┖");
return false;
}
// convertRow(command);
- command.setRgvNo(slave.getId());
- short[] array = new short[11];
- array[0] = command.getAckFinish1();
- array[1] = command.getTaskNo();
- array[2] = command.getTaskMode();
+// taskProtocol.setRgvNo(slave.getId());
+ Long[] array = new Long[11];
+// array[0] = taskProtocol.getAckFinish1();
+ array[1] = taskProtocol.getTaskNo();
+// array[2] = taskProtocol.getTaskMode();
// array[4] = command.getDestinationStaNo();
- array[10] = command.getCommand();
- OperateResult result = siemensNet.Write("DB100.0", array);
+// array[10] = taskProtocol.getCommand();
+ OperateResult result = siemensNet.Write("DB100.0", taskProtocol.getTaskNo());
- if (command.getAckFinish1() == 0) {
- short commandFinish = 3; //宸ヤ綅1銆�2浠诲姟鍚屾椂鍐欏叆
- Thread.sleep(100L);
- result = siemensNet.Write("DB100.20", commandFinish);
- }
+// if (taskProtocol.getAckFinish1() == 0) {
+// short commandFinish = 3; //宸ヤ綅1銆�2浠诲姟鍚屾椂鍐欏叆
+// Thread.sleep(100L);
+// result = siemensNet.Write("DB100.20", commandFinish);
+// }
try {
// 鏃ュ織璁板綍
BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class);
BasRgvOpt basRgvOpt = new BasRgvOpt(
- command.getTaskNo().intValue(),
- command.getTaskNo().intValue(),
- command.getRgvNo(),
+ taskProtocol.getTaskNo().intValue(),
+ taskProtocol.getTaskNo().intValue(),
+ slave.getId(),
new Date(),
- command.getTaskModeType().toString(),
+ String.valueOf(taskProtocol.getTaskStatus()),
null,
null,
null,
- command.getDestinationStaNo().intValue(),
+ result.IsSuccess? 1 : 0,
null,
new Date(),
null
@@ -238,8 +361,8 @@
if (result != null && result.IsSuccess) {
Thread.sleep(200);
this.readStatus();
- log.info("RGV 鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
- OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
+ log.info("RGV 鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(taskProtocol));
+ OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(taskProtocol)));
return true;
} else {
OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戝啓鍏GV plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index e066e7a..9c3e97c 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -39,28 +39,14 @@
port: 502
rack: 0
slot: 0
- devpPlcId: ${wcs-slave.devp[0].id}
- #RGV鍏ュ簱婧愮珯鐐�
+ otherId: 2
+ #RGV婧愮珯鐐�
rgvInSStn[0]:
devpPlcId: ${wcs-slave.devp[0].id}
staNo: 100
rgvInSStn[1]:
devpPlcId: ${wcs-slave.devp[0].id}
staNo: 101
- #RGV鍑哄簱婧愮珯鐐�
- rgvOutSStn[0]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 110
- rgvOutSStn[1]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 112
- #RGV鐩爣绔欑偣
- rgvDestStn[0]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 102
- rgvDestStn[1]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 103
# RGV绌挎杞�2
rgv[1]:
id: 2
@@ -68,25 +54,11 @@
port: 502
rack: 0
slot: 0
- devpPlcId: ${wcs-slave.devp[0].id}
- #RGV鍏ュ簱婧愮珯鐐�
+ otherId: 1
+ #RGV婧愮珯鐐�
rgvInSStn[0]:
devpPlcId: ${wcs-slave.devp[0].id}
staNo: 100
rgvInSStn[1]:
devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 101
- #RGV鍑哄簱婧愮珯鐐�
- rgvOutSStn[0]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 110
- rgvOutSStn[1]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 112
- #RGV鐩爣绔欑偣
- rgvDestStn[0]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 102
- rgvDestStn[1]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 103
\ No newline at end of file
+ staNo: 101
\ No newline at end of file
--
Gitblit v1.9.1