From 4f64a5b70500e1ec7b0b350eb66749180ed2634a Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期日, 23 六月 2024 20:10:07 +0800
Subject: [PATCH] # 捷众二期开发
---
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 268 ++++++++++++++++++-----------------------------------
1 files changed, 90 insertions(+), 178 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index a2528c8..506993f 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -192,15 +192,58 @@
* 璇诲彇鐘舵�� ====> 鏁村潡plc
*/
private void read() throws InterruptedException {
-// // 鏇存柊鍏ュ嚭搴撴ā寮�
-// updateIoMode();
- String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
ArrayList<Integer> staNos = getStaNo();
int staNoSize = staNos.size();
+ // 璇诲彇1鍙疯緭閫佺嚎
if (slave.getId() == 1) {
+ OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) (staNoSize * 8));
+ if (result.IsSuccess) {
+ for (int i = 0; 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(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4)); // 宸ヤ綔鍙�
+ staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4 + 2)); // 鐩爣绔�
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, 60+i, 1);
+ 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]); // 浣庡簱浣�
+ staProtocol.setWeight(status[6]); //鏄惁涓洪噸璐�
+ if (!staProtocol.isPakMk() && staProtocol.isLoading()) {
+ staProtocol.setPakMk(true);
+ }
+ }
+ } else {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+ log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
+ }
+
+ //鏉$爜鎵弿鍣�
+ Thread.sleep(200);
+ ArrayList<Integer> barcodeList = getBarcodeList();
+ OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100.90", (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);
+ }
+ }
+ }
} else if (slave.getId() == 2) {
- OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*8));
+ OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize * 8));
if (result.IsSuccess) {
for (int i = 0; i < staNoSize; i++) {
Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
@@ -211,8 +254,8 @@
station.put(siteId, staProtocol);
}
staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 8)); // 宸ヤ綔鍙�
- staProtocol.setStaNo( siemensS7Net.getByteTransform().TransInt16(result.Content, i*8 + 4 )); // 鐩爣绔�
- boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*8+6, 1);
+ staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 8 + 4)); // 鐩爣绔�
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i * 8 + 6, 1);
staProtocol.setAutoing(status[0]); // 鑷姩
staProtocol.setLoading(status[1]); // 鏈夌墿
staProtocol.setInEnable(status[2]); // 鍙叆
@@ -226,24 +269,6 @@
staProtocol.setPakMk(true);
}
}
-
- // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
- try {
- 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()));
- News.error(methodName + ":鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
- }
} else {
OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
@@ -251,16 +276,16 @@
//澶栧舰妫�娴�
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(303);
- 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]);
+ if (resultErr.IsSuccess) {
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, 0, 1);
+ StaProtocol staProtocol = station.get(303);
+ 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]);
}
//鏉$爜鎵弿鍣�
@@ -270,118 +295,31 @@
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");
+ 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)) {
+ if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
barcodeThread.setBarcode(barcode);
}
}
}
-// //鏉$爜鎵弿鍣�
-// Thread.sleep(200);
-// OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.60",(short)8);
-// if (result2.IsSuccess) {
-// String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,0,8, "UTF-8");
-// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, 3);
-// if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
-// barcodeThread.setBarcode(barcode);
-// }
-// }
}
+ // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+ try {
+ List<BasDevp> basDevps = new ArrayList<>();
+ for (Integer siteId : staNos) {
+ StaProtocol staProtocol = station.get(siteId);
+ basDevps.add(staProtocol.toSqlModel());
+ }
-//
-// if (result.IsSuccess) {
-// for (int i = 0; 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(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4)); // 宸ヤ綔鍙�
-//
-// staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4+2)); // 鐩爣绔�
-// }
-// }
-
-// Thread.sleep(200);
-// OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.60", (short) (staNoSize * 2));
-// if (result1.IsSuccess) {
-// for (int i = 0; i < staNoSize; i++) {
-// Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
-// boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*2, 1);
-// boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result1.Content, i*2+1, 1);
-// StaProtocol staProtocol = station.get(siteId);
-// 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.setLow(status[6]); // 浣庡簱浣�
-// staProtocol.setMedium(status[7]); // 涓簱浣�
-// staProtocol.setMedium_high(status2[0]); //涓珮搴撲綅
-// staProtocol.setHigh(status2[1]); // 楂樺簱浣�
-// if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
-// staProtocol.setPakMk(true);
-// }
-//
-// if (!staProtocol.isLoading()){
-// staProtocol.setStamp(0);
-// }
-// }
-// }
-
- //鎺ユ敹瓒呭瓒呴珮娌℃壂鍒版潯鐮佹姤璀�
-// Thread.sleep(200);
-// OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB101.34",(short)(1));
-// if (result4.IsSuccess) {
-// startSignal = siemensS7Net.getByteTransform().TransBool(result4.Content, 0, 1);
-// }
-
-
- //鏉$爜鎵弿鍣�
-// Thread.sleep(200);
-// OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.60",(short)(barcodeSize*8));
-// if (result2.IsSuccess) {
-// for (int i = 0; i < barcodeSize; i++) {
-// String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8");
-// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
-// if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
-// barcodeThread.setBarcode(barcode);
-// }
-// }
-// }
-
-// if (result.IsSuccess && result1.IsSuccess) {
-//
-// OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
-//
-// // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
-// try {
-// 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) {
-// initSite();
-// 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()));
-// News.error("SiemensDevp"+" - 3"+" - 鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
-// }
-//
-// } else {
-// OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
-//// log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
-// }
+ 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()));
+ }
}
/**
@@ -392,57 +330,31 @@
return;
}
ArrayList<Integer> staNos = getStaNo();
- int index = staNos.indexOf(staProtocol.getSiteId());
- short[] array = new short[2];
- array[0] = staProtocol.getWorkNo();
- array[1] = staProtocol.getStaNo();
-// OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
-
OperateResult write = null;
OperateResult write1 = null;
-// //浠诲姟涓嬪彂娆℃暟
-// int writeCount = 0;
-// do {
- write1 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo()); // 鐩爣绔�
+ // 鍐�2鍙疯緭閫佺嚎
+ if (slave.getId() == 1) {
+ int index = staNos.indexOf(staProtocol.getSiteId());
+ write = siemensS7Net.Write("DB100." + index * 4, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
Thread.sleep(500);
- write = siemensS7Net.Write("DB100." + index*6, staProtocol.getWorkNo().intValue()); // 宸ヤ綔鍙�
-
-// if(write.IsSuccess || write1.IsSuccess){
-// Thread.sleep(200);
-// OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index*4, (short) 2);
-// OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB100." + (index*4+2), (short) 2);
-// if(readResult.IsSuccess && readResult1.IsSuccess){
-// short workNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 0);
-// short staNo = siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 0);
-// if(staProtocol.getWorkNo().equals(workNo) && staProtocol.getStaNo().equals(staNo)){
-// //浠诲姟鍛戒护鍐欏叆鎴愬姛
-// log.info("鍐欏叆鍫嗗灈鏈哄懡浠ゅ悗杩斿洖鎴愬姛锛屽苟涓斿洖璇绘垚鍔熴�傚爢鍨涙満plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-// break;
-// } else {//杩斿洖缁撴灉鏄垚鍔熶簡锛屼絾鏄湡瀹炲�间笉鐩稿悓
-// writeCount++;
-// log.error("鍐欏叆鍫嗗灈鏈哄懡浠ゅ悗杩斿洖鎴愬姛锛屼絾鏄鍙栦换鍔″�间笉涓�鑷淬�傚爢鍨涙満plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-// }
-// } else {
-// writeCount++;
-// log.error("鍐欏叆鍫嗗灈鏈哄懡浠ゅ悗璇诲彇澶辫触銆傚爢鍨涙満plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-// }
-// }
-// else {
-// writeCount++;
-// log.error("鍐欏叆鍫嗗灈鏈哄懡浠ゅ悗璇诲彇澶辫触銆傚爢鍨涙満plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-// }
-// }while (writeCount<5);
+ write1 = siemensS7Net.Write("DB100." + (4 * index + 2), staProtocol.getStaNo()); // 鐩爣绔檈
+ } else {
+ int index = staNos.indexOf(staProtocol.getSiteId());
+ write1 = siemensS7Net.Write("DB100." + (index * 6 + 4), staProtocol.getStaNo()); // 鐩爣绔�
+ Thread.sleep(500);
+ write = siemensS7Net.Write("DB100." + index * 6, staProtocol.getWorkNo().intValue()); // 宸ヤ綔鍙�
+ }
if (!write.IsSuccess || !write1.IsSuccess) {
staProtocol = station.get(staProtocol.getSiteId());
- if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
+ if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() == 0) {
staProtocol.setPakMk(true);
}
OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
- News.error("SiemensDevp"+" - 4"+" - 鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+ News.error("SiemensDevp" + " - 4" + " - 鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
} else {
OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
- News.info("SiemensDevp"+" - 5"+" - 杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol));
+ News.info("SiemensDevp" + " - 5" + " - 杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol));
}
}
--
Gitblit v1.9.1