В этом примере показано, как использовать системы управления Toolbox™ и Simulink ® Control Design™ для взаимодействия с Simulink для разработки цифрового управления тангажем самолета. В этом примере мы разработаем контроллер, который позволит самолету работать под большим углом атаки с минимальной рабочей нагрузкой пилота.
Наш пример показывает вам первый проход при проектировании цифрового автопилота для большого угла атаки контроллера. Чтобы выполнить все действия в этом примере, необходимо иметь панель инструментов системы управления, Coder™ Simulink Control Design, Simulink и Simulink ®. Если у вас нет всех этих продуктов, вы по-прежнему можете запускать части примера в режиме выполнения ячеек редактора MATLAB ®.
Ниже представлена модель самолета Simulink. Системы управления в блоке Controllers могут быть переключены в модели, чтобы вы могли видеть аналоговый ответ и затем переключаться на конструкцию, созданную с помощью объектов линейного инварианта времени (LTI) панели инструментов системы управления. Также включен контроллер, который представляет собой дискретную реализацию аналоговой конструкции, которая подобна алгоритму, который переходит в бортовой бортовой компьютер. Уделите несколько минут изучению модели.



Рисунок 1: Имитационная модель системы управления полетом самолета.
Модель может линеаризоваться, используя Линейный Аналитический Инструмент, запущенный из модели slexAircraftPitchControlAutopilot Simulink. В редакторе Simulink на вкладке «Приложения» в разделе «Системы управления» выберите «Линеаризатор модели».
Для справки введите help slcontrol или help linearSystemAnalyzer или ознакомьтесь с документацией по продукту Control System Toolbox и Simulink Control Design.
Откройте модель slexТД ControlAutopilot.
Для просмотра параметров линеаризованной модели:
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, которые можно использовать для разработки линейной модели:
Объекты State Space (SS), Transfer Function (TF) и ZPG (Zero-Pole-Gain).
Переменная contap является объектом State Space. Затем можно получить один из других типов с помощью других команд. При создании объекта в MATLAB им можно управлять с помощью таких операций, как *, +, - и т.д. Это называется «перегрузкой» операторов MATLAB. Попробуйте создать собственный объект и посмотрите, что происходит при добавлении, умножении и т. д. с контактирующим объектом.
Чтобы увидеть, что именно хранится в объекте LTI, введите get (contap) или contap. Например, InputName.
Для просмотра функций передачи нуля/полюса/усиления:
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 (COntinuous AutoPilot).
При первой попытке создания цифрового автопилота будет использоваться удержание нулевого порядка со временем выборки 0,1 секунды. Обратите внимание, что дискретный объект поддерживает тип (ss, tf или zpk).
Из графика Боде ниже ясно, что системы не совпадают по фазе от 3 рад/с до половины частоты выборки (вертикальная черная линия) для входа пилотной палочки и датчика угла атаки. Эта конструкция имеет более низкий отклик, чем аналоговая система. Перейдите к модели Simulink и запустите моделирование (убедитесь, что вы видите окна области). Во время выполнения моделирования дважды щелкните на ручном переключателе с меткой 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: Схема Bode, сравнивающая аналоговые контроллеры и контроллеры ZOH.
Теперь попробуйте использовать различные методы преобразования. Вы можете использовать трансформацию Тастина. В окне команд введите команды, указанные выше.
Должно быть ясно, что системы все еще не совпадают в фазе от 3 рад/сек до половины частоты выборки, преобразование Тустина делает лучше. При моделировании используется проектируемый объект LTI. Чтобы увидеть, как объект используется в подсистеме Контроллеры, используйте браузер или дважды щелкните значок. Блок LTI извлекает объект LTI из рабочей области. Имя объекта, используемого в блоке, можно изменить на любой объект LTI в рабочей области.
Попробуйте использовать «discap1», дискретизацию Tustin аналогового дизайна:
discap1 = c2d(contap,0.1,'tustin');
bode(contap,discap,discap1)

Рисунок 4: Блок-схема сравнения аналоговых и 0,1-секундных контроллеров Tustin.
Преобразование Тустина работает лучше, чем удержание нулевого порядка из анализа до сих пор. Время выборки 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-секундных контроллеров Tustin.
Теперь, когда мы имеем то, что кажется работоспособной конструкцией, мы должны реализовать ее в форме, которая будет включать некоторые необходимые элементы, которые были проигнорированы в линейном анализе. Например, если вы посмотрите на аналоговый автопилот, который находится в подсистеме контроллеров, вы увидите некоторую логику, которая останавливает работу интегратора при насыщении исполнительного механизма:
Откройте подсистему AnalogControl.

Рис. 6. Подсистема AnalogControl.
Разработка интегратора - это лишь один из практических вопросов, который необходимо решить. Другой проблемой является необходимость устранения совмещенных высокочастотных сигналов, которые могут поступать в точки измерения. Эти совмещенные сигналы могут быть предотвращены путем задания аналоговых фильтров перед блоками выборки и хранения (ZOH), которые моделируют устройства аналого-цифрового преобразователя (АЦП), обычно используемые для измерения сигналов во встроенном приложении. Кроме того, фильтры в цифровой секции автопилота работают с более высокой частотой дискретизации, чем компенсатор, для подачи кондиционированного сигнала на компенсатор. Аналоговые фильтры необходимы, потому что, как только сигнал наложен, нет возможности отделить действительное внутриполосное частотное содержание от сглаженного содержания.
Этот новый контроллер называется Digital Control. Фильтры имеют время выборки deltat1 (устанавливается равным 1/10 дельтата). Блоки хранения нулевого порядка определяют эти времена выборки для различных дочерних блоков посредством наследования времени выборки.
Переключатели в модели slexExERControlExample устанавливаются таким образом, чтобы можно было переключаться между аналоговым автопилотом, цифровым объектом LTI и цифровым автопилотом, который может быть реализован с помощью программного обеспечения.
Попробуйте еще раз смоделировать систему и переключиться между тремя конструкциями автопилота. Вы должны видеть, что на конструкции существенно не влияет, какой автопилот активен. Также можно увеличить амплитуду порыва ветра и убедиться, что сглаживающие фильтры работают удовлетворительно. Чтобы увеличить амплитуду порыва, откройте подсистему Dryden Wind Gust и измените (двойным щелчком на значке) дисперсию шума белого шума, который управляет имитацией порыва.
Откройте подсистему DigityControl.

Рис. 7: Подсистема цифрового управления.
Исполнительные механизмы в модели Simulink используют блок Variant Subsystems для представления нескольких реализаций исполнительного механизма, где только одна реализация активна во время моделирования. Для просмотра различных реализаций исполнительного механизма дважды щелкните по блоку «Подсистема исполнительного механизма варианта».
Чтобы изменить моделирование, используйте нелинейный исполнительный механизм вместо линейного. Для этого выберите в контекстном меню блок «Вариант» > «Переопределить».
Обратите внимание, что Simulink должен быть остановлен, чтобы перенастроить выбор привода. Следует также отметить, что нелинейный привод имеет насыщения по положению и скорости.

Рис. 8: Вариант подсистемы для исполнительных механизмов
Дизайн автопилота может быть преобразован во встраиваемый код с помощью Simulink Coder. Отдельная модель цифрового автопилота, slexAircraftPitchControlDAP, открыта ниже; он был кодирован в автономную программу на основе хоста с помощью Simulink Coder и компилятора, указанного с помощью конфигурации mex -setup. Результаты моделирования могут использоваться в качестве основы проверки функциональной правильности созданного кода.
Исполняемый файл, полученный в результате создания и компиляции кода, является slexCAXControlDAP.exe. При его создании его можно запустить из командной строки оболочки OS (DOS) непосредственно или из MATLAB путем ввода:
>>! slexAircraftPitchControlDAP.exe
Исполняемая программа создает файл с именем slexTalkControlDAP.mat, который можно загрузить, набрав load slexTalkControlDAP.
Две переменные, называемые rt_tout и rt_yout, будут находиться в рабочей области, и их отклонение от базовой линии моделирования может быть выведено на печать. Обратите внимание, что отклонение фактически равно нулю для этой модели на этом хосте. В более сложных вычислениях следует ожидать небольшой цифровой дисперсии из-за различных оптимизаций компилятора и использования промежуточных регистровых переменных, имеющих более высокую точность, чем 64-битный формат хранения двойника. Следует изучить значительные отклонения, поскольку они могут указывать на проблему стабильности числовых значений в алгоритмах модели, ошибку компилятора или библиотеки времени выполнения или другие проблемы.
Откройте модель slexТД ControlDAP.


Рис. 9: Сравнение результатов моделирования и генерации кода.
Ниже приведена временная характеристика конструкции цифрового контроллера тангажа большого угла режима атаки:

Рис. 10: Ответ конструкции цифрового управления тангажем самолета.
Дальнейшая работа над этой конструкцией может включать в себя включение и анализ большего количества реальных эффектов на компенсаторе, таких как влияние динамики сглаживающего фильтра и задержки вычислений встроенного цифрового компьютера на общую «установку», наблюдаемую цифровыми вычислениями. Комбинация реальной установки, вычислительной задержки, сглаживающих фильтров и задержки выборки и удержания является лишь несколькими дополнительными элементами, которые могут повлиять на конструкцию параметров цифрового компенсатора.