From 04010139d8aa486fd55fb498889d477f5029dbe7 Mon Sep 17 00:00:00 2001
From: CZT <czt18638530771@163.com>
Date: 星期二, 05 九月 2023 18:40:50 +0800
Subject: [PATCH] 优化配置信息
---
igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusUtil2.java | 70 +++++++++++++++++++++--------------
1 files changed, 42 insertions(+), 28 deletions(-)
diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusUtil2.java b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusUtil2.java
index 5090776..4eb27c7 100644
--- a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusUtil2.java
+++ b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusUtil2.java
@@ -2,6 +2,7 @@
import com.serotonin.modbus4j.ModbusFactory;
import com.serotonin.modbus4j.ModbusMaster;
+import com.serotonin.modbus4j.code.DataType;
import com.serotonin.modbus4j.exception.ErrorResponseException;
import com.serotonin.modbus4j.exception.ModbusInitException;
import com.serotonin.modbus4j.exception.ModbusTransportException;
@@ -9,9 +10,6 @@
import com.serotonin.modbus4j.locator.BaseLocator;
import com.serotonin.modbus4j.msg.*;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import java.util.HashMap;
/**
* @Desc: 宸ュ叿绫�
@@ -24,13 +22,10 @@
//浠庢満榛樿鍊�
private static Integer slaveId = 1;
- private static HashMap<String, ModbusMaster> masterMap = new HashMap<>();
-
/**
* 宸ュ巶
*/
static ModbusFactory modbusFactory;
- //static ModbusMaster modbusMaster;
static {
if (modbusFactory == null) {
@@ -44,18 +39,17 @@
*
* @return
*/
- public static ModbusMaster getMaster(String ip, int port) throws ModbusInitException {
- String key = ip;
- ModbusMaster modbusMaster = masterMap.get(key);
- if (modbusMaster == null || !modbusMaster.isConnected()) {
- IpParameters ipParameters = new IpParameters();
- ipParameters.setHost(ip);
- ipParameters.setPort(port);
- modbusMaster = modbusFactory.createTcpMaster(ipParameters, true);
- modbusMaster.init();
- masterMap.put(key, modbusMaster);
- return modbusMaster;
- }
+ public static ModbusMaster getMaster(String ip, int port) throws ModbusInitException, InterruptedException {
+
+ IpParameters ipParameters = new IpParameters();
+ ipParameters.setHost(ip);
+ ipParameters.setPort(port);
+ ModbusMaster modbusMaster = modbusFactory.createTcpMaster(ipParameters, false);
+ modbusMaster.init();
+
+ //鍒濆鍖栦箣鍚庣瓑寰咃紝閬垮厤鍑虹幇杩炴帴鏈垱寤�
+ Thread.sleep(2500);
+
return modbusMaster;
}
@@ -69,7 +63,7 @@
* @throws ModbusTransportException
* @throws ErrorResponseException
*/
- public static Boolean readCoilStatus(String ip, int port, int offset) throws ModbusInitException, ModbusTransportException, ErrorResponseException {
+ public static Boolean readCoilStatus(String ip, int port, int offset) throws ModbusInitException, ModbusTransportException, ErrorResponseException, InterruptedException {
BaseLocator<Boolean> coilStatus = BaseLocator.coilStatus(slaveId, offset);
Boolean res = getMaster(ip, port).getValue(coilStatus);
return res;
@@ -84,8 +78,10 @@
* @throws ModbusTransportException
* @throws ErrorResponseException
*/
- public static Boolean readInputStatus(String ip, int port, int offset) throws ModbusInitException, ModbusTransportException, ErrorResponseException {
+ public static Boolean readInputStatus(String ip, int port, int offset) throws ModbusInitException, ModbusTransportException, ErrorResponseException, InterruptedException {
BaseLocator<Boolean> inputStatus = BaseLocator.inputStatus(slaveId, offset);
+
+ // Thread.sleep(3000);
Boolean res = getMaster(ip, port).getValue(inputStatus);
return res;
}
@@ -100,10 +96,15 @@
* @throws ModbusTransportException
* @throws ErrorResponseException
*/
- public static Number readHoldingRegister(String ip, int port, int offset, int dataType) throws ModbusInitException, ModbusTransportException, ErrorResponseException {
+ public static Number readHoldingRegister(String ip, int port, int offset, int dataType) throws ModbusInitException, ModbusTransportException, ErrorResponseException, InterruptedException {
BaseLocator<Number> holdingRegister = BaseLocator.holdingRegister(slaveId, offset, dataType);
Number value = getMaster(ip, port).getValue(holdingRegister);
return value;
+ }
+
+ public static Number readHoldingRegister(String ip, int port, int offset) throws ModbusInitException, ModbusTransportException, ErrorResponseException, InterruptedException {
+ int dataType = DataType.TWO_BYTE_INT_SIGNED;
+ return readHoldingRegister(ip, port, offset, dataType);
}
/**
@@ -116,10 +117,24 @@
* @throws ModbusTransportException
* @throws ErrorResponseException
*/
- public static Number readInputRegister(String ip, int port, int offset, int dataType) throws ModbusInitException, ModbusTransportException, ErrorResponseException {
+ public static Number readInputRegister(String ip, int port, int offset, int dataType) throws ModbusInitException, ModbusTransportException, ErrorResponseException, InterruptedException {
BaseLocator<Number> inputRegister = BaseLocator.inputRegister(slaveId, offset, dataType);
Number value = getMaster(ip, port).getValue(inputRegister);
return value;
+ }
+
+ /**
+ * 璇昏緭鍏ュ瘎瀛樺櫒鏁版嵁 0x04
+ *
+ * @param offset
+ * @return
+ * @throws ModbusInitException
+ * @throws ModbusTransportException
+ * @throws ErrorResponseException
+ */
+ public static Number readInputRegister(String ip, int port, int offset) throws ModbusInitException, ModbusTransportException, ErrorResponseException, InterruptedException {
+ int dataType = DataType.TWO_BYTE_INT_SIGNED;
+ return readInputRegister(ip, port, offset, dataType);
}
@@ -132,9 +147,8 @@
* @throws ModbusTransportException
* @throws ModbusInitException
*/
- public static Boolean writeCoilStatus(String ip, int port, int offset, boolean status) throws ModbusTransportException, ModbusInitException {
- boolean coilValue = status;
- WriteCoilRequest coilRequest = new WriteCoilRequest(slaveId, offset, coilValue);
+ public static Boolean writeCoilStatus(String ip, int port, int offset, boolean status) throws ModbusTransportException, ModbusInitException, InterruptedException {
+ WriteCoilRequest coilRequest = new WriteCoilRequest(slaveId, offset, status);
WriteCoilResponse coilResponse = (WriteCoilResponse) getMaster(ip, port).send(coilRequest);
return !coilResponse.isException();
}
@@ -149,7 +163,7 @@
* @throws ModbusTransportException
* @throws ModbusInitException
*/
- public static Boolean writeRegister(String ip, int port, int offset, int value) throws ModbusTransportException, ModbusInitException {
+ public static Boolean writeRegister(String ip, int port, int offset, int value) throws ModbusTransportException, ModbusInitException, InterruptedException {
WriteRegisterRequest registerRequest = new WriteRegisterRequest(slaveId, offset, value);
WriteRegisterResponse registerResponse = (WriteRegisterResponse) getMaster(ip, port).send(registerRequest);
return !registerResponse.isException();
@@ -165,7 +179,7 @@
* @throws ModbusTransportException
* @throws ModbusInitException
*/
- public static Boolean writeCoils(String ip, int port, int offset, boolean[] booleans) throws ModbusTransportException, ModbusInitException {
+ public static Boolean writeCoils(String ip, int port, int offset, boolean[] booleans) throws ModbusTransportException, ModbusInitException, InterruptedException {
WriteCoilsRequest writeCoils = new WriteCoilsRequest(slaveId, offset, booleans);
WriteCoilsResponse coilsResponse = (WriteCoilsResponse) getMaster(ip, port).send(writeCoils);
return !coilsResponse.isException();
@@ -181,7 +195,7 @@
* @throws ModbusTransportException
* @throws ModbusInitException
*/
- public static Boolean writeRegisters(String ip, int port, int offset, short[] nums) throws ModbusTransportException, ModbusInitException {
+ public static Boolean writeRegisters(String ip, int port, int offset, short[] nums) throws ModbusTransportException, ModbusInitException, InterruptedException {
WriteRegistersRequest writeRegisters = new WriteRegistersRequest(slaveId, offset, nums);
WriteRegistersResponse registersResponse = (WriteRegistersResponse) getMaster(ip, port).send(writeRegisters);
return !registersResponse.isException();
--
Gitblit v1.9.3