実際に使える制御工学:基礎編(6)「極と零点。システムの挙動を予見する。」
<この記事で伝えたい事>
極とは、制御システムの素性を表す数値です
極を見れば、システムの指令追従の速さや安定/不安定が分かります。
加えて、振動する/しない等も分かります。零点とは、極の分子バージョンです
極は伝達関数の分母にあります。
分子にあると零点と呼ばれます。
極ほどではありませんが、零点からも読み取れる情報があります。
1. はじめに
自己紹介はこちらです。
この記事は、主に制御系の学生や若手エンジニアに向けた基礎知識紹介・解説記事シリーズの第6弾です。
今回は、極と零点という概念や、その活かし方を紹介・解説します。
2. 極の求め方と意味
極は伝達関数の中にあります。
このため、まずは素性を知りたいシステム(伝達関数)をハッキリさせるところから話が始まります。
ここでは、下式の伝達関数を具体例に話を進めます。
$$
\frac{y_{(s)}}{u_{(s)}}=G_{(s)}=\frac{20}{s^2+22\cdot s+40}
$$
この伝達関数の分母は、ラプラス変数$${s}$$の多項式です。
これを$${s}$$について因数分解してみましょう。
(中学校で教わるはずのあの因数分解です)
その結果、下式が得られます。
$$
G_{(s)}=\frac{20}{(s+2)\cdot (s+20)}
$$
伝達関数の分母多項式を0にする$${s}$$の数値が(伝達関数の)極です。
具体例の場合、$${s=-2,-20}$$の2つが極です。
極を求めるのに必要な計算はこれだけです。
分母多項式の次数が高いと、手計算で求めるのは大変です。
しかし、MATLABを使えば、簡単に極を求められます。
次は、極の意味を考えてみましょう。
極の意味は、ステップ応答を見ると分かりやすいです。
(ステップ応答:入力が定数のときの出力波形のこと、定数=1とすることが多いです$${^{※}}$$)
$${^{※ 正確には定数=1のステップ応答はインディシャル応答と呼びます}}$$
ステップ応答を見たいとき、$${u_{(s)}=1/s}$$となります。
すると、出力は下式になります。
$$
y_{(s)}=\frac{20}{(s+2)\cdot (s+20)}\cdot\frac{1}{s}
$$
これを部分分数分解すると下式が得られます。
(高校で教わるはずのあの部分分数分解です)
$$
y_{(s)}=\frac{1}{2}\cdot\frac{1}{s}-\frac{5}{9}\cdot\frac{1}{s+2}+\frac{1}{18}\cdot\frac{1}{s+20}
$$
上式を逆ラプラス変換すると、以下の時間関数$${y_{(t)}}$$が得られます。
$$
y_{(t)}=\frac{1}{2}-\frac{10}{18}\cdot e^{-2\cdot t}+\frac{1}{18}\cdot e^{-20\cdot t}
$$
ここで勘の良い方は気づくかもしれません。
自然数$${e}$$の指数には、極がそのまま表れています。
このため、極は収束の速さ(=指令追従の速さ)を表す目安となります。
例えば、$${e^{-2\cdot t}}$$より$${e^{-20\cdot t}}$$の方がわずかな時間経過で0に近づきます。
このことから、極は-2より-20の方が高速いと言えます。
話が変わりますが、$${y_{(t)}}$$が最終的にどんな数値に収束するかは$${t=\infty}$$を代入すると分かります。
$$
\begin{array}{cl}
y_{(\infty)}&=1/2-10/18\cdot e^{-2\cdot \infty}+1/18\cdot e^{-20\cdot \infty}\\
&\fallingdotseq1/2-10/18\cdot0+10/18\cdot0\\
&\fallingdotseq1/2
\end{array}
$$
最終的に、$${y_{(t)}}$$が1/2(=0.5)に収束するのは、グラフからも確認できます。

なお、伝達関数のステップ応答(ステップの大きさは1)がどこに収束するかを簡単に計算する方法に「最終値の定理」というものがあります。
やり方は、伝達関数に$${s=0}$$を代入するだけです。
試しに、この章の冒頭で挙げた具体例に最終値の定理を適用してみます。
$$
G_{(0)}=\frac{20}{0^2+22\cdot0+40}=\frac{20}{40}=\frac{1}{2}
$$
逆ラプラス変換で求めた最終値と一致するのが分かります。
最終値の定理はステップ応答限定の方法なので、使いどころは限られます。
例えば、作ったシミュレータの最終値がどこに落ち着くか確認するような初期段階のデバッグ作業なら使えます。
最後になりますが、下式のような1次の伝達関数について極$${-\alpha}$$に-1をかけた後の逆数は、時定数と呼ばれます。
$$
\frac{1}{s+\alpha}
$$
時定数の記号には、$${\tau}$$が多く使われます。
数式で表すと、下式になります。
$$
\tau=\frac{1}{\alpha} _{[s]}
$$
「時定数$${\bm{\tau_{[s]}}}$$だけ時間が経過すると、$${\\}$$
最終値の$${\bm{(1-e^{-1})\times100_{[\%]}\fallingdotseq63.2_{[\%]}}}$$に到達する」$${\\}$$
という何とも微妙な数値です。
制御分野では、これが収束の速さの目安として慣例的に使われます。
なお、時定数の5倍の時間が経過すると最終値への到達率は$${\bm{(1-e^{-5})\times100_{[\%]}\fallingdotseq99.3_{[\%]}}}$$となります。
これなら定常状態に入ったと言えると思います。
(この感じ方には個人差があり、時定数の3倍経てば十分定常状態だ!という人もいれば、10倍経たないと定常状態とは言えない!という人もいます)
3. 不安定極について
制御システムの安定/不安定に関わるので、専用の章を作りました。
2章での伝達関数の極の数値はマイナスでした。
しかし、これがプラスならどうなるか具体例を挙げて説明しましょう。
$$
\frac{y_{(s)}}{u_{(s)}}=G_{(s)}=\frac{3}{s-3}
$$
極とは、分母を0にする$${s}$$です。
よって、この伝達関数の極は+3です。
このシステムのインパルス応答を計算してみます。
インパルス応答を計算するには、$${u_{(s)}=1}$$とします。
(インパルス応答:指でピンと弾いたときのような動き)
$$
y_{(s)}=\frac{3}{s-3}\cdot 1
$$
これを逆ラプラス変換すると、下式になります。
$$
y_{(t)}=3\cdot e^{3\cdot t}
$$
これをグラフ化したものが下図です。

ピンと弾いただけなのに、収束するどころか$${\infty}$$に発散します。
このことから、プラスの極は不安定極と呼ばれます。
伝達関数が1つでも不安定極を持つなら、その制御システムは不安定です。
これは避けるべきことです。
不安定極を持たないように設計しましょう。
ただ、不安定極を持つ制御対象をコントローラによって安定動作させるシステムは存在します。
(例えば、倒立振子システムや戦闘機など)
このような制御システムは、小さなエネルギーで速い動きを実現しやすいメリットがあります。
いくら制御をかけるといえ、物理法則まで変わるわけではありません。
制御対象が小さなエネルギーで速く・大きく動く性質はそのままです。
これを積極的に利用すれば、それまでになかった高速運動・省エネルギー運動を実現できることもあります。
4. 複素数・虚数極(振動極)について
ここまで、極がマイナスなら収束(指令に追従)・プラスなら発散(不安定)という話をしてきました。
そうなると
「極が虚数のときはどうなるの?そもそも虚数になるの?」
と疑問に思う方もいるでしょう。
ここでは、その疑問に答えようと思います。
下式の伝達関数を具体例に話を進めます。
$$
\frac{y_{(s)}}{u_{(s)}}=G_{(s)}=\frac{401}{s^2+2\cdot s+401}
$$
この伝達関数の極は、2次方程式の解の公式で求められます。
(中学校か高校で教わるあの解の公式です)
ひとまず、解の公式のおさらいをします。
2次方程式$${a\cdot x^2+b\cdot x+c=0}$$の解は、
$$
x=\frac{1}{2\cdot a}\cdot(-b\pm\sqrt{b^2-4\cdot a\cdot c})
$$
で求められるというのが解の公式です。
虚数$${j}$$とは2乗すると-1になる数です。
$${\sqrt{}}$$の中がマイナスなら2次方程式の解は虚数成分を持ちます。
($${\sqrt{-1}=j}$$とすると虚数$${j}$$の2乗は-1になります)
具体例の伝達関数分母多項式=0として、解の公式を使うと極が分かります。
(極は分母多項式=0にする$${s}$$ですから)
$$
\begin{array}{cl}
s&=\frac{1}{2\times1}\times(-2\pm\sqrt{2^2-4\times1\times401})\\
&=\frac{1}{2\times1}\times(-2\pm\sqrt{-1600})\\
&=\frac{1}{2\times1}\times(-2\pm j\cdot 40)\\
&=-1\pm j\cdot20
\end{array}
$$
この解には$${\pm}$$があります。
$${s=-1+j\cdot 20}$$と$${s=-1-j\cdot 20}$$の2つの解を持つという意味ですね。
これを踏まえると、伝達関数は下式のように変形できます。
$$
\begin{array}{cl}
\cfrac{y_{(s)}}{u_{(s)}}&=\cfrac{401}{s^2+2\cdot s+401}\\
&=\cfrac{401}{(s+1-j\cdot 20)\cdot (s+1+j\cdot 20)}
\end{array}
$$
これで、複素数極が存在することは分かってもらえたと思います。
(2次方程式の$${b}$$にあたる部分がゼロなら、実数成分が消えて完全な虚数の極になります)
ここからは、システムのインパルス応答を見ていきます。
インパルス応答を見るときの手順は、以下3ステップです。
STEP1
$${u_{(s)}=1}$$にする
(ステップ応答を見たいときは、$${u_{(s)}=1/s}$$)
STEP2
$${y_{(s)}=G_{(s)}\cdot u_{(s)}}$$の形にして、右辺を部分分数分解する
STEP3
逆ラプラス変換して、ラプラス関数を時間関数にする
STEP2の部分分数分解後の$${y_{(s)}}$$は、下式になります。
$$
\begin{array}{cl}
y_{(s)}&=\frac{-j\cdot401}{40}\cdot \frac{1}{s+1-j\cdot 20}+\frac{j\cdot401}{40}\cdot \frac{1}{s+1+j\cdot 20}\\
&=\frac{j\cdot401}{40}\cdot
\begin{pmatrix}
-\frac{1}{s+1-j\cdot 20}+\frac{1}{s+1+j\cdot 20}
\end{pmatrix}
\end{array}
$$
ひとまず虚数に目をつむって逆ラプラス変換してみましょう。
$$
y_{(t)}=\frac{j\cdot401}{40}\cdot (-e^{-(1-j\cdot20)\cdot t}+ e^{-(1+j\cdot20)\cdot t})
$$
虚数が残ったままでは、グラフは描けそうにありません。
そこで、オイラーの公式$${e^{\pm j\cdot \theta}=cos\theta\pm j\cdot sin\theta}$$を使います。
(高校で教わるあのオイラーの公式です)
すると、逆ラプラス変換結果は下式のように変形できます。
$$
\begin{array}{cl}
y_{(t)}&=\frac{j\cdot401}{40}\cdot (-e^{-(1-j\cdot20)\cdot t}+ e^{-(1+j\cdot20)\cdot t})\\
&=\frac{j\cdot401}{40}\cdot e^{-1\cdot t}\cdot(-e^{j\cdot 20\cdot t}+e^{-j\cdot 20\cdot t})\\
&=\frac{j\cdot401}{40}\cdot e^{-t}\cdot(-cos(20\cdot t)-j\cdot sin(20\cdot t)\\
& +cos(20\cdot t)-j\cdot sin(20\cdot t))\\
&=\frac{j\cdot401}{40}\cdot e^{-t}\cdot(-2j\cdot sin(20\cdot t))\\
&=\frac{401}{20}\cdot e^{-t}\cdot sin(20\cdot t)
\end{array}
$$
最終的に虚数が消えました。
これなら、$${y_{(t)}}$$のグラフを描けます。
下図が、$${y_{(t)}}$$のグラフです。

$${y_{(t)}=\frac{401}{20}\cdot e^{-t}\cdot sin(20\cdot t)}$$の数式どおり、SIN波状の振動が表れている様子が確認できます。
(SIN波の角周波数は20[rad/s])
また、数式中の$${e^{-t}}$$によって、時間経過と共にSIN波の振幅が減衰していく様子も確認できます。
ここで、改めて伝達関数の極を確認してみましょう。
$$
\frac{y_{(s)}}{u_{(s)}}=\frac{401}{(s+1-j\cdot 20)\cdot (s+1+j\cdot 20)}
$$
極の実数部分が自然数$${e}$$の指数(減衰)に表れています。
また、極の虚数部分が角周波数と一致するのが分かります。
なお、極の実数部が0やプラスだと、振動の出方が変わります。
極が実数成分を持たない場合
sinに$${e^{0\cdot t}=1}$$がかかり、時間経過と共に振動が減衰しません。
(持続振動)
極の実数成分がプラスの場合
sinに$${e^{\alpha\cdot t}}$$がかかり、時間経過と共に振動が発散します。
(不安定化、$${\alpha}$$はプラスの実数)
このように、複素数や虚数の極から、振動に関する情報が得られます。
伝達関数の極に虚数が出たら振動すると思って間違いありません。
もしかすると、
「今回の具体例ではたまたまこういう結果が出たのでは?」
と思う方がいるかもしれません。
そこは安心してください。
2次多項式の解の公式を再確認してみましょう。
$$
x=\frac{1}{2\cdot a}\cdot(-b\pm\sqrt{b^2-4\cdot a\cdot c})
$$
解が虚数成分を持つ($${\sqrt{}}$$の中がマイナスになる)とき、解は必ず$${x=\alpha+j\cdot \beta}$$と$${x=\alpha-j\cdot \beta}$$のペアになります。
(共役複素数)
詳しい証明は省略しますが、この数学的性質によって、数値が変わっても今回の解析方法を使いまわせることを保証できます。
5. 零点について
冒頭で述べたように、零点は極の分子バージョンです。
零点は、伝達関数の分子を0にするラプラス変数$${s}$$の数値です。
ここでは、下式の伝達関数を具体例に話を進めます。
$$
\begin{array}{cl}
G_{(s)}&=\cfrac{6\cdot s+3}{s^2+22\cdot s+40}\\
&=\cfrac{6\cdot(s+0.5)}{(s+2)\cdot(s+20)}
\end{array}
$$
この伝達関数の零点は$${s=-0.5}$$です。
ただ、零点からは極ほどの情報は読み取れません。
慣れないうちはスルーして良いと思います。
零点は分子側のものだけあって、分母側にある極とは逆の性質を持ちます。
箇条書きで以下のようにまとめられます。
零点は位相を進める
(対して安定な極は位相を遅らせる)零点は周波数が上がるとゲインを右肩上がりに増やす
(対して安定な極はゲインを右肩下がりに下げる)複素数の零点は振動を抑える
(反共振特性)
位相を進めてくれるのは良いのですが、度が過ぎるとオーバーシュート(行き過ぎ)の原因になるのは厄介です。
また、零点も極と同じくプラスになることがあります。
プラスの零点は「不安定零点」と呼ばれます。
名前と裏腹に、不安定零点があっても伝達関数は不安定化しません。
ただ、不安定零点は(安定)零点とは逆に位相を遅らせます。
このため、アンダーシュートの原因になります。
極力ないようにした方が良いのは間違いありません。
また、1つの伝達関数の中に同じ数値の極と零点があると約分できます。
この約分を極零相殺と呼びます。
(なんだか大げさなネーミングですね)
極零相殺の主なメリットは、普通の分数の約分と同じです。
極零相殺すると、スッキリして見やすくなります。
極零相殺の例
$$
\begin{array}{ll}
G_{(s)}&=\cfrac{3\cdot s+6}{s^2+22\cdot s+40}\\
&=\cfrac{3\cdot(s+2)}{(s+2)\cdot(s+20)}\\
&=\cfrac{3}{s+20}
\end{array}
$$
6. 極を利用した制御設計方法(極配置法)
極は伝達関数の特性を把握するのに役立つだけでなく、制御設計にも利用できます。
基礎編(5)では、ボード線図で安定性を見ながらゲイン調整しました。
このとき、制御システムの極は成り行きで決まります。
極配置法は、それと対照的です。
制御システムの極を先に決め、そこからゲインを逆算します。
具体例は、制御対象はDCモータ全体、コントローラはPID制御とします。
(DCモータ伝達関数については基礎編(2)を参照ください)

制御対象のパラメータは以下とします。
モータ慣性モーメントJ:$${\bm{3.0 \times 10^{-4}_{[kgm^2]}}}$$
電気抵抗R:$${\bm{1.0_{[\Omega]}}}$$
コイルインダクタンスL:$${\bm{0.5 \times 10^{-3}_{[H]}}}$$
トルク定数Kt:$${\bm{0.01_{[Nm/A]}}}$$
逆起電圧定数Ke:$${\bm{0.01_{[V/(rad/s)]}}}$$
実は、極配置法には1つ難点があります。
それは、ムダ時間の影響を考慮した制御設計がしづらいことです。
ただ、その問題を回避できる知恵はあります。
ひとまず、ムダ時間を0として話を進めます。
具体例の制御システムの目標角速度$${\omega^{ref}_{(s)}}$$から角速度$${\omega_{(s)}}$$までの伝達関数は下式で求められます。
$$
\begin{array}{cl}
\frac{\omega_{(s)}}{\omega^{ref}_{(s)}}&=\frac{\frac{K_{d}\cdot s^2+K_{p}\cdot s+K_{d}}{s}\cdot\frac{K_{t}}{J\cdot L\cdot s^2+J\cdot R\cdot s+K_{t}\cdot K_{e}}}{1+\frac{K_{d}\cdot s^2+K_{p}\cdot s+K_{d}}{s}\cdot\frac{K_{t}}{J\cdot L\cdot s^2+J\cdot R\cdot s+K_{t}\cdot K_{e}}}\\
&=\frac{\frac{(K_{d}\cdot s^2+K_{p}\cdot s+K_{d})\cdot K_{t}}{(J\cdot L\cdot s^2+J\cdot R\cdot s+K_{t}\cdot K_{e})\cdot s}}{1+\frac{(K_{d}\cdot s^2+K_{p}\cdot s+K_{d})\cdot K_{t}}{(J\cdot L\cdot s^2+J\cdot R\cdot s+K_{t}\cdot K_{e})\cdot s}}\\
&=\frac{K_{d}\cdot K_{t}\cdot s^2+K_{p}\cdot K_{t}\cdot s+K_{i}\cdot K_{t}}{J\cdot L\cdot s^3+(J\cdot R+K_{d}\cdot K_{t})\cdot s^2+(K_{t}\cdot K_{e}+K_{p}\cdot K_{t})\cdot s+K_{i}\cdot K_{t}}\\
\\
&=\cfrac{\frac{K_{d}\cdot K_{t}}{J\cdot L}\cdot s^2+\frac{K_{p}\cdot K_{t}}{J\cdot L}\cdot s+\frac{K_{i}\cdot K_{t}}{J\cdot L}}{s^3+\frac{J\cdot R+K_{d}\cdot K_{t}}{J\cdot L}\cdot s^2+\frac{K_{t}\cdot (K_{e}+K_{p})}{J\cdot L}\cdot s+\frac{K_{i}\cdot K_{t}}{J\cdot L}}
\end{array}
$$
これまでの説明どおり、伝達関数の極は分母多項式で決まります。
今回の場合、分母多項式の次数3なので制御システムは極を3つ持ちます。
3つの極の数値をどうするかは設計者に委ねられます。
「制御システムの極をこれにしたい」
という数値を$${\omega_{p1},\omega_{p2},\omega_{p3}}$$とします。
(不安定は困るので安定極とします)
極がそうなるには、分母多項式$${D_{(s)}}$$が下式である必要があります。
$$
D_{(s)}=(s+\omega_{p1})\cdot(s+\omega_{p2})\cdot(s+\omega_{p3})
$$
$${\omega_{p1},\omega_{p2},\omega_{p3}}$$は我々が自由に決められます。
しかし、自由すぎると却って決めづらいのはよくあることですね。
そんなとき便利なのが3つ全て同じ数値にする「重根配置」と呼ばれる方法です。
これを適用すると、伝達関数の分母多項式$${D_{(s)}}$$は下式になります。
(高校で教わるn乗の展開公式をそのまま当てはめられます)
$$
\begin{array}{cl}
D_{(s)}&=(s+\omega_{p})^3\\
&=s^3+3\cdot\omega_{p}\cdot s^2+3\cdot\omega_{p}^2\cdot s+\omega_{p}^3
\end{array}
$$
重根配置のメリットは、1つだけ数値を決めれば全てが連動して決まることです。
設計者の負担が小さく、実機の動きを見てからの微調整がしやすいのもメリットですね。
これらメリットのため、開発現場でも重根配置はよく使われます。
さて、重根配置時に持たせたい極と制御システム分母多項式の対応関係は、下式になります。
(単純に分母多項式同士を並べただけです)
$$
\begin{array}{cl}
D_{(s)}&=s^3+3\cdot\omega_{p}\cdot s^2+3\cdot\omega_{p}^2\cdot s+\omega_{p}^3\\
&=s^3+\frac{J\cdot R+K_{d}\cdot K_{t}}{J\cdot L}\cdot s^2+\frac{K_{t}\cdot (K_{e}+K_{p})}{J\cdot L}\cdot s+\frac{K_{i}\cdot K_{t}}{J\cdot L}
\end{array}
$$
各係数の対応関係から、以下3つの方程式を導き出せます。
$$
\left \{
\begin{array}{l}
3\cdot\omega_{p}=\cfrac{J\cdot R+K_{d}\cdot K_{t}}{J\cdot L}\\
3\cdot\omega_{p}^2=\cfrac{K_{t}\cdot(K_{e}+K_{p})}{J\cdot L}\\
\omega_{p}^3=\cfrac{K_{i}\cdot K_{t}}{J\cdot L}
\end{array}
\right.
$$
今回の場合、これらを個別に解けばPIDゲインを求められます。
PIDゲインは下式になります。
$$
\left \{
\begin{array}{l}
K_{d}=\frac{J}{K_{t}}\cdot(3\cdot\omega_{p}\cdot L-R)\\
K_{p}=\frac{J}{K_{t}}\cdot 3\cdot\omega_{p}^2\cdot L-K_{e}\\
K_{i}=\frac{J}{K_{t}}\cdot\omega_{p}^3\cdot L
\end{array}
\right.
$$
ゲインが求められたところで、ムダ時間$${T_{d[s]}}$$によって制御システムを不安定化させないための知恵を紹介します。
制御システムの持つ最大の極の逆数(=時定数)がムダ時間$${T_{d}}$$の10倍以上なら、まずムダ時間による制御システムの不安定化はありません。
仮に
「ムダ時間$${T_{d}}$$の10倍」
という基準を採用すると、設定できる極の最大値$${\omega_{pMax}}$$は、以下のように求められます。
$$
\omega_{pMax}=\frac{1}{10\cdot T_{d}}
$$
基礎編(5)と同じく、ムダ時間$${T_{d}=25_{[\mu s]}}$$とすると$${\omega_{pMax}=4000_{[rad/s]}}$$です。
このとき、PIDゲインは下式で求められます。
$$
\left \{
\begin{array}{l}
K_{d}=\frac{3\times10^{-4}}{0.01}\cdot(3\times 4000\times 0.5\times 10^{-3}-0.1)=0.15\\
K_{p}=\frac{3\times10^{-4}}{0.01}\cdot 3\times 4000^2\times 0.5\times 10^{-3} -0.01=719.99\\
K_{i}=\frac{3\times10^{-4}}{0.01}\times 4000^3\times 0.05\times 10^{-3}=960000
\end{array}
\right.
$$
このPIDゲインを使ったときのシミュレーション結果を下図に示します。
言ったとおり、不安定にはなっていません。
しかし、$${25_{[\mu s]}}$$のムダ時間による振動は目立ちます。

そこで、振動を抑えるための微調整を考えます。
$${\omega_{p}=4000_{[rad/s]}}$$を30%下げてみましょう。
(そのとき$${\omega_{p}=2800_[rad/s]}$$)
すると、PIDゲインは$${K_{d}=0.096, K_{p}=352.79, K_{i}=329280}$$となります。
シミュレーション結果は、下図のように変わります。

だいぶ動きがおとなしくなってくれたのが分かります。
基本的に、極を下げると制御システム動作は安定方向に変わります。
開発現場の制御技術者は、こうして制御ゲインを決める場合もあります。
7. おわりに
この記事では、極と零点、および極を利用した制御設計方法を紹介・解説しました。
極や零点を理解できると伝達関数の解像度が上がり、より多くの情報を読み取れるようになります。
熟練すると、極と零点を見た瞬間にボード線図のだいたいの形が分かるようになります。
そうなると仕事が早くなります。
また、今回紹介した知識を活用して一発でモノの動きを安定化させたとき、制御を専門としない方々からは、まるで魔法でも使ったかのような視線を受けることがあります。
(手品のタネを知っている側からすると当たり前のことなのですが)
悪くない気分になれますので、深く学んでみてはどうでしょうか?
前回:基礎編(5)「安定判別とゲイン調整」はこちら
次回:基礎編(7)「初歩的なディジタル制御」はこちら
付録. MATLABを使った極・零点の求め方
% パラメータの定義
Kt=0.01; Ke=0.01; R=1.0; L=0.5e-3; J=3e-4; Td=25e-6;
% Kt:トルク定数[Nm], Ke:逆起電圧定数[V/(rad/s)], R:電気抵抗[Ω]
% L:コイルインダクタンス[H], J:モータ慣性モーメント[kgm^2], Td:ムダ時間[s]
w=1/(Td*10)*0.7; % 制御システムの極を指定
Kd=J/Kt*(3*w*L-R);
Kp=J/Kt*3*w^2*L-Ke;
Ki=J/Kt*w^3*L;
% Kp:比例ゲイン, Ki:積分ゲイン, Kd:微分ゲイン
% 伝達関数の定義
s=tf('s'); % MATLABに変数sをラプラス変数として認識させる
Ps=Kt/(J*L*s^2 + J*R*s + Kt*Ke); % DCモータ伝達関数
Cs=tf(Kd*s^2 + Kp*s + Ki)/s; % PID制御器伝達関数
Gl=Ps*Cs; % 一巡伝達関数
Gcl=Ps*Cs/(1+Gl); % 制御システム全体伝達関数
Gcl=minreal(Gcl); % 極零相殺による情報整理
% 極と零点の割り出し
Gcl=zpk(Gcl); % 伝達関数を零・極・ゲイン形式に変換
[wz,wp,k]=zpkdata(Gcl,'v'); % 数値データが欲しいときはzpkdata関数を使用