From a4db6bcb5b733ff77b803ea460568219507d7300 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 26 六月 2023 15:16:34 +0800
Subject: [PATCH] 提升机信号读取矫正
---
src/main/java/com/zy/core/thread/ShuttleThread.java | 98 +++++++++++++++++++++++++++++++-----------------
1 files changed, 63 insertions(+), 35 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java
index 26f23bc..7aeff9c 100644
--- a/src/main/java/com/zy/core/thread/ShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -366,6 +366,11 @@
OperateResult result = modbusTcpNet.Write("0", array);;
if (result != null && result.IsSuccess) {
+ try {
+ Thread.sleep(3000);//鍛戒护涓嬪彂鍚庝紤鐪�1s
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
return true;
@@ -781,7 +786,6 @@
}
}
-
//涓嬪彂鍛戒护
if (!write(command)) {
News.error("鍥涘悜绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
@@ -789,10 +793,22 @@
} else {
News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戞垚鍔燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
- try {
- Thread.sleep(1000);//鍛戒护涓嬪彂瀹屽悗浼戠湢1s
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
+ //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘�
+ BasShuttleOptService shuttleOptService = SpringUtils.getBean(BasShuttleOptService.class);
+ if (shuttleOptService != null) {
+ BasShuttleOpt opt = new BasShuttleOpt(
+ assignCommand.getTaskNo().intValue(),
+ assignCommand.getShuttleNo().intValue(),
+ new Date(),
+ ShuttleTaskModeType.get(assignCommand.getTaskMode()).desc,
+ assignCommand.getSourceLocNo(),
+ assignCommand.getLocNo(),
+ null,
+ null,
+ null,
+ JSON.toJSONString(command)
+ );
+ shuttleOptService.insert(opt);
}
//鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚
@@ -805,23 +821,6 @@
redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
}else {
//宸叉墽琛屽畬鎴�
- //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘�
- BasShuttleOptService shuttleOptService = SpringUtils.getBean(BasShuttleOptService.class);
- if (shuttleOptService != null) {
- BasShuttleOpt opt = new BasShuttleOpt(
- assignCommand.getTaskNo().intValue(),
- assignCommand.getShuttleNo().intValue(),
- new Date(),
- ShuttleTaskModeType.get(assignCommand.getTaskMode()).desc,
- assignCommand.getSourceLocNo(),
- assignCommand.getLocNo(),
- null,
- null,
- null,
- JSON.toJSONString(assignCommand)
- );
- shuttleOptService.insert(opt);
- }
if (redisCommand.getLiftSecurityMk()) {
//鏇鹃攣瀹氳繃鎻愬崌鏈猴紝闇�瑕佽繘琛岃В閿�
@@ -856,7 +855,7 @@
}else {
shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING);
}
- News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屽畬鎴愮瓑寰呯‘璁や腑锛岀┛姊溅鍙�={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
+ News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
}
}
@@ -916,14 +915,19 @@
qrCodeValues.add(Short.parseShort(basDevp.getQrCodeValue()));
}
- //閬嶅巻鎵�鏈夋寚浠わ紝鍒ゆ柇鏄惁鏈夊埌鎻愬崌鏈哄彛鐨勬寚浠わ紝骞惰幏鍙栧埌杈捐鎻愬崌鏈哄彛鎵�闇�姝ュ簭
+ //閬嶅巻鎵�鏈夋寚浠わ紝鍒ゆ柇鏄惁鏈夊埌鎻愬崌鏈哄彛鐨勬寚浠ゆ垨浠庢彁鍗囨満鍙e墠寰�鎻愬崌鏈哄唴鐨勬寚浠わ紝骞惰幏鍙栧埌杈捐鎻愬崌鏈哄彛鎵�闇�姝ュ簭
int step = 0;
Integer siteNo = null;//绔欑偣鍙�
ShuttleCommand command = null;
for (int i = 0; i < commands.size(); i++) {
command = commands.get(i);
for (Short qrCodeValue : qrCodeValues) {
- if (qrCodeValue.intValue() == command.getDistCodeNum().intValue()) {
+ //鐩爣浣嶇疆鏄彁鍗囨満鍙o紝鎴栬捣鐐逛綅缃槸鎻愬崌鏈哄彛涓旂洰鏍囨槸鍘绘彁鍗囨満鍐�
+ if (command.getDistCodeNum() == null || command.getStartCodeNum() == null) {
+ continue;
+ }
+
+ if (qrCodeValue.intValue() == command.getDistCodeNum().intValue() || (qrCodeValue.intValue() == command.getStartCodeNum().intValue() && command.getDistCodeNum().intValue() == liftProtocol.getBarcode().intValue())) {
//瀛樺湪
step = i + 1;
BasDevp basDevp = basDevpService.queryByQrCode(qrCodeValue.intValue());
@@ -938,11 +942,21 @@
return true;
}
- //鍒ゆ柇涓嬩竴姝ユ槸鍚︿负鎻愬崌鏈哄彛
- if (commandStep + 1 != step) {
- //涓嬩竴姝ヤ笉鏄彁鍗囨満鍙o紝璺宠繃鍚庣画娴佺▼
- return true;
+ //鍒ゆ柇涓嬩竴姝ユ槸鍚︿负鎻愬崌鏈哄彛鎴栨彁鍗囨満鍐�
+ if (commandStep < commands.size()) {
+ ShuttleCommand command1 = commands.get(commandStep);
+ Short distCodeNum = command1.getDistCodeNum();
+ if (distCodeNum != null) {
+ BasDevp basDevp = basDevpService.queryByQrCode(Integer.valueOf(distCodeNum));
+ if (basDevp == null && distCodeNum.intValue() != liftProtocol.getBarcode().intValue()) {
+ return true;//涓嬩竴姝ヤ笉鏄彁鍗囨満鍙o紝璺宠繃鍚庣画娴佺▼
+ }
+ }
}
+// if (commandStep + 1 != step) {
+// //涓嬩竴姝ヤ笉鏄彁鍗囨満鍙o紝璺宠繃鍚庣画娴佺▼
+// return true;
+// }
//鑾峰彇鍥涘悜绌挎杞﹀綋鍓嶆ゼ灞�
String shuttleLocNo = shuttleProtocol.getCurrentLocNo();//浜岀淮鐮佸搴斿簱浣嶅彿
@@ -957,13 +971,28 @@
if (siteNo != null) {
SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
StaProtocol staProtocol = siemensDevpThread.getStation().get(siteNo);
- if (staProtocol.isLiftArrival()
- && liftProtocol.getPositionArrivalFeedback$() == shuttleLocNoLev) {
- //杈撻�佺嚎鍙嶉鎻愬崌鏈哄埌浣嶄笖鎻愬崌鏈烘ゼ灞傚弽棣堜负鍚屼竴灞傦紝鐩存帴鏀捐
+ if (!staProtocol.isLiftArrival()) {
+ //杈撻�佺嚎鍙嶉鎻愬崌鏈烘病鏈夊埌浣�
+ executeLift(liftThread, liftProtocol, redisCommand, shuttleLocNoLev);//璋冨害鎻愬崌鏈�
+ return false;
+ }
+
+ if (shuttleProtocol.getCurrentCode().intValue() == liftProtocol.getBarcode().intValue()) {
+ //灏忚溅澶勪簬鎻愬崌鏈哄唴
return true;
+ }else {
+ if (liftProtocol.getPositionArrivalFeedback$() == shuttleLocNoLev) {
+ return true;//鎻愬崌鏈哄埌浣�
+ }
+ executeLift(liftThread, liftProtocol, redisCommand, shuttleLocNoLev);//璋冨害鎻愬崌鏈�
+ return false;//鎻愬崌鏈烘病鏈夊埌浣�
}
}
+ return false;
+ }
+
+ private boolean executeLift(LiftThread liftThread, LiftProtocol liftProtocol, ShuttleRedisCommand redisCommand, Integer shuttleLocNoLev) {//璋冨害鎻愬崌鏈�
if (liftProtocol.getRunning()) {
//鎻愬崌鏈鸿繍琛屼腑锛岀姝笅鍙�
return false;
@@ -981,7 +1010,7 @@
liftProtocol.setSecurityMk(true);//鏍囪缃负true锛岄槻姝㈠叾浠栦换鍔″崰鐢ㄥ綋鍓嶆彁鍗囨満
redisCommand.setLiftSecurityMk(true);//鏍囪缃负true锛岄槻姝㈠叾浠栦换鍔″崰鐢ㄥ綋鍓嶆彁鍗囨満
//浠诲姟鏁版嵁淇濆瓨鍒皉edis
- redisUtil.set("shuttle_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand));
+ redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
//鍛戒护list
ArrayList<LiftCommand> liftCommands = new ArrayList<>();
@@ -994,8 +1023,7 @@
liftAssignCommand.setTaskNo(liftProtocol.getTaskNo());
//涓嬪彂浠诲姟
MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, liftAssignCommand));
-
- return false;
+ return true;
}
/**
--
Gitblit v1.9.1