From fc4e5c458094c6bf5238d7d21291325f19a57adb Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期一, 22 十二月 2025 16:57:21 +0800
Subject: [PATCH] 修改:逻辑交互写入使用plc通讯工厂统一接口
---
mes-processes/mes-plcSend/src/main/java/com/mes/plc/client/impl/ModbusPlcClient.java | 27 +++++++++++++++++++++++----
1 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/plc/client/impl/ModbusPlcClient.java b/mes-processes/mes-plcSend/src/main/java/com/mes/plc/client/impl/ModbusPlcClient.java
index 03f03c7..c8d8a36 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/plc/client/impl/ModbusPlcClient.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/plc/client/impl/ModbusPlcClient.java
@@ -1,5 +1,6 @@
package com.mes.plc.client.impl;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.mes.connect.modbus.ModbusTcpClient;
import com.mes.device.entity.DeviceConfig;
import com.mes.plc.client.PlcClient;
@@ -30,6 +31,9 @@
// 浠庣珯鍦板潃
private final int unitId;
+ // 璁惧閰嶇疆
+ private final DeviceConfig device;
+
// Modbus瀹㈡埛绔疄渚�
private ModbusTcpClient modbusClient;
@@ -39,12 +43,19 @@
// 瓒呮椂鏃堕棿锛堟绉掞級
private int timeout = 5000;
+ // ObjectMapper鐢ㄤ簬JSON瑙f瀽
+ private final ObjectMapper objectMapper = new ObjectMapper();
+
+ // 鍦板潃鏄犲皠缂撳瓨锛氬瓧娈靛悕 -> Modbus鍦板潃
+ private Map<String, String> addressMappingCache;
+
/**
* 鏋勯�犲嚱鏁�
*
* @param device 璁惧閰嶇疆
*/
public ModbusPlcClient(DeviceConfig device) {
+ this.device = device;
this.plcIp = device.getPlcIp();
this.plcPort = device.getPlcPort() != null ? device.getPlcPort() : 502;
@@ -74,7 +85,7 @@
*/
private Map<String, Object> parseExtraParams(String extraParamsJson) {
if (extraParamsJson == null || extraParamsJson.isEmpty()) {
- return null;
+ return new HashMap<>();
}
try {
@@ -150,6 +161,10 @@
return Collections.emptyMap();
}
+ if (fields == null || fields.length == 0) {
+ return readAllData();
+ }
+
try {
// TODO: 瀹炵幇Modbus璇诲彇鎸囧畾瀛楁鏁版嵁
// 杩欓噷鏆傛椂杩斿洖绌篗ap锛屽悗缁畬鍠�
@@ -161,12 +176,17 @@
return Collections.emptyMap();
}
}
-
+
@Override
public boolean writeData(Map<String, Object> data) {
if (!isConnected() && !connect()) {
log.error("Modbus PLC鏈繛鎺ワ紝鏃犳硶鍐欏叆鏁版嵁: {}:{}", this.plcIp, this.plcPort);
return false;
+ }
+
+ if (data == null || data.isEmpty()) {
+ log.warn("鍐欏叆鏁版嵁涓虹┖锛岃烦杩囨搷浣�: deviceId={}", device.getId());
+ return true;
}
try {
@@ -180,7 +200,7 @@
return false;
}
}
-
+
@Override
public boolean isConnected() {
try {
@@ -208,6 +228,5 @@
@Override
public void setTimeout(int timeout) {
this.timeout = timeout;
- // ModbusTcpClient涓嶆敮鎸佺洿鎺ヨ缃秴鏃讹紝杩欓噷浠呰褰曡秴鏃舵椂闂�
}
}
\ No newline at end of file
--
Gitblit v1.8.0