From 692931e65fece7199465dbbb39fb5b95acc09415 Mon Sep 17 00:00:00 2001 From: Ismo Leszczynski Date: Wed, 9 Apr 2025 14:29:40 +0300 Subject: [PATCH 1/2] Update ModbusOptimizer.java Fix Discrete Input handling when processing response --- .../plc4x/java/modbus/base/optimizer/ModbusOptimizer.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/optimizer/ModbusOptimizer.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/optimizer/ModbusOptimizer.java index db838c6a0b..c604eed96e 100644 --- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/optimizer/ModbusOptimizer.java +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/optimizer/ModbusOptimizer.java @@ -192,7 +192,7 @@ protected PlcReadResponse processReadResponses(PlcReadRequest readRequest, Map

Date: Wed, 16 Apr 2025 12:54:28 +0300 Subject: [PATCH 2/2] Update ModbusOptimizer.java Fixed endianness resolution to check modbusTag overrides --- .../plc4x/java/modbus/base/optimizer/ModbusOptimizer.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/optimizer/ModbusOptimizer.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/optimizer/ModbusOptimizer.java index c604eed96e..0bde206c48 100644 --- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/optimizer/ModbusOptimizer.java +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/optimizer/ModbusOptimizer.java @@ -228,12 +228,14 @@ else if (response.matchesRegister(modbusTag)) { break; } + var byteOrder = modbusTag.getByteOrder() != null ? modbusTag.getByteOrder() : modbusContext.getByteOrder(); + byte[] responseData = response.getResponseDataForTag(modbusTag); - ReadBuffer readBuffer = getReadBuffer(responseData, modbusContext.getByteOrder()); + ReadBuffer readBuffer = getReadBuffer(responseData, byteOrder); try { PlcValue plcValue = DataItem.staticParse(readBuffer, modbusTag.getDataType(), modbusTag.getNumberOfElements(), - modbusContext.getByteOrder() == ModbusByteOrder.BIG_ENDIAN); + byteOrder == ModbusByteOrder.BIG_ENDIAN); values.put(tagName, new DefaultPlcResponseItem<>(PlcResponseCode.OK, plcValue)); } catch (ParseException e) { values.put(tagName, new DefaultPlcResponseItem<>(PlcResponseCode.INTERNAL_ERROR, null));