From eddc7010369c735de1c4931a46b9d87a1008ae1e Mon Sep 17 00:00:00 2001
From: dubin <bindu_bean@163.com>
Date: 星期一, 17 十一月 2025 09:04:57 +0800
Subject: [PATCH] 堆垛机移库任务等待确认调整
---
src/main/java/com/zy/core/thread/SiemensCrnThread.java | 111 ++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 76 insertions(+), 35 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 8f4ef1f..cc12a8f 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -10,8 +10,10 @@
import com.core.common.SpringUtils;
import com.zy.asrs.entity.BasCrnOpt;
import com.zy.asrs.entity.BasCrnp;
+import com.zy.asrs.entity.DeviceDataLog;
import com.zy.asrs.service.BasCrnOptService;
import com.zy.asrs.service.BasCrnpService;
+import com.zy.asrs.service.DeviceDataLogService;
import com.zy.common.utils.News;
import com.zy.core.CrnThread;
import com.zy.core.cache.MessageQueue;
@@ -27,6 +29,7 @@
import lombok.extern.slf4j.Slf4j;
import java.text.MessageFormat;
+import java.util.Base64;
import java.util.Date;
/**
@@ -75,6 +78,7 @@
// 鍐欏叆鏁版嵁 1鍙峰伐浣�
case 2:
CrnCommand data = (CrnCommand) task.getData();
+ crnProtocol.setLastCommandTime(System.currentTimeMillis());
if (data.getPltType() == null || data.getPltType() == 1) {
write(data);
} else if (data.getPltType() == 2) {
@@ -225,7 +229,11 @@
OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), slave.getId()));
// 澶嶄綅淇″彿
- if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
+ if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING) && crnProtocol.getTaskNo() != null && crnProtocol.getTaskNo() != 0) {
+// if (crnProtocol.getTaskNo() == 0){
+// News.error("鍫嗗灈鏈哄伐浣�1宸ヤ綔鍙蜂负0锛屼笉浜堢‘璁わ紝宸ヤ綅1{}",crnProtocol.getLoaded() == 1 ? "鏈夌墿" : "鏃犵墿");
+// return;
+// }
News.error("---绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}, 宸ヤ綔鍙凤細{}, 杞借揣鍙�1淇″彿:{}]==>> 鐘舵�佷负10锛岀瓑寰呯‘璁わ紒锛�",
slave.getId(), crnProtocol.getTaskNo(), crnProtocol.getLoaded() == 1 ? "鏈夌墿" : "鏃犵墿");
if (resetFlag) {
@@ -244,9 +252,13 @@
}
// 澶嶄綅淇″彿
- if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusTypeTwo().equals(CrnStatusType.WAITING)) {
+ else if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusTypeTwo().equals(CrnStatusType.WAITING) && crnProtocol.getTaskNoTwo() != null && crnProtocol.getTaskNoTwo() != 0) {
+// if (crnProtocol.getTaskNoTwo() == 0){
+// News.error("鍫嗗灈鏈哄伐浣�2宸ヤ綔鍙蜂负0锛屼笉浜堢‘璁わ紝宸ヤ綅2{}",crnProtocol.getLoadedTwo() == 1 ? "鏈夌墿" : "鏃犵墿");
+// return;
+// }
News.error("---绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}, 宸ヤ綔鍙凤細{}, 杞借揣鍙�2淇″彿:{}]==>> 鐘舵�佷负10锛岀瓑寰呯‘璁わ紒锛�",
- slave.getId(), crnProtocol.getTaskNo(), crnProtocol.getLoaded() == 1 ? "鏈夌墿" : "鏃犵墿");
+ slave.getId(), crnProtocol.getTaskNoTwo(), crnProtocol.getLoadedTwo() == 1 ? "鏈夌墿" : "鏃犵墿");
if (resetFlagTwo) {
if (crnProtocol.getTaskNo() == 9999) {
backHpFlag = false;
@@ -260,6 +272,22 @@
slave.getId(), wrkNo, resetFlag);
}
}
+ }
+
+ if (System.currentTimeMillis() - crnProtocol.getDeviceDataLog() > 200) {
+ //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
+ //淇濆瓨鏁版嵁璁板綍
+ DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
+ DeviceDataLog deviceDataLog = new DeviceDataLog();
+ deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result.Content));
+ deviceDataLog.setWcsData(JSON.toJSONString(crnProtocol));
+ deviceDataLog.setType("crn");
+ deviceDataLog.setDeviceNo(crnProtocol.getCrnNo());
+ deviceDataLog.setCreateTime(new Date());
+ deviceDataLogService.insert(deviceDataLog);
+
+ //鏇存柊閲囬泦鏃堕棿
+ crnProtocol.setDeviceDataLog(System.currentTimeMillis());
}
try {
@@ -301,7 +329,7 @@
*/
private boolean write(CrnCommand command) throws InterruptedException {
if (null == command) {
- News.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
+ News.error("鍫嗗灈鏈哄伐浣�1鍐欏叆鍛戒护涓虹┖");
return false;
}
// 鍚戝爢鍨涙満鍙戜换鍔″墠鐨勫爢鍨涙満鐘舵��
@@ -328,12 +356,12 @@
}
}
} catch (Exception e) {
- News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�");
+ News.error("鍫嗗灈鏈哄伐浣�1鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�");
}
// convertRow(command);
command.setCrnNo(slave.getId());
// short[] array = new short[10];
- short[] array = new short[9];
+ short[] array = new short[10];
array[0] = command.getAckFinish(); // 浠诲姟瀹屾垚纭浣�
array[1] = command.getTaskNo(); // 浠诲姟鍙�
array[2] = command.getTaskMode(); // 妯″紡
@@ -343,11 +371,12 @@
array[6] = command.getDestinationPosX(); // 鐩爣浣嶇疆鎺掑彿
array[7] = command.getDestinationPosY(); // 鐩爣浣嶇疆鍒楀彿
array[8] = command.getDestinationPosZ(); // 鐩爣浣嶇疆灞傚彿
+ array[9] = command.getCommand();
// array[10] = 0; //澶囩敤1
OperateResult result = siemensNet.Write("DB100.0", array);
- News.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), array);
+ News.info("鍫嗗灈鏈哄伐浣�1鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), array);
//鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
Thread.sleep(200);
@@ -357,7 +386,7 @@
try {
if (!result.IsSuccess) {
// if (!resetFlag){
- News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command), writeCount1);
+ News.error("鍐欏叆鍫嗗灈鏈哄伐浣�1plc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command), writeCount1);
result = siemensNet.Write("DB100.0", array);
// }
@@ -384,7 +413,7 @@
|| !command.getAckFinish().equals(one.getAckFinish())
) {
try {
- News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command), JSON.toJSON(one));
+ News.error("鍫嗗灈鏈哄伐浣�1鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵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));
@@ -399,18 +428,18 @@
}
// if (!resetFlag){
- News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command), writeCount1);
+ News.error("鍐欏叆鍫嗗灈鏈哄伐浣�1plc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command), writeCount1);
result = siemensNet.Write("DB100.0", array);
// }
writeCount1++;
continue;
} else {
- News.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command), JSON.toJSON(one));
+ News.info("鍫嗗灈鏈哄伐浣�1鍛戒护鍦板潃鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command), JSON.toJSON(one));
break;
}
}
} catch (Exception e) {
- News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�,寮傚父锛�" + e);
+ News.error("鍫嗗灈鏈哄伐浣�1鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�,寮傚父锛�" + e);
}
writeCount1++;
} while (writeCount1 < 6);
@@ -433,17 +462,17 @@
if (resultRead.IsSuccess) {
commandFinish = siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
if (commandFinish != 1) {
- News.error("鍫嗗灈鏈轰换鍔$‘璁や綅" + commandFinish + "鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒" + "寰幆鎵ц娆℃暟:" + writeCount2 + "娆�");
+ News.error("鍫嗗灈鏈哄伐浣�1浠诲姟纭浣�" + commandFinish + "鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒" + "寰幆鎵ц娆℃暟:" + writeCount2 + "娆�");
} else {
//浠诲姟鍛戒护鍐欏叆鎴愬姛
- News.info("鍫嗗灈鏈轰换鍔$‘璁や綅" + commandFinish + "鍥炶鎴愬姛锛�" + "寰幆鎵ц娆℃暟:" + writeCount2 + "娆�");
+ News.info("鍫嗗灈鏈哄伐浣�1浠诲姟纭浣�" + commandFinish + "鍥炶鎴愬姛锛�" + "寰幆鎵ц娆℃暟:" + writeCount2 + "娆�");
break;
}
} else {
- News.error("鍫嗗灈鏈轰换鍔$‘璁や綅" + commandFinish + "鍥炶澶辫触锛�" + "寰幆鎵ц娆℃暟:" + writeCount2 + "娆�");
+ News.error("鍫嗗灈鏈哄伐浣�1浠诲姟纭浣�" + commandFinish + "鍥炶澶辫触锛�" + "寰幆鎵ц娆℃暟:" + writeCount2 + "娆�");
}
} else {
- News.error("鍫嗗灈鏈轰换鍔$‘璁や綅" + commandFinish + "鍐欏叆澶辫触锛�" + "寰幆鎵ц娆℃暟:" + writeCount2 + "娆�");
+ News.error("鍫嗗灈鏈哄伐浣�1浠诲姟纭浣�" + commandFinish + "鍐欏叆澶辫触锛�" + "寰幆鎵ц娆℃暟:" + writeCount2 + "娆�");
}
} while (writeCount2 < 5);
}
@@ -481,8 +510,8 @@
OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
return true;
} else {
- OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
- News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満宸ヤ綅1plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+ News.error("鍐欏叆鍫嗗灈鏈哄伐浣�1plc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
return false;
}
}
@@ -492,7 +521,7 @@
*/
private boolean write2(CrnCommand command) throws InterruptedException {
if (null == command) {
- News.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
+ News.error("鍫嗗灈鏈哄伐浣�2鍐欏叆鍛戒护涓虹┖");
return false;
}
// 鍚戝爢鍨涙満鍙戜换鍔″墠鐨勫爢鍨涙満鐘舵��
@@ -519,13 +548,13 @@
}
}
} catch (Exception e) {
- News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�");
+ News.error("鍫嗗灈鏈哄伐浣�2鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�");
}
// convertRow(command);
command.setCrnNo(slave.getId());
// short[] array = new short[10];
- short[] array = new short[9];
- //array[0] = command.getAckFinish(); // 浠诲姟瀹屾垚纭浣�
+ short[] array = new short[10];
+// array[0] = command.getAckFinish(); // 浠诲姟瀹屾垚纭浣�
array[0] = command.getTaskNo(); // 浠诲姟鍙�
array[1] = command.getTaskMode(); // 妯″紡
array[2] = command.getSourcePosX(); // 婧愪綅缃帓鍙�
@@ -539,17 +568,23 @@
short[] array2 = new short[1];
array2[0] = command.getAckFinish();
- OperateResult result = siemensNet.Write("DB100.20", array);
OperateResult result2 = siemensNet.Write("DB100.0", array2);
- News.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), array);
+ try {
+ Thread.sleep(100);
+ } catch (Exception e) {
+
+ }
+ OperateResult result = siemensNet.Write("DB100.20", array);
+ News.info("鍫嗗灈鏈哄伐浣�2鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), array);
+ News.info("鍫嗗灈鏈哄伐浣�2浠诲姟瀹屾垚纭浣嶄笅鍙慬id:{}] >>>>> {}", slave.getId(), array2);
int writeCount1 = 1;
do {
try {
if (!result.IsSuccess || !result2.IsSuccess) {
// if (!resetFlag){
- News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command), writeCount1);
- result = siemensNet.Write("DB100.0", array);
+ News.error("鍐欏叆鍫嗗灈鏈哄伐浣�2plc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command), writeCount1);
+ result = siemensNet.Write("DB100.20", array);
// }
Thread.sleep(100);
writeCount1++;
@@ -574,7 +609,7 @@
|| !command.getAckFinish().equals(one.getAckFinish())
) {
try {
- News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command), JSON.toJSON(one));
+ News.error("鍫嗗灈鏈哄伐浣�2鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵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));
@@ -589,18 +624,24 @@
}
// if (!resetFlag){
- News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command), writeCount1);
- result = siemensNet.Write("DB100.0", array);
+ News.error("鍐欏叆鍫嗗灈鏈哄伐浣�2plc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command), writeCount1);
+ result = siemensNet.Write("DB100.20", array);
+ try {
+ Thread.sleep(100);
+ } catch (Exception e) {
+
+ }
+ result2 = siemensNet.Write("DB100.0", array2);
// }
writeCount1++;
continue;
} else {
- News.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command), JSON.toJSON(one));
+ News.info("鍫嗗灈鏈哄伐浣�2鍛戒护鍦板潃鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command), JSON.toJSON(one));
break;
}
}
} catch (Exception e) {
- News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�2,寮傚父锛�" + e);
+ News.error("鍫嗗灈鏈哄伐浣�2鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�2,寮傚父锛�" + e);
}
writeCount1++;
} while (writeCount1 < 6);
@@ -623,17 +664,17 @@
if (resultRead.IsSuccess) {
commandFinish = siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
if (commandFinish != 1) {
- News.error("鍫嗗灈鏈轰换鍔$‘璁や綅" + commandFinish + "鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒" + "寰幆鎵ц娆℃暟:" + writeCount2 + "娆�");
+ News.error("鍫嗗灈鏈哄伐浣�2浠诲姟纭浣�" + commandFinish + "鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒" + "寰幆鎵ц娆℃暟:" + writeCount2 + "娆�");
} else {
//浠诲姟鍛戒护鍐欏叆鎴愬姛
// News.info("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍥炶鎴愬姛锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
break;
}
} else {
- News.error("鍫嗗灈鏈轰换鍔$‘璁や綅" + commandFinish + "鍥炶澶辫触锛�" + "寰幆鎵ц娆℃暟:" + writeCount2 + "娆�");
+ News.error("鍫嗗灈鏈哄伐浣�2浠诲姟纭浣�" + commandFinish + "鍥炶澶辫触锛�" + "寰幆鎵ц娆℃暟:" + writeCount2 + "娆�");
}
} else {
- News.error("鍫嗗灈鏈轰换鍔$‘璁や綅" + commandFinish + "鍐欏叆澶辫触锛�" + "寰幆鎵ц娆℃暟:" + writeCount2 + "娆�");
+ News.error("鍫嗗灈鏈哄伐浣�2浠诲姟纭浣�" + commandFinish + "鍐欏叆澶辫触锛�" + "寰幆鎵ц娆℃暟:" + writeCount2 + "娆�");
}
} while (writeCount2 < 5);
}
@@ -672,7 +713,7 @@
return true;
} else {
OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
- News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ News.error("鍐欏叆鍫嗗灈鏈哄伐浣�2plc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
return false;
}
}
--
Gitblit v1.9.1