Ошибка приходит по таймауту коннекта, а пока его нет (а это секунды и более) - ПЛК успеет 10-к пакетов послать при описанных настройках мастера.
Буфер мастера очищается, а буфер стека TCP/IP? На логе ясно видны попытки ретрансмита.
И зачем представлять самую простую схему - использование TCP/IP предполагает что мастер находится, к примеру, в Антарктиде, 30 хопов до slave-а.
При новом соединении как минимум номер порта-source меняется именно для того чтобы можно было различить что это новое соединение а не обежавший планету 3 раза пакет.
Через сколько секунд разрыва? В протоколе TCP/IP нет нативных средств для определения разрыва от внешних причин (дядя Вася с топором) в момент разрыва, только по таймауту.
[/QUOTE]
О майн гот! Расскажите мне, что будет со SCADA если я в один порт с 2-х мастеров буду по очереди слать: то "температура реактора 100 градусов" то "500 градусов"? Вот что будет делать SCADA, будет ли там признак "Данные из разных источников"? Нельзя ли узнать на каких опасных производствах стоит Ваш OPC?
Много соединений на 1 порт нужно для Web-сервера, к примеру, где действия 1 пользователя не пересекаются с другими. А ModBus априори предполагает наличие только 1 мастера в сети.
Описанный выше апокалипсец как раз и происходит у Павла. Соединение закрыто, мастер открыл другое а OPC еще обслуживает старое соединение и получает негодные данные.