構造振動制御
加速度センサの信号を使ってサーボモータを駆動し、構造物の減衰特性を改善します。
ソースコードやプロジェクトファイルのダウンロードはこちら →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次のみとし、モータドライバも省略して、制御力を直接加えています。
|
| 記録例 | ![]() |
| 設定例 | ![]() |



