From f96a2246074ec51d0930836390fa6e3433141d28 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期一, 22 八月 2022 15:17:51 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/MelsecCrnThread.java | 61 ++++++++++++++++++++++++++++++
1 files changed, 60 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/MelsecCrnThread.java b/src/main/java/com/zy/core/thread/MelsecCrnThread.java
index 57d10ea..240532f 100644
--- a/src/main/java/com/zy/core/thread/MelsecCrnThread.java
+++ b/src/main/java/com/zy/core/thread/MelsecCrnThread.java
@@ -39,6 +39,7 @@
private MelsecMcNet melsecMcNet;
private CrnSlave slave;
private CrnProtocol crnProtocol;
+ private short heartBeatVal = 1;
private boolean resetFlag = false;
public MelsecCrnThread(CrnSlave slave) {
@@ -49,6 +50,11 @@
@SuppressWarnings("InfiniteLoopStatement")
public void run() {
this.connect();
+// try {
+// Thread.sleep(2000);
+// } catch (InterruptedException e) {
+// e.printStackTrace();
+// }
while (true) {
try {
int step = 1;
@@ -86,12 +92,41 @@
default:
break;
}
+ // 蹇冭烦
+ heartbeat();
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
}
+ }
+
+ /**
+ * 鍒濆鍖栧爢鍨涙満鐘舵��
+ */
+ private void initCrn() {
+ if (null == crnProtocol) {
+ crnProtocol = new CrnProtocol();
+ }
+ crnProtocol.setCrnNo(slave.getId());
+ crnProtocol.setMode((short) -1);
+// crnProtocol.setTaskNo((short)0);
+ crnProtocol.setStatus((short)-1);
+ crnProtocol.setBay((short)0);
+ crnProtocol.setLevel((short)0);
+ crnProtocol.setForkPos((short) -1);
+ crnProtocol.setLiftPos((short) -1);
+ crnProtocol.setWalkPos((short)0);
+ crnProtocol.setLoaded((short)0);
+ crnProtocol.setAlarm((short)0);
+ crnProtocol.setXSpeed(0F);
+ crnProtocol.setYSpeed(0F);
+ crnProtocol.setZSpeed(0F);
+ crnProtocol.setXDistance(0F);
+ crnProtocol.setYDistance(0F);
+ crnProtocol.setXDuration(0F);
+ crnProtocol.setYDuration(0F);
}
@Override
@@ -106,8 +141,9 @@
} else {
OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝爢鍨涙満plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] ", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
log.error("鍫嗗灈鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ initCrn();
}
- melsecMcNet.ConnectClose();
+// melsecMcNet.ConnectClose();
return result;
}
@@ -116,11 +152,17 @@
*/
private void readStatus(){
try {
+// if (this.slave.getId() == 1 && flag1.equals(0)) {
+// Thread.sleep(3000);
+// flag1=1;
+// System.out.println("===");
+// }
OperateResultExOne<byte[]> result = melsecMcNet.Read("D20", (short) 70);
if (result.IsSuccess) {
if (null == crnProtocol) {
crnProtocol = new CrnProtocol();
}
+ crnProtocol.setCrnNo(slave.getId());
crnProtocol.setMode(melsecMcNet.getByteTransform().TransInt16(result.Content, 0));
crnProtocol.setTaskNo(melsecMcNet.getByteTransform().TransInt16(result.Content, 2));
crnProtocol.setStatus(melsecMcNet.getByteTransform().TransInt16(result.Content, 4));
@@ -157,6 +199,7 @@
}
}
+
// 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
BasCrnp basCrnp = new BasCrnp();
@@ -174,6 +217,7 @@
e.printStackTrace();
OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
log.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ initCrn();
}
}
@@ -244,6 +288,21 @@
melsecMcNet.ConnectClose();
}
+ /**
+ * 蹇冭烦
+ */
+ private void heartbeat(){
+ if (heartBeatVal == 1) {
+ heartBeatVal = 2;
+ } else {
+ heartBeatVal = 1;
+ }
+ OperateResult write = melsecMcNet.Write("D10", heartBeatVal);
+ if (!write.IsSuccess) {
+ log.error("杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId());
+ }
+ }
+
/******************************************************************************************/
/**************************************** 娴嬭瘯涓撶敤 *****************************************/
--
Gitblit v1.9.1