見出し画像

実際に使える制御工学:基礎編(2)「伝達関数とブロック線図。抽象的思考の見える化方法。」

<この記事で伝えたい事> 

  • 伝達関数とは、ラプラス変換したときのシステム入力と出力の関係性を表したものです
    伝達関数=出力÷入力です。
    (入力・出力・伝達関数は3つとも全てラプラス関数です)

    ※ ラプラス変換については基礎編(1)を参照ください

  • ブロック線図とは、複雑な数式を見える化(可視化)する道具です
    この道具に慣れると、小さなシステムを組み合わせて大きなシステムを作れるようになります。

    はじめのうちは、この記事などを片手に少しずつ理解していくスタイルでOKです。




1. はじめに 

自己紹介はこちらです。

この記事は、主に制御系の学生や若手エンジニアに向けた基礎知識紹介・解説記事シリーズの第2弾です。

今回は、伝達関数とブロック線図という制御工学の基礎知識を紹介・解説します。


2. 伝達関数とは?

冒頭の説明どおり、ラプラス変換後の入力と出力の比が伝達関数です。
…といっても、言葉だけの説明ではなかなかピンときませんよね。

そこで、モータを具体例として説明します。

モータのイメージ

モータは内部にコイルを持っており、コイルに流す電流に応じたトルク$${\tau}$$を発生させます。
そして、そのトルク$${\tau}$$によってシャフトが回ります。

ひとまず、コイルに流す電流(とそれに応じて発生するトルク$${\tau}$$)は我々が自在に調節できると仮定します。

シャフトの角速度を$${\omega}$$、シャフトの慣性モーメントを$${J}$$とすると、モータの回転運動方程式は下式になります。

$$
\tau_{(t)}=J\cdot\frac{d\omega_{(t)}}{dt}
$$

これをラプラス変換すると以下のようになります。 

$$
\tau_{(s)}=J\cdot s \cdot \omega_{(s)}
$$

ここで、モータシステムの入力を$${\tau_{(s)}}$$、出力を$${\omega_{(s)}}$$とします。
すると、システムの伝達関数$${G_{(s)}}$$は以下のように求められます。
(伝達関数=出力÷入力という定義から)

$$
G_{(s)}=\frac{\omega_{(s)}}{\tau_{(s)}}=\frac{1}{J \cdot s}
$$


「伝達関数」という単語だけ聞くと難しいイメージを持つかもしれませんが、実はわりと単純な計算で求められると感じてもらえたのではないでしょうか?


なお、伝達関数の入力と出力は以下のように選ぶケースが多いです。

  • 入力:設計者が自在に調節できる量
    (ここではトルク$${\tau}$$)

  • 出力:設計者が思いどおりに動かしたい量
    (ここでは各速度$${\omega}$$)

伝達関数のいいところは、入力と伝達関数のかけ算だけで出力が分かることです。

例えば、最初は「入力は一定値にしよう」と考えていても、後から「入力をSIN波にするとどうなるだろう?」と考えが変わるのはよくあることです。

伝達関数を使えば、この変更に簡単に対応できます。


3. ブロック線図の基本

ブロック線図は、伝達関数を使って入力と出力の関係を図にした(見える化した)ものです。
下図は、2章の具体例をブロック線図化したものです。

モータ回転運動のブロック線図
モータ回転運動のブロック線図

このブロック線図の読み方は以下のとおりです。

  • 箱の中身=伝達関数
    (ここでは$${\frac{1}{J\cdot s}}$$、一般式の記号は$${G_{(s)}}$$)

  • 箱に入っていく矢印=システム入力
    (ここではトルク$${\tau_{(s)}}$$、一般式の記号は$${U_{(s)}}$$)

  • 箱から出てくる矢印=システム出力
    (ここでは角速度$${\omega_{(s)}}$$、一般式の記号は$${Y_{(s)}}$$)

  • 矢印が箱を通ること=かけ算
    (出力=伝達関数×入力とも一致します) 

ブロック線図のいいところは、この具体例のような小さなシステムを組み合わせることで、大きなシステムを表現できることです。
 

数式だけで大きなシステムを表現するには、複数の微分方程式を連立させる必要があります。

ただでさえ複雑な微分方程式を連立させると、解くどころか見るだけでウっと感じます。

そんなときブロック線図を使って情報量を減らせば、いくらか抵抗感なく見れると思います。


4. よくあるブロック線図の変形パターン

「小さなシステムの組み合わせ」の実例紹介の前に、よくあるブロック線図の変形パターンを紹介します。

ブロック図を変形してひとまとめにすると、「小さなシステムを組み合わせた大きなシステム」全体の特性を把握するのに役立ちます。

「よくある変形パターン」は3つあります。
これらを押さえればだいたいは乗り切れます。


まず、1つめの変形はブロックの直列接続です。
シンプルに「直列はかけ算」と覚えてOKです。

ブロックの直列接続
ブロックの直列接続



2つめの変形はブロックの並列接続です。
シンプルに「並列は足し算」と覚えてOKです。

ブロックの並列接続
ブロックの並列接続

ここからは文章での説明です。
まず、分岐点・加算点の説明です。

  • 分岐点:黒丸●の点、点に入ってきたものと同じものを出力する
    (人によっては描くのを省略するケースあり)

  • 加算点:白丸○の点、点に入ってきたものを足し合わせて出力する
    (ただし、脇の符号がマイナスの場合は差し引かれる)

次に、並列接続の考え方をステップ分けで説明します。(3ステップ)

STEP1
分岐点のはたらきで$${G_{1(s)}}$$と$${G_{2(s)}}$$には同じ$${U_{(s)}}$$が入ってくる

STEP2
「箱を通る=かけ算」から$${G_{1(s)}}$$と$${G_{2(s)}}$$との出力は、
$${Y_{1(s)}=G_{1(s)}\cdot U_{(s)}}$$
$${Y_{2(s)}=G_{2(s)}\cdot U_{(s)}}$$
となる

STEP3
加算点のはたらきで全体の出力は、
$${\begin{array}{} Y_{(s)} &=& Y_{1(s)}+Y_{2(s)} \\\ &=& G_{1(s)}\cdot U_{(s)}+G_{2(s)}\cdot U_{(s)} \\\ &=& (G_{1(s)}+G_{2(s)})\cdot U_{(s)} \end{array}}$$
となる

以上により、並列接続全体の伝達関数(=全体の出力÷入力)は$${(G_{1(s)}+G_{2(s)})}$$だと分かります。



最後の3つめの変形はブロックのフィードバック接続です。
直列接続や並列接続よりやや複雑です。

フィードバック接続
ブロックのフィードバック接続

ここからは文章での説明です。
考え方は色々あると思いますが、

  • 伝達関数$${\bm{G_{1(s)}}}$$の入力と出力に目をつける

  • システム全体の入力と出力が$${\bm{U_{(s)}}}$$と$${\bm{Y_{(s)}}}$$なのは何がどうあっても変わらない

という2点を意識するとだいぶ理解しやすいと思います。

以下、ステップ分けで説明します。(5ステップ)

STEP1
伝達関数$${G_{1(s)}}$$まわりでは、
$${Y_{(s)}=G_{1(s)}\cdot E_{(s)}}$$
が成り立つ
($${Y_{(s)}}$$はシステム全体の出力と同じもの)

STEP2
加算点のはたらきと「箱を通る=かけ算」から、
$${\begin{array}{} E_{(s)} &=& U_{(s)}-X_{(s)} \\\ &=& U_{(s)}-G_{2(s)}\cdot Y_{(s)} \end{array}}$$
が成り立つ
($${U_{(s)}}$$はシステム全体の入力と同じもの)

STEP3
STEP2の$${E_{(s)}}$$をSTEP1で求めた$${Y_{(s)}=G_{1(s)}\cdot E_{(s)}}$$に代入して、
$${Y_{(s)}=G_{1(s)}\cdot (U_{(s)}-G_{2(s)}\cdot Y_{(s)})}$$
を得る

STEP4
左辺を$${Y_{(s)}}$$がかかっているものだけに、
右辺を$${U_{(s)}}$$がかかっているものだけに整理して、
$${Y_{(s)}+G_{1(s)}\cdot G_{2(s)}\cdot Y_{(s)}=G_{1(s)}\cdot U_{(s)}}$$
を得る

STEP5
システム全体伝達関数$${G_{(s)}}$$=出力$${Y_{(s)}}$$÷入力$${U_{(s)}}$$ということから、
$${G_{(s)}=\frac{Y_{(s)}}{U_{(s)}}=\frac{G_{1(s)}}{1+G_{1(s)}\cdot G_{2(s)}}}$$
を得る

以上により、フィードバック接続全体の伝達関数は$${G_{(s)}=\frac{G_{1(s)}}{1+G_{1(s)}\cdot G_{2(s)}}}$$だと分かります。
(ちなみに、加算点に戻るときの符号がプラスだと$${G_{(s)}=\frac{G_{1(s)}}{1-G_{1(s)}\cdot G_{2(s)}}}$$になります)

このフィードバック接続は制御分野における頻出問題と言えます。
とりあえず、「よく使うもの」と知っておけば何かに役立つと思います。


こうしたブロック線図の変形パターンを知っておけば、パズル感覚で複雑なブロック線図をひとまとめにして分かりやすくできます。

逆に、まとまったブロックを解きほぐして1つ1つを細かく見ることもできます。
 
ただ、これらを最初から全てを覚えるのは人間にとってなかなか負担が大きいです。

そんなムリをせずとも、はじめのうちはこの記事なり他の参考書なりを片手にだんだん馴染んでいけばそれでOKなのです。


5. ブロック線図の実用例

ここでは「小さなシステムを組み合わせて大きなシステムを作る」実例を紹介します。
具体例は中学校の理科の実験でよく使われるDCモータとします。

...といっても、DCモータの電気部分は基礎編(1)の4章ほぼそのまま、機械部分は本記事2章と同じですけどね。

DCモータ全体構成
DCモータ全体構成


良い機会なのでモータとは何だったか振り返ってみましょう。
モータとは電気エネルギーを運動エネルギーに変換する装置です。

動作イメージをステップ分けで説明すると以下になります。(3ステップ)

STEP1
電圧$${e}$$をかけると電流$${i}$$が流れて、それに応じたトルク$${\tau}$$が発生する

STEP2
トルク$${\tau}$$によってモータシャフトが回転する
(電気エネルギーが運動エネルギーに変わる)

STEP3
電流を流さない方向にシャフトの角速度$${\omega}$$に応じた逆起電圧が発生する
(発生した運動エネルギーと同じだけの電気エネルギーが失われる:エネルギー保存則)

余談
外部から運動エネルギーを与えてモータシャフトを回すと、それに応じた電気エネルギー(電力)が得られます。
そうした使い方をするときのモータは「ジェネレータ」と呼ばれます。
身近なところだと、ジェネレータは世界中の発電所の主要部品として使われています。
(構造的にモータとジェネレータは同じものです)

DCモータは電気部分と機械部分の2つの小さなシステムで成り立ちます。
しかし、その2つは互いにつながり、全体としては電気と機械が一体化した大きなシステムと言えます。

DCモータ全体の動きを表す連立微分方程式は下式のようになります。

$$
\left \{
\begin{array}{cll}
e_{(t)} & = & L\cdot\frac{di_{(t)}}{dt}+R\cdot i_{(t)}+V_{e(t)} \\
\tau_{(t)} & = & J\cdot\frac{d\omega_{(t)}}{dt} \\
\tau_{(t)} & = & K_t\cdot i_{(t)} \\
V_{e(t)} & = & K_e\cdot \omega_{(t)}
\end{array}
\right.
$$

中身の1つ1つはわりとシンプルです。

しかし、「これを1つの微分方程式にまとめてから解くとなると、なかなか手ごわそうだな...」という感覚は何となく伝わったのではないかと思います。


こんなとき便利に使えるのがブロック線図です。
ブロック線図を使えばDCモータ全体の伝達関数が比較的簡単に求まります。

ブロック線図を使うには、微分方程式をラプラス変換する必要があります。
下式は連立微分方程式をラプラス変換したものです。

$$
\left \{
\begin{array}{cll}
e_{(s)} & = & (L\cdot s+R)\cdot i_{(s)}+V_{e(s)} \\
\tau_{(s)} & = & J\cdot s\cdot\omega_{(s)} \\
\tau_{(s)} & = & K_t\cdot i_{(s)} \\
V_{e(s)} & = & K_e\cdot \omega_{(s)}
\end{array}
\right.
$$

ラプラス変換後の数式から伝達関数は下式のように求められます。
(電圧方程式は少し変則的ですが、ひとまず「こういうものだ」と思ってください)

$$
\frac{i_{(s)}}{e_{(s)}-V_{e(s)}}=\frac{1}{L\cdot s+R}\text{ :電圧方程式}
$$

$$
\frac{\omega_{(s)}}{\tau_{(s)}}=\frac{1}{J\cdot s}\text{ :運動方程式}
$$

$$
\frac{\tau_{(s)}}{i_{(s)}}=K_t\text{ :電流-トルク変換式}
$$

$$
\frac{V_{e(s)}}{\omega_{(s)}}=K_e\text{ :角速度-逆起電圧変換式}
$$

ブロック線図を作るのに決まったやり方はありませんが、今回は4つの方程式をピースに見立てパズル感覚で作っていこうと思います。
(ステップ分けすると4ステップで作れます)

STEP1
電圧方程式と運動方程式をそのまま並べる(この段階ではつなげない)

ブロック線図作成STEP1
ブロック線図作成STEP1

STEP2
2つの変換式を使って電圧方程式と運動方程式をつなげる

ブロック線図作成STEP2
ブロック線図作成STEP2

STEP3
フィードバック接続の形(まとめる前)になるようブロック線図を変形・整理する

ブロック線図作成STEP3
ブロック線図作成STEP3

STEP4
フィードバック接続のまとめ方を応用してブロック線図を変形・整理する(これで完了)

ブロック線図作成STEP4
ブロック線図作成STEP4

このようにして、入力を電圧$${e_{(s)}}$$・出力を角速度$${\omega_{(s)}}$$としたDCモータ全体の伝達関数が得られます。

ブロック線図を使えば、パズルのピースをあてはめるような感覚でシステム全体をつなげられます。

加えて、ブロック線図の変形パターン・ルールを知っておけば、システム全体の伝達関数を四則演算&分数の計算だけで確認できます。


なお、システムを形づくる各要素毎のはたらきをハッキリさせるため、あえてSTEP2で止めておくという使い方もアリです。
その時々の目的に応じて、柔軟に使えば良いと思います。


 6. おわりに

この記事では、伝達関数やブロック線図とは何なのか/どう使うのかを紹介・解説しました。
 
今回は、DCモータという比較的シンプルなシステムを取り上げましたが、モータを使って駆動するロボット・ドローン・電気自動車のようなより複雑なシステムもブロック線図で表せます。

むしろ、そうした複雑なシステムほど、ブロック線図を使うことの恩恵が大きくなります。
(ブロック線図を使ってアレコレ考えることは、抽象的思考に通ずるものがあります)
 
また、MATLAB/Simulinkというメカトロニクス業界内でよく使われるシミュレーション用ソフトウェアは、ブロック線図形式でプログラムを作成します。


かく言う私もMATLAB/Simulinkユーザー歴20年を超えるヘビーユーザーですが、紙に描いたブロック線図をそっくりそのままプログラムに流用できるのは便利です。
ブロック線図を理解し扱えると、そうした思わぬメリットを享受できることもあります。
 

私はMathWorks社(MATLAB/Simulink開発元)の関係者ではありませんが、個人学習等向けのHomeライセンスならお手頃価格で購入できます。
「他人より一歩抜きんでたい」という野心的な方は購入を検討してはどうでしょうか?
 
以下の5つのライセンスがあれば、個人学習で困ることはほぼありません。
(私が購入した当時は5つ合わせての買い切りで3万円ちょっとくらい、法人向けライセンスだと10倍かそれ以上します)

  • MATLAB

  • Simulink

  • Control System Toolbox

  • Signal Processing Toolbox

  • Symbolic Math Toolbox 

※Toolboxとは?
 MATLABの機能拡張プログラム(アドオン)のこと。あると便利。


なお、MATLAB/Simulinkの類似ソフトウェアにScilab/Xcosがあります。
Scilab/Xcosはフリーなので、「とりあえず試してみたい」方にはオススメできそうです。


前回:基礎編(1)「ラプラス変換」はこちら
次回:基礎編(3)「周波数特性とボード線図」はこちら


付録. 珍しいブロック線図の変形パターン

ここでは、使う場面が比較的少なく、「知らなくてもそんな困らないかな?」と思ったブロック線図の変形パターンを紹介します。

■珍しいパターン1:ブロックと加算点の交換

ブロックと加算点の交換
ブロックと加算点の交換

上下の違いはブロックが加算点(白丸○)の前にあるか/後にあるかのみです。
どちらの場合も下式が成り立ちます。

$$
Y_{(s)}=G_{(s)}\cdot U_{1(s)} +U_{2(s)}
$$


■珍しいパターン2:ブロックと分岐点の交換

ブロックと分岐点の交換
ブロックと分岐点の交換

上下の違いはブロックが分岐点(黒丸●)の前にあるか/後にあるかのみです。
どちらの場合も下式が成り立ちます。

$$
\left \{
\begin{array}{cll}
Y_{1(s)}&=&G_{(s)}\cdot U_{(s)} \\
Y_{2(s)}&=&G_{(s)}\cdot U_{(s)}
\end{array}
\right.
$$


前回:基礎編(1)「ラプラス変換」はこちら
次回:基礎編(3)「周波数特性とボード線図」はこちら

いいなと思ったら応援しよう!