構造振動制御
加速度センサの信号を使ってサーボモータを駆動し、構造物の減衰特性を改善します。
ソースコードやプロジェクトファイルのダウンロードはこちら →massdamp.zip
(1)実運転用のプログラムです。 | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
概念と ブロック図 |
||||||||||||||||||||||||||||||||||
プログラム | proc { pos = Ain( 1, 0, 0.1 ); // 相対位置センサ入力 acc = Ain( 0, 9.8, 1 ) + Kp * pos; // 加速度センサ入力と補正 fc = integral( acc, fc, 1/Kc, sv,-sv ); // 制御力の計算 fd = pid( pos, Kd, T1, 8*T1, 1, 0, 0 ); // PID制御ただしIは無し cmd = integral( fc+fd, cmd, md, sc,-sc ); // 速度指令の計算 Aout( 1, 0, 1, cmd ); // 速度指令を出力 } | |||||||||||||||||||||||||||||||||
説明 |
構造物の変形速度に比例した力を加えると、減衰係数が増大したのと同じ効果になりますので、
以下の関数、信号、パラメータを使っています。
|
(2)シミュレーション用のプログラムです。 | |
---|---|
ブロック図 | |
プログラム | var pos; var sens; var acc; var xs=0.01; // 振動変位の初期値 ms=100000; // 構造物の等価質量 Ks=4000000; // 構造物の等価剛性 md=5000; // おもりの質量 sup=90000; // 積分器の飽和量 proc { if currTime() < Ton { fc=0; fd=0; } // 時刻Tonまで制御なし else { fc = Kc * lag1( sens+Kp*pos, T0 ) * T0; // DCカット積分 fd = pid( pos, Kd, T1, 8*T1, 1, 0, 0 ); // PD制御 } fr = fd + fc; // 作用力 vd = integral( fr, vd, md, sup, -sup ); // おもりの速度 xd = integral( vd, xd, 1, sup, -sup ); // おもりの位置 vs = integral( acc,vs, 1, sup, -sup ); // 構造物の速度 xs = integral( vs, xs, 1, sup, -sup ); // 構造物の位置 pos = xs - xd; // 相対変位 acc = (-fr - Ks*xs) / ms; // 加速度 sens = acc + bias; // 加速度センサの信号 } |
説明 |
実運転用のプログラム(1)を事前チェックするためのシミュレーションプログラムです。
簡単のため振動モードは1次のみとし、モータドライバも省略して、制御力を直接加えています。
|
記録例 | |
設定例 |