Этот пример использует systune
управлять сейсмическими колебаниями в трехэтажном создании.
Этот пример рассматривает систему управления Активного массового драйвера (AMD) для изоляции вибрации в трехэтажной экспериментальной структуре. Эта настройка используется, чтобы оценить методы системы управления для увеличения безопасности структур гражданского строительства во время землетрясений. Структура состоит из трех историй с активным массовым драйвером на верхнем этаже, который используется, чтобы ослабить наземные воздействия. Это приложение одолжено от "Эталонных тестовых задач в Структурном Управлении: Первая часть - Активная Массовая Система Драйвера", Б.Ф. Спенсер младший, С.Дж. Дайк и Х.С. Деоскэр, Землетрясение Техническая и Структурная Динамика, 27 (11), 1998, стр 1127-1139.
Рисунок 1: активная массовая система управления драйвера
Объект P
модель с 28 состояниями со следующими переменными состояния:
x(i)
: смещение i-th пола относительно земли (cm)
xm
: смещение AMD относительно 3-го этажа (cm)
xv(i)
: скорость i-th пола относительно земли (cm/s)
xvm
: скорость AMD относительно земли (cm/s)
xa(i)
: ускорение i-th пола относительно земли (g)
xam
: ускорение AMD относительно земли (g)
d(1)=x(1)
, d(2)=x(2)-x(1)
, d(3)=x(3)-x(2)
: дрейфы межистории
Входные параметры являются наземным ускорением xag
(в g) и управляющий сигнал u
. Мы используем 1 г = 981 cm/s^2.
load ThreeStoryData
size(P)
State-space model with 20 outputs, 2 inputs, and 28 states.
Ускорение землетрясения моделируется, когда белый шумовой процесс проник в фильтр Канаи-Тэджими.
zg = 0.3; wg = 37.3; S0 = 0.03*zg/(pi*wg*(4*zg^2+1)); Numerator = sqrt(S0)*[2*zg*wg wg^2]; Denominator = [1 2*zg*wg wg^2]; F = sqrt(2*pi)*tf(Numerator,Denominator); F.InputName = 'n'; % white noise input bodemag(F) grid title('Kanai-Tajimi filter')
Эффект землетрясения на неконтролируемой структуре может быть симулирован путем введения белого шумового входа n
в комбинацию фильтра объекта. Можно также использовать covar
непосредственно вычислить стандартные отклонения получившихся дрейфов межистории и ускорений.
% Add Kanai-Tajimi filter to the plant PF = P*append(F,1); % Standard deviations of open-loop drifts CV = covar(PF('d','n'),1); d0 = sqrt(diag(CV)); % Standard deviations of open-loop acceleration CV = covar(PF('xa','n'),1); xa0 = sqrt(diag(CV)); % Plot open-loop RMS values clf bar([d0; xa0]) title('Drifts and accelerations for uncontrolled structure') ylabel('Standard deviations') set(gca,'XTickLabel',{'d(1)','d(2)','d(3)','xa(1)','xa(2)','xa(3)'})
Управляющая структура изображена в рисунке 2.
Рисунок 2: управляющая структура
Контроллер измерения использования yxa
и yxam
из xa
и xam
сгенерировать управляющий сигнал u
. Физически, управление u
электрический ток, управляющий гидравлическим приводом, который перемещает массы AMD. Конструктивные требования включают:
Минимизация межистории дрейфует d(i)
и ускорения xa(i)
Трудные ограничения на усилие по управлению в терминах массового смещения xm
, массовое ускорение xam
, и управляйте усилием u
Все конструктивные требования оценены в терминах стандартных отклонений соответствующих сигналов. Используйте TuningGoal.Variance
выражать эти требования и масштабировать каждую переменную ее стандартным отклонением разомкнутого цикла, чтобы искать универсальное относительное улучшение всех переменных.
% Soft requirements on drifts and accelerations Soft = [... TuningGoal.Variance('n','d(1)',d0(1)) ; ... TuningGoal.Variance('n','d(2)',d0(2)) ; ... TuningGoal.Variance('n','d(3)',d0(3)) ; ... TuningGoal.Variance('n','xa(1)',xa0(1)) ; ... TuningGoal.Variance('n','xa(2)',xa0(2)) ; ... TuningGoal.Variance('n','xa(3)',xa0(3))]; % Hard requirements on control effort Hard = [... TuningGoal.Variance('n','xm',3) ; ... TuningGoal.Variance('n','xam',2) ; ... TuningGoal.Variance('n','u',1)];
systune
позволяет вам настроить фактически любую структуру контроллера, удовлетворяющую этим требованиям. Сложность контроллера может быть настроена методом проб и ошибок, начиная с достаточно старшего разряда, чтобы измерить пределы производительности, затем уменьшая порядок, пока вы не наблюдаете значимого ухудшения производительности. В данном примере запустите с контроллера 5-го порядка без проходного термина.
C = tunableSS('C',5,1,4); C.D.Value = 0; C.D.Free = false; % Fix feedthrough to zero
Создайте настраиваемую модель T0
из системы с обратной связью рисунка 2 и мелодии параметры контроллера с systune
.
% Build tunable closed-loop model T0 = lft(PF,C); % Tune controller parameters [T,fSoft,gHard] = systune(T0,Soft,Hard);
Final: Soft = 0.601, Hard = 0.99994, Iterations = 215
Сводные данные указывают, что мы достигли полного сокращения 40% в стандартных отклонениях (Soft = 0.6
) при встрече всех трудных ограничений (Hard < 1
).
Вычислите стандартные отклонения дрейфов и ускорений для управляемой структуры и сравните с неконтролируемыми результатами. Система управления AMD дает к значительному сокращению и дрейфа и ускорения.
% Standard deviations of closed-loop drifts CV = covar(T('d','n'),1); d = sqrt(diag(CV)); % Standard deviations of closed-loop acceleration CV = covar(T('xa','n'),1); xa = sqrt(diag(CV)); % Compare open- and closed-loop values clf bar([d0 d; xa0 xa]) title('Drifts and accelerations') ylabel('Standard deviations') set(gca,'XTickLabel',{'d(1)','d(2)','d(3)','xa(1)','xa(2)','xa(3)'}) legend('Uncontrolled','Controlled','location','NorthWest')
Симулируйте ответ 3 структур повествования к подобному землетрясению возбуждению и в разомкнутом и в замкнутом цикле. Ускорение землетрясения моделируется как белый шумовой процесс, окрашенный фильтром Канаи-Тэджими.
% Sampled white noise process rng('default') dt = 1e-3; t = 0:dt:500; n = randn(1,length(t))/sqrt(dt); % white noise signal % Open-loop simulation ysimOL = lsim(PF(:,1), n , t); % Closed-loop simulation ysimCL = lsim(T, n , t); % Drifts clf subplot(3,1,1) plot(t,ysimOL(:,13),'b',t,ysimCL(:,13),'r') grid title('Inter-story drift d(1) (blue=open loop, red=closed loop)') ylabel('cm') subplot(3,1,2) plot(t,ysimOL(:,14),'b',t,ysimCL(:,14),'r') grid title('Inter-story drift d(2)') ylabel('cm') subplot(3,1,3) plot(t,ysimOL(:,15),'b',t,ysimCL(:,15),'r') grid title('Inter-story drift d(3)') ylabel('cm')
Ускорения
clf subplot(3,1,1) plot(t,ysimOL(:,9),'b',t,ysimCL(:,9),'r') grid title('Acceleration of 1st floor xa(1) (blue=open loop, red=closed loop)') ylabel('g') subplot(3,1,2) plot(t,ysimOL(:,10),'b',t,ysimCL(:,10),'r') grid title('Acceleration of 2nd floor xa(2)') ylabel('g') subplot(3,1,3) plot(t,ysimOL(:,11),'b',t,ysimCL(:,11),'r') grid title('Acceleration of 3rd floor xa(3)') ylabel('g')
Контрольные переменные
clf subplot(3,1,1) plot(t,ysimCL(:,4),'r') grid title('AMD position xm') ylabel('cm') subplot(3,1,2) plot(t,ysimCL(:,12),'r') grid title('AMD acceleration xam') ylabel('g') subplot(3,1,3) plot(t,ysimCL(:,16),'r') grid title('Control signal u')
Постройте среднеквадратичное значение (RMS) симулированных сигналов и для управляемых и для неконтролируемых сценариев. Принимая эргодичность, производительность RMS может быть оценена от одной достаточно долгой симуляции процесса и совпадает со стандартными отклонениями, вычисленными ранее. Действительно график RMS тесно совпадает с графиком стандартного отклонения, полученным ранее.
clf bar([std(ysimOL(:,13:15)) std(ysimOL(:,9:11)) ; ... std(ysimCL(:,13:15)) std(ysimCL(:,9:11))]') title('Drifts and accelerations') ylabel('Simulated RMS values') set(gca,'XTickLabel',{'d(1)','d(2)','d(3)','xa(1)','xa(2)','xa(3)'}) legend('Uncontrolled','Controlled','location','NorthWest')
В целом, контроллер достигает значительного сокращения наземной вибрации и в терминах дрейфа и в терминах ускорения для всех историй при встрече трудных ограничений на усилие по управлению и массовое смещение.
TuningGoal.Variance
| isPassive
| systune