From 58bacddf2b6c95e28a23cc12b22bed2cc36a0ad8 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 19 九月 2023 14:46:01 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 74 ++++++++++++++++++++++++++++++++-----
1 files changed, 64 insertions(+), 10 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index df325e7..cf3791d 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -43,9 +43,15 @@
private short heartBeatVal = 1;
private int barcodeSize = 1;
public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{
- add(100);add(101);add(102);
- add(103);add(104);add(105);
- add(106);add(107);add(108);
+ add(100);add(101);
+ add(102);add(103);
+ add(104);add(105);
+ add(200);add(201);
+ add(202);add(203);
+ add(204);add(205);
+ add(300);add(301);
+ add(340);add(341);
+ add(345);add(346);
}};
public static final ArrayList<Integer> outInStaNos = new ArrayList<Integer>() {{
@@ -78,14 +84,18 @@
break;
// 鍐欐暟鎹� ID+鐩爣绔�
case 2:
- write((StaProtocol)task.getData());
+ write((StaProtocol) task.getData());
read();
break;
// 鍑哄叆搴撴ā寮�
case 3:
- write3((StaProtocol)task.getData());
+ write3((StaProtocol) task.getData());
read();
break;
+ //102绔欏洖閫�淇″彿
+ case 5:
+ write5((StaProtocol) task.getData());
+ read();
default:
break;
}
@@ -122,7 +132,7 @@
* 璇诲彇鐘舵�� ====> 鏁村潡plc
*/
private void read() throws InterruptedException {
- OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) (staNos.size()*4));
+ OperateResultExOne<byte[]> result = siemensS7Net.Read("DB1000.0", (short) (staNos.size()*4));
if (result.IsSuccess) {
for (int i = 0; i < staNos.size(); i++) {
Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
@@ -137,11 +147,11 @@
}
}
Thread.sleep(200);
- OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB101.0", (short) (staNos.size()));
+ OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB1001.0", (short) (staNos.size()*2));
if (result1.IsSuccess) {
for (int i = 0; i < staNos.size(); i++) {
Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
- boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i, 1);
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*2, 1);
StaProtocol staProtocol = station.get(siteId);
staProtocol.setAutoing(status[0]); // 鑷姩
staProtocol.setLoading(status[1]); // 鏈夌墿
@@ -407,10 +417,10 @@
//浠诲姟涓嬪彂鎴愬姛鏍囪瘑
boolean writeFlag = false;
while(writeCount < 5){
- writeResult = siemensS7Net.Write("DB100." + index*4, array); // 宸ヤ綔鍙枫�佺洰鏍囩珯
+ writeResult = siemensS7Net.Write("DB1000." + index*4, array); // 宸ヤ綔鍙枫�佺洰鏍囩珯
if(writeResult.IsSuccess){
Thread.sleep(200);
- OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index*4, (short)4);
+ OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB1000." + index*4, (short)4);
if(readResult.IsSuccess){
short workNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0);
short staNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 2);
@@ -466,6 +476,50 @@
}
/**
+ * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
+ */
+ private void write5(StaProtocol staProtocol) throws InterruptedException {
+ if (null == staProtocol) {
+ return;
+ }
+
+ OperateResult writeResult;
+ //浠诲姟涓嬪彂娆℃暟
+ int writeCount = 0;
+ while(writeCount < 5){
+ writeResult = siemensS7Net.Write("DB100.310", staProtocol.getRollback102().shortValue());
+ if(writeResult.IsSuccess){
+ Thread.sleep(200);
+ OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100.310", (short)2);
+ if(readResult.IsSuccess){
+ short rollback = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0);
+ if (staProtocol.getRollback102() == (int) rollback) {
+ //浠诲姟鍛戒护鍐欏叆鎴愬姛
+ log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ return;
+ } else {//杩斿洖缁撴灉鏄垚鍔熶簡锛屼絾鏄湡瀹炲�间笉鐩稿悓
+ writeCount++;
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+ slave.getId(), JSON.toJSON(staProtocol), writeCount));
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ }
+ } else {
+ writeCount++;
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+ slave.getId(), JSON.toJSON(staProtocol), writeCount));
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ }
+ } else {
+ writeCount++;
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+ slave.getId(), JSON.toJSON(staProtocol),writeCount));
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ }
+ Thread.sleep(200);
+ }
+ }
+
+ /**
* 蹇冭烦
*/
private void heartbeat(){
--
Gitblit v1.9.1