Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

frest.findSources

名前空間: frest

時変ソース ブロックを特定します。

    説明

    Simulink® モデルの時変ソース ブロックは、線形化システムの操作点からモデルを離して、周波数応答推定を妨げる可能性があります。関数 frest.findSources を使用して、モデル内のそのような時変ソースを特定できます。次に、frestimate を使用して周波数応答を推定する前に、特定したソースを無効にすることができます。詳細については、周波数応答推定に対する時変ソース ブロックの影響を参照してください。

    blocks = frest.findSources(model) は、Simulink モデル model でマークされた任意の線形化出力ポイントの信号パスですべての時変ソース ブロックを検出します。

    blocks = frest.findSources(model,io) は、線形解析ポイント io の配列内で指定された任意の線形化出力ポイントの信号パスですべての時変ソース ブロックを検出します。

    すべて折りたたむ

    時変ソース ブロックを含むモデルを開きます。

    mdl = "scdspeed_ctrlloop";
    open_system(mdl)

    正確な線形化のために、エンジン参照モデルをノーマル シミュレーション モードに設定します。

    set_param("scdspeed_ctrlloop/Engine Model",...
        "SimulationMode","Normal")

    モデルで定義されている線形解析ポイントを取得します。

    io = getlinio(mdl);

    時変ソース ブロックを無効にすることなく、モデルの周波数応答を推定します。sinestream 入力信号を定義し、推定周波数応答 sysest を定義します。

    in = frest.Sinestream(...
        "Frequency",logspace(1,2,10),...
        "NumPeriods",30,...
        "SettlingPeriods",25);
    [sysest,simout] = frestimate(mdl,io,in);

    推定結果に対する時変ソースの影響を表示するには、モデルの正確な線形化を計算して推定応答と比較します。

    sys = linearize(mdl,io);
    bodemag(sys,sysest,'r*')

    推定される周波数応答は正確な線形化とは一致しません。モデル内の時変ソース ブロックにより応答が安定状態にならないために、このような不一致が発生します。

    時変ソース ブロックを見つけます。

    srcblks = frest.findSources(mdl); 

    ソース ブロックを無効にするには、まず frestimateOptions オブジェクトを作成して、BlocksToHoldConstant パラメーターを時変ソース ブロックに設定します。

    opts = frestimateOptions("BlocksToHoldConstant",srcblks);

    時変ソース ブロックを無効にした状態で周波数応答を推定します。

    [sysest2,simout2] = frestimate(mdl,io,in,opts);

    推定応答 sysest2 と正確な線形化の結果を比較します。

    bodemag(sys,sysest2,'r*')

    推定応答は正確な線形化に一致しています。

    入力引数

    すべて折りたたむ

    時変ソースを識別する Simulink モデルの名前。

    入力、出力、およびループ開始点を表す線形解析ポイント。線形化 I/O オブジェクトまたはそのようなオブジェクトの配列として指定します。関数 frest.findSourcesio 内の線形化出力ポイントのみを使用します。

    線形解析ポイントの指定の詳細については、モデルの一部を線形化するよう指定およびコマンド ラインを使用したモデルの一部の線形化の指定を参照してください。

    出力引数

    すべて折りたたむ

    時変ソース ブロック。BlockPath オブジェクトの配列として返されます。blocks にはサブシステムおよびノーマルモードの参照モデル内の時変ソース ブロックが含まれています。

    io を指定した場合、blocks には io の出力解析ポイントで信号に影響を与えるすべての時変ソース ブロックが含まれます。

    io を指定しない場合、blocks には model でマークされた出力解析ポイントで信号に影響を与えるすべての時変ソース ブロックが含まれます。モデルでの解析ポイント指定の詳細については、Simulink モデルでモデルの一部を線形化する指定を参照してください。

    ヒント

    • 周波数応答推定時に時変ソース ブロックを無効にするには、まず frestimateOptions オブジェクトを作成して、その BlocksToHoldConstant プロパティを blocks または blocks のサブセットに設定します。次に、関数 frestimate を使用して周波数応答を推定します。

    • model に、線形化出力ポイントの信号パス内にソース ブロックを含んでいる参照モデルが含まれている場合、frest.findSources を使用してソースを見つける前に参照モデルをノーマル シミュレーション モードに設定します。

    代替機能

    • Simulink モデル アドバイザーを使用して、モデル内の出力線形解析ポイントの信号パスに時変ソース ブロックが存在するかどうかを調べることができます。そのためには、モデル アドバイザー チェックSimulink Control Design のチェックを使用します。モデル アドバイザーの使用の詳細については、モデル アドバイザーを使用したモデルのチェックを参照してください。

    • モデル線形化器アプリで周波数応答を推定する際に、モデル内の時変ソースを見つけて無効にすることができます。

    バージョン履歴

    R2010b で導入