hinfstruct

H ∞ настройка контроллеров с фиксированной структурой

Описание

hinfstruct команда расширяет классический синтез H ∞ ( см.hinfsyn) к системам управления с фиксированной структурой. Если вы незнакомы с построением утяжеляющих функций для захвата проектных требований к синтезу H , используйте systune или looptune вместо этого.

пример

CL = hinfstruct(CL0) настраивает свободные параметры настраиваемого genss модели CL0. Эта настройка минимизирует H ∞ норму передаточной функции с обратной связью, смоделированной CL0. Модель CL0 представляет систему управления с обратной связью, которая включает настраиваемые компоненты, такие как контроллеры или фильтры. CL0 могут также включать функции взвешивания, которые захватывают требования проекта.

пример

[CL,gamma,info] = hinfstruct(CL0) возвращает gamma (минимальная H ∞ норма) и структура данных info с дополнительной информацией о каждом прогоне оптимизации.

пример

[CL,gamma,info] = hinfstruct(CL0,options) задает дополнительные опции для оптимизатора используя hinfstructOptions.

[C,gamma,info] = hinfstruct(P,C0,options) настраивает блоки параметрических контроллеров C0. Эта настройка минимизирует H ∞ норму системы с обратной связью   CL0 = lft(P,C0). Чтобы использовать этот синтаксис, выразите свою систему управления и требования к проектированию как модель Standard Form, как на следующем рисунке.

Standard LFT structure for H-infinity synthesis. The plant, P, has inputs {w,u} and outputs {z,y}. The controller, with inputs y and outputs u, is in block-diagonal form where the diagonal elements C1, C2, …, CN are tunable.

P является числовой моделью LTI, которая включает фиксированные элементы архитектуры управления. P могут также включать функции взвешивания, которые захватывают требования проекта. C0 может быть одним настраиваемым компонентом (для примера, Система управления Блока или genss модель) или массив ячеек из нескольких настраиваемых компонентов. C является параметрической моделью или массивом ячеек параметрических моделей того же типа или типов, как C0.

Примеры

свернуть все

Настройте элементы контроллера следующей системы управления.

Элементы управления C, который является PI контроллер с двумя свободными параметрами и F, который является lowpass фильтром в пути обратной связи с одним свободным параметром. В данном примере загружает объект G, модель девятого порядка сборки головного диска (HDA) в жестком диске.

load hinfstruct_demo G
bode(G), grid

Figure contains 2 axes. Axes 1 with title From: u To: y contains an object of type line. This object represents G. Axes 2 contains an object of type line. This object represents G.

Настройте свободные параметры этой системы управления так, чтобы положение головки y отслеживает изменение шага r со временем отклика около 1 мс, мало или нет перерегулирования и без статической ошибки.

Сначала создайте настраиваемые элементы. Использование tunablePID объект, чтобы параметризовать блок PI и задать фильтр F0 как передаточная функция в зависимости от настраиваемого реального параметра a.

C0 = tunablePID('C','pi');  

a = realp('a',1); 
F0 = tf(a,[1 a]);

F0 является genss модель.

Затем выразите цели проекта как веса на модели объекта управления и добавьте их к системе с обратной связью. По причинам, подробно описанным в синтезе H-бесконечности фиксированной структуры с hinfstruct, следующее строение весовых функций достигает проектных требований к этой задаче.

Здесь, LS - желаемая форма разомкнутого контура отклика L(s)=F(s)G(s)C(s).

wc = 1000;  % target crossover
s = tf('s');
LS = (1+0.001*s/wc)/(0.001+s/wc);

Как обсуждалось в Синтезе H-бесконечности фиксированной структуры с hinfstruct, требования к проекту удовлетворяются, если Η норма этой структуры управления меньше 1.

Использование connect чтобы создать genss модель, представляющая эту структуру управления.

% Label the block I/Os
Wn = 1/LS;  Wn.u = 'nw';  Wn.y = 'n';
We = LS;    We.u = 'e';   We.y = 'ew';
C0.u = 'e';   C0.y = 'u';
F0.u = 'yn';  F0.y = 'yf';

% Specify summing junctions
Sum1 = sumblk('e = r - yf');
Sum2 = sumblk('yn = y + n');

% Connect the blocks together
T0 = connect(G,Wn,We,C0,F0,Sum1,Sum2,{'r','nw'},{'y','ew'});

Теперь можно использовать hinfstruct для поиска настроенных значений настраиваемых параметров в C0 и F0 которые минимизируют Η норма T0. Чтобы уменьшить риск нахождения локальных минимумов, запустите шесть оптимизаций, начатых с рандомизированных начальных значений для C0 и F0. The RandomStart опция hinfstructOptions задает, сколько дополнительных оптимизаций будет выполняться сверх заданного по умолчанию.

rng('default')
opt = hinfstructOptions('Display','final','RandomStart',5);
T = hinfstruct(T0,opt);
Final: Peak gain = 3.88, Iterations = 67
Final: Peak gain = 597, Iterations = 191
       Some closed-loop poles are marginally stable (decay rate near 1e-07)
Final: Peak gain = 108, Iterations = 49
       Some closed-loop poles are marginally stable (decay rate near 1e-07)
Final: Peak gain = 1.91, Iterations = 91
Final: Peak gain = 1.56, Iterations = 97
Final: Peak gain = 1.56, Iterations = 94

Лучший коэффициент усиления в системе с обратной связью составляет около 1,56, поэтому ограничение T<1 почти удовлетворен. The hinfstruct команда возвращает настроенную передачу с обратной связью T(s). Чтобы подтвердить проект, постройте график настроенного отклика без разомкнутого контура L = F*G*C и сравните его с формой целевого цикла LS. Для вычисления L, использовать getBlockValue чтобы получить настроенное значение C(s) и использовать getValue для оценки фильтра F(s) для настроенного значения a.

C = getBlockValue(T,'C');
F = getValue(F0,T.Blocks);  % Propagate tuned parameters from T to F

L = G*C*F;
bode(LS,'r--',G*C*F,'b',{1e1,1e6}), grid, 
title('Open-Loop Response'), legend('Target','Actual')

Figure contains 2 axes. Axes 1 with title From: yn To: y contains 2 objects of type line. These objects represent Target, Actual. Axes 2 contains 2 objects of type line. These objects represent Target, Actual.

Частоты среза 0 дБ и общая форма цикла соответствуют ожидаемым. Для последующего анализа результата смотрите Fixed-Structure H-infinity Synthesis с hinfstruct.

Входные параметры

свернуть все

Система с обратной связью с настраиваемыми элементами, заданная как genss модель. Эта модель описывает передаточную функцию системы управления с обратной связью, включающую соответствующие функции взвешивания на входах и выходах объекта для захвата ваших проектных требований. Для получения дополнительной информации о выборе весов для H ∞ настройки смотрите Формулировка требований проект как ограничения H-бесконечности .

CL0 включает в себя как фиксированные, так и настраиваемые компоненты системы управления. Вы представляете настраиваемые компоненты системы управления, используя настраиваемые блоки проекта системы управления, которые хранятся в CL0.Blocks свойство genss модель. Для получения дополнительной информации о построении этой обобщенной модели смотрите Сборка Настраиваемой Модели Замкнутой Системы для Настройки с помощью hinfstruct. hinfstruct настраивает настраиваемые элементы CL0 для минимизации H нормы.

Фиксированные элементы архитектуры управления, заданные как числовая модель LTI, такая как пространство состояний (ss) модель. P - объект (наряду с любыми функциями взвешивания для захвата проекта требований), который является результатом выражения вашей системы в стандартной форме, втягивания любых настраиваемых элементов в блок-диагональный контроллер, как показано на следующей схеме.

Standard LFT structure for H-infinity synthesis. The plant, P, has inputs {w,u} and outputs {z,y}. The controller, with inputs y and outputs u, is in block-diagonal form where the diagonal elements C1, C2, …, CN are tunable.

Можно получить P двумя способами:

  • В MATLAB®, моделируйте фиксированные элементы вашей системы управления как числовые модели LTI. Затем используйте функции создания блок-схем (такие как connect и feedback) для создания P из смоделированных компонентов. Кроме того, включите любые функции взвешивания, которые представляют ваши требования к проектированию.

  • Если у вас есть Simulink® модель вашей системы управления и иметь Simulink Control Design™, использовать linlft (Simulink Control Design), чтобы получить линейную модель фиксированных элементов вашей системы управления. linlft команда линеаризирует модель Simulink, исключая указанные блоки Simulink (блоки, которые представляют элементы контроллера, которые вы хотите настроить). Если вы используете функции взвешивания для представления ваших проектных требований, соедините их последовательно с линейной моделью вашего объекта для получения P.

P может быть моделью в непрерывном времени или дискретном времени. В дискретном времени необходимо задать шаг расчета (Ts ≠ -1) и должен совпадать со шагом расчета C0.

Настраиваемые элементы архитектуры управления в стандартном виде, заданные как одно из следующего:

  • Настраиваемый блок системы управления, такой как tunableSS, tunableGain, или tunablePID

  • Обобщенное пространство состояний (genss)

  • Массив ячеек, в котором каждая запись является настраиваемым блоком или genss модель

Для получения дополнительной информации и примеров создания настраиваемых моделей см. «Модели с настраиваемыми коэффициентами».

C0 может быть моделью непрерывного времени или дискретного времени, пока шаг расчета совпадает с моделью P.

Опции алгоритма, заданные как hinfstructOptions набор опций. Для получения информации о доступных опциях см. hinfstructOptions.

Выходные аргументы

свернуть все

Настроенная система с обратной связью, возвращенная как обобщенное пространство состояний (genss) модель. CL является настроенной версией CL0.

hinfstruct команда настраивает свободные параметры CL0 достижение минимальной H ∞ нормы. CL.Blocks содержит те же блоки проекта системы управления, что и CL0.Blocks, за исключением того, что в CLпараметры имеют настроенные значения.

Для доступа к настроенным значениям параметров используйте getValue. Вы также можете получить к ним доступ непосредственно в CL.Blocks.

Настроенные элементы контроллера, возвращенные как настраиваемый блок системы управления, genss модель или массив ячеек настраиваемых блоков или настраиваемых моделей. C возвращается в том же формате, что и C0, и содержит те же настраиваемые блоки, кроме тех, что в Cпараметры имеют настроенные значения.

Наилучшим H ∞ норма системы с обратной связью, возвращенная как положительный скаляр.

Когда вы устанавливаете hinfstructOptions опция RandomStarts к ненулевому значению, hinfstruct выполняет более одного запуски минимизации. В этом случае gamma - наименьшая H норма ∞, достигаемая во всех запусках.

Подробные результаты каждого прогона оптимизации, возвращенные как структура или массив структур, если hinfstructOptions опция RandomStarts является ненулевым. В этом случае каждая запись в массиве является структурой результатов для соответствующего запуска оптимизации. Поля info являются:

  • Objective - Минимальное H ∞ значение нормы для каждого запуска. Когда RandomStarts = 0, Objective = gamma.

  • Iterations - Количество итераций перед сходимостью для каждого запуска.

  • TunedBlocks - Настроенные блоки системы управления для каждого запуска. TunedBlocks отличается от C в этом C содержит только результат от лучшего запуска. Когда RandomStarts = 0, TunedBlocks = C.

Совет

  • hinfstruct связана с hinfsyn, который также использует H ∞ методы для разработки контроллера для объекта MIMO. Однако в отличие отhinfstruct, hinfsyn не накладывает ограничения на структуру и порядок контроллера. По этой причине, hinfsyn всегда возвращает меньшее gamma чем hinfstruct. Поэтому можно использовать hinfsyn получить нижнюю границу наилучшей достижимой эффективности.

  • Используя hinfstruct требует некоторого знакомства с H методами ∞. Необходимо выразить требования проект как функции взвешивания частот на входах и выходах объекта, как описано в Формулировании требований к проектированию как ограничения H-Infinity. Для более простого подхода к настройке фиксированной структуры используйтеsystune или looptune.

Алгоритмы

hinfstruct использует специализированные методы нескончаемой оптимизации для обеспечения устойчивости замкнутой системы и минимизации H нормы ∞ как функции настраиваемых параметров. Эти методы основаны на работе в [1].

hinfstruct вычисляет норму H∞ с помощью алгоритма [2] и сохраняющих структуру собственных преобразователей из библиотеки SLICOT. Дополнительные сведения о библиотеке SLICOT см. в разделе http://slicot.org.

Ссылки

[1] Apkarian, Pierre, and Dominikus Noll. Nonsmooth H∞ Synthesis (неопр.) (недоступная ссылка). Транзакции IEEE по автоматическому контролю, 51, № 1 (январь 2006 года): 71-86. https://doi.org/10.1109/TAC.2005.860290.

[2] Bruinsma, N. A., and Maarten Steinbuch. «Быстрый алгоритм вычисления H∞-Norm матрицы передаточных функций». Система управления Букв, 14, № 4 (1 апреля 1990): 287-93. https://doi.org/10.1016/0167-6911 (90) 90049-Z .

Расширенные возможности

Введенный в R2010b