Main Content

3 階建てビルのアクティブ振動制御

この例では、systune を使用して 3 階建てビルの地震振動を制御します。

背景

この例では、3 階建ての実験構造の防振用アクティブ マス ドライバー (AMD) 制御システムを検討します。この設定は、地震時の土木工学構造の安全性を強化する制御設計法を評価するために使用します。この構造は 3 階建てで、地面の揺れを抑制するために使用されるアクティブ マス ドライバーが最上階に設置されています。この適用例は、「Benchmark Problems in Structural Control:Part I - Active Mass Driver System」(B.F. Spencer Jr.、S.J. Dyke および H.S. Deoskar 著『Earthquake Engineering and Structural Dynamics)』、27(11)、1998 年、pp.1127 ~ 1139) から借用したものです。

図 1: アクティブ マス ドライバー制御システム

プラント P は、次の状態変数をもつ 28 状態モデルです。

  • x(i): 地面を基準とした i 階の変位 (cm)

  • xm: 3 階を基準とした AMD の変位 (cm)

  • xv(i): 地面を基準とした i 階の速度 (cm/s)

  • xvm: 地面を基準とした AMD の速度 (cm/s)

  • 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 g = 981 cm/s^2 を使用します。

load ThreeStoryData
size(P)
State-space model with 20 outputs, 2 inputs, and 28 states.

地震加速度のモデル

地震加速度は、Kanai-Tajimi フィルターを通じてフィルター処理されるホワイト ノイズ過程としてモデル化されます。

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: 制御構造

コントローラー C は、xa および xam の測定値 yxayxam を使って制御信号 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

図 2 の閉ループ システムの調整可能なモデル T0 を構成し、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.99851, Iterations = 201

概要には、標準偏差が全体で 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 階構造の応答のシミュレーションを実行します。地震加速度は、Kanai-Tajimi フィルターで色付けされたホワイト ノイズ過程としてモデル化されます。

% 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 性能は過程の 1 つの十分な長さのシミュレーションから推定することができ、以前に計算された標準偏差と一致します。実際、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')

全体的に見て、コントローラーは、すべての階のドリフトと加速度の両方で地盤振動を大幅に低減すると同時に、制御操作と質量変位の厳密な制約を満たしています。

参考

| |

関連するトピック