ドキュメンテーション センター

  • 評価版
  • 製品アップデート

目次

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

linio

Simulink モデルの線形化の入力/出力 (I/O) ポイントの定義

構文

io = linio('blockname', portnum)
io = linio('blockname', portnum, type)
io = linio('blockname', portnum, type, [], 'buselementname')

代替方法

linio の代替方法として、モデル ダイアグラムまたは線形解析ツールで信号の右クリック メニューを使用して線形化 I/O 設定を作成します。

説明

io = linio('blockname', portnum) は、Simulink® モデルでブロック blockname の端子番号 portnum の出力端子から送出された信号の線形化入出力 (I/O) オブジェクトを作成します。既定の I/O タイプは 'input' で、信号に加法的入力を適用します。関数 linearizeio を使用して、線形化モデルを作成します。

io = linio('blockname', portnum, type) は線形化 I/O のタイプを指定します。type は以下の文字列のいずれかでなければなりません。

  • 'openinput' — 開ループの入力。ループ開始点の後ろに線形化入力ポイントを指定します。

    通常、この入力タイプは、プラントまたはコントローラーを初期化するために開ループ線形化出力と共に使用します。

    たとえば、次の図のフィードバック ループ内のプラント伝達関数 G を計算するには、図に示すように線形化ポイントを指定します。

    同様に、入力信号で openinput を指定し、Controller ブロックの出力信号で開ループ線形出力を指定することで、コントローラー伝達関数 K を計算できます。

  • 'openoutput' — 開ループの出力。ループ開始点の前に線形化出力ポイントを指定します。

    通常この出力タイプは、前の図に示されるように、プラントまたはコントローラーを線形化するために開ループ線形化入力 openinput または入力の摂動 input と共に使用します。

  • 'looptransfer' — ループ伝達。ループ開始点の前の出力ポイントと、その後に続く入力を指定します。

    この入出力タイプは、ループ付近での開ループ伝達関数を計算するために使用します。

    たとえば、次の図のフィードバック ループ内の -GK を計算するために、図に示すように線形化入出力ポイントを指定します。

    同様に、Controller ブロックの出力信号で looptransfer を指定して -KG を計算します。

  • 'input' — 入力の摂動。信号への加法的入力を指定します。

    たとえば、次の図のフィードバック ループの応答 -K/(1+KG) を計算するには、図に示すように入力の摂動と出力の測定点を指定します。

    同様に、Controller ブロックの出力信号で input を、また Plant ブロックの出力信号で出力の測定値 output を使用して G/(1+GK) を計算できます。

  • 'output' — 出力の測定値。信号の測定値を取ります。

    たとえば、応答 -K/(1+KG) を計算するには、前の図に示すように出力の測定点と入力の摂動を指定します。

  • 'loopbreak' — ループの中断。ループ開始点を指定します。

    ループ付近での開ループ伝達関数を計算するために使用します。通常、入れ子にされたループがある場合や、一部のループの影響を無視する場合にこの入出力タイプを使用します。

    たとえば、K1 で認識される内部ループを計算して外部ループを排除するには、次に示すように入出力ポイントと loopbreak を指定します。

  • 'sensitivity' — 感度。加法的入力と、その後に続く出力の測定を指定します。

    信号での加法的な外乱に対する感度伝達関数を計算するために使用します。

    たとえば、次の図のフィードバック ループ内の入力/負荷感度 1/(1+KG) を計算するには、図に示すように線形化入出力ポイントを指定します。

    同様に、Plant ブロックの出力信号で sensitivity 入出力ポイントを指定して、プラント出力 1/(1+GK) での出力感度を計算します。

  • 'compsensitivity' — 相補感度。出力と、その後に続く加法的入力を指定します。

    ループ付近での閉ループ伝達関数を計算するために使用します。

    たとえば、次の図のフィードバック ループ内の -GK/(1+GK) (r から y への伝達関数) を計算するには、図に示すように Plant ブロックの出力信号で線形化入出力ポイントを指定します。

io = linio('blockname', portnum, type, [], 'buselementname') は、blocknameportnum から発信されたバス信号の要素 buselementname の線形化 I/O オブジェクトを作成します。

以下の例では、Simulink モデルの線形化 I/O 設定を作成する方法を説明します。

  1. magball モデルの Controller ブロックから発信される信号の I/O 設定を作成します。

    io(1)=linio('magball/Controller',1)
    

    既定では、この I/O は信号への加法的入力を指定する入力ポイントです。

    1x1 vector of Linearization IOs: 
    --------------------------
    1. Linearization input perturbation located at the following signal:
    - Block: magball/Controller
    - Port: 1
  2. オブジェクト io 内の 2 番目の I/O 設定を作成します。

    io(2)=linio('magball/Magnetic Ball Plant',1,'openoutput')
    

    この I/O は、Magnetic Ball Plant ブロックから発信された出力ポイントで、開ループポイントでもあります。

    1x2 vector of Linearization IOs: 
    --------------------------
    1. Linearization input perturbation located at the following signal:
    - Block: magball/Controller
    - Port: 1
    
    2. Linearization open-loop output located at the following signal:
    - Block: magball/Magnetic Ball Plant
    - Port: 1
 

線形化 I/O ポイントとして個々のバス要素を選択します。

以下の例では、バス信号の個々のバス要素に対する線形化 I/O 設定を作成する方法を説明します。

  1. Simulink モデルを開きます。

    mdl = 'scdbusselection';
    open_system(mdl);
    
  2. 個々のバス要素で線形化 I/O ポイントを使用して、Counter ブロックの線形化を指定します。

    io(1) = linio('scdbusselection/COUNTERBUSCreator',1,'input',[],...
    		    'limits.upper_saturation_limit');
    io(2) = linio('scdbusselection/CounterA',1,'output',[],...
    			'limits.upper_saturation_limit');
  3. モデルを更新して、線形化 I/O オブジェクトを反映させます。

    setlinio(mdl,io)
    set_param(mdl,'ShowLinearizationAnnotations','on');

    線形化 I/O マーカーがモデルに表示されます。これらのマーカーを使用して、線形化ポイントを可視化します。

  4. モデルの操作点でモデルを線形化します。

    sys = linearize(mdl,io);

参考

| |

チュートリアル

この情報は役に立ちましたか?