Main Content

Frequency Response Estimator

シミュレーション時またはリアルタイムでプラントの周波数応答を推定

  • ライブラリ:
  • Simulink Control Design

  • Frequency Response Estimator block

説明

Frequency Response Estimator ブロックを使用して、実験ベースの推定を物理プラントでリアルタイムに、または Simulink® モデルでシミュレーション中に実行します。推定された周波数応答を取得するため、ブロックは以下を同時に行います。

  • 正弦波のテスト信号をプラントの定格操作点に挿入

  • プラント出力から応答データを収集

  • 推定された周波数応答を計算

プラントを摂動してシステム応答を測定する周波数を指定します。推定プロセスは start/stop 信号を介してトリガーされます。この信号を使って推定をいつでも開始できますが、通常はプラントが定格操作点にあるときに開始します。周波数応答が収束した後、推定を終了します。

周波数応答のオンライン推定は任意の安定した SISO プラントに使用できます。不安定なプラントの場合、閉ループが内的に安定であればオンライン推定はその閉ループ構成で機能します。閉ループ システムが内的に安定であるのは、ノミナル閉ループ特性方程式の根がすべて左開半平面にある場合のみです。伝達関数 G = NG/DG とコントローラー C = NC/DC をもつプラントの場合、特性方程式は次のとおりです。

DGDC + NGNC = 0.

実質的にこの条件は、G のどの不安定な極も GC の極-零点相殺によって安定化はしないということです。この条件を満たさない不安定なプラントにはオンライン推定を使用しないでください。

コードを生成して Frequency Response Estimator ブロックをハードウェアに展開し、推定をリアルタイムで実行することができます。ブロックは Simulink Coder™、Embedded Coder®、および Simulink PLC Coder™ でのコード生成をサポートします。HDL Coder™ でのコード生成はサポートしません。

Frequency Response Estimator ブロックの使い方の詳細については、次を参照してください。

周波数応答のオンライン推定の一般情報については、周波数応答のオンライン推定の基礎を参照してください。

端子

入力

すべて展開する

システムにブロックを挿入して、この端子が制御信号または他のプラント入力信号を受け入れるようにします。たとえば、閉ループ構成ではこの端子を、次のブロック線図に示すように接続できます。

開ループ構成では、この入力端子を、推定のための望ましい操作点へとプラントを駆動するソースに接続できます。たとえば、Constant ブロックを使用して適切な値を設定することができます。

データ型: single | double

この端子をプラント出力に接続します。

データ型: single | double

推定プロセスを開始し終了するために、start/stop 端子で信号を提供します。信号の値によって次のように処理されます。

  • 負の値またはゼロから正の値に変わると、実験が開始します。

  • 正の値から負の値またはゼロに変わると、実験が終了します。

通常、0 から 1 に変わると実験を開始し、1 から 0 に変わると実験を終了する信号を使用できます。実験が実行中でない場合、ブロックは u + ΔuΔu 端子で摂動を追加しません。この状態では、ブロックはプラントの動作に影響しません。

実験はプラントが目的の平衡操作点にあるときに開始してください。閉ループ構成では、コントローラーを使用してプラントを操作点へと駆動します。開ループ構成では、u に接続されたソース ブロックを使用してプラントを操作点へと駆動できます。

調査するすべての周波数で良好な推定を得るのに十分なデータをアルゴリズムが収集できるまで、実験を実行し続けます。ブロックは、推奨される実験の長さをブロック パラメーターの [実験の長さ] セクションに表示します。この値は実験のモードおよび実験に指定される周波数に基づいています。

  • [実験モード][Sinestream] の場合、推奨される実験の長さは次のようになります。

    i2πωi(Nset,i+Nestim,i)+2TsNfreq,

    ここで、

    • ωi[周波数] パラメーターに指定されている i 番目の周波数 (rad/s 単位)。

    • Nfreq[周波数] にある周波数の数。

    • Nset,i は、[整定周期数] パラメーターの対応する値。

    • Nestim,i は、[推定周期数] パラメーターの対応する値。

    • Ts は、[サンプル時間 (Ts)] パラメーターで指定される、実験のサンプリング時間。

  • [実験モード][重ね合わせ] の場合、推奨される実験の長さは最長周期の 6 倍です。システムが過渡状態の減衰やノイズの平均化による除去にあまり時間を必要としない場合は、実験の長さを短くすることができます。重ね合わせモードで実験の長さを決定する方法の詳細については、重ね合わせモードにおける実験の長さとデータ収集のウィンドウを参照してください。

実験中はプラントへの負荷外乱をすべて回避してください。負荷外乱によってプラント出力が歪み、周波数応答の推定の精度が低下することがあります。

データ型: single | double

[周波数] パラメーターに値を指定します。周波数の選択方法については、このパラメーターを参照してください。

この端子から周波数を指定する場合は、[励起信号の周波数の数] パラメーターで周波数の数を指定します。

依存関係

この端子を有効にするには、[励起信号ソース][外部端子] を選択します。

データ型: single | double

[振幅] パラメーターに値を指定します。詳細については、そのパラメーターを参照してください。

依存関係

この端子を有効にするには、[励起信号ソース][外部端子] を選択します。

データ型: single | double

出力

すべて展開する

システムにブロックを挿入して、次のブロック線図にあるように、この端子がプラントに入力信号を送るようにします。

  • 実験が実行中である (start/stop が正である) 場合、ブロックはこの端子でプラントにテスト信号を挿入する。プラントを保護する飽和やレート制限がある場合は、信号を u + Δu からプラントに送ります。

  • 実験が実行中でない (start/stop がゼロまたは負である) 場合、ブロックは信号を変更せずに u から u + Δu に渡す。この状態では、ブロックはプラントに影響しません。

依存関係

この端子を有効にするには、[出力信号の構成][制御動作 + 摂動] を選択します。

データ型: single | double

ブロックはこの端子で摂動信号を生成します。通常、次のブロック線図に示すように、摂動をこの端子から Sum ブロックを介して挿入します。

  • 実験が実行中である (start/stop が正である) 場合、ブロックはこの端子で摂動信号を生成。

  • 実験が実行中でない (start/stop がゼロまたは負である) 場合、この端子での信号はゼロ。この状態では、ブロックはプラントに影響しません。

依存関係

この端子を有効にするには、[出力信号の構成][摂動のみ] を選択します。

データ型: single | double

この端子の信号には、プラントに適用された摂動信号や、測定されたプラント応答周波数など、応答の推定実験中にブロックが収集したデータが含まれています。実験データをログに記録して後で使用する場合は、この端子を使用します。たとえば、データをログに記録して推定をオフラインで実行することにより、展開先環境のリソースを節約できます ([推定モード] を参照)。周波数応答実験のデータにアクセスするには 2 つの方法があります。

  • To Workspace ブロックを使用して、データを MATLAB® ワークスペースに timeseries データを含む構造体として書き込む。To Workspace ブロックの [保存形式] パラメーターは [timeseries] でなければなりません。構造体には、以下のフィールドがあります。

    • Ready — 推定の計算に含めるタイム ステップ (1) と、除外するタイム ステップ (0) を示す論理信号。たとえば sinestream モードでは、[整定周期数] パラメーターと [推定周期数] パラメーターによって決定される周期内に収まるデータについてのみ、この信号は 1 になります。重ね合わせモードでは、重ね合わせモードにおける実験の長さとデータ収集のウィンドウに説明されているウィンドウ内に収まるデータについてのみ、信号が 1 になります。

    • Perturbation — プラントに適用される正弦波摂動 Δu

    • PlantInput — プラント入力信号 u + Δu (u はブロック入力端子 y で収集された信号)

    • PlantOutput — ブロック入力端子 y で収集されたプラント出力信号

  • Simulink のデータ ログを使用して、データをワークスペースに Simulink.SimulationData.Dataset オブジェクトとして書き込む。この場合、4 つの timeseries 信号を含む構造体が、結果のデータセットの Values フィールドに格納されます。たとえば、ログ データを変数 logsout に保存するようモデルが構成されており、data がログを取る唯一の端子であるとします。この場合、構造体は logsout{1}.Values に格納されます。

この端子からのデータを使用して、周波数応答の推定をオフラインで実行できます。たとえば、構造体を frestimate コマンドに渡すことで、推定された周波数応答を MATLAB で計算することができます。実験データのアクセスと使用の詳細については、オフライン推定のための周波数応答実験データの収集を参照してください。

データ型: single | double

この端子の信号は、[周波数] パラメーターで指定される各周波数につき 1 つのエントリをもつベクトルに、プラントの推定された周波数応答を含んでいます。To Workspace ブロックを使用して MATLAB ワークスペースにこの信号を書き込むか、Simulink データ ログを使用してワークスペースに Simulink.SimulationData.Dataset オブジェクトとしてデータを書き込むことができます。

通常、最良の推定が得られるのは実験の一番最後です。そのため、この端子で履歴データをすべてログに記録する必要は必ずしもありません。代わりに、最後のステップを除き、すべてのタイム ステップの値を破棄することができます。たとえば、To Workspace ブロックで、[データ点の制限] パラメーターを 1 に設定できます。その場合、実験が終了すると、結果のワークスペース変数には [周波数] パラメーターに指定されている各周波数ごとに 1 つの複素数値からなるベクトルが含まれています。

依存関係

この端子を有効にするには、[推定モード][オンライン] に設定します。

データ型: single | double

パラメーター

すべて展開する

ブロックは、このパラメーターで指定される固定サンプル時間で実行される離散時間ブロックです。推定できる最大の周波数はナイキスト周波数 π/Ts rad/s です。ナイキスト周波数の少なくとも 5 倍は速いサンプル時間を使用することをお勧めします。

Ts = π/(5ωmax) ≅ 0.6/ωmax or 0.1/fmax,

ここで、ωmax[周波数] にある最も高い周波数 (rad/s 単位) で、fmax は Hz 単位での最も高い周波数です。サンプル時間は最速の望ましい周波数を推定するのに十分小さくなければなりませんが、不要な計算負荷が発生するほど小さくしてはなりません。

サンプル時間を -1 に設定すると、ソフトウェアはブロックの外のソースに基づいてコンパイル時にサンプル時間を決定します。サンプル時間を -1 に設定することで、推定の周波数をナイキスト周波数より低く抑えるブロックでの内部チェックは無効になります。

ヒント

展開されたブロックを、異なるサンプル時間を使ってアプリケーション内で実行する場合、このパラメーターを –1 に設定し、ブロックを Triggered Subsystem 内に配置します。その後、目的のサンプル時間でサブシステムをトリガーします。展開後にサンプル時間を変更する予定がない場合には、固定された有限のサンプル時間を指定してください。

プログラムでの使用

ブロック パラメーター: DiscreteTs
型: スカラー
値: 正のスカラー | –1
既定: 0.1

既定では、ブロックは制御信号を入力として受け取り、制御信号に実験の摂動を加えて端子 u+Δu に出力します。その後、次のブロック線図に示すように、この信号をプラント入力に送ります。

この既定の構成では、ブロックをコントローラーとプラントの間に挿入することが必要です。制御信号に摂動信号を自分で追加する場合は [摂動のみ] を選択します。この構成では、端子 Δu において、ブロックの出力に摂動信号のみが含まれます。次のブロック線図のように、たとえば Sum ブロックを使用して、この摂動信号をプラントに挿入します。

この構成では Frequency Response Estimator が閉ループの一部ではないため、ループ構成を中断せずにオプションでコメント アウトすることができます。

シミュレーション環境またはハードウェア要件に基づいて浮動小数点精度を指定します。

プログラムでの使用

ブロック パラメーター: BlockDataType
型: 文字ベクトル
値: 'double' | 'single'
既定: 'double'

実験の摂動信号の周波数と振幅を、ブロック パラメーターと外部端子のどちらを介して提供するかを指定します。

  • ブロック パラメーター[周波数] および [振幅] パラメーターを有効にする場合に選択します。

  • 外部端子w および amp 入力端子を有効にする場合に選択します。展開後に摂動信号の周波数と振幅を変更する場合はこのオプションを使用します。

プログラムでの使用

ブロック パラメーター: SineSource
型: 文字ベクトル、string
値: 'Block parameters' | 'External ports'
既定: 'Block parameters'

プラントの周波数応答を推定する周波数。ブロックは、摂動をこれらの各周波数で同時に挿入 ([実験モード][重ね合わせ] の場合) するか、順次挿入 ([実験モード][Sinestream] の場合) します。推定できる最も高い周波数はナイキスト周波数 π/Ts rad/s により制限されます。ここで、Ts[サンプル時間 (Ts)] パラメーターに設定した値です。

[実験モード][重ね合わせ] の場合、次のことが言えます。

  • 妥当な収束速度と推定の精度を維持するため、推定に約 20 ~ 30 個の周波数を使用するのが一般的です。指定する周波数の数は約 50 個以内にすることをお勧めします。

  • 最も低い周波数から最も高い周波数までの範囲を約 2 decade 以下に制限することをお勧めします。この制限によって、一部の周波数の応答が優勢に過ぎて、他の周波数での応答の推定に悪影響が出る可能性は小さくなります。

  • 重ね合わせモードと 50 を超える数の周波数を使用して Frequency Response Estimator ブロックを含むモデルを線形化しようとすると、エラーが発生することがあります。エラーには、"モデルは線形化に対して多すぎる要素を含んでいます。モデルのサイズを減らしてください。" と表示されます。線形化を完了するには、周波数応答推定器ブロックをコメント アウトするか、周波数の数を減らさなければなりません。

[実験モード][Sinestream] の場合、周波数の数や周波数範囲に推奨される制限はありません。ただし、sinestream 摂動は順番に処理されることから、周波数点を追加するごとに必要な実験時間は長くなります (詳細については、start/stop 入力端子を参照)。また、周波数範囲が広すぎると高周波数で高速サンプル時間の使用が必要になりますが、これは低周波数では非効率的です。

どちらのモードでも、閉ループ構成でブロックを使用する場合、開ループ帯域幅よりはるかに高い周波数では推定の精度が低くなる可能性があります。

ヒント

このパラメーターは調整できません。展開の後に周波数を指定するには、[励起信号ソース][外部端子] に設定して w 入力端子を使用します。詳細については、リアルタイムで使用するための周波数応答の推定アルゴリズムの展開を参照してください。

依存関係

このパラメーターを有効にするには、[励起信号ソース][ブロック パラメーター] に設定します。

プログラムでの使用

ブロック パラメーター: Frequencies
型: ベクトル
値: 正の実数値
既定: '[0.5 1 2]'

[周波数] パラメーターの値がラジアン/秒単位かヘルツ単位かを示します。

このパラメーターを有効にするには、[励起信号ソース][ブロック パラメーター] に設定します。

プログラムでの使用

ブロック パラメーター: FreqUnits
型: string、文字ベクトル
値: 'rad/s''Hz'
既定: 'rad/s'

プラントに挿入される摂動信号の振幅を指定します。すべての周波数に同じ振幅を使用するには、スカラー値を指定します。推定する周波数の範囲内で応答が大きく変化することがわかっている場合、ベクトルを使って各周波数に別々の振幅を指定できます。たとえば、既知の共振周波数の周りで小さい値を使用し、ロールオフ周波数より上では大きい値を使用することができます。ベクトルは [周波数] に指定するベクトルと同じ長さでなければなりません。

振幅は以下の条件を満たしていなければなりません。

  • 摂動がプラント アクチュエータのすべての不感帯を克服してノイズ レベルを超える応答を生成できる程度に大きい

  • 定格操作点近傍のほぼ線形の領域内でプラントを実行し続け、プラントの入力または出力の飽和を回避できる程度に小さい

[実験モード][重ね合わせ] の場合、正弦波信号は位相シフトなしで重ね合わせられます。したがって最大摂動は、すべての振幅の総和を上限として、個々のどの成分の振幅よりも大きくなることがあります。取り得る最大摂動がプラント アクチュエータの範囲内に必ず収まるようにします。アクチュエータが飽和状態になると、推定周波数応答に誤りが発生することがあります。

ヒント

このパラメーターは調整できません。展開後に振幅を指定するには、[励起信号ソース][外部端子] に設定して amp 入力端子を使用します。詳細については、リアルタイムで使用するための周波数応答の推定アルゴリズムの展開を参照してください。

依存関係

このパラメーターを有効にするには、[励起信号ソース][ブロック パラメーター] に設定します。

プログラムでの使用

ブロック パラメーター: Amplitudes
型: スカラー、ベクトル
既定: '1'

外部端子 w を介して実験の周波数を提供する場合は、周波数の数 (w のベクトル信号の長さ) をこのパラメーターで指定します。

依存関係

このパラメーターを有効にするには、[励起信号ソース][外部端子] に設定します。

プログラムでの使用

ブロック パラメーター: NumOfFreq
型: スカラー
既定: '3'

各周波数での摂動を順番に適用 ([Sinestream]) するか、同時に適用 ([重ね合わせ]) するかを指定します。

  • Sinestream — このモードでは、摂動が各周波数で別々に適用されます。各周波数でシステムに許可される整定までの周期数を、[整定周期数] パラメーターを使用して指定します。応答を測定する周期の数を、[推定周期数] パラメーターを使用して指定します。推定に用いる sinestream 信号の詳細については、sinestream 入力信号を参照してください。

  • 重ね合わせ — このモードでは、指定された周波数がすべて一度に摂動信号に含められます。周波数のベクトル ω = [ω1, … , ωN]、振幅 A = [A1, … , AN] での周波数応答の推定の場合、摂動信号は次のようになります。

    Δu=iAisin(ωit).

    重ね合わせ信号内の周波数は約 50 個を超えないようにすることをお勧めします。

[Sinestream] モードは、[重ね合わせ] モードに比べてより正確な場合があり、より広範な周波数を受け入れることができます ([周波数] パラメーターを参照)。また、[Sinestream] モードでは、摂動の合計サイズが [振幅] パラメーターで指定されている値を超えることはないため、割り込みも少なくなります。ただし、sinestream 摂動は順番に処理されることから、周波数点を追加するごとに推奨される実験時間は長くなります (詳細については、[start/stop] 入力端子を参照)。したがって、推定実験は通常 [重ね合わせ] モードの方がはるかに高速で、満足できる結果が得られます。

ヒント

重ね合わせモードと 50 を超える数の周波数を使用して Frequency Response Estimator ブロックを含むモデルを線形化しようとすると、エラーが発生することがあります。エラーには、"モデルは線形化に対して多すぎる要素を含んでいます。モデルのサイズを減らしてください。" と表示されます。線形化を完了するには、周波数応答推定器ブロックをコメント アウトするか、周波数の数を減らさなければなりません。

プログラムでの使用

ブロック パラメーター: ExperimentMode
型: 文字ベクトル、string
値: 'Sinestream' | 'Superposition'
既定: 'Sinestream'

sinestream 実験モードでは、ブロックは [周波数] に指定された各周波数で別々に摂動を挿入します。[整定周期数] を使用して、各周波数で推定を開始する前に待機する時間を指定します。待機することでプラント応答にある過渡状態をすべて減衰させ、推定された周波数応答の精度を高めます。待機する周期数が増えると推定の精度は改善されますが、実験時間は長くなります。

すべての周波数に同数の整定周期を使用するには、正のスカラー値を指定します。推定する周波数の範囲内で過渡状態の整定速度に違いのあることがわかっている場合は、ベクトルを使って各周波数に別々の整定周期数を指定できます。

推定に用いる sinestream 信号の詳細については、sinestream 入力信号を参照してください。

調整可能: Yes

依存関係

このパラメーターを有効にするには、[実験モード][Sinestream] を選択します。

プログラムでの使用

ブロック パラメーター: NumOfSetPeriod
型: 整数、整数のベクトル
既定: '2'

sinestream 実験モードでは、ブロックは [周波数] に指定された各周波数で別々に摂動を挿入します。[推定周期数] を使用して、各周波数での推定に使用する挿入信号の周期数を指定します。使用する周期数が増えると推定の精度は改善されますが、実験時間は長くなります。

すべての周波数に同数の推定周期を使用するには、2 以上のスカラー値を指定します。ベクトルを使用して各周波数に異なる数の整定周期を指定することもできます。この方法は、一部の周波数でシステムのノイズが少ないことがわかっている場合や、一部の周波数での精度についてはさほど心配がない場合に便利です。

推定に用いる sinestream 信号の詳細については、sinestream 入力信号を参照してください。

調整可能: Yes

依存関係

このパラメーターを有効にするには、[実験モード][Sinestream] を選択します。

プログラムでの使用

ブロック パラメーター: NumOfEstPeriod
型: 整数、整数のベクトル
既定: '4'

重ね合わせ実験モードでは、実験の実行中に、ブロックがすべての周波数で同時に摂動を適用します。ブロックはこのパラメーターを使用して、推定に使用するデータ収集ウィンドウの長さを決定します。データ収集ウィンドウの詳細については、重ね合わせモードにおける実験の長さとデータ収集のウィンドウを参照してください。

依存関係

このパラメーターを有効にするには、[実験モード][重ね合わせ] を選択します。

プログラムでの使用

ブロック パラメーター: NumOfSlowestPeriod
型: 整数
既定: '3'

周波数応答の推定の計算をオンラインで実行するか、それとも後ほどオフラインで推定するために、周波数応答データの収集のみを行うかを指定します。

  • オンライン — ブロックは実験の実行中に実験データを収集し、推定された周波数応答を計算します。結果である推定された周波数応答は frd 端子で取得できます (詳細については、この端子の説明を参照)。

  • オフライン — ブロックは実験データの収集のみを行い、推定された周波数応答を計算しません。実験データは data 端子で取得できます (詳細については、この端子の説明を参照)。その後、周波数応答の推定をオフラインで実行できます。たとえば、frestimate コマンドにより、MATLAB にあるデータを使用して推定された周波数応答を計算することができます。詳細については、オフライン推定のための周波数応答実験データの収集を参照してください。

プログラムでの使用

ブロック パラメーター: EstimationMode
型: 文字ベクトル、string
値: 'Online' | 'Offline'
既定: 'Online'

選択して、推定された周波数応答を示すボード線図を生成します。プロットは推定実験中に定期的に更新されます。予想されるプラント応答や他の関連ベースラインを表す LTI モデルがある場合は、[ベースラインのプラント モデル] パラメーターを使用してプロットに参照として含めます。

ヒント

  • Frequency Response Estimator ブロックを含むモデルの平衡化または線形化を高速にするには、このパラメーターをオフにします。

プログラムでの使用

ブロック パラメーター: UseBodePlot
型: 文字ベクトル、string
値: 'off' | 'on'
既定: 'off'

推定された周波数応答と共にプロットするベースライン モデルを指定します。tfssfrd モデルなどの LTI モデルを使用します。

例: tf(10,[1 10 1000])

依存関係

このパラメーターを有効にするには、[ボード線図の表示] を選択します。

プログラムでの使用

ブロック パラメーター: BaselinePlant
型:LTI モデル
既定: '[]'

周波数応答の推定実験の最中、ブロックはこのパラメーターに指定された頻度で、ボード線図の推定された周波数応答を更新します。ボード線図の更新に時間がかかりすぎる場合は値を増やします。

依存関係

このパラメーターを有効にするには、[ボード線図の表示] を選択します。

プログラムでの使用

ブロック パラメーター: PlotRefreshFactor
型: 整数
既定: '100'

詳細

すべて展開する

アルゴリズム

すべて展開する

参照

[1] Wellstead, P. E. Technical Report 10: Frequency Response Analysis. Farnborough, Hampshire, UK: Solartron Instruments, 1997.

拡張機能

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。

バージョン履歴

R2019a で導入