From 664bb4d0b7799328667ffc47e39da711a77ddbfa Mon Sep 17 00:00:00 2001
From: jiazx0107@163.com <jiazx0107@163.com>
Date: 星期一, 28 八月 2023 12:05:33 +0800
Subject: [PATCH] 更新MODBUS-TCP协议,调整配置2

---
 igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusUtil2.java |   80 ++++++++++++++++++++++++++++++---------
 1 files changed, 61 insertions(+), 19 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 b6395c0..56a5d85 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;
@@ -44,7 +45,7 @@
      *
      * @return
      */
-    public static ModbusMaster getMaster(String ip, int port) throws ModbusInitException {
+    public static ModbusMaster getMaster(String ip, int port) throws ModbusInitException, InterruptedException {
         String key = ip;
         ModbusMaster modbusMaster = masterMap.get(key);
         if (modbusMaster == null || !modbusMaster.isConnected()) {
@@ -53,7 +54,12 @@
             ipParameters.setPort(port);
             modbusMaster = modbusFactory.createTcpMaster(ipParameters, true);
             modbusMaster.init();
+
+            //鍒濆鍖栦箣鍚庣瓑寰咃紝閬垮厤鍑虹幇杩炴帴鏈垱寤�
+            Thread.sleep(2000);
+
             masterMap.put(key, modbusMaster);
+
             return modbusMaster;
         }
         return modbusMaster;
@@ -69,7 +75,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;
@@ -87,7 +93,7 @@
     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);
+        // Thread.sleep(3000);
         Boolean res = getMaster(ip, port).getValue(inputStatus);
         return res;
     }
@@ -102,10 +108,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);
     }
 
     /**
@@ -118,10 +129,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);
     }
 
 
@@ -135,21 +160,38 @@
      * @throws ModbusInitException
      */
     public static Boolean writeCoilStatus(String ip, int port, int offset, boolean status) throws ModbusTransportException, ModbusInitException, InterruptedException {
-//        boolean coilValue = status;
-//        WriteCoilRequest coilRequest = new WriteCoilRequest(slaveId, offset, coilValue);
-//        WriteCoilResponse coilResponse = (WriteCoilResponse) getMaster(ip, port).send(coilRequest);
-//        return !coilResponse.isException();
-
         WriteCoilRequest coilRequest = new WriteCoilRequest(slaveId, offset, status);
-        Thread.sleep(3000);
         WriteCoilResponse coilResponse = (WriteCoilResponse) getMaster(ip, port).send(coilRequest);
-
-        //鍙戦�佹竻闄ゅ懡浠�
-        WriteCoilRequest coilRequest1 = new WriteCoilRequest(slaveId, offset, !status);
-        getMaster(ip, port).send(coilRequest1);
-
         return !coilResponse.isException();
     }
+
+
+    /**
+     * 鍐欑嚎鍦堝紑鍏崇姸鎬佹暟鎹�  0x05
+     *
+     * @param offset
+     * @param status
+     * @return
+     * @throws ModbusTransportException
+     * @throws ModbusInitException
+
+    public static Boolean writeCoilStatus(String ip, int port, int offset, boolean status) throws ModbusTransportException, ModbusInitException, InterruptedException {
+    //        boolean coilValue = status;
+    //        WriteCoilRequest coilRequest = new WriteCoilRequest(slaveId, offset, coilValue);
+    //        WriteCoilResponse coilResponse = (WriteCoilResponse) getMaster(ip, port).send(coilRequest);
+    //        return !coilResponse.isException();
+
+    WriteCoilRequest coilRequest = new WriteCoilRequest(slaveId, offset, status);
+    // Thread.sleep(3000);
+    WriteCoilResponse coilResponse = (WriteCoilResponse) getMaster(ip, port).send(coilRequest);
+
+    //鍙戦�佹竻闄ゅ懡浠�
+    WriteCoilRequest coilRequest1 = new WriteCoilRequest(slaveId, offset, !status);
+    getMaster(ip, port).send(coilRequest1);
+
+    return !coilResponse.isException();
+    }
+     */
 
 
     /**
@@ -161,7 +203,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();
@@ -177,7 +219,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();
@@ -193,7 +235,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