Привет, хаброжители! Меня зовут Алексей Евсеев, я инженер по встраиваемым системам в ЦИТМ «Экспонента». В этом году на ЦИПРе нам выделили только стенд для экспозиции, поэтому, к сожалению, мы не смогли привезти туда настоящий самолёт. Но мы не растерялись и привезли его цифровую копию – модель МС-21 в Engee с ручным управлением и визуализацией полёта, работающую в режиме реального времени.

Стенд испытаний комплексной системы управления МС-21
Для начала коротко о том, что включал в себя наш стенд.
-
Модель движения среднемагистрального самолёта МС-21, учитывающая:
аэродинамику самолёта,
силы и моменты от двигателей (в нашем случае ПД-14),
параметры атмосферы и ветровые возмущения.
Модель комплексной системы управления самолёта в Engee.
Проект приборов авионики в ПрагмаСофтСтудия.
Проект 3D-визуализации самолёта МС-21 и окружающей среды в Unigine.
Локальный сервер от «Инферит», где развернута виртуальная машина с образом Engee.
-
ПК с мощной видеокартой, на котором запущены:
Sim SDK Unigine,
САПР-интерфейсов авионики ПрагмаСофтСтудия,
браузер с графическим интерфейсом Engee.
Машина реального времени КПМ РИТМ, выполняющая расчёт модели с заданным временнЫм шагом.
Ручка управления самолётом (РУС) и рычаг управления двигателями (РУД) на Thrustmaster HOTAS
Стоит отметить, что за исключением HOTAS и ПК все части стенда отечественные.

Кстати, интересно, что буквально каждый подходивший к нам иностранец специально уточнял: «Это полностью ваша разработка, российская?» и «Это реально работающий софт или прототип?».
Физика и математика: моделирвоание в Engee
Прежде чем построить самолёт, его нужно спроектировать, а прежде чем управлять им, нужно моделировать взаимодействие системы управления и собственно объекта управления. Ниже показано, как выглядит модель движения самолёта, которую мы собрали.
Краткая статистика:
3003 блока из библиотеки Engee,
8 уровней вложенности,
55 Си-файлов,
6 специальных блоков РИТМ,
137 настраиваемых параметров, занимающих память 5 816 байт.

Вся система, как можно заметить, разделена на несколько функциональных частей:
блок задания ветра – задаёт скорость ветра по осям;
блок начальных условий – определяет и задаёт начальные значения параметров полёта (положение в пространстве) и начальные отклонения аэродинамических поверхностей;
блок опроса джойстиков – считываются данные с HOTAS, масштабируются и определяются необходимые управляющие сигналы для модели;
блок расчёта уравнений движения – рассчитываются элементы объекта управления, а именно модели: инерции и динамики в пространстве воздушного судна (ВС), атмосферы, аэродинамических нагрузок, двигателей и некоторых других систем;
блок имитации бесплатформенной инерциальной навигационной системы (БИНС) – имитируются задержки при вычислении отклонений ВС в пространстве;
алгоритмы управления – объединяет системы управления механизацией крыла, рулями высоты и направления, элеронами, стабилизаторами, интерцепторами. Формирует управляющие воздействия для приводов ВС;
приводы аэродинамических поверхностей – собственно, сами органы регулирования динамики ВС и его положения в пространстве. Подсистема включает в себя приводы рулей, интерцепторов, элеронов и других элементов. Здесь же по итогу регулирования рассчитываются вектора отклонений аэродинамических поверхностей.
вывод графиков – включает в себя блоки периферии КПМ РИТМ для вывода графиков в GUI ОС реального времени (ОСРВ РИТМ.Реальное время), задействуются автоматически только при выполнении модели на машине реального времени КПМ РИТМ;
передача данных в ПрагмаСофт Студию – здесь происходит масштабирование получаемых данных, то есть состояния атмосферы и положения ВС. Затем формируются последовательности байтов, которые передаются в блок вызова функций для их отправки по UDP во внешнее приложение.
передача данных в Unigine – здесь происходит та же самая работа с UDP, но входными данными здесь служат координаты и угловое положение ВС, отклонения аэродинамических поверхностей.
Часть систем представлена блоками со встроенным кодом на Си – как, например, подсистемы расчёта аэродинамических характеристик или координат ВС.
Часть систем в модели – это блоки со встроенным кодом на языке Julia, как, например, блоки формирования последовательности байтов для передачи по UDP или блок расчёта параметров атмосферы.
Некоторые системы, как, например, приводы элеронов, интерцепторов и прочих аэродинамических поверхностей, собраны исключительно направленными блоками.
На этом примере видно, что моделирование в Engee позволяет разработчикам не ограничиваться в используемых подходах к модельной разработке: хотите собирать блоками – собирайте, хотите писать кодом – пишите. Приходится использовать legacy на C/C++/Python/Matlab/Fortran и т.д. – милости просим!
В этой модели, кстати, мы активно используем и именованные параметры. Так, для быстрого переконфигурирования и задания начальных значений достаточно запустить готовый скрипт на Julia или добавить 250 строк определений переменных в обратные вызовы модели. Последнее позволяет автоматически при открытии модели в Engee добавить все определения в рабочую область переменных.

Конечно, разработка такой модели – процесс длительный, с множеством итераций наращивания, отлаживания и тестирования. Но именно метод модельно-ориентированного проектирования (MBD, model-based design) экономит нам время, средства и нервы. После сборки модели, её конфигурирования и тестирования в графиках Engee мы увидим нечто подобное:

Результаты моделирования нас устраивают (ровно так же, как и заказчиков). Однако прежде чем переносить модель в реальное время или грузить генерируемый из неё код в контроллер, нужно протестировать, как модель ведёт себя с реальными управляющими воздействиями, как будут визуализироваться результаты моделирования в привычных для оператора средах. Самое время перейти к интеграции модели с человеко-машинными интерфейсами (HMI).
Где начинается игра: поддержка внешнего оборудования в Engee
Лирическое отступление
Кажется, ещё совсем недавно, рассказывая о планах на взаимодействие с железом и разными САПР непосредственно из браузерного Engee, мы натыкались на необоснованный скепсис. Как здорово, что это в прошлом, благодаря одному из наших недавних релизов. Теперь Engee может общаться с устройствами, подключенными к PC по COM, CAN, Modbus TCP, Modbus RTU, может управлять устройствами по VISA и машиной реального времени КПМ РИТМ. Функциональности этого инструментария расширяются с каждой неделей, число поддерживаемых интерфейсов и протоколов постепенно увеличивается. Некоторые поразительные новшества появятся в ближайшем релизе!
Жаль, все фишки работы с оборудованием из Engee в этом посте не показать, и вряд ли у меня получится полноценно рассказать о них в комментариях. По такому важному случаю я подготовил специальный вебинар. Подключайтесь 18 июня в 10:00!
Продолжим про HMI модели МС-21.
В библиотеке блоков Engee уже есть специализированные элементы, с помощью которых мы можем срастить модель с внешними устройствами и ПО.

В нашем случае это следующие элементы.
Устройства HID – игровые контроллеры Thrustmaster HOTAS. Они передают в модель сигналы тяги правого и левого двигателей, тангаж и крен.

С контроллеров можно было завести ещё пару десятков сигналов, но мы не будем запускать ракеты на пассажирском авиалайнере, да и чтение лекций по элементам управления ВС на ЦИПР – не моя компетенция.
Для тех, кто хочет пострелять, я подготовил пример со стрельбой по мишеням, не выходя из Engee: координаты целей определяются рандомайзером, а вам за время моделирования нужно поразить их как можно больше. Посмотрите, получилось интересно.\
САПР ПрагмаСофт Студия – это широко известный в узких кругах софт для отрисовки панели с приборами авионики. У него есть инструменты для моделирования сценария визуализации. На нашем стенде он читает данные из порта 7900 по IP 127.0.0.1.

Что мы отображаем в ПрагмаСофт: перегрузки – текущие и предельные, тангаж, крен, курс, давление за бортом, скорость, высоту. Все эти параметры рассчитываются в модели, а затем формируются в единый массив (вектор) длиной 64 элемента, каждый элемент которого имеет формат UInt8. Интерфейсному блоку PRAGMASOFT TX (UDP) остаётся сообщить только IP-адрес и порт назначения передачи, размер передачи, а затем в цикле передавать сами данные.
3D-движок Unigine – российская замена Unreal Engine. В плане механизма передачи данных из модели Engee в Unigine справедливо всё то, что выше я описал про взаимодействие с ПрагмаСофт. Отличие составляют лишь номер порта (5150 по тому же IP) и длина передаваемого массива данных (104).

Как уже упоминалось выше, из модели в Unigine передаются координаты и угловое положение ВС, отклонения аэродинамических поверхностей. Так на визуализации определяется положение самолёта относительно координатных плоскостей карты, наклоны фюзеляжа относительно осей, а также положения рулей, предкрылков и прочих элементов относительно фюзеляжа.
На что следует обратить внимание на этом этапе тестирования разработанной модели? Объясняю.
При моделировании в Engee и анализе графиков сигналов из модели инженер может определить соответствие наблюдаемых параметров техническому заданию. Но этап разработки модели с интеграцией в модель HMI – это тестирование с приближением к реальным условиям работы. Здесь в идеале требуется участие опытного пользователя объекта управления – например, лётчика-испытателя. Он сможет задать для модели реальные управляющие воздействия и, опираясь на собственный опыт, визуально определить параметры работы модели и системы управления, недоступные разработчикам.
Что следует за этапом отладки HMI-модели? Дальнейшее её приближение к реальными условиям эксплуатации.
Engee во плоти: реальное время, изолированный контур
Ещё один шаг вверх по лестнице TRL (Technology Readiness Level, уровень готовности технологии, УГТ) – работа системы с жёстко контролируемым временем выполнения модели. Честно сказать, шаг дискретизации нашей модели не такой уж и маленький – он составляет целых 10 мс. Однако тестирование модели МС-21 в течение всей недели, пока длилась конференция ЦИПР, показало, что машине реального времени КПМ РИТМ для расчёта нашей модели в среднем достаточно и 100 мкс.

Это значит, что в такой системе мы учитываем влияние процессов, изменяющихся с частотой до 50 Гц, а при незначительной оптимизации модели – и до 5 кГц.
Как работает и как применяется КПМ РИТМ, здесь уже рассказывали мои коллеги. Я по этой теме должен лишь дополнить, что эта машина одинаково хорошо работает и с моделями Simulink, и с моделями Engee. В Engee для неё разработан пакет поддержки периферии, который позволяет быстро и без потерь заменить блоки HMI из предыдущего шага на аналогичные. Так мы подключаем оборудование не к PC с Engee в браузере, а непосредственно к машине реального времени. Можно вообще скомпилировать модель из Engee и загрузить на РИТМ, а на компьютере оставить только ПО для визуализации.
Вишенкой на этом торте будет развёртывание Engee в изолированном контуре. В одну стойку с PC и РИТМ мы смонтировали сервер от коллег из Инферит. Engee по умолчанию работает на нашем сервере. Однако для закрытых предприятий или для мест с плохой интернет-связью мы разворачиваем Engee на сервере заказчика с доступом в локальной сети предприятия.
Отдельное удовольствие от такого решения составляет мерный успокаивающий гул кулеров сервера Инферит, что позволяет нам только глубже погрузиться в пилотирование воздушного судна.
Заключение
Этот проект продолжает развиваться и дальше. В качестве намёка сообщу, что для РИТМ доступно подключение устройств по МКИО, а также модулей ввода-вывода на базе ПЛИС. Кроме того, в Engee появляется всё больше блоков для моделирования специфических систем, не говоря уже о новшествах для работы с внешним оборудованием.
О некоторых инструментах работы с оборудованием и ПО в Engee, а также кейсах их применения я расскажу на вебинаре уже 18 июня.
Спасибо, что прочитали!
До новых постов, друзья и коллеги!
ru_vlad
Можно маленький глупый совет, вы с таким КПВД поаккуратней, 11 сентября еще люди помнят. /сарказм/
alex_evseev Автор
Красота, как и не красота, в глазах смотрящего /шутка/