Этот пример показывает, как использовать 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 системы управления полета.
Модель может линеаризоваться в менеджере по Инструментам Управления и Оценки, запущенном из модели slexAircraftPitchControlAutopilot Simulink. В меню Analysis выберите Control Design> Linear Analysis.
Когда менеджер по Инструментам Управления и Оценки откроется, выберите рабочую точку и нажмите кнопку Linearize Model. Средство просмотра LTI может быть создано, показав график шага линеаризации. Чтобы просмотреть вокруг Средства просмотра LTI, щелкните правой кнопкой мыши по окну графика, чтобы видеть ваши опции.
Для справки тип помогают slcontrol или помогают ltiview или смотрят на 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 Привода, чтобы просмотреть различные реализации привода.
Чтобы внести изменение симуляции, используйте нелинейный привод вместо линейного. Можно сделать это при помощи контекстного меню "Variant> Override using" Различного блока 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: Ответ самолета Цифровая Система управления Подачи.
Дальнейшая работа над этим проектом может включать слияние и анализ большего количества реальных эффектов на компенсатор, таких как эффект динамики фильтра сглаживания и вычислительная задержка встроенного компьютера на полном "объекте", замеченном цифровыми вычислениями. Комбинация действительного объекта, вычислительной задержки, фильтров сглаживания и задержки выбирать-и-содержать является всего несколькими дополнительных элементов, которые могут влиять на проект цифровых параметров компенсатора.