В этом примере показано, как использовать неопределенные объекты в Toolbox™ надежного управления для моделирования неопределенных систем и оценки надежной стабильности и надежной производительности с помощью инструментов анализа надежности.
Надежная панель инструментов управления позволяет создавать неопределенные элементы, такие как физические параметры, значения которых точно неизвестны, и объединять эти элементы в неопределенные модели. Затем можно легко проанализировать влияние неопределенности на производительность системы управления.
Например, рассмотрим модель завода.
γ λ s + 1
где gamma может находиться в интервале [3,5] и tau имеет среднее значение 0,5 с 30% вариабельностью. Можно создать неопределенную модель P, как в этом примере:
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: Пошаговые характеристики установок и моделей с замкнутым контуром
Нижний график показывает, что система с замкнутым контуром является достаточно надежной, несмотря на значительные колебания коэффициента усиления постоянного тока установки. Это является желательной и общей характеристикой правильно спроектированной системы обратной связи.
Этот пример основан на примере Эталонное отслеживание двигателя постоянного тока с изменениями параметров путем добавления неопределенности параметров и немодулированной динамики, чтобы исследовать устойчивость сервоконтроллера к такой неопределенности.
Номинальная модель двигателя постоянного тока определяется сопротивлением 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: Реакция Plant Bode
В этом разделе рассматривается надежность контроллера двигателя постоянного тока. Номинальный анализ системы с замкнутым контуром показывает, что контур обратной связи очень надежен с запасом усиления 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.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')

Рис. 7: Номинальное и наихудшее отклонение ступенчатого возмущения
Очевидно, что некоторые комбинации неопределенных элементов значительно ухудшают способность контроллера быстро отбрасывать возмущения. Наконец, постройте график величины номинальных и наихудших значений функции чувствительности. Обратите внимание, что пиковое значение Sworst происходит на частоте maxgain.CriticalFrequency:
bodemag(Sworst,S.NominalValue) legend('Worst-case','Nominal') hold on semilogx(maxgain.CriticalFrequency,20*log10(maxgain.LowerBound),'g*')

Рис. 8: Величина номинальной и наихудшей чувствительности
diskmargin | uss | usubs | wcgain