В настоящий момент в промышленности активно внедряется высокотехнологичная стратегия развития, называемая индустрией 4.0, которая предполагает активное внедрение информационных технологий в промышленное производство, а также масштабную автоматизацию бизнес процессов и использование систем искусственного интеллекта. Перспективным подходом к построению гибких систем управления для автоматизированных систем, разрабатываемых для индустрии 4.0, является использование языков программирования стандарта IEC 61499.
IEC 61499 – это международный открытый стандарт на языки программирования для разработки распределенных систем управления и автоматизации. Данный стандарт предлагает вести разработку алгоритмов управления в виде связанного графа функциональных блоков, реализующих алгоритм управления. Существуют как проприетарные, так и открытые реализации среды исполнения IEC 61499. Среди реализаций среды исполнения IEC 61499 с открытым исходным кодом, одной из наиболее функциональных является среда Eclipse 4diac forte, а разработка алгоритма управления для этой среды производится в интегрированной среде разработки Eclipse 4diac IDE. Дополнительная информация по архитектуре Eclipse 4diac была представлена в нашей предыдущей статье (смотри источник №3).
Автоматизация производственных процессов помимо очевидных преимуществ имеет и ряд сложностей. Одной из проблем является риск подвергнуться кибератакам. Возможным решением является разработка защищенной реализации для среды исполнения IEC 61499 для KasperskyOS. Для этого требуется реализовать киберимунную систему управления путем портирования среды исполнения IEC 61499 Eclipse 4diac forte на операционную систему KasperskyOS. Процесс портации Eclipse 4diac forte включает:
Проектирование архитектуры
Создание проекта для сборки forte на KasperskyOS CE
Модификация 4diac forte
-
Разработка специфичных для KasperskyOS функциональных блоков:
Работа с GPIO
Управление моторами для Alphabot
Разработка слоя взаимодействия для KasperskyOS IPC
Общая информация о Eclipse 4diac
В состав Eclipse 4diac входят:
Среда разработке Eclipse 4diac
Набор библиотек функциональных блоков
Среда исполнения
Среда исполнения Eclipse 4diac forte представляет из себя бинарный файл, который работает как прикладное приложение. Она содержит в себе функционал всех функциональных блоков, представленных в стандартной библиотеке. В ходе развертывания разработанной программы управления, производится конвертация программы в загрузочный файл с расширением .fboot, который содержит лишь информацию о том, какие функциональные блоки используются в программе, и какие связи между ними заданы. Далее этот загрузочный файл передается среде исполнения 4diac forte, которая считывая его, исполняет функционал соответствующих функциональных блоков в соответствующем порядке.
Существует возможность расширения возможностей среды исполнения Eclipse 4diac forte при помощи добавления новых функциональных блоков. Новые функциональные блоки могут быть разработаны в среде разработки Eclipse 4diac IDE, после чего они могут быть импортированы в файлы исходного кода на языке программирования C++, а затем скомпилированы вместе с исходным кодом остальных функциональных блоков в среду исполнения Eclipse 4diac forte.
Kaspersky Operation System (KasperskyOS) – это защищенная, микроядерная операционная система, разработку которой ведет компания «Лаборатория Касперского». KOS позволяет пользоваться POSIX вызовами при разработке программ. При проектировании этой ОС применялись проверенные и хорошо описанные архитектурные подходы MILS (Multiple Independent Levels of Security) и FLASK (Flux Advanced Security Kernel)
В соответствии с архитектурным подходом MILS компоненты системы изолированы друг от друга. Все межпроцессные взаимодействия происходят только через монитор безопасности (Kaspersky Security System) и через типизированные интерфейсы. Таким образом изолированные программные компоненты могут содержать уязвимости или даже вредоносный код, но система в любом случае остается безопасной.
Описание решения
Рассматриваемая в статье задача заключается в реализации киберимунной системы управления путем портирования среды исполнения IEC 61499 Eclipse 4diac forte на операционную систему KasperskyOS и демонстрация возможности расширение функционала среды исполнения для обеспечения возможности работы с GPIO путем добавления новых функциональных блоков.
Для портирования forte на KasperskyOS необходимо опрделить 4diac forte в качестве отдельной сущности. Для этого нам следует модифицировать исходную систему сборки 4diac forte для сборки forte в составе образа решения KasperskyOS теми средствами компиляции, что поставляются в составе SDK разработчика KasperskyOS Community Edition[6]. Помимо сущности Forte в нашем решении также присутствует служебная сущность Einit и модуль безопасности KSM-module. За основу решения был взят образец embedded_vfs из SDK разработчика KasperskyOS. Архитектура решения представлена на рисунке 1.
Рис. 1. Архитектура проекта forte для KasperskyOS
Здесь сущность Forte слинкована с библиотеками для работы с файловой системой, сетевым стеком и драйвером GPIO.
Протестируем наше решение. Для демонстрации работы с вводом выводом в KasperskyOS был разработан функционального блок для управления моторами AlphaBot[7] через GPIO. Контакты GPIO конфигурируются, и могут выступать как в роли входа, так и в роли выхода. Фото робота AlphaBot представлено на рисунке 2.
Рис. 2. Робот Alpha bot
Интерфейс функционального блока для управления двигателями представлен на рисунке 3.
Рис. 3. Интерфейс функционального блока для управления моторами Alphabot.
Функционал, который содержит наш новый функциональный блок позволяет выполнять команды (значение на вход CMD) Остановиться, Двигаться вперед (оба колеса крутятся вперед), Двигаться назад (оба колеса крутятся назад), Поворот налево (правое колесо крутится вперед, а левое остановлено), Поворот направо (левое колесо крутится вперед, а правое остановлено) в течении заданного времени в милисекундах(значение на вход DURATION).
Реализация команд осуществляется путем выдачи команд на GPIO порт
Рис. 4. Команды для управления моторами Alphabot.
Инициализируем нужные нам пины и включаем моторчики. После этого в зависимости от поданной команды альфабот либо стоит на месте либо движется вперед/назад либо поворачивает направо/налево в течении определенного количества миллисекунд, которое тоже задается. В самом конце, после выполнения всех действий, мы выключаем моторчики и закрываем GPIO порт.
Для тестирования решения на практике возможно запрограммировать альфабота двигаться по определенной траектории при помощи нашего нового функционального блока. В качестве траектории выберем прямоугольник. Описание траектории представлено на рисунке 5.
Рис. 5. Траектория движения альфабота
Соответствующая программа для задания траектории движения альфабота при помощи нового функционального блока в среде разработки Eclipse 4diac IDE показана на на рисунке 6.
Рис. 6. Программа управления для альфабота для езды по замкнутому маршруту
Исходный код решения доступен по ссылке https://gitflic.ru/project/slavikmai/deep-forte-on-kos-with-fboot В этом же репозитории можно найти изображения с эталонным выводом решения на базе KasperskyOS.
Минимальное приложение управления Alphabot с приемом команд по MQTT
4diac позволяет передавать команды в среду исполнения по различным сетевым протоколам. Например, может быть использован протокол MQTT, для которого есть библиотеки в SDK KasperskyOS CE. Минимальное приложение для получение команд управления (вперед, стоп, налево, направо, назад) Alphabot в 4diac имеет вид:
Рис. 7. Программа управления для альфабота c возможностью получения команд по MQTT
В минимальном приложении используются разработанные нами функциональные блоки для управления моторами (AB_FORWARD, AB_LEFT, AB_RIGTH, AB_STOP для управления моторами), функциональный блок для разбора JSON сообщения и выделения команды AB_CMDPARSER и стандартный функциональный блоке SUBSCRIBER, который позволяет работать с различными протоколами. В минимальном приложении используется протокол MQTT, которые есть в составе forte.
Модульное приложение управления Alphabot с приемом команд по MQTT в изолированной программе
Разработчики KasperskyOS рекомендуют разделять функциональность приложения на модули для повышения устойчивости приложения к взлому. Мы выделили сетевое взаимодействие по MQTT в отдельное приложение, которое взаимодействует с forte только по IPC. Это позволяет уменьшить вероятность взлом программы forte. Архитектура приложения 4diac в этом случае буде аналогична представленной в предыдущем случае:
Рис. 8. Программа управления для альфабота c возможностью получения команд по MQTT
В этом случае взаимосвязь сущностей в KasperskyOS будет выглядеть следующим образом:
Рис. 9. Программа управления для альфабота c изолированной сущностью для получения команд по сети
Для взаимодействия forte по KasperskyOS IPC был реализован с программой MQTT клиентом был реализован специальный сетевой слой в 4diac forte, который позволяет реализовывать получение команд при помощи стандартного сетевого блока SUBSCRIBER. Архитектура сетевого слоя показана на рис. 10.
Рис. 10. Архитектура сетевого слоя для получения команд по KasperskyOS IPC.
Более детальное описание приложения управления Alphabot с приемом команд по MQTT будет дано в следующей статье вместе с ссылкой на исходный код.
Заключение
Анализируя полученный результат можно сделать вывод о том, что имеется принципиальная возможность создания киберимунной системы управления путем портирования среды исполнения IEC 61499, в частности Eclipse 4diac forte на операционную систему KasperskyOS. Использование 4diac forte позволяет в значителной мере скрыть от разработчика прикладного ПО сложность работы с KasperskyOS. При этом есть возможность разрабатывать защищенные приложения, использовать разбиение задач на независимые компоненты и конфигурировать правила взаимодействия.
Список источников
ROS documentation. URL: https://docs.ros.org/en/foxy/index.html (дата обращения: 05.09.2022).
Node-RED documentation. URL: https://nodered.org/docs/ (дата обращения: 05.09.2022).
IEC 61499 и решения с открытым исходным кодом для разработки систем управления URL: https://habr.com/ru/post/676392/ (дата обращения: 05.09.2022).
Zoitl, A., Strasser, T., editors. Distributed control applications: guidelines, design patterns, and application examples with the IEC 61499. Boca Raton, FL: CRC Press Taylor & Francis Group; 2016. ISBN 978-1-4822-5905-6.
А.Н. Максимов, А.А. Александров, В.Д. Романов МЕТОД ЧТЕНИЯ КАДРОВ С ВИДЕОКАМЕР И РЕАЛИЗАЦИИ АЛГОРИТМОВ ОБРАБОТКИ ВИДЕОИЗОБРАЖЕНИЙ В ПРОГРАММАХ НА ЯЗЫКАХ СТАНДАРТА IEC 61499.// Научно-технический вестник Поволжья,№4 2022. С.96-98
KasperskyOS Community Edition 1.0. URL: https://support.kaspersky.com/help/KCE/1.0/ru-RU/KasperskyOS-CE.pdf (дата обращения: 05.09.2022).
AlphaBot documentation. URL: https://www.waveshare.com/wiki/AlphaBot (дата обращения: 05.09.2022).
victor_1212
привет Слава, посмотрел Ваш код на gitflic.ru и статью, как pilot project выбор удачный и вполне интересно, если будут более сложные проекты на основе этой os, пишите продолжение, желаю успеха