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

AnalysisPoint

線形解析の対象のポイント

構文

AP = AnalysisPoint(name)
AP = AnalysisPoint(name,N)

説明

AnalysisPoint は、線形解析およびコントローラー調整の対象のポイントとして制御システム モデル内の場所をマークするための制御設計ブロックです。AnalysisPoint ブロックを数値 LTI モデル、調整可能な LTI モデルおよび他の制御設計ブロックと組み合わせて、制御システムの調整可能なモデルを作成できます。AnalysisPoint の場所は、getIOTransfergetLoopTransfer などのコマンドによる解析で使用できます。そのような場所は、制御システムの調整の設計目標を指定するために使用することもできます。

たとえば、次の制御システムについて考えます。

この制御システムの u において加えられた外乱の影響に注目すると仮定します。AnalysisPoint ブロックを位置 u に挿入すると、次の図のように、暗黙的な入力と出力、およびその場所でループを開くオプションが関連付けられます。

TAnalysisPoint ブロック AP_u を含む制御システムのモデルであると仮定します。その場合、コマンド getIOTransfer(T,'AP_u','y') を実行すると、u から y までの閉ループ伝達関数のモデルが返されます。同様に、コマンド getLoopTransfer(T,'AP_u',-1) を実行すると、位置 u で測定された負のフィードバックの開ループ応答のモデル CG が返されます。

systune などの調整コマンドを使用して制御システムを調整する場合、AnalysisPoint ブロックも有益です。AnalysisPoint ブロックを使用して、TuningGoal.LoopShapeTuningGoal.Margins などの開ループ調整要件に対応するループ開始位置をマークできます。また、AnalysisPoint ブロックを使用して、TuningGoal.Gain などの調整要件に対応する、指定された入力や出力をマークすることもできます。たとえば、Req = TuningGoal.Margins('AP_u',5,40) により、位置 u においてゲインと位相余裕を制約します。

AnalysisPoint ブロックは、AnalysisPoint コマンドを使用して明示的に作成できます。また、モデルの相互接続コマンドを使用して他のブロック線図コンポーネントと接続できます。たとえば、次のコードは前述のシステムのモデルを作成します (詳細は、後述の構築およびを参照してください)。

G = tf(1,[1 2]);
C = tunablePID('C','pi');
AP_u = AnalysisPoint('u');
T = feedback(G*AP_u*C,1);      % closed loop r->y

解析ポイントは connect コマンドを使用して暗黙的に作成することもできます。次の構文では、複数のモデル sys1,sys2,...,sysN を相互接続することによって、動的システム モデルを解析ポイントと共に作成します。

sys = connect(sys1,sys2,...,sysN,inputs,outputs,APs);

APs は、解析ポイントを挿入する信号箇所をリストします。これらの箇所に対応するチャネルとともに AnalysisPoint ブロックが自動的に作成され、挿入されます。詳細は、connect を参照してください。

構築

AP = AnalysisPoint(name) により、単一チャネルの解析ポイントを作成します。AP を制御システムの一般化モデルの任意の場所に挿入して、線形解析またはコントローラー調整の対象のポイントをマークします。name はブロック名を指定します。

AP = AnalysisPoint(name,N) は、N 個のチャネルをもつマルチチャネルの解析ポイントを作成します。このブロックを使用して、ベクトル値の信号を対象のポイントとしてマークしたり、複数の対象のポイントを一緒にまとめます。

入力引数

name

解析ポイント名。'AP' などの文字ベクトルとして指定します。この入力引数は、AnalysisPoint ブロックの Name プロパティの値を設定します (プロパティを参照)。このブロックを使用して制御システム モデルを作成する場合、Name プロパティは、作成された genss モデルの Blocks リストに表示される内容になります。

N

マルチチャネル解析ポイントのチャネル数。スカラー整数として指定します。

プロパティ

Location

AnalysisPoint ブロックのチャネル名。文字ベクトルまたは文字ベクトルの cell 配列として指定します。

既定では、解析ポイントのチャネルは、name 引数に基づいて名前が付けられます。たとえば、'AP' という名前の単一チャネルの解析ポイント AP がある場合、既定では AP.Location = 'AP' となります。マルチチャネル解析ポイントがある場合、既定では AP.Location = {'AP(1)','AP(2)',...} となります。チャネル名をカスタマイズする場合は、AP.Location を別の値に設定します。

Open

ループ開始の状態。論理値または論理値のベクトルとして指定します。このプロパティは、解析ポイントでループが開いているか閉じているかを追跡します。

たとえば、次の図のフィードバック ループを考えます。

このフィードバック ループは次のようにモデル化できます。

G = tf(1,[1 2]);
C = tunablePID('C','pi');
X = AnalysisPoint('X');
T = feedback(G*C,X);

X で開いているフィードバック ループの r から y までの伝達関数を、次のように取得できます。

 Try = getIOTransfer(T,'r','y','X');

結果の一般化状態空間 (genss) モデルで、AnalysisPoint ブロック 'X' はオープンとしてマークされます。つまり、Try.Blocks.X.Open = 1 です。

マルチチャネル解析ポイントでは、Open は、解析ポイントがもつチャネル数と同数の要素をもつ logical ベクトルです。

既定値: すべてのチャネルに対して 0

Ts

サンプル時間。AnalysisPoint ブロックでは、このプロパティの値が、接続した他のブロックおよびモデルのサンプル時間に自動的に設定されます。

既定値: 0 (連続時間)

TimeUnit

モデル内の時間変数、サンプル時間 Ts および何らかのむだ時間の単位。以下のいずれかの値として指定します。

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

このプロパティを変更しても他のプロパティには影響しないため、システム全体の動作が変更されます。chgTimeUnit を使用して、システム動作を変更せずに時間単位を変換します。

既定値: 'seconds'

InputName

入力チャネル名。以下のいずれかとして指定します。

  • 文字ベクトル — 単入力モデルの場合 (たとえば 'controls' など)。

  • 文字ベクトルの cell 配列 — 多入力モデルの場合。

または、自動的なベクトル拡張を使用して多入力モデルの入力名を割り当てます。たとえば、sys が 2 入力モデルである場合は、以下のようになります。

sys.InputName = 'controls';

入力名は自動的に {'controls(1)';'controls(2)'} へと拡張されます。

省略形表記 u を使用して、InputName プロパティを参照できます。たとえば、sys.usys.InputName と同じです。

以下を含めて、入力チャネル名はいくつかの用途をもちます。

  • モデル表示とプロット上のチャネルの識別

  • MIMO システムのサブシステムの抽出

  • モデル相互接続時における接続点の指定

既定値: すべての入力チャネルに対する ''

InputUnit

入力チャネル単位。以下のいずれかとして指定します。

  • 文字ベクトル — 単入力モデルの場合 (たとえば 'seconds' など)。

  • 文字ベクトルの cell 配列 — 多入力モデルの場合。

InputUnit を使用して入力信号単位を追跡します。InputUnit はシステムの動作に影響しません。

既定値: すべての入力チャネルに対する ''

InputGroup

入力チャネル グループ。InputGroup プロパティによって、MIMO システムの入力チャネルをグループに割り当て、各グループを名前で参照することができます。入力グループを構造体として指定します。この構造体においてフィールド名はグループ名であり、フィールド値は各グループに属する入力チャネルです。以下に例を示します。

sys.InputGroup.controls = [1 2];
sys.InputGroup.noise = [3 5];

これは、入力チャネル 1、2 および 3、5 をそれぞれ含む controls および noise という名前の入力グループを作成します。その後、以下を使用して controls 入力からすべての出力にサブシステムを抽出できます。

sys(:,'controls')

既定値: フィールドのない構造体

OutputName

出力チャネル名。次のいずれかとして指定されます。

  • 文字ベクトル — 単出力モデルの場合。たとえば、'measurements' とします。

  • 文字ベクトルの cell 配列 — 多出力モデルの場合。

または、自動的なベクトル拡張を使用して多出力モデルの出力名を割り当てます。たとえば、sys が 2 出力力モデルである場合は、以下のようになります。

sys.OutputName = 'measurements';

出力名は自動的に {'measurements(1)';'measurements(2)'} へと拡張されます。

省略形表記 y を使用して、OutputName プロパティを参照できます。たとえば、sys.ysys.OutputName と同じです。

以下を含めて、出力チャネル名はいくつかの用途をもちます。

  • モデル表示とプロット上のチャネルの識別

  • MIMO システムのサブシステムの抽出

  • モデル相互接続時における接続点の指定

既定値: すべての出力チャネルに対して ''

OutputUnit

出力チャネル単位。次のいずれかとして指定されます。

  • 文字ベクトル — 単出力モデルの場合。たとえば、'seconds' とします。

  • 文字ベクトルの cell 配列 — 多出力モデルの場合。

OutputUnit を使用して出力信号単位を追跡します。OutputUnit はシステムの動作に影響しません。

既定値: すべての出力チャネルに対して ''

OutputGroup

出力チャネル グループ。OutputGroup プロパティによって、MIMO システムの出力チャネルをグループに割り当て、各グループを名前で参照できます。出力グループを構造体として指定します。この構造体内においてフィールド名はグループ名であり、フィールド値は各グループに属する出力チャネルです。以下に例を示します。

sys.OutputGroup.temperature = [1];
sys.InputGroup.measurement = [3 5];

これは、出力チャネル 1 および 3、5 をそれぞれ含む temperature および measurement という名前の出力グループを作成します。その後、以下を使用してすべての入力から measurement 出力にサブシステムを抽出できます。

sys('measurement',:)

既定値: フィールドのない構造体

Name

システム名。文字ベクトルとして指定します。たとえば、'system_1' とします。

既定値: ''

Notes

システムに関連付ける任意のテキスト。string または文字ベクトルの cell 配列として格納されます。プロパティには指定したデータ型が格納されます。たとえば、sys1sys2 が動的システム モデルである場合、その Notes プロパティを次のように設定できます。

sys1.Notes = "sys1 has a string.";
sys2.Notes = 'sys2 has a character vector.';
sys1.Notes
sys2.Notes
ans = 

    "sys1 has a string."


ans =

    'sys2 has a character vector.'

既定値: [0×1 string]

UserData

システムに関連付ける任意のデータ型。任意の MATLAB® データ型として指定します。

既定値: []

すべて折りたたむ

フィードバック パスに解析ポイントをもつ、次のフィードバック ループのモデルを作成します。

この例では、プラント モデルは G=1/(s+2) です。C は調整可能な PI コントローラー、X は解析ポイントです。

G = tf(1,[1 2]);
C = tunablePID('C','pi');
X = AnalysisPoint('X');
T = feedback(G*C,X); 
T.InputName = 'r';
T.OutputName = 'y';

T は調整可能な genss モデルです。T.Blocks にはモデルの制御設計ブロック (コントローラー C) と解析ポイント X が含まれています。

T.Blocks
ans = struct with fields:
    C: [1x1 tunablePID]
    X: [1x1 AnalysisPoint]

T のステップ応答を調べます。

stepplot(T)

AnalysisPoint ブロックが存在しても、モデルのダイナミクスは変更されません。

システムの線形解析に解析ポイントを使用できます。たとえば、解析ポイントで加えられた外乱に対して、'y' におけるシステム応答を抽出します。

Txy = getIOTransfer(T,'X','y');

AnalysisPoint ブロックを使うと、そのポイントでフィードバック ループを一時的に開くこともできます。たとえば、'r' から 'y' までの開ループ応答を計算します。

Try_open = getIOTransfer(T,'r','y','X');

getIOTransfer への最後の引数として解析ポイント名を指定すると、その点でループが開いている応答を抽出します。Try_open のステップ応答を検証して、それが開ループ応答であることを確認します。

stepplot(Try_open);

次のブロック線図の r から y までのモデルを作成します。内部の位置 u に解析ポイントを挿入します。

CG を作成し、入力と出力の名前を指定します。

C = pid(2,1); 
C.InputName = 'e';  
C.OutputName = 'u';
G = zpk([],[-1,-1],1);
G.InputName = 'u';  
G.OutputName = 'y';

加算結合を作成します。

Sum = sumblk('e = r - y');

CG、および加算結合を組み合わせて、解析ポイントを u にもつ統合モデルを作成します。

T = connect(G,C,Sum,'r','y','u')
T =

  Generalized continuous-time state-space model with 1 outputs, 1 inputs, 3 states, and the following blocks:
    AnalysisPoints_: Analysis point, 1 channels, 1 occurrences.

Type "ss(T)" to see the current value, "get(T)" to see all properties, and "T.Blocks" to interact with the blocks.

その結果である Tgenss モデルです。connect コマンドは AnalysisPoint ブロック AnalysisPoints_ を作成し、それを T に挿入します。AnalysisPoints_ にある解析ポイント チャネルの名前を確認するには、getPoints を使用します。

getPoints(T)
ans = 1x1 cell array
    {'u'}

解析ポイント チャネルの名前は 'u' です。この解析ポイントは、システム応答の抽出に使用できます。たとえば、次のコマンドでは、u に加えられた外乱に対する u での開ループ伝達と y での閉ループ応答が抽出されます。

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

T は次のブロック線図と同等です。ここで、AP_u は、チャネル名 u をもつ AnalysisPoint ブロック AnalysisPoints_ を指しています。

MIMO モデルで 2 つの解析ポイントをマークするブロックを作成します。

次の図の制御システムで、それぞれの信号がサイズが 2 のベクトル値であるものとします。つまり、信号 r{r(1),r(2)}y{y(1),y(2)} などのように表します。

そのため、フィードバック信号もサイズが 2 のベクトル値の信号になります。フィードバック パスに 2 つの解析ポイントをマークするブロックを作成します。

AP = AnalysisPoint('X',2)
AP =

Multi-channel analysis point at locations:
   X(1)
   X(2)

Type "ss(AP)" to see the current value and "get(AP)" to see all properties.

AnalysisPoint ブロックは、MATLAB® ワークスペースに AP という変数として保存されます。また、ブロックの Name プロパティは X に設定されます。このブロックを数値 LTI モデルや他の制御設計ブロックと相互接続する場合、この解析ポイント ブロックは、結果として得られる genss モデルの Blocks プロパティで X として識別されます。ブロック名 X は自動的に拡張され、チャネル名 X(1)X(2) が生成されます。

モデルのブロック線図でチャネルが対応する信号の名前に合わせてチャネル名を変更すると便利なことがあります。たとえば、モデル内でマークする対象ポイントが、L および V という名前の信号であるとします。APLocation プロパティを変更して、これらの信号と名前を一致させます。

AP.Location = {'L';'V'}
AP =

Multi-channel analysis point at locations:
   L
   V

Type "ss(AP)" to see the current value and "get(AP)" to see all properties.

チャネル名は変更されましたが、ブロック名は X のままです。

AP.Name
ans = 
'X'

そのため、このブロックを使って作成した genss モデルの Blocks プロパティでは、ブロックは引き続き X として識別されます。getPoints を使用して、genss モデル内の使用可能な解析ポイントのチャネル名を検出します。

R2014b で導入