モータ制御を学び始めると、「PI制御」という言葉が出てきます。
「う。。何か難しそうな言葉が出てきた。。」
と思ってしまい、あまり理解せず学習を進める人が多いです。
しかし電流制御、速度制御、ベクトル制御、インバータ制御などを調べていると、当然のようにPI制御が登場するため、「言葉は見たことがあるけれど、実際に何をしているのかわからない」と感じる方も多いのではないでしょうか。
「P制御とI制御の違いがあいまい…」
「PIゲインを上げたらモータが振動した…」
「積分項がなぜ必要なのかわからない…」
という悩みは、モータ制御初心者の組み込みエンジニアがよく通るポイントです。
結論から言うと、PI制御は、目標値と実測値のズレに対して出力を補正する制御方式です。
P成分で応答性を確保し、I成分で定常偏差を小さくするため、モータの電流制御や速度制御で広く使われます。
この記事では、PI制御の基本、P制御・I制御との違い、モータ制御での使いどころ、ゲイン調整、組み込み実装時の注意点、よくあるトラブルまで、初心者向けに順番に解説します。
PI制御とは?初心者向けに結論から解説
PI制御とは、Proportional Integral Controlの略で、日本語では比例積分制御と呼ばれます。
制御対象を目標値に近づけるために、比例動作と積分動作を組み合わせた制御方法です。
何か難しそうなことをしている感じに見えますが、
PI制御=目標値と実測値のズレを補正する
ということを意識すれば、理解が早まると思います。
モータ制御では、目標速度に対して実際の速度を近づけたり、目標電流に対して実際の電流を追従させたりする場面で使われます。
たとえば、速度制御であれば「目標速度」と「現在の速度」の差を計算し、その差が小さくなるように電流指令や電圧指令を補正します。
PI制御は「今のズレ」と「ズレの蓄積」で制御する方法
PI制御を理解するうえで重要なのは、P成分(比例)とI成分(積分)の役割を分けて考えることです。
P成分は、現在の偏差に比例して出力を変化させます。
偏差とは、一般的には「目標値 − 実測値」で表されるズレのことです。要は、差分ですね。
一方、I成分は、一定時間間隔における目標値と実測値の誤差の累計値と考えて下さい。
つまり、今この瞬間のズレだけでなく、「少し足りない状態が長く続いている」といった過去からのズレも考慮します。
偏差とは、目標値と実測値の差です。
モータ速度制御なら「目標速度 − 実速度」、
電流制御なら「目標電流 − 検出電流」と考えるとイメージしやすくなります。
このように、PI制御は「現在のズレに素早く反応するP制御」と「残り続けるズレを補正するI制御」を組み合わせた、実用的な制御方式です。
PI制御の身近なイメージ
たとえば、モータを1000rpmで回したいのに、実際には950rpmで回っているとします。
このとき偏差(差分)は50rpmです。P成分は、この50rpmのズレに比例して出力を増やします。
しかし、負荷や摩擦があると、P成分だけでは最終的に目標値へぴったり一致しない場合があります。
そこでI成分が働きます。I成分は「50rpm足りない状態が続いている」という情報を積み上げ、出力を少しずつ増やしていきます。
その結果、P制御だけでは残りやすい定常偏差を小さくできます。ここが、PI制御がモータ制御でよく使われる大きな理由です。
P制御・I制御・PI制御の違い
PI制御を理解するには、まずP制御とI制御を個別に理解することが近道です。それぞれの役割がわかると、なぜ両方を組み合わせるのかが見えてきます。
P制御は応答を速くするが定常偏差が残りやすい
P制御は、偏差に比例して操作量を出力する制御です。偏差が大きいほど出力も大きくなり、偏差が小さくなると出力も小さくなります。
P制御の基本式:操作量 = Kp × 偏差
ここで、Kpは比例ゲイン、偏差は「目標値 − 実測値」です。
Kpを大きくすると、偏差に対して強く反応するため、応答が速くなる傾向があります。
しかし、Kpを大きくしすぎると、目標値を行き過ぎたり、振動したりして、モータが上手く回転しません。
また、モータには摩擦、負荷トルク、電源電圧の制約、機械的な遅れなどがあります。
そのため、P制御だけでは目標値に対して少しズレが残ることがあります。この残り続けるズレを、定常偏差と呼びます。
I制御は定常偏差をなくす方向に働く
I制御は、偏差を時間方向に積分して操作量に反映する制御です。
小さな偏差でも長時間続けば、積分値が大きくなり、出力を補正する方向に働きます。
I制御の基本的な考え方:操作量 = Ki × 偏差の積分値
Kiは積分ゲインです。偏差が残り続けるほど、積分成分が大きくなります。
I制御の強みは、定常偏差を小さくできることです。
たとえば、負荷によって速度が少し落ちた状態が続くと、I成分が徐々に増えて出力を補正します。
一方で、I成分を強くしすぎると応答が遅れたり、オーバーシュートが大きくなったりすることがあります。
積分値は過去の偏差を蓄積するため、制御対象の状態が変わった後もしばらく影響が残るためです。
PI制御はP制御とI制御の実用的な組み合わせ
PI制御は、P制御とI制御を組み合わせたものです。P成分で現在の偏差に素早く反応し、I成分で残り続ける偏差を補正します。
- P成分:現在の偏差に反応し、応答性を高める
- I成分:偏差の蓄積に反応し、定常偏差を小さくする
- PI制御:応答性と定常偏差改善を両立しやすい
P制御のみ使う、I制御のみ使うということはせず、PI両方の制御をセットで使います。
ただし、PI制御が常に最適という意味ではありません。制御対象、センサ、要求仕様、実装環境によって適切な制御方式は変わります。
PI制御の基本式とブロック図
PI制御は、数式で見ると難しく感じるかもしれません。
しかし、式が表している内容は「比例成分」と「積分成分」を足しているだけです。
連続時間のPI制御式
連続時間で表すPI制御の基本式は、次のようになります。
u(t) = Kp × e(t) + Ki × ∫e(t)dt
u(t):操作量
e(t):偏差
Kp:比例ゲイン
Ki:積分ゲイン
ここで、e(t)は目標値と実測値の差です。
モータ制御であれば、速度偏差、電流偏差、位置偏差などが該当します。u(t)は操作量であり、制御ループの構成によって意味が変わります。
たとえば、速度制御ループの出力であれば電流指令になる場合があります。
電流制御ループの出力であれば電圧指令に関係する値になることがあります。
ただし、これは代表的な例であり、実際の構成はモータ種類、インバータ構成、制御方式、ソフトウェア設計に依存します。
PI制御をするタイミング
組み込みソフトウェアでは、PI制御を連続的に計算するのではなく、一定周期ごとに実行します。
たとえばモータ制御では、PWM周期に同期して、電流センサからAD変換値を読み取り、偏差を計算し、PI演算を行う構成が代表的です。
PWM周期は、言い換えると、PWMを生成する三角波キャリアの周期とも言えるので、PI制御はキャリア派の谷や山のタイミングで行うことも多いです。
PI制御のブロック図の読み方
PI制御のブロック図では、目標値、実測値、偏差、PI制御器、制御対象、フィードバックの流れを追うと理解しやすくなります。
まず、目標値から実測値を引いて偏差を求めます。その偏差がPI制御器に入力され、P成分とI成分から操作量が計算されます。操作量は制御対象に入力され、その結果として速度や電流などの実測値が変化します。そして、その実測値が再びフィードバックされます。
モータ制御でPI制御が使われる代表例
モータ制御においてPI制御は、特に電流制御と速度制御でよく使われます。
これは、モータのトルクや速度を安定して制御するうえで、目標値への追従性と定常偏差の低減が重要になるためです。
電流制御ループでのPI制御
モータのトルクは、一般的に電流と強く関係します。そのため、トルクを狙い通りに出すには、電流を適切に制御する必要があります。
電流制御ループでは、電流指令値と電流検出値の偏差をPI制御器に入力し、その結果から電圧指令やPWMに関係する値を生成する構成がよく使われます。
ベクトル制御では、d軸電流とq軸電流を分けて扱い、それぞれにPI制御器を設ける構成が代表的です。
q軸電流はトルクに関係し、d軸電流は磁束に関係する成分として扱われることが多いですが、詳細な意味や制御方針はモータ種類や制御方式によって変わります。
電流制御のPI出力が何を意味するかは、ソフトウェア構成によって異なります。電圧指令なのか、PWM指令なのか、中間変数なのかを確認しましょう。
速度制御ループでのPI制御
速度制御では、目標速度と実速度の偏差をPI制御器に入力し、その出力として電流指令を生成する構成があります。
速度が目標より低ければ、より大きなトルクを出すために電流指令を増やす、といった考え方です。
実務では、外側に速度制御ループ、内側に電流制御ループを置くカスケード制御がよく使われます。
この場合、速度PI制御器の出力が電流指令となり、その電流指令を内側の電流PI制御器が追従します。
一般的には、内側の電流制御ループを速く、外側の速度制御ループをそれより遅く設計する考え方が使われます。
PI制御のゲイン調整の考え方
PI制御で初心者がつまずきやすいのが、KpとKiの調整です。ゲイン調整には理論的に設計する方法もありますが、実務ではシミュレーションや実機波形を見ながら調整する場面も多くあります。
Kpを上げると応答は速くなるが振動しやすい
Kpは比例ゲインです。Kpを上げると、偏差に対する出力が大きくなります。
そのため、目標値に素早く近づきやすくなります。
しかし、Kpを上げすぎると、目標値を行き過ぎるオーバーシュートが増えたり、実測値が目標値の周りで振動したりします。
モータ制御では、機械的な慣性、電流応答の遅れ、センサノイズ、演算周期などが影響するため、単純にKpを大きくすればよいわけではありません。
- Kpが小さすぎる:応答が遅い、目標値への追従が弱い
- Kpが適切:応答が速く、振動が少ない
- Kpが大きすぎる:オーバーシュート、振動、発振が起きやすい
Kiを上げると定常偏差は減るが積分が暴れやすい
Kiは積分ゲインです。Kiを上げると、残り続ける偏差に対して強く補正が働きます。そのため、定常偏差を小さくする効果が期待できます。
一方で、Kiを大きくしすぎると、積分値が急激に増え、オーバーシュートやハンチングの原因になります。
特に、出力が上限や下限に張り付いている状態で積分が続くと、積分飽和という問題が起きます。
PI制御のゲイン調整では、応答を速くすることだけでなく、出力飽和時に積分項が過剰に蓄積しないことも重要です。
ゲイン調整時に見るべき波形
ゲイン調整では、数値だけで判断せず、波形を見ることが大切です。
特にステップ応答を確認すると、制御の状態を把握しやすくなります。
- 目標値:指令がどのように変化しているか
- 実測値:目標値に追従できているか
- 偏差:ズレが残っていないか
- PI出力:上限や下限に張り付いていないか
- PWMデューティ:制御出力が飽和していないか
- 電流波形:過電流や振動がないか
実機調整では、最初から高いゲインを入れるのは危険です。
低電圧、低電流、無負荷または安全な負荷条件から始め、電流制限や非常停止条件を整えたうえで評価する必要があります。
組み込み現場で注意すべきPI制御のポイント
現場でPI制御の処理を一から作ることは少ないんじゃないかなと思います。
ですが、速度や電流値の制御方法が変わったりすると、PI制御まわりを知っておかないと設計書や影響分析の際に困ります。
そのため、PI制御がどんなものかは理解しておいてほしいです。
まとめ|PI制御はモータ制御の基本として必ず理解したい
PI制御は、モータ制御を学ぶうえで必ず理解しておきたい基本技術です。
P成分は現在の偏差に反応して応答性を高め、I成分は偏差の蓄積によって定常偏差を小さくします。
モータ制御では、電流制御ループや速度制御ループでPI制御がよく使われます。
特に、電流指令と電流検出値、速度指令と実速度のように、目標値と実測値の差を小さくしたい場面で有効です。
- PI制御は、P成分とI成分を組み合わせた制御方式
- P成分は応答性、I成分は定常偏差の改善に効く
- Kpを上げすぎると振動しやすく、Kiを上げすぎると積分飽和やオーバーシュートに注意が必要
- モータ制御では、PWM周期のタイミングでPI制御をしている
PI制御は、式だけを見ると難しく感じるかもしれません。
しかし、「今のズレを見るP成分」と「ズレの蓄積を見るI成分」という役割で考えると、モータ制御でなぜ使われるのかが理解しやすくなります。
ぜひPI制御を覚えて、モータ制御の理解を深めていってください。

