В этом примере показано, как использовать Control System Toolbox™ и Simulink® Control Design™, чтобы взаимодействовать с Simulink, чтобы спроектировать цифровое управление тангажом для самолета. В этом примере мы спроектируем контроллер, чтобы разрешить самолету действовать под высоким углом нападения с минимальной экспериментальной рабочей нагрузкой.
Наш пример берет вас через первую передачу при разработке цифрового автопилота для высокого угла контроллера нападения. Чтобы запустить все в этом примере, у вас должны быть Control System Toolbox, Simulink Control Design, Simulink и Simulink® Coder™. Если у вас нет всех этих продуктов, можно все еще запустить фрагменты режима выполнения ячейки использования в качестве примера редактора MATLAB®.
Ниже модель Simulink самолета. Системы управления в блоке Controllers могут быть переключены в модель, чтобы позволить вам видеть аналоговый ответ и затем переключаться на проект, созданный с помощью объектов Линейного независимого от времени (LTI) Control System Toolbox. Контроллер также включен, который дискретная реализация аналогового проекта, который похож на алгоритм, который вошел бы во встроенный компьютер рейса. Займите некоторое время, чтобы исследовать модель.
Рисунок 1: модель Simulink системы управления полета.
Модель может линеаризоваться с помощью Linear Analysis Tool, запущенного из модели slexAircraftPitchControlAutopilot Simulink. В Редакторе Simulink, на вкладке Apps, под Системами управления, нажимают Model Linearizer.
Для справки тип помогают slcontrol или помогают linearSystemAnalyzer
или посмотрите на Control System Toolbox и документацию по продукту Simulink Control Design.
Откройте slexAircraftPitchControlAutopilot модель.
Просмотреть линеаризовавшие параметры модели:
apmdl = 'slexAircraftPitchControlAutopilot';
open_system(apmdl)
op = operpoint(apmdl);
io = getlinio(apmdl);
contap = linearize(apmdl,op,io)
contap = A = Alpha-sensor Pitch Rate L Proportional Stick Prefil Alpha-sensor -2.526 0 0 0 Pitch Rate L 0 -4.144 0 0 Proportional -1.71 0.9567 0 10 Stick Prefil 0 0 0 -10 B = Alpha Sensed Stick q Sensed Alpha-sensor 1 0 0 Pitch Rate L 0 0 1 Proportional 0 0 -0.8156 Stick Prefil 0 1 0 C = Alpha-sensor Pitch Rate L Proportional Stick Prefil Sum 2.986 -1.67 -3.864 -17.46 D = Alpha Sensed Stick q Sensed Sum 0 0 1.424 Continuous-time state-space model.
Рисунок 2: Исходный аналоговый автопилот.
Существует три типа объектов LTI, которые что можно использовать, чтобы разработать линейную модель:
Пространство состояний (SS), Передаточная функция (TF) и объекты Нулей, полюсов и усиления (ZPG).
Переменная contap является объектом State Space. Можно затем получить один из других типов с другими командами. Когда вы создаете объект в MATLAB, можно управлять им операции использования такой как *, +, - и т.д. Это называется, "перегружая" операторы MATLAB. Попытайтесь создать собственный объект и смотрите то, что происходит при добавлении, умножаясь, и т.д. с объектом contap.
Чтобы видеть точно, что хранится в объекте LTI, тип добирается (contap) или contap.InputName, например.
К передаточным функциям представления Zero/Pole/Gain:
contap = tf(contap); contap = zpk(contap)
contap = From input "Alpha Sensed" to output "Sum": 2.9857 (s+2.213) ---------------- s (s+2.526) From input "Stick" to output "Sum": -17.46 (s+2.213) ---------------- s (s+10) From input "q Sensed" to output "Sum": 1.424 (s+2.971) (s+2.213) ------------------------- s (s+4.144) Continuous-time zero/pole/gain model.
Теперь объект LTI будет использоваться, чтобы спроектировать цифровой автопилот, который заменит аналоговый автопилот. Аналоговая система закодирована в объект LTI, названный contap (Непрерывный AutoPilot).
Первая попытка создания цифрового автопилота будет использовать нулевой порядок, держатся одинаковых взглядов с шагом расчета 0,1 секунд. Обратите внимание на то, что дискретный объект обеспечивает тип (ss, tf, или zpk).
Это ясно из Диаграммы Боде ниже этого, системы не соответствуют в фазе от 3 рад/секунда до половины демонстрационной частоты (вертикальная черная линия) для экспериментального входа палки и угла датчика нападения. Этот проект имеет более плохой ответ, чем аналоговая система. Перейдите к модели Simulink и запуститесь, симуляция (убедитесь, что вы видите окна scope). Во время симуляции дважды кликните, ручной переключатель пометил Analog или Digital.
Симуляция проверяет вывод, сделанный путем интерпретации диаграммы Боде?
discap = c2d(contap, 0.1, 'zoh');
get(discap)
bode(contap,discap)
Z: {[0.8016] [0.8039] [2x1 double]} P: {[2x1 double] [2x1 double] [2x1 double]} K: [0.2943 -1.2458 1.4240] DisplayFormat: 'roots' Variable: 'z' IODelay: [0 0 0] InputDelay: [3x1 double] OutputDelay: 0 Ts: 0.1000 TimeUnit: 'seconds' InputName: {3x1 cell} InputUnit: {3x1 cell} InputGroup: [1x1 struct] OutputName: {'Sum'} OutputUnit: {''} OutputGroup: [1x1 struct] Notes: [0x1 string] UserData: [] Name: '' SamplingGrid: [1x1 struct]
Рисунок 3: аналог сравнения Диаграммы Боде и контроллеры ZOH.
Теперь попробуйте различные методы преобразования. Можно использовать преобразование Тастина. В командном окне вводят команды выше.
Должно быть ясно, что системы все еще не соответствуют в фазе от 3 рад/секунда до половины демонстрационной частоты, преобразование Тастина добивается большего успеха. Симуляция использует объект LTI, когда это спроектировано. Чтобы видеть, как объект используется взгляд в подсистеме Контроллеров при помощи браузера или путем двойного щелчка по значку. Блок LTI поднимает объект LTI с рабочей области. Можно поменять имя объекта, используемое в блоке к любому объекту LTI в рабочей области.
Попытайтесь использовать "discap1", дискретизацию Тастина аналогового проекта:
discap1 = c2d(contap,0.1,'tustin');
bode(contap,discap,discap1)
Рисунок 4: аналог сравнения Диаграммы Боде и 0,1 секунды контроллеры Тастина.
Тастин преобразовывает, выполняет лучше, чем нулевой порядок содержит от анализа до сих пор. Шаг расчета 0,1 секунд, кажется, является слишком медленным для дискретной системы, чтобы отследить эффективность аналоговой системы на половине демонстрационной частоты.
Теперь преобразуйте аналоговый проект с помощью Тастина, преобразовывают с 0,05 вторыми периодами расчета:
discap = c2d(contap,0.05,'tustin')
bode(contap,discap)
discap = From input "Alpha Sensed" to output "Sum": 0.074094 (z-0.8951) (z+1) ------------------------- (z-1) (z-0.8812) From input "Stick" to output "Sum": -0.36852 (z-0.8951) (z+1) ------------------------- (z-1) (z-0.6) From input "q Sensed" to output "Sum": 1.4629 (z-0.8617) (z-0.8951) ---------------------------- (z-1) (z-0.8123) Sample time: 0.05 seconds Discrete-time zero/pole/gain model.
Рисунок 5: аналог сравнения Диаграммы Боде и 0,05 секунды контроллеры Тастина.
Теперь, когда мы имеем то, что, кажется, осуществимый проект, мы должны реализовать его в форме, которая будет включать некоторые необходимые элементы, которые были проигнорированы в линейном анализе. Например, если вы посмотрите на аналоговый автопилот, который находится в подсистеме Контроллеров, вы будете видеть некоторую логику, которая мешает интегратору закончиться, когда привод насыщает:
Откройте подсистему AnalogControl.
Рисунок 6: подсистема AnalogControl.
Завершение интегратора является только одной из практических проблем, которой должна быть решена. Другой - потребность устранить искаженные высокочастотные сигналы, которые могли войти в точках измерения. Эти искаженные сигналы могут быть предотвращены путем определения аналоговых фильтров перед выборкой и содержать (ZOH) блоки, которые моделируют устройства аналого-цифрового конвертера (ADC), обычно используемые для измерения сигналов во встраиваемом приложении. Кроме того, фильтры в цифровом разделе автопилота действуют на более высокой частоте дискретизации, чем компенсатор, чтобы предоставить обусловленный сигнал компенсатору. Аналоговые фильтры необходимы, потому что, если сигнал искажается, нет никакого способа разделить допустимое внутриполосное содержимое частоты от искаженного содержимого.
Этот новый контроллер называется Цифровым управлением. Фильтры имеют шаг расчета deltat1 (набор, чтобы быть 1/10 deltat). Нулевой порядок содержит блоки, задают эти шаги расчета для различных нисходящих блоков посредством наследования шага расчета.
Переключатели в slexAircraftPitchControlExample модели настраиваются так, можно переключиться между аналоговым автопилотом, цифровым объектом LTI и цифровым автопилотом, который мог быть реализован с помощью программного обеспечения.
Попытайтесь симулировать систему снова и переключатель среди трех проектов автопилота. Необходимо видеть, что проекты не значительно затронуты, которым автопилот активен. Можно также увеличить амплитуду порыва ветра и проверить, что фильтры сглаживания работают удовлетворительно. Чтобы увеличить амплитуду порыва, откройте подсистему Порыва ветра Драйдена и изменение (путем двойного щелчка по значку) шумовое отклонение Белого шума, который управляет симуляцией порыва.
Откройте подсистему DigitalControl.
Рисунок 7: подсистема DigitalControl.
Приводы в модели Simulink используют блок Variant Subsystems, чтобы представлять несколько реализаций привода, где только одна реализация активна в процессе моделирования. Можно дважды кликнуть Различный блок Subsystem Привода, чтобы просмотреть различные реализации привода.
Чтобы внести изменение симуляции, используйте нелинейный привод вместо линейного. Можно сделать это при помощи Различного Варианта блока Subsystem> Переопределение с помощью контекстного меню.
Обратите внимание на то, что Simulink должен быть остановлен для того, чтобы реконфигурировать выбор привода. Необходимо также отметить, что нелинейный привод имеет насыщение на положении и уровне.
Рисунок 8: различная подсистема для приводов
Проект автопилота может быть преобразован во встраиваемый код с помощью Simulink Coder. Отдельная модель цифрового автопилота, slexAircraftPitchControlDAP, открыта ниже; это было закодировано в основанную на хосте автономную программу с помощью Simulink Coder, и компилятор задал использование mex - настройка настройки. Результаты симуляции могут использоваться в качестве базовой линии валидации для функциональной корректности сгенерированного кода.
Исполняемым файлом, следующим из генерации кода и компиляции, является slexAircraftPitchControlDAP.exe. Если вы создаете его, это может быть запущено от интерпретатора ОС (DOS) командная строка непосредственно или из MATLAB путем ввода:
>> !slexAircraftPitchControlDAP.exe
Исполняемая программа создает файл, названный slexAircraftPitchControlDAP.mat, который можно загрузить путем ввода загрузки slexAircraftPitchControlDAP.
Две переменные, названные rt_tout и rt_yout, будут в рабочей области, и их отклонение против базовой линии симуляции может быть построено. Обратите внимание на то, что отклонение является эффективно нулевым для этой модели на этом хосте. Некоторое небольшое числовое отклонение должно ожидаться в более комплексных вычислениях из-за отличающейся оптимизации компилятора и использования промежуточных регистровых переменных, имеющих выше точность, чем 64-битный формат устройства хранения данных двойного. Значительные отклонения должны быть исследованы, когда они могли указать на числовую проблему устойчивости в алгоритмах вашей модели, компиляторе или ошибке библиотеки времени выполнения или других проблемах.
Откройте slexAircraftPitchControlDAP модель.
Рисунок 9: Сравнение симуляции и результатов генерации кода.
Вот является ответ времени высокого угла режима нападения цифровым проектированием контроллера тангажа:
Рисунок 10: Ответ самолета Цифровая Система управления Тангажа.
Дальнейшая работа над этим проектом может включать слияние и анализ большего количества реальных эффектов на компенсаторе, таких как эффект динамики фильтра сглаживания и вычислительная задержка встроенного компьютера на полном "объекте", замеченном цифровыми расчетами. Комбинация действительного объекта, вычислительной задержки, фильтров сглаживания и задержки производить-и-содержать является всего несколькими дополнительных элементов, которые могут влиять на проект цифровых параметров компенсатора.