PDA

Просмотр полной версии : Сервер hypercorn на Python 3.8.2 для преобразования пром протоколов в HTTP



Dark Mech
07.11.2025, 16:38
Всех приветствую! Начал такой небольшой проект на ПЛК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 на ПЛК?
Возможно кто-то писал скрипты для сервера на другом языке?
В дальнейшем я также буду выкладывать в тему свои результаты. Если есть вопросы задавайте)

In_Da_Cher_A
11.11.2025, 09:45
вы немного не по адресу зашли
вам куданибудь к тру кодерам
понятно что у вас много времени
но вопрос один - зачем всё это?

melky
11.11.2025, 11:22
а сколько весит сам питон?

Dark Mech
17.11.2025, 09:10
Сам Питон весит около 100мб и встроен уже в ПЛК210 и ПЛК200 на новых версиях прошивок.

Dark Mech
17.11.2025, 09:23
Трушнуго в этом ничего нет. Стандартные знания сетевых протоколов + знания промышленных протоколов связи. Это как по мне стандарт который должен знать каждый уважающий себя инженер КИПиА.
Питон такой же инструмент реализации проектов как и языки МЭК стандарта. Также ничего сложного в нем нет. Он даже проще чем тот же ST.
А цель проста. Очень многие не хотят платить помесячно за использование клауд систем, да и нормальные клауд системы управления технологическими процессами остались за бугром.
Плюс многие заказчики требуют современного интерфейса, который адаптируется под экран телефона, а СКАДы им кажутся допотопными какие бы фичи и дизайнерские решения не применялись.
Тут спрос рождает предложение. Понятно, что не совсем правильно делать так, но что просят то и делаю.

Newcomer
17.11.2025, 09:27
Трушнуго в этом ничего нет. Стандартные знания сетевых протоколов + знания промышленных протоколов связи. Это как по мне стандарт который должен знать каждый уважающий себя инженер КИПиА.
Питон такой же инструмент реализации проектов как и языки МЭК стандарта. Также ничего сложного в нем нет. Он даже проще чем тот же ST.
А цель проста. Очень многие не хотят платить помесячно за использование клауд систем, да и нормальные клауд системы управления технологическими процессами остались за бугром.
Плюс многие заказчики требуют современного интерфейса, который адаптируется под экран телефона, а СКАДы им кажутся допотопными какие бы фичи и дизайнерские решения не применялись.
Тут спрос рождает предложение. Понятно, что не совсем правильно делать так, но что просят то и делаю.

Хорошо. Может и с форумом поделишься своими разработками.

Newcomer
17.11.2025, 09:49
надеюсь, заказчик предупрежден что в плк нет многозадачности, и единственный процессор делит бремя работы как с основной задачей контроллера, так и построенной Вами визуализацией, да еще на микросервисах

А если в ПЛК процессор двухъядерный стоит ?

melky
17.11.2025, 12:51
Центральный процессор 4х Cortex-А55 1,8 ГГц - там как бы не 4-х ядерный, можно посмотреть инфу по архитектуре... Тут больше вопрос, как этими ядрами распоряжается CodeSys...
опять же в терминале Linux можно посмотреть командами, сколько их там в этом ARMe

и даже может быть 8-мь https://www.cpubenchmark.net/cpu.php?cpu=ARM+Cortex-A55+8+Core+1800+MHz&id=5104

Newcomer
17.11.2025, 14:19
Центральный процессор 4х Cortex-А55 1,8 ГГц - там как бы не 4-х ядерный, можно посмотреть инфу по архитектуре... Тут больше вопрос, как этими ядрами распоряжается CodeSys...
опять же в терминале Linux можно посмотреть командами, сколько их там в этом ARMe

и даже может быть 8-мь https://www.cpubenchmark.net/cpu.php?cpu=ARM+Cortex-A55+8+Core+1800+MHz&id=5104

Dark Mech парень не простой. Он разберется как ядрами распорядиться.

melky
17.11.2025, 15:45
стало понятнее? очень интересно, у вас явно не Cortex A55 а какое-то старое барахло с ARMv7 :) - сайт Овен трындит в характеристиках ПЛК210-1х ?
https://owen.ru/product/plk210 - сравнительная таблица. У вас 210-0х ? тогда похоже

Dark Mech
19.11.2025, 12:35
86768 стало понятнее?
На серии 200 и 0х 210 ПЛК(до санкций) ставили ARM проц от американской фирмы Texas Instruments. Насчет codesys я хз как он распределяет нагрузку и может ли в мультикaнал но сама система распределяет нагрузку равномерно между объявленными сервисами (теми же приложениями).
А насчет идеи с КДС сокетом спасибо, попробую. Меньше узлов лучше стабильность системы.