From 050abb296f847e787432197c161f746c128e5956 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期六, 19 十月 2024 13:05:09 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/core/enums/RgvStatusType.java | 20 +-
src/main/java/com/zy/core/thread/RgvThread.java | 57 +++++---
src/main/java/com/zy/asrs/controller/OpenController.java | 2
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 175 ++++++++++++++++++++----
src/main/java/com/zy/asrs/entity/WrkMast.java | 2
src/main/java/com/zy/core/MainProcess.java | 6
src/main/java/com/zy/asrs/utils/SortTheExecutionOfTheCarUtil.java | 110 +++++++++++++-
src/main/java/com/zy/core/enums/RgvTaskModeType.java | 4
8 files changed, 293 insertions(+), 83 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 0468893..13cc43f 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -20,7 +20,7 @@
@Slf4j
@RestController
@RequestMapping("open/rcs")
-public class OpenController extends BaseController {
+public class OpenController extends BaseController {
private static final boolean auth = true;
public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index 70985d8..a45aa9e 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -30,7 +30,7 @@
@ApiModelProperty(value= "宸ヤ綔鍙�")
@TableId(value = "wrk_no", type = IdType.INPUT)
@TableField("wrk_no")
- private Integer wrkNo;
+ private Long wrkNo;
@ApiModelProperty(value= "")
@TableField("inv_wh")
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 5fc5a05..6ccfbbe 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3,13 +3,11 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
-import com.zy.asrs.entity.BasCircularShuttle;
-import com.zy.asrs.entity.BasDevpPosition;
-import com.zy.asrs.entity.BasRgv;
-import com.zy.asrs.entity.BasSte;
+import com.zy.asrs.entity.*;
import com.zy.asrs.service.BasCircularShuttleService;
import com.zy.asrs.service.BasDevpPositionService;
import com.zy.asrs.service.BasDevpService;
+import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.utils.SortTheExecutionOfTheCarUtil;
import com.zy.asrs.utils.Utils;
import com.zy.core.DevpThread;
@@ -21,6 +19,7 @@
import com.zy.core.model.RgvSlave;
import com.zy.core.model.SteSlave;
import com.zy.core.model.Task;
+import com.zy.core.model.command.RgvCommand;
import com.zy.core.model.command.SteCommand;
import com.zy.core.model.protocol.RgvProtocol;
import com.zy.core.model.protocol.StaProtocol;
@@ -35,10 +34,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
@@ -59,6 +55,8 @@
private BasDevpPositionService basDevpPositionService;
@Autowired
private BasCircularShuttleService basCircularShuttleService;
+ @Autowired
+ private WrkMastService wrkMastService;
/**
* 绔欑偣浠诲姟妫�娴� 涓嬪彂灏忚溅鍙栨斁浠诲姟
*/
@@ -70,7 +68,9 @@
for (BasCircularShuttle basCircularShuttle : basCircularShuttleList){
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basCircularShuttle.getRgvNo());
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol.modeType != RgvModeType.AUTO || (rgvProtocol.getStatusType() != RgvStatusType.IDLE && rgvProtocol.getStatusType() != RgvStatusType.SOS1001) ){
+ if (rgvProtocol == null) {
+ sign = true;
+ } else if (rgvProtocol.modeType != RgvModeType.AUTO || (rgvProtocol.getStatusType() != RgvStatusType.IDLE && rgvProtocol.getStatusType() != RgvStatusType.ROAM) ){
sign = true;
} else {
rgvNo = basCircularShuttle.getRgvNo();
@@ -108,39 +108,148 @@
* 绔欑偣浠诲姟妫�娴� 涓嬪彂灏忚溅鍙栨斁浠诲姟
*/
public synchronized void DevpTaskNoRun() {
- for (DevpSlave devp : slaveProperties.getDevp()) {
- // 閬嶅巻绌烘澘鍏ュ簱鍙�
- for (DevpSlave.Sta sta : devp.getInSta()) {
- // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
- StaProtocol staProtocol = devpThread.getStation().get(sta.getStaNo());
- if (staProtocol == null) {
- continue;
+ try{
+ BasCircularShuttle basCircularShuttle = basCircularShuttleService.selectOne(new EntityWrapper<BasCircularShuttle>().eq("rgv_id", 1));
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basCircularShuttle.getRgvNo());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ return;
+ }
+ List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("plc_position",false));
+ Integer devNo = SortTheExecutionOfTheCarUtil.LatelyAndLessThan(basDevpPositions, rgvProtocol.getRgvPos());
+ BasDevpPosition[] basDevpPositionsList = SortTheExecutionOfTheCarUtil.devpNoSort(basDevpPositions, devNo);
+ BasDevpPosition[] basDevpPositionsListUN = SortTheExecutionOfTheCarUtil.devpNoSortUN(basDevpPositionsList);
+ List<List<WrkMast>> wrkMastLists = getWrkMastLists(basDevpPositionsListUN);
+ //涓嬪彂浠诲姟
+ taskDown(wrkMastLists);
+ } catch (Exception e){
+ log.error("鑷姩涓嬪彂灏忚溅鍙栨斁浠诲姟澶辫触锛屽紓甯革細"+e);
+ }
+ }
+
+ //鑾峰彇灏忚溅鍙栨斁浠诲姟鍒楄〃澶辫触
+ public synchronized List<List<WrkMast>> getWrkMastLists(BasDevpPosition[] basDevpPositionsListUN) {
+ List<List<WrkMast>> wrkMastLists = new ArrayList<>();
+ try{
+ List<WrkMast> wrkMastlistA = new ArrayList<>();
+ List<WrkMast> wrkMastlistB = new ArrayList<>();
+ for (BasDevpPosition basDevpPosition : basDevpPositionsListUN){
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("sta_no", basDevpPosition.getDevNo()).eq("wrk_sts",1L));
+ if (!Cools.isEmpty(wrkMast)){
+ if (SortTheExecutionOfTheCarUtil.devpNoSortbj(basDevpPositionsListUN,wrkMast.getSourceStaNo(),wrkMast.getStaNo())){
+ wrkMastlistA.add(wrkMast);
+ } else {
+ wrkMastlistB.add(wrkMast);
+ }
+ }
+ }
+ wrkMastLists.add(wrkMastlistA);
+ wrkMastLists.add(wrkMastlistB);
+ return wrkMastLists;
+ } catch (Exception e){
+ log.error("鑾峰彇灏忚溅鍙栨斁浠诲姟鍒楄〃澶辫触锛屽紓甯革細"+e);
+ return wrkMastLists;
+ }
+ }
+
+ public synchronized void taskDown(List<List<WrkMast>> wrkMastLists) {
+ long rgvId = 0;
+ runRgv:
+ for (List<WrkMast> wrkMastList : wrkMastLists){
+ for (WrkMast wrkMast: wrkMastList){
+ rgvId++;
+ BasCircularShuttle basCircularShuttle = basCircularShuttleService.selectOne(new EntityWrapper<BasCircularShuttle>().eq("rgv_id", 1L));
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basCircularShuttle.getRgvNo());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol != null
+ && rgvProtocol.modeType == RgvModeType.AUTO
+ && (rgvProtocol.getStatusType() == RgvStatusType.IDLE || rgvProtocol.getStatusType() == RgvStatusType.ROAM)
+ && rgvProtocol.getTaskNo1()==0
+ && rgvProtocol.getAlarm() == 0){
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(rgvProtocol.getRgvNo());
+ rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setSourceStaNo1(wrkMast.getSourceStaNo().shortValue()); //宸ヤ綅1璧风偣
+ rgvCommand.setDestinationStaNo1(wrkMast.getStaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(2, rgvCommand))) {
+ //
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+ break runRgv;
+ }
+ wrkMast.setWrkSts(2L);
+ try{
+ wrkMastService.updateById(wrkMast);
+ continue ;
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触,浠诲姟鍙凤細"+wrkMast.getWrkNo());
+ }
+ break runRgv;
} else {
- staProtocol = staProtocol.clone();
+ break runRgv;
}
}
}
}
- public synchronized void loopSteCharge() {
- for (RgvSlave rgv : slaveProperties.getRgv()) {
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- BasRgv basRgv = basRgvService.selectById(rgv.getId());
- if (Cools.isEmpty(rgvProtocol, basRgv)) { continue; }
- try {
- // 鍦ㄧ嚎 绌洪棽 鏃犱綔涓氭爣璁� 涓嶅湪鍏呯數
- if (rgvProtocol.getMode() == 0
- || !rgvProtocol.statusType.equals(RgvStatusType.IDLE)
- || basRgv.getPakMk().equals("Y")
-// || steProtocol.getChargeStatus() == 1
- ) {
+ //浠诲姟瀹屾垚
+ 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;
}
- } catch (Exception e) {
- News.error("fail", e);
+ BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
+ continue;
+ }
+
+ // 鍙湁褰揜GV绛夊緟WCS纭銆佽嚜鍔�
+ if (rgvProtocol.getStatusType() == RgvStatusType.WAITING
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getTaskNo1()!=0
+ ) {
+ log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", rgvProtocol.getTaskNo1().longValue()));
+ if (Cools.isEmpty(wrkMast) || !wrkMast.getWrkSts().equals(2L)){
+ log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMast);
+ continue;
+ }
+ boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
+ if (!rgvComplete){
+ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+ break;
+ }
+ wrkMast.setWrkSts(3L);
+ wrkMastService.updateById(wrkMast);
+ }
}
+ } catch (Exception e){
+ log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e);
+ }
+ }
+
+ /*
+ * 灏忚溅澶嶄綅
+ * */
+ 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;
}
}
}
diff --git a/src/main/java/com/zy/asrs/utils/SortTheExecutionOfTheCarUtil.java b/src/main/java/com/zy/asrs/utils/SortTheExecutionOfTheCarUtil.java
index e502e64..6a3dbf6 100644
--- a/src/main/java/com/zy/asrs/utils/SortTheExecutionOfTheCarUtil.java
+++ b/src/main/java/com/zy/asrs/utils/SortTheExecutionOfTheCarUtil.java
@@ -1,5 +1,6 @@
package com.zy.asrs.utils;
+import com.zy.asrs.entity.BasDevpPosition;
import com.zy.core.enums.RouteCollectCountType;
import java.util.Arrays;
@@ -27,27 +28,106 @@
}
return ints;
}
- //鎺掑簭
- public static int ReorderSteId2(int[][] steList,int steNoStart){
- int[][] ints = new int[steList.length][2];
- int Difference = 0;
- for (int[] steNo : steList){
- if (steNo[0] == steNoStart){
- Difference = steNo[1] - 1;
+
+ //鑾峰彇鏈�杩戝苟鍦ㄥ綋鍓嶄綅缃墠杈圭殑浣嶇疆
+ public static Integer LatelyAndLessThan(List<BasDevpPosition> devpPosition, long nowPosition){
+ Integer result = 0;
+ long Difference = 1737000L;
+ for (BasDevpPosition positions : devpPosition){
+ Long position = positions.getPlcPosition();
+ if (position<=nowPosition){
+ if ((nowPosition-position) < Difference){
+ Difference = nowPosition-position;
+ result = positions.getDevNo();
+ }
+ } else {
+ if ((nowPosition-(position - 1737000L)) < Difference){
+ Difference = nowPosition-(position - 1737000L);
+ result = positions.getDevNo();
+ }
+ }
+ }
+ return result;
+ }
+ //鑾峰彇鏈�杩戝苟鍦ㄥ綋鍓嶄綅缃墠杈圭殑浣嶇疆
+ public static Long LatelyAndLessThan(long[] devpPosition,long nowPosition){
+ long result = 0L;
+ long Difference = 1737000L;
+ for (long position : devpPosition){
+ if (position<=nowPosition){
+ if ((nowPosition-position) < Difference){
+ Difference = nowPosition-position;
+ result = position;
+ }
+ } else {
+ if ((nowPosition-(position - 1737000L)) < Difference){
+ Difference = nowPosition-(position - 1737000L);
+ result = position;
+ }
+ }
+ }
+ return result;
+ }
+
+ //id鍒濆鍖�
+ public static List<BasDevpPosition> devpNoInit(List<BasDevpPosition> devpPosition){
+ long i = 0;
+ for (BasDevpPosition basDevpPosition : devpPosition){
+ i++;
+ basDevpPosition.setId(i);
+ }
+ return devpPosition;
+ }
+
+
+ //绔欑偣鎺掑簭
+ public static BasDevpPosition[] devpNoSort(List<BasDevpPosition> devpPosition1,Integer devpNo){
+ List<BasDevpPosition> devpPosition = devpNoInit(devpPosition1);
+ BasDevpPosition[] basDevpPositions = new BasDevpPosition[devpPosition.size()];
+ long Difference = 0L;
+ for (BasDevpPosition basDevpPosition : devpPosition){
+ if (basDevpPosition.getDevNo().equals(devpNo)){
+ Difference = basDevpPosition.getId() - 1L;
break;
}
}
- for (int[] steNo : steList){
- int i = steNo[1];
+ for (BasDevpPosition basDevpPosition : devpPosition){
+ long i = basDevpPosition.getId();
if (i > Difference){
- steNo[1] = i - Difference;
+ basDevpPosition.setId(i - Difference);
} else {
- steNo[1] = steList.length + i-Difference;
+ basDevpPosition.setId(devpPosition.size() + i - Difference);
}
- ints[steNo[0]-1] = steNo;
+ basDevpPositions[basDevpPosition.getId().intValue()-1] = basDevpPosition;
}
- return 0;
+ return basDevpPositions;
}
+
+ //閫嗗簭鎺掑垪
+ public static BasDevpPosition[] devpNoSortUN(BasDevpPosition[] devpPosition){
+ BasDevpPosition[] basDevpPositions = new BasDevpPosition[devpPosition.length];
+ for (BasDevpPosition basDevpPosition : devpPosition){
+ basDevpPositions[devpPosition.length - basDevpPosition.getId().intValue()] = basDevpPosition;
+ }
+ return basDevpPositions;
+ }
+
+ //閫嗗簭鎺掑垪
+ public static boolean devpNoSortbj(BasDevpPosition[] devpPosition,Integer souDevpNo,Integer endDevpNo){
+ int sou = 0;
+ int end = 0;
+ for (int i = 0;i<devpPosition.length;i++){
+ if (devpPosition[i].getDevNo().equals(souDevpNo)){
+ sou = i;
+ }
+ if (devpPosition[i].getDevNo().equals(endDevpNo)){
+ end = i;
+ }
+ }
+
+ return sou>end;
+ }
+
public static void main(String[] args) {
int[][] ints = new int[][]{{1,1},{3,3},{2,2},{4,4},{5,5},{6,6},{7,7},{8,8},{9,9},{10,10}};
@@ -55,5 +135,9 @@
for (int[] ste : reorderSteId){
System.out.println(Arrays.toString(ste));
}
+
+ long[] longs = new long[]{1L,1000L,200000L,1100000L,1600000L};
+ long l = LatelyAndLessThan(longs, 1100000L);
+ System.out.println("l:"+l);
}
}
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 21c9218..7158282 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -60,9 +60,11 @@
// 浠诲姟涓嬪彂
mainService.DevpTaskNoRun();
- // 浠诲姟涓嬪彂
- mainService.loopSteCharge();
+ // 浠诲姟瀹屾垚
+ mainService.rgvCompleteWrkMastSta();
+ //鏇存柊浣嶇疆淇℃伅
+ mainService.updateStePosition();
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/main/java/com/zy/core/enums/RgvStatusType.java b/src/main/java/com/zy/core/enums/RgvStatusType.java
index b2b59b4..ae8969e 100644
--- a/src/main/java/com/zy/core/enums/RgvStatusType.java
+++ b/src/main/java/com/zy/core/enums/RgvStatusType.java
@@ -7,14 +7,14 @@
PICK_UP_WALK(1, "鍙栬揣琛岃蛋","#2196F3"),
IN_STATION_OPERATION(2, "杩涚珯杩愯涓�","#2196F3"),
STATION_ENTRY_COMPLETED(3, "杩涚珯瀹屾垚","#2196F3"),
- PUTTING(4, "鏈夌墿寰呭嚭绔�","#2196F3"),
- WAITING1(5, "鍑虹珯琛岃蛋","#E2C027"),
- FETCHWAITING(6, "鍑虹珯璇锋眰","#2196F3"),
- SOS99(7, "鍑虹珯杩愯涓�","#2196F3"),
- SOS100(8, "鍑虹珯瀹屾垚","#2196F3"),
- SOS1001(11, "婕父","#2196F3"),
+ There_IS_something_waiting_to_leave_the_station(4, "鏈夌墿寰呭嚭绔�","#2196F3"),
+ Exit_walking(5, "鍑虹珯琛岃蛋","#E2C027"),
+ Outbound_request(6, "鍑虹珯璇锋眰","#2196F3"),
+ Outbound_operation_in_progress(7, "鍑虹珯杩愯涓�","#2196F3"),
+ Outbound_completed(8, "鍑虹珯瀹屾垚","#2196F3"),
+ ROAM(11, "婕父","#2196F3"),
WAITING(100, "浠诲姟鎵ц瀹屾垚绛夊緟纭","#2196F3"),
- SOSSUPER(999, "鏈煡","#2196F3")
+ SOS(999, "鏈煡","#2196F3")
;
public Integer id;
@@ -28,7 +28,7 @@
public static RgvStatusType get(Short id) {
if (null == id) {
- return SOSSUPER;
+ return SOS;
}
for (RgvStatusType type : RgvStatusType.values()) {
if (type.id.equals(id.intValue())) {
@@ -40,13 +40,13 @@
public static RgvStatusType get(RgvStatusType type) {
if (null == type) {
- return SOSSUPER;
+ return SOS;
}
for (RgvStatusType rgvStatusType : RgvStatusType.values()) {
if (rgvStatusType == type) {
return rgvStatusType;
}
}
- return SOSSUPER;
+ return SOS;
}
}
diff --git a/src/main/java/com/zy/core/enums/RgvTaskModeType.java b/src/main/java/com/zy/core/enums/RgvTaskModeType.java
index 01c0649..990e6fc 100644
--- a/src/main/java/com/zy/core/enums/RgvTaskModeType.java
+++ b/src/main/java/com/zy/core/enums/RgvTaskModeType.java
@@ -3,9 +3,9 @@
public enum RgvTaskModeType {
NONE(0), // 鏃�
- FETCH(1), // 鍙栬揣 锛堢┖鏉匡級鍗曞彇
+ FETCH(3), // 鍙栬揣 锛堢┖鏉匡級鍗曞彇
PUT(2), // 鏀捐揣 锛堢┖鏉匡級鍗曟斁
- FETCH_PUT(3), // 鍙栨斁璐�
+ FETCH_PUT(1), // 鍙栨斁璐�
X_MOVE(4), // 绔欎綅绉昏浆
FETCH_5(5), // 锛堢┖鏉匡級婊″彇
PUT_6(6), // 锛堢┖鏉匡級婊℃斁
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 7a15cab..0be65f8 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -72,6 +72,20 @@
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.setTaskNo1((short) 0); // 宸ヤ綔鍙�
+ command.setAckFinish1((short) 1); // 浠诲姟瀹屾垚纭浣�
+ command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡
+ command.setSourceStaNo1((short)0); // 婧愮珯
+ command.setDestinationStaNo1((short)0); // 鐩爣绔�
+ write(command);
+ break;
default:
break;
}
@@ -148,17 +162,16 @@
rgvProtocol.setRgvPos(slave.getId().longValue()*100000);
OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
- // 宸ヤ綅1澶嶄綅淇″彿
- if (rgvProtocol.getStatusType1().equals(RgvStatusType.WAITING)
- || rgvProtocol.getStatusType1().equals(RgvStatusType.FETCHWAITING)) {
- if (resetFlag1) {
- RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setAckFinish1((short)1);
- if (write(rgvCommand)) {
- resetFlag1 = false;
- }
- }
- }
+// // 宸ヤ綅1澶嶄綅淇″彿
+// if (rgvProtocol.getStatusType1().equals(RgvStatusType.WAITING)) {
+// if (resetFlag1) {
+// RgvCommand rgvCommand = new RgvCommand();
+// rgvCommand.setAckFinish1((short)1);
+// if (write(rgvCommand)) {
+// resetFlag1 = false;
+// }
+// }
+// }
try {
// 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
@@ -196,23 +209,25 @@
return false;
}
-// siemensNet.Write("DB100.20", command.getCommand());
+ siemensNet.Write("DB24.10.0", false);
+ siemensNet.Write("DB24.10.1", false);
command.setRgvNo(slave.getId());
- short[] array = new short[5];
- array[0] = command.getAckFinish1();
- array[1] = command.getTaskNo1();
+ short[] array = new short[4];
+ array[0] = command.getSourceStaNo1();
+ array[1] = command.getDestinationStaNo1();
array[2] = command.getTaskMode1();//浠诲姟妯″紡
- array[3] = command.getSourceStaNo1();
- array[4] = command.getDestinationStaNo1();
+ array[3] = command.getTaskNo1();
// siemensNet.Write("DB100.20", 0);
- OperateResult result = siemensNet.Write("DB100.0", array);
+ OperateResult result = siemensNet.Write("DB24.2", array);
- if (command.getAckFinish1() == 0) {
- short commandFinish = 1; //宸ヤ綅1浠诲姟鍐欏叆
+ if (command.getAckFinish1().equals((short)0)) {
+ boolean commandFinish = true; //宸ヤ綅1浠诲姟鍐欏叆
Thread.sleep(100L);
- result = siemensNet.Write("DB100.20", commandFinish);
+ result = siemensNet.Write("DB24.10.0", commandFinish);
+ } else {
+ siemensNet.Write("DB24.10.1", true);
}
try {
--
Gitblit v1.9.1