Робастность контроллера сервомотора для двигателя постоянного тока

В этом примере показано, как использовать неопределенные объекты в Robust Control Toolbox™, чтобы смоделировать неопределенные системы и оценить устойчивую устойчивость и устойчивую производительность с помощью аналитических инструментов робастности.

Структуры данных, по причине неопределенности моделируя

Robust Control Toolbox позволяет вам создать неопределенные элементы, такие как физические параметры, значения которых не известны точно и комбинируют эти элементы в неопределенные модели. Можно затем легко анализировать удар неопределенности на производительности системы управления.

Например, рассмотрите модель объекта управления

P(s)=γτs+1

где gamma может расположиться в интервале [3,5] и tau имеет среднее значение 0.5 с 30%-й изменчивостью. Можно создать неопределенную модель P (s), как в этом примере:

gamma = ureal('gamma',4,'range',[3 5]);
tau = ureal('tau',.5,'Percentage',30);
P = tf(gamma,[tau 1])
P =

  Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 1 states.
  The model uncertainty consists of the following blocks:
    gamma: Uncertain real, nominal = 4, range = [3,5], 1 occurrences
    tau: Uncertain real, nominal = 0.5, variability = [-30,30]%, 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.

Предположим, что вы спроектировали интегральный контроллер C для номинального объекта (gamma=4 и tau=0.5). Узнать как изменения gamma и tau влияйте на объект и производительность с обратной связью, сформируйте систему с обратной связью CLP от C и P.

KI = 1/(2*tau.Nominal*gamma.Nominal);
C = tf(KI,[1 0]);
CLP = feedback(P*C,1)
CLP =

  Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 2 states.
  The model uncertainty consists of the following blocks:
    gamma: Uncertain real, nominal = 4, range = [3,5], 1 occurrences
    tau: Uncertain real, nominal = 0.5, variability = [-30,30]%, 1 occurrences

Type "CLP.NominalValue" to see the nominal value, "get(CLP)" to see all properties, and "CLP.Uncertainty" to interact with the uncertain elements.

Постройте переходной процесс объекта и системы с обратной связью. step команда автоматически генерирует 20 случайных выборок неопределенных параметров gamma и tau и строит соответствующие переходные процессы.

subplot(2,1,1); step(P), title('Plant response (20 samples)')
subplot(2,1,2); step(CLP), title('Closed-loop response (20 samples)')

Рисунок 1: Переходные процессы объекта и моделей с обратной связью

Нижний график показывает, что система с обратной связью довольно устойчива несмотря на значительные колебания усиления DC объекта. Это - желательная и общая характеристика правильно спроектированной системы с обратной связью.

Пример двигателя постоянного тока с неопределенностью параметра и несмоделированной динамикой

Этот пример основывается на Отслеживании уставки в качестве примера двигателя постоянного тока с Изменениями Параметра (Control System Toolbox) путем добавления неопределенности параметра и несмоделированной динамики, чтобы исследовать робастность контроллера сервомотора к такой неопределенности.

Номинальная модель двигателя постоянного тока задана сопротивлением R, индуктивность L, эдс постоянный Kb, арматура постоянный Km, линейная аппроксимация вязкого трения Kf и инерционная загрузка J. Каждый из этих компонентов варьируется в определенной области значений значений. Константы сопротивления и индуктивности располагаются в ±40% их номинальной стоимости. Используйте ureal создать эти неопределенные параметры.

R = ureal('R',2,'Percentage',40);
L = ureal('L',0.5,'Percentage',40);

По физическим причинам, значениям Kf и Kb то же самое, даже если они сомнительны. В этом примере номинальная стоимость 0.015 с областью значений между 0,012 и 0.019.

K = ureal('K',0.015,'Range',[0.012 0.019]);
Km = K;
Kb = K;

Вязкое трение, Kf, имеет номинальную стоимость 0,2 с 50%-м изменением его значения.

Kf = ureal('Kf',0.2,'Percentage',50);

Электрические и механические уравнения

Ток в электрической схеме и крутящий момент применились к ротору, может быть выражен в терминах приложенного напряжения и угловой скорости. Создайте передаточную функцию H связь этих переменных, и делает AngularSpeed выход H для дальнейшего использования.

H = [1;0;Km] * tf(1,[L R]) * [1 -Kb] + [0 0;0 1;0 -Kf];
H.InputName = {'AppliedVoltage';'AngularSpeed'};
H.OutputName = {'Current';'AngularSpeed';'RotorTorque'};

Двигатель обычно управляет инерцией, динамические характеристики которой связывают прикладной крутящий момент со скоростью изменения угловой скорости. Для твердого тела это значение является константой. Более реалистическая, но неопределенная, сила модели содержит неизвестные ослабленные резонансы. Используйте ultidyn возразите, чтобы смоделировать неопределенную линейную независимую от времени динамику. Установите номинальное значение инерции твердого тела к 0,02, и мы включаем 15%-ю динамическую неопределенность в мультипликативную форму.

J = 0.02*(1 + ultidyn('Jlti',[1 1],'Type','GainBounded','Bound',0.15,...
   'SampleStateDim',4));

Неопределенная модель двигателя постоянного тока

Это - простой вопрос, чтобы связать AngularSpeed введите к RotorTorque выведите через неопределенную инерцию, J, использование lft команда. AngularSpeed введите равняется RotorTorque/(J*s). Поэтому используйте "положительную" обратную связь от третьего выхода до второго входа H устанавливать связь. Эта связь приводит к системе с одним входом (AppliedVoltage) и два выходных параметров (Current и AngularSpeed).

Pall = lft(H,tf(1,[1 0])/J);

Выберите только AngularSpeed выведите для остатка от анализа управления.

P = Pall(2,:)
P =

  Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 2 states.
  The model uncertainty consists of the following blocks:
    Jlti: Uncertain 1x1 LTI, peak gain = 0.15, 1 occurrences
    K: Uncertain real, nominal = 0.015, range = [0.012,0.019], 2 occurrences
    Kf: Uncertain real, nominal = 0.2, variability = [-50,50]%, 1 occurrences
    L: Uncertain real, nominal = 0.5, variability = [-40,40]%, 1 occurrences
    R: Uncertain real, nominal = 2, 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.

P одно вход, одно выход неопределенная модель двигателя постоянного тока. В аналитических целях используйте следующий контроллер.

Cont = tf(84*[.233 1],[.0357 1 0]);

Анализ разомкнутого цикла

Во-первых, сравните переходной процесс номинального двигателя постоянного тока с 15 выборками неопределенной модели двигателя постоянного тока. Используйте usample явным образом задавать количество случайных выборок.

clf
step(usample(P,15),P.NominalValue,3)
legend('Samples','Nominal')

Рисунок 2: переходной процесс Объекта

Точно так же сравните Предвещать ответ номинальных (красных) и произведенных (синих) неопределенных моделей двигателя постоянного тока.

bode(usample(P,15),P.NominalValue);
legend('Samples','Nominal')

Рисунок 3: Объект Предвещает ответ

Анализ робастности

В этом разделе анализируйте робастность контроллера двигателя постоянного тока. Номинальный анализ системы с обратной связью указывает, что обратная связь очень устойчива с 22 полями усиления дБ и 66 градусов запаса по фазе.

margin(P.NominalValue*Cont)

Рисунок 4: анализ робастности с обратной связью

diskmargin функция вычисляет находящиеся на диске запасы по амплитуде и фазе. Путем моделирования усиления и изменений фазы на всех частотах и во всей обратной связи, дисковые поля имеют тенденцию быть более точными оценками робастности, особенно в многоконтурных системах управления. Вычислите находящиеся на диске поля для цикла двигателя постоянного тока.

DM = diskmargin(P.NominalValue*Cont)
DM = struct with fields:
           GainMargin: [0.2792 3.5822]
          PhaseMargin: [-58.8054 58.8054]
           DiskMargin: 1.1271
           LowerBound: 1.1271
           UpperBound: 1.1271
            Frequency: 5.0062
    WorstPerturbation: [1x1 ss]

В то время как меньший, чем классические запасы по амплитуде и фазе, находящиеся на диске поля по существу подтверждают, что номинальная обратная связь очень устойчива. Теперь вспомните, что объект двигателя постоянного тока сомнителен. Как смоделированная неопределенность влияет на эти запасы устойчивости? Для быстрого понимания постройте находящиеся на диске запасы по амплитуде и фазе для 20 выборок неопределенного ответа разомкнутого цикла.

diskmarginplot(P*Cont,P.NominalValue*Cont)
legend('Samples','Nominal')

Некоторые комбинации неопределенности объекта приводят к меньшим полям. График показывает только небольшую выборку. Используйте анализ худшего случая, чтобы узнать, как плохо поля могут действительно добраться. wcdiskmargin функция непосредственно вычисляет запасы по амплитуде и фазе худшего случая для смоделированной неопределенности.

wcDM = wcdiskmargin(P*Cont,'siso')
wcDM = struct with fields:
           GainMargin: [0.8729 1.1457]
          PhaseMargin: [-7.7676 7.7676]
           DiskMargin: 0.1358
           LowerBound: 0.1358
           UpperBound: 0.1361
    CriticalFrequency: 4.9827
    WorstPerturbation: [1x1 ss]

mag2db(wcDM.GainMargin)
ans = 1×2

   -1.1812    1.1812

Здесь поля худшего случая составляют только 1,2 дБ и 7,8 градусов, сигнализируя, что замкнутый цикл почти нестабилен для некоторых комбинаций неопределенных элементов.

Робастность характеристик подавления помех

Функция чувствительности является стандартной мерой производительности с обратной связью для системы с обратной связью. Вычислите неопределенную функцию чувствительности S и сравните Предвещать графики величины для номинала, и произвел неопределенные функции чувствительности.

S = feedback(1,P*Cont);
bodemag(S,S.Nominal)
legend('Samples','Nominal')

Рисунок 5: Величина чувствительности функционирует S.

Во временном интервале функция чувствительности указывает, как хорошо воздействие шага может быть отклонено. Постройте его переходной процесс, чтобы видеть изменчивость в характеристиках подавления помех (номинал появляется в красном).

step(S,S.Nominal)
title('Disturbance Rejection')
legend('Samples','Nominal')

Рисунок 6: Отклонение воздействия шага.

Используйте wcgain функция, чтобы вычислить значение худшего случая пикового усиления функции чувствительности.

[maxgain,worstuncertainty] = wcgain(S);
maxgain
maxgain = struct with fields:
           LowerBound: 7.5199
           UpperBound: 7.5358
    CriticalFrequency: 4.9980

С usubs функция можно заменить значениями худшего случая неопределенных элементов в неопределенную функцию чувствительности S. Это дает функции худшей чувствительности к регистру Sworst в целой области значений неопределенности. Обратите внимание на то, что пиковое усиление Sworst совпадает с нижней границей, вычисленной wcgain.

Sworst = usubs(S,worstuncertainty);
norm(Sworst,inf)
ans = 7.5199
maxgain.LowerBound
ans = 7.5199

Теперь сравните переходные процессы номинальной и худшей чувствительности к регистру.

step(Sworst,S.NominalValue,6);
title('Disturbance Rejection')
legend('Worst-case','Nominal')

Рисунок 7: Номинал и отклонение худшего случая воздействия шага

Очевидно некоторые комбинации неопределенных элементов значительно ухудшают способность контроллера быстро отклонить воздействия. Наконец, постройте величину номинала и значения худшего случая функции чувствительности. Заметьте что пиковое значение Sworst происходит на частоте maxgain.CriticalFrequency:

bodemag(Sworst,S.NominalValue)
legend('Worst-case','Nominal')
hold on
semilogx(maxgain.CriticalFrequency,20*log10(maxgain.LowerBound),'g*')

Рисунок 8: Величина номинальной и худшей чувствительности к регистру

Для просмотра документации необходимо авторизоваться на сайте