ドキュメンテーション

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

制御システムの解析と設計における対象信号のマーク

解析ポイント

制御システムをモデル化するのが MATLAB® であれ Simulink® であれ、モデル内で対象とするポイントは "解析ポイント" を使用してマークします。解析ポイントにより、内部信号へのアクセス、開ループ解析の実行、あるいはコントローラー調整の要件の指定が可能になります。ブロック線図表現での解析ポイントは、1 つのブロックから別のブロックに流れる信号へのアクセス端子と考えることができます。Simulink では、解析ポイントは Simulink ブロックの出力端子に取り付けられます。たとえば、次のモデルの基準信号 r および制御信号 u は、それぞれ setpoint ブロックと C ブロックの出力から生じる解析ポイントです。

各解析ポイントは、以下の目的を 1 つ以上果たすことができます。

  • 入力 — ある解析ポイントに、加法的入力信号がソフトウェアによって与えられます。たとえば、プラント入力における外乱をモデル化するためにこれを行います。

  • 出力 — あるポイントにおける信号の値がソフトウェアによって測定されます。たとえば、プラント出力における外乱の影響を調べるためにこれを行います。

  • ループ開始点 — あるポイントにおける信号の流れの中断がソフトウェアによって挿入されます。たとえば、プラント入力における開ループ応答を調べるためにこれを行います。

これらの目的は同時に適用できます。たとえば、u から y への開ループ応答を計算する際は、u をループ開始点と入力の両方として扱うことが可能です。解析ポイントを複数の目的に使用する場合、ソフトウェアは常にこれらの目的を、まず出力測定、次にループ開始点、その次に入力、という特定の順序で適用します。

解析ポイントを使用して、制御システム モデルから開ループ応答および閉ループ応答を抽出できます。たとえば、T は上の図のモデルの閉ループ システムを表し、uy は解析ポイントとしてマークされていると想定します。T は、一般化状態空間モデルにも、Simulink モデルの slLinearizer または slTuner インターフェイスにもなります。プラント入力におけるステップ外乱に対する閉ループ応答は、次のコマンドを使用してプロットできます。

Tuy = getIOTransfer(T,'u','y');
stepplot(Tuy)

また、解析ポイントは、systune コマンドで制御システムを調整する際に設計要件を指定するのにも有用です。たとえば、プラント入力における外乱を 10 倍 (20 dB) 以上減衰させる要件を作成することができます。

Req = TuningGoal.Rejection('u',10);

MATLAB モデルでの解析ポイントの指定

次のブロック線図の LTI モデルについて考えます。

G = tf(10,[1 3 10]);
C = pid(0.2,1.5);
T = feedback(G*C,1);

このモデルで、r から y への閉ループ応答を取得できます。しかし、プラント入力における開ループ応答の解析や、プラント入力におけるステップ外乱の抑制のシミュレーションは実行できません。そのような解析を可能にするには、プラントとコントローラーの間に AnalysisPoint ブロックを挿入することで、信号 u を解析ポイントとしてマークします。

AP = AnalysisPoint('u');
T = feedback(G*AP*C,1);
T.OutputName = 'y';

これで、プラント入力 u が解析できるようになりました。

モデル T の作成に際しては、解析ポイントブロック AP を手動で作成し、これをフィードバック ループに明示的に含めました。connect コマンドを使用してモデルを組み合わせる場合は、解析ポイントが指定位置に自動的に挿入されるようソフトウェアに指示できます。詳細については、connect を参照してください。

Simulink モデルでの解析ポイントの指定

Simulink では、解析ポイントをブロック線図内で明示的にマークするか、slLinearizer または slTuner インターフェイスで addPoint コマンドを使用してプログラムによりマークすることができます。

モデル内の解析ポイントを明示的にマークするには、信号を右クリックし、[線形解析ポイント] で解析ポイントのタイプを選択します。

次の閉ループ解析ポイント タイプから任意に選択できます。これらは特定の slLinearizer または slTuner インターフェイス内で等価であり、getIOTransfer などの解析関数と TuningGoal.StepTracking などの調整目標によって同様に処理されます。

  • 入力の摂動

  • 出力の測定

  • 感度

  • 相補感度

信号で永続的なループ開始点を導入する場合にも、次の開ループ解析ポイント タイプのいずれかを選択します。

  • 開ループの入力

  • 開ループの出力

  • ループ伝達

  • ループの中断

信号を開ループ ポイントとして定義すると、getIOTransfer などの解析関数は、線形化中に常にその信号でループの中断を適用します。開ループ解析ポイントのタイプはすべて、特定の slLinearizer または slTuner インターフェイス内で等価です。線形化中にソフトウェアでループ開始点がどのように処理されるかの詳細については、ソフトウェアでループ開始点を処理する方法を参照してください。

モデルに slLinearizer または slTuner インターフェイスを作成すると、モデルで定義されているすべての解析ポイントがインターフェイスに自動的に追加されます。解析ポイントの定義方法に応じて次が行われます。

  • 閉ループ タイプの場合、信号は解析ポイントとしてのみ追加されます。

  • 開ループ タイプの場合、信号は解析ポイントと永続的な開始点の両方として追加されます。

解析ポイントをプログラムでマークするには、addPoint コマンドを使用します。たとえば、scdcascade モデルについて考えてみます。

open_system('scdcascade')

解析ポイントをマークするには、まず slTuner インターフェイスを作成します。

ST = slTuner('scdcascade');

信号を解析ポイントとして追加するには、addPoint コマンドを使用して信号のソース ブロックおよび端子番号を指定します。

addPoint(ST,'scdcascade/C1',1);

ソース ブロックの出力端子が 1 つの場合、端子番号を省略できます。

addPoint(ST,'scdcascade/G2');

便宜上、次を使用して解析ポイントをマークすることもできます。

  • 信号の名前。

    addPoint(ST,'y2');
    
  • ソース ブロック パスと端子番号の組み合わせ。

    addPoint(ST,'scdcascade/C1/1')
    
  • ソース ブロックの絶対パスの末尾 (確定的な場合)。

    addPoint(ST,'G1/1')
    

addOpening コマンドを使用して addPoint と同じ方法で信号を指定することで、slLinearizer または slTuner インターフェイスに永続的な開始点を追加することもできます。線形化中にソフトウェアでループ開始点がどのように処理されるかの詳細については、ソフトウェアでループ開始点を処理する方法を参照してください。

addOpening(ST,'y1m');

linio コマンドを使って線形化 I/O オブジェクトを作成する方法で解析ポイントを作成することもできます。

io(1) = linio('scdcascade/C1',1,'input');
io(2) = linio('scdcascade/G1',1,'output');
addPoint(ST,io);

モデル内に直接解析ポイントを定義する場合と同様に、線形化 I/O オブジェクトの指定方法に応じて次が行われます。

  • 閉ループ タイプの場合、信号は解析ポイントとしてのみ追加されます。

  • 開ループ タイプの場合、信号は解析ポイントと永続的な開始点の両方として追加されます。

線形解析ツールや制御システム調整器などのツールで応答 I/O を指定する場合は、必要に応じて解析ポイントが作成されます。

解析と調整での解析ポイントの参照

解析ポイントをマークすると、次の解析関数を使用して、マークした任意のポイントにおける応答を解析できるようになります。

  • getIOTransfer — 指定された入出力の伝達関数

  • getLoopTransfer — 指定されたポイントでの加法的入力から同じポイントでの測定値への開ループ伝達関数

  • getSensitivity — 指定されたポイントでの感度関数

  • getCompSensitivity — 指定されたポイントでの相補感度関数

また、これらのポイントにおけるシステム応答を制約する調整目標を作成することもできます。これらの操作を実行するためのツールは、コマンド ラインで作成したモデルでも Simulink で作成したモデルでも同様の動作をします。

使用可能な解析ポイントを表示するには、関数 getPoints を使用します。作成されたモデルの解析を次の方法で表示できます。

  • コマンド ライン:

  • Simulink:

コマンド ラインで作成された閉ループ モデルの場合、次の処理でもモデルの入力名と出力名を使用することができます。

  • 閉ループ応答の計算。

    ioSys = getIOTransfer(T,'u','y');
    stepplot(ioSys)
    

  • 開ループ応答の計算。

    loopSys = getLoopTransfer(T,'u',-1);
    bodeplot(loopSys)
    

  • systune の調整目標の作成。

    R = TuningGoal.Margins('u',10,60);
    

同じ方法を使用して、Simulink で作成されたモデルの解析ポイントを参照します。Simulink モデルでは便宜上、getPoints によって返された解析ポイント名の略称が確定していれば、それを使用できます。

ioSys = getIOTransfer(ST,'u1','y1');
sensG2 = getSensitivity(ST,'G2');
R = TuningGoal.Margins('u1',10,60);

さらに、いくつかの解析ポイントがベクトル値の信号またはマルチチャネルの位置にある場合は、インデックスを使用して特定の要素またはチャネルを選択できます。たとえば、u が閉ループ MIMO モデル内の 2 つの要素をもつベクトルであると仮定します。

G = ss([-1 0.2;0 -2],[1 0;0.3 1],eye(2),0);
C = pid(0.2,0.5);
AP = AnalysisPoint('u',2);
T = feedback(G*AP*C,eye(2));
T.OutputName = 'y';

2 番目のチャネルの開ループ応答を計算し、1 番目のチャネルに対する外乱の影響を測定することができます。

L = getLoopTransfer(T,'u(2)',-1);
stepplot(getIOTransfer(T,'u(1)','y'))

調整目標を制御システム調整器で作成する場合は、必要に応じて解析ポイントが作成されます。

参考

| | |