Simulink Control Design

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

FRESTIMATE を使った周波数領域における線形化の検証

この例では、軽量飛行機モデルにコマンド LINEARIZE を使用して得られたブロックごとの解析的な線形化結果を検証するために、周波数応答推定を使用する方法を説明します。この例を実行するには、Aerospace Blockset が必要であることに注意してください。

手順 1: モデルを開く

軽量飛行機の Simulink モデルを開きます。このモデルの詳細は、Aerospace Blockset の例にある「Lightweight Airplane Design」を参照してください。

scdskyhogg
mdl = 'scdskyhogg';

手順 2: 軽量飛行機モデルの解析的な線形化の実行

LINEARIZE コマンドを使用して、軽量飛行機モデルを、高度コマンド "AltCmd" から測定された高度 "h_sensed" まで線形化できます。線形化 I/O ポイントは、モデル上で既にマークされています。モデルは、t=75 のシミュレーション スナップショットを使用して取得した操作点を使用するよう事前に設定されています。

io = getlinio(mdl);
sys = linearize(mdl,io);
bode(sys)

手順 3: 周波数応答の推定

FRESTIMATE を使用して線形化の結果を検証し、線形化結果が、約 6.28 rad/s (1 Hz) の反共振振動数など、非線形モデルの特性を適切に取得するかどうかを判断できます。

まず、sinestream の入力信号を作成します。線形化結果を入力引数として使用し、一連の周波数と各周波数の周期数など、線形システムに基づいて sinestream の入力信号のさまざまなパラメーターを自動的に設定します。

in = frest.Sinestream(sys);
in.Amplitude = 0.5
 
The sinestream input signal:
 
      Frequency           : [0.0034143;0.0054345;0.0086502;0.013768 ...] (rad/s)
      Amplitude           : 0.5
      SamplesPerPeriod    : [110416;69370;43582;27381 ...]
      NumPeriods          : [4;4;4;4 ...]
      RampPeriods         : 0
      FreqUnits (rad/s,Hz): rad/s
      SettlingPeriods     : [1;1;1;1 ...]
      ApplyFilteringInFRESTIMATE (on/off)    : on
      SimulationOrder (Sequential/OneAtATime): Sequential
 

0.0034 rad/s ~ 14.5 rad/s の変動に対する応答を計算するために 25 の周波数が検出されることに注意してください。設計によって、自動的に検出される周波数は、興味深いダイナミクスが発生するところ (6.28 rad/s の反共振振動数など) に注目します。システムが定常状態に到達するのに要する期間数は、これらの周波数ごとに推定され、1 期間 (0.0034 rad/s の場合) ~ 188 期間 (14.5 rad/s の場合) で変動します。

次に、この入力信号を使用して FRESTIMATE コマンドを実行します。FRESTIMATE は、入力信号を使用して Simulink モデルをシミュレートすることに注意してください。これは、通常のシミュレーション モデルでは長時間を要しますが、モデルはシミュレーションを高速化するために "ラピッド アクセラレータ" モードを使用するよう事前に設定されています。FRESTIMATE では、ラピッド アクセラレータのシミュレーションを完全にサポートしています。Intel Core(TM)2 Quad 2.4 GHz プロセッサと 4 GB の RAM を搭載した PC の場合、"ラピッド アクセラレータ" モードでのシミュレーションは約 6 分かかります。"ノーマル" モードでの同じシミュレーションは、3 時間以上かかります。このモデルの場合、"ラピッド アクセラレータ" では、シミュレーションの速度は 30 倍以上上がります。次のラインを非コメント化して、実際の FRESTIMATE コマンドをラピッド アクセラレータ モードで実行します。そうでない場合、推定結果は MAT ファイルから読み込まれます。

set_param(mdl,'SimulationMode','rapid');
% curdir = cd(tempdir);
% sysest = frestimate(mdl,in,io);
% cd(curdir);
load('scdskyhogg_frestresults.mat');

解析的な線形化結果を FRESTIMATE からの周波数応答データと比較します。周波数応答データは、周波数 1 ~ 10 rad/s の反共振振動数が実際の非線形の飛行機モデルには存在しないことを検証する解析的な線形化結果によく一致します。

bode(sys,sysest,'r*');

モデルを閉じます。

bdclose('scdskyhogg');