Переносимое промышленное ПО: современные подходы к разработке и перспективы (часть 2)

Если рассматривать современные подходы к разработке переносимого промышленного ПО, отдельно стоит отметить тенденцию к использованию языков с широкой экосистемой инструментов: Rust, как уже упоминалось, обеспечивает высокую безопасность и возможность собирать release-билды для разнообразных платформ с минимальными отличиями.

Так, в проектах, подобных Zenoh, уже сейчас предлагаются варианты сборок под разные версии libc, что существенно облегчает задачу интеграции в гетерогенную среду.
Что касается реализации новых принципов переносимости, отрасль постепенно поворачивается к использованию платформенных абстракций и промежуточных байт-кодов - например, технологии WebAssembly (WASM) и eBPF, которые позволяют запускать один и тот же код на разных архитектурах и операционных системах. Это даёт уникальные преимущества: возможность создавать и распространять промышленный софт в виде "модулей", не связанных жёстко ни с железом, ни с конкретной ОС.

С точки зрения промышленного сектора в России, важнейшим направлением остаётся развитие открытых стандартов и внедрение российской электроники. Работа по созданию открытой АСУТП продолжается: реализуются проекты по поддержке новых архитектур Baikal, «Эльбрус», ARM, MIPS и других, причем разрабатываются и расширяются модули не только для обработки стандартных промышленных протоколов (Modbus, OPC UA, MQTT), но и для работы с современными средствами машинного зрения, машинного обучения, edge-вычисления.

Musl - это очень облегчённая альтернатива glibc, используется в embedded‑системах, когда нужно уменьшить объём бинарных файлов или обеспечить работу на специфических платформах. Соответственно, при правильной организации структуры проекта, создаются разные тарболы, которые можно распаковать непосредственно на контроллер с нужной архитектурой и запускать их без проблем. Это пример современного подхода.

Возвращаясь к нашим реалиям: если предположить, что мы делаем кроссмультиплатформенное программное обеспечение, нам постоянно приходится учитывать вопросы надежности, совместимости версий библиотек, поддержки драйверов устройств ввода-вывода, а также нюансы лицензирования. Вот сейчас в промышленных контроллерах большой спрос на поддержку отечественных процессоров: «Байкал», «Эльбрус», новых решений на ARM. Для них требуется не только портирование самого кода, но и адаптация под уникальные особенности железа: обработка прерываний, таймеров, низкоуровневых слоёв, зачастую даже приходится писать отдельные упаковщики или скрипты для корректной загрузки бинарных файлов.
|
Ещё один момент - это обеспечение безопасности. Контейнеризация хотя и добавляет гибкости, но усложняет модель угроз, потому что открывает дополнительные поверхности для атак, и для промышленной среды это часто становится стоп-фактором. Многие операторы инфраструктуры запрещают использование стандартных репозиториев Docker из интернета, требуют локальных приватных реестров, а иногда и полностью «замораживают» версию программного обеспечения на долгие годы ради соответствия требованиям сертификации.

Всё это - большие вызовы для разработчика, которым приходится делать не только переносимость на уровне кода, но и сопровождение на протяжении полного жизненного цикла оборудования: от интеграции, до техподдержки и апдейтов.
Если говорить о перспективах, в ближайшие два‑три года, очевидно, вектор развития будет идти по нескольким направлениям:

1) Первое - это создание действительно переносимых сред исполнения: минимальные runtime, которые можно с легкостью портировать под практически любой индустриальный контроллер и запускать там пользовательские алгоритмы через так называемую «декларативную загрузку» - загрузку проектного файла, написанного по сопровождённым стандартам, например IEC 61499, и моментальную его активацию.

2) Второе направление - автоматизация процесса сборки и тестирования. Поддержка Continuous Integration (CI/CD) для кроссплатформенных проектов становится вообще обязательным требованием, потому что только так можно обеспечить быстрое внедрение обновлений и фиксов без риска для основного производства.
3) Третье - это более тесная интеграция с российской электроникой. Уже сейчас ведётся работа, например, в рамках проектов открытой АСУ ТП, по созданию стандартных драйверов к отечественным микроконтроллерам, которые позволят использовать один и тот же проект цифровой автоматизации на разных моделях оборудования без переписывания софта.

Также к трендам будущего можно отнести активное внедрение средств машинного обучения для промышленных задач - от оптимизации параметров до предиктивной диагностики. Но здесь требования к переносимости становятся ещё жёстче, ведь бинарные сборки моделей часто зависят от версии фреймворка, архитектуры процессора и даже специфики реализации ускорителей искусственного интеллекта.

В завершение подчеркнем: цифровая независимость невозможна без массового перехода всех игроков рынка на открытые интерфейсы, стандартные среды исполнения, и активное информированное участие и разработчиков, и внедренцев, и конечных пользователей в формировании новых стандартов, платформ и экосистем.

Наши статьи:

Блог ЦПР РТСофт