Main Content

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

slLinearizer

Simulink モデルのバッチ線形化のインターフェイス

    説明

    slLinearizer は、Simulink® モデルと、線形化コマンド getIOTransfergetLoopTransfergetSensitivity および getCompSensitivity との間のインターフェイスを提供します。slLinearizer を使用して、モデルを効率的にバッチ線形化します。

    操作点の範囲でモデルを線形化するように slLinearizer インターフェイスを設定し、モデルのパラメーター値の変化を指定できます。解析ポイントおよび永続的な開始点を使用して、モデルから任意の開ループまたは閉ループの伝達関数の線形化を取得できます。次に、線形化されたモデルの安定性、または時間領域や周波数領域の特性を解析できます。

    いずれかの解析ポイントまたは開始点を追加または削除するか、その他のインターフェイス プロパティを変更した場合、slLinearizer インターフェイスから線形化を抽出するコマンドにより Simulink モデルが再コンパイルされます。

    モデルの線形化は、slLinearizer インターフェイスのプロパティのいずれかを変更すると自動的に更新されます。この更新は、getIOTransfergetLoopTransfergetSensitivitygetCompsensitivity など、インターフェイスに格納されている線形化をクエリするコマンドの呼び出し時に実行されます。

    slLinearizer インターフェイスは、正確な線形化アルゴリズムで説明されているアルゴリズムを使用して、Simulink モデルを線形化します。

    作成

    説明

    sllin = slLinearizer(model) は、Simulink モデルの model を線形化するための slLinearizer インターフェイスを返し、Model プロパティを設定します。このインターフェイスにより、解析ポイントとしてモデルでマークされた線形解析ポイントが追加され、また永続的な開始点として開始点を暗黙的に示す線形解析ポイントも追加されます。

    sllin = slLinearizer(model,pt) は、pt 内の解析ポイントを解析ポイントのリストに追加します。モデルでマークされた線形解析ポイントは無視します。

    sllin = slLinearizer(model,param) は、モデルを線形化する際に変化させる値をもつパラメーターを指定し、Parameters プロパティを param に設定します。

    sllin = slLinearizer(model,op) は、モデルを線形化する際の操作点を指定し、OperatingPoints プロパティを op に設定します。

    sllin = slLinearizer(model,blocksub) は、ブロックおよびサブシステムの代替の線形化を指定し、BlockSubstitutions プロパティを blocksub に設定します。この構文を使用して、たとえば、ブロックのカスタム線形化を指定します。また、不連続性や Triggered Subsystem のあるブロックのように、正常に線形化されないブロックでこの構文を使用することもできます。

    sllin = slLinearizer(model,opt) は、線形化アルゴリズムのオプションを構成し、Options プロパティを opt に設定します。

    sllin = slLinearizer(model,pt,op,param,blocksub,options) は、ptopparamblocksub および options の任意の組み合わせを任意の順序で使用して slLinearizer インターフェイスを作成します。

    pt を指定しない場合、インターフェイスによりモデルでマークされた線形解析ポイントが解析ポイントとして追加されます。このインターフェイスでは、開始点を示す線形解析ポイントも永続的な開始点として追加されます。

    入力引数

    すべて展開する

    slLinearizer インターフェイスに追加する解析ポイント。次のいずれかとして指定します。

    • 文字ベクトルまたは string — 解析ポイントの識別子。次のいずれかを指定できます。

      • 信号名 (pt = 'torque' など)

      • 出力端子が 1 つのブロックのブロック パス (pt = 'Motor/PID' など)

      • 信号の発信元のブロック パスおよび端子 (pt = 'Engine Model/1' など)

    • 文字ベクトルの cell 配列または string 配列 — 複数の解析ポイント識別子を指定します。以下に例を示します。

      pt = {'torque','Motor/PID','Engine Model/1'}
    • 線形化 I/O オブジェクトのベクトル — linio を使用して pt を作成します。以下に例を示します。

      pt(1) = linio('scdcascade/setpoint',1,'input');
      pt(2) = linio('scdcascade/Sum',1,'output');

      ここでは、pt(1) で入力を指定し、pt(2) で出力を指定します。

      このインターフェイスにより、pt で指定されたすべてのポイントが追加され、それらの I/O タイプは無視されます。このインターフェイスでは、永続的な開始点としてループ開始点を暗黙的に示すすべての信号も追加されます。

    詳細については、解析ポイントおよび永続的な開始点を参照してください。

    プロパティ

    すべて展開する

    モデル名。文字ベクトルまたは string として指定します。

    線形化アルゴリズムのオプション。linearizeOptions オブジェクトとして指定します。

    モデルを線形化するための操作点。以下として指定します。

    • OperatingPoint または OperatingReport オブジェクト。findop を使用して単一の操作点仕様または単一のスナップショット時間で作成されます。

    • OperatingPoint または OperatingReport オブジェクトの配列。複数の操作点を指定するものです。

      OperatingPoint または OperatingReport オブジェクトの配列を作成するには、次の方法があります。

    • シミュレーションのスナップショット時間を指定する正のスカラーのベクトル。

    Parameters プロパティを構成した場合、OperatingPoints を次のいずれかとして指定します。

    • 単一の OperatingPoint または OperatingReport オブジェクト。

    • Parameters プロパティで指定されたパラメーター グリッドのサイズと一致するサイズをもつ OperatingPoint または OperatingReport オブジェクトの配列。mdl をバッチ線形化する場合、ソフトウェアは 1 つのモデルのコンパイルのみを使用します。パラメーター値の組み合わせに対応する操作点を取得するには、線形化の前に param を使用してモデルをバッチ平衡化します。linearize コマンドを使用する例については、パラメーターの変化から派生した複数の操作点でのモデルのバッチ線形化を参照してください。

    • 複数のスナップショット時間。mdl をバッチ線形化する場合、ソフトウェアはスナップショット時間とパラメーター グリッド点の組み合わせごとにモデルをシミュレートします。この操作では、計算量が増大する場合があります。

    OperatingPoints を指定しなかった場合、slLinearizer インターフェイスはモデル初期状態を使用します。

    モデルを線形化するためのパラメーター サンプル。次のいずれかとして指定します。

    • 構造体 — 次のフィールドをもつ構造体としてパラメーターを指定して、単一パラメーターの値を変化させます。

      • Name — パラメーター名。文字ベクトルまたは string として指定します。モデル ワークスペース、MATLAB® ワークスペース、またはデータ ディクショナリ内の変数である任意のモデル パラメーターを指定できます。モデルによって使用される変数がスカラー値でない場合は、スカラー数値に関連付けられた表現としてパラメーター名を指定します。たとえば、ベクトル V の最初の要素をパラメーターとして使用します。

        parameters.Name = 'V(1)';
      • Value — パラメーター サンプル値。double の配列として指定します。

      たとえば、パラメーター A の値を 10% の範囲内で変化させます。

      parameters.Name = 'A';
      parameters.Value = linspace(0.9*A,1.1*A,3);
    • 構造体配列 — 複数のパラメーターの値を変化させます。たとえば、パラメーター A および b の値を 10% の範囲内で変化させます。

      [A_grid,b_grid] = ndgrid(linspace(0.9*A,1.1*A,3),...
                               linspace(0.9*b,1.1*b,3));
      parameters(1).Name = 'A';
      parameters(1).Value = A_grid;
      parameters(2).Name = 'b';
      parameters(2).Value = b_grid;

    詳細については、バッチ線形化用のパラメーター サンプルの指定を参照してください。

    Parameters で調整可能なパラメーターのみを指定する場合、ソフトウェアはモデルのコンパイルを 1 回のみ実行して、モデルをバッチ線形化します。OperatingPoints プロパティを操作点オブジェクトのみで構成する場合も、ソフトウェアはモデルのコンパイルを 1 回のみ実行します。

    パラメーター サンプリングによるバッチ線形化がどのように機能するかを示す例については、パラメーター値を変化させて複数の伝達関数を取得を参照してください。

    LPV System ブロックに必要なオフセットを計算するには、Parameters を指定し、Options.StoreOffsetstrue に設定します。その後、getIOTransfer などの線形化関数を呼び出す際に追加の線形化情報を返したり、getOffsetsForLPV を使用してオフセットを抽出したりすることができます。

    ブロックおよびモデル サブシステムの代替の線形化。構造体または n 行 1 列の構造体配列として指定します。n は、線形化を指定するブロックの数です。BlockSubstitutions を使用して、ブロックまたはサブシステムのカスタム線形化を指定します。たとえば、不連続性や Triggered Subsystem のあるブロックのように解析的な線形化をもたないブロックに線形化を指定できます。

    ブロックの線形化を変化させることで生じるモデルのダイナミクスへの影響を調べるには、ブロックに複数の代替の線形化を指定してモデルをバッチ線形化することができます。

    線形化を元のブロックまたはサブシステムと異なるサンプル時間に置き換える場合は、全体の線形化サンプル時間 (Options.SampleTime) を既定以外の値に設定することをお勧めします。

    代替線形化の各構造体には次のフィールドがあります。

    線形化を指定するブロックのブロック パス。文字ベクトルまたは string として指定します。

    ブロックの代替の線形化。次のいずれかとして指定します。

    • double — SISO ブロックの線形化をゲインとして指定します。

    • double の配列 — MIMO ブロックの線形化を nu 行 ny 列のゲイン値の配列として指定します。ここで nu は入力の数、ny は出力の数です。

    • LTI モデル、不確かさをもつ状態空間モデル、または不確かさをもつ実数のオブジェクト — 指定されたモデルの I/O 構成が、Name で指定されるブロックの構成に一致しなければなりません。不確かさをもつモデルの使用には Robust Control Toolbox™ ソフトウェアが必要です。

    • LTI モデルの配列、不確かさをもつ状態空間モデルの配列、または不確かさをもつ実数のオブジェクトの配列 — 複数のブロック置換を使用してモデルをバッチ線形化します。配列にある各モデルの I/O 構成は、カスタム線形化を指定しているブロックの構成に一致しなければなりません。次のように指定します。

      • Parameters プロパティでモデル パラメーターを変化させ、Value をモデル配列として指定する場合、Value の次元はパラメーター グリッドのサイズに一致しなければなりません。

      • 複数のブロックでブロック置換を定義し、複数のブロックで Value を LTI モデルの配列として指定する場合、これらの配列の次元が一致しなければなりません。

    • 次のフィールドをもつ構造体。

      フィールド説明
      Specification

      ブロックの線形化。次のいずれかを含む文字ベクトルとして指定します。

      指定された式または関数が次のいずれかを返さなければなりません。

      • D 行列形式の線形モデル

      • Control System Toolbox™ LTI モデル オブジェクト

      • 不確かさをもつ状態空間モデル、または不確かさをもつ実数のオブジェクト (Robust Control Toolbox ソフトウェアが必要)

      返されるモデルの I/O 構成は、Name で指定されたブロックの構成に一致しなければなりません。

      Type

      仕様のタイプ。次のいずれかとして指定します。

      • 'Expression'

      • 'Function'

      ParameterNames

      線形化関数のパラメーター名。文字ベクトルの cell 配列として指定します。ParameterNames は、Type = 'Function' であり、かつブロックの線形化関数が入力パラメーターを必要とする場合にのみ指定します。これらのパラメーターは、指定されたブロックの線形化にのみ影響を与えます。

      対応する ParameterValues フィールドも指定しなければなりません。

      ParameterValues

      線形化関数のパラメーター値。double のベクトルとして指定します。パラメーター値の順序は、ParameterNames フィールドのパラメーター名の順序に一致していなければなりません。ParameterValues は、Type = 'Function' であり、かつブロックの線形化関数が入力パラメーターを必要とする場合にのみ指定します。

    getIOTransfergetLoopTransfergetSensitivity、および getCompSensitivity で計算される線形化モデルの時間単位。次のいずれかの値として指定します。

    • 'nanoseconds'

    • 'microseconds'

    • 'milliseconds'

    • 'seconds'

    • 'minutes'

    • 'hours'

    • 'days'

    • 'weeks'

    • 'months'

    • 'years'

    オブジェクト関数

    addPointslLinearizer または slTuner インターフェイスの解析ポイントのリストに信号を追加
    addOpeningslLinearizer または slTuner インターフェイスの開始点リストに信号を追加
    addPointslLinearizer または slTuner インターフェイスの解析ポイントのリストに信号を追加
    getPointsslLinearizer または slTuner インターフェイスの解析ポイントのリストを取得
    getOpeningsslLinearizer または slTuner インターフェイスの開始点のリストを取得
    getIOTransferslLinearizer または slTuner インターフェイスを使用して指定された I/O セットの伝達関数
    getLoopTransferslLinearizer または slTuner インターフェイスを使用した指定点での開ループ伝達関数
    getSensitivityslLinearizer または slTuner インターフェイスを使用した指定された点での感度関数
    getCompSensitivityslLinearizer または slTuner インターフェイスを使用する、指定された点での相補感度関数
    removePointslLinearizer または slTuner インターフェイスの解析ポイントのリストから点を削除
    removeAllPointsslLinearizer または slTuner インターフェイスの解析ポイントのリストからすべての点を削除
    removeAllOpeningsslLinearizer または slTuner インターフェイスの永続的な開始点のリストからすべての開始点を削除
    refreshslLinearizer または slTuner インターフェイスを現在のモデル状態と再同期

    すべて折りたたむ

    scdcascade モデルの slLinearizer インターフェイスを作成します。解析ポイントをインターフェイスに追加して、モデルから開ループまたは閉ループの伝達関数を抽出します。インターフェイスを設定してパラメーターおよび操作点を変化させます。

    scdcascade モデルを開きます。

    mdl = "scdcascade";
    open_system(mdl);
    

    モデルの slLinearizer インターフェイスを作成します。ru1、|u2|、y1、|y2|、y1my2m の各信号をインターフェイスに追加します。

    sllin = slLinearizer(mdl,["r","u1","u2","y1","y2","y1m","y2m"]);
    

    scdcascade には、C1C2 の 2 つの PID Controller ブロックが含まれています。C2Kp2、および Ki2 の比例ゲインと積分ゲインを 10% の範囲で変化させるとします。構造体を作成し、パラメーターの変化を指定します。

    Kp2_range = linspace(0.9*Kp2,1.1*Kp2,3);
    Ki2_range = linspace(0.9*Ki2,1.1*Ki2,5);
    
    [Kp2_grid,Ki2_grid] = ndgrid(Kp2_range,Ki2_range);
    
    params(1).Name = "Kp2";
    params(1).Value = Kp2_grid;
    
    params(2).Name = "Ki2";
    params(2).Value = Ki2_grid;
    

    params は 3 行 5 列のパラメーター グリッドを指定します。このグリッドの各点は、Kp2Ki2 のパラメーター値の組み合わせに対応します。

    sllinParameters プロパティとして params を指定します。

    sllin.Parameters = params;
    

    getIOTransfergetLoopTransfergetSensitivitygetCompSensitivity などのコマンドを使用すると、ソフトウェアは sllin.Parameters で指定されたそれぞれのパラメーター グリッド点の線形化を返します。

    たとえば t = {0,1,2} など、複数のスナップショット時間でモデルを線形化するとします。これを行うには、sllinOperatingPoints プロパティを設定します。

    sllin.OperatingPoints = [0 1 2];
    

    また、線形化オプションを設定して、モデル内のブロックおよびサブシステムの代替の線形化を指定することもできます。

    sllin を完全に設定した後、getIOTransfergetLoopTransfergetSensitivitygetCompSensitivity の各コマンドを使用して必要に応じてモデルを線形化します。たとえば、パラメーターの変化ごとに基準信号 r と出力 y1m の間の伝達関数を抽出し、そのステップ応答をプロットします。

    T = getIOTransfer(sllin,"r","y1m");
    stepplot(T)
    

    制限

    • ローカル ソルバーを使用するように構成されている参照モデルが含まれているモデルの階層構造では、線形化はサポートされていません。

    • ローカル ソルバーを使用するように構成されている Simscape™ ネットワークでは、線形化はサポートされていません。

    詳細

    すべて展開する

    代替方法

    slLinearizer インターフェイスに替わる方法として、次のいずれかの方法でモデルを線形化できます。たとえば、Simulink モデルのモデル操作点での線形化を参照してください。

    • モデルを対話的に線形化するには、モデル線形化器アプリを使用します。

    • 線形モデルを取得するために、関数 linearize を使用できます。

    ブロックごとの線形化は Simulink Control Design™ ソフトウェアと Simulink 関数 linmod の両方で実行されますが、Simulink Control Design の線形化機能ではより柔軟なユーザー インターフェイスが提供され、Control System Toolbox の数値アルゴリズムも使用されます。詳細については、Simulink Control Design を使用した線形化と Simulink を使用した線形化の比較を参照してください。

    バージョン履歴

    R2013b で導入

    すべて展開する