From e7543347b5065d0047ec7706dbdb7281c3ae4463 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期三, 24 十二月 2025 15:29:03 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 130 +++++++++++++++++++++----------------------
1 files changed, 63 insertions(+), 67 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 0114b65..194a78e 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -895,83 +895,79 @@
Integer offset = siteOffsetMap.get(siteId);
Integer offset2 = getOffsetBySiteId(siteId);
Integer offset3 = getOffsetBySiteId2(siteId);
+ //浠诲姟涓嬪彂娆℃暟
OperateResult write = null;
OperateResult write1 = null;
- //浠诲姟涓嬪彂娆℃暟
int writeCount = 0;
do {
- if(siteId < 1029){
- write = siemensS7Net.Write("DB100." + (offset + offset2), staProtocol.getWorkNo()); // 宸ヤ綔鍙�
- Thread.sleep(200);
- write1 = siemensS7Net.Write("DB100." + (offset + offset2 + 12), staProtocol.getStaNo().intValue()); // 鐩爣绔�
- }else if(siteId < 1042){
- write = siemensS7Net.Write("DB101." + (offset + offset2), staProtocol.getWorkNo()); // 宸ヤ綔鍙�
- Thread.sleep(200);
- write1 = siemensS7Net.Write("DB101." + (offset + offset2 + 12), staProtocol.getStaNo().intValue()); // 鐩爣绔�
- }else if(siteId < 1054){
- write = siemensS7Net.Write("DB104." + (offset + offset2), staProtocol.getWorkNo()); // 宸ヤ綔鍙�
- Thread.sleep(200);
- if(specialSites2.contains(siteId)){
- write1 = siemensS7Net.Write("DB104." + (offset + offset2 + 48), staProtocol.getStaNo().intValue()); // 鐩爣绔�
- }else{
- write1 = siemensS7Net.Write("DB104." + (offset + offset2 + 12), staProtocol.getStaNo().intValue()); // 鐩爣绔�
- }
- }else if(siteId < 1080){
- write = siemensS7Net.Write("DB103." + (offset + offset2), staProtocol.getWorkNo()); // 宸ヤ綔鍙�
- Thread.sleep(200);
- if(specialSites2.contains(siteId)){
- write1 = siemensS7Net.Write("DB103." + (offset + offset2 + 48), staProtocol.getStaNo().intValue()); // 鐩爣绔�
- }else{
- write1 = siemensS7Net.Write("DB103." + (offset + offset2 + 12), staProtocol.getStaNo().intValue()); // 鐩爣绔�
- }
- }else if(siteId < 1111){
- write = siemensS7Net.Write("DB102." + (offset + offset2), staProtocol.getWorkNo()); // 宸ヤ綔鍙�
- Thread.sleep(200);
- if(specialSites2.contains(siteId)){
- write1 = siemensS7Net.Write("DB102." + (offset + offset2 + 48), staProtocol.getStaNo().intValue()); // 鐩爣绔�
- }else{
- write1 = siemensS7Net.Write("DB102." + (offset + offset2 + 12), staProtocol.getStaNo().intValue()); // 鐩爣绔�
- }
- }else if(siteId < 2031){
- write = siemensS7Net.Write("DB200." + (offset + offset2), staProtocol.getWorkNo()); // 宸ヤ綔鍙�
- Thread.sleep(200);
- if(specialSites2.contains(siteId)){
- write1 = siemensS7Net.Write("DB200." + (offset + offset2 + 48), staProtocol.getStaNo().intValue()); // 鐩爣绔�
- }else{
- write1 = siemensS7Net.Write("DB200." + (offset + offset2 + 12), staProtocol.getStaNo().intValue()); // 鐩爣绔�
- }
- }else if(siteId < 2121){
- write = siemensS7Net.Write("DB201." + (offset + offset2), staProtocol.getWorkNo()); // 宸ヤ綔鍙�
- Thread.sleep(200);
- if(specialSites2.contains(siteId)){
- write1 = siemensS7Net.Write("DB201." + (offset + offset2 + 48), staProtocol.getStaNo().intValue()); // 鐩爣绔�
- }else{
- write1 = siemensS7Net.Write("DB201." + (offset + offset2 + 12), staProtocol.getStaNo().intValue()); // 鐩爣绔�
- }
- } else if(siteId < 4000){
+ String workNoAddress = "";
+ String staNoAddress = "";
+
+ // 鏍规嵁绔欑偣鍒ゆ柇鍦板潃
+ if (siteId < 1029) {
+ workNoAddress = "DB100." + (offset + offset2);
+ staNoAddress = "DB100." + (offset + offset2 + 12);
+ } else if (siteId < 1042) {
+ workNoAddress = "DB101." + (offset + offset2);
+ staNoAddress = "DB101." + (offset + offset2 + 12);
+ } else if (siteId < 1054) {
+ workNoAddress = "DB104." + (offset + offset2);
+ staNoAddress = "DB104." + (offset + offset2 + (specialSites2.contains(siteId) ? 48 : 12));
+ } else if (siteId < 1080) {
+ workNoAddress = "DB103." + (offset + offset2);
+ staNoAddress = "DB103." + (offset + offset2 + (specialSites2.contains(siteId) ? 48 : 12));
+ } else if (siteId < 1111) {
+ workNoAddress = "DB102." + (offset + offset2);
+ staNoAddress = "DB102." + (offset + offset2 + (specialSites2.contains(siteId) ? 48 : 12));
+ } else if (siteId < 2031) {
+ workNoAddress = "DB200." + (offset + offset2);
+ staNoAddress = "DB200." + (offset + offset2 + (specialSites2.contains(siteId) ? 48 : 12));
+ } else if (siteId < 2121) {
+ workNoAddress = "DB201." + (offset + offset2);
+ staNoAddress = "DB201." + (offset + offset2 + (specialSites2.contains(siteId) ? 48 : 12));
+ } else if (siteId < 4000) {
Integer offsetBarcode = site2lBarcodeOffsetMap.get(siteId);
- write = siemensS7Net.Write("DB202." + offsetBarcode, staProtocol.getBarcode()); // 鏉$爜
- write1 = siemensS7Net.Write("DB202." + offsetBarcode, staProtocol.getBarcode());
- Thread.sleep(200);
- }else{
- write = siemensS7Net.Write("DB400." + (offset + offset2), staProtocol.getWorkNo()); // 宸ヤ綔鍙�
- Thread.sleep(200);
- if(specialSites2.contains(siteId)){
- write1 = siemensS7Net.Write("DB400." + (offset + offset2 + 48), staProtocol.getStaNo().intValue()); // 鐩爣绔�
- }else{
- write1 = siemensS7Net.Write("DB400." + (offset + offset2 + 12), staProtocol.getStaNo().intValue()); // 鐩爣绔�
+ workNoAddress = "DB202." + offsetBarcode;
+ staNoAddress = "DB202." + offsetBarcode; // For barcode site, only one address used
+ } else {
+ workNoAddress = "DB400." + (offset + offset2);
+ staNoAddress = "DB400." + (offset + offset2 + (specialSites2.contains(siteId) ? 48 : 12));
+ }
+
+ // 鎵ц鍐欏叆
+ write = siemensS7Net.Write(workNoAddress, staProtocol.getWorkNo()); // 鍐欏叆宸ヤ綔鍙�
+ Thread.sleep(200);
+ write1 = siemensS7Net.Write(staNoAddress, staProtocol.getStaNo().intValue()); // 鍐欏叆鐩爣绔�
+
+ // 璇诲彇骞堕獙璇�
+ if (write.IsSuccess && write1.IsSuccess) {
+ // 鍋囪浣跨敤 ReadInt() 鏂规硶璇诲彇 Int32 鏁版嵁
+ OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read(workNoAddress, (short) 4); // 璇诲彇宸ヤ綔鍙�
+ OperateResultExOne<byte[]> readResult2 = siemensS7Net.Read(staNoAddress,(short) 4); // 璇诲彇鐩爣绔�
+ if (readResult1.IsSuccess && readResult2.IsSuccess) {
+ Integer writtenWorkNo = staProtocol.getWorkNo();
+ Integer writtenStaNo = staProtocol.getStaNo().intValue();
+ Integer workNo = siemensS7Net.getByteTransform().TransInt32(readResult1.Content, 0);
+ Integer staNo = siemensS7Net.getByteTransform().TransInt32(readResult2.Content, 0);
+
+ // 瀵规瘮璇诲彇鍒扮殑鏁版嵁涓庡啓鍏ョ殑鏁版嵁鏄惁涓�鑷�
+ if (workNo == writtenWorkNo && staNo == writtenStaNo) {
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ break; // 鏁版嵁涓�鑷达紝璺冲嚭寰幆
+ } else {
+ writeCount++;
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触锛屾暟鎹笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ }
}
- }
- if(write.IsSuccess && write1.IsSuccess){
- log.error("鍐欏叆杈撻�佺嚎鍛戒护鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
- break;
- }
- else {
+ } else {
writeCount++;
log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
}
- }while (writeCount<5);
+
+ } while (writeCount < 5); // 閲嶈瘯鏈�澶�5娆�
+
+
try {
// 鏃ュ織璁板綍
BasDevpOptService bean = SpringUtils.getBean(BasDevpOptService.class);
--
Gitblit v1.9.1