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

Этот пример показывает, как использовать неопределенные объекты в 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.

Постройте график переходной характеристики объекта управления и системы с обратной связью. The 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)')

Figure contains 2 axes. Axes 1 contains 21 objects of type line. This object represents P. Axes 2 contains 21 objects of type line. This object represents CLP.

Фигура 1: Переходные характеристики модели объекта и замкнутой системы

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

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

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

Номинальная модель двигателя постоянного тока определяется сопротивлением 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 команда. The 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')

Figure contains an axes. The axes with title From: AppliedVoltage To: AngularSpeed contains 16 objects of type line. These objects represent Samples, Nominal.

Фигура 2: Переходная характеристика объекта

Аналогично сравните Bode-ответ номинальной (красной) и дискретизированной (синей) неопределенных моделей двигателя постоянного тока.

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

Figure contains 2 axes. Axes 1 with title From: AppliedVoltage To: AngularSpeed contains 16 objects of type line. These objects represent Samples, Nominal. Axes 2 contains 16 objects of type line. These objects represent Samples, Nominal.

Фигура 3: Реакция объекта Bode

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

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

margin(P.NominalValue*Cont)

Figure contains 2 axes. Axes 1 with title From: In(1) To: AngularSpeed contains an object of type line. This object represents untitled1. Axes 2 contains an object of type line. This object represents untitled1.

Фигура 4: Анализ робастности с обратной связью

The 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')

Figure contains 2 axes. Axes 1 contains 22 objects of type line. These objects represent Samples, Nominal. Axes 2 contains 22 objects of type line. These objects represent Samples, Nominal.

Некоторые комбинации неопределенности объектов приводят к меньшим запасам. На график показана только небольшая выборка. Используйте анализ наихудшего случая, чтобы выяснить, насколько плохие маржи могут действительно получить. The 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')

Figure contains an axes. The axes contains 22 objects of type line. These objects represent Samples, Nominal.

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

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

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

Figure contains an axes. The axes contains 22 objects of type line. These objects represent Samples, Nominal.

Фигура 6: Отклонение шагового нарушения порядка.

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

[maxgain,worstuncertainty] = wcgain(S);
maxgain
maxgain = struct with fields:
           LowerBound: 7.5186
           UpperBound: 7.5344
    CriticalFrequency: 4.9955

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

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

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

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

Figure contains an axes. The axes contains 2 objects of type line. These objects represent 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*')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Worst-case, Nominal.

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

См. также

| | |

Похожие темы