From fc86a263ca2ffdb0e701261ff3b1e730b2065542 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期四, 14 八月 2025 11:18:32 +0800
Subject: [PATCH] #RGV协议修改,rgv预调度,任务下发
---
src/main/java/com/zy/core/thread/RgvThread.java | 500 +++++++++++++-------
src/main/java/com/zy/asrs/controller/RgvController.java | 131 +++--
src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java | 6
src/main/java/com/zy/core/enums/RgvTaskStatusType.java | 37 +
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 489 +++++++++++++-------
src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java | 2
src/main/java/com/zy/asrs/entity/BasRgvOpt.java | 12
src/main/webapp/static/js/console.map.js | 8
src/main/java/com/zy/core/MainProcess.java | 7
src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 123 ++++
src/main/java/com/zy/core/model/command/RgvCommand.java | 80 +++
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 34
12 files changed, 973 insertions(+), 456 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java
index 3be5b88..ee4a2ac 100644
--- a/src/main/java/com/zy/asrs/controller/RgvController.java
+++ b/src/main/java/com/zy/asrs/controller/RgvController.java
@@ -35,8 +35,10 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
/**
* RGV鎺ュ彛
@@ -70,44 +72,65 @@
@PostMapping("/table/rgv/state")
@ManagerAuth(memo = "RGV淇℃伅琛�")
- public R rgvStateTable(){
+ public R rgvStateTable() {
List<RgvStateTableVo> list = new ArrayList<>();
List<BasRgv> rgvs = basRgvService.selectList(new EntityWrapper<BasRgv>().orderBy("rgv_no"));
+
for (BasRgv basRgv : rgvs) {
- // 琛ㄦ牸琛�
RgvStateTableVo vo = new RgvStateTableVo();
vo.setRgvNo(basRgv.getRgvNo()); // RGV鍙�
list.add(vo);
+
// 鑾峰彇RGV淇℃伅
RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basRgv.getRgvNo());
- if (rgvThread == null) {
- continue;
- }
+ if (rgvThread == null) continue;
+
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- continue;
- }
- vo.setStatusType(rgvProtocol.modeType.desc); // 妯″紡鐘舵��
- vo.setStatus(rgvProtocol.getStatusType().desc); // 鐘舵��
- vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 宸ヤ綅1浠诲姟鍙�
- vo.setStatus1(rgvProtocol.getStatusType1().desc); // 宸ヤ綅1鐘舵��
- vo.setLoading1(rgvProtocol.getLoaded1()==1?"鏈夌墿":"鏃犵墿"); // 宸ヤ綅1鏈夌墿
+ if (rgvProtocol == null) continue;
+
+ vo.setStatusType(rgvProtocol.modeType.desc); // 妯″紡鐘舵��
+ vo.setStatus(rgvProtocol.getStatusType().desc); // 鐘舵��
+ vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 宸ヤ綅1浠诲姟鍙�
+ vo.setStatus1(rgvProtocol.getStatusType1().desc); // 宸ヤ綅1鐘舵��
+ vo.setLoading1(rgvProtocol.getLoaded1() ? "鏈夌墿" : "鏃犵墿"); // 宸ヤ綅1鏈夌墿
vo.setRgvPos(rgvProtocol.getRgvPos());
vo.setRgvPos1(rgvProtocol.getRgvPosI());
- vo.setWalkPos(rgvProtocol.getWalkPos()==1?"鍦ㄥ畾浣�":"涓嶅湪瀹氫綅");
- vo.setPakMk(rgvThread.isPakMk()?"鏃犻攣":"閿佸畾");
-// vo.setWorkNo2(rgvProtocol.getTaskNo2()); // 宸ヤ綅2浠诲姟鍙�
-// vo.setStatus2(rgvProtocol.getStatusType2().desc); // 宸ヤ綅2鐘舵��
-// vo.setLoading2(rgvProtocol.getLoaded2()==1?"鏈夌墿":"鏃犵墿"); // 宸ヤ綅2鏈夌墿
+ vo.setWalkPos(Objects.equals(rgvProtocol.getWalkPos(), 1) ? "鍦ㄥ畾浣�" : "涓嶅湪瀹氫綅");
+ vo.setPakMk(rgvThread.isPakMk() ? "鏃犻攣" : "閿佸畾");
+ vo.setWorkNo2(rgvProtocol.getTaskNo2()); // 宸ヤ綅2浠诲姟鍙�
+ vo.setStatus2(rgvProtocol.getStatusType2().desc); // 宸ヤ綅2鐘舵��
+ vo.setLoading2(rgvProtocol.getLoaded2() ? "鏈夌墿" : "鏃犵墿"); // 宸ヤ綅2鏈夌墿
- vo.setWarnCode(String.valueOf(rgvProtocol.getAlarm()));
- if (rgvProtocol.getAlarm() > 0) {
- BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm());
- vo.setAlarm(rgvErr==null?"鏈煡寮傚父":rgvErr.getErrName());
+ // --- 閬嶅巻 errX 瀛楁鐢熸垚 warnCode 鍜� alarm ---
+ List<String> alarms = new ArrayList<>();
+ List<String> warnCodes = new ArrayList<>();
+ Field[] fields = rgvProtocol.getClass().getDeclaredFields();
+ for (Field field : fields) {
+ if (field.getName().startsWith("err") && field.getType().equals(Boolean.class)) {
+ field.setAccessible(true);
+ try {
+ Boolean value = (Boolean) field.get(rgvProtocol);
+ if (Boolean.TRUE.equals(value)) {
+ String numPart = field.getName().substring(3);
+ int errId = Integer.parseInt(numPart);
+ warnCodes.add(String.valueOf(errId));
+
+ BasRgvErr rgvErr = basRgvErrMapper.selectById(errId);
+ alarms.add(rgvErr == null ? "鏈煡寮傚父(" + errId + ")" : rgvErr.getErrName());
+ }
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ }
}
+
+ vo.setWarnCode(String.join(",", warnCodes));
+ vo.setAlarm(alarms.isEmpty() ? "" : String.join("锛�", alarms));
}
+
return R.ok().add(list);
}
+
@PostMapping("/table/rgv/msg")
@ManagerAuth(memo = "RGV鏁版嵁琛�")
@@ -171,17 +194,17 @@
public R rgvFetchPut(RgvOperatorParam param){
RgvCommand command = new RgvCommand();
command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
- command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣�
- command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
+ command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣�
+ command.setTaskNo1(0); // 宸ヤ綔鍙�
command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯
command.setDestinationStaNo1(param.getStaNo1()); // 鐩爣绔�
-// command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣�
-// command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
-// command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
-// command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
-// command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔�
- command.setCommand((short) 0);
+ command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣�
+ command.setTaskNo2(0); // 宸ヤ綔鍙�
+ command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
+ command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
+ command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔�
+ command.setCommand(true);
return rgvControl(command)? R.ok(): R.error();
}
@@ -191,17 +214,17 @@
public R rgvFetch(RgvOperatorParam param){
RgvCommand command = new RgvCommand();
command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
- command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣�
- command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
+ command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣�
+ command.setTaskNo1(0); // 宸ヤ綔鍙�
command.setTaskMode1(RgvTaskModeType.FETCH); // 浠诲姟妯″紡: 鍙栬揣
command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯
command.setDestinationStaNo1(param.getStaNo1()); // 鐩爣绔�
- command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣�
- command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
- command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
+ command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣�
+ command.setTaskNo2( 0); // 宸ヤ綔鍙�
+ command.setTaskMode2(RgvTaskModeType.FETCH); // 浠诲姟妯″紡: 鍙栨斁璐�
command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔�
- command.setCommand((short) 0);
+ command.setCommand(true);
return rgvControl(command)? R.ok(): R.error();
}
@@ -211,17 +234,17 @@
public R rgvPut(RgvOperatorParam param){
RgvCommand command = new RgvCommand();
command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
- command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣�
- command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
+ command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣�
+ command.setTaskNo1(0); // 宸ヤ綔鍙�
command.setTaskMode1(RgvTaskModeType.PUT); // 浠诲姟妯″紡: 鏀捐揣
command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯
command.setDestinationStaNo1(param.getStaNo1()); // 鐩爣绔�
- command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣�
- command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
+ command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣�
+ command.setTaskNo2( 0); // 宸ヤ綔鍙�
command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔�
- command.setCommand((short) 0);
+ command.setCommand(true);
return rgvControl(command)? R.ok(): R.error();
}
@@ -233,17 +256,17 @@
public R rgvTaskComplete(RgvOperatorParam param){
RgvCommand command = new RgvCommand();
command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
- command.setAckFinish1((short) 1); // 浠诲姟瀹屾垚纭浣�
- command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
+ command.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣�
+ command.setTaskNo1(0); // 宸ヤ綔鍙�
command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡
command.setSourceStaNo1((short) 0); // 婧愮珯
command.setDestinationStaNo1((short) 0); // 鐩爣绔�
- command.setAckFinish2((short) 1); // 浠诲姟瀹屾垚纭浣�
- command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
+ command.setAckFinish2(true); // 浠诲姟瀹屾垚纭浣�
+ command.setTaskNo2( 0); // 宸ヤ綔鍙�
command.setTaskMode2(RgvTaskModeType.NONE); // 浠诲姟妯″紡
command.setSourceStaNo2((short) 0); // 婧愮珯
command.setDestinationStaNo2((short) 0); // 鐩爣绔�
- command.setCommand((short) 0);
+ command.setCommand(true);
return rgvControl(command)? R.ok(): R.error();
}
@@ -256,17 +279,17 @@
}
RgvCommand command = new RgvCommand();
command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
- command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣�
- command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
+ command.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣�
+ command.setTaskNo1( 0); // 宸ヤ綔鍙�
command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡
command.setSourceStaNo1((short) 0); // 婧愮珯
command.setDestinationStaNo1((short) 0); // 鐩爣绔�
- command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣�
- command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
+ command.setAckFinish2(true); // 浠诲姟瀹屾垚纭浣�
+ command.setTaskNo2(0); // 宸ヤ綔鍙�
command.setTaskMode2(RgvTaskModeType.NONE); // 浠诲姟妯″紡
command.setSourceStaNo2((short) 0); // 婧愮珯
command.setDestinationStaNo2((short) 0); // 鐩爣绔�
- command.setCommand((short) 0);
+ command.setCommand(true);
return rgvControl(command)? R.ok(): R.error();
}
@@ -292,9 +315,9 @@
RgvCommand Command = new RgvCommand();
Command.setRgvNo(rgv.getId()); // RGV缂栧彿
Command.setTaskMode1(RgvTaskModeType.NONE);
- Command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣�
- Command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣�
- Command.setCommand((short) 0); // 浠诲姟瀹屾垚纭浣�
+ Command.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣�
+ Command.setAckFinish2(true); // 浠诲姟瀹屾垚纭浣�
+ Command.setCommand(true); // 浠诲姟瀹屾垚纭浣�
// 寤舵椂鍙戦��
Thread.sleep(1000L);
if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(4, Command))) {
diff --git a/src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java b/src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java
index 10191ba..dd6989b 100644
--- a/src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java
+++ b/src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java
@@ -13,7 +13,7 @@
private Integer rgvNo;
// 宸ヤ綔鍙�
- private Short workNo = 0;
+ private Integer workNo = 0;
// 鐘舵��
private String status = "-";
diff --git a/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java b/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java
index a205d5d..020f874 100644
--- a/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java
+++ b/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java
@@ -18,7 +18,7 @@
private String status = "-";
// 浠诲姟鍙�
- private Short workNo1 = 0;
+ private Integer workNo1 = 0;
// 鐘舵��
private String status1 = "-";
@@ -27,13 +27,13 @@
private String loading1 = "-";
// RGV浣嶇疆
- private Short RgvPos = 0;
+ private Integer RgvPos = 0;
// 璧拌瀹氫綅
private String walkPos = "-";
// 浠诲姟鍙�
- private Short workNo2 = 0;
+ private Integer workNo2 = 0;
// 鐘舵��
private String status2 = "-";
diff --git a/src/main/java/com/zy/asrs/entity/BasRgvOpt.java b/src/main/java/com/zy/asrs/entity/BasRgvOpt.java
index 0db9725..9a422b2 100644
--- a/src/main/java/com/zy/asrs/entity/BasRgvOpt.java
+++ b/src/main/java/com/zy/asrs/entity/BasRgvOpt.java
@@ -181,6 +181,18 @@
this.updateBy = updateBy;
}
+ public BasRgvOpt(Integer wrkNo1, Integer rgvNo, Date sendTime, String mode, Integer sourceSta, Integer posSta, Integer response, Date updateTime, Long updateBy) {
+ this.wrkNo1 = wrkNo1;
+ this.rgvNo = rgvNo;
+ this.sendTime = sendTime;
+ this.mode = mode;
+ this.sourceSta = sourceSta;
+ this.posSta = posSta;
+ this.response = response;
+ this.updateTime = updateTime;
+ this.updateBy = updateBy;
+ }
+
// BasRgvOpt basRgvOpt = new BasRgvOpt(
// null, // ID[闈炵┖]
// 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 f091010..5dd7333 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -46,7 +46,6 @@
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.*;
-import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -2699,13 +2698,13 @@
// 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
if (rgvProtocol.getStatusType() == RgvStatusType.IDLE &&
rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+ && !rgvProtocol.isLoaded1ing() //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
&& (rgvProtocol.getTaskNo1()==0)
&&rgvThread.isPakMk()
) {
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- Integer rgvNoOther = basRgvMap.getRgvNoOther(rgvProtocol.getRgvNo());
+ Integer rgvNoOther = basRgvMap.getRgvNoOther((int) rgvProtocol.getRgvNo());
RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNoOther);
RgvProtocol rgvProtocolOther = rgvThreadOther.getRgvProtocol();
if (rgvProtocolOther == null) {
@@ -2715,7 +2714,7 @@
}
if (rgvProtocolOther.getStatusType() == RgvStatusType.IDLE
&& rgvProtocolOther.getModeType() == RgvModeType.AUTO
- && rgvProtocolOther.getLoaded1()==0
+ && !rgvProtocolOther.isLoaded1ing()
&& (rgvProtocolOther.getTaskNo1()==0)
&&rgvThreadOther.isPakMk()
){
@@ -2788,7 +2787,22 @@
&& (rgvProtocol.getStatusType() == RgvStatusType.WORKING1)
){
log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
- if (rgvProtocol.getTaskNo1()!=0){
+ if(rgvProtocol.getTaskNo1() == 9999){
+ List<Integer> staNos = Arrays.asList( 1043, 1104);
+ for (Integer staNo : staNos) {
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ boolean rgvComplete = false;
+ if(!staProtocol.isLoading()){
+ rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),3);//宸ヤ綅1澶嶄綅
+ }
+ if (!rgvComplete){
+ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛佺瓑寰呭叆搴撳彇璐�",rgvProtocol.getRgvNo());
+ break;
+ }
+ }
+ }
+ if (rgvProtocol.getTaskNo1()!=0 && rgvProtocol.getTaskNo1()!=9999){
// if (rgvProtocol.getTaskNo1()==32222){
// boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
// if (!rgvComplete){
@@ -2849,9 +2863,9 @@
//鍙屽伐浣嶅嚭鍏ュ簱涓嶅悓宸ヤ綅澶嶄綅
if((sourceSta >= 1001 && sourceSta <= 1035) || (sourceSta >= 2001 && sourceSta <= 2030)){
- rgvComplete = rgvComplete(rgvProtocol.getRgvNo(),6);
+ rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),6);
}else{
- rgvComplete = rgvComplete(rgvProtocol.getRgvNo(),3);
+ rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),3);
}
if (!rgvComplete){
@@ -2883,6 +2897,8 @@
}
/**
* 鎵ц灏忚溅鎼繍浠诲姟
+ *
+ * @return
*/
public synchronized boolean rgvRunWrkMastFullSta() {
boolean wrkEnable = false;
@@ -2902,14 +2918,13 @@
continue;
}
- // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鍏ュ簱鍙栬揣
if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
&& rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getLoaded1() == 0
+ && !rgvProtocol.isLoaded1ing()
&& rgvProtocol.getTaskNo1() == 0
- && rgvProtocol.getTaskNo2() == 0
- && rgvProtocol.getLoaded2() == 0
&& rgvThread.isPakMk()
+ && rgvThread.isPakIn()
) {
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
if (basRgvMap == null) {
@@ -2920,35 +2935,10 @@
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
for (WrkMastSta wrkMastSta : wrkMastStaList){
-// if (wrkMastSta.getType()!=0 || wrkMastSta.getWrkType()!=3 || wrkMastSta.getWrkSts()!=0){//1:婊$増 3锛氬彇鏀�
-// continue;
-// }
- //鍒ゆ柇宸ヤ綔缁撴潫浣嶇疆鐘舵��
-// boolean signDev = false;
-// BasDevp devNo = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", wrkMastSta.getStaEnd()));
-// if (devNo.getDevNo()==113){
-// BasDevp devNo114 = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 114));
-// if (!Cools.isEmpty(devNo114)){
-// if (devNo114.getOutEnable().equals("Y")){
-// signDev = true;
-// }
-// }
-// }
-// if (!Cools.isEmpty(devNo)){
-// if (devNo.getAutoing().equals("Y") && !devNo.getWrkNo().equals(0) && !devNo.getLoading().equals("N")){
-// continue;
-// }
-// if (!signDev && devNo.getDevNo()==113){
-// if (!devNo.getAutoing().equals("Y") || !devNo.getWrkNo().equals(0) || !devNo.getLoading().equals("N")){
-// wrkEnable = true;
-// continue;
-// }
-// if (!devNo.getOutEnable().equals("Y")){
-// wrkEnable = true;
-// continue;
-// }
-// }
-// }
+ List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//鍏ュ簱鍙�
+ if (!staNos.contains(wrkMastSta.getStaStart())) {
+ continue;
+ }
boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
wrkEnable = true;
if (sign){
@@ -2960,12 +2950,13 @@
log.error("鏇存柊灏忚溅浠诲姟澶辫触");
}
rgvThread.setPakMk(false);
+ rgvThread.setPakOut(false);
boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
if (signMap){
return wrkEnable;
// break;
}else {
- log.error("3864琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+ log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
Thread.sleep(500);
}
} else {
@@ -2976,15 +2967,132 @@
}
}
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鍑哄簱鍙栬揣
+ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && !rgvProtocol.isLoaded2ing()
+ && rgvProtocol.getTaskNo2() == 0
+ && rgvThread.isPakMk()
+ && rgvThread.isPakOut()
+ ){
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ if (basRgvMap == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
+ continue;
+ }
+ List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
+ for (WrkMastSta wrkMastSta : wrkMastStaList){
+ List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//鍏ュ簱鍙�
+ if (staNos.contains(wrkMastSta.getStaStart())) {
+ continue;
+ }
+ boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
+ wrkEnable = true;
+ if (sign){
+ wrkMastSta.setWrkSts(1);
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ rgvThread.setPakMk(false);
+ rgvThread.setPakOut(false);
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
+ if (signMap){
+ return wrkEnable;
+// break;
+ }else {
+ log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+ Thread.sleep(500);
+ }
+ } else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+ Thread.sleep(500);
+ }
+ break;
+ }
+
+ }
+
}
-// if (!wrkEnable){
-// rgvRunWrkMastEmptyStaAvoidance();
-// }
}catch (Exception e){
- log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�");
- log.error("3875琛�"+e);
+ log.error("鎵ц灏忚溅鎼繍浠诲姟涓嬪彂澶辫触");
}
return wrkEnable;
+ }
+ /**
+ * 灏忚溅棰勮皟搴�
+ */
+ public synchronized void rgvPreScheduling(){
+ try{
+ List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
+ for (BasRgvMap rgvSlave:basRgvMaps) {
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ continue;
+ }else {
+ rgvProtocol = rgvProtocol.clone();
+ }
+ BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo());
+ continue;
+ }
+
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鎵嶈繘琛岄璋冨害
+ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && !rgvProtocol.isLoaded1ing()
+ && rgvProtocol.getTaskNo1() == 0
+ && !rgvProtocol.isLoaded2ing()
+ && rgvProtocol.getTaskNo2() == 0
+ && rgvThread.isPakMk()
+ ) {
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ if (basRgvMap == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
+ continue;
+ }
+ List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ // 閬嶅巻鍏ュ簱鍙� 鍏ュ簱棰勮皟搴�
+ List<Integer> staNos = Arrays.asList(1042, 1043, 1105, 1104);
+ for (Integer staNo : staNos) {
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ if(staProtocol.isLoading()){
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo((int) rgvProtocol.getRgvNo()); // RGV缂栧彿
+ rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(9999); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setEndStaNo1(0); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
+ if(staNo == 1042 || staNo ==1043){
+ rgvCommand.setTargetPosition1(1042); //宸ヤ綅1鐩爣绔欑偣
+ }else{
+ rgvCommand.setTargetPosition1(1105); //宸ヤ綅1鐩爣绔欑偣
+ }
+ rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Rgv, (int) rgvProtocol.getRgvNo(), new Task(4, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", (int) rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand));
+ }
+ }
+ }
+
+ }
+
+ }
+ }
+ }catch (Exception e){
+ log.error("鎵ц灏忚溅绉诲姩涓嬪彂澶辫触");
+ }
}
/**
* 鎵ц灏忚溅鎼繍浠诲姟
@@ -3118,107 +3226,107 @@
/*
* 鏈変换鍔′絾鏈墽琛� 姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃�
* */
- public synchronized void rgvRunWrkMastEmptyStaAvoidance() {
- try{
- Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
- if (integer==0){
- return;
- }
- List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
- for (BasRgvMap rgvSlave:basRgvMaps) {
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- continue;
- }else {
- rgvProtocol = rgvProtocol.clone();
- }
- BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
- if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getRgvNo());
- continue;
- }
-
- // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
- if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
- && rgvProtocol.getModeType() == RgvModeType.AUTO
- && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
- && rgvProtocol.getTaskNo1()==0
- && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
- && rgvThread.isPakMk()
-// && rgvProtocol.getTaskNo2()==0
- ){
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
- continue;
- }
-// if (rgvProtocol.getRgvNo()==1 && rgvProtocol.getRgvPosI().equals(100)){
-// continue;
-// } else if (rgvProtocol.getRgvNo()==2 && rgvProtocol.getRgvPosI().equals(157) ){
+// public synchronized void rgvRunWrkMastEmptyStaAvoidance() {
+// try{
+// Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
+// if (integer==0){
+// return;
+// }
+// List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
+// for (BasRgvMap rgvSlave:basRgvMaps) {
+// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
+// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+// if (rgvProtocol == null) {
+// continue;
+// }else {
+// rgvProtocol = rgvProtocol.clone();
+// }
+// BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
+// if (basRgv == null) {
+// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getRgvNo());
+// continue;
+// }
+//
+// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
+// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+// && rgvProtocol.getModeType() == RgvModeType.AUTO
+// && !rgvProtocol.isLoaded1ing() //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+// && rgvProtocol.getTaskNo1()==0
+// && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
+// && rgvThread.isPakMk()
+//// && rgvProtocol.getTaskNo2()==0
+// ){
+// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+// if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
// continue;
// }
- rgvAvoidanceXY(rgvProtocol.getRgvNo());
- rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2727");
- }
- }
- }catch (Exception e){
- log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
- log.error("4109琛�"+e);
- }
- }
+//// if (rgvProtocol.getRgvNo()==1 && rgvProtocol.getRgvPosI().equals(100)){
+//// continue;
+//// } else if (rgvProtocol.getRgvNo()==2 && rgvProtocol.getRgvPosI().equals(157) ){
+//// continue;
+//// }
+// rgvAvoidanceXY((int) rgvProtocol.getRgvNo());
+// rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2727");
+// }
+// }
+// }catch (Exception e){
+// log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
+// log.error("4109琛�"+e);
+// }
+// }
/*
* 灏忚溅XY绉诲姩 閬胯
* */
- public synchronized boolean rgvAvoidanceXY(Integer rgvId){
- BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo(rgvId);
- if (basRgvMap.getStartRoute() == 100 || basRgvMap.getStartRoute() == 101){
- try{
-
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- 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(basRgvMap.getStartRoute().shortValue());
- 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{
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- 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(basRgvMap.getStartRoute().shortValue());
- 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;
-
- }
- }
- }
+// public synchronized boolean rgvAvoidanceXY(Integer rgvId){
+// BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo(rgvId);
+// if (basRgvMap.getStartRoute() == 100 || basRgvMap.getStartRoute() == 101){
+// try{
+//
+// // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+// 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(basRgvMap.getStartRoute().shortValue());
+// 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{
+// // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+// 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(basRgvMap.getStartRoute().shortValue());
+// 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;
+//
+// }
+// }
+// }
/*
@@ -3229,39 +3337,80 @@
int startSta = wrkMastSta.getStaStart();
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
RgvCommand rgvCommand = new RgvCommand();
+ boolean pakIn1 = true;
+ boolean pakIn2 = true;
rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
- if((startSta >= 1001 && startSta <= 1035) || (startSta >= 2001 && startSta <= 2030)){//鍑哄簱RGV鍙栬揣
- rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
- rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
- rgvCommand.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐�
- rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅2璧风偣
- rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅2鐩爣绔欑偣
- rgvCommand.setCommand((short) 2); //宸ヤ綅1浠诲姟纭
- }else{ //鍏ュ簱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(rgvCommand.getCommand() == 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;
+ if(wrkMastSta.getWrkSts() == 1){//鍙栬揣
+ if((startSta >= 1001 && startSta <= 1035) || (startSta >= 2001 && startSta <= 2030)){//鍑哄簱RGV鍙栬揣
+ rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙�
+ rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
+ rgvCommand.setTargetPosition2(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣
+ rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
+ pakIn1 = false;
+ }else{ //鍏ュ簱RGV鍙栬揣
+ rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
+ rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
}
- }else{
- 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;
+ if(!pakIn1){
+ 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;
+ }
+ }else{
+ 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;
+ }
}
}
+ if(wrkMastSta.getWrkSts() == 2) {//鏀捐揣
+ if((startSta >= 1001 && startSta <= 1035) || (startSta >= 2001 && startSta <= 2030)){//鍑哄簱RGV鍙栬揣
+ rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙�
+ rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
+ rgvCommand.setTargetPosition2(wrkMastSta.getStaEnd()); //宸ヤ綅2鐩爣绔欑偣
+ rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
+ pakIn2 = false;
+ }else{ //鍏ュ簱RGV鍙栬揣
+ rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
+ rgvCommand.setTargetPosition1(wrkMastSta.getStaEnd()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
+ }
+ if(!pakIn2){
+ 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;
+ }
+ }else{
+ 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;
+ }
+ }
+ }
+ return true;
}catch (Exception e){
return false;
}
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 62c85cc..3fa201d 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -124,12 +124,7 @@
// RGV ===>> 灏忚溅浠诲姟浣滀笟涓嬪彂
try{
mainService.rgvRunWrkMastFullSta();
-// if (rgvIoExecuteSign){
-// k = 0;
-// } else if (k>4){
-// k = 0;
-// mainService.rgvRunWrkMastEmptyStaAvoidance();//閬胯
-// }
+ mainService.rgvPreScheduling();
}catch (Exception e){
log.error("RGV ===>> 灏忚溅浠诲姟浣滀笟涓嬪彂寮傚父"+e);
}
diff --git a/src/main/java/com/zy/core/enums/RgvTaskStatusType.java b/src/main/java/com/zy/core/enums/RgvTaskStatusType.java
new file mode 100644
index 0000000..d838ef3
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/RgvTaskStatusType.java
@@ -0,0 +1,37 @@
+package com.zy.core.enums;
+
+public enum RgvTaskStatusType {
+ NONE(0),//鏃�
+ X_MOVE(1),//琛岃蛋
+ FETCH(2),//鍙栬揣
+ PUT(3),//鏀捐揣
+ FETCH_PUT(4);//鍙栨斁璐�
+
+
+
+ public Integer id;
+ RgvTaskStatusType(Integer id) { this.id = id; }
+ public static RgvTaskStatusType get(Short id) {
+ if (null == id){
+ return null;
+ }
+ for(RgvTaskStatusType type : RgvTaskStatusType.values()){
+ if(type.id.equals(id.intValue())){
+ return type;
+ }
+ }
+ return null;
+ }
+
+ public static RgvTaskStatusType get(RgvTaskStatusType type) {
+ if (null == type){
+ return null;
+ }
+ for(RgvTaskStatusType rgvTaskStatusType : RgvTaskStatusType.values()){
+ if(rgvTaskStatusType == type){
+ return rgvTaskStatusType;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/zy/core/model/command/RgvCommand.java b/src/main/java/com/zy/core/model/command/RgvCommand.java
index 6d6eb39..6e9692d 100644
--- a/src/main/java/com/zy/core/model/command/RgvCommand.java
+++ b/src/main/java/com/zy/core/model/command/RgvCommand.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.annotation.JSONField;
import com.zy.core.enums.RgvTaskModeType;
+import com.zy.core.enums.RgvTaskStatusType;
import lombok.Data;
import java.util.Calendar;
@@ -18,10 +19,10 @@
private Integer rgvNo = 0;
// 宸ヤ綅1浠诲姟瀹屾垚纭浣�
- private Short ackFinish1 = 0;
+ private Boolean ackFinish1 = true;
// 宸ヤ綅1浠诲姟鍙�
- private Short taskNo1 = 0;
+ private Integer taskNo1 = 0;
/**
* 浠诲姟妯″紡锛�
@@ -32,8 +33,16 @@
*/
private Short taskMode1 = 0;
+ /**
+ * 浣滀笟妯″紡
+ */
+ private Short taskStatus1 = 0;
+
@JSONField(serialize = false)
private RgvTaskModeType taskModeType1;
+
+ @JSONField(serialize = false)
+ private RgvTaskStatusType taskStatusType1;
/*
宸ヤ綅1婧愮珯
@@ -45,12 +54,26 @@
*/
private Short destinationStaNo1 = 0;
+ /**
+ * 宸ヤ綅1鐩爣浣嶇疆
+ */
+ private Integer targetPosition1 = 0;
+ /**
+ * RGV鏀捐揣鍚庤揣鐗╄鍘荤殑鐩殑鍦�
+ */
+ private Integer endStaNo1 = 0;
+
+ /**
+ * 鎵ц鏂瑰悜
+ */
+ private Short direction1 = 0;
+
////////////////////// 宸ヤ綅2瀹氫箟 //////////////////////////////////////////////////
- // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
- private Short ackFinish2 = 0;
+ // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+ private Boolean ackFinish2 = true;
// 宸ヤ綅2浠诲姟鍙�
- private Short taskNo2 = 0;
+ private Integer taskNo2 = 0;
/**
* 浠诲姟妯″紡锛�
@@ -61,8 +84,16 @@
*/
private Short taskMode2 = 0;
+ /**
+ * 浣滀笟妯″紡
+ */
+ private Short taskStatus2 = 0;
+
@JSONField(serialize = false)
private RgvTaskModeType taskModeType2;
+
+ @JSONField(serialize = false)
+ private RgvTaskStatusType taskStatusType2;
/*
宸ヤ綅2婧愮珯
@@ -73,6 +104,21 @@
宸ヤ綅2鐩爣绔�
*/
private Short destinationStaNo2 = 0;
+
+ /**
+ * 宸ヤ綅2鐩爣浣嶇疆
+ */
+ private Integer targetPosition2 = 0;
+
+ /**
+ * RGV鏀捐揣鍚庤揣鐗╄鍘荤殑鐩殑鍦�
+ */
+ private Integer endStaNo2 = 0;
+
+ /**
+ * 鎵ц鏂瑰悜
+ */
+ private Short direction2 = 0;
///////////////////////////////////////////////////////////////////////////////////////
/**
@@ -81,8 +127,10 @@
* 1 = 宸ヤ綅1浠诲姟纭
* 2 = 宸ヤ綅2浠诲姟纭
* 3 = 宸ヤ綅1銆�2浠诲姟鍚屾椂纭
+ * false 鏈‘璁�
+ * true 鎵ц
*/
- private Short command = 0;
+ private Boolean command = false;
public void setTaskMode1(Short taskMode1){
this.taskMode1 = taskMode1;
@@ -104,6 +152,26 @@
this.taskMode2 = RgvTaskModeType.get(type2).id.shortValue();
}
+ public void setTaskStatus1(Short taskStatus1){
+ this.taskStatus1 = taskStatus1;
+ this.taskStatusType1 = RgvTaskStatusType.get(taskStatusType1);
+ }
+
+ public void setTaskStatus1(RgvTaskStatusType type1) {
+ this.taskStatusType1 = type1;
+ this.taskStatus1 = RgvTaskStatusType.get(type1).id.shortValue();
+ }
+
+ public void setTaskStatus2(Short taskStatus2){
+ this.taskStatus2 = taskStatus2;
+ this.taskStatusType2 = RgvTaskStatusType.get(taskStatusType2);
+ }
+
+ public void setTaskStatus2(RgvTaskStatusType type2) {
+ this.taskStatusType2 = type2;
+ this.taskStatus2 = RgvTaskStatusType.get(type2).id.shortValue();
+ }
+
public static void main(String[] args) {
Date date = new Date();
Calendar cal = Calendar.getInstance();
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 1241c1d..eb177fa 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -5,6 +5,7 @@
import com.zy.core.enums.RgvStatusType;
import lombok.Data;
+import javax.swing.*;
import java.util.HashMap;
import java.util.Map;
@@ -14,7 +15,7 @@
@Data
public class RgvProtocol implements Cloneable{
- private Integer RgvNo;
+ private short RgvNo;
/**
* 1 = 鎵嬪姩妯″紡
@@ -26,12 +27,13 @@
public RgvModeType modeType;
/**
- * RGV褰撳墠鐘舵��
+ * RGV褰撳墠鐘舵�佸伐浣�1
* 0锛氱┖闂诧紝鏃犱换鍔�
* 1锛氫綔涓氫腑
* 2锛氭姤璀�
*/
public Short status;
+
/**
* 鐘舵�佹灇涓�
@@ -41,7 +43,7 @@
/**
* 宸ヤ綅1浠诲姟鍙�
*/
- public Short taskNo1 = 0;
+ public Integer taskNo1 = 0;
/**
* RGV宸ヤ綅1褰撳墠鐘舵��
@@ -60,12 +62,18 @@
/**
* 宸ヤ綅1鏈夌墿
*/
- public Short loaded1;
+ public Boolean loaded1;
/**
* RGV褰撳墠浣嶇疆
*/
- public Short RgvPos;
+ public Integer RgvPos;
+
+ /**
+ * RGV褰撳墠鐩殑浣嶇疆
+ */
+ public Integer RgvPosDestination;
+
/**
* 璧拌鍦ㄥ畾浣�
@@ -74,11 +82,46 @@
*/
public Short walkPos;
+ /**
+ * 鎬ュ仠
+ */
+ public Boolean err1;
+
+ /**
+ * 鏈夌墿鏃犺祫鏂�
+ */
+ public Boolean err2;
+
+ /**
+ * 鏈夎祫鏂欐棤鐗�
+ */
+ public Boolean err3;
+
+ /**
+ * 鍛戒护閿欒璧拌鑱旇皟鍐茬獊
+ */
+ public Boolean err4;
+
+ /**
+ * 鐩爣涓鸿秴杩囪璧版瀬闄�
+ */
+ public Boolean err5;
+
+ /**
+ * 鍙橀鍣ㄥ紓甯�
+ */
+ public Boolean err6;
+
+ /**
+ * 鍏夌數寮傚父
+ */
+ public Boolean err7;
+
////////////////////// 宸ヤ綅2瀹氫箟 //////////////////////////////////////////////////
/**
* 宸ヤ綅2浠诲姟鍙�
*/
- public Short taskNo2 = 0;
+ public Integer taskNo2 = 0;
/**
* RGV宸ヤ綅2褰撳墠鐘舵��
@@ -97,7 +140,44 @@
/**
* 宸ヤ綅2鏈夌墿
*/
- public Short loaded2;
+ public Boolean loaded2;
+
+// /**
+// * 鎬ュ仠
+// */
+// public Boolean err21;
+//
+// /**
+// * 鏈夌墿鏃犺祫鏂�
+// */
+// public Boolean err22;
+//
+// /**
+// * 鏈夎祫鏂欐棤鐗�
+// */
+// public Boolean err23;
+//
+// /**
+// * 鍛戒护閿欒璧拌鑱旇皟鍐茬獊
+// */
+// public Boolean err24;
+//
+// /**
+// * 鐩爣涓鸿秴杩囪璧版瀬闄�
+// */
+// public Boolean err25;
+//
+// /**
+// * 鍙橀鍣ㄥ紓甯�
+// */
+// public Boolean err26;
+//
+// /**
+// * 鍏夌數寮傚父
+// */
+// public Boolean err27;
+
+
///////////////////////////////////////////////////////////////////////////////////////
/**
@@ -165,15 +245,24 @@
this.status1 = RgvStatusType.get(type1).id.shortValue();
}
-// public void setStatus2(Short status2){
-// this.status2 = status2;
-// this.statusType2 = RgvStatusType.get(status2);
-// }
-//
-// public void setStatus2(RgvStatusType type2){
-// this.statusType2 = type2;
-// this.status2 = RgvStatusType.get(type2).id.shortValue();
-// }
+ public void setStatus2(Short status2){
+ this.status2 = status2;
+ this.statusType2 = RgvStatusType.get(status2);
+ }
+
+ public void setStatus2(RgvStatusType type2){
+ this.statusType2 = type2;
+ this.status2 = RgvStatusType.get(type2).id.shortValue();
+ }
+
+ public boolean isLoaded1ing() {
+ return Boolean.TRUE.equals(this.loaded1);
+ }
+
+ public boolean isLoaded2ing() {
+ return Boolean.TRUE.equals(this.loaded2);
+ }
+
/**
* 鏈�杩戜竴娆″叆鍑哄簱绫诲瀷
@@ -188,7 +277,7 @@
basRgv.setRgvErr(alarm.longValue());
}
basRgv.setWrkNo1(taskNo1.intValue());
-// basRgv.setWrkNo2(taskNo2.intValue());
+ basRgv.setWrkNo2(taskNo2.intValue());
return basRgv;
}
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 127f483..3ce65ed 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -18,6 +18,7 @@
import com.zy.core.cache.OutputQueue;
import com.zy.core.enums.RgvStatusType;
import com.zy.core.enums.RgvTaskModeType;
+import com.zy.core.enums.RgvTaskStatusType;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.RgvSlave;
import com.zy.core.model.Task;
@@ -52,6 +53,10 @@
//閿佸畾鏍囪
private boolean PakMk = true;
+ //鍏ュ簱鏍囪
+ private boolean PakIn = true;
+ //鍑哄簱鏍囪
+ private boolean PakOut = true;
public RgvThread(RgvSlave slave) {
this.slave = slave;
@@ -92,12 +97,12 @@
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); // 鐩爣绔�
- command.setCommand((short)0);
+ command.setTaskNo1(0); // 宸ヤ綔鍙�
+ command.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣�
+ command.setTaskStatus1(RgvTaskStatusType.NONE); // 浠诲姟妯″紡
+ command.setTargetPosition1( 0); // 婧愮珯
+ command.setEndStaNo1(0); // 鐩爣绔�
+ command.setCommand(false);
write1(command);
break;
case 6:
@@ -106,33 +111,33 @@
command2 = new RgvCommand();
}
command2.setRgvNo(slave.getId()); // RGV缂栧彿
- command2.setTaskNo2((short) 0); // 宸ヤ綔鍙�
- command2.setAckFinish2((short) 1); // 浠诲姟瀹屾垚纭浣�
- command2.setTaskMode2(RgvTaskModeType.NONE); // 浠诲姟妯″紡
+ command2.setTaskNo2(0); // 宸ヤ綔鍙�
+ command2.setAckFinish2(true); // 浠诲姟瀹屾垚纭浣�
+ command2.setTaskStatus2(RgvTaskStatusType.NONE); // 浠诲姟妯″紡
command2.setSourceStaNo2((short)0); // 婧愮珯
command2.setDestinationStaNo2((short)0); // 鐩爣绔�
- command2.setCommand((short)0);
+ command2.setCommand(false);
write2(command2);
break;
// 鍥炲師鐐� 閬胯
case 9:
- RgvCommand commandAvoidanceXY = (RgvCommand) task.getData();
- if (null == commandAvoidanceXY) {
- commandAvoidanceXY = new RgvCommand();
- }
- commandAvoidanceXY.setRgvNo(slave.getId()); // RGV缂栧彿
- commandAvoidanceXY.setTaskNo1((short) 9999); // 宸ヤ綔鍙�
- commandAvoidanceXY.setAckFinish1((short) 1); // 浠诲姟瀹屾垚纭浣�
- commandAvoidanceXY.setTaskMode1(RgvTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡
- commandAvoidanceXY.setSourceStaNo1((short)0); // 婧愮珯
- commandAvoidanceXY.setDestinationStaNo1((short)0); // 鐩爣绔�
-// commandAvoidanceXY.setTaskNo2((short) 0); // 宸ヤ綔鍙�
-// commandAvoidanceXY.setAckFinish2((short) 1); // 浠诲姟瀹屾垚纭浣�
-// commandAvoidanceXY.setTaskMode2(RgvTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡
-// commandAvoidanceXY.setSourceStaNo2((short)0); // 婧愮珯
-// commandAvoidanceXY.setDestinationStaNo2((short)0); // 鐩爣绔�
- commandAvoidanceXY.setCommand((short)0);
- write(commandAvoidanceXY);
+// RgvCommand commandAvoidanceXY = (RgvCommand) task.getData();
+// if (null == commandAvoidanceXY) {
+// commandAvoidanceXY = new RgvCommand();
+// }
+// commandAvoidanceXY.setRgvNo(slave.getId()); // RGV缂栧彿
+// commandAvoidanceXY.setTaskNo1((short) 9999); // 宸ヤ綔鍙�
+// commandAvoidanceXY.setAckFinish1((short) 1); // 浠诲姟瀹屾垚纭浣�
+// commandAvoidanceXY.setTaskMode1(RgvTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡
+// commandAvoidanceXY.setSourceStaNo1((short)0); // 婧愮珯
+// commandAvoidanceXY.setDestinationStaNo1((short)0); // 鐩爣绔�
+//// commandAvoidanceXY.setTaskNo2((short) 0); // 宸ヤ綔鍙�
+//// commandAvoidanceXY.setAckFinish2((short) 1); // 浠诲姟瀹屾垚纭浣�
+//// commandAvoidanceXY.setTaskMode2(RgvTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡
+//// commandAvoidanceXY.setSourceStaNo2((short)0); // 婧愮珯
+//// commandAvoidanceXY.setDestinationStaNo2((short)0); // 鐩爣绔�
+// commandAvoidanceXY.setCommand((short)0);
+// write(commandAvoidanceXY);
break;
default:
break;
@@ -152,21 +157,30 @@
if (null == rgvProtocol) {
rgvProtocol = new RgvProtocol();
}
- rgvProtocol.setMode((short) -1);
+ //灏忚溅鐘舵��
rgvProtocol.setStatus((short)-1);
- rgvProtocol.setTaskNo1((short)0);
+ rgvProtocol.setRgvPosDestination(0);
+ rgvProtocol.setMode((short) -1);
+ rgvProtocol.setRgvPos(0);
+ rgvProtocol.setErr1(false);
+ rgvProtocol.setErr2(false);
+ rgvProtocol.setErr3(false);
+ rgvProtocol.setErr4(false);
+ rgvProtocol.setErr5(false);
+ rgvProtocol.setErr6(false);
+ rgvProtocol.setErr7(false);
+ //宸ヤ綅1鐘舵��
+ rgvProtocol.setTaskNo1(0);
rgvProtocol.setStatus1((short)-1);
- rgvProtocol.setLoaded1((short)0);
- rgvProtocol.setWalkPos((short)0);
- rgvProtocol.setRgvPos((short)0);
+ rgvProtocol.setLoaded1(false);
//宸ヤ綅2鐘舵��
- rgvProtocol.setTaskNo2((short)0);
+ rgvProtocol.setTaskNo2(0);
rgvProtocol.setStatus2((short)-1);
- rgvProtocol.setLoaded2((short)0);
- rgvProtocol.setAlarm((short)0);
- rgvProtocol.setxSpeed((short) 0);
- rgvProtocol.setxDistance((short) 0);
- rgvProtocol.setxDuration((short) 0);
+ rgvProtocol.setLoaded2(false);
+// rgvProtocol.setAlarm((short)0);
+// rgvProtocol.setxSpeed((short) 0);
+// rgvProtocol.setxDistance((short) 0);
+// rgvProtocol.setxDuration((short) 0);
}
@Override
@@ -189,6 +203,14 @@
return result;
}
+ private void setBool(byte[] buffer, int byteIndex, int bitIndex, boolean value) {
+ if (value) {
+ buffer[byteIndex] |= (1 << bitIndex); // 缃綅
+ } else {
+ buffer[byteIndex] &= ~(1 << bitIndex); // 娓呴浂
+ }
+ }
+
/**
* 璇诲彇鐘舵��
*/
@@ -196,26 +218,49 @@
try {
OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 30);
if (result.IsSuccess) {
- if (null == rgvProtocol || rgvProtocol.getRgvNo() == null) {
+ if (null == rgvProtocol) {
rgvProtocol = new RgvProtocol();
- rgvProtocol.setRgvNo(slave.getId());
+ rgvProtocol.setRgvNo(siemensNet.getByteTransform().TransInt16(result.Content, 0));
+
}
- rgvProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));
- rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 2));
- rgvProtocol.setTaskNo1(siemensNet.getByteTransform().TransInt16(result.Content, 4));
- rgvProtocol.setStatus1(siemensNet.getByteTransform().TransInt16(result.Content, 6));
- rgvProtocol.setLoaded1(siemensNet.getByteTransform().TransInt16(result.Content, 8));
- rgvProtocol.setRgvPos(siemensNet.getByteTransform().TransInt16(result.Content, 10));
- rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 12));
- rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 14));
+ rgvProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 2));
+ rgvProtocol.setRgvPos(siemensNet.getByteTransform().TransInt32(result.Content, 4));
+ rgvProtocol.setRgvPosDestination( siemensNet.getByteTransform().TransInt32(result.Content, 8));
+ rgvProtocol.setStatus1(siemensNet.getByteTransform().TransInt16(result.Content, 12));
+ rgvProtocol.setStatus2(siemensNet.getByteTransform().TransInt16(result.Content, 14));
+ rgvProtocol.setTaskNo1(siemensNet.getByteTransform().TransInt32(result.Content, 16));
+ rgvProtocol.setTaskNo2(siemensNet.getByteTransform().TransInt32(result.Content, 20));
+
+ boolean[] status1 = siemensNet.getByteTransform().TransBool(result.Content, 24, 2);
+ rgvProtocol.setLoaded1(status1[0]);
+ rgvProtocol.setLoaded2(status1[1]);
+ boolean[] status2 = siemensNet.getByteTransform().TransBool(result.Content, 26, 1);
+ rgvProtocol.setErr1(status2[0]);
+ rgvProtocol.setErr2(status2[1]);
+ rgvProtocol.setErr3(status2[2]);
+ rgvProtocol.setErr4(status2[3]);
+ rgvProtocol.setErr5(status2[4]);
+ rgvProtocol.setErr6(status2[5]);
+ rgvProtocol.setErr7(status2[6]);
+ boolean[] status3 = siemensNet.getByteTransform().TransBool(result.Content, 27, 1);
+ rgvProtocol.setErr1(status3[0]);
+ rgvProtocol.setErr2(status3[1]);
+ rgvProtocol.setErr3(status3[2]);
+ rgvProtocol.setErr4(status3[3]);
+ rgvProtocol.setErr5(status3[4]);
+ rgvProtocol.setErr6(status3[5]);
+ rgvProtocol.setErr7(status3[6]);
+
+// rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 12));
+// rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 14));
// rgvProtocol.setTaskNo2(siemensNet.getByteTransform().TransInt16(result.Content, 4));
// rgvProtocol.setLoaded2(siemensNet.getByteTransform().TransInt16(result.Content, 8));
// rgvProtocol.setStatus2(siemensNet.getByteTransform().TransInt16(result.Content, 16));
- rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 18));
+// rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 18));
// rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 20));
- rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 22));
+// rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 22));
// rgvProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 24));
- rgvProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 26));
+// rgvProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 26));
// rgvProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 28));
// rgvProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 30));
// rgvProtocol.setTemp5(siemensNet.getByteTransform().TransInt16(result.Content, 32));
@@ -230,8 +275,8 @@
|| rgvProtocol.getStatusType1().equals(RgvStatusType.FETCHWAITING)) {
if (resetFlag1) {
RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setAckFinish1((short)1);
- if (write(rgvCommand)) {
+ rgvCommand.setAckFinish1(true);
+ if (write1(rgvCommand)) {
resetFlag1 = false;
}
}
@@ -242,8 +287,8 @@
|| rgvProtocol.getStatusType2().equals(RgvStatusType.FETCHWAITING)) {
if (resetFlag2) {
RgvCommand rgvCommand = new RgvCommand();
- rgvCommand.setAckFinish2((short)1);
- if (write(rgvCommand)) {
+ rgvCommand.setAckFinish2(true);
+ if (write2(rgvCommand)) {
resetFlag2 = false;
}
}
@@ -275,73 +320,73 @@
}
}
- /**
- * 宸ヤ綅1銆�2鍚屾椂鍐欏叆鏁版嵁
- */
- private boolean write(RgvCommand command) throws InterruptedException {
- if (null == command) {
- log.error("RGV鍐欏叆鍛戒护涓虹┖");
- return false;
- }
-// convertRow(command);
- command.setRgvNo(slave.getId());
- short[] array = new short[11];
- array[0] = command.getAckFinish1();
- array[1] = command.getTaskNo1();
- array[2] = command.getTaskMode1();
- array[3] = command.getSourceStaNo1();
- array[4] = command.getDestinationStaNo1();
+// /**
+// * 宸ヤ綅1銆�2鍚屾椂鍐欏叆鏁版嵁
+// */
+// private boolean write(RgvCommand command) throws InterruptedException {
+// if (null == command) {
+// log.error("RGV鍐欏叆鍛戒护涓虹┖");
+// return false;
+// }
+//// convertRow(command);
+// command.setRgvNo(slave.getId());
+// short[] array = new short[11];
// array[0] = command.getAckFinish1();
// array[1] = command.getTaskNo1();
// array[2] = command.getTaskMode1();
// array[3] = command.getSourceStaNo1();
// array[4] = command.getDestinationStaNo1();
-// array[5] = command.getAckFinish2();
-// array[6] = command.getTaskNo2();
-// array[7] = command.getTaskMode2();
-// array[8] = command.getSourceStaNo2();
-// array[9] = command.getDestinationStaNo2();
-// array[10] = command.getCommand();
- OperateResult result = siemensNet.Write("DB100.0", array);
-
-// if (command.getAckFinish1() == 0 && command.getAckFinish2() == 0) {
-// short commandFinish = 3; //宸ヤ綅1銆�2浠诲姟鍚屾椂鍐欏叆
-// Thread.sleep(100L);
-// result = siemensNet.Write("DB100.20", commandFinish);
+//// array[0] = command.getAckFinish1();
+//// array[1] = command.getTaskNo1();
+//// array[2] = command.getTaskMode1();
+//// array[3] = command.getSourceStaNo1();
+//// array[4] = command.getDestinationStaNo1();
+//// array[5] = command.getAckFinish2();
+//// array[6] = command.getTaskNo2();
+//// array[7] = command.getTaskMode2();
+//// array[8] = command.getSourceStaNo2();
+//// array[9] = command.getDestinationStaNo2();
+//// array[10] = command.getCommand();
+// OperateResult result = siemensNet.Write("DB100.0", array);
+//
+//// if (command.getAckFinish1() == 0 && command.getAckFinish2() == 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.getTaskNo1().intValue(),
+// command.getTaskNo2().intValue(),
+// command.getRgvNo(),
+// new Date(),
+// command.getTaskModeType1().toString(),
+// command.getSourceStaNo1().intValue(),
+// command.getDestinationStaNo1().intValue(),
+// command.getSourceStaNo2().intValue(),
+// command.getDestinationStaNo2().intValue(),
+// null,
+// new Date(),
+// null
+// );
+// bean.insert(basRgvOpt);
+// } catch (Exception ignore) {}
+//
+// 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)));
+// 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()));
+// log.error("鍐欏叆RGV plc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+// return false;
// }
-
- try {
- // 鏃ュ織璁板綍
- BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class);
- BasRgvOpt basRgvOpt = new BasRgvOpt(
- command.getTaskNo1().intValue(),
- command.getTaskNo2().intValue(),
- command.getRgvNo(),
- new Date(),
- command.getTaskModeType1().toString(),
- command.getSourceStaNo1().intValue(),
- command.getDestinationStaNo1().intValue(),
- command.getSourceStaNo2().intValue(),
- command.getDestinationStaNo2().intValue(),
- null,
- new Date(),
- null
- );
- bean.insert(basRgvOpt);
- } catch (Exception ignore) {}
-
- 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)));
- 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()));
- log.error("鍐欏叆RGV plc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
- return false;
- }
- }
+// }
/**
* 宸ヤ綅1鍐欏叆鏁版嵁
@@ -352,38 +397,49 @@
return false;
}
- OperateResultExOne<byte[]> result3 = siemensNet.Read("DB100.0", (short) 12);
- OperateResultExOne<byte[]> result4 = siemensNet.Read("DB100.10", (short) 2);
- if (result3.IsSuccess){
+ OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 34);
+// OperateResultExOne<byte[]> result4 = siemensNet.Read("DB100.10", (short) 2);
+ if (result1.IsSuccess){
RgvCommand one = new RgvCommand();
+ one.setTargetPosition1(siemensNet.getByteTransform().TransInt32(result1.Content, 0));
+ one.setEndStaNo1(siemensNet.getByteTransform().TransInt32(result1.Content, 4));
+ one.setTaskStatus1(siemensNet.getByteTransform().TransInt16(result1.Content, 8));
+ one.setTaskNo1(siemensNet.getByteTransform().TransInt32(result1.Content, 10));
+ one.setDirection1(siemensNet.getByteTransform().TransInt16(result1.Content, 14));
// one.setAckFinish1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 0));
- one.setTaskNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 2));
- one.setTaskMode1(siemensNet.getByteTransform().TransInt16(result3.Content, 4));
- one.setSourceStaNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 6));
- one.setDestinationStaNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 8));
- one.setCommand(siemensNet.getByteTransform().TransInt16(result4.Content, 0));
+// one.setTaskNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 2));
+// one.setTaskMode1(siemensNet.getByteTransform().TransInt16(result3.Content, 4));
+// one.setSourceStaNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 6));
+// one.setDestinationStaNo1(siemensNet.getByteTransform().TransInt16(result3.Content, 8));
+// one.setCommand(siemensNet.getByteTransform().TransInt16(result4.Content, 0));
News.error("RGV鍛戒护涓嬪彂鍓嶈鍙栫姸鎬乕id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
}
- OperateResult result8 = siemensNet.Write("DB100.10", (short) 0);
- if (result8.IsSuccess){
+ OperateResult result2 = siemensNet.Write("DB100.34", false);
+ if (result2.IsSuccess){
News.error("涓嬪彂鍓嶆妸杞﹀瓙纭浣嶇疆涓�0");
}
-
-// siemensNet.Write("DB100.20", command.getCommand());
-
+ byte[] writeBytes = new byte[34];
command.setRgvNo(slave.getId());
- short[] array = new short[5];
- array[0] = command.getAckFinish1();
- array[1] = command.getTaskNo1();
- array[2] = command.getTaskMode1();
- array[3] = command.getSourceStaNo1();
- array[4] = command.getDestinationStaNo1();
+ siemensNet.getByteTransform().TransInt32(writeBytes, 0, command.getTargetPosition1());
+ siemensNet.getByteTransform().TransInt32(writeBytes, 4, command.getEndStaNo1());
+ siemensNet.getByteTransform().TransInt16(writeBytes, 8, command.getTaskStatus1());
+ siemensNet.getByteTransform().TransInt32(writeBytes, 10, command.getTaskNo1());
+ siemensNet.getByteTransform().TransInt16(writeBytes, 14, command.getDirection1());
+ setBool(writeBytes, 32, 0, command.getAckFinish1());
+
+// command.setRgvNo(slave.getId());
+// short[] array = new short[5];
+// array[0] = command.getAckFinish1();
+// array[1] = command.getTaskNo1();
+// array[2] = command.getTaskMode1();
+// array[3] = command.getSourceStaNo1();
+// array[4] = command.getDestinationStaNo1();
// siemensNet.Write("DB100.10", command.getCommand());
- OperateResult result = siemensNet.Write("DB100.0", array);
+ OperateResult result = siemensNet.Write("DB100.0", writeBytes);
if (!result.IsSuccess){
News.error("鍐欏叆RGVplc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===> [id:{}],{}",slave.getId(),JSON.toJSON(command));
@@ -396,20 +452,21 @@
//RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔�
Thread.sleep(400);
try {
- OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 12);
+ OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 34);
if (resultRead.IsSuccess){
RgvCommand one = new RgvCommand();
-// one.setAckFinish1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 0));
- one.setTaskNo1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2));
- one.setTaskMode1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4));
- one.setSourceStaNo1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6));
- one.setDestinationStaNo1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
+ one.setDirection1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14));
+ one.setTaskNo1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 10));
+ one.setTaskStatus1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
+ one.setEndStaNo1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 4));
+ one.setTargetPosition1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 0));
if (
- !command.getTaskNo1().equals(one.getTaskNo1()) ||
- !command.getTaskMode1().equals(one.getTaskMode1()) ||
- !command.getSourceStaNo1().equals(one.getSourceStaNo1()) ||
- !command.getDestinationStaNo1().equals(one.getDestinationStaNo1())
- ){
+ !command.getDirection1().equals(one.getDirection1()) ||
+ !command.getTaskNo1().equals(one.getTaskNo1()) ||
+ !command.getTaskStatus1().equals(one.getTaskStatus1()) ||
+ !command.getEndStaNo1().equals(one.getEndStaNo1()) ||
+ !command.getTargetPosition1().equals(one.getTargetPosition1())
+ ) {
try{
News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
}catch (Exception e){
@@ -432,7 +489,7 @@
News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�");
}
- if (command.getAckFinish1() == 0) {
+ if (command.getAckFinish1()) {
if (result.IsSuccess) {
Thread.sleep(300);
//浠诲姟涓嬪彂娆℃暟
@@ -440,15 +497,15 @@
do {
writeCount2++;
- short commandFinish = (short) 1;
- result = siemensNet.Write("DB100.10", commandFinish);
+ boolean commandFinish = false;
+ result = siemensNet.Write("DB100.32.0", commandFinish);
if(result.IsSuccess){
//RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔�
Thread.sleep(200);
- OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.10", (short) 2);
+ OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.32", (short) 2);
if (resultRead.IsSuccess) {
- commandFinish=siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
- if (commandFinish != 1){
+ commandFinish=siemensNet.getByteTransform().TransBool(resultRead.Content, 0);
+ if (!commandFinish){
News.error("RGV浠诲姟纭浣�"+commandFinish+"鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
}else{
//浠诲姟鍛戒护鍐欏叆鎴愬姛
@@ -475,15 +532,12 @@
// 鏃ュ織璁板綍
BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class);
BasRgvOpt basRgvOpt = new BasRgvOpt(
- command.getTaskNo1().intValue(),
- command.getTaskNo2().intValue(),
+ command.getTaskNo1(),
command.getRgvNo(),
new Date(),
- command.getTaskModeType1().toString(),
- command.getSourceStaNo1().intValue(),
- command.getDestinationStaNo1().intValue(),
- command.getSourceStaNo2().intValue(),
- command.getDestinationStaNo2().intValue(),
+ command.getTaskStatus1().toString(),
+ command.getTargetPosition1(),
+ command.getEndStaNo1(),
null,
new Date(),
null
@@ -515,36 +569,124 @@
return false;
}
+ OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 34);
+ if (result1.IsSuccess){
+ RgvCommand one = new RgvCommand();
+ one.setTargetPosition2(siemensNet.getByteTransform().TransInt32(result1.Content, 16));
+ one.setEndStaNo2(siemensNet.getByteTransform().TransInt32(result1.Content, 20));
+ one.setTaskStatus2(siemensNet.getByteTransform().TransInt16(result1.Content, 24));
+ one.setTaskNo2(siemensNet.getByteTransform().TransInt32(result1.Content, 26));
+ one.setDirection2(siemensNet.getByteTransform().TransInt16(result1.Content, 30));
+ News.error("RGV鍛戒护涓嬪彂鍓嶈鍙栫姸鎬乕id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+ }
+
+
+ OperateResult result2 = siemensNet.Write("DB100.34", false);
+ if (result2.IsSuccess){
+ News.error("涓嬪彂鍓嶆妸杞﹀瓙纭浣嶇疆涓�0");
+ }
+ byte[] writeBytes = new byte[34];
command.setRgvNo(slave.getId());
- short[] array = new short[6];
- array[0] = command.getAckFinish2();
- array[1] = command.getTaskNo2();
- array[2] = command.getTaskMode2();
- array[3] = command.getSourceStaNo2();
- array[4] = command.getDestinationStaNo2();
- array[5] = command.getCommand();
+ siemensNet.getByteTransform().TransInt32(writeBytes, 16, command.getTargetPosition2());
+ siemensNet.getByteTransform().TransInt32(writeBytes, 20, command.getEndStaNo2());
+ siemensNet.getByteTransform().TransInt16(writeBytes, 24, command.getTaskStatus2());
+ siemensNet.getByteTransform().TransInt32(writeBytes, 26, command.getTaskNo2());
+ siemensNet.getByteTransform().TransInt16(writeBytes, 30, command.getDirection2());
+ setBool(writeBytes, 32, 1, command.getAckFinish2());
- OperateResult result = siemensNet.Write("DB100.10", array);
+ OperateResult result = siemensNet.Write("DB100.0", writeBytes);
- if (command.getAckFinish2() == 0) {
- short commandFinish = 2; //宸ヤ綅2浠诲姟鍐欏叆
- Thread.sleep(100L);
- result = siemensNet.Write("DB100.20", commandFinish);
+ if (!result.IsSuccess){
+ News.error("鍐欏叆RGVplc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===> [id:{}],{}",slave.getId(),JSON.toJSON(command));
+ MessageQueue.offer(SlaveType.Rgv,slave.getId(),new Task(5,command));
+ Thread.sleep(100);
+ readStatus();
+ return false;
+ }
+
+ //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔�
+ Thread.sleep(400);
+ try {
+ OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 34);
+ if (resultRead.IsSuccess){
+ RgvCommand one = new RgvCommand();
+ one.setDirection1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 30));
+ one.setTaskNo1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 26));
+ one.setTaskStatus1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 24));
+ one.setEndStaNo1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 20));
+ one.setTargetPosition1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 16));
+ if (
+ !command.getDirection2().equals(one.getDirection2()) ||
+ !command.getTaskNo2().equals(one.getTaskNo2()) ||
+ !command.getTaskStatus2().equals(one.getTaskStatus2()) ||
+ !command.getEndStaNo2().equals(one.getEndStaNo2()) ||
+ !command.getTargetPosition2().equals(one.getTargetPosition2())
+ ) {
+ try{
+ News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+ }catch (Exception e){
+ try{
+ News.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSON(command),JSON.toJSON(resultRead));
+ }catch (Exception e1){
+ News.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+ }
+ }
+ News.error("Rgv鍛戒护鍥炶澶辫触鍚庯紝閲嶆柊娣诲姞浠诲姟鍒伴槦鍒� ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+ MessageQueue.offer(SlaveType.Rgv, slave.getId(), new Task(5, command));
+ Thread.sleep(100);
+ readStatus();
+ return false;
+ }else {
+ News.info("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+ }
+ }
+ }catch (Exception e){
+ News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�");
+ }
+
+ if (command.getAckFinish1()) {
+ if (result.IsSuccess) {
+ Thread.sleep(300);
+ //浠诲姟涓嬪彂娆℃暟
+ int writeCount2 = 0;
+
+ do {
+ writeCount2++;
+ boolean commandFinish = false;
+ result = siemensNet.Write("DB100.32.1", commandFinish);
+ if(result.IsSuccess){
+ //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔�
+ Thread.sleep(200);
+ OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.32", (short) 2);
+ if (resultRead.IsSuccess) {
+ commandFinish=siemensNet.getByteTransform().TransBool(resultRead.Content, 1);
+ if (!commandFinish){
+ News.error("RGV浠诲姟纭浣�"+commandFinish+"鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+ }else{
+ //浠诲姟鍛戒护鍐欏叆鎴愬姛
+ News.info("RGV浠诲姟纭浣�"+commandFinish+"鍥炶鎴愬姛锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+ break;
+ }
+ }else {
+ News.error("RGV浠诲姟纭浣�"+commandFinish+"鍥炶澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+ }
+ } else {
+ News.error("RGV浠诲姟纭浣�"+commandFinish+"鍐欏叆澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+ }
+ }while (writeCount2<5);
+ }
}
try {
// 鏃ュ織璁板綍
BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class);
BasRgvOpt basRgvOpt = new BasRgvOpt(
- command.getTaskNo1().intValue(),
- command.getTaskNo2().intValue(),
+ command.getTaskNo2(),
command.getRgvNo(),
new Date(),
- command.getTaskModeType1().toString(),
- command.getSourceStaNo1().intValue(),
- command.getDestinationStaNo1().intValue(),
- command.getSourceStaNo2().intValue(),
- command.getDestinationStaNo2().intValue(),
+ command.getTaskStatus2().toString(),
+ command.getTargetPosition2(),
+ command.getEndStaNo2(),
null,
new Date(),
null
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 1148d41..d08b7be 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -269,23 +269,23 @@
}
}
- //RGV灏忚溅3
-// Thread.sleep(100);
- OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB50.224",(short)10);
- if (result5.IsSuccess) {
- BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo((int) siemensS7Net.getByteTransform().TransInt16(result5.Content, 0));
- if (!Cools.isEmpty(basRgvMap)){
- Integer siteId = 3;
- StaProtocol staProtocol = station.get(siteId);
- if (null == staProtocol) {
- staProtocol = new StaProtocol();
- staProtocol.setSiteId(siteId);
- station.put(siteId, staProtocol);
- }
- staProtocol.setAutoing(true);
- staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result5.Content, 8)));
- }
- }
+// //RGV灏忚溅3
+//// Thread.sleep(100);
+// OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB50.224",(short)10);
+// if (result5.IsSuccess) {
+// BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo((int) siemensS7Net.getByteTransform().TransInt16(result5.Content, 0));
+// if (!Cools.isEmpty(basRgvMap)){
+// Integer siteId = 3;
+// StaProtocol staProtocol = station.get(siteId);
+// if (null == staProtocol) {
+// staProtocol = new StaProtocol();
+// staProtocol.setSiteId(siteId);
+// station.put(siteId, staProtocol);
+// }
+// staProtocol.setAutoing(true);
+// staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result5.Content, 8)));
+// }
+// }
//鏉$爜鎵弿鍣�
ArrayList<Integer> barcodeList = BarcodeList;
diff --git a/src/main/webapp/static/js/console.map.js b/src/main/webapp/static/js/console.map.js
index 4c56441..5bb44ae 100644
--- a/src/main/webapp/static/js/console.map.js
+++ b/src/main/webapp/static/js/console.map.js
@@ -309,7 +309,9 @@
"stns": [
{"type": "track", "id": "lb_trCart11", "text": "", "top": 65, "left": 1000, "width": 6, "height": 560},
{"type": "track", "id": "lb_trCart12", "text": "", "top": 65, "left": 1020, "width": 6, "height": 560},
- { "type": "stn", "id": "site-1", "text": "1", "top": 84, "left": 1000, "width": 35, "height": 20 },
+ { "type": "stn", "id": "site-1", "text": "1", "top": 84, "left": 984, "width": 30, "height": 20 },
+ { "type": "stn", "id": "site-2", "text": "2", "top": 84, "left": 1016, "width": 30, "height": 20 },
+
{ "type": "stn", "id": "site-1001", "text": "1001", "top": 84, "left": 870, "width": 35, "height": 20 },
{ "type": "stn", "id": "site-1002", "text": "1002", "top": 84, "left": 907, "width": 35, "height": 20 },
{ "type": "stn", "id": "site-1004", "text": "1004", "top": 84, "left": 944, "width": 35, "height": 20 },
@@ -444,8 +446,8 @@
"width": 2900,
"height": 600,
"stns": [
- { "type": "stn", "id": "site-2", "text": "2", "top": 84, "left": 1000, "width": 35, "height": 20 },
-
+ { "type": "stn", "id": "site-3", "text": "1", "top": 84, "left": 984, "width": 30, "height": 20 },
+ { "type": "stn", "id": "site-4", "text": "2", "top": 84, "left": 1016, "width": 30, "height": 20 },
{"type": "track", "id": "lb_trCart21", "text": "", "top": 65, "left": 1000, "width": 6, "height": 560},
{"type": "track", "id": "lb_trCart22", "text": "", "top": 65, "left": 1020, "width": 6, "height": 560},
{ "type": "stn", "id": "site-2003", "text": "2003", "top": 84, "left": 926, "width": 54, "height": 20 },
--
Gitblit v1.9.1