Этот пример использует systune
для контроля сейсмических колебаний в трехэтажном создании.
Этот пример рассматривает систему управления активным драйвером массы (AMD) для виброизоляции в трехэтажной экспериментальной структуре. Данная настройка используется для оценки системы управления методов повышения безопасности строительных сооружений во время землетрясений. Конструкция состоит из трех этажей с активным массовым драйвером на верхнем этаже, который используется для ослабления наземных нарушений порядка. Это приложение заимствовано из «Benchmark Problems in Structural Control: Part I - Active Mass Driver System», B.F. Spencer Jr., S.J. Dyke, and H.S. Deoskar, Earthquake Engineering and Structural Dynamics, 27 (11), 1998, pp. 1127-1139.
Фигура 1: Активная система управления драйвером массы
Объект P
является моделью с 28 состояниями со следующими переменными состояния:
x(i)
Перемещение i-го этажа относительно земли (см)
xm
Перемещение AMD относительно 3-го этажа (см)
xv(i)
: скорость i-го этажа относительно земли (см/с)
xvm
: скорость AMD относительно земли (см/с)
xa(i)
Ускорение i-го этажа относительно земли (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 см/с ^ 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: Структура управления
Контроллер использует измерения 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.99981, Iterations = 210
Сводные данные указывают, что мы достигли общего сокращения стандартных отклонений на 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')
В целом, контроллер достигает значительного уменьшения земной вибрации как с точки зрения дрейфа, так и ускорения для всех историй, отвечая жестким ограничениям на усилие управления и массовое перемещение.
isPassive
| systune
| TuningGoal.Variance