Добрый день!
Имею ПЛК110[М02] в кол-ве n штук (среда CODESYS v2 соответсвтенно)
Возникла необходимость общаться с устройством посредством локальной сети.
Идея в том что одно из устройств постоянно слушает эфир и поступлении команды с устройства управляемого выполняет операцию и возвращает результат.
Смог добыть два учбных проекта (ссылки на форуме протухли в шапке) - TcpClient_PLCm02 и TcpServerPLCm02 чтобы изучить и попробовать адаптировать работу ..
Решил попробовать реализовать TCP соединение ,в виде либо сервер ПЛК - клиент устройство , либо сервер устройство - клиент ПЛК.
Задача:
Ожидание команды от управляемого устройства на ПЛК , ПЛК обрабатывает команду ,выполняя соответсвующую процедуру у себя и выдает результат обратно
Столкнулся с тем что не могу удовлетворительно реализовать ни один из сценариев
1)Сервер устройство - ПЛК клиент - почти удалось заставить работать , но всё портит невозможность без запроса узнать есть ли сообщение от устройства, т.е приходтся постояно опрашивать устройство т.к (*в неблокирующем режиме факт установки соединения можно определить только косвенным путем, используя функции SysSockSend и SysSockRecv*). в итоге стабильного обмена в любое время не удается обеспечить.
2) Сервер ПЛК - клиент устройство - не удается реализовать совсем. Пример учебный посмотрел , там всё с визуализации управляется , но настроить чтобы работало с моим случаем работало пока не разобрался..Сервер постоянно бегает по состояниям и в IDLE не переходит. Более того после какото - кол-ва попыток подключений оно намертово перестает подключаться, пока не сменишь порт.
Заранее скажу , что проект в остально части протестирован и работает обмен посредством RS232 вполне сносно, то есть проблема не в остальной части проекта(да и я уже делал минимальную программу где только сервер и перменные для него)
Поэтому прошу сообщество помочь советом и настройкой одного из вариантов или предложить альтернативу как заставить работать. Может быть кто уже реализовывал подобное правильно?
Прикладываю кусок от программы , где пробовал по разному заставить работать обмен..