【第11回】

<内容>

1.  ブロック線図を等価変換するための関数U

 現在のシステム(制御用パッケージcontrol ver.2.8.5)では,tffeedback等の関数において,非プロパーな伝達関数(分子多項式の次数が分母多項式の次数より大きい)も扱えるようになった.しかし,様々なMファイルの作成方法を学習するため,以下の関数を作成する.今回は,feedback1.m を作成する.

·       tf1.m:伝達関数を分子・分母多項式の係数により入力する関数tfという関数が存在するので,教科書のtf.mtf1.mで作成する.】

·       zpk1.m:伝達関数を零点・極・ゲインにより入力する関数zpkという関数が存在するので,教科書のzpk.mzpk1.mで作成する.】

·       tfinv.m:伝達関数の逆数を求める関数

·       reduce.m:伝達関数を約分する関数(この関数には最大公約数GCDをユークリッドの互除法(教科書p.45)で求める関数euclid.mが必要)

·       sysmult1.m:伝達関数の直列結合を求める関数

·       sysadd1.m:伝達関数の並列結合(和)を求める関数(この関数には多項式の和を求める関数polyadd.mが必要)

·       polyadd.m:多項式の和を求める関数

·       syssub1.m:伝達関数の並列結合(差)を求める関数(この関数には多項式の和を求める関数polyadd.mが必要)

·       feedback1.m:フィードバック結合を求める関数

 

表1 伝達関数入力およびブロック線図の等価変換のための関数

内  容

システム既存の関数

作成する関数

伝達関数入力(分子・分母多項式)

tf

tf1

伝達関数入力(零点・極・ゲイン)

zpk

zpk1

伝達関数の零点・極・ゲイン算出

zpkdata

なし

伝達関数の直列結合

series

sysmult1

伝達関数の並列結合(和)

parallel

sysadd1

伝達関数の並列結合(差)

parallel

syssub1

フィードバック結合

feedback

feedback1

 

 

2.  過渡応答

 応答とは,初期値や入力による出力の変化の様子を表す.応答には時間応答周波数応答があり,時間応答には,さらに過渡応答定常応答がある.周波数応答は定常応答のみである.

 

 時間応答と周波数応答の特徴は以下の通りである.

 

時間応答

長所:ある決まった形の入力に対する出力の時間変化の様子が分かるので,非常に分かりやすい.

短所:他の入力が加わった時に出力がどのようになるのかが分からない.

 

周波数応答

長所:色んな入力が加わった時に出力がどのようになるのかを大雑把に把握することができる.

短所:応答の詳細な値までは分からない.

 

(注意)色んな入力とは,様々な周波数成分を持った入力を意味する.任意の入力は,ある周波数の正弦波の重ね合わせで表現することができる(フーリエ級数展開).

 

 したがって,制御系を設計する際には,周波数応答を見ながら大域的に制御系を設計し,次に時間応答を見ながら制御ゲインを微調整することになる.

 

 初期値による応答を初期値応答,入力による応答を強制応答と呼ぶ.強制応答において,単位インパルス入力に対する応答をインパルス応答,単位ステップ入力に対する応答をステップ応答と呼ぶ.これらは

  インパルス応答:図面1.jpg

  ステップ応答:図面1.jpg

 

で計算できる.ここで,G(s)は伝達関数を表し,L-1は逆ラプラス変換を表す.

 

 様々な伝達関数のインパルス応答やステップ応答をグラフに描く方法について学ぶ.

 

 

3.  周波数応答

 入力として振幅1で角周波数w の正弦波u(t) = sinwtを加えた時の出力の定常応答は

  図面1.jpg

と表される.ここで,M(w) をゲイン,f(w) を位相と呼び,これらの値により周波数応答を表現する.すなわち,ゲインM(w) = 1,位相f(w) = 0は入力波形がそのまま出力に現れることを意味する.周波数伝達関数G(jw)は一般に以下のような複素数となり,

  図面1.jpg

ゲインM(w) と位相f(w) は次式により求められる.

  図面1.jpg

 周波数応答は線図によって分かりやすく表現される.ここでは,よく利用されるナイキスト線図Nyquist diagram)の描画方法について学ぶ.ナイキスト線図は以下のような線図である.

 

ナイキスト線図】(教科書p.132の図3.60参照)

 横軸にRe[G(jw)],縦軸にIm[G(jw)]をとり,w を区間 [- ] で変化させた時のG(jw)の軌跡をプロットしたものである.ただし,区間 [- 0] の軌跡と区間 [0 ] の軌跡は実軸に対して対称であるので,区間 [- 0] の軌跡が省略されることがある.

 

 

<演習>

1ブロック線図を等価変換するための関数U

 ここで作成した関数を用いて得られる伝達関数は,分子・分母多項式の形でのみ表示される.

 

※システム既存の関数tfzpkを用いて入力した伝達関数に対し,ここで作成した伝達関数の結合に関する関数は適用できない点に注意せよ.

 

 

練習11-1

 Mファイルfeedback1.m(教科書p.117)を作成し,例題3.24(教科書p.117)と例題3.25(教科書p.118)を行い,結果を確認せよ.

(注)feedback1.mの下から3行目は,tfではなくtf1とすること.実行する際は,tfではなくtf1で伝達関数を入力すること.

       

3.37

 

 

2.過渡応答

21.インパルス応答impulse関数」

 

1次遅れ要素

  図面1.jpg

 

 

練習11-2

 例題3.28(教科書p.121)を行い,結果を確認せよ.

(注)tf2sysではなくtfで伝達関数を入力すること.最初にグラフを描く際,描画に時間が掛かる.

注)

¨         終了時間を指定することもできる.計算データ数を指定しない場合は,適当な計算データ数が用いられる.(教科書p.122参照)

¨         現在のシステムでは,教科書に記載されているimpulse関数とstep関数の2番目の引数「1」は不要である(下記参照).

>> ts=10;    % 終了時間

>> impulse(sys,ts)

>> step(sys,ts)

¨         例題3.26(教科書p.120)の解析解がこのグラフとなることを理解すること.

 

 

2次遅れ要素

図面1.jpg

 

 

練習11-3

 例題3.29(教科書p.122)を行い,結果を確認せよ.

(注)tf2sysではなくtfで伝達関数を入力すること.

  現在のシステムでは,closeplotではなく,closeを使用する.

  テキストでは,plotgridの順番がすべて逆になっている.

  凡例を表示するために,plotの後にlegend('line 1','line 2','line 3','line 4')を実行すること.

注)

¨         終了時間や計算刻みを指定することができる.時間刻みを小さくすれば,より滑らかな曲線となる.

¨         現在のシステムでは,impulse関数の引数が異なる(下記参照).

>> ts = 10;    % 終了時間

>> N = 400;    % 計算データ数

>> DT = ts/N   % 時間刻み

>> [y1,t1] = impulse(g1,ts,DT);

¨         例題3.27(教科書p.120)の解析解がこのグラフとなることを理解すること.

¨         plotコマンドを使用せずに,impulseコマンドのみで複数の応答曲線を描くこともできる.

>> impulse(g1,g2,g3,g4,ts,DT)

 

 

22.ステップ応答step関数」

1次遅れ要素

図面1.jpg

 

 

練習11-4

 例題3.32(教科書p.126)を行い,結果を確認せよ.

(注)tf2sysではなくtfで伝達関数を入力すること.

注)

¨         例題3.30(教科書p.123)の解析解がこのグラフとなることを理解すること.

 

 

2次遅れ要素

図面1.jpg

 

 

練習11-5

 例題3.33(教科書p.126)を行い,結果を確認せよ.

(注)tf2sysではなくtfで伝達関数を入力すること.

  現在のシステムでは,closeplotではなく,closeを使用する.

  テキストでは,plotgridの順番がすべて逆になっている.

  凡例を表示するために,plotの後にlegend('line 1','line 2','line 3','line 4')を実行すること.

注)

¨         impulseと同様,終了時間や時間刻みを指定することができる.

¨         現在のシステムでは,step関数の引数が異なる(下記参照).

>> ts = 10;    % 終了時間

>> N = 400;    % 計算データ数

>> DT = ts/N   % 時間刻み

>> [y1,t1] = step(g1,ts,DT);

¨         例題3.31(教科書p.124)の解析解がこのグラフとなることを理解すること.

¨         plotコマンドを使用せずに,stepコマンドのみで複数の応答曲線を描くこともできる.

>> step(g1,g2,g3,g4,ts,DT)

 

  impulsestepコマンドを用いて過渡応答を描画する際には,システム既存のtfもしくはzpkを用いて伝達関数を入力すること.ユーザー定義関数であるtf1zpk1で入力した伝達関数では,impulsestepコマンドを実行できない.

 

 

―――――――――――――――――――――――――――――――――――――――――――――――――――――――

 

 

3.周波数応答

31.ナイキスト線図nyquist関数」

 

1次遅れ要素

図面1.jpg

 

 

練習11-6

 例題3.36(教科書p.131)を行い,結果を確認せよ.

(注)tf2sysではなくtfで伝達関数を入力すること.

 

 

現在のシステムでは,nyquist関数は非プロパーな伝達関数も扱うことができるが,Mファイルの作成方法を学習するため,nyquist1.mを作成する.

 

 

練習11-7

 伝達関数の値を計算する関数GMファイル「G.m」,関数Gを用いてナイキスト線図を描く関数nyquist1Mファイル「nyquist1.m」を作成した後,例題3.37(教科書p.134)を行い,結果を確認せよ.

(注)実行する際,tfではなくtf1で伝達関数を入力すること.

  現在のシステムでは,closeplotではなく,closeを使用する.

  nyquist1.mにおいて,「gset nokeyと「gset key」の行は削除すること.このコマンドは使用できない.

  nyquist1.mにおいて,plotの前にxlabelylabelgridがあるが,これらはすべて,plotの後に書くこと.

注)

¨         w が大きくなるにつれて,軌跡は原点(0, 0)から虚軸上に沿って上に上がっていく.

¨         w の区間[- 0]における軌跡も描画したい場合は,以下のようにする.

            > w1 = -logspace(2,-2,50);

       > nyquist1(sys,[w1 w])

 

 

G.mの解説>

¨         sysには伝達関数が入る.具体的には,関数tf1を用いて分母・分子多項式の係数を入力する.

¨         sにはjw が入る.wは計算するべき角周波数を要素として持つベクトルである.例えば
 w = [0.001 0.01 0.1 1.0 10.0 100.0 1000.0]
である.jは虚数を表すシステムの予約語である.

¨         a(n)は分母多項式の定数項を示し,ydfor文では分母多項式の低次の項から順番にG(jw)の分母の値を計算している.ここで,xydはベクトルで,a(n-k)はスカラーとなる点に注意せよ.そのために,「.*」で掛け算を実行している.最終的にydにはwで指定した角周波数におけるG(jw)の分母の値が,順番に要素に格納されたベクトルとなっている.

¨         ynに関しても,ydと同様であり,G(jw)の分子の値を計算している.

¨         ydynもベクトルであり,yもベクトルである.割り算を「./」により実行している点に注意せよ.

 

 

nyquist1.mの解説>

¨         narginは引数の数を表すシステムの予約語である.引数とは,関数の括弧( )内にある変数のことである.この関数の場合,引数はsysw2つである.

¨         realimagは複素数の実数部と虚数部をそれぞれ計算する関数である.

¨         nargoutは関数の戻り値の数を表すシステムの予約語である.この関数の場合,戻り値はreimw3つであるが,戻り値が入る変数を書かずに単に

 > nyquist(sys,w)

と入力した場合は,戻り値の数nargout0となる.

¨         関数の戻り値を指定しない場合には,reimwを使用しないのでclearコマンドで削除している.

 

 

2次遅れ要素

図面1.jpg

 

 

練習11-8

 例題3.38(教科書p.134)を行い,結果を確認せよ(教科書の伝達関数は間違っているので,上記のG(s)に修正しておくこと ).

(注)実行する際,tfではなくtf1で伝達関数を入力すること

  現在のシステムでは,closeplotではなく,closeを使用する.

  plotの前にxlabelylabelgridがあるが,これらはすべて,plotの後に書くこと.

  凡例を示すlegendコマンドを最後に追加すること.

注)

¨         w が大きくなるにつれて,軌跡は(1, 0)から原点(0, 0)へ向かう.

¨         システム既存のnyquistコマンドで実行するときは下記のように入力する.

>> close

>> g1 = tf(1,[1 0.6 1]);

>> g2 = tf(1,[1 1 1]);

>> g3 = tf(1,[1 2 1]);

>> g4 = tf(1,[1 4 1]);

>> w = logspace(-2,2,400);

>> nyquist(g1,g2,g3,g4,w)

 

 

【レポート課題(10)(授業終了後にアップロード)

  RePORT