08 Jun Контроллер путает (перемешивает) Modbus TCP соединения
Добрый день. Используем много WebHMI на объектах, версии разные 4.0 и 4.1. К контроллеру подключено по несколько устройств по Modbus TCP. Через продолжительное время возникают обрывы связи с устройствами, и WebHMI начинает путать приборы, я точно подаю сигнал на устройство 1, а на экране высвечивается у 2го. Помогает переинициализация (перезагрузка) WebHMI. Как я смог разобраться при инициализации проекта каждому соединению присваивается “номер соккета”, при обрывах TCP соединения меняются местами, а проект это не отслеживает и продолжает опрашивать по “номеру”, не контролируя IP адрес. Как это можно побороть?
3 answers
Добрый день, нужно более точное описание проблемы:
конфигурация сети
- это modbus tcp устройства? или Modbus RTU, опрашиваемые через шлюз Ethernet – serial.
- Сколько всего устройств (и шлюзов).
- проблема проявляется на одном или на всех WebHMI в подобной конфигурации.
- Топология сети (схема, чертеж)
как проявляется проблема
- данные с “чужого” устройства появляются на устройстве которое переставало читаться, или попадают на другое устройство, связь с которым не пропадала, при этом есть другие устройства, которые в данный момент не читаются.
- периодичность возникновения проблемы, если ли повторяемость, закономерность, макс. и мин. время за которое проблема точно проявляется
- данные “путаются” только между 2 – мя устройствами? или больше
Для отладки проблемы, нам нужно ее воспроизвести на своем стенде.
- На разных стациях есть разные шлюзы Modbus TCP – Modbus RTU; и чисто Modbus TCP контроллеры (логеры, инвертора).
- устройств 4 – 16
- проблема проявляется на всех WebHMI.
- топология WebHMI – коммутатор – устройства. Более сложная один объект: WebHMI – сеть интернет (VPN туннель) – устройство, и локальные устройства через коммутатор.
Проявляется проблема именно отображение данные с “другого устройства”, путаются местами устройства. В случае шлюзов Modbus TCP – Modbus RTU данные не отображаются если ID подчиненного устройства на “чужем” шлюзе нет. Перегрузка проекта WEBHMI (в меню выключить – включить любое соединение) помогает, все стает на свои места. Шлюзы и устройства при этом не трогаем.
По закономерности – чем больше обрывов связи тем быстрее эта ошибка возникает. Из опыта на одном объекте может повториться несколько раз в день, может месяц работать без проблем. На другом объекте где много однотипного оборудования “на глаз” определить что устройства поменялись местами трудно, так как данные похожие, до возникновения нештатной ситуации – увидели ошибку на одном устройстве, а ошибка на самом деле возникла на другом.
Путаются именно TCP соединения, не ID устройства.
будем воспроизводить ошибку и отлаживать на стенде.
Насчет того, как быстро “заметить” ошибку – можно сделать “ловушку” на lua, которая будет сравнивать, что с устройства N читается ЗначениеN, пример его собственный адрес в сети, и при несовпадении отправит Telegram – сообщение.