Плагин Modbus

Программная платформа для систем автоматизации.
Диспетчеризация, Умный дом.
intrahouse
Сообщения: 563
Зарегистрирован: 12 дек 2016, 20:22

Re: Плагин Modbus

Сообщение intrahouse » 01 мар 2019, 09:31

Чтобы локализовать проблему предлагаю установить любой modbus клиент на свой компьютер.

1. При нормальной работе плагина попробовать зайти на контроллер с помощью modbus клиента.
Если не получается, значит контроллер не разрешает несколько одновременных подключений по modbus
Тогда ситуация становится понятнее. Контроллер не закрывает старое соединение и при этом не разрешает новое.

2. Отключить плагин. Подключиться modbus клиентом. Cмоделировать ситуацию с отключением. Сможет ли modbus клиент подключиться к контроллеру?

intrapro
Сообщения: 458
Зарегистрирован: 13 дек 2016, 09:14

Re: Плагин Modbus

Сообщение intrapro » 01 мар 2019, 10:18

Erik писал(а):
28 фев 2019, 19:08
Связь после обрыва не восстанавливается.
Вот пакеты попытки старта плагина.
https://yadi.sk/d/N_AurooQUkBZxA
Результат анализа дампов:

Удачное соединение (первый отправленный файл)
Трехэтапное рукопожатие
13 2.823605 192.168.88.46 192.168.13.25 TCP 74 33770 → 502 [SYN, ECN, CWR]
16 2.841734 192.168.13.25 192.168.88.46 TCP 60 502 → 33770 [SYN, ACK]
19 2.854543 192.168.88.46 192.168.13.25 TCP 54 33770 → 502 [ACK]
Обмен данными
22 2.863566 192.168.88.46 192.168.13.25 Modbus/TCP 66 Query: Trans: 1; Unit: 1, Func: 3: Read Holding Registers
25 2.870976 192.168.13.25 192.168.88.46 Modbus/TCP 65 Response: Trans: 1; Unit: 1, Func: 3: Read Holding Registers
28 2.880465 192.168.88.46 192.168.13.25 TCP 54 33770 → 502 [ACK]
....

Неудачное соединение
Трехэтапное рукопожатие - все нормально
53 12.880903 192.168.88.46 192.168.13.25 TCP 74 38416 → 502 [SYN, ECN, CWR]
56 12.883667 192.168.13.25 192.168.88.46 TCP 60 502 → 38416 [SYN, ACK]
59 12.892805 192.168.88.46 192.168.13.25 TCP 54 38416 → 502 [ACK]

Но контроллер сразу отправляет пакет FIN - завершение
62 12.895657 192.168.13.25 192.168.88.46 TCP 60 502 → 38416 [FIN, ACK]

Сервер после рукопожатия успел отправить первый запрос
65 12.900399 192.168.88.46 192.168.13.25 Modbus/TCP 66 Query: Trans: 1; Unit: 1, Func: 3: Read Holding Registers

Но контроллер кроме FIN завершения еще посылает RST - прекратить немедленно (обычно используется или FIN или RST)
68 12.903004 192.168.13.25 192.168.88.46 TCP 60 502 → 38416 [RST, ACK]
69 12.903004 192.168.13.25 192.168.88.46 TCP 60 502 → 38416 [RST, ACK]
70 12.903147 192.168.13.25 192.168.88.46 TCP 54 502 → 38416 [RST, ACK]

Сервер соглашается завершить
71 12.905900 192.168.88.46 192.168.13.25 TCP 54 38416 → 502 [ACK]
74 12.907799 192.168.88.46 192.168.13.25 TCP 54 38416 → 502 [FIN, ACK]

Контроллер еще пять раз присылает прекратить
77 12.908491 192.168.13.25 192.168.88.46 TCP 60 502 → 38416 [RST, ACK]
........

На этом сеанс завершается. При следующей попытке все повторяется
Почему контроллер категорически отказывается соединяться - в этом вопрос.

Erik
Сообщения: 356
Зарегистрирован: 23 окт 2018, 13:09

Re: Плагин Modbus

Сообщение Erik » 01 мар 2019, 11:31

intrahouse писал(а):
01 мар 2019, 09:31
Чтобы локализовать проблему предлагаю установить любой modbus клиент на свой компьютер.

1. При нормальной работе плагина попробовать зайти на контроллер с помощью modbus клиента.
Если не получается, значит контроллер не разрешает несколько одновременных подключений по modbus
Тогда ситуация становится понятнее. Контроллер не закрывает старое соединение и при этом не разрешает новое.

2. Отключить плагин. Подключиться modbus клиентом. Cмоделировать ситуацию с отключением. Сможет ли modbus клиент подключиться к контроллеру?
Сделаю на выходных.

Erik
Сообщения: 356
Зарегистрирован: 23 окт 2018, 13:09

Re: Плагин Modbus

Сообщение Erik » 01 мар 2019, 11:33

intrapro писал(а):
01 мар 2019, 10:18

Почему контроллер категорически отказывается соединяться - в этом вопрос.
Скопировал на форум контроллера.

Но они не быстрые там совсем. :(

Erik
Сообщения: 356
Зарегистрирован: 23 окт 2018, 13:09

Re: Плагин Modbus

Сообщение Erik » 01 мар 2019, 11:50

intrapro писал(а):
01 мар 2019, 07:24
Erik писал(а):
01 мар 2019, 05:33
Сам отвечаю.
Нужно было обязательно сервер IH перезагрузить, чтобы настройка заработала.
Нет, достаточно перезагрузить плагин
Оказалось не достаточно. Я его перезапускал, провел эксперимент с обрывом связи, в результате которого плагин сам перезапускался, и все время он работал от других портов.
Написанный в настройках взял только после перезагрузки IH.
intrapro писал(а):
01 мар 2019, 07:24
Erik писал(а):
01 мар 2019, 05:33
Но с ней стало все намного хуже.
Т.е. связь не восстанавливается вообще.
Даже после перезагрузки контроллера.
Выключил фиксированный порт, перезапустил контроллер - заработало.
А какая ошибка в плагине?
При переиспользовании порта проходит некоторое время, пока ОС его освобождает даже при нормальном отключении.
Та же самая ошибка. Но она не прекращается и после перезагрузки контроллера. Может порт 7999 не допустим для модбаса?
intrapro писал(а):
01 мар 2019, 07:24
Erik писал(а):
01 мар 2019, 05:33
Перезапуск микротика на стороне контроллера на помогает ни в каком случае.
Раз вы можете моделировать ситуацию, попробуйте радикально уменьшить "TCP Established Timeout" на микротике на стороне контроллера
https://frm.intrahouse.ru/viewtopic.php ... 3&start=80
Попробую.

Erik
Сообщения: 356
Зарегистрирован: 23 окт 2018, 13:09

Re: Плагин Modbus

Сообщение Erik » 01 мар 2019, 11:55

Erik писал(а):
01 мар 2019, 11:33
Скопировал на форум контроллера.

Но они не быстрые там совсем. :(
Ответили практически сразу.
Он считает что у него уже занято одно соединение по Modbus-TCP.
Такую же ситуацию можно наблюдать если соединиться с ним одновременно с двух клиентов.

intrapro
Сообщения: 458
Зарегистрирован: 13 дек 2016, 09:14

Re: Плагин Modbus

Сообщение intrapro » 01 мар 2019, 12:34

Erik писал(а):
01 мар 2019, 11:55
Erik писал(а):
01 мар 2019, 11:33
Скопировал на форум контроллера.

Но они не быстрые там совсем. :(
Ответили практически сразу.
Он считает что у него уже занято одно соединение по Modbus-TCP.
Такую же ситуацию можно наблюдать если соединиться с ним одновременно с двух клиентов.
То есть контроллер разрешает только одно соединение по Modbus.
Следующий вопрос - как долго контроллер считает, что соединение занято, при потере связи.

Erik
Сообщения: 356
Зарегистрирован: 23 окт 2018, 13:09

Re: Плагин Modbus

Сообщение Erik » 16 мар 2019, 19:55

Проблема решена.
Ребята из Гидролого сделали прошивку с другими правилами установки соединения по Модбас.

gis
Сообщения: 62
Зарегистрирован: 14 дек 2018, 17:29

Re: Плагин Modbus

Сообщение gis » 03 июн 2019, 17:07

Подскажите: имеются исполнительные модули которые работают по протоколу Modbus RTU (RS-485). Можно ли работать с такими модулями с помощью плагина Modbus через преобразователь интерфейсов из RS-485 (Modbus) в Ethernet (IP)?
Вот такой преобразователь - https://wirenboard.com/ru/product/WB-MGE/
Был ли у кого подобный опыт работы с подобными преобразователями?

intrahouse
Сообщения: 563
Зарегистрирован: 12 дек 2016, 20:22

Re: Плагин Modbus

Сообщение intrahouse » 04 июн 2019, 04:33

На следующей неделе будем закупать некоторое оборудование wiremboard.
Доделаем плагин для Modbus для протокола modbus RTU и протестируем с этим преобразователем.

Ответить