Начало работы с генератором кода¶
В этой модели представлена реализация системы управления автопилотом по оси крена. Модель предназначена для генерации кода.
О модели¶
Эта модель представляет базовый автопилот по каналу крена с двумя режимами работы: стабилизация крена и удержание курса полета. Логика переключения режимов является внешней по отношению к данной модели и может быть реализована в других моделях. Режимы стабилизации крена и удержания курса полета архитектурно выделены в атомарные подсистемы внутри модели.
Функция стабилизация крена — это ПИД-регулятор, который использует обратную связь по углу и скорости крена для выдачи команды элерону. Входным сигналом для регулятора является либо уставка (заданное значение) угла крена, либо команда угла крена для удержания желаемого курса полета. Модель выглядит следующим образом:
Подсистема RollMode¶
В этой подсистеме реализован базовый расчет уставки угла крена. В зависимости от типа подсистемы генератор кода Engee встроит это вычисление непосредственно в основную функцию модели (для виртуальной подсистемы) или сгенерирует отдельную функцию с именем подсистемы (для атомарной подсистемы).
Подсистема HeadingMode¶
В этой подсистеме вычисляется уставка крена для удержания желаемого курса полета.
Подсистема CtlMode¶
В этой подсистеме реализуется функция стабилизации угла крена в виде ПИД-регулятора.
Симуляция модели¶
В модели содержится тестовая обвязка вокруг подсистемы autopilot_roll
. Запустите симуляцию модели, чтобы убедиться в ее корректности.
Генерация кода из модели¶
Эта модель Engee готова для генерации кода. Чтобы сгенерировать код из подсистемы autopilot_roll
(которая представляет алгоритмическую часть модели), выполните следующую команду в командной строке или интерактивном скрипте Engee:
engee.generate_code( "$(@__DIR__)/aircraft_roll.engee",
"$(@__DIR__)/autopilot_roll",
subsystem_name="autopilot_roll" )
Синтаксис команды engee.model.generate_code
подробно описан в разделе Генератор кода в Engee.
Сгенерированный код находится в директории start/examples/codegen/GettingStartedCodegen/autopilot_roll
.
Рассмотрим сгенерированный код.
Более подробная информация о функциях и интерфейсе сгенерированного кода приведена в разделе Возможности генератора кода.