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

operpoint

Simulink モデルの操作点を作成

構文

op = operpoint(sys)

説明

op = operpoint(sys) は、Simulink® モデル sys の操作点を含む、オブジェクト op を返します。sys は文字ベクトルまたは string として指定します。線形化モデルを作成するには、関数 linearize でこのオブジェクトを使用します。操作点オブジェクトには次のプロパティがあります。

  • Model — Simulink モデル名。文字ベクトルとして指定します。

  • States — 状態操作点の仕様。構造体配列として指定します。配列の各構造体は、1 つの Simulink ブロックのサポート対象である状態を表します (操作点オブジェクトでサポートされる状態のリストについては、操作点オブジェクトに含まれる Simulink モデルの状態を参照してください)。このオブジェクトのプロパティを、ドット表記または関数 set を使用して編集します。

    States 構造体には次のフィールドがあります。

    Nx (読み取り専用)

    Simulink ブロック内の状態の数。

    Block

    Simulink ブロック名。

    StateName

    状態の名前。文字ベクトルとして指定します。

    x

    状態のベクトルとして指定された Simulink ブロック状態値。このベクトルには、サポートされるすべての状態が含まれます。

    操作点探索用に findop を使用して状態値の仕様を作成する際、ある状態の値が固定されるよう設定するには、その状態について States プロパティの Known フィールドも 1 に設定します。

    Ts

    (離散時間状態のみ) ベクトルとして指定された各 Simulink ブロック状態のサンプル時間とオフセット。

    SampleType

    状態の時間速度。次のいずれかの値として指定します。

    • 'CSTATE' — 連続時間状態

    • 'DSTATE' — 離散時間状態

    inReferencedModel

    それぞれの状態が参照モデル内にあるかどうかを示すベクトル。

    • 1 — 状態が参照モデル内にある

    • 0 — 状態が現在のモデル ファイルにある

    Description

    文字ベクトルとして指定されるブロック状態の説明。

  • Inputs — 操作点での入力レベル。入力オブジェクトのベクトルとして指定します。各入力オブジェクトは、Simulink ブロック内にある 1 つのルートレベル Inport ブロックの入力レベルを表します。

    Inputs の各エントリには次のフィールドがあります。

    Block

    Inport ブロック名。

    PortWidth

    Inport ブロック信号の数。

    PortDimensions

    Inport で受け入れる信号の次元。

    u

    入力レベルのベクトルとして指定された操作点の Inport ブロックの入力レベル。

    findop を使用して操作点探索用に入力仕様を作成する際は、操作点探索時に固定のままにする既知の入力レベルに対し、Inputs プロパティの Known フィールドも設定します。

    Description

    文字ベクトルとして指定された Inport ブロックの入力の説明。

  • Time — モデル内の任意の時変関数が評価される時間。ベクトルとして指定します。

  • Version — オブジェクトのバージョン番号。

すべて折りたたむ

Simulink モデルを開きます。

open_system('magball')

モデルに操作点を作成します。

op = operpoint('magball')
 Operating point for the Model magball.
 (Time-Varying Components Evaluated at time t=0)

States: 
----------
(1.) magball/Controller/PID Controller/Filter/Cont. Filter/Filter
      x: 0            
(2.) magball/Controller/PID Controller/Integrator/Continuous/Integrator
      x: 14           
(3.) magball/Magnetic Ball Plant/Current
      x: 7            
(4.) magball/Magnetic Ball Plant/dhdt
      x: 0            
(5.) magball/Magnetic Ball Plant/height
      x: 0.05         

Inputs: None 
----------

op は、モデル内で状態をもつ各ブロックをリストします。このモデルにはルートレベルの入力端子がないため、op には入力が含まれません。

新しい operpoint 変数は次の 3 つの方法で作成することができます。

  • operpoint コマンドを使用する

  • 等号 (=) 演算子による割り当てを使用する

  • copyコマンドを使用する

= 演算子を使用すると変数がリンク付けられ、どちらの変数も基となる同じデータを指しています。copy コマンドを使用すると、独立した operpoint オブジェクトになります。この例では operpoint オブジェクトを両方の方法で作成し、それらの動作を検証します。

mdl = 'watertank';
open_system(mdl);
op1 = operpoint(mdl)
 Operating point for the Model watertank.
 (Time-Varying Components Evaluated at time t=0)

States: 
----------
(1.) watertank/PID Controller/Integrator/Continuous/Integrator
      x: 0            
(2.) watertank/Water-Tank System/H
      x: 1            

Inputs: None 
----------

= 演算子による割り当てを使用して、新しい操作点オブジェクトを作成します。

op2 = op1;

op2 は、op1 と同じ基となるデータを指す operpoint オブジェクトです。このリンクのために、2 つの operpoint オブジェクトのプロパティを独立して変更することはできません。これを確認するには、op2 のプロパティを変更します。たとえば、最初の状態の値を 0 から 2 に変更します。変更が画面の States セクションに表示されます。

op2.States(1).x = 2
 Operating point for the Model watertank.
 (Time-Varying Components Evaluated at time t=0)

States: 
----------
(1.) watertank/PID Controller/Integrator/Continuous/Integrator
      x: 2            
(2.) watertank/Water-Tank System/H
      x: 1            

Inputs: None 
----------

op1 の表示を検証し、op1 の対応するプロパティ値も 0 から 2 に変更されることを確認します。

op1
 Operating point for the Model watertank.
 (Time-Varying Components Evaluated at time t=0)

States: 
----------
(1.) watertank/PID Controller/Integrator/Continuous/Integrator
      x: 2            
(2.) watertank/Water-Tank System/H
      x: 1            

Inputs: None 
----------

操作点オブジェクトの独立したコピーを作成するには、copyコマンドを使用します。

op3 = copy(op1);

ここで、op3 のプロパティを変更しても、op1 は変更されません。たとえば、最初の状態の値を 2 から 4 に変更します。

op3.States(1).x = 4
 Operating point for the Model watertank.
 (Time-Varying Components Evaluated at time t=0)

States: 
----------
(1.) watertank/PID Controller/Integrator/Continuous/Integrator
      x: 4            
(2.) watertank/Water-Tank System/H
      x: 1            

Inputs: None 
----------

op1 では、対応する値は 2 のままです。

op1.States(1).x
ans = 2

このコピー動作が発生するのは、operpoint が "ハンドル オブジェクト" であるためです。ハンドル オブジェクトの詳細については、ハンドル オブジェクトの動作 (MATLAB)を参照してください。

ヒント

  • 新しい operpoint 変数は次の 3 つの方法で作成することができます。

    • operpoint コマンドを使用して新しいオブジェクトを作成する。

    • 等号 (=) 演算子を使用した割り当てによって、新しい変数を作成する。

    • copy コマンドを使用して operpoint オブジェクトをコピーする。

    operpoint または copy を使用すると、新しい独立したオブジェクトが作成されます。割り当てを使用する場合、古い変数と新しい変数の間にリンクが存在します。例については、操作点のコピーを参照してください。

代替方法

関数 operpoint の代わりに、アプリケーションの仕様を満たす操作点を計算できます。詳細については、定常状態の操作点の計算を参照してください。

R2006a より前に導入