Wb-mqtt-serial + Modbus TCP. Похоже, не обрабатывает разрыв соединения по инициативе сервера

Начало такое же, как и в теме Modbus_client и Modbus TCP :
Я на ESP-01 делаю адаптер для своего сигнализатора загазованности (СЗ) в котельной. Я хотел бы из него (адаптера) по Modbus TCP (чтобы не нагромождать адаптер ещё одним модулем RS-485 (один уже используется для чтения статуса с СЗ), тянуть провода и т.п.) считывать статус клапана и пищалки как discrete input.
Прототип набросал на основе примера - и он успешно работает с modbus_client на десктопе:

modbus_client --debug -mtcp 192.168.0.145 -t1 -r123
$ modbus_client --debug -mtcp 192.168.0.145 -t1 -r123 
Connecting to 192.168.0.145:502
[00][01][00][00][00][06][01][01][00][7B][00][01]
Waiting for a confirmation...
<00><01><00><00><00><04><01><01><01><40>
SUCCESS: read 1 of elements:
        Data: 0x00 

$ modbus_client --debug -mtcp 192.168.0.145 -t5 -r123 1
Data to write: 0x1
Connecting to 192.168.0.145:502
[00][01][00][00][00][06][01][05][00][7B][FF][00]
Waiting for a confirmation...
<00><01><00><00><00><06><01><05><00><7B><FF><00>
SUCCESS: written 1 elements!

$ modbus_client --debug -mtcp 192.168.0.145 -t1 -r123 
Connecting to 192.168.0.145:502
[00][01][00][00][00][06][01][01][00][7B][00][01]
Waiting for a confirmation...
<00><01><00><00><00><04><01><01><01><03>
SUCCESS: read 1 of elements:
        Data: 0x01 

$ modbus_client --debug -mtcp 192.168.0.145 -t5 -r123 0
Data to write: 0x0
Connecting to 192.168.0.145:502
[00][01][00][00][00][06][01][05][00][7B][00][00]
Waiting for a confirmation...
<00><01><00><00><00><06><01><05><00><7B><00><00>
SUCCESS: written 1 elements!

$ modbus_client --debug -mtcp 192.168.0.145 -t1 -r123 
Connecting to 192.168.0.145:502
[00][01][00][00][00][06][01][01][00][7B][00][01]
Waiting for a confirmation...
<00><01><00><00><00><04><01><01><01><10>
SUCCESS: read 1 of elements:
        Data: 0x00 

светодиод включается-выключается - всё ок.

Завёл

шаблон устройства

шаблон устройства:

{
    "device_type": "Gas alarm (SZ-3) sensor",
    "device": {
        "name":  "Gas alaram (SZ-3) sensor",
        "id": "sz-3-esp-01",
        "frame_timeout_ms": 100,
        "poll_interval": 1000,
        "channels": [
            {
                "name": "Alarm",
                "reg_type": "discrete",
                "address": 123,
                "type": "switch",
                "readonly": true
            }
        ]
    }
}

Добавил в конфиг, выставил период чтения (для надёжности теста) 10 с.
Первое чтение - ок. Второе же чтение - отваливается.
image

Я для теста запускал в цикле множественное чтение и запись by modbus_client - работает стабильно:

$ b=0; for i in $(seq 1000); do modbus_client --debug -mtcp 192.168.0.145 -t5 -r123 $b; let b=1-b; sleep 0.1;done

Что дало основание думать, что проблема - при обращении именно из WB.
В общем, я выделил

конфиг только для этого устройства

конфиг только для этого устройства:

$ cat ./wb-mqtt-serial.conf
{
  "debug" : false,
  "ports" : 
  [
    {
      "address" : "192.168.0.145",
      "connection_max_fail_cycles" : 0,
      "connection_timeout_ms" : 0,
      "devices" : 
      [
        {
          "device_type" : "Gas alarm (SZ-3) sensor",
          "enabled" : true,
          "read_rate_limit_ms" : 10000,
          "slave_id" : "21"
        }
      ],
      "enabled" : true,
      "guard_interval_us" : 500000,
      "port" : 502,
      "port_type" : "modbus tcp",
      "read_rate_limit_ms" : 0,
      "response_timeout_ms" : 500
    }
  ]
}

и

запустил sudo /usr/bin/wb-mqtt-serial -d 1 -c ./wb-mqtt-serial.conf
$ sudo /usr/bin/wb-mqtt-serial -d 1 -c ./wb-mqtt-serial.conf
<6>INFO: [mqtt] Default host and port detected, checking if UNIX socket exists on /var/run/mosquitto/mosquitto.sock
<6>INFO: [mqtt] UNIX socket not found, falling back to TCP connection
<6>INFO: [mqtt] connection estabilished with code "0" <success>
<6>INFO: [mqtt] subscription succeeded (message id 1)
<6>INFO: [mqtt] subscription succeeded (message id 2)
<7>DEBUG: [serial port driver] setting up devices at <192.168.0.145:502>
<7>DEBUG: [serial client] AddRegister: <modbus-tcp:21:coil: 123>
<6>INFO: [mqtt] subscription succeeded (message id 14)
<6>INFO: [mqtt] subscription succeeded (message id 15)
<6>INFO: [mqtt] subscription succeeded (message id 19)
<7>DEBUG: [port] Sleep 100000 us
<7>DEBUG: [port] Sleep 500000 us
<7>DEBUG: [port] Write: 00 01 00 00 00 06 15 01 00 7b 00 01
<7>DEBUG: [port] ReadFrame: 00 01 00 00 00 04 15
<7>DEBUG: [port] ReadFrame: 01 01 bc
<7>DEBUG: [register] new val for <modbus-tcp:21:coil: 123>: 0
<6>INFO: [serial device] device modbus-tcp:21 is connected
<7>DEBUG: [serial port driver] channel 'Alarm' of device 'sz-3-esp-01_21' <-- 0, error: ""
<7>DEBUG: [serial client] <192.168.0.145:502>347307181: Wait until 347316613
...
<7>DEBUG: [port] Sleep 500000 us
<7>DEBUG: [port] Write: 00 02 00 00 00 06 15 01 00 7b 00 01
<4>WARNING: [modbus] failed to read 1 coil(s) @ 123 of device modbus-tcp:21: Serial protocol error: socket closed
<7>DEBUG: [serial client] <192.168.0.145:502>347316699: Wait until 347326613
<7>DEBUG: [serial client] <192.168.0.145:502>347316799: Wait until 347326613

В это время проснифал трафик
modbus-tcp-3.pcap (1.5 КБ)
и вижу в нём (смотрел wireshark-ом, но сюда приведу текстовую версию)

tshark -r ~/d/modbus-tcp-3.pcap
$ tshark -r ~/d/modbus-tcp-3.pcap 
    1 2023-01-13 13:28:06,349785   0.000000 192.168.0.130 → 192.168.0.145 502 TCP 76 54638 → 502 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=1448650731 TSecr=0 WS=128
    2 2023-01-13 13:28:06,405940   0.056155 192.168.0.145 → 192.168.0.130 54638 TCP 64 502 → 54638 [SYN, ACK] Seq=0 Ack=1 Win=2144 Len=0 MSS=536 SACK_PERM=1
    3 2023-01-13 13:28:06,406124   0.056339 192.168.0.130 → 192.168.0.145 502 TCP 56 54638 → 502 [ACK] Seq=1 Ack=1 Win=64240 Len=0
    4 2023-01-13 13:28:06,906665   0.556880 192.168.0.130 → 192.168.0.145 502 Modbus/TCP 68    Query: Trans:     1; Unit:  21, Func:   1: Read Coils
    5 2023-01-13 13:28:06,923741   0.573956 192.168.0.145 → 192.168.0.130 54638 Modbus/TCP 66 Response: Trans:     1; Unit:  21, Func:   1: Read Coils
    6 2023-01-13 13:28:06,924002   0.574217 192.168.0.130 → 192.168.0.145 502 TCP 56 54638 → 502 [ACK] Seq=13 Ack=11 Win=64230 Len=0
    7 2023-01-13 13:28:06,926139   0.576354 192.168.0.145 → 192.168.0.130 54638 TCP 62 502 → 54638 [FIN, ACK] Seq=11 Ack=13 Win=2132 Len=0
    8 2023-01-13 13:28:06,974460   0.624675 192.168.0.130 → 192.168.0.145 502 TCP 56 54638 → 502 [ACK] Seq=13 Ack=12 Win=64229 Len=0
    9 2023-01-13 13:28:16,406674  10.056889 192.168.0.130 → 192.168.0.145 502 Modbus/TCP 68    Query: Trans:     2; Unit:  21, Func:   1: Read Coils
   10 2023-01-13 13:28:16,406975  10.057190 192.168.0.130 → 192.168.0.145 502 TCP 56 54638 → 502 [FIN, ACK] Seq=25 Ack=12 Win=64229 Len=0
   11 2023-01-13 13:28:16,408396  10.058611 192.168.0.130 → 192.168.0.145 502 TCP 76 54640 → 502 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=1448660789 TSecr=0 WS=128
   12 2023-01-13 13:28:16,441952  10.092167 192.168.0.145 → 192.168.0.130 54638 TCP 62 502 → 54638 [RST, ACK] Seq=12 Ack=25 Win=24584 Len=0
   13 2023-01-13 13:28:16,442231  10.092446 192.168.0.145 → 192.168.0.130 54638 TCP 62 502 → 54638 [RST, ACK] Seq=12 Ack=26 Win=24584 Len=0
   14 2023-01-13 13:28:16,442546  10.092761 192.168.0.145 → 192.168.0.130 54640 TCP 64 502 → 54640 [SYN, ACK] Seq=0 Ack=1 Win=2144 Len=0 MSS=536 SACK_PERM=1
   15 2023-01-13 13:28:16,442672  10.092887 192.168.0.130 → 192.168.0.145 502 TCP 56 54640 → 502 [ACK] Seq=1 Ack=1 Win=64240 Len=0
   16 2023-01-13 13:28:19,463886  13.114101 192.168.0.145 → 192.168.0.130 54640 TCP 62 502 → 54640 [FIN, ACK] Seq=1 Ack=1 Win=2144 Len=0
   17 2023-01-13 13:28:19,464407  13.114622 192.168.0.130 → 192.168.0.145 502 TCP 56 54640 → 502 [ACK] Seq=1 Ack=2 Win=64239 Len=0
   18 2023-01-13 13:28:21,372325  15.022540 192.168.0.130 → 192.168.0.145 502 TCP 56 54640 → 502 [FIN, ACK] Seq=1 Ack=2 Win=64239 Len=0
   19 2023-01-13 13:28:21,458758  15.108973 192.168.0.145 → 192.168.0.130 54640 TCP 62 502 → 54640 [ACK] Seq=2 Ack=2 Win=2143 Len=0

, что ESP (.145) после подтверждения получения пакета 5 ответа (пакет 6) закрывает соединение - пакет 7. Система WB подтверждает закрытие соединения - пакет 8.

Однако, в следующую итерацию WB шлёт запрос в том же соединении(?), как будто не знает, что соединение закрыто, на что ESP даёт отлуп…

Потом я проснифал чуть больше итераций
modbus-tcp-4.pcap (2.7 КБ)
и там видно, что WB, похоже, всё так же ещё не знает про закрытое уже соединение, и продолжает запрашивать данные по закрытому уже соединению(?).

tshark -r ~/d/modbus-tcp-4.pcap
$ tshark -r ~/d/modbus-tcp-4.pcap
    1 2023-01-13 13:49:53,779938   0.000000 192.168.0.130 → 192.168.0.145 502 TCP 76 54736 → 502 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=1449958161 TSecr=0 WS=128
    2 2023-01-13 13:49:53,818000   0.038062 192.168.0.145 → 192.168.0.130 54736 TCP 64 502 → 54736 [SYN, ACK] Seq=0 Ack=1 Win=2144 Len=0 MSS=536 SACK_PERM=1
    3 2023-01-13 13:49:53,818141   0.038203 192.168.0.130 → 192.168.0.145 502 TCP 56 54736 → 502 [ACK] Seq=1 Ack=1 Win=64240 Len=0
    4 2023-01-13 13:49:54,318549   0.538611 192.168.0.130 → 192.168.0.145 502 Modbus/TCP 68    Query: Trans:     1; Unit:  21, Func:   1: Read Coils
    5 2023-01-13 13:49:54,384428   0.604490 192.168.0.145 → 192.168.0.130 54736 Modbus/TCP 66 Response: Trans:     1; Unit:  21, Func:   1: Read Coils
    6 2023-01-13 13:49:54,384640   0.604702 192.168.0.130 → 192.168.0.145 502 TCP 56 54736 → 502 [ACK] Seq=13 Ack=11 Win=64230 Len=0
    7 2023-01-13 13:49:54,386818   0.606880 192.168.0.145 → 192.168.0.130 54736 TCP 62 502 → 54736 [FIN, ACK] Seq=11 Ack=13 Win=2132 Len=0
    8 2023-01-13 13:49:54,434393   0.654455 192.168.0.130 → 192.168.0.145 502 TCP 56 54736 → 502 [ACK] Seq=13 Ack=12 Win=64229 Len=0
    9 2023-01-13 13:50:03,818573  10.038635 192.168.0.130 → 192.168.0.145 502 Modbus/TCP 68    Query: Trans:     2; Unit:  21, Func:   1: Read Coils
   10 2023-01-13 13:50:03,818872  10.038934 192.168.0.130 → 192.168.0.145 502 TCP 56 54736 → 502 [FIN, ACK] Seq=25 Ack=12 Win=64229 Len=0
   11 2023-01-13 13:50:03,820477  10.040539 192.168.0.130 → 192.168.0.145 502 TCP 76 54738 → 502 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=1449968202 TSecr=0 WS=128
   12 2023-01-13 13:50:03,902582  10.122644 192.168.0.145 → 192.168.0.130 54736 TCP 62 502 → 54736 [RST, ACK] Seq=12 Ack=25 Win=24584 Len=0
   13 2023-01-13 13:50:03,902974  10.123036 192.168.0.145 → 192.168.0.130 54736 TCP 62 502 → 54736 [RST, ACK] Seq=12 Ack=26 Win=24584 Len=0
   14 2023-01-13 13:50:03,903188  10.123250 192.168.0.145 → 192.168.0.130 54738 TCP 64 502 → 54738 [SYN, ACK] Seq=0 Ack=1 Win=2144 Len=0 MSS=536 SACK_PERM=1
   15 2023-01-13 13:50:03,903368  10.123430 192.168.0.130 → 192.168.0.145 502 TCP 56 54738 → 502 [ACK] Seq=1 Ack=1 Win=64240 Len=0
   16 2023-01-13 13:50:06,924409  13.144471 192.168.0.145 → 192.168.0.130 54738 TCP 62 502 → 54738 [FIN, ACK] Seq=1 Ack=1 Win=2144 Len=0
   17 2023-01-13 13:50:06,934495  13.154557 192.168.0.130 → 192.168.0.145 502 TCP 56 54738 → 502 [ACK] Seq=1 Ack=2 Win=64239 Len=0
   18 2023-01-13 13:50:13,818838  20.038900 192.168.0.130 → 192.168.0.145 502 Modbus/TCP 68    Query: Trans:     3; Unit:  21, Func:   1: Read Coils
   19 2023-01-13 13:50:13,819263  20.039325 192.168.0.130 → 192.168.0.145 502 TCP 56 54738 → 502 [FIN, ACK] Seq=13 Ack=2 Win=64239 Len=0
   20 2023-01-13 13:50:13,820202  20.040264 192.168.0.130 → 192.168.0.145 502 TCP 76 54740 → 502 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=1449978201 TSecr=0 WS=128
   21 2023-01-13 13:50:13,835937  20.055999 192.168.0.145 → 192.168.0.130 54738 TCP 62 502 → 54738 [RST, ACK] Seq=2 Ack=13 Win=24584 Len=0
   22 2023-01-13 13:50:13,836173  20.056235 192.168.0.145 → 192.168.0.130 54738 TCP 62 502 → 54738 [RST, ACK] Seq=2 Ack=14 Win=24584 Len=0
   23 2023-01-13 13:50:13,836536  20.056598 192.168.0.145 → 192.168.0.130 54740 TCP 64 502 → 54740 [SYN, ACK] Seq=0 Ack=1 Win=2144 Len=0 MSS=536 SACK_PERM=1
   24 2023-01-13 13:50:13,836707  20.056769 192.168.0.130 → 192.168.0.145 502 TCP 56 54740 → 502 [ACK] Seq=1 Ack=1 Win=64240 Len=0
   25 2023-01-13 13:50:16,857101  23.077163 192.168.0.145 → 192.168.0.130 54740 TCP 62 502 → 54740 [FIN, ACK] Seq=1 Ack=1 Win=2144 Len=0
   26 2023-01-13 13:50:16,864450  23.084512 192.168.0.130 → 192.168.0.145 502 TCP 56 54740 → 502 [ACK] Seq=1 Ack=2 Win=64239 Len=0
   27 2023-01-13 13:50:23,818934  30.038996 192.168.0.130 → 192.168.0.145 502 Modbus/TCP 68    Query: Trans:     4; Unit:  21, Func:   1: Read Coils
   28 2023-01-13 13:50:23,819314  30.039376 192.168.0.130 → 192.168.0.145 502 TCP 56 54740 → 502 [FIN, ACK] Seq=13 Ack=2 Win=64239 Len=0
   29 2023-01-13 13:50:23,820084  30.040146 192.168.0.130 → 192.168.0.145 502 TCP 76 54744 → 502 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=1449988201 TSecr=0 WS=128
   30 2023-01-13 13:50:23,822196  30.042258 192.168.0.145 → 192.168.0.130 54740 TCP 62 502 → 54740 [RST, ACK] Seq=2 Ack=13 Win=24584 Len=0
   31 2023-01-13 13:50:23,822568  30.042630 192.168.0.145 → 192.168.0.130 54740 TCP 62 502 → 54740 [RST, ACK] Seq=2 Ack=14 Win=24584 Len=0
   32 2023-01-13 13:50:23,823011  30.043073 192.168.0.145 → 192.168.0.130 54744 TCP 64 502 → 54744 [SYN, ACK] Seq=0 Ack=1 Win=2144 Len=0 MSS=536 SACK_PERM=1
   33 2023-01-13 13:50:23,823244  30.043306 192.168.0.130 → 192.168.0.145 502 TCP 56 54744 → 502 [ACK] Seq=1 Ack=1 Win=64240 Len=0
   34 2023-01-13 13:50:25,238081  31.458143 192.168.0.130 → 192.168.0.145 502 TCP 56 54744 → 502 [FIN, ACK] Seq=1 Ack=1 Win=64240 Len=0
   35 2023-01-13 13:50:25,240291  31.460353 192.168.0.145 → 192.168.0.130 54744 TCP 62 502 → 54744 [RST, ACK] Seq=1 Ack=2 Win=24584 Len=0

Точно ли был запущен один экземпляр wb-mqtt-serial?
вижу:

13 2023-01-13 13:28:16,442231  10.092446 192.168.0.145 → 192.168.0.130 54638 TCP 62 502 → 54638 [RST, ACK] Seq=12 Ack=26 Win=24584 Len=0
   14 2023-01-13 13:28:16,442546  10.092761 192.168.0.145 → 192.168.0.130 54640 TCP 64 502 → 54640 [SYN, ACK] Seq=0 Ack=1 Win=2144 Len=0 MSS=536 SACK_PERM=1

serial работает с одного порта обычно.

совершенно точно

ну и объясняю:
я предварительно остановил службу wb-mqtt-serial.
неспеша переключался между окнами терминала:

  1. запустил tcpdump
  2. переключился на другой, запустил standalone wb-mqtt-serial -d ... понаблюдал за ошибкой
  3. переключился на tcpdump. остановил его…

а при снятии modbus-tcp-4.pcap там вообще 30 секунд прошло - и в него попали только 4 TCP-потока - ровно по количеству запросов от wb-mqtt-serial, что при работе не одного экземпляра приложения - практически невозможно )

полагаю, “обычно” Modbus TCP -сервер не закрывает соединение ))

А если убрать огромный таймауты между запросами - так же?
А еще - и какая версия wb-mqtt-serial?

ну, началось-то всё как раз с обычных таймаутов (это я уже потом для чёткого понимания, сделал такие таймауты)
так что - да, так же

ii wb-mqtt-serial 2.68.6-wb106 armhf Wiren Board Smart Home MQTT serial protocol driver

впрочем, строго говоря, не так же:
modbus-tcp-5.pcap (4.1 КБ)
а, натурально, через раз:

/usr/bin/wb-mqtt-serial -d 1 -c ./wb-mqtt-serial.conf
sudo /usr/bin/wb-mqtt-serial -d 1 -c ./wb-mqtt-serial.conf
<6>INFO: [mqtt] Default host and port detected, checking if UNIX socket exists on /var/run/mosquitto/mosquitto.sock
<6>INFO: [mqtt] UNIX socket not found, falling back to TCP connection
<6>INFO: [mqtt] connection estabilished with code "0" <success>
<6>INFO: [mqtt] subscription succeeded (message id 1)
<6>INFO: [mqtt] subscription succeeded (message id 2)
<7>DEBUG: [serial port driver] setting up devices at <192.168.0.145:502>
<7>DEBUG: [serial client] AddRegister: <modbus-tcp:1:coil: 123>
<6>INFO: [mqtt] subscription succeeded (message id 14)
<6>INFO: [mqtt] subscription succeeded (message id 15)
<6>INFO: [mqtt] subscription succeeded (message id 19)
<7>DEBUG: [port] Sleep 100000 us
<7>DEBUG: [port] Sleep 0 us
<7>DEBUG: [port] Write: 00 01 00 00 00 06 01 01 00 7b 00 01
<7>DEBUG: [port] ReadFrame: 00 01 00 00 00 04 01
<7>DEBUG: [port] ReadFrame: 01 01 7a
<7>DEBUG: [register] new val for <modbus-tcp:1:coil: 123>: 0
<6>INFO: [serial device] device modbus-tcp:1 is connected
<7>DEBUG: [serial port driver] channel 'Alarm' of device 'sz-3-esp-01_1' <-- 0, error: ""
<7>DEBUG: [serial client] <192.168.0.145:502>356102440: Wait until 356103223
<7>DEBUG: [serial client] <192.168.0.145:502>356102540: Wait until 356103223
<7>DEBUG: [serial client] <192.168.0.145:502>356102640: Wait until 356103223
<7>DEBUG: [serial client] <192.168.0.145:502>356102741: Wait until 356103223
<7>DEBUG: [serial client] <192.168.0.145:502>356102841: Wait until 356103223
<7>DEBUG: [serial client] <192.168.0.145:502>356102941: Wait until 356103223
<7>DEBUG: [serial client] <192.168.0.145:502>356103041: Wait until 356103223
<7>DEBUG: [serial client] <192.168.0.145:502>356103141: Wait until 356103223
<7>DEBUG: [port] Sleep 0 us
<7>DEBUG: [port] Write: 00 02 00 00 00 06 01 01 00 7b 00 01
<4>WARNING: [modbus] failed to read 1 coil(s) @ 123 of device modbus-tcp:1: Serial protocol error: socket closed
<7>DEBUG: [serial client] <192.168.0.145:502>356103255: Wait until 356104224
<7>DEBUG: [serial client] <192.168.0.145:502>356103356: Wait until 356104224
<7>DEBUG: [serial client] <192.168.0.145:502>356103456: Wait until 356104224
<7>DEBUG: [serial client] <192.168.0.145:502>356103556: Wait until 356104224
<7>DEBUG: [serial client] <192.168.0.145:502>356103656: Wait until 356104224
<7>DEBUG: [serial client] <192.168.0.145:502>356103756: Wait until 356104224
<7>DEBUG: [serial client] <192.168.0.145:502>356103856: Wait until 356104224
<7>DEBUG: [serial client] <192.168.0.145:502>356103957: Wait until 356104224
<7>DEBUG: [serial client] <192.168.0.145:502>356104057: Wait until 356104224
<7>DEBUG: [serial client] <192.168.0.145:502>356104158: Wait until 356104224
<7>DEBUG: [port] Sleep 0 us
<7>DEBUG: [port] Write: 00 03 00 00 00 06 01 01 00 7b 00 01
<7>DEBUG: [port] ReadFrame: 00 03 00 00 00 04 01
<7>DEBUG: [port] ReadFrame: 01 01 5a
<7>DEBUG: [serial client] <192.168.0.145:502>356104277: Wait until 356105224
<7>DEBUG: [serial client] <192.168.0.145:502>356104378: Wait until 356105224
<7>DEBUG: [serial client] <192.168.0.145:502>356104478: Wait until 356105224
<7>DEBUG: [serial client] <192.168.0.145:502>356104578: Wait until 356105224
<7>DEBUG: [serial client] <192.168.0.145:502>356104678: Wait until 356105224
<7>DEBUG: [serial client] <192.168.0.145:502>356104778: Wait until 356105224
<7>DEBUG: [serial client] <192.168.0.145:502>356104878: Wait until 356105224
<7>DEBUG: [serial client] <192.168.0.145:502>356104979: Wait until 356105224
<7>DEBUG: [serial client] <192.168.0.145:502>356105079: Wait until 356105224
<7>DEBUG: [serial client] <192.168.0.145:502>356105179: Wait until 356105224
<7>DEBUG: [port] Sleep 0 us
<7>DEBUG: [port] Write: 00 04 00 00 00 06 01 01 00 7b 00 01
<4>WARNING: [modbus] failed to read 1 coil(s) @ 123 of device modbus-tcp:1: Serial protocol error: socket closed
<7>DEBUG: [serial client] <192.168.0.145:502>356105228: Wait until 356106224
<7>DEBUG: [serial client] <192.168.0.145:502>356105329: Wait until 356106224
<7>DEBUG: [serial client] <192.168.0.145:502>356105429: Wait until 356106224
<7>DEBUG: [serial client] <192.168.0.145:502>356105529: Wait until 356106224
<7>DEBUG: [serial client] <192.168.0.145:502>356105629: Wait until 356106224
<7>DEBUG: [serial client] <192.168.0.145:502>356105729: Wait until 356106224
<7>DEBUG: [serial client] <192.168.0.145:502>356105829: Wait until 356106224
<7>DEBUG: [serial client] <192.168.0.145:502>356105930: Wait until 356106224
<7>DEBUG: [serial client] <192.168.0.145:502>356106030: Wait until 356106224
<7>DEBUG: [serial client] <192.168.0.145:502>356106130: Wait until 356106224
<7>DEBUG: [port] Sleep 0 us
<7>DEBUG: [port] Write: 00 05 00 00 00 06 01 01 00 7b 00 01
<7>DEBUG: [port] ReadFrame: 00 05 00 00 00 04 01
<7>DEBUG: [port] ReadFrame: 01 01 42
<7>DEBUG: [serial client] <192.168.0.145:502>356106238: Wait until 356107224
<7>DEBUG: [serial client] <192.168.0.145:502>356106338: Wait until 356107224
<7>DEBUG: [serial client] <192.168.0.145:502>356106438: Wait until 356107224
<7>DEBUG: [serial client] <192.168.0.145:502>356106538: Wait until 356107224
<7>DEBUG: [serial client] <192.168.0.145:502>356106639: Wait until 356107224
<7>DEBUG: [serial client] <192.168.0.145:502>356106739: Wait until 356107224
<7>DEBUG: [serial client] <192.168.0.145:502>356106840: Wait until 356107224
<7>DEBUG: [serial client] <192.168.0.145:502>356106940: Wait until 356107224
<7>DEBUG: [serial client] <192.168.0.145:502>356107040: Wait until 356107224
<7>DEBUG: [serial client] <192.168.0.145:502>356107140: Wait until 356107224
<7>DEBUG: [port] Sleep 0 us
<7>DEBUG: [port] Write: 00 06 00 00 00 06 01 01 00 7b 00 01
<4>WARNING: [modbus] failed to read 1 coil(s) @ 123 of device modbus-tcp:1: Serial protocol error: socket closed
<7>DEBUG: [serial client] <192.168.0.145:502>356107230: Wait until 356108224
<7>DEBUG: [serial client] <192.168.0.145:502>356107332: Wait until 356108224
<7>DEBUG: [serial client] <192.168.0.145:502>356107432: Wait until 356108224

Попробую воспроизвести.

Вот этот пример отлично подходит для воспроизведения )

не удалось? )

bump :wink:

У меня другая реализация Modbus TCP slave, но честно говоря не добирался… Запланирую себе.