1. Последнюю версию ПО можно запросить в нашей техподдержке + она должна появится на сайте.
2. Обязанность клиента (в терминологии стека ТСP) поддерживать соединение, постоянно передавая пакеты, иначе сработает таймаут.
3. Таймауты на повтор пакетов у Вас великоваты - 3 секунды - поставьте 1.
3а. Таймаут должен отсчитываться во всех состояниях с установленным соединением.
4. В программе ожидается определённое количество байт и считываются только они - если придёт лишний - он никогда не будет считан и буфера закончатсяПравильно - всегда считывать все данные из сокета до момента возврата нуля в ответе SySSockRecv(). Иначе будет вышеописаное.
5. По задачам - за 1 цикл ПЛК способен выполнить только 1 задачу, даже если ещё 20 уже заждались очереди. Т.о. если я правильно расшифровал текстовые поля в описании задач - (лучше бы проект .pro прислали чтобы не мучится), то у Вас множество задач по событиям (т.е. возможно каждый цикл будут вызываться) и MainTask в режиме свободного вызова (крайне не рекомендую на CoDeSys 2 Embedded, ведёт себя непредсказуемо).
При такой конфигурации период вызова MainTask не определён. Попробуйте вычленить коммуникационную часть и с учётом рекомендаций 3 и 4 проверить в монопольной задаче.





Правильно - всегда считывать все данные из сокета до момента возврата нуля в ответе SySSockRecv(). Иначе будет вышеописаное.
Ответить с цитированием