From a16e95529f1d06f037407e78f2427c3160185838 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期四, 15 五月 2025 13:54:44 +0800
Subject: [PATCH] 输送线侧面plc读取,写入
---
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 239 +++++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 174 insertions(+), 65 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 25b99fe..fe5dffa 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -41,13 +41,19 @@
public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
add(101);add(102);add(103);add(104);add(105);add(106);add(107);add(108);add(109);add(110);
- add(111);add(112);add(113);add(114);add(115);add(116);
- add(201);add(202);add(203);add(205);add(206);add(207);add(210);add(211);add(212);
+ add(111);add(112);add(113);add(114);add(115);add(116); // 渚ч潰浠� index 16寮�濮� 闀垮害12
+ add(201);add(202);add(203);add(204);add(205);add(206);add(207);add(208);add(209);add(210);add(211);add(212);
}};
public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
add(301);add(302);add(303);add(304);add(305);add(306);add(307);add(308);
}};
+
+ // 渚ч潰涓変釜鏉$爜鎵弿绔�
+ public static final ArrayList<Integer> barcodeSite = new ArrayList<Integer>() {{
+ add(202);add(206);add(211);
+ }};
+
/**
* 鍏ュ嚭搴撴ā寮�
* 0锛氭湭鐭�
@@ -180,10 +186,10 @@
ArrayList<Integer> staNos = getStaNo();
int staNoSize = staNos.size();
- // 璇昏揣浣嶄俊鎭弽棣�
- OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize * 8));
+ // 璇绘闈㈣揣浣嶄俊鎭弽棣�
+ OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (16 * 8));
if (result.IsSuccess) {
- for (int i = 0; i < staNoSize; i++) {
+ for (int i = 0; i < 16; i++) {
Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
StaProtocol staProtocol = station.get(siteId);
if (null == staProtocol) {
@@ -211,68 +217,160 @@
}
}
- if (slave.getId() == 1) {
- //Thread.sleep(200);
- // 璇诲彇鏉$爜
- OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.1404", (short) (staNoSize*8));
- if (result2.IsSuccess) {
- for (int i =0; i <staNoSize; i++) {
- int barcodeId = 0;
- switch (i){
- case 1:barcodeId=1;break;
- case 4:barcodeId=2;break;
- case 7:barcodeId=3;break;
- case 10:barcodeId=4;break;
- case 13:barcodeId=5;break;
- default:
- }
- if (barcodeId != 0) {
- String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 6, "UTF-8");
- BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
- if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
- barcodeThread.setBarcode(barcode);
- }
- }
+ // 璇讳晶闈㈣揣浣嶄俊鎭弽棣�
+ OperateResultExOne<byte[]> resultCm = siemensS7Net.Read("DB101.800", (short) (12 * 8));
+ if (resultCm.IsSuccess) {
+ for (int i = 16; i < staNoSize; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ StaProtocol staProtocol = station.get(siteId);
+ if (null == staProtocol) {
+ staProtocol = new StaProtocol();
+ staProtocol.setSiteId(siteId);
+ station.put(siteId, staProtocol);
+ }
+ staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(resultCm.Content, (i-16) * 8)); // 宸ヤ綔鍙�
+
+ staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(resultCm.Content, (i-16) * 8 + 4)); // 鐩爣绔�
+
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultCm.Content, (i-16) * 8 + 6, 2);
+ staProtocol.setAutoing(status[0]); // 鑷姩
+ staProtocol.setLoading(status[1]); // 鏈夌墿
+ staProtocol.setInEnable(status[2]); // 鍙叆
+ staProtocol.setOutEnable(status[3]);// 鍙嚭
+ staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿
+ staProtocol.setFullPlt(status[5]); // 婊℃墭鐩�
+ staProtocol.setHigh(status[6]); // 楂樺簱浣�
+ staProtocol.setLow(status[7]); // 浣庡簱浣�
+
+ if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
+ staProtocol.setPakMk(true);
}
}
-
- // 璇诲彇澶栧舰妫�娴�
- OperateResultExOne<byte[]> resultErr1 = siemensS7Net.Read("DB101.936", (short) (staNoSize * 8));
- if (resultErr1.IsSuccess) {
- for (int i = 0; i < staNoSize; i++) {
- Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
- StaProtocol staProtocol = station.get(siteId);
- boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErr1.Content, i * 2, 1);
- staProtocol.setFrontErr(status1[0]);
- staProtocol.setBackErr(status1[1]);
- staProtocol.setHighErr(status1[2]);
- staProtocol.setLeftErr(status1[3]);
- staProtocol.setRightErr(status1[4]);
- staProtocol.setWeightErr(status1[5]);
- staProtocol.setBarcodeErr(status1[6]);
- }
- }
-
- OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0", (short) (staNoSize * 4));
- if (resultErr.IsSuccess) {
- for (int i = 0; i < staNoSize; i++) {
- Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
- boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4, 1);
- StaProtocol staProtocol = station.get(siteId);
- staProtocol.setBreakerErr(status[0]);
- staProtocol.setInfraredErr(status[1]);
- staProtocol.setOutTimeErr(status[2]);
- staProtocol.setSeizeSeatErr(status[3]);
- staProtocol.setWrkYgoodsN(status[4]);
- staProtocol.setInverterErr(status[5]);
- staProtocol.setContactErr(status[6]);
- staProtocol.setUpcontactErr(status[7]);
-
- }
- }
-
}
+ // 璇诲彇姝i潰鏉$爜
+ OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.1404", (short) (16 * 8));
+ if (result2.IsSuccess) {
+ for (int i = 0; i < 16; i++) {
+ int barcodeId = 0;
+ switch (i) {
+ case 1:
+ barcodeId = 1;
+ break;
+ case 4:
+ barcodeId = 2;
+ break;
+ case 7:
+ barcodeId = 3;
+ break;
+ case 10:
+ barcodeId = 4;
+ break;
+ case 13:
+ barcodeId = 5;
+ break;
+ default:
+ }
+ if (barcodeId != 0) {
+ String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 6, "UTF-8");
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
+ if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+ barcodeThread.setBarcode(barcode);
+ }
+ }
+ }
+ }
+
+ // 璇诲彇渚ч潰鏉$爜
+ OperateResultExOne<byte[]> resultCM2 = siemensS7Net.Read("DB101.2574", (short) (3 * 4 * 6));
+ if (resultCM2.IsSuccess) {
+ for (int i= 8; i >= 6; i --) {
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i);
+ List<String> barcodes = new ArrayList<>();
+ for(int j = 0; j < 4; j ++) {
+ String barcode1 = siemensS7Net.getByteTransform().TransString(resultCM2.Content, (8-i) * 24 + j *6, 6, "UTF-8");
+ if (!Cools.isEmpty(barcode1)&&!barcode1.equals("000000")&& !barcode1.equals("NoRead")) {
+ barcodes.add(barcode1);
+ }
+ }
+ String barcode = String.join("#",barcodes);
+ if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+ barcodeThread.setBarcode(barcode);
+ }
+ }
+ }
+
+ // 璇诲彇姝i潰澶栧舰妫�娴�
+ OperateResultExOne<byte[]> resultErr1 = siemensS7Net.Read("DB101.936", (short) (16 * 8));
+ if (resultErr1.IsSuccess) {
+ for (int i = 0; i < 16; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ StaProtocol staProtocol = station.get(siteId);
+ boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErr1.Content, i * 2, 1);
+ staProtocol.setFrontErr(status1[0]);
+ staProtocol.setBackErr(status1[1]);
+ staProtocol.setHighErr(status1[2]);
+ staProtocol.setLeftErr(status1[3]);
+ staProtocol.setRightErr(status1[4]);
+ staProtocol.setWeightErr(status1[5]);
+ staProtocol.setBarcodeErr(status1[6]);
+ }
+ }
+
+ // 璇诲彇渚ч潰澶栧舰妫�娴�
+ OperateResultExOne<byte[]> resultErrCM1 = siemensS7Net.Read("DB101.1336", (short) (12 * 8));
+ if (resultErrCM1.IsSuccess) {
+ for (int i = 16; i < staNoSize; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ StaProtocol staProtocol = station.get(siteId);
+ boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErrCM1.Content, (i-16) * 2, 1);
+ staProtocol.setFrontErr(status1[0]);
+ staProtocol.setBackErr(status1[1]);
+ staProtocol.setHighErr(status1[2]);
+ staProtocol.setLeftErr(status1[3]);
+ staProtocol.setRightErr(status1[4]);
+ staProtocol.setWeightErr(status1[5]);
+ staProtocol.setBarcodeErr(status1[6]);
+ }
+ }
+
+ // 璇绘闈㈡晠闅滃弽棣�
+ OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0", (short) (16 * 4));
+ if (resultErr.IsSuccess) {
+ for (int i = 0; i < 16; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4, 1);
+ StaProtocol staProtocol = station.get(siteId);
+ staProtocol.setBreakerErr(status[0]);
+ staProtocol.setInfraredErr(status[1]);
+ staProtocol.setOutTimeErr(status[2]);
+ staProtocol.setSeizeSeatErr(status[3]);
+ staProtocol.setWrkYgoodsN(status[4]);
+ staProtocol.setInverterErr(status[5]);
+ staProtocol.setContactErr(status[6]);
+ staProtocol.setUpcontactErr(status[7]);
+
+ }
+ }
+
+ // 璇讳晶闈㈡晠闅滃弽棣�
+ OperateResultExOne<byte[]> resultErrCM = siemensS7Net.Read("DB101.2540.0", (short) (12 * 4));
+ if (resultErrCM.IsSuccess) {
+ for (int i = 16; i < staNoSize; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErrCM.Content, (i-16) * 4, 1);
+ StaProtocol staProtocol = station.get(siteId);
+ staProtocol.setBreakerErr(status[0]);
+ staProtocol.setInfraredErr(status[1]);
+ staProtocol.setOutTimeErr(status[2]);
+ staProtocol.setSeizeSeatErr(status[3]);
+ staProtocol.setWrkYgoodsN(status[4]);
+ staProtocol.setInverterErr(status[5]);
+ staProtocol.setContactErr(status[6]);
+ staProtocol.setUpcontactErr(status[7]);
+
+ }
+ }
if (result.IsSuccess) {
@@ -314,6 +412,17 @@
ArrayList<Integer> staNos = getStaNo();
int index = staNos.indexOf(staProtocol.getSiteId());
+ // 浠诲姟鍙峰湴鍧�
+ String workNoAddress;
+ // 鐩爣绔欏湴鍧�
+ String staNoAddress;
+ if (index < 16) {
+ workNoAddress = "DB100." + index * 4;
+ staNoAddress = "DB100." + (index * 4 + 2);
+ } else {
+ workNoAddress = "DB100." + (400 + (index-16) * 4);
+ staNoAddress = "DB100." + (400 + (index-16) * 4 + 2);
+ }
OperateResult writeResult;
//浠诲姟涓嬪彂娆℃暟
@@ -321,8 +430,8 @@
//浠诲姟涓嬪彂鎴愬姛鏍囪瘑
boolean writeFlag = false;
while (writeCount < 5) {
- OperateResult writeResult1 = siemensS7Net.Write("DB100." + index * 4, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
- OperateResult writeResult2 = siemensS7Net.Write("DB100." + (index * 4 + 2), staProtocol.getStaNo()); // 鐩爣绔�
+ OperateResult writeResult1 = siemensS7Net.Write(workNoAddress, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
+ OperateResult writeResult2 = siemensS7Net.Write(staNoAddress, staProtocol.getStaNo()); // 鐩爣绔�
if (writeResult1.IsSuccess && writeResult2.IsSuccess) {
Thread.sleep(200);
OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index * 4, (short) 2);
--
Gitblit v1.9.1