見出し画像

実際に使える制御工学:寄り道編(6)「制御の小技や豆知識。知っておくと便利です。」

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

  • タイトルままの、制御の小技や豆知識です
    専門家からすると、
    「いや、ソレ教科書に必ず載ってるレベルで大事な基本だろ」
    というものも含みます。

    しかし、社会に出てすぐ制御開発の現場に投入された方の中には、実務直結の知識・技術習得が優先で、基本を学ぶ時間が取れなかったというケースもあります。
    そうした方向けと思って、お目こぼしくだされば幸いです。




1. はじめに

自己紹介はこちらです。

この記事は、制御の小技や豆知識の紹介・解説のために書いています。


2. 内部モデル原理

いきなり記事タイトルに反する
「教科書に必ず載っているレベルの大事な基本」
の紹介です。

冒頭述べたように、いきなり制御開発の現場に投入され、基本を学ぶ時間が取れなかった方に向けた内容です。


内部モデル原理を言葉で表すと、
「動作指令に定常偏差なく追従するには、制御器内に指令生成器と同じ伝達関数を含む必要がある」
(ただし、制御系が不安定ならNG)
というものです。


メカトロニクス機器の速度制御にPI制御が使われる理由は、この内部モデル原理にあります。
 
基礎編(1)で述べたとおり、ステップ信号(一定値信号)の伝達関数は$${1/s}$$です。
このことから、ステップ指令生成器伝達関数は$${1/s}$$と言えます。

速度PII制御器は内部に$${1/s}$$を持ちます。
これにより、一定速度指令に定常偏差なく追従できます。

また、位置制御で考えても、制御器全体で見れば内部に$${1/s}$$を含みます。
このため、位置制御も一定指令に定常偏差なく追従できます。


これらだけ聞くと、
「標準的な3重ループ制御で一定値指令に追従できるなら、それで問題ないのでは?」
と思われるかもしれません。

たしかに、実用上問題ないケースは多いです。


しかし、特殊な用途だと、そうはいかない場合もあります。
その一例は、コンベアトラッキングです。
 
コンベアトラッキングとは、コンベアを停止させることなく、コンベア上のワークをロボットにピックアップさせる技術・使い方を指します。


コンベアトラッキングをする場合、定盤などに設置されたロボットからすると、ワークは一定速度で流れていくように見えます。

制御分野の言葉を使うと、ランプ状の位置指令が入力されているのと同じ状態です。
(ランプ状:時間に正比例して増大していく様子)


基礎編(1)で述べたとおり、ランプ信号の伝達関数は$${1/s^2}$$です。

内部モデル原理によれば、これに定常偏差なく追従するには、制御器内に$${1/s^2}$$が含まれている必要があります。


しかし、一般的な3重ループ制御が持つ積分器($${=1/s}$$)は1つです。

このため、一般的な3重ループ制御でコンベアトラッキングをしようとすると定常偏差が生じます。
(電流ループ内の積分器は極零相殺によって、ないのと同等です)


下2図が挙動確認用シミュレータとシミュレーション結果です。
(上側が挙動確認用シミュレータ、下側がシミュレーション結果)

挙動確認用シミュレータ
挙動確認用シミュレータ
シミュレーション結果


シミュレーション結果から、ランプ信号入力時は定常偏差が出るのが分かります。
このため、一般的な枠組みの中でコンベアトラッキングをさせる場合、フィードフォーワード的な補正の工夫が必要です。 


ただ、フィードフォワード補正に頼らずとも、コンベアトラッキングを実現させる方法はあります。
それは、内部モデル原理に基づき、制御器に$${1/s^2}$$を持たせることです。


具体的には、

  • 位置制御をPI制御にする
    (速度PI制御と合わせて2つ)

  • 速度制御に2階積分項を追加する

という方法が考えられます。


下2図が位置PI制御挙動確認シミュレータとシミュレーション結果です。
(上側が挙動確認用シミュレータ、下側がシミュレーション結果)

位置PI制御挙動確認用シミュレータ
位置PI制御シミュレーション結果


シミュレーション結果から、位置PI制御を使うことで、ランプ信号入力に対して定常偏差なく追従できることが分かります。


となれば、
「積分器が多いほど色々な入力に定常偏差なく追従できるなら、最初からたくさん積分器を持たせれば良いのでは?」
と思う方もいるでしょう。

定常偏差のみどうにかできれば良いなら、そのとおりです。


しかし、視点を変えると、そうでもありません。

積分器というのは、位相を遅らせる要素です。
積分器の数が増えると、位相遅れが大きくなって、制御系の安定性を保ちづらくなります。


「色々な視点で見て、全体のバランスを考えた設計をしないと実用的な制御方法にはなりませんよ」
という話でした。


3. 位相の大事さ

ここでは、追従誤差における位相の大事さを解説します。

ゲイン(振幅)は、大事さが分かりやすいです。

ゲインが$${0.9}$$なら、指令の振幅に$${90}$$%しか追従できません。
シンプルに$${10}$$%の追従誤差がでます。

これをSIN波でみると下図になります。

振幅が10%ズレたSIN波
振幅が10%ズレたSIN波


誤差$${10}$$%でも、パッと見で分かるほどズレるのが分かると思います。


それでは、ゲインが$${1.0}$$で、位相が$${5\degree}$$遅れるとどう見えるでしょうか?

下図は、$${5\degree}$$の位相差がある2つのSIN波を並べたものです。

位相が5°ズレたSIN波
位相が5°ズレたSIN波


感性は人それぞれですが、パッと見の印象では、
「振幅の10%のズレに比べれば、そんなにズレてないかな」
と思う方が多いのではないでしょうか?


それでは、$${5\degree}$$の位相差がある2つのSIN波の差を見てみましょう。
下図は、その結果です。

位相が5°ズレたSIN波同士の差
位相が5°ズレたSIN波同士の差

$${5\degree}$$の位相差がある2つのSIN波の差の振幅は$${0.1}$$近くあります。

$${5\degree}$$の位相差は、$${10}$$%近くの誤差を生み出してしまうということです。
(元のSIN波振幅が$${1}$$なので)

 
このように、位相差による誤差は案外バカにできません。

制御設計においては、位相がどうかという視点でモノを見ることも大事だと分かってもらえそうに思います。


4. システムの極はどこから見ても同じ

これまでの基礎編・応用編・ロボット編の記事の中で、指令から出力までの伝達関数や、外乱から出力までの伝達関数など、色々な伝達関数を見ることがあったと思います。
(たぶん)

実は、同じ制御システム中の伝達関数の極($${\fallingdotseq}$$分母多項式)は、どれも同じになります。
(極零相殺で極が消えたように見えるケースはありますが、数式・特性上そう見えるだけで、実際に極が消えるわけではないです)


具体例として、下図の制御システムを考えてみましょう。

具体例とする制御システム
具体例とする制御システム


まず、制御器$${C_{(s)}}$$と制御対象$${P_{(s)}}$$はそれぞれ以下になるとしましょう。
($${N_{c(s)}}$$は$${C_{(s)}}$$の分子多項式、$${D_{c(s)}}$$は$${C_{(s)}}$$の分母子多項式、$${N_{p(s)}}$$は$${P_{(s)}}$$の分子多項式、$${D_{p(s)}}$$は$${P_{(s)}}$$の分母子多項式)


ここで、入力を$${r,d}$$の2つ、出力を$${y,u,e}$$の3つとして、計6つの伝達関数がどうなるか計算してみます。
($${2\times3=6}$$で計6つ)

$$
\begin{array}{ll}
\cfrac{y}{r}&=\cfrac{C_{(s)}\cdot P_{(s)}}{1+C_{(s)}\cdot P_{(s)}}\\
&=\cfrac{\frac{N_{c(s)}}{D_{c(s)}}\cdot\frac{N_{p(s)}}{D_{p(s)}}}{1+\frac{N_{c(s)}}{D_{c(s)}}\cdot\frac{N_{p(s)}}{D_{p(s)}}}\\
&=\cfrac{N_{c(s)}\cdot N_{p(s)}}{D_{c(s)}\cdot D_{p(s)}+N_{c(s)}\cdot N_{p(s)}}
\end{array}
$$

$$
\begin{array}{ll}
\cfrac{e}{r}&=\cfrac{1}{1+C_{(s)}\cdot P_{(s)}}\\
&=\cfrac{1}{1+\frac{N_{c(s)}}{D_{c(s)}}\cdot\frac{N_{p(s)}}{D_{p(s)}}}\\
&=\cfrac{D_{c(s)}\cdot D_{p(s)}}{D_{c(s)}\cdot D_{p(s)}+N_{c(s)}\cdot N_{p(s)}}
\end{array}
$$

$$
\begin{array}{ll}
\cfrac{u}{r}&=\cfrac{C_{(s)}}{1+C_{(s)}\cdot P_{(s)}}\\
&=\cfrac{\frac{N_{c(s)}}{D_{c(s)}}}{1+\frac{N_{c(s)}}{D_{c(s)}}\cdot\frac{N_{p(s)}}{D_{p(s)}}}\\
&=\cfrac{D_{p(s)}\cdot N_{c(s)}}{D_{c(s)}\cdot D_{p(s)}+N_{c(s)}\cdot N_{p(s)}}
\end{array}
$$

$$
\begin{array}{ll}
\cfrac{y}{d}&=\cfrac{P_{(s)}}{1+C_{(s)}\cdot P_{(s)}}\\
&=\cfrac{\frac{N_{p(s)}}{D_{p(s)}}}{1+\frac{N_{c(s)}}{D_{c(s)}}\cdot\frac{N_{p(s)}}{D_{p(s)}}}\\
&=\cfrac{D_{c(s)}\cdot N_{p(s)}}{D_{c(s)}\cdot D_{p(s)}+N_{c(s)}\cdot N_{p(s)}}
\end{array}
$$

$$
\begin{array}{ll}
\cfrac{e}{d}&=\cfrac{-P_{(s)}}{1+C_{(s)}\cdot P_{(s)}}\\
&=\cfrac{-\frac{N_{p(s)}}{D_{p(s)}}}{1+\frac{N_{c(s)}}{D_{c(s)}}\cdot\frac{N_{p(s)}}{D_{p(s)}}}\\
&=\cfrac{-D_{c(s)}\cdot N_{p(s)}}{D_{c(s)}\cdot D_{p(s)}+N_{c(s)}\cdot N_{p(s)}}
\end{array}
$$

$$
\begin{array}{ll}
\cfrac{u}{d}&=\cfrac{1}{1+C_{(s)}\cdot P_{(s)}}\\
&=\cfrac{1}{1+\frac{N_{c(s)}}{D_{c(s)}}\cdot\frac{N_{p(s)}}{D_{p(s)}}}\\
&=\cfrac{D_{c(s)}\cdot D_{p(s)}}{D_{c(s)}\cdot D_{p(s)}+N_{c(s)}\cdot N_{p(s)}}
\end{array}
$$

どの伝達関数を見ても、分母多項式が$${D_{c(s)}\cdot D_{p(s)}+N_{c(s)}\cdot N_{p(s)}}$$です。

当然ながら、
「6つだけ見たところで、必ずしもシステムの極はどこから見ても同じとは言えないのでは?」
と思う方もいるでしょう。
その疑問は、ごもっともです。

その一方で、
「システムの極はどこから見ても同じ、というのもあながち間違っていないかも?」
とも思ってもらえたのではないでしょうか?


実は、状態方程式の極の求め方と絡めれば、もっとスマートかつ万人が納得する説明ができます。
しかし、今のところの解説はこんなトコです。


「システムの極はどこから見ても同じ」というのが本当かを知りたい方は、自分で考えるか調べてみるかしてみましょう。


そして、理解した方は、最終的に「つながっているから(そうなる)」と結論付けると思います。

 
実際、「システムの極はどこから見ても同じ」なのはなぜ?という疑問に対し、一言で答えるなら「つながっているから」と言うのが妥当と思います。
(スピリチュアルっぽい響きですが、そうした要素なしでその答えに行き着きます)


5. PI-D制御

PID制御ではなく、PI-D制御です。

これが何かは、ブロック線図を見てもらうと分かりやすいです。

PI-D制御のブロック線図
PI-D制御のブロック線図


見ての通り、PID制御とよく似ています。
PIDとPI-Dの違いは、D制御部分のみです。

PID制御では、$${K_d\cdot s}$$に$${e(=r-y)}$$が入ります。
PI-D制御では、それが$${-y}$$に置き換わるだけです。


この違いが、制御システムの動きにどう影響するのかを、少し詳しく説明します。

仮に、$${K_p=0,K_i=0}$$とすると、$${u’-y}$$までのブロック線図は下図と同じになります。

Kp,Ki=0のときのPI-D制御ブロック線図


このとき、$${u’-y}$$間伝達関数は下式になります。

$$
\begin{array}{ll}
\cfrac{u'}{y}&=\cfrac{\cfrac{1}{J\cdot s^2}}{1+\cfrac{K_d\cdot s}{J\cdot s^2}}\\
&=\cfrac{1}{J\cdot s^2+K_d\cdot s}
\end{array}
$$


この形の伝達関数をどこかで見たことはないでしょうか?

そう、粘性摩擦があるときのモータトルク-モータ角度間伝達関数と全く同じ形です。


PI-D制御とは、仮想的な粘性摩擦をコントローラで作り出したPI制御です。
(制御対象がモータならの話ですが)


PID制御は、動作指令rの変化に過敏反応してしまい、設計者にとって望ましくない動きをすることがあります。

その点、PI-D制御なら、動作指令$${r}$$の変化への過敏反応はありません。
D制御部分に動作指令$${r}$$を入力しないからです。


それでも、センサノイズによって、想定どおりの動きをしてくれないケースはあります。

しかし、PID制御に比べるとモノの動きをだいぶマイルドにしやすい、使える小技と思います。


6. おわりに

この記事では、制御の小技や豆知識を紹介・解説しました。
 
おそらく、今回紹介した技術・知識は、これまでそれを知らなかった方の日々の業務に、大きな変化をもたらすことはないでしょう。
(それゆえに知らなかったという側面もあるでしょうし) 


じゃあ、どんな時に役立つかというと、
「これまでやらなかった新しい仕事をするとき」、
「これまでやった事を別の目線で見たいとき」、
などに役立つと思います。 


例えば、内部モデル原理は、新たにコンベアトラッキングをやることになったとき役立ちます。

最終的に、フィードフォワード補正を採用するとしても、
「それしか選択肢がなかった」と、
「内部モデル原理に基づいたフィードバックと比較して、フィードフォワードを選んだ」とでは、
仕事の質が違います。 


また、これまで位相をあまり意識してこなかった方が、位相という観点からこれまでの技術を見ると新たな発見があるかもしれません。
それは、新アイデアにつながり得ます。 


今回紹介したものの他にも、制御の小技や豆知識と呼べるものはたくさんあります。

そういうものを自分で調べたり、考えたりするのも面白いと思います。


前回:寄り道編(5)「システム同定時の入力信号」はこちら
次回:寄り道編(7)「軸の偏心による問題」はこちら


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