Всех приветствую! Начал такой небольшой проект на ПЛК210-11CS. Тема на подумать и обсудить. (Не судите строго пишу на форуме впервые)
Создал два микросервиса. В основе лежит Flask, разворачиваемый, на сервере hypercorn. Первый микросервис конвертирует OPC UA в HTTP (основу написал за день). Второй делает POST запросы к первому и формирует БД (также около дня с отладкой). В будущем планирую перейти на более эффективную шину для обмена данными но пока так. Возможно также переведу это с питона на rust, пока хз как на ПЛК это будет работать поэтому не уверен.

По первому микросервису
Имеется три основных enpoint для работы. Все три POST. Все json POST запроса содержат ключ и либо только список нодов либо список нодов + значение(для записи). Ответом является отладочная инфа + нужные данные (для чтения - это значение и его тип; для записи - результат выполнения команды). Простое решение на библиотеке asyncua 1.1.5 + Flask 3.0.3.
Первый endpoint - чтение нодов. Второй endpoint - запись нодов. Третий - создать новый ключ доступа.
Тесты показали следующее быстродействие на ПЛК:
1) 100 нодов чтение/запись от 0.9сек до 1.2 сек.
2) 200 нодов чтение/запись от 2.2сек до 2.5 сек.
3) 500 нодов чтение/запись от 5.2сек до 7.2 сек.
Это время именно на опрос OPC UA. Время с HTTP ответом конечно будет разниться в зависимости от удаленки (время рассчитывал как общее время ответа минус время ответа от OPC). Например на keen dns примерно время запроса занимает от 1 до 5 сек. Количество нодов сильно не сказывается. А если через VPN сервер фирмы то время сильно сокращается и не гуляет. В среднем максимальный ответ был за полсекунды.

По второму микросервису
Микросервис чисто для БД. Использует Flask, request а для запись в БД - стандартная Python библиотека sqLite3. Микросервис обращается к первому и записывает данные с периодичностью которая указывается в настройках для каждой группы нодов. Flask нужен для изъятия данных из БД. Имеет POST для запроса данных из нужной БД. Также несколько сервисных endpoint для проверки сети и работы микросервиса. Может работать с несколькими микросервисами первого типа. Настройки пока храню в json.

Вообще на будущее есть идеи по переносу серверов на Rust, а пока пишу WEB UI при помощи NiceGui 2.24.2. Отличная библиотека для тех кому нафиг не сдался json html и css(в библиотеке есть возможность их использования).
Есть ли кто-то кто делал такое?
Можно ли развернуть rust на ПЛК?
Возможно кто-то писал скрипты для сервера на другом языке?
В дальнейшем я также буду выкладывать в тему свои результаты. Если есть вопросы задавайте)