В этом примере показано, как учитывать неопределенность модели при настройке системы управления движением.
В этом примере уточняется конструкция, описанная в примере «Настройка цифровой системы управления движением». Рассматриваемая система позиционирования показана ниже.

Рис. 1: Аппаратные средства цифрового управления движением
Физическая модель установки показана в блоке «Plant Model» модели Simulink rct_dmcNotch:

Рис. 2: Уравнения движения
В предыдущем примере мы настроили контроллер, используя «четкие» значения для физических параметров.
В действительности эти значения параметров известны только приблизительно и могут изменяться с течением времени. Поскольку результирующие расхождения в модели могут отрицательно сказаться на производительности контроллера, нам необходимо учитывать неопределенность параметров во время настройки, чтобы обеспечить надежную производительность в диапазоне возможных значений параметров. Этот процесс называется надежной настройкой.
Предположим, что 25% неопределенности относительно значения жесткости
и 50% неопределенности относительно значений коэффициентов демпфирования.
Используйте ureal объект для моделирования этих диапазонов неопределенности.
b1 = ureal('b1',1e-6,'Percent',50); b2 = ureal('b2',1e-6,'Percent',50); b12 = ureal('b12',5e-7,'Percent',50); k = ureal('k',0.013,'Percent',25);
Используя уравнения движения на рис. 2, мы можем вывести модель состояния-пространства G растения, выраженного в виде:
J1 = 1e-6; J2 = 1.15e-7; A = [0 1 0 0; -k/J1 -(b1+b12)/J1 k/J1 b12/J1; 0 0 0 1; k/J2 b12/J2 -k/J2 -(b2+b12)/J2 ]; B = [ 0; 1/J1 ; 0 ; 0 ]; C = [ 0 0 1 0 ]; D = 0; G = ss(A,B,C,D,'InputName','u','OutputName','pos_L')
G =
Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 4 states.
The model uncertainty consists of the following blocks:
b1: Uncertain real, nominal = 1e-06, variability = [-50,50]%, 1 occurrences
b12: Uncertain real, nominal = 5e-07, variability = [-50,50]%, 1 occurrences
b2: Uncertain real, nominal = 1e-06, variability = [-50,50]%, 1 occurrences
k: Uncertain real, nominal = 0.013, variability = [-25,25]%, 1 occurrences
Type "G.NominalValue" to see the nominal value, "get(G)" to see all properties, and "G.Uncertainty" to interact with the uncertain elements.
Обратите внимание, что полученная модель G зависит от неопределенных параметров.
Чтобы оценить, как неопределенность влияет на установку, постройте график ее реакции Боде для различных значений.
По умолчанию bode функция использует 20 случайно выбранных значений в диапазоне неопределенностей. Следует отметить, что затрагиваются как демпфирование, так и собственная частота основного резонанса.
rng(0), bode(G,{1e0,1e4})

Для сравнения номинальной и надежной настройки сначала следует повторить номинальную конструкцию, выполненную в примере «Настройка цифровой системы управления движением». Контроллер состоит из компенсатора опережения-запаздывания и фильтра-насечки:
% Tunable lead-lag LL = tunableTF('LL',1,1); % Tunable notch (s^2+2*zeta1*wn*s+wn^2)/(s^2+2*zeta2*wn*s+wn^2) wn = realp('wn',300); wn.Minimum = 300; zeta1 = realp('zeta1',1); zeta1.Minimum = 0; zeta1.Maximum = 1; zeta2 = realp('zeta2',1); zeta2.Minimum = 0; zeta2.Maximum = 1; N = tf([1 2*zeta1*wn wn^2],[1 2*zeta2*wn wn^2]); % Overall controller C = N * LL;
Использовать feedback для построения модели с замкнутым контуром T0 это включает в себя как настраиваемые, так и неопределенные элементы.
AP = AnalysisPoint('u',1); % to access control signal u T0 = feedback(G*AP*C,1); T0.InputName = 'ref'
T0 =
Generalized continuous-time state-space model with 1 outputs, 1 inputs, 7 states, and the following blocks:
LL: Tunable SISO transfer function, 1 zeros, 1 poles, 1 occurrences.
b1: Uncertain real, nominal = 1e-06, variability = [-50,50]%, 1 occurrences
b12: Uncertain real, nominal = 5e-07, variability = [-50,50]%, 1 occurrences
b2: Uncertain real, nominal = 1e-06, variability = [-50,50]%, 1 occurrences
k: Uncertain real, nominal = 0.013, variability = [-25,25]%, 1 occurrences
u: Analysis point, 1 channels, 1 occurrences.
wn: Scalar parameter, 6 occurrences.
zeta1: Scalar parameter, 1 occurrences.
zeta2: Scalar parameter, 1 occurrences.
Type "ss(T0)" to see the current value, "get(T0)" to see all properties, and "T0.Blocks" to interact with the blocks.
Основными целями настройки являются:
Полоса пропускания с разомкнутым контуром 50 рад/с
Коэффициенты усиления и фазовой устойчивости не менее 7,6 дБ и 45 градусов
Чтобы предотвратить быструю динамику, мы дополнительно ограничиваем собственную частоту полюсов с замкнутым контуром.
s = tf('s'); R1 = TuningGoal.LoopShape('u',50/s); R2 = TuningGoal.Margins('u',7.6,45); R3 = TuningGoal.Poles('u',0,0,1e3); % natural frequency < 1000
Теперь настройте параметры контроллера для номинальной установки в соответствии с тремя целями настройки.
T = systune(getNominal(T0),[R1 R2 R3]);
Final: Soft = 0.924, Hard = -Inf, Iterations = 91
Итоговое значение указывает на то, что все цели проектирования были номинально выполнены, и реакция с замкнутым циклом выглядит хорошо.
step(T), title('Nominal closed-loop response')

Насколько надежна эта конструкция? Чтобы выяснить это, обновите неопределенную модель замкнутого цикла T0 с номинально настроенными параметрами контроллера и построить график ступенчатого отклика с замкнутым контуром для 10 случайных выборок неопределенных параметров.
Tnom = setBlockValue(T0,T); % update T0 with tuned valued from systune [Tnom10,S10] = usample(Tnom,10); % sample the uncertainty step(Tnom10,0.5) title('Closed-loop response for 10 uncertain parameter values')

Этот график обнаруживает значительные колебания при удалении от номинальных значений.
Затем выполните повторную настройку контроллера с использованием неопределенной модели с замкнутым контуром T0 вместо своего номинального значения. Это инструктирует systune для реализации целей настройки во всем диапазоне неопределенности.
[Trob,fSoft,~,Info] = systune(T0,[R1 R2 R3]);
Soft: [0.924,Inf], Hard: [-Inf,-Inf], Iterations = 91 Soft: [1.02,3.74], Hard: [-Inf,-Inf], Iterations = 40 Soft: [1.25,1.85], Hard: [-Inf,-Inf], Iterations = 40 Soft: [1.26,1.26], Hard: [-Inf,-Inf], Iterations = 29 Final: Soft = 1.26, Hard = -Inf, Iterations = 200
Достигаемая производительность немного хуже, чем при номинальной настройке, что ожидается с учетом дополнительного ограничения надежности. Сравните производительность с номинальной конструкцией.
Trob10 = usubs(Trob,S10); % use the same 10 uncertainty samples step(Tnom10,Trob10,0.5) title('Closed-loop response for 10 uncertain parameter values') legend('Nominal tuning','Robust tuning')

Надежная конструкция имеет больше перепадов, но в значительной степени свободна от колебаний. Убедитесь, что резонанс установки надежно ослаблен.
viewGoal(R1,Trob)

Наконец, сравните номинальные и надежные контроллеры.
Cnom = setBlockValue(C,Tnom); Crob = setBlockValue(C,Trob); bode(Cnom,Crob), grid, title('Controller') legend('Nominal tuning','Robust tuning')

Неудивительно, что в надежном контроллере используется более широкая и глубокая выемка для учета колебаний демпфирования и собственной частоты в резонансе установки. Используя systuneНадежная возможность настройки, вы можете автоматически позиционировать и калибровать вырез, чтобы наилучшим образом компенсировать такую изменчивость.
Четвертый выходной аргумент systune содержит информацию о наихудших сочетаниях неопределенных параметров. Эти комбинации перечислены в порядке убывания серьезности.
WCU = Info.wcPert
WCU =
5x1 struct array with fields:
b1
b12
b2
k
WCU(1) % worst-overall combination
ans =
struct with fields:
b1: 5.0000e-07
b12: 7.5000e-07
b2: 5.0000e-07
k: 0.0163
Для анализа наихудших ответов замените эти значения параметров в модели с замкнутым контуром Trob.
Twc = usubs(Trob,WCU);
step(Twc,0.5)
title('Closed-loop response for worst-case parameter combinations')
