From 38add77dd27643bc83c916aeceac5dcde76bac02 Mon Sep 17 00:00:00 2001
From: pjb <123456>
Date: 星期一, 11 八月 2025 15:42:36 +0800
Subject: [PATCH] 1
---
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 185 +++++++++++++++++++++++++++++----------------
1 files changed, 119 insertions(+), 66 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index d2d93ce..25f6958 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -134,6 +134,8 @@
// 璇绘暟鎹�
case 1:
read();
+ Thread.sleep(100);
+ readsanqi();
break;
// 鍐欐暟鎹� ID+鐩爣绔�
case 2:
@@ -144,7 +146,7 @@
}
// 蹇冭烦
// heartbeat();
- Thread.sleep(300);
+ Thread.sleep(200);
} catch (Exception e) {
e.printStackTrace();
}
@@ -189,8 +191,6 @@
return barcode1;
case 2:
return barcode2;
- case 3:
- return barcode3;
default:
throw new CoolException("鑾峰彇鏉$爜鎵弿鍣ㄥけ璐ワ紒");
}
@@ -302,6 +302,66 @@
// log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
}
+
+ //澶栧舰妫�娴�
+ OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.42", (short) 8);
+ if (resultErr.IsSuccess) {
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, 0, 1);
+ StaProtocol staProtocol = station.get(304);
+ staProtocol.setFrontErr(status[0]);
+ staProtocol.setBackErr(status[1]);
+ staProtocol.setHighErr(status[2]);
+ staProtocol.setLeftErr(status[3]);
+ staProtocol.setRightErr(status[4]);
+ staProtocol.setWeightErr(status[5]);
+ staProtocol.setBarcodeErr(status[6]);
+ }
+
+
+ //鏉$爜鎵弿鍣�
+ Thread.sleep(200);
+ ArrayList<Integer> barcodeList = getBarcodeList();
+ OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.60", (short) (barcodeList.size() * 8));
+ if (result2.IsSuccess) {
+ for (int i = 0; i < barcodeList.size(); i++) {
+ Integer barcodeId = barcodeList.get(i);
+ String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8");
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
+ if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+ barcodeThread.setBarcode(barcode);
+ }
+ }
+ }
+
+ }
+ // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+ try {
+ if (!station.isEmpty()) {
+ List<BasDevp> basDevps = new ArrayList<>();
+ for (Integer siteId : staNos) {
+ StaProtocol staProtocol = station.get(siteId);
+ basDevps.add(staProtocol.toSqlModel());
+ }
+
+ BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
+ if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
+ throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+ }
+ }
+
+
+ /**
+ * 璇诲彇鐘舵�� ====> 鏁村潡plc
+ */
+ private void readsanqi() throws InterruptedException {
+ ArrayList<Integer> staNos = staNos3;
+ int staNoSize = staNos3.size();
+ if (slave.getId() == 2) {
//
OperateResultExOne<byte[]> resultsanqi = siemensS7Net.Read("DB101.120", (short) (staNoSize * 8));
if (resultsanqi.IsSuccess) {
@@ -335,57 +395,30 @@
}
- //澶栧舰妫�娴�
- OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.42", (short) 8);
- if (resultErr.IsSuccess) {
- boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, 0, 1);
- StaProtocol staProtocol = station.get(304);
- staProtocol.setFrontErr(status[0]);
- staProtocol.setBackErr(status[1]);
- staProtocol.setHighErr(status[2]);
- staProtocol.setLeftErr(status[3]);
- staProtocol.setRightErr(status[4]);
- staProtocol.setWeightErr(status[5]);
- staProtocol.setBarcodeErr(status[6]);
- }
-
-
//澶栧舰妫�娴� 涓夋湡
- OperateResultExOne<byte[]> resultErrsanqi = siemensS7Net.Read("DB101.160", (short) 8);
+ OperateResultExOne<byte[]> resultErrsanqi = siemensS7Net.Read("DB101.162", (short) (staNoSize * 8));
if (resultErrsanqi.IsSuccess) {
- boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErrsanqi.Content, 0, 1);
- StaProtocol staProtocol = station.get(304);
- staProtocol.setFrontErr(status[0]);
- staProtocol.setBackErr(status[1]);
- staProtocol.setHighErr(status[2]);
- staProtocol.setLeftErr(status[3]);
- staProtocol.setRightErr(status[4]);
- staProtocol.setWeightErr(status[5]);
- staProtocol.setBarcodeErr(status[6]);
- }
-
- //鏉$爜鎵弿鍣�
- Thread.sleep(200);
- ArrayList<Integer> barcodeList = getBarcodeList();
- OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.60", (short) (barcodeList.size() * 8));
- if (result2.IsSuccess) {
- for (int i = 0; i < barcodeList.size(); i++) {
- Integer barcodeId = barcodeList.get(i);
- String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8");
- BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
- if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
- barcodeThread.setBarcode(barcode);
- }
+ for (int i = 0; i < staNoSize; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErrsanqi.Content, i * 4, 1);
+ StaProtocol staProtocol = station.get(siteId);
+ staProtocol.setFrontErr(status[0]);
+ staProtocol.setBackErr(status[1]);
+ staProtocol.setHighErr(status[2]);
+ staProtocol.setLeftErr(status[3]);
+ staProtocol.setRightErr(status[4]);
+ staProtocol.setWeightErr(status[5]);
+ staProtocol.setBarcodeErr(status[6]);
}
}
//鏉$爜鎵弿鍣� 涓夋湡
Thread.sleep(200);
- ArrayList<Integer> barcodeListsanqi = getBarcodeList();
- OperateResultExOne<byte[]> result2siqi = siemensS7Net.Read("DB101.60", (short) (barcodeListsanqi.size() * 8));
+ ArrayList<Integer> barcodeListsanqi = barcode3;
+ OperateResultExOne<byte[]> result2siqi = siemensS7Net.Read("DB101.180", (short) (barcodeListsanqi.size() * 8));
if (result2siqi.IsSuccess) {
- for (int i = 0; i < barcodeList.size(); i++) {
+ for (int i = 0; i < barcodeListsanqi.size(); i++) {
Integer barcodeId = barcodeListsanqi.get(i);
String barcode = siemensS7Net.getByteTransform().TransString(result2siqi.Content, i * 8, 8, "UTF-8");
BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
@@ -395,24 +428,43 @@
}
}
- }
- // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
- try {
- if (!station.isEmpty()) {
- List<BasDevp> basDevps = new ArrayList<>();
- for (Integer siteId : staNos) {
+ //鏁呴殰 涓夋湡
+ OperateResultExOne<byte[]> resultErrs = siemensS7Net.Read("DB101.220", (short) (staNoSize * 4));
+ if (resultErrs.IsSuccess) {
+ for (int i = 0; i < staNoSize; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErrs.Content, i * 4, 1);
StaProtocol staProtocol = station.get(siteId);
- basDevps.add(staProtocol.toSqlModel());
+ 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]);
+
}
- BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
- if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
- throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
- }
}
- } catch (Exception e) {
- e.printStackTrace();
- OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+ // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+ try {
+ if (!station.isEmpty()) {
+ List<BasDevp> basDevps = new ArrayList<>();
+ for (Integer siteId : staNos) {
+ StaProtocol staProtocol = station.get(siteId);
+ basDevps.add(staProtocol.toSqlModel());
+ }
+
+ BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
+ if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
+ throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+ }
}
}
@@ -427,9 +479,10 @@
OperateResult write = null;
OperateResult write1 = null;
int index;
+ int index2 = 0;
if (staProtocol.getSiteId() >= 310) {
index = staNos3.indexOf(staProtocol.getSiteId());
- index = index + 54;
+ index2 = 66;
} else {
index = staNos.indexOf(staProtocol.getSiteId());
}
@@ -458,10 +511,10 @@
boolean writeFlag = false;
while (writeCount < 5) {
// 鍐�2鍙疯緭閫佺嚎
- write = siemensS7Net.Write("DB100." + index * 4, array); // 宸ヤ綔鍙枫�佺洰鏍�
+ write = siemensS7Net.Write("DB100." + (index * 4 + index2), array); // 宸ヤ綔鍙枫�佺洰鏍�
if (write.IsSuccess) {
Thread.sleep(200);
- OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index * 4, (short) 4);
+ OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + (index * 4 + index2), (short) 4);
//OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB1000." + index*4, (short)4);
if (readResult.IsSuccess) {
short workNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0);
@@ -524,14 +577,14 @@
boolean writeFlag = false;
while (writeCount < 5) {
// 鍐�2鍙疯緭閫佺嚎
- write = siemensS7Net.Write("DB100." + index * 6, staProtocol.getWorkNo().intValue()); // 宸ヤ綔鍙�
+ write = siemensS7Net.Write("DB100." + (index * 6 + index2), staProtocol.getWorkNo().intValue()); // 宸ヤ綔鍙�
Thread.sleep(200);
- write1 = siemensS7Net.Write("DB100." + (index * 6 + 4), staProtocol.getStaNo()); // 鐩爣绔�
+ write1 = siemensS7Net.Write("DB100." + (index * 6 + 4 + index2), staProtocol.getStaNo()); // 鐩爣绔�
if (write.IsSuccess) {
Thread.sleep(200);
- OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index * 6, (short) 4);
+ OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + (index * 6 + index2), (short) 4);
Thread.sleep(200);
- OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB100." + (index * 6 + 4), (short) 2);
+ OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB100." + (index * 6 + 4 + index2), (short) 2);
//OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB1000." + index*4, (short)4);
if (readResult.IsSuccess && readResult1.IsSuccess) {
int workNo = siemensS7Net.getByteTransform().TransInt32(readResult.Content, 0);
--
Gitblit v1.9.1