連載
» 2015年06月17日 10時00分 公開

ボード線図を使って過渡応答と周波数応答を求める無償ソフトで技術計算しよう【制御工学応用編】(1)(3/3 ページ)

[伊藤孝宏,MONOist]
前のページへ 1|2|3       

ボード線図

 ボード線図は、横軸が角周波数(回転速度を表す量で単位は[rad/s]、1[Hz]=2π[rad/s])で、縦軸がゲイン(入力と出力との比)のゲイン線図と、同じく横軸が角周波数で、縦軸が位相(入力に対する出力の遅れ)の位相線図からなるものです。

 図5に示すように、横軸は対数目盛で、ゲイン線図の縦軸の単位はデシベル[dB]です。デシベルの定義は常用対数の10倍の値ですが、一般に入出力の比は2乗の値を採用し、対数では、

 10・log10G2=20・log10|G|

となるため、伝達関数の絶対値の常用対数の20倍となります。従って、20dB増加するごとに、10のべき乗倍となり、20dB減少するごとに、10のべき乗分の1となります。例えば、40dB増加すると100倍になり、60dB減少すると1/1000となります。一方の位相線図の縦軸の単位は度[deg]です。

 伝達関数からゲインと位相を求めるには、伝達関数に角周波数×虚数単位を入力した結果を複素平面(横軸が実部、縦軸が虚部の座標)にプロットして、原点からの距離をゲインに、原点との線が横軸と成す角を位相とします。FreeMatは複素数を扱うことが可能で、複素平面上の原点からの距離はコマンドabsで、原点との線が横軸と成す角はコマンドangleで求められます。

 従って、ゲインは、

 20*log10(abs(G(j*ω)))

位相は、

 rad2deg(angle(G(j*ω)))

 で求められます。ここで、jは虚数単位、ωは角周波数で、rad2degはrad単位の値をdeg単位の値に変換するコマンドです。

 伝達関数にj*ωを入力するには、コマンドpolyvalを用います。polyval(多項式の係数、値)とすると、与えられた係数を持つ多項式に値を入力した結果を返します。多項式の係数は、高次の項から順に係数を並べた配列となります。

 例えば、polyval([1,2,3],1)とすると、x2+2・x+3にx=1を入力した結果を返します。(1)式の伝達関数では、分子の係数(ex509.mではnum)は[0,0,1]となり、分母の係数(ex509.mではden)は[1,1,10]となります。

 以上のようにして、ボード線図を描くプログラムがex509.mで、動作させた結果が図5になります。

clear;num=[0,0,1];den=[1,1,10];
w=logspace(-1,2,100);
Gjw=polyval(num,j*w)./polyval(den,j*w);
Gain=20*log10(abs(Gjw));
Phase=rad2deg(angle(Gjw));
subplot(2,1,1);
semilogx(w,Gain);grid('on');
xlabel('Frequency[rad/s]');ylabel('Gain[dB]');
subplot(2,1,2);
semilogx(w,Phase);grid('on');
xlabel('Frequency[rad/s]');ylabel('Phase[deg]');
ex509.m

>>「ex509.m」ダウンロード

図5:ボード線図

 さて、図2に示したバネ・マス・ダンパ系の周波数0.5[Hz]と1[Hz]の周期的荷重に対する応答とボード線図から読み取った値とが合うものなのか確認してみます。図5から読み取っても構いませんが、周波数0.5および1[Hz]での振幅を伝達関数からFreeMatで直接求めてみます。

 図2は振幅1の入力に対する出力なので、伝達関数に周波数「j*2*pi*」を入力した結果の絶対値が出力の振幅になります。

 従って、0.5[Hz]での振幅は、

--> abs(1./polyval([1,1,10],j*2*pi*0.5))
ans = 0.3180

1[Hz]での振幅は

--> abs(1./polyval([1,1,10],j*2*pi*1))
ans = 0.0332

となり、図2の結果と一致します。

 位相についても計算してみます。0.5[Hz]での位相は、

--> rad2deg(angle(1./polyval([1,1,10],j*2*pi*0.5)))
ans = -87.6232

 1[Hz]での位相は、

--> rad2deg(angle(1./polyval([1,1,10],j*2*pi*1)))
ans = -167.9677

となります。

 このように、伝達関数から振幅や位相を求めることで、微分方程式を数値的に解くことなしに広い範囲の周波数の入力に対する応答を求められます。


 次回は、制御系の安定性について説明します。

参考文献

  • 「MATLABハンドブック」小林一行著、秀和システム刊
  • 「はじめてのFreeMat」赤間世紀著、工学社刊
  • 「制御工学」豊橋技術科学大学制御工学教育連携プロジェクト著、実教出版刊

無償ソフトで技術計算しよう

FreeMat

無償の工学計算ソフトでも、かなり高度な計算ができる!


筆者紹介

伊藤孝宏(いとう・たかひろ)

1960年生。小型モーターメーカーのエンジニア。博士(工学)。専門は流体工学、音・振動工学。現在は、LabVIEWを使って、音不良の計測・診断ソフト、特性自動検査装置などの開発を行っている。



前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.