シミュレーション中の周波数応答のオンライン推定
この例では、Frequency Response Estimator ブロックを使用して、Simulink® でのモデルのシミュレーション中に周波数応答のオンライン推定を実行する方法を説明します。この方法は、物理プラントのオンライン推定のためにブロックを展開する予定がある場合に便利です。展開前に、推定アルゴリズムと実験パラメーターをプラントの Simulink モデルに対してテストすることで、オンライン推定がプラントにとって安全であることを確認できます。
制御システム モデル
この例では、推定用に構成されている Frequency Response Estimator ブロックが既に含まれているモデルを使用します。モデルを開きます。
mdl = "OnlineFreqRespEstimEx.slx";
open_system(mdl)
モデルには PI コントローラーをもつ閉ループ構成のプラントが含まれています。Frequency Response Estimator ブロックは制御信号を入力 u
として受け入れます。その制御信号に摂動を加えてプラント入力へと送ります。ブロックのパラメーターを使用して、摂動信号のプロパティを指定してください。
実験パラメーター
Frequency Response Estimator ブロックは sinestream モードで実験を実行するよう構成されており、そのため各周波数に別々の摂動を挿入します。また、ブロックは摂動信号の各周波数に同じ振幅 1 を使用するようにも構成されています。
ブロックはさらに、周波数 w = logspace(0,2,20)
での周波数応答を推定するように構成されています。実験のサンプリング レートが最も高い周波数を受け入れるのに十分速いことを確実にするため、サンプリング時間は約 0.6 / wmax
かそれより速く設定することをお勧めします。ここで、wmax
は最も高い周波数 (rad/s 単位) です。この例では、実験のサンプル時間は 0.005 秒であり、100 rad/s の wmax
に対し十分高速です。
start/stop 信号
start/stop
入力端子に接続されているステップ ブロックは、t = 5 でモデルが定常状態にあるときに、立ち上がり信号で実験をオンにします。ブロックが指定する推奨される実験の長さは約 174 秒です。この値は、指定された周波数 w
、各周波数での待機する整定周期数、および推定に使用する周期数に基づいています。良好な結果を得るのに十分長い時間実験が必ず実行されるよう、start/stop
信号は実験を t = 180 で終了します 推奨される実験の長さの詳細については、Frequency Response Estimatorを参照してください。
推定の結果
モデルのシミュレーションを実行します。スコープを使用して、制御信号、摂動信号、およびプラント出力を可視化することができます。[ボード線図の表示] ブロック パラメーターがオンになっているため、ブロックは指定されたベースライン モデルのプロットを自動的に生成し、これを推定された周波数応答で定期的に更新します。
sim(mdl)
frd
端子の信号は、w
の各周波数で推定された応答の現在値を含むベクトルです。この端子に接続されている To Workspace ブロックは、MATLAB® ワークスペース変数 frdata
に信号を書き込みます。To Workspace ブロックで [データ点の制限] パラメーターが 1 に設定されているので、frdata
には各周波数での最終の推定応答のみが含まれます。frdata
を frd
モデル オブジェクトに変換します。
sys_estim = frd(frdata,w); size(sys_estim)
FRD model with 1 outputs, 1 inputs, and 20 frequency points.
これで sys_estim
を、frd
モデルを入力として受け入れる bode
や pidtune
などの Control System Toolbox™ の解析コマンドや制御設計コマンドで使用することができます。あるいは、System Identification Toolbox™ ソフトウェアがある場合は、周波数応答データを使用してシステムのパラメトリック モデルを推定できます。
ログに記録された実験データ
モデルは、ブロックの出力端子 data で推定データをログに記録するようにも構成されています (データ ログの詳細については、信号ログを使用して、信号データをエクスポートを参照)。このデータは MATLAB ワークスペースに Simulink.SimulationData.Dataset
オブジェクト logsout
として保存されます。このデータの使用方法の詳細については、オフライン推定のための周波数応答実験データの収集を参照してください。