В этом примере показано, как настроить модель Simulink® для устойчивой настройки против неопределенности параметра. Устойчивый контроллер, настраивающийся или устойчивый синтез контроллера для системы, смоделированной в Simulink, требуют линеаризации модели, таким образом, что программное обеспечение принимает неопределенность параметра во внимание. Выполнение так требует замены блока (Simulink Control Design) для линеаризации, чтобы заменить значение блоков, которые имеют неопределенность параметра неопределенными параметрами или системами.
В этом примере вы настраиваете модель системы массового пружинного демпфера для устойчивой настройки, где физические параметры системы сомнительны. Пример показывает, как настроить модель для устойчивого настраивающего программного обеспечения использования, такого как Control System Tuner или systune
для slTuner
. Это также показывает, как извлечь неопределенную систему, чтобы использовать для устойчивого проектирования контроллера с musyn
.
Откройте модель Simulink rct_mass_spring_damper
.
open_system('rct_mass_spring_damper')
Эта модель представляет систему для управления массово-пружинной системой демпфера следующего рисунка.
В этой системе приложенная сила F является входом объекта. ПИД-регулятор генерирует силу, необходимую, чтобы управлять массовым положением x. Когда массовый m, ослабляющий постоянный c и коэффициент упругости k фиксируется и известен, настройка коэффициентов ПИДа для желаемой эффективности является прямой. На практике, однако, параметры физической системы могут быть сомнительными. Можно использовать Control System Tuner или systune
настроить систему надежно против неопределенности и достигнуть удовлетворительной эффективности в области значений ожидаемых значений для этих параметров.
Модель сконфигурирована, чтобы использовать номинальные или самые вероятные значения физических параметров, m = 3, c = 1, и k = 2. Чтобы настроить систему против неопределенности в этих параметрах, задайте неопределенность параметра в модели.
Во-первых, создайте сомнительный действительный (ureal
) параметры для каждой этих трех неопределенности. В данном примере задайте неопределенность как изменение процента от номинальной стоимости.
m_un = ureal('m',3,'Percentage',40); c_un = ureal('c',1,'Percentage',20); k_un = ureal('k',2,'Percentage',30);
Чтобы задать эту неопределенность в модели, используйте замену блока. Блокируйтесь замена позволяет вам задать линеаризацию конкретного блока в модели Simulink. В модели щелкните правой кнопкой по Spring Stiffness
блокируйтесь в модели и выберите Linear Analysis> Specify Selected Block Linearization.
В диалоговом окне Block Linearization Specification проверяйте Specify block linearization using one of the following и введите k_un
в текстовом поле. Нажмите OK.
Когда вы используете Control System Tuner для этой модели, программное обеспечение линеаризует модель и настраивает настраиваемые параметры с помощью той линеаризации, чтобы вычислить отклики системы. Определение k_un
как линеаризация Spring Stiffness
блок заставляет программное обеспечение использовать неопределенный параметр в качестве линеаризовавшего значения блока вместо его номинальной стоимости, которая является постоянным, фиксированным усилением 2.
Поскольку неопределенные параметры в этой модели, такие как пружинная жесткость, реализованы как скалярные блоки усиления, используйте простое ureal
параметр как замена блока. Для более комплексных блоков создайте a uss
модель, которая представляет неопределенное значение целого блока.
Примечание
Используйте замену блока, чтобы задать неопределенность в блоке, даже если блок Uncertain LTI System
блок. Если вы явным образом не задаете неопределенное значение как замену блока, Control System Tuner и slTuner
используйте номинальную стоимость при линеаризации Uncertain LTI System
блоки.
Таким же образом задайте c_un
как линеаризация блока для Damping
блок. Для Mass
блокируйтесь, в диалоговом окне Block Linearization Specification, введите 1/m_un
как неопределенное значение, потому что усиление этого блока является инверсией массы.
Можно теперь открыть Control System Tuner для модели, создать настраивающиеся цели и настроить модель. Когда вы делаете так, Control System Tuner настраивает параметры контроллера, чтобы оптимизировать эффективность в целой области значений неопределенности. Целевые настройкой графики и графики отклика в Control System Tuner отображают множественные ответы, вычисленные наугад значения неопределенных параметров, как показано.
Эта выборка обеспечивает общий смысл области значений возможных ответов, но не обязательно отражает истинный ответ худшего случая.
slTuner
Когда вы используете slTuner
для настройки командной строки можно задать неопределенность в модели с помощью диалогового окна Block Linearization Specification. В качестве альтернативы можно задать неопределенные замены блока, не изменяя модель. Для этого используйте структуру замены блока, когда вы создадите slTuner
интерфейс. Например, создайте структуру замены блока для rct_mass_spring_damper
модель.
blocksubs(1).Name = 'rct_mass_spring_damper/Mass'; blocksubs(1).Value = 1/m_un; blocksubs(2).Name = 'rct_mass_spring_damper/Damping'; blocksubs(2).Value = c_un; blocksubs(3).Name = 'rct_mass_spring_damper/Spring Stiffness'; blocksubs(3).Value = k_un;
Используйте эту структуру, чтобы получить slTuner
взаимодействуйте через интерфейс к модели с неопределенными значениями.
UST0 = slTuner('rct_mass_spring_damper','Controller',blocksubs);
Можно теперь создать настраивающиеся цели и настроить модель. systune
настраивает систему, чтобы оптимизировать эффективность в целой области значений неопределенности. Для примера, иллюстрирующего этот устойчиво настраивающийся рабочий процесс с slTuner
, смотрите Устойчивую Настройку Системы Массового Демпфера Spring.
uss
Модель объекта управления для устойчивого проектирования контроллера с musyn
musyn
команда синтезирует устойчивый контроллер для объекта, принимающего настройку управления LFT.
Отображение этой структуры к модели Simulink,
w является ссылочным входом r
, выход блока Step.
u является управляющим сигналом F
, выход блока PID Controller.
z является объектом выход x
, выход блока Integrator.
y является сигналом измерения, который является входом контроллера или выходом блока Sum.
Используйте эти сигналы с getIOTransfer
(Simulink Control Design) команда, чтобы извлечь объект P из slTuner
интерфейс UST0
. Для этого UST0
должны были задать аналитические точки в каждом из этих местоположений. Исследуйте аналитические точки UST0
.
getPoints(UST0)
ans = 2×1 cell array {'rct_mass_spring_damper/Step/1[r]' } {'rct_mass_spring_damper/Integrator/1[x]'}
Уже существуют аналитические точки для w и z. Добавьте аналитические точки для u и y.
addPoint(UST0,{'Sum1','Controller'}); getPoints(UST0)
ans = 4×1 cell array {'rct_mass_spring_damper/Step/1[r]' } {'rct_mass_spring_damper/Integrator/1[x]'} {'rct_mass_spring_damper/Sum1/1' } {'rct_mass_spring_damper/Controller/1[F]'}
Можно теперь извлечь модель объекта управления P для настройки с musyn
. Используйте имена сигнала аналитической точки, показанные в скобках в выходе getPoints
, задавать вводы и выводы P. Для аналитических точек, которые не имеют имен сигнала, используйте имя блока.
Pg = getIOTransfer(UST0,{'r','F'},{'x','Sum'});
getIOTransfer
возвращает genss
модель. В этом случае, потому что Pg
исключает блок контроллера, Pg
genss
модель с неопределенными блоками только. Преобразуйте Pg
к uss
для проектирования контроллера с musyn
.
P = uss(P)
P = Uncertain continuous-time state-space model with 2 outputs, 2 inputs, 3 states. The model uncertainty consists of the following blocks: c: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences k: Uncertain real, nominal = 2, variability = [-30,30]%, 1 occurrences m: Uncertain real, nominal = 3, variability = [-40,40]%, 1 occurrences Type "P.NominalValue" to see the nominal value, "get(P)" to see all properties, and "P.Uncertainty" to interact with the uncertain elements.
Можно теперь использовать musyn
спроектировать устойчивый контроллер для P. Например, чтобы спроектировать неструктурированный устойчивый контроллер, обратите внимание, что P имеет один сигнал измерения и один управляющий сигнал, и используйте следующую команду.
[K,CLperf,info] = musyn(P,1,1);
В качестве альтернативы спроектируйте ПИД-регулятор фиксированной структуры, как в исходной модели Simulink.
C0 = tunablePID('K','PID'); CL0 = lft(P,C0); [CL,CLperf,info] = musyn(CL0);
Для получения дополнительной информации об устойчивом проектировании контроллера, смотрите musyn
.
musyn
| systune
| getIOTransfer
(Simulink Control Design) | slTuner
(Simulink Control Design) | systune (for slTuner)
(Simulink Control Design)