Modbus poller crashes after few days

Hi,

I’ve setup Modbus TCP to read out 2 DAT11 devices. I can read out the holding registers just fine but after a few days it stops. We get this error in the poller:

Error with read: org.openhab.core.io.transport.modbus.internal.ModbusSlaveIOExceptionImpl: Modbus IO Error with cause=ModbusIOException, EOF=false, message='I/O exception - failed to write: Broken pipe', cause2=null

And this in the openhab.log:

2024-09-03 12:29:11.577 [ERROR] [rt.modbus.internal.ModbusManagerImpl] - Last try 1 failed when executing request (ModbusReadRequestBlueprint [slaveId=255, functionCode=READ_MULTIPLE_REGISTERS, start=0, length=9, maxTries=1]). Aborting. Error was I/O error, so resetting the connection. Error details: net.wimpi.modbus.ModbusIOException I/O exception - failed to write: Broken pipe [operation ID f5988cac-492c-4462-8dcf-db5d76b869f0]

When OH is generating these errors, I can read out the register just fine with QModMaster.

When I stop.start the Modbus TCP or Poller thing, the error remains.
If I reboot OH, the issue is resolved.
When we reboot the DAT11 device, the error is gone. Perhaps this is because something resets in OH and therefore it works again. As the DAT11 just keeps working during this errors.

What could be the cause of this? Is it a bug in OH?

Slave

UID: modbus:tcp:cea7a1d77b
label: PavoneSystems - DAT11 - Y - Slave
thingTypeUID: modbus:tcp
configuration:
  rtuEncoded: false
  connectMaxTries: 1
  reconnectAfterMillis: 5000
  timeBetweenTransactionsMillis: 1000
  port: 1800
  timeBetweenReconnectMillis: 5000
  connectTimeoutMillis: 30000
  host: 192.168.111.22
  afterConnectionDelayMillis: 5000
  id: 255
  enableDiscovery: false

Poller

UID: modbus:poller:cea7a1d77b:850c5d06fc
label: PavoneSystems - DAT11 - Y - Poll
thingTypeUID: modbus:poller
configuration:
  length: 9
  start: 0
  refresh: 10000
  maxTries: 1
  cacheMillis: 0
  type: holding
bridgeUID: modbus:tcp:cea7a1d77b

Data

UID: modbus:data:27284b8263
label: PavoneSystems - DAT11 - Y - Gross weight (MSB)
thingTypeUID: modbus:data
configuration:
  readValueType: uint16
  readTransform: default
  writeTransform: default
  writeType: holding
  readStart: "2"
  updateUnchangedValuesEveryMillis: 1000
  writeValueType: int16
  writeMultipleEvenWithSingleRegisterOrCoil: false
  writeMaxTries: 3
  writeStart: "100"
bridgeUID: modbus:poller:cea7a1d77b:850c5d06fc
channels:
  - id: number
    channelTypeUID: modbus:number-type
    label: Value as Number
    description: Number item channel
    configuration: {}

Kind regards,
Bastiaan