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