From a775cccf69b395cff784ea50164b89a6ef00341a Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期一, 24 十一月 2025 12:56:27 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/core/thread/BarcodeThread.java | 7
src/main/java/com/zy/core/model/protocol/RgvErrProtocol.java | 16
src/main/java/com/zy/core/cache/RgvRunCache.java | 59
src/main/java/com/zy/core/thread/LedThread.java | 7
src/main/java/com/zy/core/thread/MelsecCrnThread.java | 7
src/main/java/com/zy/core/cache/RgvErrCache.java | 100 +
src/main/java/com/zy/core/model/protocol/TaskProtocol.java | 61
src/main/java/com/zy/core/thread/ScaleThread.java | 8
src/main/java/com/zy/asrs/service/impl/DeviceErrorServiceImpl.java | 55
src/main/java/com/zy/core/cache/TaskProtocolCache.java | 184 ++
src/main/java/com/zy/core/model/RgvSlave.java | 49
src/main/java/com/zy/core/ThreadHandler.java | 2
src/main/java/com/zy/core/cache/RgvTaskCache.java | 44
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 7
src/main/java/com/zy/asrs/mapper/DeviceErrorMapper.java | 33
src/main/java/com/zy/core/enums/RgvStatusType.java | 34
src/main/java/com/zy/core/thread/RoboticArmThread.java | 7
src/main/java/com/zy/asrs/service/DeviceErrorService.java | 19
src/main/java/com/zy/asrs/controller/RgvController.java | 574 ++++----
src/main/java/com/zy/core/cache/RgvStatusCache.java | 62
src/main/java/com/zy/asrs/utils/TrackRangeUtils.java | 81 +
src/main/java/com/zy/core/thread/RgvThread.java | 1671 ++++++++++++++++--------
src/main/java/com/zy/core/thread/SiemensCrnThread.java | 7
src/main/resources/mapper/DeviceErrorMapper.xml | 59
src/main/java/com/zy/asrs/entity/DeviceError.java | 96 +
src/main/java/com/zy/core/model/protocol/RgvTaskProtocol.java | 25
src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 488 +-----
src/main/java/com/zy/core/model/protocol/RgvRunProtocol.java | 18
src/main/resources/application.yml | 348 +++-
29 files changed, 2,735 insertions(+), 1,393 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java
index 98f3848..80b35a5 100644
--- a/src/main/java/com/zy/asrs/controller/RgvController.java
+++ b/src/main/java/com/zy/asrs/controller/RgvController.java
@@ -66,113 +66,113 @@
private LocMastService locMastService;
@Autowired
private BasRgvMapMapper basRgvMapMapper;
- @ManagerAuth(memo = "瑙i攣灏忚溅")
- @PostMapping("/lock")
- public R lock(CrnOperatorParam param){
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, param.getRgvNo());
- rgvThread.setPakMk(true);
- return R.ok();
- }
-
- @PostMapping("/table/rgv/state")
- @ManagerAuth(memo = "RGV淇℃伅琛�")
- 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;
-
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) continue;
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-
- vo.setStatusType(rgvProtocol.modeType.desc); // 妯″紡鐘舵��
- vo.setStatus(String.valueOf(rgvProtocol.getMode())); // 鐘舵��
- vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 宸ヤ綅1浠诲姟鍙�
- vo.setStatus1(rgvProtocol.getStatusType1().desc); // 宸ヤ綅1鐘舵��
- vo.setLoading1(rgvProtocol.getLoaded1() ? "鏈夌墿" : "鏃犵墿"); // 宸ヤ綅1鏈夌墿
- vo.setRgvPos(basRgvMap != null?basRgvMap.getNowRoute():0);
- vo.setRgvPos1(rgvProtocol.getRgvPosI2());
- vo.setWalkPos(Objects.equals(rgvProtocol.getWalkPos(), 1) ? "鍦ㄥ畾浣�" : "涓嶅湪瀹氫綅");
- vo.setPakMk(rgvThread.isPakMk() ? "鏃犻攣" : "閿佸畾");
-// vo.setPakIn(rgvThread.isPakIn() ? "鍙叆" : "涓嶅彲鍏�");
-// vo.setPakOut(rgvThread.isPakOut() ? "鍙嚭" : "涓嶅彲鍑�");
-// vo.setPakRgv(rgvThread.isPakRgv() ? "鏃犻攣" : "閿佸畾");
- vo.setPaking(rgvThread.isPaking()? "鏃犻攣" : "閿佸畾");
-// vo.setPakAll(rgvThread.isPakAll() ? "鏃犻攣" : "閿佸畾");
-// vo.setPakToCrn(rgvThread.isPakToCrn() ? "鏃犻攣" : "閿佸畾");
+// @ManagerAuth(memo = "瑙i攣灏忚溅")
+// @PostMapping("/lock")
+// public R lock(CrnOperatorParam param){
+// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, param.getRgvNo());
+// rgvThread.setPakMk(true);
+// return R.ok();
+// }
+//
+// @PostMapping("/table/rgv/state")
+// @ManagerAuth(memo = "RGV淇℃伅琛�")
+// 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;
+//
+// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+// if (rgvProtocol == null) continue;
+// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+//
+// vo.setStatusType(rgvProtocol.modeType.desc); // 妯″紡鐘舵��
+// vo.setStatus(String.valueOf(rgvProtocol.getMode())); // 鐘舵��
+// vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 宸ヤ綅1浠诲姟鍙�
+// vo.setStatus1(rgvProtocol.getStatusType1().desc); // 宸ヤ綅1鐘舵��
+// vo.setLoading1(rgvProtocol.getLoaded1() ? "鏈夌墿" : "鏃犵墿"); // 宸ヤ綅1鏈夌墿
+// vo.setRgvPos(basRgvMap != null?basRgvMap.getNowRoute():0);
+// vo.setRgvPos1(rgvProtocol.getRgvPosI2());
+// vo.setWalkPos(Objects.equals(rgvProtocol.getWalkPos(), 1) ? "鍦ㄥ畾浣�" : "涓嶅湪瀹氫綅");
+// vo.setPakMk(rgvThread.isPakMk() ? "鏃犻攣" : "閿佸畾");
+//// vo.setPakIn(rgvThread.isPakIn() ? "鍙叆" : "涓嶅彲鍏�");
+//// vo.setPakOut(rgvThread.isPakOut() ? "鍙嚭" : "涓嶅彲鍑�");
+//// vo.setPakRgv(rgvThread.isPakRgv() ? "鏃犻攣" : "閿佸畾");
+// vo.setPaking(rgvThread.isPaking()? "鏃犻攣" : "閿佸畾");
+//// vo.setPakAll(rgvThread.isPakAll() ? "鏃犻攣" : "閿佸畾");
+//// vo.setPakToCrn(rgvThread.isPakToCrn() ? "鏃犻攣" : "閿佸畾");
+//
+//
+// vo.setWorkNo2(rgvProtocol.getTaskNo2()); // 宸ヤ綅2浠诲姟鍙�
+//// vo.setStatus2(rgvProtocol.getStatusType2().desc); // 宸ヤ綅2鐘舵��
+// vo.setLoading2(rgvProtocol.getLoaded2() ? "鏈夌墿" : "鏃犵墿"); // 宸ヤ綅2鏈夌墿
+//
+// // --- 閬嶅巻 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);
+// }
- vo.setWorkNo2(rgvProtocol.getTaskNo2()); // 宸ヤ綅2浠诲姟鍙�
-// vo.setStatus2(rgvProtocol.getStatusType2().desc); // 宸ヤ綅2鐘舵��
- vo.setLoading2(rgvProtocol.getLoaded2() ? "鏈夌墿" : "鏃犵墿"); // 宸ヤ綅2鏈夌墿
-
- // --- 閬嶅巻 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鏁版嵁琛�")
- public R rgvMsgTable(){
- List<RgvMsgTableVo> list = new ArrayList<>();
- List<BasRgv> rgvs = basRgvService.selectList(new EntityWrapper<BasRgv>().orderBy("rgv_no"));
- for (BasRgv basRgv : rgvs) {
- // 琛ㄦ牸琛�
- RgvMsgTableVo vo = new RgvMsgTableVo();
- vo.setRgvNo(basRgv.getRgvNo()); // RGV鍙�
- list.add(vo);
- // 鑾峰彇RGV淇℃伅
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basRgv.getRgvNo());
- if (rgvThread == null) {
- continue;
- }
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- continue;
- }
-
- vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 宸ヤ綅1宸ヤ綔鍙�
- vo.setWorkNo2(rgvProtocol.getTaskNo2()); //宸ヤ綅2 宸ヤ綔鍙�
- vo.setStaNo(String.valueOf(rgvProtocol.getRgvPosDestination())); //灏忚溅鐩爣绔�
- vo.setStatus(rgvProtocol.modeType.equals(RgvModeType.AUTO)? rgvProtocol.modeType.desc: RgvModeType.HAND.desc); // 妯″紡鐘舵��
-
- }
- return R.ok().add(list);
- }
+// @PostMapping("/table/rgv/msg")
+// @ManagerAuth(memo = "RGV鏁版嵁琛�")
+// public R rgvMsgTable(){
+// List<RgvMsgTableVo> list = new ArrayList<>();
+// List<BasRgv> rgvs = basRgvService.selectList(new EntityWrapper<BasRgv>().orderBy("rgv_no"));
+// for (BasRgv basRgv : rgvs) {
+// // 琛ㄦ牸琛�
+// RgvMsgTableVo vo = new RgvMsgTableVo();
+// vo.setRgvNo(basRgv.getRgvNo()); // RGV鍙�
+// list.add(vo);
+// // 鑾峰彇RGV淇℃伅
+// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basRgv.getRgvNo());
+// if (rgvThread == null) {
+// continue;
+// }
+// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+// if (rgvProtocol == null) {
+// continue;
+// }
+//
+// vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 宸ヤ綅1宸ヤ綔鍙�
+// vo.setWorkNo2(rgvProtocol.getTaskNo2()); //宸ヤ綅2 宸ヤ綔鍙�
+// vo.setStaNo(String.valueOf(rgvProtocol.getRgvPosDestination())); //灏忚溅鐩爣绔�
+// vo.setStatus(rgvProtocol.modeType.equals(RgvModeType.AUTO)? rgvProtocol.modeType.desc: RgvModeType.HAND.desc); // 妯″紡鐘舵��
+//
+// }
+// return R.ok().add(list);
+// }
@PostMapping("/output/site")
@ManagerAuth(memo = "RGV鎶ユ枃鏃ュ織杈撳嚭")
@@ -187,196 +187,196 @@
return R.ok().add(str.toString());
}
- /****************************************************************/
- /************************** 鎵嬪姩鎿嶄綔 ******************************/
- /****************************************************************/
-
- @ManagerAuth(memo = "鍙栨斁璐�")
- @PostMapping("/operator/put")
- public R rgvFetchPut(RgvOperatorParam param){
- RgvCommand command = new RgvCommand();
- command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
- command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣�
- command.setTaskNo(0); // 宸ヤ綔鍙�
- command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
- command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯
-// command.setDestinationStaNo1(param.getStaNo1()); // 鐩爣绔�
- 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();
- }
-
- @ManagerAuth(memo = "鍙栬揣")
- @PostMapping("/operator/take")
- public R rgvFetch(RgvOperatorParam param){
- RgvCommand command = new RgvCommand();
- command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
- command.setWrkTaskPri(param.getWorkSta()); //鎵ц宸ヤ綅
- command.setTaskNo(Math.toIntExact(param.getWorkNo())); // 宸ヤ綔鍙�
- command.setTaskStatus(RgvTaskStatusType.FETCH); // 浠诲姟妯″紡: 鍙栬揣
- command.setTargetPosition(Integer.valueOf(param.getStaNo())); // 鐩爣绔�
-// command.setTaskMode2(RgvTaskModeType.FETCH); // 浠诲姟妯″紡: 鍙栨斁璐�
+// /****************************************************************/
+// /************************** 鎵嬪姩鎿嶄綔 ******************************/
+// /****************************************************************/
+//
+// @ManagerAuth(memo = "鍙栨斁璐�")
+// @PostMapping("/operator/put")
+// public R rgvFetchPut(RgvOperatorParam param){
+// RgvCommand command = new RgvCommand();
+// command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
// command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣�
+// command.setTaskNo(0); // 宸ヤ綔鍙�
+// command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
// command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯
+//// command.setDestinationStaNo1(param.getStaNo1()); // 鐩爣绔�
// command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣�
-// command.setTaskNo2( 0); // 宸ヤ綔鍙�
+// command.setTaskNo2(0); // 宸ヤ綔鍙�
+// command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
// command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
-// command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔�
- command.setCommand(true);
+//// command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔�
+// command.setCommand(true);
+//
+// return rgvControl(command)? R.ok(): R.error();
+// }
- return rgvControl(command)? R.ok(): R.error();
- }
+// @ManagerAuth(memo = "鍙栬揣")
+// @PostMapping("/operator/take")
+// public R rgvFetch(RgvOperatorParam param){
+// RgvCommand command = new RgvCommand();
+// command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
+// command.setWrkTaskPri(param.getWorkSta()); //鎵ц宸ヤ綅
+// command.setTaskNo(Math.toIntExact(param.getWorkNo())); // 宸ヤ綔鍙�
+// command.setTaskStatus(RgvTaskStatusType.FETCH); // 浠诲姟妯″紡: 鍙栬揣
+// command.setTargetPosition(Integer.valueOf(param.getStaNo())); // 鐩爣绔�
+//// command.setTaskMode2(RgvTaskModeType.FETCH); // 浠诲姟妯″紡: 鍙栨斁璐�
+//// command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣�
+//// command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯
+//// command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣�
+//// command.setTaskNo2( 0); // 宸ヤ綔鍙�
+//// command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
+//// command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔�
+// command.setCommand(true);
+//
+// return rgvControl(command)? R.ok(): R.error();
+// }
- @ManagerAuth(memo = "鏀捐揣")
- @PostMapping("/operator/stockMove")
- public R rgvPut(RgvOperatorParam param){
- RgvCommand command = new RgvCommand();
- command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
- command.setWrkTaskPri(param.getWorkSta()); //鎵ц宸ヤ綅
- command.setTaskNo(Math.toIntExact(param.getWorkNo())); // 宸ヤ綔鍙�
- command.setTaskStatus(RgvTaskStatusType.PUT); // 浠诲姟妯″紡: 鍙栬揣
- command.setTargetPosition(Integer.valueOf(param.getStaNo())); // 鐩爣绔�
-// command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣�
-// command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯
-// command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣�
+// @ManagerAuth(memo = "鏀捐揣")
+// @PostMapping("/operator/stockMove")
+// public R rgvPut(RgvOperatorParam param){
+// RgvCommand command = new RgvCommand();
+// command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
+// command.setWrkTaskPri(param.getWorkSta()); //鎵ц宸ヤ綅
+// command.setTaskNo(Math.toIntExact(param.getWorkNo())); // 宸ヤ綔鍙�
+// command.setTaskStatus(RgvTaskStatusType.PUT); // 浠诲姟妯″紡: 鍙栬揣
+// command.setTargetPosition(Integer.valueOf(param.getStaNo())); // 鐩爣绔�
+//// command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣�
+//// command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯
+//// command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣�
+//// command.setTaskNo2( 0); // 宸ヤ綔鍙�
+//// command.setTaskMode2(RgvTaskModeType.FETCH); // 浠诲姟妯″紡: 鍙栨斁璐�
+//// command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
+//// command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔�
+// command.setCommand(true);
+//
+// return rgvControl(command)? R.ok(): R.error();
+// }
+
+
+
+// @ManagerAuth(memo = "浠诲姟瀹屾垚")
+// @PostMapping("/operator/taskComplete")
+// public R rgvTaskComplete(RgvOperatorParam param){
+// RgvCommand command = new RgvCommand();
+// command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
+// command.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣�
+//// command.setTaskNo1(0); // 宸ヤ綔鍙�
+// command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡
+// command.setSourceStaNo1((short) 0); // 婧愮珯
+// command.setDestinationStaNo1((short) 0); // 鐩爣绔�
+// command.setAckFinish2(true); // 浠诲姟瀹屾垚纭浣�
// command.setTaskNo2( 0); // 宸ヤ綔鍙�
-// command.setTaskMode2(RgvTaskModeType.FETCH); // 浠诲姟妯″紡: 鍙栨斁璐�
-// command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
-// command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔�
- command.setCommand(true);
+// command.setTaskMode2(RgvTaskModeType.NONE); // 浠诲姟妯″紡
+// command.setSourceStaNo2((short) 0); // 婧愮珯
+// command.setDestinationStaNo2((short) 0); // 鐩爣绔�
+// command.setCommand(true);
+//
+// return rgvControl(command)? R.ok(): R.error();
+// }
- return rgvControl(command)? R.ok(): R.error();
- }
+// @ManagerAuth(memo = "娓呴櫎鍛戒护")
+// @PostMapping("/operator/clearCommand")
+// public R rgvClearCommand(RgvOperatorParam param){
+// if (param.getRgvNo() == null) {
+// throw new CoolException("璇烽�夋嫨RGV鍙�");
+// }
+// RgvCommand command = new RgvCommand();
+// command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
+// command.setWrkTaskPri(0); //鎵ц宸ヤ綅
+// command.setTaskNo(Math.toIntExact(0)); // 宸ヤ綔鍙�
+// command.setTaskStatus((short)0); // 浠诲姟妯″紡: 鍙栬揣
+// command.setTargetPosition(0); // 鐩爣绔�
+//
+// return rgvClear(command)? R.ok(): R.error();
+// }
-
-
- @ManagerAuth(memo = "浠诲姟瀹屾垚")
- @PostMapping("/operator/taskComplete")
- public R rgvTaskComplete(RgvOperatorParam param){
- RgvCommand command = new RgvCommand();
- command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
- command.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣�
-// command.setTaskNo1(0); // 宸ヤ綔鍙�
- command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡
- command.setSourceStaNo1((short) 0); // 婧愮珯
- command.setDestinationStaNo1((short) 0); // 鐩爣绔�
- command.setAckFinish2(true); // 浠诲姟瀹屾垚纭浣�
- command.setTaskNo2( 0); // 宸ヤ綔鍙�
- command.setTaskMode2(RgvTaskModeType.NONE); // 浠诲姟妯″紡
- command.setSourceStaNo2((short) 0); // 婧愮珯
- command.setDestinationStaNo2((short) 0); // 鐩爣绔�
- command.setCommand(true);
-
- return rgvControl(command)? R.ok(): R.error();
- }
-
- @ManagerAuth(memo = "娓呴櫎鍛戒护")
- @PostMapping("/operator/clearCommand")
- public R rgvClearCommand(RgvOperatorParam param){
- if (param.getRgvNo() == null) {
- throw new CoolException("璇烽�夋嫨RGV鍙�");
- }
- RgvCommand command = new RgvCommand();
- command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
- command.setWrkTaskPri(0); //鎵ц宸ヤ綅
- command.setTaskNo(Math.toIntExact(0)); // 宸ヤ綔鍙�
- command.setTaskStatus((short)0); // 浠诲姟妯″紡: 鍙栬揣
- command.setTargetPosition(0); // 鐩爣绔�
-
- return rgvClear(command)? R.ok(): R.error();
- }
-
- @ManagerAuth(memo = "鎵嬪姩澶嶄綅")
- @PostMapping("/operator/handleReset")
- public R handleReset(RgvOperatorParam param) throws Exception {
- if (param.getRgvNo() == null) {
- throw new CoolException("璇烽�夋嫨RGV");
- }
- // 鑾峰彇RGV缂撳瓨
- for (RgvSlave rgv : slaveProperties.getRgv()) {
- // 鑾峰彇RGV淇℃伅
- if (param.getRgvNo().equals(rgv.getId())) {
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
- if (rgvThread == null) {
- throw new CoolException("RGV涓嶅湪绾�");
- }
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- throw new CoolException("RGV涓嶅湪绾�");
- }
- RgvCommand Command = new RgvCommand();
- Command.setRgvNo(rgv.getId()); // RGV缂栧彿
- Command.setTaskMode1(RgvTaskModeType.NONE);
- Command.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣�
- Command.setAckFinish2(true); // 浠诲姟瀹屾垚纭浣�
- Command.setCommand(true); // 浠诲姟瀹屾垚纭浣�
- // 寤舵椂鍙戦��
- Thread.sleep(1000L);
- if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(4, Command))) {
- return R.ok();
- } else {
- throw new CoolException("鍛戒护涓嬪彂澶辫触");
- }
-
- }
- }
- return R.error();
- }
-
- private boolean rgvControl(RgvCommand command){
- if (command.getRgvNo() == null) {
- throw new CoolException("璇烽�夋嫨RGV");
- }
- for (RgvSlave rgv : slaveProperties.getRgv()) {
- // 鑾峰彇RGV淇℃伅
- if (command.getRgvNo().equals(rgv.getId())) {
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
- if (rgvThread == null) {
- throw new CoolException("RGV涓嶅湪绾�");
- }
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- throw new CoolException("RGV涓嶅湪绾�");
- }
- if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(2, command))) {
- return true;
- } else {
- throw new CoolException("鍛戒护涓嬪彂澶辫触");
- }
- }
- }
- return false;
- }
-
- private boolean rgvClear(RgvCommand command){
- if (command.getRgvNo() == null) {
- throw new CoolException("璇烽�夋嫨RGV");
- }
- for (RgvSlave rgv : slaveProperties.getRgv()) {
- // 鑾峰彇RGV淇℃伅
- if (command.getRgvNo().equals(rgv.getId())) {
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
- if (rgvThread == null) {
- throw new CoolException("RGV涓嶅湪绾�");
- }
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- throw new CoolException("RGV涓嶅湪绾�");
- }
- if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(3, command))) {
- return true;
- } else {
- throw new CoolException("鍛戒护涓嬪彂澶辫触");
- }
- }
- }
- return false;
-
- }
+// @ManagerAuth(memo = "鎵嬪姩澶嶄綅")
+// @PostMapping("/operator/handleReset")
+// public R handleReset(RgvOperatorParam param) throws Exception {
+// if (param.getRgvNo() == null) {
+// throw new CoolException("璇烽�夋嫨RGV");
+// }
+// // 鑾峰彇RGV缂撳瓨
+// for (RgvSlave rgv : slaveProperties.getRgv()) {
+// // 鑾峰彇RGV淇℃伅
+// if (param.getRgvNo().equals(rgv.getId())) {
+// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+// if (rgvThread == null) {
+// throw new CoolException("RGV涓嶅湪绾�");
+// }
+// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+// if (rgvProtocol == null) {
+// throw new CoolException("RGV涓嶅湪绾�");
+// }
+// RgvCommand Command = new RgvCommand();
+// Command.setRgvNo(rgv.getId()); // RGV缂栧彿
+// Command.setTaskMode1(RgvTaskModeType.NONE);
+// Command.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣�
+// Command.setAckFinish2(true); // 浠诲姟瀹屾垚纭浣�
+// Command.setCommand(true); // 浠诲姟瀹屾垚纭浣�
+// // 寤舵椂鍙戦��
+// Thread.sleep(1000L);
+// if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(4, Command))) {
+// return R.ok();
+// } else {
+// throw new CoolException("鍛戒护涓嬪彂澶辫触");
+// }
+//
+// }
+// }
+// return R.error();
+// }
+//
+// private boolean rgvControl(RgvCommand command){
+// if (command.getRgvNo() == null) {
+// throw new CoolException("璇烽�夋嫨RGV");
+// }
+// for (RgvSlave rgv : slaveProperties.getRgv()) {
+// // 鑾峰彇RGV淇℃伅
+// if (command.getRgvNo().equals(rgv.getId())) {
+// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+// if (rgvThread == null) {
+// throw new CoolException("RGV涓嶅湪绾�");
+// }
+// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+// if (rgvProtocol == null) {
+// throw new CoolException("RGV涓嶅湪绾�");
+// }
+// if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(2, command))) {
+// return true;
+// } else {
+// throw new CoolException("鍛戒护涓嬪彂澶辫触");
+// }
+// }
+// }
+// return false;
+// }
+//
+// private boolean rgvClear(RgvCommand command){
+// if (command.getRgvNo() == null) {
+// throw new CoolException("璇烽�夋嫨RGV");
+// }
+// for (RgvSlave rgv : slaveProperties.getRgv()) {
+// // 鑾峰彇RGV淇℃伅
+// if (command.getRgvNo().equals(rgv.getId())) {
+// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+// if (rgvThread == null) {
+// throw new CoolException("RGV涓嶅湪绾�");
+// }
+// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+// if (rgvProtocol == null) {
+// throw new CoolException("RGV涓嶅湪绾�");
+// }
+// if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(3, command))) {
+// return true;
+// } else {
+// throw new CoolException("鍛戒护涓嬪彂澶辫触");
+// }
+// }
+// }
+// return false;
+//
+// }
}
\ No newline at end of file
diff --git a/src/main/java/com/zy/asrs/entity/DeviceError.java b/src/main/java/com/zy/asrs/entity/DeviceError.java
new file mode 100644
index 0000000..4a979d1
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/DeviceError.java
@@ -0,0 +1,96 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.core.common.Cools;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("wcs_device_error")
+public class DeviceError implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value= "")
+ @TableId(value = "id", type = IdType.AUTO)
+ @TableField("id")
+ private Long id;
+
+ /**
+ * 璁惧
+ */
+ @ApiModelProperty(value= "璁惧")
+ @TableField("device")
+ private String device;
+
+ /**
+ * 寮傚父淇℃伅
+ */
+ @ApiModelProperty(value= "寮傚父淇℃伅")
+ @TableField("msg")
+ private String msg;
+
+ /**
+ * 璁惧ID
+ */
+ @ApiModelProperty(value= "璁惧ID")
+ @TableField("device_id")
+ private Integer deviceId;
+
+ /**
+ * 璁惧ID
+ */
+ @ApiModelProperty(value= "璁惧plcID")
+ @TableField("device_plc_id")
+ private Integer devicePlcId;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @ApiModelProperty(value= "鍒涘缓鏃堕棿")
+ @TableField("create_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @ApiModelProperty(value= "鍒涘缓鏃堕棿")
+ @TableField("appe_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date appeTime;
+
+ public DeviceError() {}
+
+ public DeviceError(Long id, String device, String msg, Integer deviceId, Date createTime) {
+ this.id = id;
+ this.device = device;
+ this.msg = msg;
+ this.deviceId = deviceId;
+ this.createTime = createTime;
+ }
+
+ // DeviceError deviceError = new DeviceError(
+// null, // 璁惧
+// null, // 璁惧ID
+// null, // 鍒涘缓鏃堕棿
+// null // 寮傚父淇℃伅
+// );
+
+ public String getCreateTime$(){
+ if (Cools.isEmpty(this.createTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+ }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/DeviceErrorMapper.java b/src/main/java/com/zy/asrs/mapper/DeviceErrorMapper.java
new file mode 100644
index 0000000..5d883f4
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/DeviceErrorMapper.java
@@ -0,0 +1,33 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.DeviceError;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Mapper
+@Repository
+public interface DeviceErrorMapper extends BaseMapper<DeviceError> {
+
+ DeviceError selectByDeviceAndDeviceId(String device, Integer deviceId);
+
+ Integer deleteByDeviceAndDeviceId(String device, Integer deviceId);
+
+ List<DeviceError> selectDeviceErrorList(
+ @Param("id")Long id,
+ @Param("device")String device,
+ @Param("deviceId")Integer deviceId,
+ @Param("pageNumber")Integer curr,
+ @Param("pageSize")Integer limit
+ ) ;
+
+ Long selectDeviceErrorListTotal(
+ @Param("id")Long id,
+ @Param("device")String device,
+ @Param("deviceId")Integer deviceId
+ ) ;
+
+}
diff --git a/src/main/java/com/zy/asrs/service/DeviceErrorService.java b/src/main/java/com/zy/asrs/service/DeviceErrorService.java
new file mode 100644
index 0000000..cf898a3
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/DeviceErrorService.java
@@ -0,0 +1,19 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.DeviceError;
+
+import java.util.List;
+
+public interface DeviceErrorService extends IService<DeviceError> {
+
+ DeviceError selectByDeviceAndDeviceId(String device, Integer deviceId);
+
+ Boolean addDeviceError(String device, Integer deviceId, String msg);
+
+ Integer deleteDeviceError(String device, Integer deviceId);
+
+ List<DeviceError> selectDeviceErrorList(Long id, String device, Integer deviceId, Integer curr, Integer limit) ;
+
+ Long selectDeviceErrorListTotal(Long id,String device, Integer deviceId) ;
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/DeviceErrorServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/DeviceErrorServiceImpl.java
new file mode 100644
index 0000000..c241fd6
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/DeviceErrorServiceImpl.java
@@ -0,0 +1,55 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.DeviceError;
+import com.zy.asrs.mapper.DeviceErrorMapper;
+import com.zy.asrs.service.DeviceErrorService;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+@Service("deviceErrorService")
+public class DeviceErrorServiceImpl extends ServiceImpl<DeviceErrorMapper, DeviceError> implements DeviceErrorService {
+
+ @Override
+ public DeviceError selectByDeviceAndDeviceId(String device, Integer deviceId) {
+ return this.baseMapper.selectByDeviceAndDeviceId(device, deviceId);
+ }
+
+ @Override
+ public Boolean addDeviceError(String device, Integer deviceId, String msg) {
+// DeviceError error = this.selectByDeviceAndDeviceId(device, deviceId);
+// if (error == null) {
+ DeviceError deviceError = new DeviceError();
+ deviceError.setDevice(device);
+ deviceError.setDeviceId(deviceId);
+ deviceError.setMsg(msg);
+ deviceError.setCreateTime(new Date());
+ Integer insert = 0;
+ try{
+ insert = this.baseMapper.insert(deviceError);
+ } catch (Exception e){
+
+ }
+ return insert> 0;
+// }
+
+// return true;
+ }
+
+ @Override
+ public Integer deleteDeviceError(String device, Integer deviceId) {
+ return this.baseMapper.deleteByDeviceAndDeviceId(device, deviceId);
+ }
+
+ @Override
+ public List<DeviceError> selectDeviceErrorList(Long id, String device, Integer deviceId, Integer curr, Integer limit) {
+ return this.baseMapper.selectDeviceErrorList(id,device, deviceId,curr,limit);
+ }
+
+ @Override
+ public Long selectDeviceErrorListTotal(Long id,String device, Integer deviceId) {
+ return this.baseMapper.selectDeviceErrorListTotal(id,device, deviceId);
+ }
+}
diff --git a/src/main/java/com/zy/asrs/utils/TrackRangeUtils.java b/src/main/java/com/zy/asrs/utils/TrackRangeUtils.java
new file mode 100644
index 0000000..35648dc
--- /dev/null
+++ b/src/main/java/com/zy/asrs/utils/TrackRangeUtils.java
@@ -0,0 +1,81 @@
+package com.zy.asrs.utils;
+
+import com.zy.core.cache.RgvStatusCache;
+import com.zy.core.model.RgvSlave;
+import com.zy.core.model.protocol.RgvProtocol;
+
+/**
+ * Created by Monkey D. Luffy on 2023/7/18
+ */
+public class TrackRangeUtils {
+
+ public boolean IsItSmall(RgvSlave slave) {
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+ if (rgvProtocol.getRgvPos() < rgvProtocolOther.getRgvPos()) {
+ return true;
+ }
+ return false;
+ }
+
+ public Long[][] avoidRange(RgvSlave slave, Long trackEntireLength, Long trackBenchmark, Long avoidDistance) {
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+
+ RgvProtocol rgvProtocolE, rgvProtocolB;
+ if (IsItSmall(slave)) {
+ rgvProtocolE = rgvProtocolOther;
+ rgvProtocolB = rgvProtocol;
+ } else {
+ rgvProtocolE = rgvProtocol;
+ rgvProtocolB = rgvProtocolOther;
+ }
+
+ long entireLengthE = trackEntireLength - rgvProtocolE.getCarBodyKunPeng();
+ long benchmarkE = trackBenchmark + rgvProtocolB.getCarBodyJiaoMing() + rgvProtocolB.getCarBodyKunPeng() + avoidDistance + rgvProtocolE.getCarBodyJiaoMing();
+
+ long entireLengthB = trackEntireLength - rgvProtocolE.getCarBodyKunPeng() - rgvProtocolE.getCarBodyJiaoMing() - avoidDistance - rgvProtocolB.getCarBodyKunPeng();
+ long benchmarkB = trackBenchmark + rgvProtocolB.getCarBodyJiaoMing();
+
+
+ return new Long[][]{new Long[]{entireLengthE, benchmarkE}, new Long[]{entireLengthB, benchmarkB}};
+
+ }
+
+ public Long[][] avoidRangeArr(RgvSlave slave, Long trackEntireLength, Long trackBenchmark, Long avoidDistance) {
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+
+ RgvProtocol rgvProtocolE, rgvProtocolB;
+ if (IsItSmall(slave)) {
+ rgvProtocolE = rgvProtocolOther;
+ rgvProtocolB = rgvProtocol;
+
+ long entireLength = rgvProtocolE.getRgvPosDestination() - rgvProtocolE.getCarBodyJiaoMing() - avoidDistance - rgvProtocolB.getCarBodyKunPeng();
+ long benchmark = trackBenchmark + rgvProtocolB.getCarBodyJiaoMing();
+
+ long entireLengthOther = trackEntireLength - rgvProtocolE.getCarBodyKunPeng();
+ long benchmarkOther = rgvProtocolB.getRgvPosDestination() + rgvProtocolB.getCarBodyKunPeng() + avoidDistance + rgvProtocolE.getCarBodyJiaoMing();
+
+ return new Long[][]{new Long[]{entireLength, benchmark}, new Long[]{entireLengthOther, benchmarkOther}};
+
+ } else {
+ rgvProtocolE = rgvProtocol;
+ rgvProtocolB = rgvProtocolOther;
+
+ long entireLength = trackEntireLength - rgvProtocolE.getCarBodyKunPeng();
+ long benchmark = rgvProtocolB.getRgvPosDestination() + rgvProtocolB.getCarBodyKunPeng() + avoidDistance + rgvProtocolE.getCarBodyJiaoMing();
+
+ long entireLengthOther = rgvProtocolE.getRgvPosDestination() - rgvProtocolE.getCarBodyJiaoMing() - avoidDistance - rgvProtocolB.getCarBodyKunPeng();
+ long benchmarkOther = trackBenchmark + rgvProtocolB.getCarBodyJiaoMing();
+
+ return new Long[][]{new Long[]{entireLength, benchmark}, new Long[]{entireLengthOther, benchmarkOther}};
+ }
+
+ }
+
+ public boolean avoidRange(Long avoid, Long[] range) {
+ return avoid < range[0] && avoid > range[1];
+ }
+
+}
diff --git a/src/main/java/com/zy/core/ThreadHandler.java b/src/main/java/com/zy/core/ThreadHandler.java
index 9b08feb..1713bcc 100644
--- a/src/main/java/com/zy/core/ThreadHandler.java
+++ b/src/main/java/com/zy/core/ThreadHandler.java
@@ -6,4 +6,6 @@
void close();
+ void setWrkSign();
+
}
diff --git a/src/main/java/com/zy/core/cache/RgvErrCache.java b/src/main/java/com/zy/core/cache/RgvErrCache.java
new file mode 100644
index 0000000..4d38622
--- /dev/null
+++ b/src/main/java/com/zy/core/cache/RgvErrCache.java
@@ -0,0 +1,100 @@
+package com.zy.core.cache;
+
+import com.zy.core.model.protocol.RgvErrProtocol;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+public class RgvErrCache {
+ // 鏈湴缂撳瓨锛岄敭涓� currentPosition锛屽�间负 DeviceStatus
+ private static final ConcurrentHashMap<Integer, RgvErrProtocol> cache = new ConcurrentHashMap<>();
+
+ /**
+ * 鏇存柊璁惧鐘舵��
+ */
+ public static void updateRgvStatus(RgvErrProtocol status) {
+ try {
+ cache.put(status.getRgvNo(), status);
+ } finally {
+ }
+ }
+
+
+ /**
+ * 鏇存柊璁惧鐘舵��
+ */
+ public static void updateRgvErr(Integer rgvNo,String error) {
+ try {
+ RgvErrProtocol rgvErrProtocol = cache.get(rgvNo);
+ if (rgvErrProtocol == null){
+ rgvErrProtocol = new RgvErrProtocol();
+ rgvErrProtocol.setRgvNo(rgvNo);
+ }
+ if (!rgvErrProtocol.getError().equals(error)){
+ rgvErrProtocol.setError(error);
+ cache.put(rgvErrProtocol.getRgvNo(), rgvErrProtocol);
+ }
+ } finally {
+ }
+ }
+
+
+ /**
+ * 鏇存柊璁惧鐘舵��
+ */
+ public static void updateRgvErr(Integer rgvNo) {
+ try {
+ RgvErrProtocol rgvErrProtocol = cache.get(rgvNo);
+ if (rgvErrProtocol == null){
+ rgvErrProtocol = new RgvErrProtocol();
+ rgvErrProtocol.setRgvNo(rgvNo);
+ }
+ if (!rgvErrProtocol.getError().equals("-")){
+ rgvErrProtocol.setError("-");
+ cache.put(rgvErrProtocol.getRgvNo(), rgvErrProtocol);
+ }
+ } finally {
+ }
+ }
+
+
+
+
+ /**
+ * 鏇存柊璁惧鐘舵��
+ */
+ public static String getErrorDev(Integer rgvNo) {
+ try {
+ RgvErrProtocol rgvErrProtocol = cache.get(rgvNo);
+ if (rgvErrProtocol == null){
+ rgvErrProtocol = new RgvErrProtocol();
+ rgvErrProtocol.setRgvNo(rgvNo);
+ }
+ return rgvErrProtocol.getError();
+ } finally {
+ }
+ }
+
+ /**
+ * 鑾峰彇璁惧鐘舵��
+ */
+ public static RgvErrProtocol getRgvStatus(Integer rgvNo) {
+ try {
+ return cache.get(rgvNo);
+ } finally {
+ }
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夎澶囩姸鎬�
+ */
+ public static ConcurrentHashMap<Integer, RgvErrProtocol> getAllRgvStatus() {
+ try {
+ return new ConcurrentHashMap<>(cache); // 杩斿洖鍓湰
+ } finally {
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/core/cache/RgvRunCache.java b/src/main/java/com/zy/core/cache/RgvRunCache.java
new file mode 100644
index 0000000..882cad3
--- /dev/null
+++ b/src/main/java/com/zy/core/cache/RgvRunCache.java
@@ -0,0 +1,59 @@
+package com.zy.core.cache;
+
+import com.core.common.Cools;
+import com.zy.core.model.protocol.RgvRunProtocol;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+public class RgvRunCache {
+ // 鏈湴缂撳瓨锛岄敭涓� currentPosition锛屽�间负 DeviceStatus
+ private static final ConcurrentHashMap<String, RgvRunProtocol> cache = new ConcurrentHashMap<>();
+
+ /**
+ * 鏇存柊璁惧鐘舵��
+ */
+ public static void updateRgvStatus(RgvRunProtocol status) {
+ try {
+ cache.put(status.getDev(), status);
+ } finally {
+ }
+ }
+
+ /**
+ * 鑾峰彇璁惧鐘舵��
+ */
+ public static RgvRunProtocol getRgvRun() {
+ try {
+ RgvRunProtocol rgv = cache.get("RGV");
+ if (Cools.isEmpty(rgv)){
+ rgv = new RgvRunProtocol();
+ }
+ return rgv;
+ } finally {
+ }
+ }
+
+ /**
+ * 鑾峰彇璁惧鐘舵��
+ */
+ public static RgvRunProtocol getRgvStatus(String dev) {
+ try {
+ return cache.get(dev);
+ } finally {
+ }
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夎澶囩姸鎬�
+ */
+ public static ConcurrentHashMap<String, RgvRunProtocol> getAllRgvStatus() {
+ try {
+ return new ConcurrentHashMap<>(cache); // 杩斿洖鍓湰
+ } finally {
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/core/cache/RgvStatusCache.java b/src/main/java/com/zy/core/cache/RgvStatusCache.java
new file mode 100644
index 0000000..d6ddc9a
--- /dev/null
+++ b/src/main/java/com/zy/core/cache/RgvStatusCache.java
@@ -0,0 +1,62 @@
+package com.zy.core.cache;
+
+import com.zy.core.model.protocol.RgvProtocol;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+public class RgvStatusCache {
+ // 鏈湴缂撳瓨锛岄敭涓� currentPosition锛屽�间负 DeviceStatus
+ private static final ConcurrentHashMap<Integer, RgvProtocol> cache = new ConcurrentHashMap<>();
+
+ /**
+ * 鏇存柊璁惧鐘舵��
+ */
+ public static void updateRgvStatus(RgvProtocol status) {
+ try {
+ if (status.getRgvNo()!=1 && status.getRgvNo() != 2){
+ return;
+ }
+ cache.put(status.getRgvNo(), status);
+ } finally {
+ }
+ }
+
+ /**
+ * 鑾峰彇璁惧鐘舵��
+ */
+ public static RgvProtocol getRgvStatus(Integer RgvNo) {
+ try {
+ return cache.get(RgvNo);
+ } finally {
+ }
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夎澶囩姸鎬�
+ */
+ public static ConcurrentHashMap<Integer, RgvProtocol> getAllRgvStatus() {
+ try {
+ return new ConcurrentHashMap<>(cache); // 杩斿洖鍓湰
+ } finally {
+ }
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夎澶囩姸鎬�
+ */
+ public static void removeAll() {
+ try {
+ ConcurrentHashMap<Integer, RgvProtocol> integerRgvProtocolConcurrentHashMap = new ConcurrentHashMap<>(cache);
+ if (integerRgvProtocolConcurrentHashMap.values().size()>2){
+ for (RgvProtocol rgvProtocol : integerRgvProtocolConcurrentHashMap.values()){
+ cache.remove(rgvProtocol.getRgvNo());
+ }
+ }
+ } finally {
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/core/cache/RgvTaskCache.java b/src/main/java/com/zy/core/cache/RgvTaskCache.java
new file mode 100644
index 0000000..1c9d7a3
--- /dev/null
+++ b/src/main/java/com/zy/core/cache/RgvTaskCache.java
@@ -0,0 +1,44 @@
+package com.zy.core.cache;
+
+import com.zy.core.model.protocol.RgvTaskProtocol;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+public class RgvTaskCache {
+ // 鏈湴缂撳瓨锛岄敭涓� currentPosition锛屽�间负 DeviceStatus
+ private static final ConcurrentHashMap<Integer, RgvTaskProtocol> cache = new ConcurrentHashMap<>();
+
+ /**
+ * 鏇存柊璁惧鐘舵��
+ */
+ public static void updateRgvStatus(RgvTaskProtocol status) {
+ try {
+ cache.put(status.getRgvNo(), status);
+ } finally {
+ }
+ }
+
+ /**
+ * 鑾峰彇璁惧鐘舵��
+ */
+ public static RgvTaskProtocol getRgvStatus(Integer RgvNo) {
+ try {
+ return cache.get(RgvNo);
+ } finally {
+ }
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夎澶囩姸鎬�
+ */
+ public static ConcurrentHashMap<Integer, RgvTaskProtocol> getAllRgvStatus() {
+ try {
+ return new ConcurrentHashMap<>(cache); // 杩斿洖鍓湰
+ } finally {
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/core/cache/TaskProtocolCache.java b/src/main/java/com/zy/core/cache/TaskProtocolCache.java
new file mode 100644
index 0000000..dcba42f
--- /dev/null
+++ b/src/main/java/com/zy/core/cache/TaskProtocolCache.java
@@ -0,0 +1,184 @@
+package com.zy.core.cache;
+
+import com.zy.core.model.protocol.TaskProtocol;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+@Slf4j
+public class TaskProtocolCache {
+ // 鏈湴缂撳瓨锛岄敭涓� taskNo锛屽�间负 TaskProtocol
+ private final ConcurrentHashMap<String, TaskProtocol> cache = new ConcurrentHashMap<>();
+
+ // 璇诲啓閿侊紝纭繚绾跨▼瀹夊叏
+// private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+
+ /**
+ * 鏇存柊璁惧鐘舵��
+ */
+ public void updateTaskProtocol(TaskProtocol status) {
+ cache.put(status.getTaskNoDirection(), status);
+ }
+
+ /**
+ * 鍒犻櫎浠诲姟缂撳瓨
+ */
+ public TaskProtocol removeTaskProtocol(String taskNoDirection) {
+// lock.readLock().lock(); // 鍔犺閿�
+ try {
+ return cache.remove(taskNoDirection);
+ } finally {
+// lock.readLock().unlock(); // 閲婃斁璇婚攣
+ }
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈変换鍔�
+ */
+ public ConcurrentHashMap<String, TaskProtocol> getAllTaskProtocol() {
+// lock.readLock().lock(); // 鍔犺閿�
+ try {
+ return new ConcurrentHashMap<>(cache); // 杩斿洖鍓湰
+ } finally {
+// lock.readLock().unlock(); // 閲婃斁璇婚攣
+ }
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夊彇浠诲姟
+ */
+ public List<TaskProtocol> getTakeOrPutTaskProtocol(short loaded) {
+ if (loaded == 0){
+ return getAllTakeTaskProtocol();
+ } else if (loaded == 1){
+ return getAllPutTaskProtocol();
+ }
+ return new ArrayList<>();
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夊彇浠诲姟
+ */
+ public List<TaskProtocol> getAllTakeTaskProtocol() {
+// lock.readLock().lock(); // 鍔犺閿�
+ try {
+ List<TaskProtocol> allTakeTaskProtocol = new ArrayList<>();
+ for (TaskProtocol task : cache.values()) {
+ if (task.getTaskStatus()==2) {
+ allTakeTaskProtocol.add(task);
+ }
+ }
+ return allTakeTaskProtocol; // 杩斿洖鍓湰
+ } finally {
+// lock.readLock().unlock(); // 閲婃斁璇婚攣
+ }
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夋斁浠诲姟
+ */
+ public List<TaskProtocol> getAllPutTaskProtocol() {
+// lock.readLock().lock(); // 鍔犺閿�
+ try {
+ List<TaskProtocol> allPutTaskProtocol = new ArrayList<>();
+ for (TaskProtocol task : cache.values()) {
+ if (task.getTaskStatus()==3) {
+ allPutTaskProtocol.add(task);
+ }
+ }
+ return allPutTaskProtocol; // 杩斿洖鍓湰
+ } finally {
+// lock.readLock().unlock(); // 閲婃斁璇婚攣
+ }
+ }
+
+ /**
+ * 鑾峰彇鎵�鏈夎璧颁换鍔�
+ */
+ public List<TaskProtocol> getAllWalkTaskProtocol() {
+// lock.readLock().lock(); // 鍔犺閿�
+ try {
+ List<TaskProtocol> allWalkTaskProtocol = new ArrayList<>();
+ for (TaskProtocol task : cache.values()) {
+ if (task.getTaskStatus()==1) {
+ allWalkTaskProtocol.add(task);
+ }
+ }
+ return allWalkTaskProtocol; // 杩斿洖鍓湰
+ } finally {
+// lock.readLock().unlock(); // 閲婃斁璇婚攣
+ }
+ }
+
+
+
+ /**
+ * 鏌ヨ鏄惁鏈夊彲鎵ц浠诲姟
+ */
+ public boolean isNowPosRun(Long targetPosition) {
+// lock.readLock().lock(); // 鍔犺閿�
+ try {
+ List<TaskProtocol> allWalkTaskProtocol = new ArrayList<>();
+ for (TaskProtocol task : cache.values()) {
+ long runPos = Math.abs(task.getTargetPosition() - targetPosition);
+ if (runPos<50) {
+ return true;
+ }
+ }
+ return false; // 杩斿洖鍓湰
+ } finally {
+// lock.readLock().unlock(); // 閲婃斁璇婚攣
+ }
+ }
+ /**
+ * 鏌ヨ鏄惁鏈夊彲鎵ц浠诲姟
+ */
+ public TaskProtocol getNowPosRunTask(Long targetPosition) {
+// lock.readLock().lock(); // 鍔犺閿�
+ try {
+ for (TaskProtocol task : cache.values()) {
+ long runPos = Math.abs(task.getTargetPosition() - targetPosition);
+ if (runPos<50) {
+ return task;
+ }
+ }
+ return null; // 杩斿洖鍓湰
+ } finally {
+// lock.readLock().unlock(); // 閲婃斁璇婚攣
+ }
+ }
+
+
+ /**
+ * 鏌ヨ鏄惁鏈夊彲鎵ц浠诲姟
+ */
+ public TaskProtocol getNowPosRunTask2() {
+// lock.readLock().lock(); // 鍔犺閿�
+ try {
+ for (TaskProtocol task : cache.values()) {
+ if (task.getTaskStatus()==1) {
+ return task;
+ }
+ }
+ for (TaskProtocol task : cache.values()) {
+ if (task.getTaskStatus()==2) {
+ return task;
+ }
+ }
+ for (TaskProtocol task : cache.values()) {
+ if (task.getTaskStatus()==3) {
+ return task;
+ }
+ }
+ return null; // 杩斿洖鍓湰
+ } finally {
+// lock.readLock().unlock(); // 閲婃斁璇婚攣
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/core/enums/RgvStatusType.java b/src/main/java/com/zy/core/enums/RgvStatusType.java
index 2b1abff..a3eb919 100644
--- a/src/main/java/com/zy/core/enums/RgvStatusType.java
+++ b/src/main/java/com/zy/core/enums/RgvStatusType.java
@@ -2,45 +2,51 @@
public enum RgvStatusType {
- NONE(-1, "绂荤嚎"),
- IDLE(0, "绌洪棽"),
- WORKING(1, "浣滀笟涓�"),
- SOS(2, "鎶ヨ"),
- WORKING1(3, "浣滀笟涓�"),
- FETCHING(11, "鍙栬揣涓�"),
- PUTTING(12, "鏀捐揣涓�"),
- WAITING(90, "浠诲姟瀹屾垚绛夊緟WCS纭"),
- FETCHWAITING(91, "鍙栬揣浠诲姟瀹屾垚绛夊緟WCS纭"),
+ NONE(-1, "绂荤嚎","ffffff"),
+ NONE0(0, "绂荤嚎","ffffff"),
+ IDLE(1, "绌洪棽","ffffff"),
+ WORKING(2, "浣滀笟涓�","ffffff"),// 1锛氳璧� 2锛氬彇 3锛氭斁
+ SOS(3, "鎶ヨ","ffffff"),
+ FETCHING(11, "鍙栬揣涓�","ffffff"),
+ PUTTING(12, "鏀捐揣涓�","ffffff"),
+ WAITING(90, "浠诲姟瀹屾垚绛夊緟WCS纭","ffffff"),
+ FETCHWAITING(91, "鍙栬揣浠诲姟瀹屾垚绛夊緟WCS纭","ffffff"),
+ SOS99(99, "鎶ヨ99","ffffff"),
+ OTHER(100, "鍏跺畠100","ffffff"),
+ MAN(110, "浣滀笟鍚姩涓�","ffffff"),
+ ROAM(100000, "婕父","ffffff")
;
public Integer id;
public String desc;
- RgvStatusType(Integer id, String desc) {
+ public String color;
+ RgvStatusType(Integer id, String desc, String color) {
this.id = id;
this.desc = desc;
+ this.color = color;
}
public static RgvStatusType get(Short id) {
if (null == id) {
- return null;
+ return OTHER;
}
for (RgvStatusType type : RgvStatusType.values()) {
if (type.id.equals(id.intValue())) {
return type;
}
}
- return NONE;
+ return OTHER;
}
public static RgvStatusType get(RgvStatusType type) {
if (null == type) {
- return null;
+ return OTHER;
}
for (RgvStatusType rgvStatusType : RgvStatusType.values()) {
if (rgvStatusType == type) {
return rgvStatusType;
}
}
- return null;
+ return OTHER;
}
}
diff --git a/src/main/java/com/zy/core/model/RgvSlave.java b/src/main/java/com/zy/core/model/RgvSlave.java
index 321a4ec..546ea39 100644
--- a/src/main/java/com/zy/core/model/RgvSlave.java
+++ b/src/main/java/com/zy/core/model/RgvSlave.java
@@ -22,29 +22,16 @@
private Boolean demo;
+ private Integer otherId;
+
+ private Long carBodyJiaoMing;
+
+ private Long carBodyKunPeng;
+
// RGV鍏ュ簱婧愮珯鐐�
- private List<RgvStn> rgvInSStn = new ArrayList<>();
-
- // RGV鍑哄簱婧愮珯鐐�
- private List<RgvStn> rgvOutSStn = new ArrayList<>();
-
- // RGV鍙犵洏
- private List<RgvStn> rgvEmptyInSStn = new ArrayList<>();
-
- // RGV绌烘澘鍏ュ簱
- private List<RgvStn> rgvEmptyOutSStn = new ArrayList<>();
-
- // RGV鍑哄簱鐩爣绔欑偣
- private List<RgvStn> rgvDestStn = new ArrayList<>();
-
- // RGV鍏ュ簱鍙栬揣绔欑偣
- private List<RgvStn> rgvInTStn = new ArrayList<>();
- // RGV鍏ュ簱鏀捐揣绔欑偣
- private List<RgvStn> rgvInPStn = new ArrayList<>();
- // RGV鍑哄簱鍙栬揣绔欑偣
- private List<RgvStn> rgvOutTStn = new ArrayList<>();
- //RGV鍑哄簱鏀捐揣绔欑偣
- private List<RgvStn> rgvOutPStn = new ArrayList<>();
+ private List<RgvStn> rgvInSta = new ArrayList<>();
+ private List<RgvStn> rgvOutSta = new ArrayList<>();
+ private List<RgvStn> rgvSuperSta = new ArrayList<>();
@Data
public static class RgvStn {
@@ -54,17 +41,15 @@
// RGV绔欑偣缂栧彿
private Integer staNo;
- // RGV浜岀珯鐐圭紪鍙�
- private Integer staNo2;
-// // 鎺�
-// private Integer row;
-//
-// // 鍒�
-// private Integer bay;
-//
-// // 灞�
-// private Integer lev;
+ // RGV绔欑偣缂栧彿
+ private boolean direction;
+
+ // RGV绔欑偣缂栧彿
+ private Integer staNoOther;
+
+ // RGV绔欑偣缂栧彿
+ private boolean directionOther;
}
diff --git a/src/main/java/com/zy/core/model/protocol/RgvErrProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvErrProtocol.java
new file mode 100644
index 0000000..b72d9c0
--- /dev/null
+++ b/src/main/java/com/zy/core/model/protocol/RgvErrProtocol.java
@@ -0,0 +1,16 @@
+package com.zy.core.model.protocol;
+
+import lombok.Data;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+@Data
+public class RgvErrProtocol {
+
+ private Integer rgvNo;
+
+ public String error = "-";
+
+ public RgvErrProtocol(){}
+}
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 ac5bec5..8e984e1 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -1,99 +1,59 @@
package com.zy.core.model.protocol;
import com.zy.asrs.entity.BasRgv;
-import com.zy.asrs.entity.BasRgvErrorLog;
import com.zy.core.enums.RgvModeType;
import com.zy.core.enums.RgvStatusType;
import lombok.Data;
-
-import javax.swing.*;
-import java.util.HashMap;
-import java.util.Map;
/**
* Created by vincent on 2020/8/7
*/
@Data
-public class RgvProtocol implements Cloneable{
+public class RgvProtocol {
- private short RgvNo;
+ private Integer RgvNo;
/**
* 1 = 鎵嬪姩妯″紡
* 2 = 鑷姩妯″紡
* 3 = 鐢佃剳妯″紡
*/
- public Short mode;
+ public Short mode = -1;
- public RgvModeType modeType;
-
- private transient Long loadingStartTime;
+ public RgvModeType modeType = RgvModeType.NONE;
/**
- * 鎵ц浼樺厛绾�
- * 0:涓嶅垽鏂�
- * 1锛氬伐浣�1鍏堟墽琛�
- * 2锛氬伐浣�2鍏堟墽琛�
- */
- public Short wrkTaskPri;
-
- public Short wrkTaskMove1;
-
- public Short wrkTaskMove2;
-
-
- /**
- * RGV褰撳墠鐘舵�佸伐浣�1
+ * RGV褰撳墠鐘舵��
* 0锛氱┖闂诧紝鏃犱换鍔�
* 1锛氫綔涓氫腑
* 2锛氭姤璀�
*/
- public Short status;
-
+ public Short status = -1;
/**
* 鐘舵�佹灇涓�
*/
- public RgvStatusType statusType;
+ public RgvStatusType statusType = RgvStatusType.NONE;
/**
- * 宸ヤ綅1浠诲姟鍙�
+ * 浠诲姟鍙�
*/
- public Integer taskNo1 = 0;
- /**
- * 宸ヤ綅1鐩爣绔�
- */
- public Integer staNo1 = 0;
+ public Long taskNo = 0L;
/**
- * RGV宸ヤ綅1褰撳墠鐘舵��
- * 0锛氱┖闂诧紝鏃犱换鍔�
- * 11锛氬彇璐т腑
- * 12锛氭斁璐т腑
- * 10锛氫换鍔″畬鎴愮瓑寰匴CS纭
+ * 鏈夌墿
*/
- public Short status1;
-
- /**
- * 鐘舵�佹灇涓�
- */
- public RgvStatusType statusType1;
-
- /**
- * 宸ヤ綅1鏈夌墿
- */
- public Boolean loaded1;
+ public Short loaded = -1;//0 鏃犵墿锛�1 鏈夌墿
/**
* RGV褰撳墠浣嶇疆
*/
- public Integer RgvPos;
+ public Long RgvPos = 0L;
/**
- * RGV褰撳墠鐩殑浣嶇疆
+ * RGV鐩殑浣嶇疆
*/
- public Integer RgvPosDestination;
-
+ public Long RgvPosDestination = 0L;
/**
* 璧拌鍦ㄥ畾浣�
@@ -103,176 +63,9 @@
public Short walkPos;
/**
- * 鎬ュ仠瑙﹀彂
- */
- public Boolean err1;
-
- /**
- *
- */
- public Boolean err2;
-
- /**
- * 鏈夎祫鏂欐棤鐗�
- */
- public Boolean err3;
-
- /**
- * 鍛戒护閿欒璧拌鑱旇皟鍐茬獊
- */
- public Boolean err4;
-
- /**
- * 鐩爣涓鸿秴杩囪璧版瀬闄�
- */
- public Boolean err5;
-
- /**
- * 鍙橀鍣ㄥ紓甯�
- */
- public Boolean err6;
-
- /**
- * 鍏夌數寮傚父
- */
- public Boolean err7;
-
- public Boolean err8;
- public Boolean err9;
- public Boolean err10;
- public Boolean err11;
- public Boolean err12;
-
- ////////////////////// 宸ヤ綅2瀹氫箟 //////////////////////////////////////////////////
- /**
- * 宸ヤ綅2浠诲姟鍙�
- */
- public Integer taskNo2 = 0;
- /**
- * 宸ヤ綅1鐩爣绔�
- */
- public Integer staNo2 = 0;
-
- /**
- * RGV宸ヤ綅2褰撳墠鐘舵��
- * 0锛氱┖闂诧紝鏃犱换鍔�
- * 11锛氬彇璐т腑
- * 12锛氭斁璐т腑
- * 10锛氫换鍔″畬鎴愮瓑寰匴CS纭
- */
- public Short status2;
-
- /**
- * 鐘舵�佹灇涓�
- */
- public RgvStatusType statusType2;
-
- /**
- * 宸ヤ綅2鏈夌墿
- */
- public Boolean loaded2;
-
-// /**
-// * 鎬ュ仠
-// */
-// public Boolean err21;
-//
-// /**
-// * 鏈夌墿鏃犺祫鏂�
-// */
-// public Boolean err22;
-//
-// /**
-// * 鏈夎祫鏂欐棤鐗�
-// */
-// public Boolean err23;
-//
-// /**
-// * 鍛戒护閿欒璧拌鑱旇皟鍐茬獊
-// */
-// public Boolean err24;
-//
-// /**
-// * 鐩爣涓鸿秴杩囪璧版瀬闄�
-// */
-// public Boolean err25;
-//
-// /**
-// * 鍙橀鍣ㄥ紓甯�
-// */
-// public Boolean err26;
-//
-// /**
-// * 鍏夌數寮傚父
-// */
-// public Boolean err27;
-
-
- ///////////////////////////////////////////////////////////////////////////////////////
- //閰嶇疆淇″彿-----------------------------------------------------------------------------
- // 鏁呴殰璇诲彇閿佸畾鏍囪
- private boolean errorMk = false;
- //鍐欏叆鏍囪
- private boolean writeMk = true;
- private Boolean chainForward1 = false; // 閾炬潯鍓嶈繘 1
- private Boolean chainReverse1 = false; // 閾炬潯鍚庨�� 1
- private Boolean inverterAlarm = false; // 鍙橀鍣ㄦ姤璀�
- private Boolean leftOverlimit2 = false; // 宸﹁秴闄� 2
- private Boolean rightOverlimit2 = false; // 鍙宠秴闄� 2
- private Boolean leftAtPosition2 = false; // 宸﹀埌浣� 2
- private Boolean rightAtPosition2 = false; // 鍙冲埌浣� 2
- private Boolean cargoSpeedReduction = false; // 璐х墿鍑忛��
- private Boolean conveyorInverterAlarm2 = false; // 杈撻�佸彉棰戝櫒鎶ヨ 2
-
- private Boolean emergencyStop = false; // 鎬ュ仠瑙﹀彂
- private Boolean slot1EmptyNoData = false; // 1鍙蜂綅鏈夌墿鏃犺祫鏂�
- private Boolean slot2EmptyNoData = false; // 2鍙蜂綅鏈夌墿鏃犺祫鏂�
- private Boolean commandErrorChainConflict = false; // 鍛戒护閿欒璧伴摼鏉″啿绐�
- private Boolean targetPositionIssue = false; // 鐩爣浣嶄笅鍙戦敊璇�
- private Boolean travelInverterError = false; // 璧拌鍙橀鍣ㄥ紓甯�
- private Boolean photoelectric1Error = false; // 1鍙峰厜鐢靛紓甯�
- private Boolean photoelectric2Error = false; // 2鍙峰厜鐢靛紓甯�
- private Boolean timeoutConnectionWithLine = false; // 涓庤緭绾挎椂鎺ヨ秴鏃�
- private Boolean leftRollerTimeout = false; // 宸︿晶婊氱瓛杩愯瓒呮椂
- private Boolean rightRollerTimeout = false; // 鍙充晶婊氱瓛杩愯瓒呮椂
- private Boolean rgvRunTimeout = false; // rgv杩愯瓒呮椂
- private Boolean position1ChainInverterError = false; // 1鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父
- private Boolean position2ChainInverterError = false; // 2鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父
- private Boolean frontRearLimit = false; // 鍓嶅悗鏋侀檺浣�
- private Boolean emergencyButton = false; // 鎬ュ仠鎸夐挳
- private Boolean forwardButton = false; // 鍓嶈繘鎸夐挳
- private Boolean reverseButton = false; // 鍚庨��鎸夐挳
- private Boolean localRemote = false; // 鏈湴/杩滅▼
- private Boolean reset = false; // 澶嶄綅
- private Boolean travelBrakeSwitch = false; // 璧拌鎶遍椄寮�鍏抽挳
- private Boolean travelSpeedLimitPhotoelectric = false; // 璧拌寮哄埗鍑忛�熷厜鐢�
- private Boolean leftOverlimit1 = false; // 宸﹁秴闄� 1
- private Boolean rightOverlimit1 = false; // 鍙宠秴闄� 1
- private Boolean leftAtPosition1 = false; // 宸﹀埌浣� 1
- private Boolean rightAtPosition1 = false; // 鍙冲埌浣� 1
-
- private Boolean rightConveyor2 = false; // 鍙宠緭閫� 2
- private Boolean leftConveyor2 = false; // 宸﹁緭閫� 2
- //---------------------------------------------------------------------
- /**
* 寮傚父鐮�
*/
public Short alarm;
-
- /**
- * 蹇冭烦鎸囦护 1-2姣忕鍒囨崲涓�娆�
- */
- public Short heart;
-
- private Short temp1;
-
- private Short temp2;
-
- private Short temp3;
-
- private Short temp4;
-
- private Short temp5;
/**
* X琛岃蛋琛岄�熷害m/min
@@ -280,59 +73,54 @@
private Float xSpeed;
/**
- * 鍫嗗灈鏈虹疮璁¤蛋琛岃窛绂籯m
+ * 绱璧拌璺濈km
*/
public Float xDistance;
/**
- * 鍫嗗灈鏈虹疮璁¤蛋琛屾椂闀縣
+ * 绱璧拌鏃堕暱h
*/
public Float xDuration;
+ /**
+ * 杞﹁韩
+ */
+ public Long carBodyJiaoMing = 2000L;
- public BasRgvErrorLog toSqlModelError(){
- BasRgvErrorLog basRgvErrorLog = new BasRgvErrorLog();
- basRgvErrorLog.setRgvNo((int) RgvNo);// 璁惧鍙凤紙鍋囪鏈夊畾涔� siteId锛�
- basRgvErrorLog.setChainForward1(chainForward1 ? "Y" : "N"); // 閾炬潯鍓嶈繘 1
- basRgvErrorLog.setChainReverse1(chainReverse1 ? "Y" : "N"); // 閾炬潯鍚庨�� 1
- basRgvErrorLog.setInverterAlarm(inverterAlarm ? "Y" : "N"); // 鍙橀鍣ㄦ姤璀�
- basRgvErrorLog.setLeftOverlimit2(leftOverlimit2 ? "Y" : "N"); // 宸﹁秴闄� 2
- basRgvErrorLog.setRightOverlimit2(rightOverlimit2 ? "Y" : "N"); // 鍙宠秴闄� 2
- basRgvErrorLog.setLeftAtPosition2(leftAtPosition2 ? "Y" : "N"); // 宸﹀埌浣� 2
- basRgvErrorLog.setRightAtPosition2(rightAtPosition2 ? "Y" : "N"); // 鍙冲埌浣� 2
- basRgvErrorLog.setCargoSpeedReduction(cargoSpeedReduction ? "Y" : "N"); // 璐х墿鍑忛��
- basRgvErrorLog.setConveyorInverterAlarm2(conveyorInverterAlarm2 ? "Y" : "N"); // 杈撻�佸彉棰戝櫒鎶ヨ 2
- basRgvErrorLog.setEmergencyStop(emergencyStop ? "Y" : "N"); // 鎬ュ仠瑙﹀彂
- basRgvErrorLog.setSlot1EmptyNoData(slot1EmptyNoData ? "Y" : "N"); // 1鍙蜂綅鏈夌墿鏃犺祫鏂�
- basRgvErrorLog.setSlot2EmptyNoData(slot2EmptyNoData ? "Y" : "N"); // 2鍙蜂綅鏈夌墿鏃犺祫鏂�
- basRgvErrorLog.setCommandErrorChainConflict(commandErrorChainConflict ? "Y" : "N"); // 鍛戒护閿欒璧伴摼鏉″啿绐�
- basRgvErrorLog.setTargetPositionIssue(targetPositionIssue ? "Y" : "N"); // 鐩爣浣嶄笅鍙戦敊璇�
- basRgvErrorLog.setTravelInverterError(travelInverterError ? "Y" : "N"); // 璧拌鍙橀鍣ㄥ紓甯�
- basRgvErrorLog.setPhotoelectric1Error(photoelectric1Error ? "Y" : "N"); // 1鍙峰厜鐢靛紓甯�
- basRgvErrorLog.setPhotoelectric2Error(photoelectric2Error ? "Y" : "N"); // 2鍙峰厜鐢靛紓甯�
- basRgvErrorLog.setTimeoutConnectionWithLine(timeoutConnectionWithLine ? "Y" : "N"); // 涓庤緭绾挎椂鎺ヨ秴鏃�
- basRgvErrorLog.setLeftRollerTimeout(leftRollerTimeout ? "Y" : "N"); // 宸︿晶婊氱瓛杩愯瓒呮椂
- basRgvErrorLog.setRightRollerTimeout(rightRollerTimeout ? "Y" : "N"); // 鍙充晶婊氱瓛杩愯瓒呮椂
- basRgvErrorLog.setRgvRunTimeout(rgvRunTimeout ? "Y" : "N"); // rgv杩愯瓒呮椂
- basRgvErrorLog.setPosition1ChainInverterError(position1ChainInverterError ? "Y" : "N"); // 1鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父
- basRgvErrorLog.setPosition2ChainInverterError(position2ChainInverterError ? "Y" : "N"); // 2鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父
- basRgvErrorLog.setFrontRearLimit(frontRearLimit ? "Y" : "N"); // 鍓嶅悗鏋侀檺浣�
- basRgvErrorLog.setEmergencyButton(emergencyButton ? "Y" : "N"); // 鎬ュ仠鎸夐挳
- basRgvErrorLog.setForwardButton(forwardButton ? "Y" : "N"); // 鍓嶈繘鎸夐挳
- basRgvErrorLog.setReverseButton(reverseButton ? "Y" : "N"); // 鍚庨��鎸夐挳
- basRgvErrorLog.setLocalRemote(localRemote ? "Y" : "N"); // 鏈湴/杩滅▼
- basRgvErrorLog.setReset(reset ? "Y" : "N"); // 澶嶄綅
- basRgvErrorLog.setTravelBrakeSwitch(travelBrakeSwitch ? "Y" : "N"); // 璧拌鎶遍椄寮�鍏抽挳
- basRgvErrorLog.setTravelSpeedLimitPhotoelectric(travelSpeedLimitPhotoelectric ? "Y" : "N"); // 璧拌寮哄埗鍑忛�熷厜鐢�
- basRgvErrorLog.setLeftOverlimit1(leftOverlimit1 ? "Y" : "N"); // 宸﹁秴闄� 1
- basRgvErrorLog.setRightOverlimit1(rightOverlimit1 ? "Y" : "N"); // 鍙宠秴闄� 1
- basRgvErrorLog.setLeftAtPosition1(leftAtPosition1 ? "Y" : "N"); // 宸﹀埌浣� 1
- basRgvErrorLog.setRightAtPosition1(rightAtPosition1 ? "Y" : "N"); // 鍙冲埌浣� 1
- basRgvErrorLog.setRightConveyor2(rightConveyor2 ? "Y" : "N"); // 鍙宠緭閫� 2
- basRgvErrorLog.setLeftConveyor2(leftConveyor2 ? "Y" : "N"); // 宸﹁緭閫� 2
+ /**
+ * 杞﹁韩
+ */
+ public Long carBodyKunPeng = 15000L;
- return basRgvErrorLog;
- }
+ /**
+ * 鏄惁鍚敤
+ */
+ public boolean statusEnable;//0\1\2
+
+
+
+ // 鎬ュ仠
+ private boolean err1;
+
+ // 鏈夌墿鏃犺祫鏂�
+ private boolean err2;
+
+ // 鍛戒护閿欒璧拌閾炬潯鍐茬獊
+ private boolean err3;
+
+ // 鐩爣涓鸿秴杩囪蛋琛屾瀬闄�
+ private boolean err4;
+
+ // 鍙橀鍣ㄥ紓甯�
+ private boolean err5;
+
+ // 鍏夌數寮傚父
+ private boolean err6;
+ //灏忚溅妯″紡鍒囨崲閿欒
+ private boolean err7;
+ //鍏朵粬鏈煡寮傚父
+ private boolean err8;
+ private String errorRgv;
public void setMode(Short mode) {
this.mode = mode;
@@ -354,50 +142,20 @@
this.status = RgvStatusType.get(type).id.shortValue();
}
- public void setStatus1(Short status1){
- this.status1 = status1;
- this.statusType1 = RgvStatusType.get(status1);
- }
-
- public void setStatus1(RgvStatusType type1){
- this.statusType1 = type1;
- 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 boolean isLoaded1ing() {
- return Boolean.TRUE.equals(this.loaded1);
- }
-
- public boolean isLoaded2ing() {
- return Boolean.TRUE.equals(this.loaded2);
- }
-
-
- /**
- * 鏈�杩戜竴娆″叆鍑哄簱绫诲瀷
- * I:鍏ュ簱
- * O:鍑哄簱
- */
- private String lastIo = "I";
-
-
public BasRgv toSqlModel(BasRgv basRgv){
if (alarm!=null) {
basRgv.setRgvErr(alarm.longValue());
}
- basRgv.setWrkNo1(taskNo1.intValue());
- basRgv.setWrkNo2(taskNo2.intValue());
+ basRgv.setWrkNo1(taskNo.intValue());
return basRgv;
+ }
+
+ public long getRgvPosDestinationOrPos(boolean sign){
+ if (!sign){
+ return RgvPosDestination>RgvPos? RgvPosDestination:RgvPos;
+ } else {
+ return RgvPosDestination<RgvPos? RgvPosDestination:RgvPos;
+ }
}
public void setxSpeed(Short xSpeed) {
@@ -412,87 +170,53 @@
this.xDuration = Float.valueOf(xDuration);
}
- public Integer getRgvPosI(){
- //闇�瑕佹牴鎹幇鍦烘敼閫� 鏍规嵁璇诲埌鐨勫�艰幏鍙栧搴旂珯鐐逛綅缃�
- Map<Short,Integer> map = new HashMap<>();
- map.put((short) 1,1004);map.put((short) 2,1007);
- map.put((short) 3,1010);map.put((short) 4,1014);
- map.put((short) 5,1018);map.put((short) 6,1021);
- map.put((short) 7,1024); map.put((short) 8,1028);
- map.put((short) 9,1031);map.put((short) 10,1035);
- map.put((short) 11,2003);map.put((short) 12,2006);
- map.put((short) 13,2009);map.put((short) 14,2012);
- map.put((short) 15,2015);map.put((short) 16,2018);
- map.put((short) 17,2021);map.put((short) 18,2024);
- map.put((short) 19,2027);map.put((short) 20,2030);
- if (RgvPos==null) return 0;
-
- return map.get(RgvPos);
- }
-
- public Integer getRgvPosI1() {
- // key: 绔欑偣鍙� value: 鍩哄噯鐗╃悊浣嶇疆
- Map<Integer, Integer> posMap = new HashMap<>();
- posMap.put(1004, 6534);
- posMap.put(1007, 33634);
- posMap.put(1010, 75174);
- posMap.put(1014, 102124);
- posMap.put(1018, 138224);
- posMap.put(1021, 178034);
- posMap.put(1024, 219684);
- posMap.put(1028, 246724);
- posMap.put(1031, 288194);
- posMap.put(1035, 314954);
-
-
-
- int tolerance = 200; // 鍏佽璇樊鑼冨洿
-
- for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) {
- int site = entry.getKey();
- int basePos = entry.getValue();
- if (Math.abs(RgvPos - basePos) <= tolerance) {
- return site;
- }
+ public int getAlarm$(){
+ if (err1){
+ return 1;
}
-
- return 0; // 娌″尮閰嶅埌绔欑偣
- }
- public Integer getRgvPosI2() {
- // key: 绔欑偣鍙� value: 鍩哄噯鐗╃悊浣嶇疆
- Map<Integer, Integer> posMap = new HashMap<>();
- posMap.put(2030, 314954);
- posMap.put(2027, 288094);
- posMap.put(2024, 246574);
- posMap.put(2021, 219584);
- posMap.put(2018, 177934);
- posMap.put(2015, 138126);
- posMap.put(2012, 102124);
- posMap.put(2009, 75174);
- posMap.put(2006, 33748);
- posMap.put(2003, 6449);
- int tolerance = 500; // 鍏佽璇樊鑼冨洿
-
- for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) {
- int site = entry.getKey();
- int basePos = entry.getValue();
- if (Math.abs(RgvPos - basePos) <= tolerance) {
- return site;
- }
+ if (err2){
+ return 2;
}
-
- return 0; // 娌″尮閰嶅埌绔欑偣
- }
-
-
- @Override
- public RgvProtocol clone() {
- try {
- return (RgvProtocol) super.clone();
- } catch (CloneNotSupportedException e) {
- e.printStackTrace();
+ if (err3){
+ return 3;
}
- return null;
+ if (err4){
+ return 4;
+ }
+ if (err5){
+ return 5;
+ }
+ if (err6){
+ return 6;
+ }
+ if (err7){
+ return 7;
+ }
+ if (err8){
+ return 8;
+ }
+ return 0;
+ }
+ public String getAlarmM(){
+ switch (getAlarm$()){
+ case 1:
+ return "鎬ュ仠";
+ case 2:
+ return "鏈夌墿鏃犺祫鏂�";
+ case 3:
+ return "鍛戒护閿欒璧拌閾炬潯鍐茬獊";
+ case 4:
+ return "鐩爣涓鸿秴杩囪蛋琛屾瀬闄�";
+ case 5:
+ return "鍙橀鍣ㄥ紓甯�";
+ case 6:
+ return "鍏夌數寮傚父";
+ case 7:
+ return "灏忚溅妯″紡鍒囨崲閿欒";
+ case 8:
+ return "鍏跺畠鏈煡寮傚父";
+ }
+ return "姝e父";
}
}
diff --git a/src/main/java/com/zy/core/model/protocol/RgvRunProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvRunProtocol.java
new file mode 100644
index 0000000..82a4503
--- /dev/null
+++ b/src/main/java/com/zy/core/model/protocol/RgvRunProtocol.java
@@ -0,0 +1,18 @@
+package com.zy.core.model.protocol;
+
+import lombok.Data;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+@Data
+public class RgvRunProtocol {
+
+
+ private String dev = "RGV";
+ private Integer RgvNo = 1;
+
+ public Long currentTimeMilliOld = 0L;
+
+ public RgvRunProtocol(){}
+}
diff --git a/src/main/java/com/zy/core/model/protocol/RgvTaskProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvTaskProtocol.java
new file mode 100644
index 0000000..2bb5cf2
--- /dev/null
+++ b/src/main/java/com/zy/core/model/protocol/RgvTaskProtocol.java
@@ -0,0 +1,25 @@
+package com.zy.core.model.protocol;
+
+import lombok.Data;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+@Data
+public class RgvTaskProtocol {
+
+
+ private Integer RgvNo;
+
+ /**
+ * 鏄惁閬胯
+ */
+ public Integer Avoid;//0\1\2
+
+ /**
+ * 閬胯鐩殑鍦�
+ */
+ public Long AvoidingTheDestination;
+
+ public RgvTaskProtocol(){}
+}
diff --git a/src/main/java/com/zy/core/model/protocol/TaskProtocol.java b/src/main/java/com/zy/core/model/protocol/TaskProtocol.java
new file mode 100644
index 0000000..a7dee2d
--- /dev/null
+++ b/src/main/java/com/zy/core/model/protocol/TaskProtocol.java
@@ -0,0 +1,61 @@
+package com.zy.core.model.protocol;
+
+import lombok.Data;
+
+/**
+ * Created by IX on 2025/02/21
+ */
+@Data
+public class TaskProtocol {
+ private volatile String taskNoDirection; // 浠诲姟鍙凤紙涓诲睘鎬э級
+ private volatile Long taskNo; // 浠诲姟鍙凤紙涓诲睘鎬э級
+ private volatile Long targetPosition = 0L; // 鐩爣浣嶇疆
+ private volatile Integer targetPositionStaNo = 0; // 鐩爣浣嶇疆
+ private volatile Integer targetPositionStaNoPlcId = 1; // 鐩爣浣嶇疆
+
+ private volatile int isRunning = 0; // 杩愯鐘舵�� 0锛氬垵濮� 1锛氱瓑寰呮墽琛� 2锛氭墽琛屼腑 3锛氭墽琛屼腑鏂� 4锛氬畬缁�
+
+ private volatile int taskStatus = 0; //浣滀笟妯″紡 1锛氳璧� 2锛氬彇 3锛氭斁 0:鏃�
+
+ private volatile boolean direction; // 鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙� 鎵ц鏂瑰悜锛堥潰鏈濊建閬� 1:鑷繁 2 杞ㄩ亾 true:鑷繁 false:杞ㄩ亾
+
+ public TaskProtocol(){}
+
+ public TaskProtocol(Long taskNo, Long targetPosition, int isRunning, int taskStatus, boolean direction) {
+ this.taskNo = taskNo;
+ this.targetPosition = targetPosition;
+ this.isRunning = isRunning;
+ this.taskStatus = taskStatus;
+ this.direction = direction;
+ }
+
+ public TaskProtocol(TaskProtocol taskProtocol) {
+ this.taskNo = taskProtocol.getTaskNo();
+ this.targetPosition = taskProtocol.getTargetPosition();
+ this.taskStatus = taskProtocol.getTaskStatus();
+ this.direction = taskProtocol.direction;
+ }
+
+
+
+ public TaskProtocol(TaskProtocol taskProtocol, boolean direction) {
+ this.taskNo = taskProtocol.getTaskNo();
+ this.targetPosition = taskProtocol.getTargetPosition();
+ this.taskStatus = 1;
+ this.direction = taskProtocol.direction;
+ }
+
+
+ public String gettaskNoDirection$(Long taskNo,int taskStatus){
+ String taskStatusStr = "Walk";
+ switch (taskStatus){
+ case 2:
+ taskStatusStr = "Tack";
+ break;
+ case 3:
+ taskStatusStr = "Put";
+ break;
+ }
+ return taskNo+"_"+taskStatusStr;
+ }
+}
diff --git a/src/main/java/com/zy/core/thread/BarcodeThread.java b/src/main/java/com/zy/core/thread/BarcodeThread.java
index 6a0d544..53564dc 100644
--- a/src/main/java/com/zy/core/thread/BarcodeThread.java
+++ b/src/main/java/com/zy/core/thread/BarcodeThread.java
@@ -61,4 +61,11 @@
}
+ /**
+ * 娓呴櫎浣滀笟鍚姩涓�
+ */
+ @Override
+ public void setWrkSign() {
+ }
+
}
diff --git a/src/main/java/com/zy/core/thread/LedThread.java b/src/main/java/com/zy/core/thread/LedThread.java
index d7a24fb..ece3e06 100644
--- a/src/main/java/com/zy/core/thread/LedThread.java
+++ b/src/main/java/com/zy/core/thread/LedThread.java
@@ -128,4 +128,11 @@
public void close() {
}
+ /**
+ * 娓呴櫎浣滀笟鍚姩涓�
+ */
+ @Override
+ public void setWrkSign() {
+ }
+
}
diff --git a/src/main/java/com/zy/core/thread/MelsecCrnThread.java b/src/main/java/com/zy/core/thread/MelsecCrnThread.java
index fb24a86..d636ed0 100644
--- a/src/main/java/com/zy/core/thread/MelsecCrnThread.java
+++ b/src/main/java/com/zy/core/thread/MelsecCrnThread.java
@@ -473,4 +473,11 @@
}
+ /**
+ * 娓呴櫎浣滀笟鍚姩涓�
+ */
+ @Override
+ public void setWrkSign() {
+ }
+
}
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 58dbf95..caea4ec 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -5,34 +5,34 @@
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
-import com.core.exception.CoolException;
-import com.zy.asrs.entity.*;
-import com.zy.asrs.service.*;
-import com.zy.common.utils.News;
-import com.zy.core.RgvThread2;
+import com.zy.asrs.entity.BasRgv;
+import com.zy.asrs.entity.BasRgvOpt;
+import com.zy.asrs.service.BasRgvOptService;
+import com.zy.asrs.service.BasRgvService;
+import com.zy.asrs.service.DeviceErrorService;
+import com.zy.asrs.utils.RouteUtils;
+import com.zy.asrs.utils.TrackRangeUtils;
+import com.zy.core.DevpThread;
import com.zy.core.ThreadHandler;
-import com.zy.core.cache.MessageQueue;
-import com.zy.core.cache.OutputQueue;
+import com.zy.core.cache.*;
+import com.zy.core.enums.RgvModeType;
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;
-import com.zy.core.model.command.CrnCommand;
import com.zy.core.model.command.RgvCommand;
-import com.zy.core.model.protocol.RgvProtocol;
-import com.zy.core.model.protocol.StaProtocol;
+import com.zy.core.model.protocol.*;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
-import java.sql.Wrapper;
import java.text.MessageFormat;
-import java.util.*;
+import java.util.Date;
+import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
/**
@@ -41,12 +41,19 @@
*/
@Data
@Slf4j
-public class RgvThread implements Runnable, RgvThread2 {
+public class RgvThread implements Runnable, ThreadHandler {
private SiemensS7Net siemensNet;
private RgvSlave slave;
- private RgvProtocol rgvProtocol;
- private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
+ // private RgvProtocol rgvProtocol;
+ private TaskProtocolCache taskProtocolCache = new TaskProtocolCache();
+ // # 杞ㄩ亾鎬婚暱
+ private Long trackEntireLength = 224000L;
+ //# 杞ㄩ亾鍩哄噯鐐�
+ private Long trackBenchmark = 1L;
+ // # 閬胯璺濈
+ private Long avoidDistance = 5000L;
+ private String errorRgv = "-";
/**
* 宸ヤ綅1澶嶄綅淇″彿
@@ -57,20 +64,11 @@
*/
private boolean resetFlag2 = false;
- //閿佸畾鏍囪
- private boolean PakMk = true;
- //鍏ュ簱鏍囪
-// private boolean PakIn = true;
-// //鍑哄簱鏍囪
-// private boolean PakOut = true;
-// //鏍规嵁璺濈璺宠繃鍙栬揣
-// private boolean PakRgv = true;
-// //鎺ラ┏鏍囪
-// private boolean PakToCrn = true;
- // 浠诲姟閿佸畾
- private boolean Paking = true;
-// //杩炵画浠诲姟涓嬪彂
-// private boolean PakAll = true;
+ private boolean connectRgv = false;
+ public Long currentTimeMilliConnectRgv= 0L;
+
+ private boolean delRgvTask = false;
+ private short wrkSign = 0;
public RgvThread(RgvSlave slave) {
this.slave = slave;
@@ -79,133 +77,900 @@
@Override
@SuppressWarnings("InfiniteLoopStatement")
public void run() {
- this.connect();
+ initRgv();
+
+ // 鍚姩绾跨▼鑷姩閲嶈繛
+ new Thread(this::rgvConnect).start();
+
+ // 鍚姩璇绘暟鎹嚎绋�
+ new Thread(this::readStatusRgv).start();
+
+ // 鍚姩浠诲姟涓嬪彂绾跨▼
+ new Thread(this::taskIssued).start();
+
+ // 鍚姩婕父绾跨▼
+ new Thread(this::taskWalkIssued).start();
+// new Thread(this::taskWalkIssued2).start();
+
+ // 鍚姩浠诲姟瀹屾垚绾跨▼
+ new Thread(this::taskComplete).start();
+ }
+
+ private void rgvConnect() {
while (true) {
try {
- int step = 1;
- Task task = MessageQueue.poll(SlaveType.Rgv, slave.getId());
- if (task != null) {
- step = task.getStep();
+ Thread.sleep(1000);
+ if(!connectRgv){
+ try {
+ connectRgv = this.connect();
+ Thread.sleep(100);
+ } catch (Exception e){
+
+ }
}
- switch (step) {
- // 璇绘暟鎹�
- case 1:
- readStatus();
- break;
- // 灏忚溅宸ヤ綅鍐欏叆鏁版嵁
- case 2:
- write((RgvCommand) task.getData());
- break;
- // 澶嶄綅
- case 3:
- RgvCommand command = (RgvCommand) task.getData();
- if (null == command) {
- command = new RgvCommand();
- }
- command.setRgvNo(slave.getId()); // RGV缂栧彿
- command.setTaskNo(0); // 宸ヤ綔鍙�
- command.setTaskStatus(RgvTaskStatusType.NONE); // 浠诲姟妯″紡
- command.setTargetPosition(0); // 婧愮珯
- command.setWrkTaskPri(0); // 鐩爣绔�
- command.setCommand(false);
- write2(command);
- break;
- default:
- break;
- }
- Thread.sleep(500);
} catch (Exception e) {
+ log.error("rgv杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "rgv杩炴帴澶辫触"+e.getMessage());
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ initRgv();
+// e.printStackTrace();
+ }
+ }
+ }
+
+ private void readStatusRgv() {
+ while (true) {
+ try {
+ if(!connectRgv){
+ try {
+ Thread.sleep(1000L);
+ } catch (Exception e){
+
+ }
+ initRgv();
+ continue;
+ }
+ Thread.sleep(20);
+// System.out.println("璇荤嚎绋�,灏忚溅鍙�"+ slave.getId()+"鏃堕棿鎴筹細"+System.currentTimeMillis());
+
+ readStatus();
+
+ } catch (Exception e) {
+ log.error("RGV鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV鏁版嵁璇诲彇绾跨▼寮傚父"+e.getMessage());
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ initRgv();
// e.printStackTrace();
}
}
+
}
- private static final Set<Integer> specialSites = new HashSet<>(
- Arrays.asList(1004,1014,1018,1028,1035,2006,2012,2018,2024,2030));
- public static final Map<Integer, Integer> StaPosition = new HashMap<Integer, Integer>() {{
- put(1004, 1001);put(1014, 1011);put(1018, 1015);put(1028, 1025);put(1035, 1032);
- put(2006, 2004);put(2012, 2010);put(2018, 2016);put(2024, 2022);put(2030, 2028);
- }};
- public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
- add(1);add(2);
-
- }};
-
- public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
- add(3);add(4);
-
- }};
/**
- * 鍒濆鍖栫珯鐐圭姸鎬�
+ * 瀹屾垚
*/
- private void initSite() {
- ArrayList<Integer> staNos = getStaNo();
+ private void taskComplete() {
+ while (true) {
+ try {
+ if(!connectRgv){
+ try {
+ Thread.sleep(1000L);
+ } catch (Exception e){
- // 绔欑偣缂栧彿
- for (Integer siteId : staNos) {
- StaProtocol staProtocol = station.get(siteId);
- if (null == staProtocol) {
- staProtocol = new StaProtocol();
- staProtocol.setSiteId(siteId);
- station.put(siteId, staProtocol);
+ }
+ continue;
}
- staProtocol.setWorkNo(0); // ID
- staProtocol.setAutoing(false); // 鑷姩
- staProtocol.setLoading(false); // 鏈夌墿
- staProtocol.setInEnable(false); // 鍙叆
- staProtocol.setOutEnable(false); // 鍙嚭
- staProtocol.setEmptyMk(false); // 绌烘澘淇″彿
- staProtocol.setStaNo((short) 0); // 鐩爣绔�
+ if (delRgvTask){
+ writeDelRgvTask();
+ delRgvTask = false;
+ continue;
+ }
+ Thread.sleep(50L);
+ OperateResultExOne<byte[]> result = siemensNet.Read("DB100.12", (short) 1);
+ boolean[] status = siemensNet.getByteTransform().TransBool(result.Content, 0, 1);
+ if (status[0]){
+ Thread.sleep(500L);
+ OperateResult result4 = siemensNet.Write("DB100.12.0", false);
+ }
+ } catch (Exception e) {
+ log.error("RGV鏁版嵁浠诲姟涓嬪彂澶嶄綅绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV鏁版嵁浠诲姟涓嬪彂澶嶄綅绾跨▼寮傚父"+e.getMessage());
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ initRgv();
+// e.printStackTrace();
}
+
+ }
+
+ }
+
+ /**
+ * 婕父
+ */
+ private void taskWalkIssued() {
+ while (true) {
+ try {
+ if(!connectRgv){
+ try {
+ Thread.sleep(1000L);
+ } catch (Exception e){
+
+ }
+ continue;
+ }
+ // 浼戠湢 1 绉�
+ Thread.sleep(100);
+
+ if (!deviceDetection()) {
+ continue;
+ }
+ RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
+ if (rgvTaskProtocol == null) {
+ initRgv();
+ rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
+ }
+ if (rgvTaskProtocol.getAvoid() != 1) {
+ continue;
+ }
+ TaskProtocol issued = new TaskProtocol();
+ issued.setTaskNo(32222L);
+ issued.setTargetPosition(rgvTaskProtocol.getAvoidingTheDestination());
+ issued.setTaskStatus(1);
+ issued.setDirection(true);
+ write(issued);
+ rgvTaskProtocol.setAvoid(0);
+
+// Thread.sleep(200);
+ RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
+
+ } catch (Exception e) {
+ log.error("RGV琛岃蛋浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�" + e.getMessage());
+// e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * 浠诲姟涓嬪彂
+ */
+ private void taskIssued() {
+ while (true) {
+ if(!connectRgv){
+ try {
+ Thread.sleep(1000L);
+ } catch (Exception e){
+
+ }
+ continue;
+ }
+ RgvRunProtocol rgvRun = RgvRunCache.getRgvRun();
+ if (!rgvRun.getRgvNo().equals(slave.getId())){
+ continue;
+ }
+ try {
+ Thread.sleep(100);
+ rgvRun = RgvRunCache.getRgvRun();
+// System.out.println(JSON.toJSON(rgvRun));
+
+ // 浼戠湢 1 绉�
+ if (System.currentTimeMillis() - rgvRun.currentTimeMilliOld > 500L) {
+ rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
+ } else {
+ continue;
+ }
+ if (!deviceDetection()) {
+ rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
+ rgvRun.setRgvNo(slave.getOtherId());
+ RgvRunCache.updateRgvStatus(rgvRun);
+ if (!errorRgv.equals("鏃�")){
+ RgvErrCache.updateRgvErr(slave.getId(),errorRgv);
+ }
+ continue;
+ }
+
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
+ if (rgvProtocol == null || rgvTaskProtocol == null) {
+ initRgv();
+ rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
+ }
+ if (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)){
+ rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
+ rgvRun.setRgvNo(slave.getOtherId());
+ RgvRunCache.updateRgvStatus(rgvRun);
+ continue;
+ }
+ if (rgvProtocol.getLoaded() == -1){
+ rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
+ rgvRun.setRgvNo(slave.getOtherId());
+ RgvRunCache.updateRgvStatus(rgvRun);
+ RgvErrCache.updateRgvErr(slave.getId(),"灏忚溅鎺㈢墿鐗╃姸鎬佸紓甯�");
+ continue;
+ }
+ if (rgvTaskProtocol.getAvoid() != 0) {
+ rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
+ rgvRun.setRgvNo(slave.getOtherId());
+ RgvRunCache.updateRgvStatus(rgvRun);
+ continue;
+ }
+
+ List<TaskProtocol> allTakeTaskProtocol = taskProtocolCache.getTakeOrPutTaskProtocol(rgvProtocol.getLoaded());
+ if (allTakeTaskProtocol.isEmpty()){
+ allTakeTaskProtocol = taskProtocolCache.getAllWalkTaskProtocol();
+ for (TaskProtocol taskProtocol : allTakeTaskProtocol) {
+ if (taskProtocol.getIsRunning() == 1) {//鍑嗗涓嬪彂
+ // 鍙岃溅
+ if (rgvOtherStatusEnable()) {
+ //鍙︿竴鍙拌溅鏄惁鍏佽姝ゅ彴杞︽墽琛�
+ if (!otherRgvAvoid(taskProtocol.getTargetPosition())) {
+ RgvErrCache.updateRgvErr(slave.getId(),errorRgv);
+ break;
+ }
+ }
+ if (taskProtocol.getTargetPosition()<=rgvProtocol.getRgvPos()+50
+ && taskProtocol.getTargetPosition()>=rgvProtocol.getRgvPos()-50){
+ taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection());
+ RgvErrCache.updateRgvErr(slave.getId());
+ break;
+ } else {
+ TaskProtocol issued = new TaskProtocol(taskProtocol,true);
+ write(issued);
+ RgvErrCache.updateRgvErr(slave.getId());
+ taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection());
+ break;
+ }
+ }
+ }
+ RgvErrCache.updateRgvErr(slave.getId());
+ } else {
+ for (TaskProtocol taskProtocol : allTakeTaskProtocol) {
+ if (taskProtocol.getIsRunning() == 1) {//鍑嗗涓嬪彂
+ //鍙岃溅
+ if (rgvOtherStatusEnable()) {
+ //鍙︿竴鍙拌溅鏄惁鍏佽姝ゅ彴杞︽墽琛�
+ if (!otherRgvAvoid(taskProtocol.getTargetPosition())) {
+ RgvErrCache.updateRgvErr(slave.getId(),errorRgv);
+ break;
+ }
+ }
+ if (taskProtocol.getTargetPosition()<=rgvProtocol.getRgvPos()+50
+ && taskProtocol.getTargetPosition()>=rgvProtocol.getRgvPos()-50){
+ if (taskProtocol.getTaskStatus()==3){
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, taskProtocol.getTargetPositionStaNoPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(taskProtocol.getTargetPositionStaNo());
+ if (staProtocol == null ) {
+ RgvErrCache.updateRgvErr(slave.getId(),"鏈煡鍒板皬杞︿綔涓氱珯"+staProtocol.getStaNo()+"绔欑偣");
+ break;
+ }
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (!staProtocol.isAutoing() || staProtocol.isLoading()
+ ){
+ RgvErrCache.updateRgvErr(slave.getId(),"灏忚溅绛夊緟"+staProtocol.getStaNo()+"绔欑偣灏辩华");
+ break;
+ }
+ } else if (taskProtocol.getTaskStatus()==2){
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, taskProtocol.getTargetPositionStaNoPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(taskProtocol.getTargetPositionStaNo());
+ if (staProtocol == null ) {
+ RgvErrCache.updateRgvErr(slave.getId(),"鏈煡鍒板皬杞︿綔涓氱珯"+staProtocol.getStaNo()+"绔欑偣");
+ break;
+ }
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (!staProtocol.isAutoing() || !staProtocol.isLoading() || staProtocol.getWorkNo()==0
+ ){
+ RgvErrCache.updateRgvErr(slave.getId(),"灏忚溅绛夊緟"+staProtocol.getStaNo()+"绔欑偣灏辩华");
+ break;
+ }
+ }
+ TaskProtocol issued = new TaskProtocol(taskProtocol);
+ write(issued);
+ RgvErrCache.updateRgvErr(slave.getId());
+ taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection());
+ break;
+ } else {
+ TaskProtocol issued = new TaskProtocol(taskProtocol,true);
+ write(issued);
+ RgvErrCache.updateRgvErr(slave.getId());
+ break;
+ }
+ }
+ }
+ }
+ rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
+ rgvRun.setRgvNo(slave.getOtherId());
+ RgvRunCache.updateRgvStatus(rgvRun);
+ } catch (Exception e) {
+ log.error("RGV浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV浠诲姟涓嬪彂绾跨▼寮傚父"+e.getMessage());
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ rgvRun = RgvRunCache.getRgvRun();
+ rgvRun.currentTimeMilliOld = System.currentTimeMillis()+50;
+ rgvRun.setRgvNo(slave.getOtherId());
+ RgvRunCache.updateRgvStatus(rgvRun);
+ continue;
+// e.printStackTrace();
+ }
+ }
+ }
+ public boolean isSignRgvTaskProtocol() {
+ RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
+ if (rgvTaskProtocol == null) {
+ return false;
+ }
+ RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+ RgvTaskProtocol rgvTaskProtocolOther = RgvTaskCache.getRgvStatus(slave.getOtherId());
+
+ if (rgvProtocolOther == null) {
+ return false;
+ }
+ if (rgvProtocolOther.statusEnable) {
+ if (rgvTaskProtocolOther == null) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+ public boolean deviceDetection() {
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
+
+ if (rgvProtocol == null || rgvTaskProtocol == null) {
+ errorRgv = slave.getId()+"鍙峰皬杞﹁繛鎺ュけ璐�";
+ return false;
+ }
+ if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO)) {
+ errorRgv = slave.getId()+"鍙峰皬杞﹂潪鑷姩";
+ return false;
+ }
+ if (rgvProtocol.getRgvPos().equals(0L)
+ || rgvTaskProtocol.getAvoid() == -1
+ || rgvProtocol.getRgvPosDestination() == 0L) {
+ errorRgv = slave.getId()+"鍙峰皬杞︾姸鎬佸紓甯�";
+ return false;
+ }
+ if (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM)) {
+ errorRgv = "鏃�";
+ return false;
+ }
+ if ( (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM)) {
+ errorRgv = slave.getId()+"鍙峰皬杞﹀瓨鍦ㄨ繍琛岀洰鏍囧�硷紝闇�瑕佸浣嶏紒锛侊紒";
+ return false;
+ }
+ RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+ RgvTaskProtocol rgvTaskProtocolOther = RgvTaskCache.getRgvStatus(slave.getOtherId());
+// System.out.println("rgvTaskProtocol:"+slave.getId()+"sign:"+rgvTaskProtocol.isSignRun()+"/n"+
+// "rgvTaskProtocolOther:"+slave.getOtherId()+"sign:"+rgvTaskProtocolOther.isSignRun()+"/n");
+
+ if (rgvProtocolOther == null) {
+ errorRgv = slave.getOtherId()+"鍙峰皬杞﹁繛鎺ュけ璐�";
+ return false;
+ }
+ if (rgvProtocolOther.statusEnable) {
+ if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L) || rgvTaskProtocolOther.getAvoid() == -1 || rgvProtocolOther.getRgvPosDestination() == 0L) {
+ errorRgv = slave.getOtherId()+"鍙峰皬杞︾姸鎬佸紓甯�";
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean rgvOtherStatusEnable() {
+ RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+ if (rgvProtocolOther == null) {
+ return true;
+ }
+ if (rgvProtocolOther.statusEnable) {
+// if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L)) {
+ return true;
+// }
+ }
+ return false;
+ }
+
+ public boolean otherRgvAvoid(Long targetPosition) {
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ long onePos = Math.abs(targetPosition - rgvProtocol.getRgvPos());
+ if (onePos<50){
+ return true;
+ }
+ RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
+
+ RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
+ RgvTaskProtocol rgvTaskProtocolOther = RgvTaskCache.getRgvStatus(slave.getOtherId());
+ Long[][] avoidRange = new TrackRangeUtils().avoidRange(slave, trackEntireLength, trackBenchmark, avoidDistance);
+
+ if (new TrackRangeUtils().IsItSmall(slave)) {
+ if (rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE) && (Math.abs(rgvProtocolOther.getRgvPos() - rgvProtocolOther.getRgvPosDestination())<50)) {
+ if ((rgvProtocolOther.getRgvPos() - rgvProtocolOther.getCarBodyJiaoMing())
+ - (targetPosition + rgvProtocol.getCarBodyKunPeng())
+ > avoidDistance - 50) {//鏃犻渶閬胯
+ return true;
+ } else {
+
+ RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, slave.getOtherId());
+ TaskProtocolCache taskProtocolCacheOther = rgvThreadOther.getTaskProtocolCache();
+ TaskProtocol nowPosRunTask = taskProtocolCacheOther.getNowPosRunTask(rgvProtocolOther.getRgvPos());
+ if (!Cools.isEmpty(nowPosRunTask)){
+ boolean signNowPosRun = true;
+ if (nowPosRunTask.getTaskStatus()==3){
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, nowPosRunTask.getTargetPositionStaNoPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(nowPosRunTask.getTargetPositionStaNo());
+ if (staProtocol == null ) {
+ signNowPosRun =false;
+ }
+ if (signNowPosRun){
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (!staProtocol.isAutoing() || staProtocol.isLoading()
+ ){
+ if (targetPosition.equals(nowPosRunTask.getTargetPosition())){
+ if (rgvProtocolOther.getRgvPosDestination() >= rgvProtocolOther.getRgvPos()-50) {
+ long avoid = rgvProtocolOther.getRgvPos() - rgvProtocolOther.getCarBodyJiaoMing() - avoidDistance - rgvProtocol.getCarBodyKunPeng();
+ if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) {
+ log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ return false;
+ }
+ long avoidAbs = Math.abs(avoid - rgvProtocol.getRgvPos());
+ if (avoidAbs<51){
+ return false;
+ }
+ rgvTaskProtocol.setAvoid(1);
+ rgvTaskProtocol.setAvoidingTheDestination(avoid);
+ RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
+ }
+ return false;
+ }
+ signNowPosRun =false;
+ }
+ }
+ }
+ if (signNowPosRun){
+ errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+ return false;
+ }
+ }
+ TaskProtocol nowPosRunTask2 = taskProtocolCacheOther.getNowPosRunTask2();
+ if (!Cools.isEmpty(nowPosRunTask2)){
+ boolean signNowPosRun = true;
+ boolean signNowPosA = true;
+ if (targetPosition - rgvProtocol.getRgvPos()>0){
+ if (nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos()>0){
+ if (rgvProtocol.getRgvPos()>rgvProtocolOther.getRgvPos()){
+ signNowPosA = false;
+ signNowPosRun = false;
+ }
+ }
+ } else if (targetPosition - rgvProtocol.getRgvPos()<0){
+ if (nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos()<0){
+ if (rgvProtocol.getRgvPos()<rgvProtocolOther.getRgvPos()){
+ signNowPosA = false;
+ signNowPosRun = false;
+ }
+ }
+ }
+
+ if (signNowPosA){
+ if (nowPosRunTask2.getTaskStatus()==3){
+ long twoPos = Math.abs(nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos());
+ if (Math.abs(onePos - twoPos)>100){
+ if (onePos-50>twoPos+50){
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, nowPosRunTask2.getTargetPositionStaNoPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(nowPosRunTask2.getTargetPositionStaNo());
+ if (staProtocol == null ) {
+ signNowPosRun =false;
+ }
+ if (signNowPosRun){
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (staProtocol.isAutoing() && !staProtocol.isLoading()
+ ){
+ errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+ return false;
+ }
+ }
+ signNowPosRun =false;
+ }
+ }
+ } else {
+ long twoPos = Math.abs(nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos());
+ if (twoPos<100){
+ errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+ return false;
+ }
+ if (Math.abs(onePos - twoPos)>100){
+ if (onePos-50>twoPos+50){
+ signNowPosRun =false;
+ }
+ }
+ }
+ }
+
+ if (signNowPosRun){
+ errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+ return false;
+ }
+ }
+ long avoid = targetPosition + rgvProtocol.getCarBodyKunPeng() + avoidDistance + rgvProtocolOther.getCarBodyJiaoMing();
+ if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) {
+ log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
+
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ return false;
+ }
+ long avoidAbs = Math.abs(avoid - rgvProtocolOther.getRgvPos());
+ if (avoidAbs<51){
+ return true;
+ }
+ rgvTaskProtocolOther.setAvoid(1);
+ rgvTaskProtocolOther.setAvoidingTheDestination(avoid);
+ RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther);
+ return false;
+ }
+ } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.ROAM)) {
+ if ((rgvProtocolOther.getRgvPosDestination() - rgvProtocolOther.getCarBodyJiaoMing())
+ - (targetPosition + rgvProtocol.getCarBodyKunPeng())
+ > avoidDistance - 50) {//鏃犻渶閬胯
+ return true;
+ } else {
+ long avoid = targetPosition + rgvProtocol.getCarBodyKunPeng() + avoidDistance + rgvProtocolOther.getCarBodyJiaoMing();
+ if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) {
+ log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
+
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ return false;
+ }
+ long avoidAbs = Math.abs(avoid - rgvProtocolOther.getRgvPos());
+ if (avoidAbs<51){
+ return true;
+ }
+ rgvTaskProtocolOther.setAvoid(1);
+ rgvTaskProtocolOther.setAvoidingTheDestination(avoid);
+ RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther);
+ return false;
+ }
+ } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.WORKING)) {
+ if ((rgvProtocolOther.getRgvPosDestination() - rgvProtocolOther.getCarBodyJiaoMing())
+ - (targetPosition + rgvProtocol.getCarBodyKunPeng())
+ > avoidDistance - 50) {//鏃犻渶閬胯
+ return true;
+ } else {
+ if (rgvProtocolOther.getRgvPosDestination() >= rgvProtocolOther.getRgvPos()-50) {
+ long avoid = rgvProtocolOther.getRgvPos() - rgvProtocolOther.getCarBodyJiaoMing() - avoidDistance - rgvProtocol.getCarBodyKunPeng();
+ if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) {
+ log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
+
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ return false;
+ }
+ long avoidAbs = Math.abs(avoid - rgvProtocol.getRgvPos());
+ if (avoidAbs<51){
+ return false;
+ }
+ rgvTaskProtocol.setAvoid(1);
+ rgvTaskProtocol.setAvoidingTheDestination(avoid);
+ RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
+ return false;
+ }
+ errorRgv = slave.getOtherId()+"鍙稲GV褰卞搷锛岀瓑寰呬腑...";
+
+ return false;
+ }
+ } else {
+ if ((rgvProtocolOther.getRgvPosDestinationOrPos(true) - rgvProtocolOther.getCarBodyJiaoMing())
+ - (targetPosition + rgvProtocol.getCarBodyKunPeng())
+ > avoidDistance - 50) {//鏃犻渶閬胯
+ return true;
+ }
+ }
+ } else {
+ if (rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE) && (Math.abs(rgvProtocolOther.getRgvPos() - rgvProtocolOther.getRgvPosDestination())<50)) {
+ if ((targetPosition - rgvProtocol.getCarBodyJiaoMing())
+ - (rgvProtocolOther.getRgvPos() + rgvProtocolOther.getCarBodyKunPeng())
+ > avoidDistance - 50) {//鏃犻渶閬胯
+ return true;
+ } else {
+ RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, slave.getOtherId());
+ TaskProtocolCache taskProtocolCacheOther = rgvThreadOther.getTaskProtocolCache();
+ TaskProtocol nowPosRunTask = taskProtocolCacheOther.getNowPosRunTask(rgvProtocolOther.getRgvPos());
+ if (!Cools.isEmpty(nowPosRunTask)){
+ boolean signNowPosRun = true;
+ if (nowPosRunTask.getTaskStatus()==3){
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, nowPosRunTask.getTargetPositionStaNoPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(nowPosRunTask.getTargetPositionStaNo());
+ if (staProtocol == null ) {
+ signNowPosRun =false;
+ }
+ if (signNowPosRun){
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (!staProtocol.isAutoing() || staProtocol.isLoading()
+ ){
+ if (targetPosition.equals(nowPosRunTask.getTargetPosition())){
+ if (rgvProtocolOther.getRgvPosDestination() <= rgvProtocolOther.getRgvPos() + 50) {
+ long avoid = rgvProtocolOther.getRgvPos() + rgvProtocolOther.getCarBodyKunPeng() + avoidDistance + rgvProtocol.getCarBodyJiaoMing();
+ if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) {
+ log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
+
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ return false;
+ }
+ long avoidAbs = Math.abs(avoid - rgvProtocol.getRgvPos());
+ if (avoidAbs<51){
+ return false;
+ }
+ rgvTaskProtocol.setAvoid(1);
+ rgvTaskProtocol.setAvoidingTheDestination(avoid);
+ RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
+ }
+ return false;
+ }
+ signNowPosRun =false;
+ }
+ }
+ }
+ if (signNowPosRun){
+ errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+ return false;
+ }
+ }
+
+ TaskProtocol nowPosRunTask2 = taskProtocolCacheOther.getNowPosRunTask2();
+ if (!Cools.isEmpty(nowPosRunTask2)){
+ boolean signNowPosRun = true;
+ boolean signNowPosA = true;
+ if (targetPosition - rgvProtocol.getRgvPos()>0){
+ if (nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos()>0){
+ if (rgvProtocol.getRgvPos()>rgvProtocolOther.getRgvPos()){
+ signNowPosA = false;
+ signNowPosRun = false;
+ }
+ }
+ } else if (targetPosition - rgvProtocol.getRgvPos()<0){
+ if (nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos()<0){
+ if (rgvProtocol.getRgvPos()<rgvProtocolOther.getRgvPos()){
+ signNowPosA = false;
+ signNowPosRun = false;
+ }
+ }
+ }
+
+ if (signNowPosA){
+ if (nowPosRunTask2.getTaskStatus()==3){
+ long twoPos = Math.abs(nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos());
+ if (Math.abs(onePos - twoPos)>100){
+ if (onePos-50>twoPos+50){
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, nowPosRunTask2.getTargetPositionStaNoPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(nowPosRunTask2.getTargetPositionStaNo());
+ if (staProtocol == null ) {
+ signNowPosRun =false;
+ }
+ if (signNowPosRun){
+ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+ if (staProtocol.isAutoing() && !staProtocol.isLoading()
+ ){
+ errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+ return false;
+ }
+ }
+ signNowPosRun =false;
+ }
+ }
+ } else {
+ long twoPos = Math.abs(nowPosRunTask2.getTargetPosition() - rgvProtocolOther.getRgvPos());
+ if (twoPos<100){
+ errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+ return false;
+ }
+ if (Math.abs(onePos - twoPos)>100){
+ if (onePos-50>twoPos+50){
+ signNowPosRun =false;
+ }
+ }
+ }
+ }
+
+ if (signNowPosRun){
+ errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟浣滀笟...";
+ return false;
+ }
+ }
+ long avoid = targetPosition - rgvProtocol.getCarBodyJiaoMing() - avoidDistance - rgvProtocolOther.getCarBodyKunPeng();
+ if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) {
+ log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
+
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ return false;
+ }
+ long avoidAbs = Math.abs(avoid - rgvProtocolOther.getRgvPos());
+ if (avoidAbs<51){
+ return true;
+ }
+ rgvTaskProtocolOther.setAvoid(1);
+ rgvTaskProtocolOther.setAvoidingTheDestination(avoid);
+ RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther);
+ return false;
+ }
+ } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.ROAM)) {
+ if ((targetPosition - rgvProtocol.getCarBodyJiaoMing())
+ - (rgvProtocolOther.getRgvPosDestination() + rgvProtocolOther.getCarBodyKunPeng())
+ > avoidDistance - 50) {//鏃犻渶閬胯
+ return true;
+ } else {
+ long avoid = targetPosition - rgvProtocol.getCarBodyJiaoMing() - avoidDistance - rgvProtocolOther.getCarBodyKunPeng();
+ if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) {
+ log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
+
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ return false;
+ }
+ long avoidAbs = Math.abs(avoid - rgvProtocolOther.getRgvPos());
+ if (avoidAbs<51){
+ return true;
+ }
+ rgvTaskProtocolOther.setAvoid(1);
+ rgvTaskProtocolOther.setAvoidingTheDestination(avoid);
+ RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther);
+ return false;
+ }
+
+ } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.WORKING)) {
+ if ((targetPosition - rgvProtocol.getCarBodyJiaoMing())
+ - (rgvProtocolOther.getRgvPosDestination() + rgvProtocolOther.getCarBodyKunPeng())
+ > avoidDistance-50) {//鏃犻渶閬胯
+ return true;
+ } else {
+ if (rgvProtocolOther.getRgvPosDestination() <= rgvProtocolOther.getRgvPos() + 50) {
+ long avoid = rgvProtocolOther.getRgvPos() + rgvProtocolOther.getCarBodyKunPeng() + avoidDistance + rgvProtocol.getCarBodyJiaoMing();
+ if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) {
+ log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ errorRgv = "RGV琛岃蛋鐩爣瓒呭嚭鑼冨洿";
+
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿");
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ return false;
+ }
+ long avoidAbs = Math.abs(avoid - rgvProtocol.getRgvPos());
+ if (avoidAbs<51){
+ return false;
+ }
+ rgvTaskProtocol.setAvoid(1);
+ rgvTaskProtocol.setAvoidingTheDestination(avoid);
+ RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
+ return false;
+ }
+ errorRgv = slave.getOtherId()+"鍙稲GV绛夊緟涓�...";
+ return false;
+ }
+ } else {
+ if ((rgvProtocolOther.getRgvPosDestinationOrPos(false) - rgvProtocolOther.getCarBodyJiaoMing())
+ - (targetPosition + rgvProtocol.getCarBodyKunPeng())
+ > avoidDistance - 50) {//鏃犻渶閬胯
+ return true;
+ }
+ }
+ }
+
+ errorRgv = slave.getOtherId()+"鍙稲GV褰卞搷锛岀瓑寰呬腑...";
+ return false;
}
/**
* 鍒濆鍖朢GV鐘舵��
*/
private void initRgv() {
- if (null == rgvProtocol) {
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ if (rgvProtocol == null) {
rgvProtocol = new RgvProtocol();
+ rgvProtocol.setRgvNo(slave.getId());
}
- //灏忚溅鐘舵��
- rgvProtocol.setStatus((short)-1);
- 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);
- rgvProtocol.setWrkTaskPri((short)0);
- //宸ヤ綅1鐘舵��
- rgvProtocol.setTaskNo1(0);
- rgvProtocol.setStatus1((short)-1);
- rgvProtocol.setLoaded1(false);
- rgvProtocol.setWrkTaskMove1((short)0);
- //宸ヤ綅2鐘舵��
- rgvProtocol.setTaskNo2(0);
- rgvProtocol.setStatus2((short)-1);
- rgvProtocol.setLoaded2(false);
- rgvProtocol.setWrkTaskMove2((short)0);
-// rgvProtocol.setAlarm((short)0);
-// rgvProtocol.setxSpeed((short) 0);
-// rgvProtocol.setxDistance((short) 0);
-// rgvProtocol.setxDuration((short) 0);
- }
- private ArrayList<Integer> getStaNo() {
- switch (slave.getId()) {
- case 1:
- return staNos1;
- case 2:
- return staNos2;
- default:
- throw new CoolException("鏈嶅姟鍣ㄥ紓甯�");
+ rgvProtocol.setStatus((short) -1);
+ rgvProtocol.setWalkPos((short) 0);
+ rgvProtocol.setRgvPos(0L);
+ rgvProtocol.setAlarm((short) 0);
+ rgvProtocol.setxSpeed((short) 0);
+ rgvProtocol.setxDistance((short) 0);
+ rgvProtocol.setxDuration((short) 0);
+ rgvProtocol.setCarBodyJiaoMing(0L);
+ rgvProtocol.setCarBodyKunPeng(0L);
+ try {
+ BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
+ BasRgv rgv = basRgvService.selectById(slave.getId());
+ if (!Cools.isEmpty(rgv)) {
+ rgvProtocol.setStatusEnable(rgv.getStatus() == 1);
+ } else {
+ rgvProtocol.setStatusEnable(false);
+ }
+ } catch (Exception e) {
+ log.error("RGV寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV寮傚父"+e.getMessage());
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ rgvProtocol.setStatusEnable(true);
}
+
+ RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
+ if (rgvTaskProtocol == null) {
+ rgvTaskProtocol = new RgvTaskProtocol();
+ rgvTaskProtocol.setRgvNo(slave.getId());
+ }
+ rgvTaskProtocol.setAvoid(0);
+ rgvTaskProtocol.setAvoidingTheDestination(0L);
+
+ RgvStatusCache.updateRgvStatus(rgvProtocol);
+
+ RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
+
}
+
@Override
public boolean connect() {
boolean result = false;
@@ -213,515 +978,307 @@
siemensNet.setRack(slave.getRack().byteValue());
siemensNet.setSlot(slave.getSlot().byteValue());
OperateResult connect = siemensNet.ConnectServer();
- if(connect.IsSuccess){
+ if (connect.IsSuccess) {
result = true;
- OutputQueue.RGV.offer(MessageFormat.format( "銆恵0}銆慠GV plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+// OutputQueue.RGV.offer(MessageFormat.format( "銆恵0}銆慠GV plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
log.info("RGV plc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
} else {
- OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慠GV plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+// OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慠GV plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
log.error("RGV plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
- initRgv();
+
+ if (System.currentTimeMillis()-currentTimeMilliConnectRgv>1000*60*10){
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGVplc杩炴帴澶辫触");
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ if (currentTimeMilliConnectRgv == 0){
+ currentTimeMilliConnectRgv = System.currentTimeMillis()-1000*60*10-1;
+ } else {
+ currentTimeMilliConnectRgv = System.currentTimeMillis();
+ }
+ }
}
+ initRgv();
// siemensNet.ConnectClose();
return result;
- }
-
- private void setBool(byte[] buffer, int byteIndex, int bitIndex, boolean value) {
- if (value) {
- buffer[byteIndex] |= (1 << bitIndex); // 缃綅
- } else {
- buffer[byteIndex] &= ~(1 << bitIndex); // 娓呴浂
- }
- }
- private void updateFlagInDb(String field, boolean value) {
- try {
- BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
-
- EntityWrapper<BasRgv> wrapper = new EntityWrapper<>();
- wrapper.eq("rgv_no", slave.getId());
-
- BasRgv entity = new BasRgv();
- switch (field) {
- case "pak_mk": entity.setPakMk(value ? "1" : "0"); break;
- case "pak_in": entity.setPakIn(value ? "1" : "0"); break;
- case "pak_out": entity.setPakOut(value ? "1" : "0"); break;
- case "pak_rgv": entity.setPakRgv(value ? "1" : "0"); break;
- case "pak_to_crn":entity.setPakToCrn(value ? "1" : "0"); break;
- case "paking":entity.setPaking(value ? "1" : "0"); break;
- case "pak_all":entity.setPakAll(value ? "1" : "0"); break;
- default:
- log.warn("鏈煡鏍囧織浣嶅瓧娈�: {}", field);
- return;
- }
-
- basRgvService.update(entity, wrapper);
-// log.info("RGV鏍囧織浣嶆洿鏂版垚鍔� [rgv_no:{}] {}={}", slave.getId(), field, value ? "1" : "0");
-
- } catch (Exception e) {
- log.error("鏇存柊RGV鏍囧織浣嶅紓甯� [rgv_no:{}] {}={} 閿欒锛歿}", slave.getId(), field, value, e.getMessage());
- }
- }
-
-
- public void setPakMk(boolean pakMk) {
- this.PakMk = pakMk;
- updateFlagInDb("pak_mk", pakMk);
}
/**
* 璇诲彇鐘舵��
*/
- private void readStatus(){
+ private void readStatus() {
try {
-
- OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 41);
+ OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 20);
if (result.IsSuccess) {
- if (null == rgvProtocol) {
+ // 鏋勫缓璁惧鐘舵�佸璞�
+ RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
+ if (rgvProtocol == null) {
rgvProtocol = new RgvProtocol();
- rgvProtocol.setRgvNo(siemensNet.getByteTransform().TransInt16(result.Content, 0));
}
- 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.setTaskNo1(siemensNet.getByteTransform().TransInt32(result.Content, 16));
- rgvProtocol.setTaskNo2(siemensNet.getByteTransform().TransInt32(result.Content, 20));
- rgvProtocol.setStaNo1(siemensNet.getByteTransform().TransInt32(result.Content, 28));
- rgvProtocol.setStaNo2(siemensNet.getByteTransform().TransInt32(result.Content, 32));
- boolean[] status1 = siemensNet.getByteTransform().TransBool(result.Content, 24, 1);
- rgvProtocol.setLoaded1(status1[0]);
- rgvProtocol.setLoaded2(status1[1]);
- boolean[] status2 = siemensNet.getByteTransform().TransBool(result.Content, 36,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]);
- rgvProtocol.setErr8(status2[7]);
- boolean[] status3 = siemensNet.getByteTransform().TransBool(result.Content, 37, 1);
- rgvProtocol.setErr9(status3[0]);
- rgvProtocol.setErr10(status3[1]);
- rgvProtocol.setErr11(status3[2]);
- rgvProtocol.setErr12(status3[3]);
- boolean[] statusErr = siemensNet.getByteTransform().TransBool(result.Content, 36, 5);
- rgvProtocol.setEmergencyStop(statusErr[0]); // 鎬ュ仠瑙﹀彂
- rgvProtocol.setSlot1EmptyNoData(statusErr[1]); // 1鍙蜂綅鏈夌墿鏃犺祫鏂�
- rgvProtocol.setSlot2EmptyNoData(statusErr[2]); // 2鍙蜂綅鏈夌墿鏃犺祫鏂�
- rgvProtocol.setCommandErrorChainConflict(statusErr[3]); // 鍛戒护閿欒璧伴摼鏉″啿绐�
- rgvProtocol.setTargetPositionIssue(statusErr[4]); // 鐩爣浣嶄笅鍙戦敊璇�
- rgvProtocol.setTravelInverterError(statusErr[5]); // 璧拌鍙橀鍣ㄥ紓甯�
- rgvProtocol.setPhotoelectric1Error(statusErr[6]); // 1鍙峰厜鐢靛紓甯�
- rgvProtocol.setPhotoelectric2Error(statusErr[7]); // 2鍙峰厜鐢靛紓甯�
- rgvProtocol.setTimeoutConnectionWithLine(statusErr[8]); // 涓庤緭绾挎椂鎺ヨ秴鏃�
- rgvProtocol.setLeftRollerTimeout(statusErr[9]); // 宸︿晶婊氱瓛杩愯瓒呮椂
- rgvProtocol.setRightRollerTimeout(statusErr[10]); // 鍙充晶婊氱瓛杩愯瓒呮椂
- rgvProtocol.setRgvRunTimeout(statusErr[11]); // rgv杩愯瓒呮椂
- rgvProtocol.setPosition1ChainInverterError(statusErr[12]); // 1鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父
- rgvProtocol.setPosition2ChainInverterError(statusErr[13]); // 2鍙峰伐浣嶉摼鏉″彉棰戝櫒寮傚父
- rgvProtocol.setFrontRearLimit(statusErr[14]); // 鍓嶅悗鏋侀檺浣�
- rgvProtocol.setEmergencyButton(statusErr[15]); // 鎬ュ仠鎸夐挳
- rgvProtocol.setForwardButton(statusErr[16]); // 鍓嶈繘鎸夐挳
- rgvProtocol.setReverseButton(statusErr[17]); // 鍚庨��鎸夐挳
- rgvProtocol.setLocalRemote(statusErr[18]); // 鏈湴/杩滅▼
- rgvProtocol.setReset(statusErr[19]); // 澶嶄綅
- rgvProtocol.setTravelBrakeSwitch(statusErr[20]); // 璧拌鎶遍椄寮�鍏抽挳
- rgvProtocol.setTravelSpeedLimitPhotoelectric(statusErr[21]); // 璧拌寮哄埗鍑忛�熷厜鐢�
- rgvProtocol.setLeftOverlimit1(statusErr[22]); // 宸﹁秴闄� 1
- rgvProtocol.setRightOverlimit1(statusErr[23]); // 鍙宠秴闄� 1
- rgvProtocol.setLeftAtPosition1(statusErr[24]); // 宸﹀埌浣� 1
- rgvProtocol.setRightAtPosition1(statusErr[25]); // 鍙冲埌浣� 1
- rgvProtocol.setChainForward1(statusErr[26]); // 閾炬潯鍓嶈繘 1
- rgvProtocol.setChainReverse1(statusErr[27]); // 閾炬潯鍚庨�� 1
- rgvProtocol.setInverterAlarm(statusErr[28]); // 鍙橀鍣ㄦ姤璀�
- rgvProtocol.setLeftOverlimit2(statusErr[29]); // 宸﹁秴闄� 2
- rgvProtocol.setRightOverlimit2(statusErr[30]); // 鍙宠秴闄� 2
- rgvProtocol.setLeftAtPosition2(statusErr[31]); // 宸﹀埌浣� 2
- rgvProtocol.setRightAtPosition2(statusErr[32]); // 鍙冲埌浣� 2
- rgvProtocol.setCargoSpeedReduction(statusErr[33]); // 璐х墿鍑忛��
- rgvProtocol.setConveyorInverterAlarm2(statusErr[34]); // 杈撻�佸彉棰戝櫒鎶ヨ 2
- rgvProtocol.setRightConveyor2(statusErr[35]); // 鍙宠緭閫� 2
- rgvProtocol.setLeftConveyor2(statusErr[36]); // 宸﹁緭閫� 2
- if(rgvProtocol.getStatus1() == 99){
- rgvProtocol.setErrorMk(true);//鑻ュ瓨鍦ㄥ紓甯歌Е鍙戝啓鍏�
- }else{
- rgvProtocol.setWriteMk(true);//鏃犲紓甯稿悗鎵嶈兘缁х画鍐欏叆
- rgvProtocol.setErrorMk(false);
+ rgvProtocol.setRgvNo(slave.getId());
+ rgvProtocol.setCarBodyJiaoMing(slave.getCarBodyJiaoMing());
+ rgvProtocol.setCarBodyKunPeng(slave.getCarBodyKunPeng());
+
+ rgvProtocol.setRgvPos((long)siemensNet.getByteTransform().TransInt32(result.Content, 0));
+ rgvProtocol.setRgvPosDestination((long)siemensNet.getByteTransform().TransInt32(result.Content, 4));
+ if (rgvProtocol.getRgvPosDestination()==0L){
+ rgvProtocol.setRgvPosDestination(rgvProtocol.getRgvPos());
}
+ rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 8));
+// rgvProtocol.setStatus((short)1);
+ //浣滀笟鍚姩涓� 瑙e喅浠诲姟涓嬪彂鍚庡皬杞︾姸鎬佹湭鏇存柊锛屽皬杞︾姸鎬佷笉鍙婃椂
+ if (this.wrkSign == 1 && rgvProtocol.getStatus()!=(short)1){
+ this.wrkSign = 0;
+ }
+ if (this.wrkSign == 1){
+ rgvProtocol.setStatus((short)110);
+ }
-// BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class);
+ rgvProtocol.setTaskNo((long)siemensNet.getByteTransform().TransInt32(result.Content, 10));
+
+ rgvProtocol.setRgvNo((int)siemensNet.getByteTransform().TransInt16(result.Content, 14));
+ rgvProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 16));
+// rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 20));
+// rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28));
+// rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40));
+// rgvProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
+
+// OperateResultExOne<byte[]> result11 = siemensNet.Read("DB100.12", (short) 1);
+ boolean[] status = siemensNet.getByteTransform().TransBool(result.Content, 18, 2);
+ rgvProtocol.setLoaded(status[0]? (short)1:(short)0);
+ rgvProtocol.setErr1(status[8]);
+ rgvProtocol.setErr2(status[9]);
+ rgvProtocol.setErr3(status[10]);
+ rgvProtocol.setErr4(status[11]);
+ rgvProtocol.setErr5(status[12]);
+ rgvProtocol.setErr6(status[13]);
+ rgvProtocol.setErr7(status[14]);
+ rgvProtocol.setErr8(status[15]);
+// System.out.println("璇荤嚎绋�"+ slave.getId()+"---"+JSON.toJSONString(rgvProtocol));
+// System.out.println("璇荤嚎绋�,灏忚溅鍙�"+ slave.getId()+"鏃堕棿鎴筹細"+System.currentTimeMillis()+"灏忚溅鏁版嵁锛�"+JSON.toJSONString(rgvProtocol));
OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), slave.getId()));
+// // 宸ヤ綅1澶嶄綅淇″彿
+// if (rgvProtocol.getStatusType().equals(RgvStatusType.WAITING)
+// || rgvProtocol.getStatusType().equals(RgvStatusType.FETCHWAITING)) {
+// if (resetFlag1) {
+// RgvCommand rgvCommand = new RgvCommand();
+// rgvCommand.setAckFinish1((short)1);
+// if (write(rgvCommand)) {
+// resetFlag1 = false;
+// }
+// }
+// }
+ if (rgvProtocol.getAlarm$()!=0){
+ RgvErrCache.updateRgvErr(slave.getId(),rgvProtocol.getAlarmM());
+ }
+
try {
// 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
- BasRgv basRgv = new BasRgv();
+ BasRgv basRgv = basRgvService.selectById(slave.getId());
+ if (!Cools.isEmpty(basRgv)) {
+ rgvProtocol.setStatusEnable(basRgv.getStatus() == 1);
+ } else {
+ rgvProtocol.setStatusEnable(false);
+ }
+// BasRgv basRgv = new BasRgv();
basRgv.setRgvNo(slave.getId());
- basRgv.setRgvSts((int)rgvProtocol.getMode());
- if(rgvProtocol.isWriteMk() && rgvProtocol.isErrorMk()){
- try {
- // 鏃ュ織璁板綍寮傚父鎯呭喌
- BasRgvErrorLog basRgvErrorLogs;
- basRgvErrorLogs = rgvProtocol.toSqlModelError();
- BasRgvErrorLogService basRgvErrorLogService = SpringUtils.getBean(BasRgvErrorLogService.class);
- basRgvErrorLogService.insert(basRgvErrorLogs);
- rgvProtocol.setWriteMk(false);
- } catch (Exception ignore) {
- log.error(ignore.getMessage());
+ basRgv.setRgvSts((int) rgvProtocol.getMode());
+ if (!basRgvService.updateById(rgvProtocol.toSqlModel(basRgv))) {
+ log.error("RGV plc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV plc鏁版嵁搴撴洿鏂板け璐�");
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
}
}
- if (!basRgvService.updateById(rgvProtocol.toSqlModel(basRgv))){
- log.error("RGV plc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
- }
- } catch (Exception ignore){
- System.out.println(ignore);
+ } catch (Exception ignore) {
+
}
+
+
+ // 鏇存柊缂撳瓨
+ RgvStatusCache.updateRgvStatus(rgvProtocol);
} else {
initRgv();
- OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
-// log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+ connectRgv = false;
+// OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+ log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "璇诲彇RGV plc鐘舵�佷俊鎭け璐�");
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
}
} catch (Exception e) {
- e.printStackTrace();
- OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-// log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+// e.printStackTrace();
+// OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+ log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "璇诲彇RGV plc鐘舵�佷俊鎭け璐�");
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
initRgv();
}
}
+
/**
- * 灏忚溅宸ヤ綅鍐欏叆鍐欏叆鏁版嵁
+ * 鍐欏叆鏁版嵁
*/
- private boolean write(RgvCommand command) throws InterruptedException {
- if (null == command) {
- log.error("RGV鍐欏叆鍛戒护涓虹┖");
- return false;
- }
- OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 39);
- if (result1.IsSuccess){
- RgvCommand one = new RgvCommand();
- one.setWrkTaskPri(siemensNet.getByteTransform().TransInt32(result1.Content, 0));//鎵ц宸ヤ綅
- one.setTargetPosition(siemensNet.getByteTransform().TransInt32(result1.Content, 4));//琛岃蛋鐩爣绔�
- one.setTaskStatus(siemensNet.getByteTransform().TransInt16(result1.Content, 8));//灏忚溅鐘舵��
- one.setTaskNo(siemensNet.getByteTransform().TransInt32(result1.Content, 10));//涓嬪彂宸ヤ綔鍙�
- News.info("RGV鍛戒护涓嬪彂鍓嶈鍙栫姸鎬乕id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
- }
- byte[] writeBytes = new byte[14];
- command.setRgvNo(slave.getId());
- if(specialSites.contains(command.getTargetPosition())){
- command.setTargetPosition(StaPosition.get(command.getTargetPosition()));
- }
- writeInt32(writeBytes, 0, command.getWrkTaskPri());
- writeInt32(writeBytes, 4, command.getTargetPosition());
- writeInt16(writeBytes, 8, (short)command.getTaskStatus());
- writeInt32(writeBytes, 10, command.getTaskNo());
- OperateResult result = siemensNet.Write("DB100.0", writeBytes);
+ private boolean write(TaskProtocol taskProtocol) throws InterruptedException {
+ if (null == taskProtocol) {
+ log.error("RGV鍐欏叆鍛戒护涓虹┖ ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
- if (!result.IsSuccess){
- News.error("鍐欏叆RGVplc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===> [id:{}],{}",slave.getId(),JSON.toJSON(command));
- MessageQueue.offer(SlaveType.Rgv,slave.getId(),new Task(2,command));
- Thread.sleep(100);
- readStatus();
- return false;
- }
-
- //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔�
- Thread.sleep(400);
- try {
- OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 14);
- if (resultRead.IsSuccess){
- RgvCommand one = new RgvCommand();
- one.setWrkTaskPri(siemensNet.getByteTransform().TransInt32(resultRead.Content, 0));//鎵ц宸ヤ綅
- one.setTargetPosition(siemensNet.getByteTransform().TransInt32(resultRead.Content, 4));//琛岃蛋鐩爣绔�
- one.setTaskStatus(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));//灏忚溅鐘舵��
- one.setTaskNo(siemensNet.getByteTransform().TransInt32(resultRead.Content, 10));//涓嬪彂宸ヤ綔鍙�
- if (
- !command.getTaskNo().equals(one.getTaskNo()) ||
- !command.getTaskStatus().equals(one.getTaskStatus()) ||
- !command.getWrkTaskPri().equals(one.getWrkTaskPri()) ||
- !command.getTargetPosition().equals(one.getTargetPosition())
- ) {
- 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(2, command));
- Thread.sleep(100);
- readStatus();
- return false;
- }else {
- News.info("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
- }
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvErr", slave.getId(), "RGV鍐欏叆鍛戒护涓虹┖");
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
}
- }catch (Exception e){
- News.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�");
+ return false;
}
+// convertRow(command);
+// taskProtocol.setRgvNo(slave.getId());
+// Long[] array = new Long[11];
+ OperateResult result41 = siemensNet.Write("DB100.12.0", false);
+// array[0] = taskProtocol.getAckFinish1();
+// array[1] = taskProtocol.getTaskNo();
+// array[2] = taskProtocol.getTaskMode();
+// array[4] = command.getDestinationStaNo();
+// array[10] = taskProtocol.getCommand();
+ int taskStatus = taskProtocol.getTaskStatus();
- if (result.IsSuccess) { //浠诲姟涓嬪彂纭
- Thread.sleep(300);
- //浠诲姟涓嬪彂娆℃暟
- int writeCount2 = 0;
- do {
- writeCount2++;
- Short commandFinish = 1;
- result = siemensNet.Write("DB100.34.0", commandFinish);
- if(result.IsSuccess){
- //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔�
- Thread.sleep(200);
- OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.34", (short) 2);
- if (resultRead.IsSuccess) {
- commandFinish=siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
- if (commandFinish !=1){
- 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);
- }
+ OperateResult result = siemensNet.Write("DB100.0", taskProtocol.getTargetPosition().intValue());
+ OperateResult result1 = siemensNet.Write("DB100.4", (short) taskStatus);
+ OperateResult result2 = siemensNet.Write("DB100.6", taskProtocol.getTaskNo().intValue());
+ OperateResult result3 = siemensNet.Write("DB100.10", taskProtocol.isDirection()? (short) 1 : (short) 2); // 鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ Thread.sleep(20L);
+
+ OperateResult result4 = siemensNet.Write("DB100.12.0", true);
+ this.wrkSign = 1;
+
+// log.info("浠诲姟涓嬪彂绾跨▼,灏忚溅鍙�"+ slave.getId()+"鏃堕棿鎴筹細"+System.currentTimeMillis());
+
+// if (taskProtocol.getAckFinish1() == 0) {
+// short commandFinish = 3; //宸ヤ綅1銆�2浠诲姟鍚屾椂鍐欏叆
+// Thread.sleep(100L);
+// result = siemensNet.Write("DB100.20", commandFinish);
+// }
+
try {
// 鏃ュ織璁板綍
BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class);
BasRgvOpt basRgvOpt = new BasRgvOpt(
- command.getTaskNo(),
- command.getRgvNo(),
+ taskProtocol.getTaskNo().intValue(),
+ taskProtocol.getTaskNo().intValue(),
+ slave.getId(),
new Date(),
- command.getTaskStatus().toString(),
- command.getTargetPosition(),
- command.getWrkTaskPri(),
- new Date()
+ String.valueOf(taskProtocol.getTaskStatus()),
+ null,
+ null,
+ null,
+ result.IsSuccess ? 1 : 0,
+ null,
+ new Date(),
+ null
);
bean.insert(basRgvOpt);
} catch (Exception ignore) {
- log.error(ignore.getMessage());
}
+ readStatus();
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)));
+// Thread.sleep(50);
+// this.readStatus();
+ log.info("RGV 鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(taskProtocol));
+ log.error("RGV 鍛戒护涓嬪彂 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("rgvWrite", slave.getId(), "RGV 鍛戒护涓嬪彂"+JSON.toJSON(taskProtocol));
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(taskProtocol)));
return true;
} else {
- OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戝啓鍏GV plc宸ヤ綅鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
- log.error("鍐欏叆RGV plc宸ヤ綅鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ 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;
}
}
- private boolean write2(RgvCommand command) throws InterruptedException {
- if (null == command) {
- log.error("RGV鍐欏叆鍛戒护涓虹┖");
- return false;
- }
- OperateResultExOne<byte[]> result1 = siemensNet.Read("DB100.0", (short) 39);
- if (result1.IsSuccess){
- RgvCommand one = new RgvCommand();
- one.setWrkTaskPri(siemensNet.getByteTransform().TransInt32(result1.Content, 0));//鎵ц宸ヤ綅
- one.setTargetPosition(siemensNet.getByteTransform().TransInt32(result1.Content, 4));//琛岃蛋鐩爣绔�
- one.setTaskStatus(siemensNet.getByteTransform().TransInt16(result1.Content, 8));//灏忚溅鐘舵��
- one.setTaskNo(siemensNet.getByteTransform().TransInt32(result1.Content, 10));//涓嬪彂宸ヤ綔鍙�
- News.info("RGV鍛戒护涓嬪彂鍓嶈鍙栫姸鎬乕id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
- }
- byte[] writeBytes = new byte[36];
- command.setRgvNo(slave.getId());
- if(specialSites.contains(command.getTargetPosition())){
- command.setTargetPosition(StaPosition.get(command.getTargetPosition()));
- }
- writeInt32(writeBytes, 0, command.getWrkTaskPri());
- writeInt32(writeBytes, 4, command.getTargetPosition());
- writeInt16(writeBytes, 8, (short)command.getTaskStatus());
- writeInt32(writeBytes, 10, command.getTaskNo());
- writeBool(writeBytes, 34, 0, command.getCommand());
- OperateResult result = siemensNet.Write("DB100.0", writeBytes);
- if (!result.IsSuccess){
- News.error("鍐欏叆RGVplc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===> [id:{}],{}",slave.getId(),JSON.toJSON(command));
- MessageQueue.offer(SlaveType.Rgv,slave.getId(),new Task(2,command));
- Thread.sleep(100);
- readStatus();
- return false;
- }
+ private boolean writeDelRgvTask() throws InterruptedException {
+//
+ OperateResult result = siemensNet.Write("DB100.12.0", false);
+ OperateResult result0 = siemensNet.Write("DB100.0", (int) 0);
+ OperateResult result1 = siemensNet.Write("DB100.4", (short) 0);
+ OperateResult result2 = siemensNet.Write("DB100.6", (int) 0);
+ OperateResult result3 = siemensNet.Write("DB100.10", (short) 0); // 鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ log.info("浠诲姟瀹屾垚涓嬪彂绾跨▼,灏忚溅鍙�"+ slave.getId()+"鏃堕棿鎴筹細"+System.currentTimeMillis());
- //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔�
- Thread.sleep(400);
- try {
- OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 14);
- if (resultRead.IsSuccess){
- RgvCommand one = new RgvCommand();
- one.setWrkTaskPri(siemensNet.getByteTransform().TransInt32(resultRead.Content, 0));//鎵ц宸ヤ綅
- one.setTargetPosition(siemensNet.getByteTransform().TransInt32(resultRead.Content, 4));//琛岃蛋鐩爣绔�
- one.setTaskStatus(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));//灏忚溅鐘舵��
- one.setTaskNo(siemensNet.getByteTransform().TransInt32(resultRead.Content, 10));//涓嬪彂宸ヤ綔鍙�
- if (
- !command.getTaskNo().equals(one.getTaskNo()) ||
- !command.getTaskStatus().equals(one.getTaskStatus()) ||
- !command.getWrkTaskPri().equals(one.getWrkTaskPri()) ||
- !command.getTargetPosition().equals(one.getTargetPosition())
- ) {
- 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(2, 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 (result.IsSuccess) { //浠诲姟涓嬪彂纭
- Thread.sleep(300);
- //浠诲姟涓嬪彂娆℃暟
- int writeCount2 = 0;
- do {
- writeCount2++;
- Short commandFinish = 1;
- result = siemensNet.Write("DB100.34.0", commandFinish);
- if(result.IsSuccess){
- //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔�
- Thread.sleep(200);
- OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.34", (short) 2);
- if (resultRead.IsSuccess) {
- commandFinish=siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
- if (commandFinish !=1){
- 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.getTaskNo(),
- command.getRgvNo(),
+ 0,
+ 0,
+ slave.getId(),
new Date(),
- command.getTaskStatus().toString(),
- command.getTargetPosition(),
- command.getWrkTaskPri(),
- new Date()
+ String.valueOf(0),
+ null,
+ null,
+ null,
+ result.IsSuccess ? 1 : 0,
+ null,
+ new Date(),
+ null
);
bean.insert(basRgvOpt);
} catch (Exception ignore) {
- log.error(ignore.getMessage());
}
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)));
+// Thread.sleep(200);
+// this.readStatus();
+ log.info("RGV 鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON("null"));
+ OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON("null")));
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());
+ 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;
}
}
- public static void writeInt32(byte[] buffer, int index, int value) {
- buffer[index] = (byte)((value >> 24) & 0xFF);
- buffer[index + 1] = (byte)((value >> 16) & 0xFF);
- buffer[index + 2] = (byte)((value >> 8) & 0xFF);
- buffer[index + 3] = (byte)(value & 0xFF);
+
+
+ /**
+ * 娓呴櫎浣滀笟鍚姩涓�
+ */
+ @Override
+ public void setWrkSign() {
+ this.wrkSign = 0;
}
-
- public static void writeInt16(byte[] buffer, int index, short value) {
- buffer[index] = (byte)((value >> 8) & 0xFF); // 楂樺瓧鑺�
- buffer[index + 1] = (byte)(value & 0xFF); // 浣庡瓧鑺�
- }
-
- public static void writeBool(byte[] buffer, int byteIndex, int bitIndex, boolean value) {
- if (value) {
- buffer[byteIndex] |= (1 << bitIndex);
- } else {
- buffer[byteIndex] &= ~(1 << bitIndex);
- }
- }
-
- public Integer getRgvPosI(Integer pos) {
- if (pos == null) return 0;
-
- // key: 绔欑偣鍙� value: 鍩哄噯鐗╃悊浣嶇疆
- Map<Integer, Integer> posMap = new HashMap<>();
- posMap.put(1004, 6534);
- posMap.put(1007, 33634);
- posMap.put(1010, 75174);
- posMap.put(1014, 102124);
- posMap.put(1018, 138224);
- posMap.put(1021, 178034);
- posMap.put(1024, 219684);
- posMap.put(1028, 246724);
- posMap.put(1031, 288194);
- posMap.put(1035, 315204);
- int tolerance = 50; // 鍏佽璇樊鑼冨洿
-
- for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) {
- int site = entry.getKey();
- int basePos = entry.getValue();
- if (Math.abs(pos - basePos) <= tolerance) {
- return site;
- }
- }
-
- return 0; // 娌″尮閰嶅埌绔欑偣
+ public void setDelRgvTask() {
+ delRgvTask = true;
}
@Override
public void close() {
siemensNet.ConnectClose();
- }
-
- /******************************************************************************************/
- /**************************************** 娴嬭瘯涓撶敤 *****************************************/
- /*****************************************************************************************/
- public static void main(String[] args) throws InterruptedException {
- RgvSlave slave = new RgvSlave();
- slave.setId(1);
- slave.setIp("192.168.6.9");
- slave.setRack(0);
- slave.setSlot(0);
- RgvThread rgvThread = new RgvThread(slave);
- rgvThread.connect();
- rgvThread.readStatus();
- System.out.println(JSON.toJSONString(rgvThread.rgvProtocol));
- Thread.sleep(3000L);
-
}
}
diff --git a/src/main/java/com/zy/core/thread/RoboticArmThread.java b/src/main/java/com/zy/core/thread/RoboticArmThread.java
index 654ba98..9961324 100644
--- a/src/main/java/com/zy/core/thread/RoboticArmThread.java
+++ b/src/main/java/com/zy/core/thread/RoboticArmThread.java
@@ -154,4 +154,11 @@
}
+ /**
+ * 娓呴櫎浣滀笟鍚姩涓�
+ */
+ @Override
+ public void setWrkSign() {
+ }
+
}
diff --git a/src/main/java/com/zy/core/thread/ScaleThread.java b/src/main/java/com/zy/core/thread/ScaleThread.java
index ad595c8..ec2320a 100644
--- a/src/main/java/com/zy/core/thread/ScaleThread.java
+++ b/src/main/java/com/zy/core/thread/ScaleThread.java
@@ -134,4 +134,12 @@
return true;
}
+
+ /**
+ * 娓呴櫎浣滀笟鍚姩涓�
+ */
+ @Override
+ public void setWrkSign() {
+ }
+
}
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 0f8b410..d3b7c5e 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -831,4 +831,11 @@
}
+ /**
+ * 娓呴櫎浣滀笟鍚姩涓�
+ */
+ @Override
+ public void setWrkSign() {
+ }
+
}
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 30b1455..f9ca221 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -1021,4 +1021,11 @@
//
// }
+ /**
+ * 娓呴櫎浣滀笟鍚姩涓�
+ */
+ @Override
+ public void setWrkSign() {
+ }
+
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 11dd9a6..7cdd224 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -253,133 +253,239 @@
row: 18
bay: 52
lev: 2
-
# RGV绌挎杞�1
- rgv[0]:
- id: 1
- ip: 10.10.10.190
- port: 502
- rack: 0
- slot: 0
- #RGV鍏ュ簱鍙栬揣绔欑偣
- rgvInTStn[0]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1042
- staNo2: 1043
- rgvInTStn[1]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1105
- staNo2: 1104
- rgvInTStn[2]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1038
- rgvInTStn[3]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1036
- #RGV鍏ュ簱鏀捐揣绔欑偣
- rgvInPStn[0]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1004
- rgvInPStn[1]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1014
- rgvInPStn[2]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1018
- rgvInPStn[3]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1028
- rgvInPStn[4]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1035
- #RGV鍑哄簱鍙栬揣绔欑偣
- rgvOutTStn[0]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1007
- staNo2: 1005
- rgvOutTStn[1]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1010
- staNo2: 1008
- rgvOutTStn[2]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1021
- staNo2: 1019
- rgvOutTStn[3]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1024
- staNo2: 1022
- rgvOutTStn[4]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1031
- staNo2: 1029
- #RGV鍑哄簱鏀捐揣绔欑偣
- rgvOutPStn[0]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1106
- rgvOutPStn[1]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1041
- rgvOutPStn[2]:
- devpPlcId: ${wcs-slave.devp[0].id}
- staNo: 1036
-
- # RGV绌挎杞�2
rgv[1]:
id: 2
- ip: 10.10.10.193
+ ip: 27.172.2.70
port: 502
rack: 0
slot: 0
- #RGV鍏ュ簱鍙栬揣绔欑偣
- rgvInTStn[0]:
- devpPlcId: ${wcs-slave.devp[1].id}
- staNo: 2037
- #RGV鍏ュ簱鏀捐揣绔欑偣
- rgvInPStn[0]:
- devpPlcId: ${wcs-slave.devp[1].id}
- staNo: 2006
- rgvInPStn[1]:
- devpPlcId: ${wcs-slave.devp[1].id}
- staNo: 2012
- rgvInPStn[2]:
- devpPlcId: ${wcs-slave.devp[1].id}
- staNo: 2018
- rgvInPStn[3]:
- devpPlcId: ${wcs-slave.devp[1].id}
- staNo: 2024
- rgvInPStn[4]:
- devpPlcId: ${wcs-slave.devp[1].id}
- staNo: 2030
- #RGV鍑哄簱鍙栬揣绔欑偣
- rgvOutTStn[0]:
- devpPlcId: ${wcs-slave.devp[1].id}
- staNo: 2003
- staNo2: 2001
- rgvOutTStn[1]:
- devpPlcId: ${wcs-slave.devp[1].id}
- staNo: 2009
- staNo2: 2007
-
- rgvOutTStn[2]:
- devpPlcId: ${wcs-slave.devp[1].id}
- staNo: 2015
- staNo2: 2013
-
- rgvOutTStn[3]:
- devpPlcId: ${wcs-slave.devp[1].id}
- staNo: 2021
- staNo2: 2019
-
- rgvOutTStn[4]:
- devpPlcId: ${wcs-slave.devp[1].id}
- staNo: 2027
- staNo2: 2025
-
- #RGV鍑哄簱鏀捐揣绔欑偣
- rgvOutPStn[0]:
- devpPlcId: ${wcs-slave.devp[1].id}
- staNo: 2031
+ otherId: 1
+ carBodyJiaoMing: 2800
+ carBodyKunPeng: 13500
+ #RGV婧愮珯鐐�
+ rgvInSta[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1004
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: true
+ staNoOther: 1005
+ directionOther: false
+ rgvInSta[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1014
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: true
+ staNoOther: 1016
+ directionOther: true
+ rgvInSta[2]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1020
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: true
+ staNoOther: 1021
+ directionOther: false
+ rgvInSta[3]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1003
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: false
+ staNoOther: 1003
+ directionOther: false
+ rgvInSta[4]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1007
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: false
+ staNoOther: 1007
+ directionOther: false
+ rgvInSta[5]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1013
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: false
+ staNoOther: 1013
+ directionOther: false
+ rgvInSta[6]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1018
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: false
+ staNoOther: 1018
+ directionOther: false
+ rgvInSta[7]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1019
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: false
+ staNoOther: 1019
+ directionOther: false
+ #RGV鐩爣绔欑偣
+ rgvOutSta[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1002
+ direction: true
+ staNoOther: 1002
+ directionOther: false
+ rgvOutSta[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1009
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: true
+ staNoOther: 1009
+ directionOther: false
+ rgvOutSta[2]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1001
+ direction: false
+ staNoOther: 1001
+ directionOther: false
+ rgvOutSta[3]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1006
+ direction: false
+ staNoOther: 1006
+ directionOther: false
+ rgvOutSta[4]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1008
+ direction: false
+ staNoOther: 1008
+ directionOther: false
+ rgvOutSta[5]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1017
+ direction: false
+ staNoOther: 1017
+ directionOther: false
+ rgvSuperSta[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1001
+ direction: false
+ staNoOther: 1001
+ directionOther: false
+ rgvSuperSta[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1002
+ direction: false
+ staNoOther: 1002
+ directionOther: false
+ # RGV绌挎杞�2
+ rgv[0]:
+ id: 1
+ ip: 27.172.2.71
+ port: 502
+ rack: 0
+ slot: 0
+ otherId: 2
+ carBodyJiaoMing: 2800
+ carBodyKunPeng: 13500
+ #RGV婧愮珯鐐�
+ rgvInSta[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1004
+ direction: true
+ staNoOther: 1005
+ directionOther: false
+ rgvInSta[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1014
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: true
+ staNoOther: 1016
+ directionOther: true
+ rgvInSta[2]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1020
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: true
+ staNoOther: 1021
+ directionOther: false
+ rgvInSta[3]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1003
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: false
+ staNoOther: 1003
+ directionOther: false
+ rgvInSta[4]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1007
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: false
+ staNoOther: 1007
+ directionOther: false
+ rgvInSta[5]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1013
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: false
+ staNoOther: 1013
+ directionOther: false
+ rgvInSta[6]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1018
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: false
+ staNoOther: 1018
+ directionOther: false
+ rgvInSta[7]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1019
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: false
+ staNoOther: 1019
+ directionOther: false
+ #RGV鐩爣绔欑偣
+ rgvOutSta[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1023
+ direction: true
+ staNoOther: 1023
+ directionOther: false
+ rgvOutSta[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1009
+ #鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙�
+ direction: true
+ staNoOther: 1009
+ directionOther: false
+ rgvOutSta[2]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1022
+ direction: false
+ staNoOther: 1022
+ directionOther: false
+ rgvOutSta[3]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1006
+ direction: false
+ staNoOther: 1006
+ directionOther: false
+ rgvOutSta[4]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1008
+ direction: false
+ staNoOther: 1008
+ directionOther: false
+ rgvOutSta[5]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1017
+ direction: false
+ staNoOther: 1017
+ directionOther: false
+ rgvSuperSta[0]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1023
+ direction: false
+ staNoOther: 1023
+ directionOther: false
+ rgvSuperSta[1]:
+ devpPlcId: ${wcs-slave.devp[0].id}
+ staNo: 1022
+ direction: false
+ staNoOther: 1022
+ directionOther: false
# 杈撻�佺嚎1
devp[0]:
id: 1
diff --git a/src/main/resources/mapper/DeviceErrorMapper.xml b/src/main/resources/mapper/DeviceErrorMapper.xml
new file mode 100644
index 0000000..db14934
--- /dev/null
+++ b/src/main/resources/mapper/DeviceErrorMapper.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.mapper.DeviceErrorMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.zy.asrs.entity.DeviceError">
+ <id column="id" property="id" />
+ <result column="device" property="device" />
+ <result column="msg" property="msg" />
+ <result column="device_id" property="deviceId" />
+ <result column="create_time" property="createTime" />
+ <result column="appe_time" property="appeTime" />
+ <result column="device_plc_id" property="devicePlcId" />
+ </resultMap>
+
+ <sql id="batchSeq">
+ <if test="id != null and id != 0">
+ and id = #{id}
+ </if>
+ <if test="device != null and device != ''">
+ and device = #{device}
+ </if>
+ <if test="deviceId != null and deviceId != 0">
+ and device_id = #{deviceId}
+ </if>
+ <if test="devicePlcId != null and devicePlcId != 0">
+ and device_plc_id = #{devicePlcId}
+ </if>
+ </sql>
+
+ <select id="selectByDeviceAndDeviceId" resultMap="BaseResultMap">
+ select top 1 * from wcs_device_error
+ where "device" = #{device}
+ and "device_id" = #{deviceId}
+ </select>
+
+ <delete id="deleteByDeviceAndDeviceId">
+ delete from wcs_device_error
+ where "device" = #{device}
+ and "device_id" = #{deviceId}
+ </delete>
+
+ <select id="selectDeviceErrorList" resultMap="BaseResultMap">
+ SELECT * FROM (
+ SELECT ROW_NUMBER() over(order by create_time DESC) as row,*
+ FROM ( SELECT * FROM wcs_device_error ) t
+ WHERE 1=1
+ <include refid="batchSeq"></include>
+ ) a
+ WHERE a.row BETWEEN ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
+ </select>
+
+ <select id="selectDeviceErrorListTotal" resultType="Long">
+ SELECT count(1) FROM wcs_device_error
+ WHERE 1=1
+ <include refid="batchSeq"></include>
+ </select>
+
+</mapper>
--
Gitblit v1.9.1