実際に使える制御工学:応用編(1)「サーボモータの3重ループ制御。現代における標準的な制御方法。」
<この記事で伝えたい事>
現代におけるサーボモータの標準的制御方法は、3重ループ制御です
3重ループ制御とは、
・最も内側に電流制御ループ
・その次に速度制御ループ
・最も外側に位置制御ループ
という構造の制御方法です。調整のコツは、内側ループほど高速動作するようゲイン調整することです
それを意識すると、制御システム全体の設計の見通しが良くなります。
1. はじめに
自己紹介はこちらです。
この記事は、主に若手~中堅エンジニアに向けて書いています。
応用編では、基礎を身につけた後、そこからもう一歩を踏み出すのに役立ちそうな事を書いていこうと思っています。
2. 3重ループ制御の歴史的背景
日本国内では、1900年ごろからモータの産業利用が始まったそうです。
初期のころは、炭鉱で使われることが多かったと聞きます。
当時は、今ほどモータへの要求は厳しくなかったそうで、とにかく回っていれば良かったらしいです。

それから時代は進み、製鉄所での圧延鋼板製造などにもモータが使われるようになったと聞きます。
このあたりで、モータに速度(回転数)や電流の精密な制御が要求され、その要求に応えるべく電流制御・速度制御ループを持ったと聞きます。

更に時代は進み、産業用ロボットや工作機などに使うモータには、高速・高精度な位置決め機能が要求されるようになりました。
このあたりで、位置・速度・電流の3重ループ制御が確立されたようです。

こうした背景事情があり、今のサーボモータ制御には3重ループ制御が標準的に使われています。
単純に性能的に優れているというだけでなく、モード切替によって多用な用途に対応できる実用性も考慮した作り込みになっているわけですね。
(炭鉱や圧延鋼板製造のニーズもなくなってはいないので)
3. 3重ループ制御の全体構成
下図は、2重ループ制御の全体構成を表したものです。

冒頭で述べたように、最も内側に電流制御ループを持ちます。
そのすぐ外に、速度制御ループを持ちます。
トルクと電流は比例関係にあるので、トルク指令をトルク定数$${K_t}$$で割って電流指令を生成します。
そして、最も外側に位置制御ループを持ちます。
これが3重ループ制御の全体構成です。

実際には、フィードフォワード制御を併用する等の性能向上の工夫がありますが、この3重ループ制御が基本というのは動きません。
なお、モータへの電力供給の詳細(PWMインバータ)については、寄り道編(2)で紹介しています。
詳しく知りたい場合、そちらを参照ください。
4. 電流制御ループ
制御設計をするとき、最初にやることは
「制御対象をハッキリさせること」
です。
電流制御というだけあって、今回の制御対象はモータの電気部分です。
現代のサーボモータは、3相AC電源で駆動するものが主流です。
しかし、ベクトル制御という技術を使えば、3相ACモータをDCモータであるかのように扱えます。
理解のしやすさを重視して、ここではDCモータの電気部分を制御対象として話を進めます。

DCモータの電圧方程式は下式のとおりです。
$$
e_{(t)}=L\cdot\frac{di_{(t)}}{dt}+R\cdot i_{(t)}+K_e\cdot \omega_{(t)}
$$
ひとまず逆起電圧を外乱として無視します。
すると、制御対象伝達関数は下式のようになります。
$$
\frac{i_{(s)}}{e_{(s)}}=\frac{1}{L\cdot s+
R}
$$
一般的に、電流制御にはPI制御が使われます。
下図は、そのときの電流制御のブロック線図です。

ここで、
電流比例ゲイン$${\bm{K_{ip}=\omega_{i}\cdot L}}$$
電流積分ゲイン$${\bm{K_{ii}=\omega_{i}\cdot R}}$$
とします。
このように制御ゲインを選ぶと、制御器と制御対象との間に極零相殺(約分)が発生します。
極零相殺すると、伝達関数がスッキリして設計の見通しが良くなります。
これが、電流制御にPI制御が使われる理由です。

このとき、電流指令$${i^{ref}}$$から電流$${i}$$までの伝達関数は、下式のような1次の伝達関数になります。
$$
\begin{array}{cl}
\frac{i_{(s)}}{i^{ref}_{(s)}}&=\cfrac{\omega_{i}/s}{1+\omega_{i}/s}\\
&=\cfrac{\omega_{i}}{s+\omega_{i}}
\end{array}
$$
数式中の$${\omega_i}$$は、電流制御応答周波数と呼ばれます。
($${\omega_i}$$の単位は[rad/s]、これを$${2\pi}$$で割ると[Hz]に換算できます)
電流制御応答周波数$${\omega_i}$$は、電流制御の代表的な性能指標です。
電流指令がSIN波として、そのSIN波の角周波数が$${\omega_{i[rad/s]}}$$までならば、おおむね電流指令どおりに電流を流せるとされます。
電流制御ループのサンプリング時間は数十[$${\mu s}$$]程度(=サンプリング周波数は数十[kHz]程度)です。
このため、電流制御応答周波数はその1/10未満程度の数[kHz]程度にするケースが多いです。
このボトルネックは、PWMインバータのハードウェア限界にあります。
2026年現在でも、PWMインバータ内のパワー半導体にはSi(シリコン)が多く用いられます。
Siデバイスでそれ以上の高速スイッチング(=キャリア周波数の高速化)をすると、スイッチング時のエネルギー損失・発熱が大きく、とても使い物になりません。
ただ、近年、SiC(炭化シリコン)やGaN(窒化ガリウム)というパワー半導体の普及が進んできており、そのあたりの事情も変わりつつあります。
やや脱線したので、電流制御の話に戻します。
ひとまず無視した逆起電圧ですが、モータが高速回転するときは、電流制御への影響は無視できません。
そこで使われる制御方法が、逆起電圧補償です。
その名のとおり、計算で求めた逆起電圧を電圧に上乗せして、実機の逆起電圧を相殺する方法です。

このブロック線図を見ると
「こんな安直なやり方で本当にいいの?」
と不安になるかもしれません。
しかし、これが意外と高い効果を発揮します。
その他の電流制御精度悪化の要因は、以下が考えられます。
・電気抵抗の温度依存性
温度上昇するほど電気抵抗は上昇します
・コイルインダクタンスの電流依存性
電流が大きいほどインダクタンスは低下します
・逆起電圧定数の個体バラつき
カタログ値に対して±10%以内程度のバラつきます
これらへの対処方法はいくつか考えられますが、話すと長いので詳細については触れません。
(そこまでせずとも実用上は十分です、よほど高性能を目指すなら話は別ですが)
5. 速度制御ループ
速度制御の制御対象は、モータの機械部分です。
サーボモータは各種機械の部品であり、実際に使われるときは負荷を取り付けた状態で駆動します。
しかし、今は理解のしやすさを重視して、モータ単体で動かす想定で話を進めます。

モータの運動方程式は下式のとおりです。
(運動方程式は駆動方式やモータ構造によらず共通です)
一般的に、速度制御にはPI制御が使われます。
I制御があるのは、摩擦による定常偏差を避けるためです。
(基礎編(4)の5章で詳細に説明しています)
下図は、速度制御ループのブロック線図です。

この速度制御ループにも応答周波数が存在します。
速度制御応答周波数$${\bm{\omega_v}}$$を、電流制御応答周波数$${\bm{\omega_i}}$$の1/5~1/10程度
に留めると、速度制御からは電流制御ループ伝達関数≒1とみなせます。
($${\omega_i , \omega_v}$$の単位は[rad/s])
こうすると、速度制御ループのブロック線図はグッとシンプルになります。

速度指令$${\omega^{ref}}$$から角速度$${\omega}$$までの伝達関数は、下式のような2次の伝達関数になります。
$$
\begin{array}{cl}
\cfrac{\omega_{(s)}}{\omega^{ref}_{(s)}}&=\cfrac{(K_{vp}+K_{vi}/s)/s}{1+(K_{vp}+K_{vi}/s)/s}\\
&=\cfrac{K_{vp}\cdot s+K_{vi}}{s^2+K_{vp}\cdot s+K_{vi}}
\end{array}
$$
ここで、
速度比例ゲイン$${\bm{K_{vp}=\omega_v}}$$
速度積分ゲイン$${\bm{K_{vi}=\cfrac{\omega_v^2}{4}}}$$
とします。
すると、速度指令$${\omega^{ref}}$$から角速度$${\omega}$$までの伝達関数は、下式になります。
$$
\begin{array}{cl}
\cfrac{\omega_{(s)}}{\omega^{ref}_{(s)}}&=\cfrac{\omega_v\cdot s+\omega_v^2 /4}{s^2 +\omega_v\cdot s+\omega_v^2 /4}\\\
&=\cfrac{\omega_v\cdot(s+\omega_v/4)}{(s+\omega_v/2)\cdot(s+\omega_v/2)}
\end{array}
$$
電流制御応答周波数$${\omega_i}$$$は[Hz]換算で数[kHz]です。
速度制御応答周波数$${\omega_v}$$は[Hz]換算で数百[Hz]程度に留めるのが妥当です。
数式から分かるように、これまでの説明どおりにゲインを決定すると、速度指令$${\omega^{ref}}$$から角速度$${\omega}$$までの伝達関数の2つの極が重根配置になります。
これは、複素数極が出ない(=振動が出ない)ギリギリを攻めたゲイン調整をしていると言えます。
その観点からは、これが最適なゲイン調整です。
しかし、ギリギリを攻めた調整というのは、予想外の事態に弱いものです。
例えば、機械が動作中にワークを掴んで、機械全体での質量や慣性モーメントが増大すると、速度制御ループは振動極を持ちます。
場合によっては、それが機械の異音や異常動作の原因になり得ます。
それを考慮すると、
速度比例ゲイン$${\bm{K_{vp}=\omega_v}}$$、
速度積分ゲイン$${\bm{K_{vi}=\omega_v^2 /10}}$$程度
に留める調整が実戦的と言えます。
2つのゲイン調整をしたときのステップ応答を比較したものが下図です。
(実機の慣性モーメントが想定の2倍の条件でのシミュレーション結果)

この波形を拡大すると、
速度比例ゲイン$${\bm{K_{vp}=\omega_v}}$$、
速度積分ゲイン$${\bm{K_{vi}=\omega_v^2/4}}$$
では、わずかに振動が出ています。

それに対し、
速度比例ゲイン$${\bm{K_{vp}=\omega_v}}$$、
速度積分ゲイン$${\bm{K_{vi}=\omega_v^2/10}}$$
では、全く振動が出ていません。
また、以下2つの観点からも、後者の方がより実戦的な調整と言えます。
・応答波形の立ち上がりの速さは、2つの調整で同等
立ち上がりの速さはほぼP(+D)制御で決まります
・積分ゲインが小さい(積分制御の効きが弱い)分、
速度比例ゲイン、速度積分ゲインの方がオーバー
シュートが小さい
高加減速動作時は無視できない効果です
速度制御器内で、慣性モーメント$${J}$$を速度比例ゲイン$${K_{vp}}$$や速度積分ゲイン$${K_{vi}}$$と一体化させなかったのには理由があります。
前述のとおり、基本的にサーボモータは負荷を取り付けた状態で動きます。
そのとき、取り付けた負荷の分だけ、全体の慣性モーメントは増大します。
動かすモノ次第で全体の慣性モーメントは大きく変わります。
これをパラメータ化して、後から調整可能にするのがベターな実装です。
6. 位置制御ループ
位置制御の制御対象は、速度制御と同じくモータの機械部分です。
ただ、位置制御の場合、速度制御によってモータ角速度が指令どおりの動きをするという前提があります。
このため、見ようによっては、位置制御の制御対象は積分器と見えます。
一般的に、位置制御にはP制御のみが使われます。
基盤となる速度制御や電流制御のはたらきにより、I制御やD制御を持つ必要がないためです。
下図は、位置制御ループのブロック線図です。

位置制御応答周波数$${\bm{\omega_p}}$$を、
速度制御応答周波数$${\bm{\omega_v}}$$の1/5~1/10程度
に留めるなら、位置制御からは速度制御ループ伝達関数≒1とみなせます。
(速度制御設計時と同じ要領)
こうすると、位置制御ループのブロック線図はとてもシンプルになります。

位置指令$${\theta^{ref}}$$から角度$${\theta}$$までの伝達関数は、下式のような1次の伝達関数になります。
$$
\begin{array}{cl}
\cfrac{\theta_{(s)}}{\theta_{(s)}^{ref}}&=\cfrac{K_p/s}{1+K_p/s}\\\
&=\cfrac{K_p}{s+K_p}
\end{array}
$$
このため、位置比例ゲイン$${K_p}$$はそのまま位置制御応答周波数$${\omega_p}$$です。
($${\omega_p}$$の単位は[rad/s])
位置制御については、
「位置制御応答周波数$${\bm{\omega_p}}$$を、速度制御応答周波数$${\bm{\omega_v}}$$の1/5~1/10程度に留める」
を除き、特に注意を払うべきことはありません。
冒頭で述べた
「調整のコツは内側のループほど高速動作するようにゲイン調整すること」
というのは、
各制御ループの応答周波数の関係性が、以下なことに由来する見解です。
(位置制御)≪(速度制御)≪(電流制御)
7. おわりに
この記事では、サーボモータの3重ループ制御を紹介・解説しました。
今回紹介・解説した3重ループ制御が成立したのは、1980年代~1990年代にかけてのことだと言われています。
しかし、この技術は今でも使われ続けています。
それだけ完成度が高いということですね。
中級者を目指すなら、習得優先度は高めの技術と思います。
そんなわけで、応用編第1弾のテーマは3重ループ制御としました。
次回からも、こんな感じで技術紹介・解説をしていこうと思います。
前回:応用編ロードマップはこちら
次回:応用編(2)「モーションの生成」はこちら
付録. 速度制御の応答周波数がωvである理由
私は5章で
「数式中の$${\bm{\omega_v}}$$が速度制御応答周波数です」
と言いました。
そこで、
「え?それホント?」
と疑問を感じた方もいるでしょう。
ここでは、その疑問を解消したいと思います。
これについては、位置制御を引き合いに出すと分かりやすいです。
速度制御ループ伝達関数≒1とみなしたときの一巡伝達関数は、下式のとおりです。
$$
G_{loop-P(s)}=\cfrac{K_p}{s}
$$

位置制御ループ伝達関数は零点のない1次伝達関数なので、明らかに伝達関数の極=応答周波数です。
そして、位置制御系の応答周波数は、一巡伝達関数のゲイン交差周波数(=ゲインが0[dB]となる周波数)と一致します。

それでは、速度制御ループの一巡伝達関数がどうなっているか確認してみましょう。

$$
\begin{array}{cl}
G_{loop-V(s)}&=\cfrac{K_{vp}\cdot s+K_{vi}}{s^2}\\
&=\cfrac{K_{vp}}{s}\cdot \cfrac{s+K_{vi}/K_{vp}}{s}
\end{array}
$$
この数式を見ると、周波数がある程度高くなって
$${\bm{(s+K_{vi/K_{vp}})\fallingdotseq s}}$$
とみなせるなら、速度制御ループと位置制御ループの一巡伝達関数は同じ形になりそうです。
ここで、
速度比例ゲイン$${\bm{K_{vp}=\omega_v}}$$、
速度積分ゲイン$${\bm{K_{vi}=\omega_v^2/10}}$$
というゲイン設定を持ち出すと、
$${\bm{\cfrac{K_{vi}}{K_{vp}}=\cfrac{\omega_v}{10}}}$$となります。
この$${\bm{\cfrac{K_{vi}}{K_{vp}}=\cfrac{\omega_v}{10}}}$$の10倍以上の周波数では、速度制御ループ一巡伝達関数を下式で近似できます。
$$
\begin{array}{cl}
G_{loop-V(s)}&\fallingdotseq\cfrac{K_{vp}}{s}\cdot\cfrac{s}{s}\\
&=\cfrac{K_{vp}}{s}\\
&=\cfrac{\omega_{v}}{s}
\end{array}
$$
これは位置制御ループ一巡伝達関数と同じ形です。
このため、速度制御応答周波数は$${\omega_v}$$と言えます。
なお、この考え方の妥当性はボード線図でも確認できます。

