Добрый день!
Если кратко, то поставлена задача отдавать из ПЛК данные в стороннее приложение, написанное на питоне.
Дополнительное требование надо данные передавать через сокеты.
Тут два варианта. Либо TCP либо UDP. Пока выбран UDP.
На виртуальной машине развернуто:
- Windows 10
- Python 3.8
- CoDeSys 2.3
- CODESYS SP PLCWinNT V2.4 (далее будет переноситься на реальные ПЛК)
- библиотека SysLibSockets.lib (Change History: ... 20.02.13 DiS #11080 Parameter for keepalive option одно из последних изменений библиотеки).
Делали согласно документу CDSv2.3_Sockets_v1.0.pdf и на данном этапе реализовывали UDP сервер и несколько клиентов.
В результате пробывали следующие комбинации:
1) 1 virtual ПЛК сервер + 2 virtual ПЛК клиенты (если использовать переменные типа string вроде все работает)
2) 1 virtual ПЛК сервер + 1 клиент на Python
3) 1 сервер на Python + 1 virtual ПЛК клиент
Результат:
1) Вариант №2 вроде работает, но данные не проходят ни туда ни сюда
2) В остальных вариантах в большинстве случаев данные проходят, но то ПЛК нужно перегрузить, то клиента на питоне, то данные видоизменены.
Есть подозрение, что по разному идет преобразование полученных данных.
Уважаемые товарищи, если кто что делал или сталкивался с той или другой стороной нашей проблемы - ткните куда смотреть.
Жду вопросов, ну и ответов!