ドキュメンテーション

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

slLinearizer

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

構文

sllin = slLinearizer(mdl)
sllin = slLinearizer(mdl,pt)
sllin = slLinearizer(mdl,param)
sllin = slLinearizer(mdl,op)
sllin = slLinearizer(mdl,blocksub)
sllin = slLinearizer(mdl,options)
sllin = slLinearizer(mdl,pt,op,param,blocksub,options)

説明

sllin = slLinearizer(mdl) は、Simulink® モデル mdl を線形化するための slLinearizer インターフェイス sllin を作成します。このインターフェイスにより、モデルでマークされた線形解析ポイントが sllin解析ポイントとして追加されます。このインターフェイスでは、開始点を示す線形解析ポイントも永続的な開始点として追加されます。

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

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

sllin = slLinearizer(mdl,op) は、モデルを線形化する際の操作点を指定します。

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

sllin = slLinearizer(mdl,options) は、線形化アルゴリズムのオプションを構成します。

sllin = slLinearizer(mdl,pt,op,param,blocksub,options) では、入力引数 ptopparamblocksub および options の任意の組み合わせを使用して、sllin を作成します。

たとえば、次のいずれかを使用します。

  • sllin = slLinearizer(mdl,pt,param)

  • sllin = slLinearizer(mdl,op,param)

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

オブジェクトの説明

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

前回の線形化の後にいずれかのインターフェイス プロパティを変更していると、slLinearizer インターフェイスから線形化を抽出するコマンドにより Simulink モデルが再コンパイルされます。前回の線形化の後で特定の関数を呼び出した場合にも、Simulink モデルが再コンパイルされます。これらの関数には、addPointaddOpeningremovePointremoveOpeningremoveAllPoints および removeAllOpenings が含まれます。

すべて折りたたむ

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 列のパラメーター グリッドを指定します。このグリッドの各点は、Kp2 および Ki2 パラメーター値の組み合わせに対応します。

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

sllin.Parameters = params;

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

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

sllin.OperatingPoints = [0 1 2];

必要に応じて線形化オプションを設定して、モデル内のブロックおよびサブシステムの代替の線形化を指定できます。sllin を完全に設定した後、getIOTransfergetLoopTransfergetSensitivitygetCompSensitivity の各コマンドを使用して必要に応じてモデルを線形化します。

入力引数

すべて折りたたむ

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

例: 'scdcascade'

sllin の解析ポイントのリストに追加する解析ポイント。以下で指定します。

  • 文字ベクトルまたは 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 タイプは無視されます。このインターフェイスでは、'loopbreak' タイプのすべての信号も永続的な開始点として追加されます。

mdl を線形化するためのパラメーター サンプル。以下で指定します。

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

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

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

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

    param.Name = 'A';
    param.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));
    params(1).Name = 'A';
    params(1).Value = A_grid;
    params(2).Name = 'b';
    params(2).Value = b_grid;

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

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

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

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

mdl を線形化するための操作点。以下で指定します。

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

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

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

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

sllin.Parameters を設定する場合、op を以下のいずれかで指定します。

  • 単一の操作点。

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

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

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

ブロックに複数の代替線形化を指定して、モデルをバッチ線形化することができます。この機能は、たとえば Saturation ブロックの線形化を変化させたときにモデル ダイナミクスが受ける影響を調べるために使用します。

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

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

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

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

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

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

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

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

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

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

    フィールド説明
    Specification

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

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

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

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

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

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

    Type

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

    • 'Expression'

    • 'Function'

    ParameterNames

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

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

    ParameterValues

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

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

プロパティ

slLinearizer オブジェクトのプロパティには、以下が含まれます。

Parameters

mdl を線形化するためのパラメーター サンプル。構造体または構造体の配列として指定します。

param 入力引数またはドット表記 (sllin.Parameters = param) を使用してこのプロパティを設定します。param は以下のいずれかでなければなりません。

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

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

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

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

    param.Name = 'A';
    param.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));
    params(1).Name = 'A';
    params(1).Value = A_grid;
    params(2).Name = 'b';
    params(2).Value = b_grid;

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

OperatingPoints

mdl を線形化するための操作点。操作点オブジェクト、操作点オブジェクトの配列または正のスカラーの配列として指定します。

op 入力引数またはドット表記 (sllin.OperatingPoints = op) を使用してこのプロパティを設定します。op は以下のいずれかでなければなりません。

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

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

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

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

sllin.Parameters を設定する場合、op を以下のいずれかで指定します。

  • 単一の操作点。

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

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

BlockSubstitutions

ブロックおよびモデル サブシステムの代替の線形化。構造体または構造体の配列として指定します。

このプロパティを使用して、ブロックまたはサブシステムのカスタム線形化を指定します。また、不連続性や Triggered Subsystem のあるブロックのように、解析的な線形化のないブロックにこの構文を使用することもできます。

blocksub 入力引数またはドット表記 (sllin.BlockSubstitutions = blocksubs) を使用してこのプロパティを設定します。必要な構造体の詳細については、blocksub を参照してください。

Options

線形化アルゴリズムのオプション。linearizeOptions を使用して作成されたオプション セットとして指定します。

options 入力引数またはドット表記 (sllin.Options = options) を使用してこのプロパティを設定します。

Model

線形化する Simulink モデルの名前。入力引数 mdl で文字ベクトルとして指定します。

TimeUnit

時間変数の単位。このプロパティは、getIOTransfergetLoopTransfergetSensitivity および getCompSensitivity で返される線形化モデルの時間単位を指定します。以下のいずれかの値を使用します。

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

既定値: 'seconds'

オブジェクト関数

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

詳細

すべて折りたたむ

解析ポイント

"解析ポイント" は、slLinearizerslTuner インターフェイスで使用され、モデル内で線形解析と制御システムの調整に関連する箇所を示します。解析ポイントは、getIOTransfergetLoopTransfergetSensitivitygetCompSensitivity などの線形化コマンドの入力として使用します。線形化コマンドの入力として、解析ポイントによりモデル内の開ループまたは閉ループの伝達関数を指定できます。また、systune などのコマンドを使って制御システムを調整する際に、解析ポイントを使用して設計要件を指定することもできます。

"場所" とは、モデル内の特定のブロック出力端子か、そのような出力端子にあるバス要素を指します。便宜上、この端子から発信する信号の名前を使って解析ポイントを示すことができます。

解析ポイントは、slLinearizer または slTuner インターフェイス s に対して、インターフェイスの作成時に追加できます。以下に例を示します。

s = slLinearizer('scdcascade',{'u1','y1'});

また、addPoint コマンドを使用することもできます。

s のすべての解析ポイントを表示するには、コマンド プロンプトで s と入力してインターフェイスの内容を表示します。s の各解析ポイントの表示には、ブロック名、端子番号、およびこの解析ポイントから発信される信号の名前が含まれます。getPoints を使用して、すべての解析ポイントのリストをプログラムで取得することもできます。

解析ポイントの使用方法の詳細については、制御システムの解析と設計における対象信号のマークおよびバッチ線形化用に対象の信号をマークするを参照してください。

永続的な開始点

"永続的な開始点" とは、slLinearizer および slTuner インターフェイスで使用され、ソフトウェアがモデル内で信号の流れを中断する箇所を示します。線形化および調整時に、これらの開始点が強制的に適用されます。永続的な開始点は、ある特定のモデル コンポーネントを分離するために使用します。航空機のダイナミクスを取得する大規模なモデルがあり、機体にのみ線形解析を実行するとします。永続的な開始点を使用すれば、このモデルの他のコンポーネントをすべて除外できます。モデル内にカスケード式ループがあり、特定のループを解析する場合などにも使用できます。

"場所" とは、モデル内の特定のブロック出力端子を指します。便宜上、この端子から発信する信号の名前を使って開始点を示すことができます。

永続的な開始点は、slLinearizer または slTuner インターフェイス s に対して、インターフェイスの作成時に追加するか、addOpening コマンドを使用して追加できます。永続的な開始点のリストから場所を削除するには、removeOpening コマンドを使用します。

s のすべての開始点を表示するには、コマンド プロンプトで s と入力してインターフェイスの内容を表示します。s のそれぞれの永続的な開始点の表示には、ブロック名、端子番号、およびこの場所から発信される信号の名前が含まれます。getOpenings を使用して、すべての永続的なループ開始点のリストをプログラムで取得することもできます。

カスタムの線形化関数

MATLAB パスでカスタム関数を使用して、Simulink モデル内のブロックまたはサブシステムの代替の線形化を指定できます。

カスタムの線形化関数は 1 つの入力引数 BlockData をもたなければなりません。これは、ソフトウェアが作成して関数に渡す構造体です。BlockData には次のフィールドがあります。

フィールド説明
BlockNameカスタム線形化の指定対象となるブロックの名前。
Parametersブロック パラメーター値。Name フィールドと Value フィールドをもつ構造体配列として指定します。Parameters には、blocksub.Value.ParameterNames フィールドと blocksub.Value.ParameterValues フィールドで指定するパラメーターの名前と値が含まれます。
Inputs

線形化の定義対象のブロックへの入力信号。各ブロック入力ごとに構造体を 1 つもつ構造体配列として指定します。Inputs の各構造体には次のフィールドがあります。

フィールド説明
BlockName対応するブロック入力に接続する出力をもつブロックの絶対ブロック パス。
PortIndex対応するブロック入力に接続する、BlockName で指定されるブロックの出力端子。
ValuesBlockName および PortIndex で指定される信号の値。この信号がベクトル信号の場合、Values は同じ次元をもつベクトルです。
nyブロック線形化の出力チャネル数。
nuブロック線形化の入力チャネル数。
BlockLinearizationブロックの現在の既定の線形化。状態空間モデルとして指定します。BlockLinearization を使用して既定の線形化に依存するブロック線形化を指定できます。

カスタム関数は nu の入力と ny の出力をもつモデルを返さなければなりません。このモデルは次のいずれかでなければなりません。

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

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

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

たとえば、次の関数は現在の既定のブロック線形化を Td = 0.5 秒の遅延で乗算します。遅延はサンプル時間 Ts = 0.1 の Thiran フィルターで表されます。遅延とサンプル時間は BlockData に保存されているパラメーターです。

function sys = myCustomFunction(BlockData)
    Td = BlockData.Parameters(1).Value;
    Ts = BlockData.Parameters(2).Value;
    sys = BlockData.BlockLinearization*Thiran(Td,Ts);
end 

この関数を MATLAB パス上の場所に保存します。

この関数をブロックまたはサブシステムのカスタム線形化として使用するには、blocksub.Value.Specification フィールドと blocksub.Value.Type フィールドを指定します。

blocksub.Value.Specification = 'myCustomFunction';
blocksub.Value.Type = 'Function';

遅延およびサンプル時間のパラメーター値を設定するには、blocksub.Value.ParameterNames フィールドと blocksub.Value.ParameterValues フィールドを指定します。

blocksub.Value.ParameterNames = {'Td','Ts'};
blocksub.Value.ParameterValues = [0.5 0.1];

R2013b で導入