From 388353ed9bad250663e8ad8129463d1ea80d46e6 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期四, 24 四月 2025 16:21:25 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/core/thread/RgvThread.java | 227 +++++------
src/main/java/com/zy/core/cache/TaskProtocolCache.java | 30
src/main/java/com/zy/asrs/entity/TaskWrk.java | 11
src/main/java/com/zy/asrs/utils/RouteUtils.java | 444 +---------------------
src/main/java/com/zy/core/model/RgvSlave.java | 6
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 348 +++++++++++++++-
src/main/resources/application-prod.yml | 36 +
src/main/java/com/zy/core/MainProcess.java | 3
src/main/java/com/zy/core/model/protocol/TaskProtocol.java | 21
src/main/java/com/zy/asrs/utils/TrackRangeUtils.java | 49 ++
10 files changed, 564 insertions(+), 611 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/TaskWrk.java b/src/main/java/com/zy/asrs/entity/TaskWrk.java
index ce9f34c..220c720 100644
--- a/src/main/java/com/zy/asrs/entity/TaskWrk.java
+++ b/src/main/java/com/zy/asrs/entity/TaskWrk.java
@@ -352,4 +352,15 @@
return Math.abs(day) + "澶�" + Math.abs(hour) + "灏忔椂" + Math.abs(min) + "鍒�" + Math.abs(s) + "绉�";
}
+
+
+ public Integer getTargetPointConvert(){
+ switch (targetPoint){
+ case "11":
+ return 11;
+ default:
+ return null;
+ }
+ }
+
}
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 c1c4edb..fa0501d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -13,25 +13,24 @@
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.TrackRangeUtils;
import com.zy.asrs.utils.Utils;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import com.zy.core.CrnThread;
import com.zy.core.DevpThread;
-import com.zy.core.cache.MessageQueue;
-import com.zy.core.cache.RgvStatusCache;
-import com.zy.core.cache.SlaveConnection;
+import com.zy.core.cache.*;
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.protocol.CrnProtocol;
-import com.zy.core.model.protocol.RgvProtocol;
-import com.zy.core.model.protocol.StaProtocol;
+import com.zy.core.model.protocol.*;
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;
@@ -42,6 +41,7 @@
import java.io.IOException;
import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
/**
* 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
@@ -80,6 +80,8 @@
private CommonService commonService;
@Autowired
private CrnController crnController;
+ @Autowired
+ private BasDevpPositionService basDevpPositionService;
@Value("${wms.url}")
private String wmsUrl;
@@ -99,6 +101,9 @@
@Value("${constant-parameters.trackProportion}")
private Long trackProportion;
+
+ @Value("${constant-parameters.avoidDistance}")
+ private Long avoidDistance;
public void generateStoreWrkFile() {
try {
@@ -1106,25 +1111,63 @@
return taskWrk;
}
- public boolean deviceDetection(RgvSlave slave){
+ public String rgvOtherTaskWrk(RgvSlave slave){
+
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, slave.getOtherId());
+ TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
+ ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
+ if (!allTaskProtocol.isEmpty()){
+ for (TaskProtocol taskProtocol : allTaskProtocol.values()){
+ if (taskProtocol.getTaskNo() != 0 ){
+ return taskProtocol.getTaskNo().toString();
+ }
+ }
+ }
+ return "鏃�";
+
+ }
+ public boolean rgvDetection(RgvSlave slave){
RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
- if (rgvProtocol == null) {
+ RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
+
+ if (rgvProtocol == null || rgvTaskProtocol ==null) {
return false;
}
- if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L)
+ if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1 || rgvProtocol.getRgvPosDestination() == 0L
|| (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) {
return false;
}
RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+ RgvTaskProtocol rgvTaskProtocolOther = RgvTaskCache.getRgvStatus(slave.getOtherId());
+
if (rgvProtocolOther == null) {
return false;
}
if (rgvProtocolOther.statusEnable){
- if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L)) {
+ if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L) || rgvTaskProtocolOther.getAvoid() == -1 || rgvProtocolOther.getRgvPosDestination() == 0L) {
return false;
}
}
return true;
+ }
+
+ public TaskWrk deviceDetection(RgvSlave.RgvStn inSta){
+
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, inSta.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+ if (staProtocol == null){
+ return null;
+ }
+ // 鍒ゆ柇鏄惁婊¤冻鍙栬揣鏉′欢
+ if (staProtocol.isAutoing()
+// && staProtocol.isLoading()
+ && staProtocol.getWorkNo()!=0) {
+ TaskWrk taskWrk = taskWrkService.selectByTaskNo(staProtocol.getWorkNo().toString());
+ if (taskWrk!=null){
+ return taskWrk;
+ }
+ }
+ return null;
}
public boolean rgvOtherStatusEnable(RgvSlave slave){
@@ -1134,42 +1177,269 @@
}
if (rgvProtocolOther.statusEnable){
// if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L)) {
- return true;
+ return true;
// }
}
return false;
}
-
- private void sc(){
-
-
- // 鏍规嵁杈撻�佺嚎plc閬嶅巻
- for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
- if (!deviceDetection(rgvSlave)){
- continue;
- }
- RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(rgvSlave.getId());
-
- RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(rgvSlave.getOtherId());
-
- //姹傚嚭褰撳墠杞﹀彲杩愯鑼冨洿
- Long[] farthestPoint = new Long[]{0L,0L};
- if (!rgvProtocolOther.statusEnable){
- farthestPoint = new Long[]{0L,0L};
- } else {
- if (rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE)){
-
- }
- }
-
-
- // 閬嶅巻鍏ュ簱鍙�
- for (RgvSlave.RgvStn inSta : rgvSlave.getRgvInSStn()) {
-
- }
+ public boolean deviceRgvDetection(Integer startSta,RgvSlave rgvSlave,Integer endSta){
+ BasDevpPosition basDevpPositionStartSta = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", startSta));
+ if (basDevpPositionStartSta == null){
+ return false;
}
+ BasDevpPosition basDevpPositionEndSta = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", endSta));
+ if (basDevpPositionEndSta == null){
+ return false;
+ }
+
+ DevpThread devpThreadEnd = (DevpThread) SlaveConnection.get(SlaveType.Devp, basDevpPositionEndSta.getPlcId());
+ StaProtocol staProtocolEnd = devpThreadEnd.getStation().get(endSta);
+ if (staProtocolEnd == null){
+ return false;
+ }
+ // 鍒ゆ柇鏄惁婊¤冻鏀捐揣鏉′欢
+ if (!staProtocolEnd.isAutoing() || staProtocolEnd.isLoading()) {
+ return false;
+ }
+
+ if (!rgvDetection(rgvSlave)){
+ return false;
+ }
+
+ // a褰撳墠 b other
+ // b鍙敤
+ // b鏃犱换鍔�
+ // 鍗婅竟鍖哄煙鍐呭叏浠诲姟
+ // 鍗婅竟鍖哄煙鍐呭彇璐т换鍔�
+ // 鍗婅竟鍖哄煙鍐呮斁璐т换鍔�
+ //鍒囨崲B
+ // 鍗婅竟鍖哄煙鍐呭叏浠诲姟
+ // 鍗婅竟鍖哄煙鍐呭彇璐т换鍔�
+ // 鍗婅竟鍖哄煙鍐呮斁璐т换鍔�
+ //b 鏈変换鍔�
+ // 鍙敤鍖哄煙浠诲姟
+ // 鍙敤鍖哄煙浠诲姟鍐呭彇璐т换鍔�
+ //
+ // b绂佺敤
+ // 鍏ㄥ尯鍩熶换鍔� 灏辫繎鍙栬揣
+
+
+ return false;
}
+ public synchronized void taskStart() {
+ for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+ try{
+ if (rgvDetection(rgvSlave)){
+ for (RgvSlave.RgvStn inSta : rgvSlave.getRgvInSta()){
+ TaskWrk taskWrk = deviceDetection(inSta);
+ if (taskWrk!=null){
+ if (deviceRgvDetection(inSta.getStaNo(),rgvSlave,taskWrk.getTargetPointConvert())){
+ RgvProtocol rgvStatus = RgvStatusCache.getRgvStatus(rgvSlave.getId());
+
+
+ }
+ }
+ }
+ }
+ } catch (Exception e){
+ log.error("浠诲姟鐢熸垚澶辫触===銆嬪紓甯镐俊鎭細{}",e.getMessage());
+ }
+ }
+ }
+
+ public synchronized void DevpTaskNoRun() {
+ for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+ try{
+ if (rgvDetection(rgvSlave)){
+ String taskNoNow = rgvOtherTaskWrk(rgvSlave);
+ List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("PLC_POSITION", true));
+ boolean itSmall = new TrackRangeUtils().IsItSmall(rgvSlave);
+ if (basDevpPositions.isEmpty()) {
+ log.error("鑾峰彇鎵�鏈夌珯鐐逛俊鎭紓甯�");
+ continue;
+ }
+ List<TaskWrk> taskWrkList = new ArrayList<>();
+ List<Integer> staList = new ArrayList<>();
+ for (RgvSlave.RgvStn inSta : rgvSlave.getRgvInSta()){
+ TaskWrk taskWrk = deviceDetection(inSta);
+ if (taskWrk!=null){
+ if (taskWrk.getTaskNo().equals(taskNoNow)) continue;
+ taskWrkList.add(taskWrk);
+ staList.add(inSta.getStaNo());
+ }
+ }
+
+ if (rgvOtherStatusEnable(rgvSlave)){
+ //鍒嗘垚涓婁笅涓ら儴鍒嗕换鍔�
+ List<Integer>[] avoidRange = RouteUtils.avoidRange(staList, basDevpPositions);
+ List<Integer> rangeListSou = avoidRange[itSmall ? 0 : 1];
+ List<Integer> rangeListSouOther = avoidRange[itSmall ? 1 : 0];
+ //灏辫繎鎺掑簭
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(rgvSlave.getId());
+ List<Integer> rangeList = RouteUtils.SortNearby(rangeListSou, rgvProtocol.RgvPos, basDevpPositions);
+ List<Integer> rangeListOther = RouteUtils.SortNearby(rangeListSouOther, rgvProtocol.RgvPos, basDevpPositions);
+ if (taskNoNow.equals("鏃�")){ //b 鏃犱换鍔�
+ //鎵�灞為儴鍒嗗氨杩涘彇璐�
+ // 鍗婅竟鍖哄煙鍐呭叏浠诲姟
+ boolean sign = false;
+
+ for (Integer staNoNow : rangeList){
+ for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()){
+ if (rgvStn.getStaNo().equals(staNoNow)){
+ TaskWrk taskWrk = deviceDetection(rgvStn);
+ if (taskWrk!=null){
+ if ()
+ }
+ }
+ }
+ }
+ if (!sign){
+ // 鍗婅竟鍖哄煙鍐呭彇璐т换鍔�
+ for (Integer staNoNow : rangeList){
+ for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()){
+ if (rgvStn.getStaNo().equals(staNoNow)){
+ sign = taskGenerate(rgvSlave,rgvStn,0);
+ break;
+ }
+ }
+ if (sign){
+ break;
+ }
+ }
+ }
+ if (!sign){
+ // 鍗婅竟鍖哄煙鍐呮斁璐т换鍔�
+ for (Integer staNoNow : rangeListOther){
+ for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()){
+ if (rgvStn.getStaNo().equals(staNoNow)){
+
+ break;
+ }
+ }
+ if (sign){
+ break;
+ }
+ }
+ }
+ //鍒囨崲B
+ continue;
+ } else {//b 鏈変换鍔�
+
+ // 鍙敤鍖哄煙浠诲姟
+ // 鍙敤鍖哄煙浠诲姟鍐呭彇璐т换鍔�
+ //鍒囨崲B
+
+ continue;
+ }
+ break;
+ } else {
+ //鍙敤鍖哄煙灏辫繎鍙栬揣
+ }
+ }
+ } catch (Exception e){
+ log.error("浠诲姟鐢熸垚澶辫触===銆嬪紓甯镐俊鎭細{}",e.getMessage());
+ }
+ }
+ }
+ //鑾峰彇璧风偣涓庣粓鐐瑰璞�
+ public RgvSlave.RgvStn getRgvStnNow(RgvSlave rgvSlave,Integer staNo) {
+ for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()){
+ if (rgvStn.getStaNo().equals(staNo)){
+ return rgvStn;
+ }
+ }
+ for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvOutSta()){
+ if (rgvStn.getStaNo().equals(staNo)){
+ return rgvStn;
+ }
+ }
+ return null;
+ }
+
+ //鑾峰彇璧风偣涓庣粓鐐瑰璞�
+ public RgvSlave.RgvStn[] getRgvStnAll(RgvSlave rgvSlave,Integer souSta,Integer endSta) {
+ RgvSlave.RgvStn[] rgvStns = new RgvSlave.RgvStn[2];
+ for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()){
+ if (rgvStn.getStaNo().equals(souSta)){
+ rgvStns[0] = rgvStn;
+ }
+ }
+ for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvOutSta()){
+ if (rgvStn.getStaNo().equals(endSta)){
+ rgvStns[1] = rgvStn;
+ }
+ }
+ return rgvStns;
+ }
+
+ public boolean taskGenerate(RgvSlave rgvSlave,RgvSlave.RgvStn rgvStn,Integer sign) {
+ try{
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+ TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
+
+ TaskProtocol issuedTake = new TaskProtocol();
+ TaskProtocol issuedPut = new TaskProtocol();
+ try{
+ ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
+ if (allTaskProtocol.size() > 0){
+ return false;
+ }
+ TaskWrk taskWrk = deviceDetection(rgvStn);
+ if (taskWrk == null){
+ return false;
+ }
+ Integer targetPointConvert = taskWrk.getTargetPointConvert();
+ if (targetPointConvert == null){
+ return false;
+ }
+ RgvSlave.RgvStn rgvStnEnd = getRgvStnNow(rgvSlave, targetPointConvert);
+ if (rgvStnEnd == null){
+ return false;
+ }
+
+ BasDevpPosition basDevpPositionSou = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStn.getStaNo()));
+ BasDevpPosition basDevpPositionEnd = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", targetPointConvert));
+ //鎵ц
+ issuedTake.setTaskNo(Long.valueOf(taskWrk.getTaskNo()));
+ issuedTake.setTaskStatus(1);
+ issuedTake.setTaskNoDirection(issuedTake.gettaskNoDirection$(issuedTake.getTaskNo(),issuedTake.getTaskStatus()));
+ issuedTake.setTargetPosition(basDevpPositionSou.getPlcPosition());
+ issuedTake.setIsRunning(1);
+ issuedTake.setDirection(rgvStn.isDirection());
+
+
+ issuedPut.setTaskNo(Long.valueOf(taskWrk.getTaskNo()));
+ issuedPut.setTaskStatus(2);
+ issuedPut.setTaskNoDirection(issuedPut.gettaskNoDirection$(issuedPut.getTaskNo(),issuedPut.getTaskStatus()));
+ issuedPut.setTargetPosition(basDevpPositionEnd.getPlcPosition());
+ issuedPut.setIsRunning(1);
+ issuedPut.setDirection(rgvStnEnd.isDirection());
+ }catch (Exception e){
+ log.error("浠诲姟鐢熸垚澶辫触issued1===銆嬪紓甯镐俊鎭細{}",e.getMessage());
+ return false;
+ }
+
+ switch (sign){
+ case 1:
+ taskProtocolCache.updateTaskProtocol(issuedTake);
+ break;
+ case 2:
+ taskProtocolCache.updateTaskProtocol(issuedPut);
+ break;
+ default:
+ taskProtocolCache.updateTaskProtocol(issuedTake);
+ taskProtocolCache.updateTaskProtocol(issuedPut);
+ break;
+ }
+ } catch (Exception e){
+ log.error("浠诲姟鐢熸垚澶辫触issued2===銆嬪紓甯镐俊鎭細{}",e.getMessage());
+ }
+ return true;
+ }
+
+
+
}
diff --git a/src/main/java/com/zy/asrs/utils/RouteUtils.java b/src/main/java/com/zy/asrs/utils/RouteUtils.java
index e9d52e4..36ac1a3 100644
--- a/src/main/java/com/zy/asrs/utils/RouteUtils.java
+++ b/src/main/java/com/zy/asrs/utils/RouteUtils.java
@@ -1,6 +1,10 @@
package com.zy.asrs.utils;
+import com.zy.asrs.entity.BasDevpPosition;
+import com.zy.asrs.entity.TaskWrk;
+import com.zy.asrs.entity.WrkMast;
import com.zy.core.enums.RouteCollectCountType;
+import com.zy.core.model.RgvSlave;
import java.util.ArrayList;
import java.util.List;
@@ -11,441 +15,33 @@
* Created by Monkey D. Luffy on 2023/7/18
*/
public class RouteUtils {
+ //鎺掑簭 鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 0:宸� 灏� 1:鍙� 澶�
+ public static List<Integer>[] avoidRange(List<Integer> staNoList,List<BasDevpPosition> basDevpPositions) {
+ List<Integer>[] avoidRangeArray = new ArrayList[2];
- public static final List<Integer> MERGE_STA_NO_One = new ArrayList<Integer>() {{
- add(171);add(116);add(117);
- }};
- public static final List<Integer> MERGE_STA_NO_TWO = new ArrayList<Integer>() {{
- add(113);add(123);add(114);add(1142);
- }};
- public static final List<Integer> MERGE_STA_NO_THREE = new ArrayList<Integer>() {{
- add(107);add(118);add(108);add(119);
- }};
- public static final List<Integer> MERGE_STA_NO_FOUR = new ArrayList<Integer>() {{
- add(110);add(120);add(111);add(121);
- }};
- public static final List<Integer> MERGE_STA_NO_FIVE = new ArrayList<Integer>() {{
- add(104);add(122);add(105);
- }};
- public static final List<Integer> MERGE_STA_NO_SIX = new ArrayList<Integer>() {{
- add(108);add(119);add(110);add(120);
- }};
+ return avoidRangeArray;
+ }
- public static final List<Integer> MERGE_STA_NO_SEVEN = new ArrayList<Integer>() {{
-
- }};
-
- public static final List<Integer> MERGE_STA_NO_EIGHT = new ArrayList<Integer>() {{
-
- }};
-
- public static final List<Integer> MERGE_STA_NO_NINE = new ArrayList<Integer>() {{
-
- }};
-
- // 姝e簭
- public static final List<Integer> TRACK_POSITION_POSITIVE_SEQUENCE1 = new ArrayList<Integer>() {{
- add(101);add(102);add(104);add(122);add(105);add(107);add(118);add(108);
- }};
- // 鍙嶅簭
- public static final List<Integer> TRACK_POSITION_REVERSE_SEQUENCE2 = new ArrayList<Integer>() {{
- add(117);add(116);add(171);add(1142);add(114);add(123);add(113);add(121);add(111);add(120);add(110);
- }};
-
- public static Integer getEndRoute(Integer endRoute,Integer rgvNo){
- if (rgvNo == 1){
- if (TRACK_POSITION_POSITIVE_SEQUENCE1.contains(endRoute)){
- return endRoute;
- } else {
- return 108;
- }
- } else if (rgvNo == 2){
- if (TRACK_POSITION_REVERSE_SEQUENCE2.contains(endRoute)){
- return endRoute;
- } else {
- return 110;
+ //鎻愬彇绔欑偣闆嗗悎
+ public static List<Integer> BasDevpPositionExtractSites(List<BasDevpPosition> basDevpPositions){
+ List<Integer> siteList = new ArrayList<>();
+ for (BasDevpPosition basDevpPosition : basDevpPositions){
+ if (!siteList.contains(basDevpPosition.getDevNo())){
+ siteList.add(basDevpPosition.getDevNo());
}
}
- return endRoute;
+ return siteList;
}
-// 姝e簭
- public static final List<Integer> TRACK_POSITION_POSITIVE_SEQUENCE = new ArrayList<Integer>() {{
- add(101);add(102);add(104);add(122);add(105);add(107);add(118);add(108);add(119);add(110);add(120);add(111);add(121);add(113);add(123);add(114);add(1142);add(171);add(116);add(117);
- }};
-// 鍙嶅簭
- public static final List<Integer> TRACK_POSITION_REVERSE_SEQUENCE = new ArrayList<Integer>() {{
- add(117);add(116);add(171);add(1142);add(114);add(123);add(113);add(121);add(111);add(120);add(110);add(119);add(108);add(118);add(107);add(105);add(122);add(104);add(102);add(101);
- }};
+ //鎻愬彇绔欑偣闆嗗悎
+ public static List<Integer> SortNearby(List<Integer> staNoList,Long rgvNowPos,List<BasDevpPosition> basDevpPositions){
+ List<Integer> siteList = new ArrayList<>();
- public static String zerofill(String msg, Integer count){
- if (msg.length() == count){
- return msg;
- } else if (msg.length() > count){
- return msg.substring(0, 16);
- } else {
- StringBuilder msgBuilder = new StringBuilder(msg);
- for (int i = 0; i<count-msg.length(); i++){
- msgBuilder.insert(0,"0");
- }
- return msgBuilder.toString();
- }
- }
-// /*
-// * 鑾峰彇骞叉秹鏈�杩滅珯鐐�
-// * */
-// public static Integer RouteIndexFarMas(int rgvNo,Integer staNo){
-// List<Integer> staFall = new ArrayList<>();
-// if (MERGE_STA_NO_SIX.contains(staNo)){
-// staFall = MERGE_STA_NO_SIX;
-// }else if (MERGE_STA_NO_One.contains(staNo)){
-// staFall = MERGE_STA_NO_One;
-// }else if (MERGE_STA_NO_TWO.contains(staNo)){
-// staFall = MERGE_STA_NO_TWO;
-// }else if (MERGE_STA_NO_THREE.contains(staNo)){
-// staFall = MERGE_STA_NO_THREE;
-// }else if (MERGE_STA_NO_FOUR.contains(staNo)){
-// staFall = MERGE_STA_NO_FOUR;
-// }else if (MERGE_STA_NO_FIVE.contains(staNo)){
-// staFall = MERGE_STA_NO_FIVE;
-// }else {
-// return staNo;
-// }
-//
-// int indexNo = 0;
-// if (rgvNo==1){
-// indexNo=staFall.size()-1;
-// }
-// return staFall.get(indexNo);
-// }
-
- /*
- * 鑾峰彇骞叉秹鏈�杩滅珯鐐�
- * */
- public static Integer RouteIndexFarMas(int rgvNo,Integer staNo){
- if (rgvNo==1){
- switch (staNo){
- case 101:
- case 102: return 102;
- case 104:
- case 122: return 118;
- case 105: return 119;
- case 107:
- case 118: return 108;
- case 108:
- case 119: return 111;
- case 110:
- case 120: return 113;
- case 111:
- case 121: return 113;
- case 113: return 114;
- case 123:
- case 114: return 1142;
- default:
- return 116;
- }
- }else {
- switch (staNo){
- case 117:
- case 116:
- case 171:
- return 1142;
- case 1142:
- case 114: return 113;
- case 123:
- case 113: return 111;
- case 121: return 110;
- case 111: return 110;
- case 120:
- case 110: return 108;
- case 119:
- case 108: return 107;
- case 118:
- case 107: return 105;
- case 105:
- case 122:
- case 104: return 104;
- default:
- return 102;
- }
- }
- }
- /*
- * 鑾峰彇骞叉秹鏈�杩滅珯鐐�
- * */
- public static Integer RouteIndexFarMasL(int rgvNo,Integer staNo){
- if (rgvNo==1){
- switch (staNo){
- case 101:
- case 102:
- case 104:
- case 122:
- case 105:
- case 107:
- return 118;
- case 118:
- return staNo;
- default:
- return 108;
- }
- }else {
- switch (staNo){
- case 117:
- case 116:
- case 171:
- case 1142:
- case 114:
- case 123:
- case 113:
- case 121:
- return 121;
- case 111:
- return staNo;
- default:
- return 110;
- }
- }
- }
-
- // 鑾峰彇褰撳墠灏忚溅鏈璧扮殑璺嚎闆嗗悎
- public static List<Integer> getRoute(Integer groupStart,Integer groupEnd){
- boolean sign = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(groupStart) < TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(groupEnd);
- List<Integer> result = new ArrayList<>();
- List<Integer> groupRoute = new ArrayList<>();
- if (sign){
- groupRoute = TRACK_POSITION_POSITIVE_SEQUENCE;
- }else {
- groupRoute = TRACK_POSITION_REVERSE_SEQUENCE;
- }
- if (groupRoute.contains(groupStart) && groupRoute.contains(groupEnd)) {
- sign = false;
- for (Integer route : groupRoute) {
- if (route.equals(groupStart)){
- sign=true;
- }
- if (route.equals(groupEnd)){
- result.add(route);
- break;
- }
- if (sign){
- result.add(route);
- }
- }
- }else {
- return null;
- }
- return result;
- }
-
- /*
- * 鑾峰彇鏈�杩滅珯鐐�
- * */
- public static Integer RouteIndexFarMas(Integer a,Integer b,Integer c,Integer d){
- int ia = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(a);
- int ib = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(b);
- int ic = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(c);
- int id = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(d);
- if (id==0){
- if (ia>ib){
- if (ia>ic){
- return a;
- }else {
- return c;
- }
- }else {
- if (ib>ic){
- return b;
- }else {
- return c;
- }
- }
- }else {
- if (ia<ib){
- if (ia<ic){
- return a;
- }else {
- return c;
- }
- }else {
- if (ib<ic){
- return b;
- }else {
- return c;
- }
- }
- }
- }
-
- /*
- * 鑾峰彇鏈�杩滅珯鐐�
- * a:褰撳墠浣嶇疆
- * b:寮�濮嬩綅缃�
- * c:缁撴潫浣嶇疆
- * d:閿佸紑濮嬩綅缃�
- * */
- public static Integer RouteIndexFarMasNew(Integer a,Integer b,Integer c,Integer d){
- int ia = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(a);
- int ib = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(b);
- int ic = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(c);
- int id = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(d);
- if (id==0){
- if (ia>ib){
- if (ia>ic){
- return a;
- }else {
- return c;
- }
- }else {
- if (ib>ic){
- return b;
- }else {
- return c;
- }
- }
- }else {
- if (ia<ib){
- if (ia<ic){
- return a;
- }else {
- return c;
- }
- }else {
- if (ib<ic){
- return b;
- }else {
- return c;
- }
- }
- }
- }
-
- public static Integer[] RouteIndexFarArr(Integer a,Integer b,Integer c,Integer d){
- int ia = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(a);
- int ib = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(b);
- int ic = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(c);
- int id = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(d);
- return new Integer[]{ia,ib,ic,id};
- }
-
- /*
- * a 灏忚溅褰撳墠浣嶇疆
- * b 灏忚溅浠诲姟寮�濮嬩綅缃�
- * c 灏忚溅浠诲姟缁撴潫浣嶇疆
- * d 灏忚溅鍒濆浣嶇疆
- * 鑾峰彇鏈�澶ц矾寰勫樊鍊�
- * */
- public static List<Integer> RouteMapCurrentFar(Integer a,Integer b,Integer c,Integer d){
- Integer farStn = RouteIndexFarMas(a, b, c, d);
- return getRouteIntersection(TRACK_POSITION_POSITIVE_SEQUENCE,getRoute(farStn, d), RouteCollectCountType.DIFFERENCESET);
- }
-
- public static List<Integer> RouteMapCurrentFar(Integer farStn,Integer d){
- return getRouteIntersection(TRACK_POSITION_POSITIVE_SEQUENCE,getRoute(farStn, d), RouteCollectCountType.DIFFERENCESET);
- }
-
- /*
- * 鍙︿竴鍙板皬杞︽渶杩滀綅缃�
- * */
- public static Integer RouteMapOtherFarStnNo(List<Integer> routeDIFF,Integer d){
- int id = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(d);
- if (id==0){
- return routeDIFF.get(0);
- }else {
- int size = routeDIFF.size();
- return routeDIFF.get(size-1);
- }
- }
-
- //鏄惁鏈変氦闆�
- public static boolean getRouteBoolean(List<Integer> groupCurrent,List<Integer> groupOther){
- for (Integer positionCurrent : groupCurrent){
- for (Integer positionOther : groupOther){
- if (positionCurrent.equals(positionOther)){
- return true;
- }
- }
- }
- return false;
- }
-
- //闆嗗悎杩愮畻
- public static List<Integer> getRouteIntersection(List<Integer> groupCurrent, List<Integer> groupOther, RouteCollectCountType routeCollectCountType){
- switch (routeCollectCountType){
- case INTERSECTION:
- //浜ら泦
- return groupCurrent.stream().filter(item -> groupOther.contains(item)).collect(toList());
- case DIFFERENCESET:
- //宸泦
- return groupCurrent.stream().filter(item -> !groupOther.contains(item)).collect(toList());
- case UNION:
- //骞堕泦
- groupCurrent.addAll(groupOther);
- return groupCurrent;
- case DEDUPLICATIONUNION:
- //鍘婚噸骞堕泦
- groupCurrent.addAll(groupOther);
- return groupCurrent.stream().distinct().collect(toList());
- default:
- return null;
- }
- }
-
- /*
- * a 灏忚溅褰撳墠浣嶇疆
- * b 灏忚溅浠诲姟寮�濮嬩綅缃�
- * c 灏忚溅浠诲姟缁撴潫浣嶇疆
- * sign 鍙︿竴涓皬杞︾┖闂叉爣璁�
- * */
- public static boolean RouteAutoBoolean(Integer a,Integer b,Integer c,Integer aa,Integer bb,Integer cc,boolean idleOther){
- List<Integer> routeCurrent = getRouteIntersection(getRoute(a, c), getRoute(b, c), RouteCollectCountType.DEDUPLICATIONUNION);//骞堕泦
- List<Integer> routeOther = getRouteIntersection(getRoute(aa, cc), getRoute(bb, cc), RouteCollectCountType.DEDUPLICATIONUNION);//
- return !getRouteBoolean(routeCurrent, routeOther); //鏄惁鏈変氦闆�
- }
-
- public static List<Integer> RouteAutoBoolean(Integer a,Integer b,Integer c){
- return getRouteIntersection(getRoute(a, c), getRoute(b, c), RouteCollectCountType.DEDUPLICATIONUNION);
- }
-
-
-
- public static void main(String[] arge){
- List<Integer> routeCurrent = getRoute(104, 119); //鑾峰彇褰撳墠灏忚溅璺緞
- List<Integer> routeOther = getRoute(117, 118); //鑾峰彇鍏跺畠灏忚溅璺緞
- System.out.println("褰撳墠灏忚溅璺緞:\t"+routeCurrent);
- System.out.println("鍏跺畠灏忚溅璺緞:\t"+routeOther);
-
- boolean routeBoolean = getRouteBoolean(routeCurrent, routeOther); //鏄惁鏈変氦闆�
- System.out.println("鏄惁鏈変氦闆�:\t"+routeBoolean);
-
- List<Integer> routeIntersection = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.INTERSECTION);//浜ら泦
- System.out.println("璺緞浜ら泦锛歕t"+routeIntersection);
-
- List<Integer> routeIntersection1 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DIFFERENCESET);//宸泦
- System.out.println("璺緞宸泦锛歕t"+routeIntersection1);
-
- List<Integer> routeIntersection2 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.UNION);//骞堕泦
- System.out.println("璺緞骞堕泦锛歕t"+routeIntersection2);
-
- List<Integer> routeIntersection3 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DEDUPLICATIONUNION);//鍘婚噸骞堕泦
- System.out.println("璺緞鍘婚噸骞堕泦锛歕t"+routeIntersection3);
-
- System.out.println(RouteAutoBoolean(101,104,119,114,116,120,true));
-
- List<Integer> routeDIFF = RouteMapCurrentFar(114, 104, 119, 117);
- System.out.println("褰撳墠璺緞鏈�澶ч泦鍚堬細\t"+ routeDIFF);
-
- Integer routeFarOther= RouteMapOtherFarStnNo(routeDIFF,117);
- System.out.println("鍙︿竴鍙板皬杞︽渶杩滅珯鐐癸細\t"+routeFarOther);
-
-
- Integer[] integers = RouteIndexFarArr(114, 104, 119, 101);
- for (Integer integer:integers){
- System.out.println(integer);
- }
+ return siteList;
}
}
diff --git a/src/main/java/com/zy/asrs/utils/TrackRangeUtils.java b/src/main/java/com/zy/asrs/utils/TrackRangeUtils.java
new file mode 100644
index 0000000..2be2744
--- /dev/null
+++ b/src/main/java/com/zy/asrs/utils/TrackRangeUtils.java
@@ -0,0 +1,49 @@
+package com.zy.asrs.utils;
+
+import com.zy.core.cache.RgvStatusCache;
+import com.zy.core.model.RgvSlave;
+import com.zy.core.model.protocol.RgvProtocol;
+
+/**
+ * Created by Monkey D. Luffy on 2023/7/18
+ */
+public class TrackRangeUtils {
+
+ public boolean IsItSmall(RgvSlave slave) {
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+ if (rgvProtocol.getRgvPos() < rgvProtocolOther.getRgvPos()) {
+ return true;
+ }
+ return false;
+ }
+
+ public Long[][] avoidRange(RgvSlave slave, Long trackEntireLength, Long trackBenchmark, Long avoidDistance) {
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+
+ RgvProtocol rgvProtocolE, rgvProtocolB;
+ if (rgvProtocol.getRgvPos() < rgvProtocolOther.getRgvPos()) {
+ rgvProtocolE = rgvProtocolOther;
+ rgvProtocolB = rgvProtocol;
+ } else {
+ rgvProtocolE = rgvProtocol;
+ rgvProtocolB = rgvProtocolOther;
+ }
+
+ long entireLengthE = trackEntireLength - rgvProtocolE.getCarBodyKunPeng();
+ long benchmarkE = trackBenchmark + rgvProtocolB.getCarBodyJiaoMing() + rgvProtocolB.getCarBodyKunPeng() + avoidDistance + rgvProtocolE.getCarBodyJiaoMing();
+
+ long entireLengthB = trackEntireLength - rgvProtocolE.getCarBodyKunPeng() - rgvProtocolE.getCarBodyJiaoMing() - avoidDistance - rgvProtocolB.getCarBodyKunPeng();
+ long benchmarkB = trackBenchmark + rgvProtocolB.getCarBodyJiaoMing();
+
+
+ return new Long[][]{new Long[]{entireLengthE, benchmarkE}, new Long[]{entireLengthB, benchmarkB}};
+
+ }
+
+ public boolean avoidRange(Long avoid, Long[] range) {
+ return avoid < range[0] && avoid > range[1];
+ }
+
+}
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index f3a40ba..1408c99 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -51,6 +51,9 @@
// 鍫嗗灈鏈哄紓甯镐俊鎭褰�
mainService.recCrnErr();
+ // 浠诲姟涓嬪彂
+ mainService.taskStart();
+
} catch (Exception e) {
diff --git a/src/main/java/com/zy/core/cache/TaskProtocolCache.java b/src/main/java/com/zy/core/cache/TaskProtocolCache.java
index 50fa398..f4d7519 100644
--- a/src/main/java/com/zy/core/cache/TaskProtocolCache.java
+++ b/src/main/java/com/zy/core/cache/TaskProtocolCache.java
@@ -15,7 +15,7 @@
@Slf4j
public class TaskProtocolCache {
// 鏈湴缂撳瓨锛岄敭涓� taskNo锛屽�间负 TaskProtocol
- private final ConcurrentHashMap<Long, TaskProtocol> cache = new ConcurrentHashMap<>();
+ private final ConcurrentHashMap<String, TaskProtocol> cache = new ConcurrentHashMap<>();
// 璇诲啓閿侊紝纭繚绾跨▼瀹夊叏
// private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
@@ -24,28 +24,16 @@
* 鏇存柊璁惧鐘舵��
*/
public void updateTaskProtocol(TaskProtocol status) {
- cache.put(status.getTaskNo(), status);
+ cache.put(status.getTaskNoDirection(), status);
}
/**
* 鍒犻櫎浠诲姟缂撳瓨
*/
- public TaskProtocol removeTaskProtocol(String taskNo) {
+ public TaskProtocol removeTaskProtocol(String taskNoDirection) {
// 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);
+ return cache.remove(taskNoDirection);
} finally {
// lock.readLock().unlock(); // 閲婃斁璇婚攣
}
@@ -54,7 +42,7 @@
/**
* 鑾峰彇鎵�鏈変换鍔�
*/
- public ConcurrentHashMap<Long, TaskProtocol> getAllTaskProtocol() {
+ public ConcurrentHashMap<String, TaskProtocol> getAllTaskProtocol() {
// lock.readLock().lock(); // 鍔犺閿�
try {
return new ConcurrentHashMap<>(cache); // 杩斿洖鍓湰
@@ -74,6 +62,10 @@
}
return new ArrayList<>();
}
+
+ /**
+ * 鑾峰彇鎵�鏈夊彇浠诲姟
+ */
public List<TaskProtocol> getAllTakeTaskProtocol() {
// lock.readLock().lock(); // 鍔犺閿�
try {
@@ -90,7 +82,7 @@
}
/**
- * 鑾峰彇鎵�鏈夊彇浠诲姟
+ * 鑾峰彇鎵�鏈夋斁浠诲姟
*/
public List<TaskProtocol> getAllPutTaskProtocol() {
// lock.readLock().lock(); // 鍔犺閿�
@@ -108,7 +100,7 @@
}
/**
- * 鑾峰彇鎵�鏈夊彇浠诲姟
+ * 鑾峰彇鎵�鏈夎璧颁换鍔�
*/
public List<TaskProtocol> getAllWalkTaskProtocol() {
// lock.readLock().lock(); // 鍔犺閿�
diff --git a/src/main/java/com/zy/core/model/RgvSlave.java b/src/main/java/com/zy/core/model/RgvSlave.java
index 59b78ca..6ce92ff 100644
--- a/src/main/java/com/zy/core/model/RgvSlave.java
+++ b/src/main/java/com/zy/core/model/RgvSlave.java
@@ -29,7 +29,8 @@
private Long carBodyKunPeng;
// RGV鍏ュ簱婧愮珯鐐�
- private List<RgvStn> rgvInSStn = new ArrayList<>();
+ private List<RgvStn> rgvInSta = new ArrayList<>();
+ private List<RgvStn> rgvOutSta = new ArrayList<>();
@Data
public static class RgvStn {
@@ -40,6 +41,9 @@
// RGV绔欑偣缂栧彿
private Integer staNo;
+ // RGV绔欑偣缂栧彿
+ private boolean direction;
+
// // 鎺�
// private Integer row;
//
diff --git a/src/main/java/com/zy/core/model/protocol/TaskProtocol.java b/src/main/java/com/zy/core/model/protocol/TaskProtocol.java
index 1e36720..927d04d 100644
--- a/src/main/java/com/zy/core/model/protocol/TaskProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/TaskProtocol.java
@@ -7,27 +7,42 @@
*/
@Data
public class TaskProtocol {
+ private volatile String taskNoDirection; // 浠诲姟鍙凤紙涓诲睘鎬э級
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锛氭斁
+ private volatile boolean direction; // 鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+
public TaskProtocol(){}
- public TaskProtocol(Long taskNo, Long targetPosition, Long currentPosition, int isRunning, int taskStatus) {
+ public TaskProtocol(Long taskNo, Long targetPosition, int isRunning, int taskStatus, boolean direction) {
this.taskNo = taskNo;
this.targetPosition = targetPosition;
- this.currentPosition = currentPosition;
this.isRunning = isRunning;
this.taskStatus = taskStatus;
+ this.direction = direction;
}
public TaskProtocol(TaskProtocol taskProtocol) {
this.taskNo = taskProtocol.getTaskNo();
this.targetPosition = taskProtocol.getTargetPosition();
this.taskStatus = taskProtocol.getTaskStatus();
+ this.direction = taskProtocol.direction;
+ }
+
+
+ public String gettaskNoDirection$(Long taskNo,int taskStatus){
+ String taskStatusStr = "Walk";
+ switch (taskStatus){
+ case 1:
+ taskStatusStr = "Tack";
+ case 2:
+ taskStatusStr = "Put";
+ }
+ return taskNo+"_"+taskStatusStr;
}
}
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 15214fe..6c86c58 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -13,6 +13,7 @@
import com.zy.asrs.service.BasRgvOptService;
import com.zy.asrs.service.BasRgvService;
import com.zy.asrs.utils.RouteUtils;
+import com.zy.asrs.utils.TrackRangeUtils;
import com.zy.core.ThreadHandler;
import com.zy.core.cache.*;
import com.zy.core.enums.RgvModeType;
@@ -44,7 +45,7 @@
private SiemensS7Net siemensNet;
private RgvSlave slave;
-// private RgvProtocol rgvProtocol;
+ // private RgvProtocol rgvProtocol;
private TaskProtocolCache taskProtocolCache = new TaskProtocolCache();
// # 杞ㄩ亾鎬婚暱
private Long trackEntireLength = 100L;
@@ -70,7 +71,7 @@
@SuppressWarnings("InfiniteLoopStatement")
public void run() {
boolean connect = this.connect();
- if (connect){
+ if (connect) {
// 鍚姩璇绘暟鎹嚎绋�
new Thread(this::readStatusRgv).start();
@@ -83,7 +84,7 @@
}
}
- private void readStatusRgv(){
+ private void readStatusRgv() {
while (true) {
try {
Thread.sleep(100);
@@ -91,7 +92,7 @@
readStatus();
} catch (Exception e) {
- log.error("RGV鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛�"+e.getMessage());
+ log.error("RGV鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛�" + e.getMessage());
initRgv();
// e.printStackTrace();
}
@@ -109,7 +110,7 @@
// 浼戠湢 1 绉�
Thread.sleep(100);
- if (!deviceDetection()){
+ if (!deviceDetection()) {
continue;
}
RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
@@ -130,7 +131,7 @@
RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
} catch (Exception e) {
- log.error("RGV琛岃蛋浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�"+e.getMessage());
+ log.error("RGV琛岃蛋浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�" + e.getMessage());
// e.printStackTrace();
}
}
@@ -144,7 +145,7 @@
try {
// 浼戠湢 1 绉�
Thread.sleep(100);
- if (!deviceDetection()){
+ if (!deviceDetection()) {
continue;
}
RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
@@ -159,36 +160,36 @@
}
List<TaskProtocol> allTakeTaskProtocol = taskProtocolCache.getTakeOrPutTaskProtocol(rgvProtocol.getLoaded());
- for(TaskProtocol taskProtocol: allTakeTaskProtocol){
- if (taskProtocol.getIsRunning() == 1){//鍑嗗涓嬪彂
+ for (TaskProtocol taskProtocol : allTakeTaskProtocol) {
+ if (taskProtocol.getIsRunning() == 1) {//鍑嗗涓嬪彂
RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
//鍙岃溅
- if (rgvOtherStatusEnable()){
+ if (rgvOtherStatusEnable()) {
//鍙︿竴鍙拌溅鏄惁鍏佽姝ゅ彴杞︽墽琛�
- if (!otherRgvAvoid(taskProtocol.getTargetPosition())){
+ if (!otherRgvAvoid(taskProtocol.getTargetPosition())) {
continue;
}
}
- Thread.sleep(200);
+ Thread.sleep(100);
TaskProtocol issued = new TaskProtocol(taskProtocol);
write(issued);
- taskProtocol.setIsRunning(taskProtocol.getIsRunning() +1);
+ taskProtocol.setIsRunning(taskProtocol.getIsRunning() + 1);
taskProtocolCache.updateTaskProtocol(taskProtocol);
break;
}
}
} catch (Exception e) {
- log.error("RGV鍙栬揣浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�"+e.getMessage());
+ log.error("RGV鍙栬揣浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�" + e.getMessage());
// e.printStackTrace();
}
}
}
- public boolean deviceDetection(){
+ public boolean deviceDetection() {
RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
- if (rgvProtocol == null || rgvTaskProtocol ==null) {
+ if (rgvProtocol == null || rgvTaskProtocol == null) {
return false;
}
if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1 || rgvProtocol.getRgvPosDestination() == 0L
@@ -201,20 +202,20 @@
if (rgvProtocolOther == null) {
return false;
}
- if (rgvProtocolOther.statusEnable){
- if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L) || rgvTaskProtocolOther.getAvoid() == -1 || rgvProtocolOther.getRgvPosDestination() == 0L) {
+ if (rgvProtocolOther.statusEnable) {
+ if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L) || rgvTaskProtocolOther.getAvoid() == -1 || rgvProtocolOther.getRgvPosDestination() == 0L) {
return false;
}
}
return true;
}
- public boolean rgvOtherStatusEnable(){
+ public boolean rgvOtherStatusEnable() {
RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
if (rgvProtocolOther == null) {
return true;
}
- if (rgvProtocolOther.statusEnable){
+ if (rgvProtocolOther.statusEnable) {
// if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L)) {
return true;
// }
@@ -222,134 +223,118 @@
return false;
}
- public boolean otherRgvAvoid(Long targetPosition){
+ public boolean otherRgvAvoid(Long targetPosition) {
RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+ RgvTaskProtocol rgvTaskProtocolOther = RgvTaskCache.getRgvStatus(slave.getOtherId());
+ Long[][] avoidRange = new TrackRangeUtils().avoidRange(slave, trackEntireLength, trackBenchmark, avoidDistance);
- if (rgvProtocol.getRgvPos()<rgvProtocolOther.getRgvPos()){
- if (rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE)){
- if ((rgvProtocolOther.getRgvPos()-rgvProtocolOther.getCarBodyJiaoMing())
- - (targetPosition+rgvProtocol.getCarBodyKunPeng())
- > avoidDistance){//鏃犻渶閬胯
+ if (new TrackRangeUtils().IsItSmall(slave)) {
+
+ if (rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE)) {
+ if ((rgvProtocolOther.getRgvPos() - rgvProtocolOther.getCarBodyJiaoMing())
+ - (targetPosition + rgvProtocol.getCarBodyKunPeng())
+ > avoidDistance) {//鏃犻渶閬胯
return true;
} else {
long avoid = targetPosition + rgvProtocol.getCarBodyKunPeng() + avoidDistance + rgvProtocolOther.getCarBodyJiaoMing();
- if (avoid > trackEntireLength-rgvProtocolOther.getCarBodyKunPeng()){
- log.error("閬胯瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒");
+ if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) {
+ log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒");
return false;
}
- rgvTaskProtocol.setAvoid(1);
- rgvTaskProtocol.setAvoidingTheDestination(avoid);
- RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
+ rgvTaskProtocolOther.setAvoid(1);
+ rgvTaskProtocolOther.setAvoidingTheDestination(avoid);
+ RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther);
return true;
}
- } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.ROAM)){
- if ((rgvProtocolOther.getRgvPosDestination()-rgvProtocolOther.getCarBodyJiaoMing())
- - (targetPosition+rgvProtocol.getCarBodyKunPeng())
- > avoidDistance){//鏃犻渶閬胯
+ } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.ROAM)) {
+ if ((rgvProtocolOther.getRgvPosDestination() - rgvProtocolOther.getCarBodyJiaoMing())
+ - (targetPosition + rgvProtocol.getCarBodyKunPeng())
+ > avoidDistance) {//鏃犻渶閬胯
return true;
} else {
long avoid = targetPosition + rgvProtocol.getCarBodyKunPeng() + avoidDistance + rgvProtocolOther.getCarBodyJiaoMing();
- if (avoid > trackEntireLength-rgvProtocolOther.getCarBodyKunPeng()){
- log.error("閬胯瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒");
+ if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) {
+ log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒");
return false;
}
- rgvTaskProtocol.setAvoid(1);
- rgvTaskProtocol.setAvoidingTheDestination(avoid);
- RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
+ rgvTaskProtocolOther.setAvoid(1);
+ rgvTaskProtocolOther.setAvoidingTheDestination(avoid);
+ RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther);
return true;
}
- } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.WORKING)){
- if ((rgvProtocolOther.getRgvPosDestination()-rgvProtocolOther.getCarBodyJiaoMing())
- - (targetPosition+rgvProtocol.getCarBodyKunPeng())
- > avoidDistance){//鏃犻渶閬胯
+ } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.WORKING)) {
+ if ((rgvProtocolOther.getRgvPosDestination() - rgvProtocolOther.getCarBodyJiaoMing())
+ - (targetPosition + rgvProtocol.getCarBodyKunPeng())
+ > avoidDistance) {//鏃犻渶閬胯
return true;
} else {
- RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvProtocolOther.getRgvNo());
- TaskProtocolCache taskProtocolCacheOther = rgvThreadOther.getTaskProtocolCache();
- List<TaskProtocol> allPutTaskProtocol = taskProtocolCacheOther.getAllPutTaskProtocol();
- if (allPutTaskProtocol.size() > 1){
- return false;
- }
- for (TaskProtocol taskProtocol : allPutTaskProtocol){
- if (taskProtocol.getTargetPosition()>=rgvProtocolOther.getRgvPos()){
- long avoid = rgvProtocolOther.getRgvPos()-rgvProtocolOther.getCarBodyJiaoMing()-avoidDistance-rgvProtocol.getCarBodyKunPeng();
- if (avoid > trackEntireLength-rgvProtocolOther.getCarBodyKunPeng()){
- log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒");
- return false;
- }
- rgvTaskProtocol.setAvoid(1);
- rgvTaskProtocol.setAvoidingTheDestination(avoid);
- RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
- return false;
- } else {
+ if (rgvProtocolOther.getRgvPosDestination() >= rgvProtocolOther.getRgvPos()) {
+ long avoid = rgvProtocolOther.getRgvPos() - rgvProtocolOther.getCarBodyJiaoMing() - avoidDistance - rgvProtocol.getCarBodyKunPeng();
+ if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) {
+ log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒");
return false;
}
+ rgvTaskProtocol.setAvoid(1);
+ rgvTaskProtocol.setAvoidingTheDestination(avoid);
+ RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
+ return false;
}
return false;
}
}
} else {
- if (rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE)){
- if ((targetPosition-rgvProtocol.getCarBodyJiaoMing())
- - (rgvProtocolOther.getRgvPos()+rgvProtocolOther.getCarBodyKunPeng())
- > avoidDistance){//鏃犻渶閬胯
+ if (rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE)) {
+ if ((targetPosition - rgvProtocol.getCarBodyJiaoMing())
+ - (rgvProtocolOther.getRgvPos() + rgvProtocolOther.getCarBodyKunPeng())
+ > avoidDistance) {//鏃犻渶閬胯
return true;
} else {
- long avoid = targetPosition -rgvProtocol.getCarBodyJiaoMing() - avoidDistance - rgvProtocolOther.getCarBodyKunPeng();
- if (avoid < trackBenchmark + rgvProtocolOther.getCarBodyJiaoMing()){
- log.error("閬胯瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒");
+ long avoid = targetPosition - rgvProtocol.getCarBodyJiaoMing() - avoidDistance - rgvProtocolOther.getCarBodyKunPeng();
+ if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) {
+ log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒");
return false;
}
- rgvTaskProtocol.setAvoid(1);
- rgvTaskProtocol.setAvoidingTheDestination(avoid);
- RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
+ rgvTaskProtocolOther.setAvoid(1);
+ rgvTaskProtocolOther.setAvoidingTheDestination(avoid);
+ RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther);
return true;
}
- } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.ROAM)){
- if ((targetPosition-rgvProtocol.getCarBodyJiaoMing())
- - (rgvProtocolOther.getRgvPosDestination()+rgvProtocolOther.getCarBodyKunPeng())
- > avoidDistance){//鏃犻渶閬胯
+ } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.ROAM)) {
+ if ((targetPosition - rgvProtocol.getCarBodyJiaoMing())
+ - (rgvProtocolOther.getRgvPosDestination() + rgvProtocolOther.getCarBodyKunPeng())
+ > avoidDistance) {//鏃犻渶閬胯
return true;
} else {
- long avoid = targetPosition -rgvProtocol.getCarBodyJiaoMing() - avoidDistance - rgvProtocolOther.getCarBodyKunPeng();
- if (avoid < trackBenchmark + rgvProtocolOther.getCarBodyJiaoMing()){
- log.error("閬胯瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒");
+ long avoid = targetPosition - rgvProtocol.getCarBodyJiaoMing() - avoidDistance - rgvProtocolOther.getCarBodyKunPeng();
+ if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) {
+ log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒");
return false;
}
- rgvTaskProtocol.setAvoid(1);
- rgvTaskProtocol.setAvoidingTheDestination(avoid);
- RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
+ rgvTaskProtocolOther.setAvoid(1);
+ rgvTaskProtocolOther.setAvoidingTheDestination(avoid);
+ RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther);
return true;
}
- } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.WORKING)){
- if ((targetPosition-rgvProtocol.getCarBodyJiaoMing())
- - (rgvProtocolOther.getRgvPosDestination()+rgvProtocolOther.getCarBodyKunPeng())
- > avoidDistance){//鏃犻渶閬胯
+
+ } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.WORKING)) {
+ if ((targetPosition - rgvProtocol.getCarBodyJiaoMing())
+ - (rgvProtocolOther.getRgvPosDestination() + rgvProtocolOther.getCarBodyKunPeng())
+ > avoidDistance) {//鏃犻渶閬胯
return true;
} else {
- RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvProtocolOther.getRgvNo());
- TaskProtocolCache taskProtocolCacheOther = rgvThreadOther.getTaskProtocolCache();
- List<TaskProtocol> allPutTaskProtocol = taskProtocolCacheOther.getAllPutTaskProtocol();
- if (allPutTaskProtocol.size() > 1){
- return false;
- }
- for (TaskProtocol taskProtocol : allPutTaskProtocol){
- if (taskProtocol.getTargetPosition()<=rgvProtocolOther.getRgvPos()){
- long avoid = rgvProtocolOther.getRgvPos()+rgvProtocolOther.getCarBodyKunPeng()+avoidDistance+rgvProtocol.getCarBodyJiaoMing();
- if (avoid < trackBenchmark + rgvProtocolOther.getCarBodyJiaoMing()){
- log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒");
- return false;
- }
- rgvTaskProtocol.setAvoid(1);
- rgvTaskProtocol.setAvoidingTheDestination(avoid);
- RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
- return false;
- } else {
+ if (rgvProtocolOther.getRgvPosDestination() <= rgvProtocolOther.getRgvPos()) {
+ long avoid = rgvProtocolOther.getRgvPos() + rgvProtocolOther.getCarBodyKunPeng() + avoidDistance + rgvProtocol.getCarBodyJiaoMing();
+ if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) {
+ log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒");
return false;
}
+ rgvTaskProtocol.setAvoid(1);
+ rgvTaskProtocol.setAvoidingTheDestination(avoid);
+ RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
+ return false;
}
return false;
}
@@ -368,25 +353,25 @@
rgvProtocol.setRgvNo(slave.getId());
}
rgvProtocol.setMode((short) -1);
- rgvProtocol.setStatus((short)-1);
- rgvProtocol.setWalkPos((short)0);
+ rgvProtocol.setStatus((short) -1);
+ rgvProtocol.setWalkPos((short) 0);
rgvProtocol.setRgvPos(0L);
- rgvProtocol.setAlarm((short)0);
+ rgvProtocol.setAlarm((short) 0);
rgvProtocol.setxSpeed((short) 0);
rgvProtocol.setxDistance((short) 0);
rgvProtocol.setxDuration((short) 0);
rgvProtocol.setCarBodyJiaoMing(0L);
rgvProtocol.setCarBodyKunPeng(0L);
- try{
+ try {
BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
BasRgv rgv = basRgvService.selectById(slave.getId());
- if (!Cools.isEmpty(rgv)){
+ if (!Cools.isEmpty(rgv)) {
rgvProtocol.setStatusEnable(rgv.getStatus() == 1);
} else {
rgvProtocol.setStatusEnable(false);
}
- } catch (Exception e){
- log.error("RGV寮傚父锛侊紒锛�"+e.getMessage());
+ } catch (Exception e) {
+ log.error("RGV寮傚父锛侊紒锛�" + e.getMessage());
rgvProtocol.setStatusEnable(true);
}
@@ -411,7 +396,7 @@
siemensNet.setRack(slave.getRack().byteValue());
siemensNet.setSlot(slave.getSlot().byteValue());
OperateResult connect = siemensNet.ConnectServer();
- if(connect.IsSuccess){
+ if (connect.IsSuccess) {
result = true;
// 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.info("RGV plc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
@@ -428,7 +413,7 @@
/**
* 璇诲彇鐘舵��
*/
- private void readStatus(){
+ private void readStatus() {
try {
OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 34);
if (result.IsSuccess) {
@@ -446,7 +431,7 @@
// rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40));
// rgvProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
- OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+ 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)) {
@@ -463,18 +448,18 @@
// 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
BasRgv basRgv = basRgvService.selectById(slave.getId());
- if (!Cools.isEmpty(basRgv)){
+ 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))){
+ 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) {
}
@@ -512,6 +497,7 @@
// array[4] = command.getDestinationStaNo();
// array[10] = taskProtocol.getCommand();
OperateResult result = siemensNet.Write("DB100.0", taskProtocol.getTaskNo());
+ OperateResult result1 = siemensNet.Write("DB100.1", taskProtocol.isDirection()); // 鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
// if (taskProtocol.getAckFinish1() == 0) {
// short commandFinish = 3; //宸ヤ綅1銆�2浠诲姟鍚屾椂鍐欏叆
@@ -531,13 +517,14 @@
null,
null,
null,
- result.IsSuccess? 1 : 0,
+ result.IsSuccess ? 1 : 0,
null,
new Date(),
null
);
bean.insert(basRgvOpt);
- } catch (Exception ignore) {}
+ } catch (Exception ignore) {
+ }
if (result != null && result.IsSuccess) {
Thread.sleep(200);
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 3c1c0eb..29de2ec 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -43,12 +43,25 @@
carBodyJiaoMing: 100
carBodyKunPeng: 100
#RGV婧愮珯鐐�
- rgvInSStn[0]:
+ rgvInSta[0]:
devpPlcId: ${wcs-slave.devp[0].id}
staNo: 100
- rgvInSStn[1]:
+ direction: true
+ rgvInSta[1]:
devpPlcId: ${wcs-slave.devp[0].id}
staNo: 101
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: false
+ #RGV鐩爣绔欑偣
+ rgvOutSta[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 100
+ direction: true
+ rgvOutSta[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 101
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: false
# RGV绌挎杞�2
rgv[1]:
id: 2
@@ -60,9 +73,22 @@
carBodyJiaoMing: 100
carBodyKunPeng: 100
#RGV婧愮珯鐐�
- rgvInSStn[0]:
+ rgvInSta[0]:
devpPlcId: ${wcs-slave.devp[0].id}
staNo: 100
- rgvInSStn[1]:
+ direction: true
+ rgvInSta[1]:
devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 101
\ No newline at end of file
+ staNo: 101
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: false
+ #RGV鐩爣绔欑偣
+ rgvOutSta[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 100
+ direction: true
+ rgvOutSta[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 101
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: false
\ No newline at end of file
--
Gitblit v1.9.1