eModbus / eModbus

Modbus library for RTU, ASCII and TCP protocols. Primarily developed on and for ESP32 MCUs.

Home Page:https://emodbus.github.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

RTU Bus collisions with many devices on the same bus

raffaeler opened this issue · comments

Describe the bug
I see a large number of CRC or Timeouts when more than 6-7 clients are connected to the bus.

  • Library version: 1.7.0
  • Hardware: ESP32 WROOM32
  • Board: custom
  • Transceivers: max33045e (supports up to 256 devices on the bus)
  • Speed: 19200 (HardwareSerial)

Expected behavior
I have a bus with 1 client and 14 servers.

  • When using just 6-7 servers (disconnecting the others), it works correctly
  • With higher number of servers, there is an abundant and random number of CRC or Timeouts

To Reproduce
I reduced the code to just FC03 transmit/receive and I can see the issue only when a large number of devices are in the same bus.
To verify it only depends on the library, I removed the library and manually crafted modbus packets (both client and server) and I can send and receive without any issues.
I suspect the eModBus library is tricked by the answers of the other devices.

Example code
The reduced code is very close to the examples. The issue is visible only when a large number of devices lives on the same bus.

Additional context
I tried to use skipLeading0x00 on both sides with worse results.
Unfortunately I don´t have any other clues to give.

Additional note. With my own code, I raised the speed to 115K and works correctly.
Initially I did the test using 11K with eModbus and I got tons of errors.
Therefore, this could be a simple way to reproduce the issue without adding a large number of devices. Anyway, the transceiver should be adequate to the desired speed.

Speed is no issue I reckon. I have run RTU up to the ESP32's UART limit of approx. 5 Mbaud with no issues.
I would like to see the verbose log to learn what is going on on your bus.

It requires some time to put back the library at work. BTW when I took a look at the log, I could see mixed garbage, it was not of great help. I also used QModBus apps (master, slave, monitor) and it was totally useless.

How many devices can you put together in your "lab"? This was the key to start seeing errors. This would be far easier to understand the issue because you can add/remove devices until you see the garbage.

My guess is that there is an issue on the timing between RTU frames. This way, the buffer with data coming from other servers is not discarded and bytes get mixed.

My assumptions are going the same way, but I rather would think of two possible external causes: servers not maintaining the minimum quiet time or RE/DE switching issues injecting stray 0x00 bytes.
The maximum number of real servers I can provide ad hoc is 4 - no more hardware in stock I am afraid. I can simulate more servers with a single MCU, but that of course is a different thing.

And still I would like to see your log... 😉

Given the time needed to update all devices, I'll have just a single shot to produce the logs from the client and a single server.
Please tell me the exact options for dumping the verbose log you want, because immediately after posting the log I will have to change strategy for the project and will have no more time to make further tests. (Sorry, but It is taking too long)

The client log will be the most relevant (see further down for an addition), so we need to have it compiled with -DLOG_LEVEL=6. If you are using the Arduino IDE the easiest way to accomplish that is to modify the default LOG_LEVEL in the Logging.h file.

If you have some more resources, you can set up another server as a sniffing device . You will get every single message on the bus and may print it out or do whatever else you like with it. This may help to see if the behaviour is identical to the client in terms of error messages etc.

@raffaeler Any results yet?

I am restoring back eModbus now to create the logs.
After this, I'll have to go on with my code because I exhausted the time while looking for the problem :(
I'll post the logs in a few minutes

The log is too verbose and I don´t understand if it is doing wrong or not

These logs are generated with everything at 115K baud

The client:

[D] 6163| ModbusClientRTU.cpp  [ 112] setTimeout: Timeout set to 2000
[V] 6164| RTUutils.cpp         [ 112] calculateInterval: Calc interval(115201)=1750
[D] 6174| ModbusClientRTU.cpp  [  86] doBegin: Client task 1073554272 started. Interval=1750
ReadySending the configuration: NewProdF2
[V] 15004| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15004| ModbusClientRTU.cpp  [ 156] addRequestM: request for 69/10
[D] 15015| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15015| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[D] 15016| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[V] 15025| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] Sent packet: @3FFCED70/9:
  | 0000: 69 10 00 32 00 01 02 00  01                       |i..2.....       |
[D] 15036| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6E/10
[D] 15046| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[D] 15056| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15066| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15066| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15077| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6F/10
[D] 15077| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15087| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15087| ModbusMessage.cpp    [ 519] checkData: Check data #5
[V] 15094| RTUutils.cpp         [ 262] receive: C/1754us without data after 6
[V] 15098| RTUutils.cpp         [ 272] receive: C/[D] 15098| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6B/10
[V] Raw buffer received: @3FFD2664/6:
[D] 15108| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
  | 0000: 69 10 00 01 DD BD                                 |i.....          |
[D] 15118| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15129| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15129| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCF004/4:
[D] 15139| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6C/10
  | 0000: 69 10 00 01                                       |i...            |
[D] 15149| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15160| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[D] 15160| ModbusClientRTU.cpp  [ 277] handleConnection: Data response (4 bytes) received.
[V] 15170| ModbusMessage.cpp    [ 519] checkData: Check data #5
[V] Data: @3FFCF004/4:
  | 0000: 69 10 00 01                                       |i...            |
[D] 15180| ModbusClientRTU.cpp  [ 156] addRequestM: request for 70/10
[D] 15191| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCF004/4:
  | 0000: 69 10 00 01                                       |i...            |
[D] 15201| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15211| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] 15221| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[D] Sent packet: @3FFD05C0/9:
[V] 15232| ModbusMessage.cpp    [ 519] checkData: Check data #5
  | 0000: 6E 10 00 32 00 01 02 00  02                       |n..2.....       |
[D] 15242| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[D] 15242| ModbusClientRTU.cpp  [ 156] addRequestM: request for 71/10
[D] 15253| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15263| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15263| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15273| ModbusClientRTU.cpp  [ 156] addRequestM: request for 72/10
[D] 15274| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15284| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15284| ModbusMessage.cpp    [ 519] checkData: Check data #5
[V] 15290| RTUutils.cpp         [ 262] receive: C/1756us without data after 6
[D] 15294| ModbusClientRTU.cpp  [ 156] addRequestM: request for 65/10
[V] 15304| RTUutils.cpp         [ 272] receive: C/[D] 15305| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[V] Raw buffer received: @3FFD2664/6:
[D] 15315| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
  | 0000: 6E 10 00 01 DC C9                                 |n.....          |
[V] 15325| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15336| RTUutils.cpp         [ 437] receive: C/[D] 15336| ModbusClientRTU.cpp  [ 156] addRequestM: request for 66/10
[D] Received packet: @3FFCF248/4:
  | 0000: 6E 10 00 01                                       |n...            |
[D] 15346| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15356| ModbusClientRTU.cpp  [ 277] handleConnection: Data response (4 bytes) received.
[D] 15366| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] Data: @3FFCF248/4:
  | 0000: 6E 10 00 01                                       |n...            |
[V] 15377| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15387| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[D] 15387| ModbusClientRTU.cpp  [ 156] addRequestM: request for 67/10
[V] Response packet: @3FFCF248/4:
[D] 15398| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
  | 0000: 6E 10 00 01                                       |n...            |
[D] 15408| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15418| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15418| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] 15429| ModbusClientRTU.cpp  [ 156] addRequestM: request for 68/10
[D] 15439| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] Sent packet: @3FFD24E0/9:
[D] 15449| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
  | 0000: 6F 10 00 32 00 01 02 00  01                       |o..2.....       |
[V] 15449| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15459| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[D] 15470| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6D/10
[D] 15480| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15480| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15491| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15491| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6A/10
[D] 15501| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15501| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15507| RTUutils.cpp         [ 262] receive: C/1756us without data after 6
[V] 15512| RTUutils.cpp         [ 272] receive: C/[V] Raw buffer received: @3FFD2664/6:
  | 0000: 6F 10 00 01 DD 35                                 |o....5          |
[D] 15532| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCF004/4:
  | 0000: 6F 10 00 01                                       |o...            |
[D] 15543| ModbusClientRTU.cpp  [ 277] handleConnection: Data response (4 bytes) received.
[V] Data: @3FFCF004/4:
  | 0000: 6F 10 00 01                                       |o...            |
[D] 15564| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCF004/4:
  | 0000: 6F 10 00 01                                       |o...            |
[D] 15574| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFCF0E8/9:
  | 0000: 6B 10 00 32 00 01 02 00  02                       |k..2.....       |
[D] 15597| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[V] 15653| RTUutils.cpp         [ 262] receive: C/1777us without data after 6
[V] 15654| RTUutils.cpp         [ 272] receive: C/[V] Raw buffer received: @3FFD2664/6:
  | 0000: 6B 10 00 01 DC 05                                 |k.....          |
[D] 15664| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCF004/4:
  | 0000: 6B 10 00 01                                       |k...            |
[D] 15685| ModbusClientRTU.cpp  [ 277] handleConnection: Data response (4 bytes) received.
[V] Data: @3FFCF004/4:
  | 0000: 6B 10 00 01                                       |k...            |
[D] 15695| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCF004/4:
  | 0000: 6B 10 00 01                                       |k...            |
[D] 15716| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFCF0E8/9:
  | 0000: 6C 10 00 32 00 01 02 00  02                       |l..2.....       |
[D] 15728| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[V] 15796| RTUutils.cpp         [ 262] receive: C/1765us without data after 6
[V] 15796| RTUutils.cpp         [ 272] receive: C/[V] Raw buffer received: @3FFD2664/6:
  | 0000: 6C 10 00 01 DD 71                                 |l....q          |
[D] 15807| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCE5A8/4:
  | 0000: 6C 10 00 01                                       |l...            |
[D] 15827| ModbusClientRTU.cpp  [ 277] handleConnection: Data response (4 bytes) received.
[V] Data: @3FFCE5A8/4:
  | 0000: 6C 10 00 01                                       |l...            |
[D] 15838| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCE5A8/4:
  | 0000: 6C 10 00 01                                       |l...            |
[D] 15858| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFCF0B0/9:
  | 0000: 70 10 00 32 00 01 02 00  01                       |p..2.....       |
[D] 15880| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[V] 15938| RTUutils.cpp         [ 262] receive: C/1767us without data after 6
[V] 15938| RTUutils.cpp         [ 272] receive: C/[V] Raw buffer received: @3FFD2664/6:
  | 0000: 70 10 00 01 DA E1                                 |p.....          |
[D] 15948| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCE5A8/4:
  | 0000: 70 10 00 01                                       |p...            |
[D] 15969| ModbusClientRTU.cpp  [ 277] handleConnection: Data response (4 bytes) received.
[V] Data: @3FFCE5A8/4:
  | 0000: 70 10 00 01                                       |p...            |
[D] 15980| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCE5A8/4:
  | 0000: 70 10 00 01                                       |p...            |
[D] 16000| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFCEFE8/9:
  | 0000: 71 10 00 32 00 01 02 00  02                       |q..2.....       |
[D] 16012| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[V] 16079| RTUutils.cpp         [ 262] receive: C/1760us without data after 6
[V] 16080| RTUutils.cpp         [ 272] receive: C/[V] Raw buffer received: @3FFD2664/6:
  | 0000: 71 10 00 01 DB 1D                                 |q.....          |
[D] 16090| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCE5A8/4:
  | 0000: 71 10 00 01                                       |q...            |
[D] 16111| ModbusClientRTU.cpp  [ 277] handleConnection: Data response (4 bytes) received.
[V] Data: @3FFCE5A8/4:
  | 0000: 71 10 00 01                                       |q...            |
[D] 16121| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCE5A8/4:
  | 0000: 71 10 00 01                                       |q...            |
[D] 16142| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFD037C/9:
  | 0000: 72 10 00 32 00 01 02 00  02                       |r..2.....       |
[D] 16154| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[V] 16222| RTUutils.cpp         [ 262] receive: C/1768us without data after 6
[V] 16222| RTUutils.cpp         [ 272] receive: C/[V] Raw buffer received: @3FFD2664/6:
  | 0000: 72 10 00 01 DB 59                                 |r....Y          |
[D] 16233| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCE5A8/4:
  | 0000: 72 10 00 01                                       |r...            |
[D] 16253| ModbusClientRTU.cpp  [ 277] handleConnection: Data response (4 bytes) received.
[V] Data: @3FFCE5A8/4:
  | 0000: 72 10 00 01                                       |r...            |
[D] 16264| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCE5A8/4:
  | 0000: 72 10 00 01                                       |r...            |
[D] 16284| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFCF064/9:
  | 0000: 65 10 00 32 00 01 02 00  01                       |e..2.....       |
[D] 16306| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[V] 16363| RTUutils.cpp         [ 262] receive: C/1771us without data after 6
[V] 16364| RTUutils.cpp         [ 272] receive: C/[V] Raw buffer received: @3FFD2664/6:
  | 0000: 65 10 00 01 DE ED                                 |e.....          |
[D] 16374| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCE5A8/4:
  | 0000: 65 10 00 01                                       |e...            |
[D] 16395| ModbusClientRTU.cpp  [ 277] handleConnection: Data response (4 bytes) received.
[V] Data: @3FFCE5A8/4:
  | 0000: 65 10 00 01                                       |e...            |
[D] 16406| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCE5A8/4:
  | 0000: 65 10 00 01                                       |e...            |
[D] 16427| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFD037C/9:
  | 0000: 66 10 00 32 00 01 02 00  02                       |f..2.....       |
[D] 16438| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[V] 16507| RTUutils.cpp         [ 262] receive: C/1759us without data after 6
[V] 16507| RTUutils.cpp         [ 272] receive: C/[V] Raw buffer received: @3FFD2664/6:
  | 0000: 66 10 00 01 DE A9                                 |f.....          |
[D] 16518| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCE5A8/4:
  | 0000: 66 10 00 01                                       |f...            |
[D] 16538| ModbusClientRTU.cpp  [ 277] handleConnection: Data response (4 bytes) received.
[V] Data: @3FFCE5A8/4:
  | 0000: 66 10 00 01                                       |f...            |
[D] 16549| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCE5A8/4:
  | 0000: 66 10 00 01                                       |f...            |
[D] 16569| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFD037C/9:
  | 0000: 67 10 00 32 00 01 02 00  02                       |g..2.....       |
[D] 16591| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[V] 16649| RTUutils.cpp         [ 262] receive: C/1773us without data after 6
[V] 16649| RTUutils.cpp         [ 272] receive: C/[V] Raw buffer received: @3FFD2664/6:
  | 0000: 67 10 00 01 DF 55                                 |g....U          |
[D] 16660| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCE5A8/4:
  | 0000: 67 10 00 01                                       |g...            |
[D] 16680| ModbusClientRTU.cpp  [ 277] handleConnection: Data response (4 bytes) received.
[V] Data: @3FFCE5A8/4:
  | 0000: 67 10 00 01                                       |g...            |
[D] 16691| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCE5A8/4:
  | 0000: 67 10 00 01                                       |g...            |
[D] 16711| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFD037C/9:
  | 0000: 68 10 00 32 00 01 02 00  02                       |h..2.....       |
[D] 16723| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[V] 16790| RTUutils.cpp         [ 262] receive: C/1771us without data after 6
[V] 16791| RTUutils.cpp         [ 272] receive: C/[V] Raw buffer received: @3FFD2664/6:
  | 0000: 68 10 00 01 DC 41                                 |h....A          |
[D] 16801| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCE5A8/4:
  | 0000: 68 10 00 01                                       |h...            |
[D] 16822| ModbusClientRTU.cpp  [ 277] handleConnection: Data response (4 bytes) received.
[V] Data: @3FFCE5A8/4:
  | 0000: 68 10 00 01                                       |h...            |
[D] 16832| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCE5A8/4:
  | 0000: 68 10 00 01                                       |h...            |
[D] 16853| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFD05C0/9:
  | 0000: 6D 10 00 32 00 01 02 00  02                       |m..2.....       |
[D] 16865| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[V] 16933| RTUutils.cpp         [ 262] receive: C/1775us without data after 6
[V] 16933| RTUutils.cpp         [ 272] receive: C/[V] Raw buffer received: @3FFD2664/6:
  | 0000: 6D 10 00 01 DC 8D                                 |m.....          |
[D] 16944| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCE5A8/4:
  | 0000: 6D 10 00 01                                       |m...            |
[D] 16964| ModbusClientRTU.cpp  [ 277] handleConnection: Data response (4 bytes) received.
[V] Data: @3FFCE5A8/4:
  | 0000: 6D 10 00 01                                       |m...            |
[D] 16975| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCE5A8/4:
  | 0000: 6D 10 00 01                                       |m...            |
[D] 16995| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFCF064/9:
  | 0000: 6A 10 00 32 00 01 02 00  02                       |j..2.....       |
[D] 17017| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[V] 17074| RTUutils.cpp         [ 262] receive: C/1755us without data after 6
[V] 17075| RTUutils.cpp         [ 272] receive: C/[V] Raw buffer received: @3FFD2664/6:
  | 0000: 6A 10 00 01 DD F9                                 |j.....          |
[D] 17085| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCE5A8/4:
  | 0000: 6A 10 00 01                                       |j...            |
[D] 17106| ModbusClientRTU.cpp  [ 277] handleConnection: Data response (4 bytes) received.
[V] Data: @3FFCE5A8/4:
  | 0000: 6A 10 00 01                                       |j...            |
[D] 17116| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCE5A8/4:
  | 0000: 6A 10 00 01                                       |j...            |

One of the servers:

[V] 818548| RTUutils.cpp         [ 262] receive: S/1753us without data after 1
[V] 818548| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/1:
  | 0000: 00                                                |.               |
[D] 818558| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/1:
  | 0000: E5                                                |.               |
[1B][1;33m[E] 818579| ModbusServerRTU.cpp  [ 252] serve: RTU receive: E5 - Packet length error
[1B][0m[D] 820591| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9930/1:
  | 0000: E0                                                |.               |
[D] 822603| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/1:
  | 0000: E0                                                |.               |
[D] 824615| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9930/1:
  | 0000: E0                                                |.               |
[D] 826627| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/1:
  | 0000: E0                                                |.               |
[D] 828639| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9930/1:
  | 0000: E0                                                |.               |
[D] 830651| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/1:
  | 0000: E0                                                |.               |
[D] 832663| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9930/1:
  | 0000: E0                                                |.               |
[V] 833936| RTUutils.cpp         [ 262] receive: S/1756us without data after 11
[V] 833936| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/11:
  | 0000: 69 10 00 32 00 01 02 00  01 AC 40                 |i..2......@     |
[D] 833947| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB988C/9:
  | 0000: 69 10 00 32 00 01 02 00  01                       |i..2.....       |
[D] 833968| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 833968| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 834003| RTUutils.cpp         [ 262] receive: S/1758us without data after 6
[V] 834003| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/6:
  | 0000: 69 10 00 01 DD BD                                 |i.....          |
[D] 834013| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9930/4:
  | 0000: 69 10 00 01                                       |i...            |
[D] 834034| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 834034| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 834133| RTUutils.cpp         [ 262] receive: S/1755us without data after 11
[V] 834133| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/11:
  | 0000: 6E 10 00 32 00 01 02 00  02 CA 71                 |n..2......q     |
[D] 834144| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB988C/9:
  | 0000: 6E 10 00 32 00 01 02 00  02                       |n..2.....       |
[D] 834164| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 834164| ModbusServer.cpp     [  30] getWorker: Worker found for 6E/10
[D] 834175| ModbusServerRTU.cpp  [ 194] serve: Callback found.
[D] 834185| ModbusServerRTU.cpp  [ 201] serve: Callback called.
modbus write slaveId:110 reg:51 data:2
[V] Callback response: @3FFB9930/4:
  | 0000: 6E 10 00 01                                       |n...            |
[D] Sent packet: @3FFB9874/4:
  | 0000: 6E 10 00 01                                       |n...            |
[D] 834207| ModbusServerRTU.cpp  [ 238] serve: Response sent.
[V] 834350| RTUutils.cpp         [ 262] receive: S/1763us without data after 11
[V] 834350| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/11:
  | 0000: 6F 10 00 32 00 01 02 00  01 87 E0                 |o..2.......     |
[D] 834361| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB98AC/9:
  | 0000: 6F 10 00 32 00 01 02 00  01                       |o..2.....       |
[D] 834381| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 834381| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 834416| RTUutils.cpp         [ 262] receive: S/1759us without data after 6
[V] 834416| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/6:
  | 0000: 6F 10 00 01 DD 35                                 |o....5          |
[D] 834426| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB98CC/4:
  | 0000: 6F 10 00 01                                       |o...            |
[D] 834447| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 834447| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 834496| RTUutils.cpp         [ 262] receive: S/1758us without data after 11
[V] 834496| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/11:
  | 0000: 6B 10 00 32 00 01 02 00  02 F5 21                 |k..2......!     |
[D] 834507| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB988C/9:
  | 0000: 6B 10 00 32 00 01 02 00  02                       |k..2.....       |
[D] 834527| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 834527| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 834562| RTUutils.cpp         [ 262] receive: S/1756us without data after 6
[V] 834562| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/6:
  | 0000: 6B 10 00 01 DC 05                                 |k.....          |
[D] 834572| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9874/4:
  | 0000: 6B 10 00 01                                       |k...            |
[D] 834593| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 834593| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 834638| RTUutils.cpp         [ 262] receive: S/1766us without data after 11
[V] 834638| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/11:
  | 0000: 6C 10 00 32 00 01 02 00  02 D3 11                 |l..2.......     |
[D] 834648| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB98A4/9:
  | 0000: 6C 10 00 32 00 01 02 00  02                       |l..2.....       |
[D] 834669| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 834669| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 834704| RTUutils.cpp         [ 262] receive: S/1756us without data after 6
[V] 834704| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/6:
  | 0000: 6C 10 00 01 DD 71                                 |l....q          |
[D] 834714| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/4:
  | 0000: 6C 10 00 01                                       |l...            |
[D] 834735| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 834735| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 834780| RTUutils.cpp         [ 262] receive: S/1764us without data after 11
[V] 834780| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/11:
  | 0000: 70 10 00 32 00 01 02 00  01 0B D0                 |p..2.......     |
[D] 834790| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB98A0/9:
  | 0000: 70 10 00 32 00 01 02 00  01                       |p..2.....       |
[D] 834811| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 834811| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 834846| RTUutils.cpp         [ 262] receive: S/1756us without data after 6
[V] 834846| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/6:
  | 0000: 70 10 00 01 DA E1                                 |p.....          |
[D] 834856| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/4:
  | 0000: 70 10 00 01                                       |p...            |
[D] 834877| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 834877| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 834922| RTUutils.cpp         [ 262] receive: S/1756us without data after 11
[V] 834922| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/11:
  | 0000: 71 10 00 32 00 01 02 00  02 46 41                 |q..2.....FA     |
[D] 834933| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB98A0/9:
  | 0000: 71 10 00 32 00 01 02 00  02                       |q..2.....       |
[D] 834953| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 834953| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 834988| RTUutils.cpp         [ 262] receive: S/1756us without data after 6
[V] 834988| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/6:
  | 0000: 71 10 00 01 DB 1D                                 |q.....          |
[D] 834998| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/4:
  | 0000: 71 10 00 01                                       |q...            |
[D] 835019| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 835019| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 835064| RTUutils.cpp         [ 262] receive: S/1759us without data after 11
[V] 835064| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/11:
  | 0000: 72 10 00 32 00 01 02 00  02 52 B1                 |r..2.....R.     |
[D] 835074| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB98A0/9:
  | 0000: 72 10 00 32 00 01 02 00  02                       |r..2.....       |
[D] 835095| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 835095| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 835129| RTUutils.cpp         [ 262] receive: S/1757us without data after 6
[V] 835129| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/6:
  | 0000: 72 10 00 01 DB 59                                 |r....Y          |
[D] 835140| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9758/4:
  | 0000: 72 10 00 01                                       |r...            |
[D] 835160| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 835160| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 835206| RTUutils.cpp         [ 262] receive: S/1758us without data after 11
[V] 835207| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/11:
  | 0000: 65 10 00 32 00 01 02 00  01 F9 40                 |e..2......@     |
[D] 835218| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB98A0/9:
  | 0000: 65 10 00 32 00 01 02 00  01                       |e..2.....       |
[D] 835239| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 835239| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 835272| RTUutils.cpp         [ 262] receive: S/1754us without data after 6
[V] 835272| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/6:
  | 0000: 65 10 00 01 DE ED                                 |e.....          |
[D] 835282| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9758/4:
  | 0000: 65 10 00 01                                       |e...            |
[D] 835303| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 835303| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 835348| RTUutils.cpp         [ 262] receive: S/1755us without data after 11
[V] 835348| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/11:
  | 0000: 66 10 00 32 00 01 02 00  02 AD B1                 |f..2.......     |
[D] 835359| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB98A0/9:
  | 0000: 66 10 00 32 00 01 02 00  02                       |f..2.....       |
[D] 835379| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 835379| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 835415| RTUutils.cpp         [ 262] receive: S/1758us without data after 6
[V] 835415| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/6:
  | 0000: 66 10 00 01 DE A9                                 |f.....          |
[D] 835425| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9758/4:
  | 0000: 66 10 00 01                                       |f...            |
[D] 835446| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 835446| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 835491| RTUutils.cpp         [ 262] receive: S/1764us without data after 11
[V] 835491| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/11:
  | 0000: 67 10 00 32 00 01 02 00  02 A0 21                 |g..2......!     |
[D] 835501| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB98A0/9:
  | 0000: 67 10 00 32 00 01 02 00  02                       |g..2.....       |
[D] 835522| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 835522| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 835557| RTUutils.cpp         [ 262] receive: S/1757us without data after 6
[V] 835557| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/6:
  | 0000: 67 10 00 01 DF 55                                 |g....U          |
[D] 835567| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9758/4:
  | 0000: 67 10 00 01                                       |g...            |
[D] 835588| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 835588| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 835633| RTUutils.cpp         [ 262] receive: S/1753us without data after 11
[V] 835633| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/11:
  | 0000: 68 10 00 32 00 01 02 00  02 E1 D1                 |h..2.......     |
[D] 835644| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB98A0/9:
  | 0000: 68 10 00 32 00 01 02 00  02                       |h..2.....       |
[D] 835664| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 835664| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 835699| RTUutils.cpp         [ 262] receive: S/1755us without data after 6
[V] 835699| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/6:
  | 0000: 68 10 00 01 DC 41                                 |h....A          |
[D] 835709| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9758/4:
  | 0000: 68 10 00 01                                       |h...            |
[D] 835730| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 835730| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 835775| RTUutils.cpp         [ 262] receive: S/1758us without data after 11
[V] 835775| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/11:
  | 0000: 6D 10 00 32 00 01 02 00  02 DE 81                 |m..2.......     |
[D] 835785| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB98A0/9:
  | 0000: 6D 10 00 32 00 01 02 00  02                       |m..2.....       |
[D] 835806| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 835806| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 835841| RTUutils.cpp         [ 262] receive: S/1758us without data after 6
[V] 835841| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/6:
  | 0000: 6D 10 00 01 DC 8D                                 |m.....          |
[D] 835851| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9758/4:
  | 0000: 6D 10 00 01                                       |m...            |
[D] 835872| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 835872| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 835917| RTUutils.cpp         [ 262] receive: S/1752us without data after 11
[V] 835917| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/11:
  | 0000: 6A 10 00 32 00 01 02 00  02 F8 B1                 |j..2.......     |
[D] 835928| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB98A0/9:
  | 0000: 6A 10 00 32 00 01 02 00  02                       |j..2.....       |
[D] 835948| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 835949| ModbusServer.cpp     [  44] getWorker: No matching worker found
[V] 835982| RTUutils.cpp         [ 262] receive: S/1773us without data after 6
[V] 835982| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3EB8/6:
  | 0000: 6A 10 00 01 DD F9                                 |j.....          |
[D] 835993| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9758/4:
  | 0000: 6A 10 00 01                                       |j...            |
[D] 836013| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 836013| ModbusServer.cpp     [  44] getWorker: No matching worker found
[D] 838025| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9874/1:
  | 0000: E0                                                |.               |
[D] 840037| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/1:
  | 0000: E0                                                |.               |
[D] 842049| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9910/1:
  | 0000: E0                                                |.               |

These other logs are generated with everything at 19.2K baud.
The hardware configuration is always the same (14 servers, 1 client) as described in a previous message.

client:

[D] 6164| ModbusClientRTU.cpp  [ 112] setTimeout: Timeout set to 2000
[V] 6164| RTUutils.cpp         [ 112] calculateInterval: Calc interval(19200)=1822
[D] 6175| ModbusClientRTU.cpp  [  86] doBegin: Client task 1073554296 started. Interval=1822
ReadySending the configuration: NewProdF2
[V] 15004| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15004| ModbusClientRTU.cpp  [ 156] addRequestM: request for 69/10
[D] 15015| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15015| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[D] 15016| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[V] 15025| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] Sent packet: @3FFD037C/9:
  | 0000: 69 10 00 32 00 01 02 00  01                       |i..2.....       |
[D] 15036| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6E/10
[D] 15046| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[D] 15056| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15066| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15066| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15077| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6F/10
[D] 15077| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15087| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15087| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15098| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6B/10
[D] 15098| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15108| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15108| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15119| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6C/10
[D] 15119| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15129| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15129| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15140| ModbusClientRTU.cpp  [ 156] addRequestM: request for 70/10
[D] 15140| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15150| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15150| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15161| ModbusClientRTU.cpp  [ 156] addRequestM: request for 71/10
[D] 15161| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15171| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15171| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15182| ModbusClientRTU.cpp  [ 156] addRequestM: request for 72/10
[D] 15182| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15192| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15192| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15203| ModbusClientRTU.cpp  [ 156] addRequestM: request for 65/10
[D] 15213| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15213| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15224| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15224| ModbusClientRTU.cpp  [ 156] addRequestM: request for 66/10
[D] 15234| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15234| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15245| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15245| ModbusClientRTU.cpp  [ 156] addRequestM: request for 67/10
[D] 15255| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15255| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15266| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15266| ModbusClientRTU.cpp  [ 156] addRequestM: request for 68/10
[D] 15276| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15276| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15287| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15287| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6D/10
[D] 15297| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15297| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15308| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15308| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6A/10
[D] 15318| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15318| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[D] 17057| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCF01C/1:
  | 0000: E0                                                |.               |
[D] 17068| ModbusClientRTU.cpp  [ 277] handleConnection: Error response (1 bytes) received.
[V] Data: @3FFCF01C/1:
  | 0000: E0                                                |.               |
[D] 17079| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCF01C/3:
  | 0000: 69 90 E0                                          |i..             |
[D] 17100| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFCF100/9:
  | 0000: 6E 10 00 32 00 01 02 00  02                       |n..2.....       |
[D] 17116| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[D] 19127| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCF2F4/1:
  | 0000: E0                                                |.               |
[D] 19138| ModbusClientRTU.cpp  [ 277] handleConnection: Error response (1 bytes) received.
[V] Data: @3FFCF2F4/1:
  | 0000: E0                                                |.               |
[D] 19149| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCF2F4/3:
  | 0000: 6E 90 E0                                          |n..             |
[D] 19170| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFCF000/9:
  | 0000: 6F 10 00 32 00 01 02 00  01                       |o..2.....       |
[D] 19186| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[D] 21199| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCF2F4/1:
  | 0000: E0                                                |.               |
[D] 21210| ModbusClientRTU.cpp  [ 277] handleConnection: Error response (1 bytes) received.
[V] Data: @3FFCF2F4/1:
  | 0000: E0                                                |.               |
[D] 21221| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCF2F4/3:
  | 0000: 6F 90 E0                                          |o..             |
[D] 21242| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFCF100/9:
  | 0000: 6B 10 00 32 00 01 02 00  02                       |k..2.....       |
[D] 21258| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[D] 23270| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCF2F4/1:
  | 0000: E0                                                |.               |
[D] 23281| ModbusClientRTU.cpp  [ 277] handleConnection: Error response (1 bytes) received.
[V] Data: @3FFCF2F4/1:
  | 0000: E0                                                |.               |
[D] 23292| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCF2F4/3:
  | 0000: 6B 90 E0                                          |k..             |
[D] 23313| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFD24DC/9:
  | 0000: 6C 10 00 32 00 01 02 00  02                       |l..2.....       |
[D] 23329| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[D] 25341| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCF2F4/1:
  | 0000: E0                                                |.               |
[D] 25352| ModbusClientRTU.cpp  [ 277] handleConnection: Error response (1 bytes) received.
[V] Data: @3FFCF2F4/1:
  | 0000: E0                                                |.               |
[D] 25363| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCF2F4/3:
  | 0000: 6C 90 E0                                          |l..             |
[D] 25384| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFCF0C8/9:
  | 0000: 70 10 00 32 00 01 02 00  01                       |p..2.....       |
[D] 25400| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[D] 27411| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCF2F4/1:
  | 0000: E0                                                |.               |
[D] 27422| ModbusClientRTU.cpp  [ 277] handleConnection: Error response (1 bytes) received.
[V] Data: @3FFCF2F4/1:
  | 0000: E0                                                |.               |
[D] 27433| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCF2F4/3:
  | 0000: 70 90 E0                                          |p..             |
[D] 27454| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFD037C/9:
  | 0000: 71 10 00 32 00 01 02 00  02                       |q..2.....       |
[D] 27470| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[D] 29482| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCF2F4/1:
  | 0000: E0                                                |.               |
[D] 29493| ModbusClientRTU.cpp  [ 277] handleConnection: Error response (1 bytes) received.
[V] Data: @3FFCF2F4/1:
  | 0000: E0                                                |.               |
[D] 29504| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCF2F4/3:
  | 0000: 71 90 E0                                          |q..             |
[D] 29525| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFD24DC/9:
  | 0000: 72 10 00 32 00 01 02 00  02                       |r..2.....       |
[D] 29541| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.

One of the servers:

[D] 1099222| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/1:
  | 0000: E0                                                |.               |
[D] 1101234| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB980C/1:
  | 0000: E0                                                |.               |
[D] 1103246| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/1:
  | 0000: E0                                                |.               |
[D] 1105258| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB980C/1:
  | 0000: E0                                                |.               |
[V] 1106536| RTUutils.cpp         [ 262] receive: S/1759us without data after 23
[V] 1106536| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD43BC/23:
  | 0000: E0 00 E0 E0 00 00 00 00  00 00 00 E0 00 00 00 00  |................|
  | 0010: E0 00 00 E0 E0 00 E0                              |.......         |
[D] 1106557| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/1:
  | 0000: E2                                                |.               |
[1B][1;33m[E] 1106578| ModbusServerRTU.cpp  [ 252] serve: RTU receive: E2 - CRC check error
[1B][0m[D] 1108580| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB980C/1:
  | 0000: E0                                                |.               |
[V] 1108621| RTUutils.cpp         [ 262] receive: S/1757us without data after 23
[V] 1108621| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD43BC/23:
  | 0000: 00 E0 E0 00 00 00 00 00  00 00 E0 00 00 00 00 00  |................|
  | 0010: 00 00 E0 00 E0 00 E0                              |.......         |
[D] 1108642| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/1:
  | 0000: E2                                                |.               |
[1B][1;33m[E] 1108663| ModbusServerRTU.cpp  [ 252] serve: RTU receive: E2 - CRC check error
[1B][0m[D] 1110664| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB980C/1:
  | 0000: E0                                                |.               |
[V] 1110690| RTUutils.cpp         [ 262] receive: S/1756us without data after 20
[V] 1110691| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD43BC/20:
  | 0000: E0 E0 E0 00 00 00 00 00  00 00 E0 00 00 00 00 E0  |................|
  | 0010: 00 E0 00 00                                       |....            |
[D] 1110711| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/1:
  | 0000: E2                                                |.               |
[1B][1;33m[E] 1110732| ModbusServerRTU.cpp  [ 252] serve: RTU receive: E2 - CRC check error
[1B][0mClient connected from: 10.0.50.92:53153
[D] 1112734| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB980C/1:
  | 0000: E0                                                |.               |
[V] 1112763| RTUutils.cpp         [ 262] receive: S/1754us without data after 24
[V] 1112763| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD43BC/24:
  | 0000: E0 E0 E0 E0 00 00 00 00  00 00 00 E0 00 00 00 00  |................|
  | 0010: 00 00 E0 E0 E0 E0 00 00                           |........        |
[D] 1112784| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/1:
  | 0000: E2                                                |.               |
[1B][1;33m[E] 1112805| ModbusServerRTU.cpp  [ 252] serve: RTU receive: E2 - CRC check error
[1B][0m[D] 1114806| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB980C/1:
  | 0000: E0                                                |.               |
[V] 1114834| RTUutils.cpp         [ 262] receive: S/1757us without data after 23
[V] 1114834| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD43BC/23:
  | 0000: 00 E0 E0 00 00 00 00 00  00 00 E0 00 00 00 00 00  |................|
  | 0010: 00 E0 00 E0 E0 00 00                              |.......         |
[D] 1114855| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/1:
  | 0000: E2                                                |.               |
[1B][1;33m[E] 1114876| ModbusServerRTU.cpp  [ 252] serve: RTU receive: E2 - CRC check error
[1B][0m[D] 1116877| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB980C/1:
  | 0000: E0                                                |.               |
[V] 1116905| RTUutils.cpp         [ 262] receive: S/1759us without data after 21
[V] 1116905| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD43BC/21:
  | 0000: 00 E0 00 00 00 00 00 00  00 E0 00 00 00 00 E0 00  |................|
  | 0010: E0 E0 00 00 E0                                    |.....           |
[D] 1116926| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/1:
  | 0000: E2                                                |.               |
[1B][1;33m[E] 1116946| ModbusServerRTU.cpp  [ 252] serve: RTU receive: E2 - CRC check error
[1B][0m[D] 1118948| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB980C/1:
  | 0000: E0                                                |.               |
[V] 1118975| RTUutils.cpp         [ 262] receive: S/1753us without data after 23
[V] 1118975| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD43BC/23:
  | 0000: E0 00 E0 00 00 00 00 00  00 00 E0 00 00 00 00 00  |................|
  | 0010: 00 00 00 E0 E0 00 E0                              |.......         |
[D] 1118996| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/1:
  | 0000: E2                                                |.               |
[1B][1;33m[E] 1119017| ModbusServerRTU.cpp  [ 252] serve: RTU receive: E2 - CRC check error
[1B][0m[D] 1121018| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB980C/1:
  | 0000: E0                                                |.               |
[V] 1121046| RTUutils.cpp         [ 262] receive: S/1759us without data after 24
[V] 1121046| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD43BC/24:
  | 0000: 00 00 E0 00 00 00 00 00  00 00 E0 00 00 00 00 00  |................|
  | 0010: 00 00 00 E0 E0 E0 00 E0                           |........        |
[D] 1121067| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9798/1:
  | 0000: E2                                                |.               |
[1B][1;33m[E] 1121088| ModbusServerRTU.cpp  [ 252] serve: RTU receive: E2 - CRC check error
[1B][0m

@Miq1 Could you please confirm this is enough for you?

The server log: yes! The client log is not a verbose one, for whatever reason...

That's strange, the logging.h is shared and I did not restore back the "6"
Do you need it?

I reflashed the client and here we are again with the 19.2K logs

client:

[V] 15004| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15004| ModbusClientRTU.cpp  [ 156] addRequestM: request for 69/10
[D] 15015| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15015| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[D] 15016| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[V] 15025| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] Sent packet: @3FFCF158/9:
  | 0000: 69 10 00 32 00 01 02 00  01                       |i..2.....       |
[D] 15036| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6E/10
[D] 15046| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[D] 15046| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15066| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15067| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15077| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6F/10
[D] 15077| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15087| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15088| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15098| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6B/10
[D] 15098| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15108| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15109| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15119| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6C/10
[D] 15119| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15129| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15130| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15140| ModbusClientRTU.cpp  [ 156] addRequestM: request for 70/10
[D] 15140| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15150| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15151| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15161| ModbusClientRTU.cpp  [ 156] addRequestM: request for 71/10
[D] 15161| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15171| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15172| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15182| ModbusClientRTU.cpp  [ 156] addRequestM: request for 72/10
[D] 15182| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15192| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15193| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15203| ModbusClientRTU.cpp  [ 156] addRequestM: request for 65/10
[D] 15213| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15213| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15214| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15224| ModbusClientRTU.cpp  [ 156] addRequestM: request for 66/10
[D] 15234| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15234| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15245| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15245| ModbusClientRTU.cpp  [ 156] addRequestM: request for 67/10
[D] 15255| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15255| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15266| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15266| ModbusClientRTU.cpp  [ 156] addRequestM: request for 68/10
[D] 15276| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15277| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15287| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15287| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6D/10
[D] 15297| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15298| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[V] 15308| ModbusMessage.cpp    [ 519] checkData: Check data #5
[D] 15308| ModbusClientRTU.cpp  [ 156] addRequestM: request for 6A/10
[D] 15318| ModbusClientRTU.cpp  [ 239] addToQueue: RC=01
[D] 15319| ModbusClientRTU.cpp  [ 167] addRequestM: RC=00
[D] 17057| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCF104/1:
  | 0000: E0                                                |.               |
[D] 17068| ModbusClientRTU.cpp  [ 277] handleConnection: Error response (1 bytes) received.
[V] Data: @3FFCF104/1:
  | 0000: E0                                                |.               |
[D] 17079| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCF104/3:
  | 0000: 69 90 E0                                          |i..             |
[D] 17100| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFD25BC/9:
  | 0000: 6E 10 00 32 00 01 02 00  02                       |n..2.....       |
[D] 17116| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[V] 17186| RTUutils.cpp         [ 262] receive: C/1835us without data after 6
[V] 17186| RTUutils.cpp         [ 272] receive: C/[V] Raw buffer received: @3FFD27C8/6:
  | 0000: 6E 10 00 01 DC C9                                 |n.....          |
[D] 17197| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCF104/4:
  | 0000: 6E 10 00 01                                       |n...            |
[D] 17218| ModbusClientRTU.cpp  [ 277] handleConnection: Data response (4 bytes) received.
[V] Data: @3FFCF104/4:
  | 0000: 6E 10 00 01                                       |n...            |
[D] 17228| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCF104/4:
  | 0000: 6E 10 00 01                                       |n...            |
[D] 17249| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFD2720/9:
  | 0000: 6F 10 00 32 00 01 02 00  01                       |o..2.....       |
[D] 17266| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[D] 19276| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCEA58/1:
  | 0000: E0                                                |.               |
[D] 19287| ModbusClientRTU.cpp  [ 277] handleConnection: Error response (1 bytes) received.
[V] Data: @3FFCEA58/1:
  | 0000: E0                                                |.               |
[D] 19298| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCEA58/3:
  | 0000: 6F 90 E0                                          |o..             |
[D] 19319| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFCF2EC/9:
  | 0000: 6B 10 00 32 00 01 02 00  02                       |k..2.....       |
[D] 19335| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[D] 21346| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCEA58/1:
  | 0000: E0                                                |.               |
[D] 21357| ModbusClientRTU.cpp  [ 277] handleConnection: Error response (1 bytes) received.
[V] Data: @3FFCEA58/1:
  | 0000: E0                                                |.               |
[D] 21368| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCEA58/3:
  | 0000: 6B 90 E0                                          |k..             |
[D] 21389| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFD2720/9:
  | 0000: 6C 10 00 32 00 01 02 00  02                       |l..2.....       |
[D] 21405| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[D] 23417| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCEA58/1:
  | 0000: E0                                                |.               |
[D] 23428| ModbusClientRTU.cpp  [ 277] handleConnection: Error response (1 bytes) received.
[V] Data: @3FFCEA58/1:
  | 0000: E0                                                |.               |
[D] 23439| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCEA58/3:
  | 0000: 6C 90 E0                                          |l..             |
[D] 23460| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFD2720/9:
  | 0000: 70 10 00 32 00 01 02 00  01                       |p..2.....       |
[D] 23476| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.
[D] 25488| RTUutils.cpp         [ 437] receive: C/[D] Received packet: @3FFCEA58/1:
  | 0000: E0                                                |.               |
[D] 25499| ModbusClientRTU.cpp  [ 277] handleConnection: Error response (1 bytes) received.
[V] Data: @3FFCEA58/1:
  | 0000: E0                                                |.               |
[D] 25510| ModbusClientRTU.cpp  [ 298] handleConnection: Response generated.
[V] Response packet: @3FFCEA58/3:
  | 0000: 70 90 E0                                          |p..             |
[D] 25531| ModbusClientRTU.cpp  [ 257] handleConnection: Pulled request from queue
[D] Sent packet: @3FFD25BC/9:
  | 0000: 71 10 00 32 00 01 02 00  02                       |q..2.....       |
[D] 25547| ModbusClientRTU.cpp  [ 262] handleConnection: Request sent.

server:

[D] 10163| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9934/1:
  | 0000: E0                                                |.               |
[D] 12175| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFD39C4/1:
  | 0000: E0                                                |.               |
[V] 12188| RTUutils.cpp         [ 262] receive: S/1835us without data after 11
[V] 12188| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD4870/11:
  | 0000: 69 10 00 32 00 01 02 00  01 AC 40                 |i..2......@     |
[D] 12209| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFD3D80/9:
  | 0000: 69 10 00 32 00 01 02 00  01                       |i..2.....       |
[D] 12219| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 12219| ModbusServer.cpp     [  44] getWorker: No matching worker found
client served
[D] 14232| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFB9934/1:
  | 0000: E0                                                |.               |
[V] 14272| RTUutils.cpp         [ 262] receive: S/2076us without data after 11
[V] 14272| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3FD4/11:
  | 0000: 6E 10 00 32 00 01 02 00  02 CA 71                 |n..2......q     |
[D] 14283| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFD3770/9:
  | 0000: 6E 10 00 32 00 01 02 00  02                       |n..2.....       |
[D] 14303| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 14304| ModbusServer.cpp     [  30] getWorker: Worker found for 6E/10
[D] 14314| ModbusServerRTU.cpp  [ 194] serve: Callback found.
[D] 14314| ModbusServerRTU.cpp  [ 201] serve: Callback called.
modbus write slaveId:110 reg:51 data:2
[V] Callback response: @3FFB9934/4:
  | 0000: 6E 10 00 01                                       |n...            |
[D] Sent packet: @3FFD3A94/4:
  | 0000: 6E 10 00 01                                       |n...            |
[D] 14349| ModbusServerRTU.cpp  [ 238] serve: Response sent.
[V] 14421| RTUutils.cpp         [ 262] receive: S/1829us without data after 11
[V] 14422| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3FD4/11:
  | 0000: 6F 10 00 32 00 01 02 00  01 87 E0                 |o..2.......     |
[D] 14432| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFD3D80/9:
  | 0000: 6F 10 00 32 00 01 02 00  01                       |o..2.....       |
[D] 14453| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 14453| ModbusServer.cpp     [  44] getWorker: No matching worker found
[D] 16465| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFD3770/1:
  | 0000: E0                                                |.               |
[V] 16491| RTUutils.cpp         [ 262] receive: S/1831us without data after 11
[V] 16491| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3FD4/11:
  | 0000: 6B 10 00 32 00 01 02 00  02 F5 21                 |k..2......!     |
[D] 16501| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFD3A94/9:
  | 0000: 6B 10 00 32 00 01 02 00  02                       |k..2.....       |
[D] 16522| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 16522| ModbusServer.cpp     [  44] getWorker: No matching worker found
[D] 18534| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFD3AB4/1:
  | 0000: E0                                                |.               |
[V] 18561| RTUutils.cpp         [ 262] receive: S/1829us without data after 11
[V] 18561| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3FD4/11:
  | 0000: 6C 10 00 32 00 01 02 00  02 D3 11                 |l..2.......     |
[D] 18572| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFD3A94/9:
  | 0000: 6C 10 00 32 00 01 02 00  02                       |l..2.....       |
[D] 18592| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 18592| ModbusServer.cpp     [  44] getWorker: No matching worker found
[D] 20604| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFD3AB4/1:
  | 0000: E0                                                |.               |
[V] 20632| RTUutils.cpp         [ 262] receive: S/1829us without data after 11
[V] 20632| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3FD4/11:
  | 0000: 70 10 00 32 00 01 02 00  01 0B D0                 |p..2.......     |
[D] 20643| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFD3A94/9:
  | 0000: 70 10 00 32 00 01 02 00  01                       |p..2.....       |
[D] 20663| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 20663| ModbusServer.cpp     [  44] getWorker: No matching worker found
[D] 22675| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFD3AB4/1:
  | 0000: E0                                                |.               |
[V] 22703| RTUutils.cpp         [ 262] receive: S/1825us without data after 11
[V] 22703| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3FD4/11:
  | 0000: 71 10 00 32 00 01 02 00  02 46 41                 |q..2.....FA     |
[D] 22714| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFD3A94/9:
  | 0000: 71 10 00 32 00 01 02 00  02                       |q..2.....       |
[D] 22734| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 22734| ModbusServer.cpp     [  44] getWorker: No matching worker found
[D] 24746| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFD3AB4/1:
  | 0000: E0                                                |.               |
[V] 24774| RTUutils.cpp         [ 262] receive: S/1829us without data after 11
[V] 24774| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3FD4/11:
  | 0000: 72 10 00 32 00 01 02 00  02 52 B1                 |r..2.....R.     |
[D] 24784| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFD3A94/9:
  | 0000: 72 10 00 32 00 01 02 00  02                       |r..2.....       |
[D] 24805| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 24805| ModbusServer.cpp     [  44] getWorker: No matching worker found
[D] 26817| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFD3AB4/1:
  | 0000: E0                                                |.               |
[V] 26844| RTUutils.cpp         [ 262] receive: S/1829us without data after 11
[V] 26844| RTUutils.cpp         [ 272] receive: S/[V] Raw buffer received: @3FFD3FD4/11:
  | 0000: 65 10 00 32 00 01 02 00  01 F9 40                 |e..2......@     |
[D] 26854| RTUutils.cpp         [ 437] receive: S/[D] Received packet: @3FFD3A94/9:
  | 0000: 65 10 00 32 00 01 02 00  01                       |e..2.....       |
[D] 26875| ModbusServerRTU.cpp  [ 173] serve: Request received.
[D] 26875| ModbusServer.cpp     [  44] getWorker: No matching worker found

Looks pretty okay to me with one exception - see down below.

The client is firing requests to a couple of servers, but with the exception of server 0x6E none is responding at all. So obviously those requests will result in a 0xE0 TIMEOUT error response.

The server log shows all the requests the client is sending, but of course only the requests addressed to its own server ID are processed and the response is sent.

The odd thing are the 0xE0 bytes on the bus the server log is showing. Since there is no "Raw buffer" log line before these, the code must have been generated internally for irrelevant requests. No harm done in fact, but I will see if I can omit these from the logic.

Remains the question why the other servers are playing dead?

I eventually will replace the internal 0xE0 error code with another to signal a "no data seen in the meantime" state to avoid confusion in the logs. But as I wrote: purely internal with no consequences at all.

I'm confused, I add a couple of considerations:

  • I also could see random CRC errors (maybe they are not in these logs)
  • I could no see errors at all until 6-7 devices

I hope this can help you. Please feel free to close the issue and thanks for the hard work.

Sorry I could not resolve your problem 😟

As I wrote the logs are consistent and are showing no unexpected behaviour. There was no CRC error in these logs, only TIMEOUTs on the client log that are in line with the server's log due to no other server was responding.

No worries, thank you anyway!

Just raised this issue: #337

Id did not read this issue on all detail but the more devices you have the more chance the same happens as what I am experiencing, you could try adding the delay...

Id did not read this issue on all detail but the more devices you have the more chance the same happens as what I am experiencing, you could try adding the delay...

Delay is not an option if you want to stay inside the standard, otherwise you could have problem attaching 3rd party devices to your bus.
The modbus protocol prescribes strict distances among packets (3.5 ... 4.5 characters).
This is needed because modbus packets do not contain a length indicator as it happens in many other protocols. Some function codes do not allow to "predict" the length of the packet. In other words the servers must recognize packets because they are well "spaced".

I currently drive my own client and servers (I have 14 servers and 1 client which will grow) and there are no issues at all at 115K. I will search the upper speed limit soon, but the speed depends on the cpu speed used to sample/poll the line, the transceiver quality and the cable.

@Miq1 For your info (it is just a suggestion, not a criticism), I noticed that the code using eModBus requires more current than my (simpler) current implementation. I noticed it because I measure the temperature on the linear regulator.
Next time you put your hands on the code, you may want to consider this aspect as well.
HTH

The bug @I-Connect found will affect the next request a client is sending after a successfully received response. This request may be sent without maintaining the required quiet time, if the client's onData handler will take less than that to finish. We are talking about less than two milliseconds here (for baud rates 19k2 and above), so it will not happen all the time.

@Miq1 For your info (it is just a suggestion, not a criticism), I noticed that the code using eModBus requires more current than my (simpler) current implementation. I noticed it because I measure the temperature on the linear regulator. Next time you put your hands on the code, you may want to consider this aspect as well. HTH

I see few options for that, if not sacrificing responsiveness for less power consumption. The Arduino way would be to attach an interrupt to the RX line and sleep until a byte will arrive, but the ESP32 does that internally in the core already.

The Arduino way would be to attach an interrupt to the RX line and sleep until a byte will arrive, but the ESP32 does that internally in the core already.

In theory yes, but don't do it.
Unfortunately there is a known issue on the ESP32 HardwareSerial wrapper when using the default pins. In this case the event is not raised. But if you change the pins, it works.

On my side, I started a low-priority task polling the line and calibrating the timeouts so that if you try to read beyond the Modbus "gap", you get a timeout and know that the packet is finished. I also added a few safe delays in terms of hundreds of microseconds (proportional to the baud rate of course) when you know that nothing useful can be on the line.
Doing that I never got a single error on the line on both 19.2K and 115K.

Thanks, I will consider that. 👍🏻