From 27b048e77b68752c7c3060b9e31ad46efb4101a5 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期三, 15 四月 2026 08:07:03 +0800
Subject: [PATCH] 1
---
zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/service/Snap7Service.java | 58 ++++++++++++++++++++++++++++++----------------------------
1 files changed, 30 insertions(+), 28 deletions(-)
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/service/Snap7Service.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/service/Snap7Service.java
index ccb551a..402f87d 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/service/Snap7Service.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/service/Snap7Service.java
@@ -5,8 +5,8 @@
import com.alibaba.fastjson.JSON;
import com.zy.acs.common.utils.News;
import com.zy.acs.conveyor.core.constant.PlcConstant;
-import com.zy.acs.conveyor.core.constant.SafeSignalField;
-import com.zy.acs.conveyor.core.constant.TaskField;
+import com.zy.acs.conveyor.core.enums.SafeSignalField;
+import com.zy.acs.conveyor.core.enums.TaskField;
import com.zy.acs.conveyor.core.model.SafeSignal;
import com.zy.acs.conveyor.core.model.StaProtocol;
import com.zy.acs.conveyor.core.properties.DevpSlave;
@@ -14,6 +14,7 @@
import com.zy.acs.conveyor.core.properties.SlaveProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.text.MessageFormat;
@@ -30,8 +31,8 @@
@Autowired
private DevpS7Service devpS7Service;
-
- private static final int WRITE_RETRY_MAX = 5;
+ @Value("${plc-write.retry}")
+ private int WRITE_RETRY;
private static final int WRITE_RETRY_INTERVAL_MS = 200;
@@ -41,42 +42,42 @@
public void writeSafe(StaProtocol staProtocol) throws InterruptedException {
if (staProtocol == null) {
- log.warn("鍐欏叆鏁版嵁涓虹┖锛岃烦杩� [id:{}]", JSON.toJSONString(staProtocol));
+ News.warn("鍐欏叆鏁版嵁涓虹┖锛岃烦杩� [id:{}]", JSON.toJSONString(staProtocol));
return;
}
SiemensS7Net siemensS7Net = devpS7Service.get(staProtocol.getPlcId());
if (siemensS7Net == null) {
- log.error("PLC鏈繛鎺ワ紝鏃犳硶鍐欏叆 [id:{}]", JSON.toJSONString(staProtocol));
+ News.error("PLC鏈繛鎺ワ紝鏃犳硶鍐欏叆 [id:{}]", JSON.toJSONString(staProtocol));
return;
}
List<DevpSlave> devp = slaveProperties.getDevp();
DevpSlave devpSlave = devp.stream().filter(slave -> slave.getId().equals(staProtocol.getPlcId())).findFirst().orElse(null);
if (devpSlave == null) {
- log.error("PLC鏈厤缃紝鏃犳硶鍐欏叆 [id:{}]", JSON.toJSONString(staProtocol));
+ News.error("PLC鏈厤缃紝鏃犳硶鍐欏叆 [id:{}]", JSON.toJSONString(staProtocol));
return;
}
int index = devpSlave.getStaNos().indexOf(staProtocol.getSiteId());
if (index < 0) {
- log.error("绔欑偣缂栧彿涓嶅瓨鍦ㄤ簬閰嶇疆涓� [id:{}] [siteId:{}]", staProtocol.getPlcId(), staProtocol.getSiteId());
+ News.error("绔欑偣缂栧彿涓嶅瓨鍦ㄤ簬閰嶇疆涓� [id:{}] [siteId:{}]", staProtocol.getPlcId(), staProtocol.getSiteId());
return;
}
SafeSignal safeSignal = staProtocol.getSafeSignal();
int baseOffset = 0;
- short[] array = new short[6];
- array[0] = (short) 1;
- array[1] = (short) 0;
- array[2] = (short) 0;
- array[5] = (short) 0;
+ boolean[] array = new boolean[6];
+ array[0] = true;
+ array[1] = false;
+ array[2] = false;
+ array[5] = false;
if (safeSignal.getFlag()) {
- array[3] = (short) 0;
+ array[3] = false;
array[4] = safeSignal.getValue();
baseOffset = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getOffset() + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getByteLength();
} else {
array[3] = safeSignal.getValue();
- array[4] = (short) 0;
+ array[4] = false;
baseOffset = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getOffset() + 2 + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getByteLength();
}
String flagAddr = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getAddressPattern() + PlcConstant.ADDRESS_CONCATENATION
@@ -86,11 +87,11 @@
int writeCount = 0;
boolean success = false;
- while (writeCount < WRITE_RETRY_MAX) {
+ while (writeCount <= WRITE_RETRY) {
OperateResult writeResult = siemensS7Net.Write(flagAddr, array);
if (writeResult.IsSuccess) {
- log.info("鍐欏叆瀹夊叏淇″彿杈撻�佺嚎鍛戒护鎴愬姛 [id:{}] [siteId:{}] [workNo:{}] [destSta:{}] [retry:{}]",
+ News.info("鍐欏叆瀹夊叏淇″彿杈撻�佺嚎鍛戒护鎴愬姛 [id:{}] [siteId:{}] [workNo:{}] [destSta:{}] [retry:{}]",
staProtocol.getPlcId(), staProtocol.getSiteId(), staProtocol.getWorkNo(),
staProtocol.getStaNo(), writeCount);
OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ畨鍏ㄤ俊鍙疯緭閫佺嚎鍛戒护鎴愬姛銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}",
@@ -100,10 +101,12 @@
}
writeCount++;
- log.error("鍐欏叆瀹夊叏淇″彿杈撻�佺嚎鍛戒护澶辫触 [id:{}] [siteId:{}] [retry:{}] [workErr:{}] ",
+ News.error("鍐欏叆瀹夊叏淇″彿杈撻�佺嚎鍛戒护澶辫触 [id:{}] [siteId:{}] [retry:{}] [workErr:{}] ",
staProtocol.getPlcId(), staProtocol.getSiteId(), writeCount,
writeResult.Message);
-
+ if (writeCount <= WRITE_RETRY) {
+ Thread.sleep(WRITE_RETRY_INTERVAL_MS);
+ }
}
if (!success) {
@@ -118,25 +121,25 @@
public void write(StaProtocol staProtocol) throws InterruptedException {
if (staProtocol == null) {
- log.warn("鍐欏叆鏁版嵁涓虹┖锛岃烦杩� [id:{}]", JSON.toJSONString(staProtocol));
+ News.warn("鍐欏叆鏁版嵁涓虹┖锛岃烦杩� [id:{}]", JSON.toJSONString(staProtocol));
return;
}
SiemensS7Net siemensS7Net = devpS7Service.get(staProtocol.getPlcId());
if (siemensS7Net == null) {
- log.error("PLC鏈繛鎺ワ紝鏃犳硶鍐欏叆 [id:{}]", JSON.toJSONString(staProtocol));
+ News.error("PLC鏈繛鎺ワ紝鏃犳硶鍐欏叆 [id:{}]", JSON.toJSONString(staProtocol));
return;
}
List<DevpSlave> devp = slaveProperties.getDevp();
DevpSlave devpSlave = devp.stream().filter(slave -> slave.getId().equals(staProtocol.getPlcId())).findFirst().orElse(null);
if (devpSlave == null) {
- log.error("PLC鏈厤缃紝鏃犳硶鍐欏叆 [id:{}]", JSON.toJSONString(staProtocol));
+ News.error("PLC鏈厤缃紝鏃犳硶鍐欏叆 [id:{}]", JSON.toJSONString(staProtocol));
return;
}
int index = devpSlave.getStaNos().indexOf(staProtocol.getSiteId());
if (index < 0) {
- log.error("绔欑偣缂栧彿涓嶅瓨鍦ㄤ簬閰嶇疆涓� [id:{}] [siteId:{}]", staProtocol.getPlcId(), staProtocol.getSiteId());
+ News.error("绔欑偣缂栧彿涓嶅瓨鍦ㄤ簬閰嶇疆涓� [id:{}] [siteId:{}]", staProtocol.getPlcId(), staProtocol.getSiteId());
return;
}
@@ -150,14 +153,14 @@
int writeCount = 0;
boolean success = false;
- while (writeCount < WRITE_RETRY_MAX) {
+ while (writeCount <= WRITE_RETRY) {
OperateResult writeResult = siemensS7Net.Write(workNoAddr, staProtocol.getWorkNo());
Thread.sleep(WRITE_RETRY_INTERVAL_MS);
OperateResult writeResult1 = siemensS7Net.Write(destStaAddr, staProtocol.getStaNo().shortValue());
if (writeResult.IsSuccess && writeResult1.IsSuccess) {
- log.info("鍐欏叆杈撻�佺嚎鍛戒护鎴愬姛 [id:{}] [siteId:{}] [workNo:{}] [destSta:{}] [retry:{}]",
+ News.info("鍐欏叆杈撻�佺嚎鍛戒护鎴愬姛 [id:{}] [siteId:{}] [workNo:{}] [destSta:{}] [retry:{}]",
staProtocol.getPlcId(), staProtocol.getSiteId(), staProtocol.getWorkNo(),
staProtocol.getStaNo(), writeCount);
OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护鎴愬姛銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}",
@@ -167,11 +170,11 @@
}
writeCount++;
- log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触 [id:{}] [siteId:{}] [retry:{}] [workErr:{}] [destErr:{}]",
+ News.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触 [id:{}] [siteId:{}] [retry:{}] [workErr:{}] [destErr:{}]",
staProtocol.getPlcId(), staProtocol.getSiteId(), writeCount,
writeResult.Message, writeResult1.Message);
- if (writeCount < WRITE_RETRY_MAX) {
+ if (writeCount <= WRITE_RETRY) {
Thread.sleep(WRITE_RETRY_INTERVAL_MS);
}
}
@@ -182,7 +185,6 @@
OutputQueue.DEVP.offer(errorMsg);
News.error("SiemensDevp - 4 - 鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}",
staProtocol.getPlcId(), JSON.toJSON(staProtocol));
- log.error(errorMsg);
}
}
--
Gitblit v1.9.1