В этом примере показано, как использовать Control System Tuner, чтобы настроить ПИД-регуляторы фиксированной структуры мультивертолета для номинальных условий рейса и условий отказа. Здесь, вы используете запланированный на усиление подход, чтобы восстановиться с одного отказа ротора и посадить UAV.
Этот пример использует основанное на модели на модели, обсужденной в Доставке Пакета UAV (UAV Toolbox) пример. Высокочастотная модель объекта управления 6-DOF основана на Примере готовых узлов Беспилотника Simulink.
Откройте проект Simulink®.
run('scdUAVInflightFailureRecoveryStart.m')
В этом примере один отказ ротора симулирован путем введения мультипликативного вектора усиления на объекте. Чтобы продемонстрировать результаты симуляции запланированных на усиление контроллеров, команды привода используются в качестве функций, чтобы спроектировать алгоритм обнаружения отказа, и порог на основе номинала и вызванных симуляций отказа используется, чтобы обнаружить отказ.
Контроллер состоит из положения (X, Y) и отношение (тангаж, крен) цикл, цикл управления рыскания и высота (Z) цикл управления. Блок Rotor Fault Injection Gains используется, чтобы задать условие отказа для модели объекта управления. Control System Tuner используется, чтобы настроить внутренний контроллер отношения и высотный контроллер. Усиления настраиваются для номинальных условий рейса и условий отказа. Стратегия управления восстановления отказа реализована с помощью Различных блоков ПИД-регулятора и Интерполяционной таблицы, запланированных на основе индикатора обнаружения отказа. Следующий рисунок показывает подсистему контроллера, используемую для настройки.
open_system('MultirotorModel/Inner Loop and Plant Model/High-FidelityModel_RotorFault/Controller/Controller')
В этом разделе описывается указать настраиваемые элементы и создать настраивающиеся цели с помощью Control System Tuner. Чтобы запустить предварительно сконфигурированный сеанс вместо этого, используйте Ярлыки Проекта.
Контроллер и объект извлечены в отдельной модели, MultirotorModelControlDesign.slx
, настройте для настройки усилений контроллера с помощью Control System Tuner. Начальное условие для интегральных составляющих установлено как 0,01, чтобы подавить перерегулирование при поддержании нулевой установившейся ошибки. Параметр множителя усиления ротора устанавливается, чтобы указать на номинальный режим со всеми операционными роторами.
Откройте модель.
open_system("MultirotorModelControlDesign.slx")
Чтобы запустить приложение Control System Tuner, в окне модели Simulink, в галерее Apps, нажимают Control System Tuner.
Задайте, чтобы линеаризовать модель в шаге расчета 0,005 секунд. Для этого нажмите Linearization Options, выберите Discrete с шагом расчета и введите 0.005
.
Чтобы задать изменения параметра, на вкладке Control System, нажимают Select parameters to vary
из списка Изменений Параметра. Чтобы выбрать переменные модели, на вкладке Parameter Variations, нажимают Manage Parameters. Выберите rotor4ThrustGain
параметр и нажимает ОК, чтобы добавить его в таблицу Parameter Variations.
Введите 0
для второго значения строки. Изменение параметра задает номинальный рейс (rotor4ThrustGain
= 1) и один отказ ротора (rotor4ThrustGain
= 0) условия.
Чтобы выбрать блоки для настройки, на вкладке Tuning, нажимают Select Blocks. Затем на Выбрать диалоговом окне Tuned Blocks нажмите Add Blocks. Это открывает редактор для настроенных блоков, где можно задать, какие блоки являются настраиваемыми.
Выберите усиления контроллера в контроллере отношения и высотных подсистемах контроллера как настраиваемые.
Чтобы задать настраивающуюся цель, на вкладке Tuning, нажимают New Goal. Цель Отслеживания Шага используется, чтобы задать ответ и желаемые характеристики для управления углами продольного и поперечного крена. Ссылочные сигналы продольного и поперечного крена и измеренные сигналы в сигнале UAVState отмечены как вводы и выводы для настраивающейся цели, соответственно. Контроллер положения цикл открыт, чтобы настроить цикл управления ориентацией в изоляции. Введите параметр Постоянной времени как 0,1 с и примените настраивающуюся цель к номинальной модели (первая строка Изменения Параметра).
Точно так же используйте Цель Отслеживания Шага и Цикл, Формирующий Целевые диалоговые окна, чтобы создать полный набор настраивающихся целей, требуемых настроить контроллер отношения и высоты усиления.
Цели управления для цикла отношения:
Настраивающая цель отслеживания шага управлять продольным и поперечным креном с желаемым ответом первого порядка с постоянной времени 0,1 секунд
Цель формы цикла подавить усиление обратной связи циклов продольного и поперечного крена на высокой частоте в виде интегратора с полосой пропускания 10 Гц
Цели управления для высотного цикла:
Настраивающая цель отслеживания шага с желаемым ответом первого порядка с постоянной времени 1 секунды
Цель формы цикла подавить усиление обратной связи на высокой частоте в виде интегратора с полосой пропускания 10 Гц
Следуйте за предыдущим разделом, чтобы настроить сеанс Control System Tuner для настройки усилений контроллера для номинального режима рейса. В качестве альтернативы используйте контроллер Мелодии ярлыка для номинального рейса в проекте запустить Control System Tuner с предварительно сконфигурированным файлом сеанса.
Настраивающиеся целевые графики показывают, что с ненастроенными усилениями контроллера, цикл управления ориентацией нестабилен, и высотный цикл управления не имеет желаемого ответа. Используйте Управлять опцию Целей, чтобы выбрать и отредактировать настраивающуюся цель.
Нажмите Tune, чтобы настроить значения настраиваемых блоков, чтобы достигнуть настраивающихся целей. И циклы управления отношения и высоты настраиваются вместе с зафиксированным циклом управления рыскания.
Чтобы видеть значения настроенных усилений контроллера, выберите блок в Настроенных Блоках и просмотрите значение в области Data Preview Control System Tuner. Для получения дополнительной информации смотрите, Исследуют Настроенного диспетчера Параметерса в Control System Tuner.
Настроенные усиления контроллера:
Внешний пропорциональный цикл управляет для тангажа —
Внутреннее управление PI для скорости вращения тангажа —
Внешний пропорциональный цикл управляет для крена —
Внутреннее управление PI для скорости вращения крена —
Управление ПИДом для высоты —
Заданное изменение параметра, rotor4ThrustGain
= 0, генерирует модель для одного отказа ротора. Измените настраивающиеся цели примениться к модели отказа вместо номинальной модели. Цикл управления рыскания собирается открыться для всех настраивающих целей, потому что с потерей тяги к одному ротору диагональные пары ротора являются несбалансированными, и рыскание неконтролируемо. Желаемая постоянная времени для StepTracking - Altitude
настройка цели изменяется к 2 секундам, который уменьшает приземляющуюся скорость мультивертолета.
Дважды кликните, чтобы открыть и изменить каждую цель под Настраивающимися Целями в Браузере Данных. В качестве альтернативы используйте контроллер Мелодии ярлыка для отказа ротора в проекте запустить Control System Tuner с предварительно сконфигурированным файлом сеанса.
Нажмите Tune, чтобы повторно настроить параметры на основе модели отказа. Как замечено в следующих графиках, маленькие перерегулирования и колебания существуют в переходном процессе продольного и поперечного крена в результате отказа ротора.
Настроенные усиления контроллера для объекта с одним отказом ротора:
Внешний пропорциональный цикл управляет для тангажа —
Внутреннее управление PI для скорости вращения тангажа —
Внешний пропорциональный цикл управляет для крена —
Внутреннее управление PI для скорости вращения крена —
Управление ПИДом для высоты —
Имитационная модель реализует подсистему обнаружения отказа, которая извлекает функции из команд привода и устанавливает порог, чтобы обнаружить отказ в роторе 4. Индикатор обнаружения отказа используется в качестве переменной планирования для запланированных на усиление контроллеров в цикле отношения и высотном цикле. Кроме того, тангаж, крен и высотные входные параметры ссылки реконфигурированы, чтобы управлять, чтобы мультивертолет приземлился с безопасной скоростью.
load_system("MultirotorModel"); open_system("MultirotorModel/Inner Loop and Plant Model/High-FidelityModel_RotorFault");
Запланированные на усиление контроллеры реализованы с помощью блока Varying PID Controller и блоков Интерполяционной таблицы, чтобы задать усиления, как показано для контроллера скорости вращения тангажа. Обновите коэффициенты усиления, вычисленные в предыдущем разделе в табличных данных блоков, заданных в точках останова номинальной операции (0) и отказа (1).
Точно так же обновите коэффициенты усиления для остающихся контроллеров.
В качестве альтернативы можно установить параметры блоков с помощью следующих команд. Если вы изменяете какую-либо настраивающую цель, заменяете введенные значения на ваши настроенные значения усиления контроллера.
Установите контроллер тангажа параметры можно следующим образом.
set_param(['MultirotorModel/Inner Loop and Plant Model/High-FidelityModel_RotorFault/' ... 'Controller/Controller/Attitude Controller/Gain_PitchAngle'],'TableData','[9.669, 11.02]'); set_param(['MultirotorModel/Inner Loop and Plant Model/High-FidelityModel_RotorFault/' ... 'Controller/Controller/Attitude Controller/PI Pitch/Kp'],'TableData','[0.004296, 0.006416]'); set_param(['MultirotorModel/Inner Loop and Plant Model/High-FidelityModel_RotorFault/' ... 'Controller/Controller/Attitude Controller/PI Pitch/Ki'],'TableData','[0.01, 0.01]');
Установите контроллер крена параметры можно следующим образом.
set_param(['MultirotorModel/Inner Loop and Plant Model/High-FidelityModel_RotorFault/' ... 'Controller/Controller/Attitude Controller/Gain_RollAngle'],'TableData','[9.572, 11.42]'); set_param(['MultirotorModel/Inner Loop and Plant Model/High-FidelityModel_RotorFault/' ... 'Controller/Controller/Attitude Controller/PI Roll/Kp'],'TableData','[0.003493, 0.005209]'); set_param(['MultirotorModel/Inner Loop and Plant Model/High-FidelityModel_RotorFault/' ... 'Controller/Controller/Attitude Controller/PI Roll/Ki'],'TableData','[0.01, 0.01]');
Установите высотный контроллер параметры можно следующим образом.
set_param(['MultirotorModel/Inner Loop and Plant Model/High-FidelityModel_RotorFault/' ... 'Controller/Controller/gravity feedforward//equilibrium thrust/Kp'],'TableData','[3.004, 1.667]'); set_param(['MultirotorModel/Inner Loop and Plant Model/High-FidelityModel_RotorFault/' ... 'Controller/Controller/gravity feedforward//equilibrium thrust/Ki'],'TableData','[0.01, 0.01]'); set_param(['MultirotorModel/Inner Loop and Plant Model/High-FidelityModel_RotorFault/' ... 'Controller/Controller/gravity feedforward//equilibrium thrust/Kd'],'TableData','[3.308, 4.098]');
Используйте модель Simulate с ярлыком проекта внесения неисправности, чтобы симулировать модель к взлету и управлять мультивертолетом на основе команд положения от подсистемы логики руководства. Отказ ротора введен в 30 секунд путем сокращения тяги ротора до 30%. Результаты для высотного положения (верхняя строка) и отношение (средняя строка) в Инспекторе Данных моделирования показывают, что UAV обосновывается к в 5% его желаемой высоты и имеет сглаженный продольный и поперечный крен, чтобы позволить ему отследить положения X и Y. Нижний ряд показывает команды привода для этих четырех роторов.
Когда ротор перестал работать в 30 секунд, UAV начинает делать подачу и прокручиваться. Контроллер реконфигурирован, когда отказ обнаруживается. Продольным и поперечным креном управляют, чтобы обосноваться в 0 радианах и землях UAV при поддержании низкой скорости. Как ожидалось рыскание неконтролируемо, и UAV действительно разворачивает вертикальную ось. Максимальный уровень рыскания, что пределы UAV проверяются посредством симуляции и контроллеров отношения и высоты, повторно настраивается с модифицированными настраивающими целями при необходимости.
UAV визуализируется в фотореалистической среде и показывает UAV, летящий в реалистическом мире. Когда симуляция запускается, нажмите 'F'
установить режим камеры на Free
в AutoVrtlEnv
окно и использование колесико прокрутки мыши, чтобы увеличить расстояние камеры от UAV. Используя эти средства управления, можно визуализировать приземляющуюся последовательность после отказа ротора.
Следующий график показывает переходным процессам после вхождения отказа в 30 секунд.
Закройте проект.
close(prj);