Богомолов В.И.

Кибериммунное управление AlphaBot через 4Diac forte с помощью MQTT

В проекте показана возможность создания кибериммунной системы управления путем портирования среды исполнения IEC 61499, в частности Eclipse 4diac forte, на операционную систему KasperskyOS. Использование 4diac forte позволяет в значительной мере скрыть от разработчика прикладного ПО сложность работы с KasperskyOS. При этом есть возможность разрабатывать защищенные приложения, использовать разбиение задач на независимые компоненты и конфигурировать правила их взаимодействия.

1. Задачи проекта

  • Реализовать управление AlphaBot по интерфейсу GPIO, управляемому функциональной логикой, запущенной в среде исполнения IEC 61499 Eclipse 4diac forte, которая портирована на KasperskyOS.
  • Обеспечить кибериммунность системы управления, выделив сетевое MQTT-взаимодействие в отдельное приложение, которое взаимодействует с forte только по IPC.

2. Результатом работ по проекту является

Для портирования forte на KasperskyOS необходимо определить 4diac FORTE в качестве отдельной сущности. Для этого следует модифицировать исходную систему сборки 4diac forte для ее сборки в составе образа решения KasperskyOS теми средствами компиляции, что поставляются в составе SDK KasperskyOS Community Edition. Помимо сущности Forte в нашем решении также присутствует служебная сущность Einit и модуль безопасности KSM-module. За основу решения был взят образец embedded_vfs из SDK KasperskyOS. Архитектура решения представлена на рисунке 1.

Кибериммунное управление AlphaBot через 4Diac forte с помощью MQTT – изображение 1
Рис. 1. Архитектура проекта forte для KasperskyOS

Здесь сущность Forte слинкована с библиотеками для работы с файловой системой, сетевым стеком и драйвером GPIO.

Для демонстрации работы с вводом-выводом в KasperskyOS был разработан функциональный блок для управления моторами AlphaBot через GPIO. Контакты GPIO конфигурируются и могут выступать как в роли входа, так и в роли выхода. Фото робота AlphaBot представлено на рисунке 2.

Кибериммунное управление AlphaBot через 4Diac forte с помощью MQTT – изображение 2
Рис. 2. Робот AlphaBot

Интерфейс функционального блока для управления двигателями представлен на рисунке 3.

Кибериммунное управление AlphaBot через 4Diac forte с помощью MQTT – изображение 3
Рис. 3. Интерфейс функционального блока для управления моторами AlphaBot

Функциональность, которую содержит наш новый функциональный блок, позволяет выполнять следующие команды (значение на вход CMD):

  • остановиться;
  • двигаться вперед (оба колеса крутятся вперед);
  • двигаться назад (оба колеса крутятся назад);
  • поворот налево (правое колесо крутится вперед, а левое остановлено);
  • поворот направо (левое колесо крутится вперед, а правое остановлено);

Команды выполняются в течение заданного в миллисекундах времени (значение на вход DURATION). Реализация команд осуществляется путем выдачи команд на GPIO-порт

Кибериммунное управление AlphaBot через 4Diac forte с помощью MQTT – изображение 4
Рис. 4. Команды для управления моторами AlphaBot

Инициализируем нужные нам пины и включаем моторы. После этого в зависимости от поданной команды робот либо стоит на месте, либо движется вперед/назад либо поворачивает направо/налево в течении определенного количества миллисекунд, которое тоже задается. В самом конце, после выполнения всех действий, выключаем моторы и закрываем GPIO-порт.

4diac позволяет передавать команды в среду исполнения по различным сетевым протоколам. Например, может быть использован протокол MQTT, для которого есть библиотеки в SDK KasperskyOS CE. Минимальное приложение для получения команд управления (вперед, стоп, налево, направо, назад) AlphaBot в 4diac имеет вид:

Кибериммунное управление AlphaBot через 4Diac forte с помощью MQTT – изображение 5
Рис. 5. Программа управления для AlphaBot c возможностью получения команд по MQTT

В минимальном приложении используются разработанные нами функциональные блоки для управления моторами (AB_FORWARD, AB_LEFT, AB_RIGTH, AB_STOP для управления моторами), функциональный блок для разбора JSON-сообщения и выделения команды AB_CMDPARSER и стандартный функциональный блок SUBSCRIBER, который позволяет работать с различными протоколами. В минимальном приложении используется протокол MQTT, который есть в составе FORTE.

Кибериммунная методология разработки под KasperskyOS рекомендует разделять функциональность приложения на модули для повышения устойчивости приложения к взлому. Мы выделили сетевое взаимодействие по MQTT в отдельное приложение, которое взаимодействует с forte только по IPC. Это позволяет уменьшить вероятность взлом программы forte. Архитектура приложения 4diac в этом случае будет аналогична представленной в предыдущем случае.

Кибериммунное управление AlphaBot через 4Diac forte с помощью MQTT – изображение 6
Рис. 6. Управление 4Diac forte готовое к кибериммунной архитектуре решения

Чтобы проект 4diac заработал, для среды выполнения forte были добавлены новые блоки:

  • AB_COSCMD_RECEIVER — получить сообщение по каналу IPC от сущности с MQTT-клиентом.
  • AB_FORWARD — запустить двигатели AlphaBot. Он будет двигаться вперед в течение заданного времени.
  • AB_STOP — выключить двигатели AlphaBot.
  • AB_LEFT — запустить двигатели AlphaBot. Он будет двигаться влево в течение заданного времени.
  • AB_RIGHT — запустить двигатели AlphaBot. Он будет двигаться прямо в течение заданного времени.

При этом сам проект разделен на две сущности:

  • forte.Client — подписчик mqtt с сетевыми правами;
  • forte.Forte — приложение Forte для управления ботами.
Кибериммунное управление AlphaBot через 4Diac forte с помощью MQTT – изображение 7
Рис. 7. Общая кибериммунная архитектура решения разделенная на 2 сущности

3. Проверка работоспособности решения в проекте

Для тестирования решения на практике возможно запрограммировать AlphaBot двигаться по определенной траектории при помощи нового функционального блока. В качестве траектории выберем прямоугольник. Описание траектории представлено на рисунке 8.

Рис. 8. Траектория движения AlphaBot

Соответствующая программа для задания траектории движения альфабота при помощи нового функционального блока в среде разработки Eclipse 4diac IDE показана на на рисунке 9.

Кибериммунное управление AlphaBot через 4Diac forte с помощью MQTT – изображение 8
Рис. 9. Программа управления AlphaBot для езды по замкнутому маршруту

Исходный код решения доступен по ссылке https://gitflic.ru/project/slavikmai/deep-forte-on-kos-with-fboot. В этом же репозитории можно найти изображения с эталонным выводом решения на базе KasperskyOS.

Для сборки решение с управлением AlphaBot с помощью MQTT в кибериммунной архитектуре воспользуйтесь проектом https://github.com/ElPallasCat/kos_abot_mqtt. Для сборки примера и запуска полученного образа используйте скрипт cross-build.sh.

4. Дополнительная информация по проекту

Основная идея проекта и результат работ были опубликованы на Habr.com в статье «Опыт портирования Eclipse 4diac на KasperskyOS CE».

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