「制御則」ってなんだ

制御工学

前回の記事にて、「コントローラ」内部では、理想の応答が得られるような計算処理が行われているという話をしました。本日はそれについての内容です。前回の記事は以下を参考にしてください。

「コントローラ(制御器)」内部で行われていることについて
前回の記事に引き続き、「コントローラ(制御器)」が、どのような役割を果たすものであるのかについて説明した記事です。 前回の内容 前回の内容では、「フィードバック制御」について話しました。その中で外部情報として「出力」の情報を、司令塔であ...

計算処理について

そもそも「コントローラ」にはどのような情報が出入りしていたのかを一度復習します。以下は一般的なフィードバック制御の様子を「ブロック線図」にて表したものです。

「フィードバック制御」に関しては以下の記事が参考になります。

「プラント」「コントローラ(制御器)」ってなんだ??
この記事は大学で学習する「制御工学」の内容について、教科書などではよく説明されていないが、モヤモヤして気持ち悪い部分をすこしずつ説明していこうという場です。 あなたの理解に少しでも貢献できる記事であれば幸いです。 「ブロック線図」と...

このうち、コントローラ部分、つまり「K」の部分に着目したのが以下のものです。

この図を見れば状況はシンプルです。コントローラ目線では、「入力は\(e\)」「出力は\(u\)」、ただそれだけです。

\(u\)と\(e\)の関係を数式で表現するとどうなるか?

\(u\)と\(e\)の関係はシンプルです。「入力\(e\)」を入れたときにただ一つの値「\(u\)」を返す。ただそれだけです。これは数学における「関数」の定義にほかなりません。つまり、数学的対応をとろうとしたとき、\(e\)を変域、\(u\)を値域とした関係式を導こうとするのは自然な発想です。

つまり、

$$
u=f(e)
$$

という関係式があればそれは自然な表現です。ではどのような関数が用いられるのでしょうか。これこそが制御則になります。

P制御を行う場合を考えてみる

P制御を実施する場合を考えてみます。P制御のPはProportional(日本語訳は「比例」)のPであり、「比例制御」のことです。

何を言っているのかをこのブロック線図を用いて説明します。「制御則」、つまり数学的な計算が実行されているのは「コントローラ」の部分です。入力値\(e\)という材料を受け取り、計算という名の料理を行い、完成品として出力\(u\)を提供します。

ここでの「料理」に対応するレシピに「比例させよ」と書いてあるということです。つまり、材料を何倍かにしたものを出力とせよ、ただそれだけです。なので適当な比例定数\(k_p\)を用いてあげたときに

$$
u(t) = k_p e(t)
$$

このように書けるわけです。

添え字のPはProportionalのPであり、「比例制御」であることを示しているな。

PI制御を行う場合を考えてみる

続いて「PI制御」というものを考えます。「PI制御」とは「P制御」と「I制御」の両方がレシピに記載されているものです。I制御のIとはIntegralの頭文字Iであり、「積分」のことです。

「I制御」について考える。

「積分」といわれても…

まずは「I制御」だけの状態を考えてみましょう。つまり、

この「コントローラ」の部分でのレシピに「積分せよ」とのみ書いてある場合です。積分する対象は何か、誤差\(e\)です。これが材料です。ではどのような変数に着目して、どのような範囲で積分を実行すればよいのでしょうか。これについて考えます。

まず認識すべきことは常に機械が指示通りに動作していれば、「入力」と「出力」の差は常に0なので、

$$
e(t)=0(すべてのtに対して)
$$

が成立するということです。しかし、「コントローラ」では毎秒補正をし続けている、ということからも分かる通り、基本的にすべての時間において常に\(e(t)=0\)とはなりません。もしこれが実現されているのであれば制御は必要ないのです。

ここからわかることとして、誤差\(e(t)\)は時刻\(t\)に対して変化し続ける値だということです。ここまで踏まえれば、「積分せよ」というレシピが与えられれば、とるべき変数は「時刻」であり、計算結果としては変数\(K_I\)を用いて、

$$
u_I(t) = K_I \int_{0}^{t} e(\tau) d\tau
$$

のように書けることも理解できるでしょう。現在の時刻\(t\)までの積分値を求めたいので、任意の変数\(\tau\)を用いて、上のように示されるわけです。

PI制御でなされる式

ここまでのことを踏まえれば、PI制御の計算式として可能性のある候補は2つあります。それは

$$
u(t) = K_P e(t) + K_I \int e(t) dt
$$

$$
u(t) = K_P \left(K_I \int e(t) dt \right)
$$

の2通りです。ここで、「PI制御」と言われたときに適しているのは前者の式です。これに疑問が浮かばない方は飛ばしてもらって構いません。

どちらが正しいのか?

それぞれ「ブロック線図」に落とし込んで考えてみれば、以下のようになります。

前者に対応するのが「左側」の図、後者に対応するのが「右側」の図です。つまり「並列」か「直列」かどっちかということです。結論から言えば「並列」が一般に用いられます。

理由は数式を見ればわかりやすいです。

$$
u(t) = K_P \left(K_I \int e(t) dt \right)
$$

この式ですが、結局、比例定数をまとめれば

$$
u(t) = K  \int e(t) dt
$$

と書いているのと変わらず、単なる「純粋なI制御(積分制御)」の式と変わりません。このように「○○○制御」のように複数の制御が組み合わさる場合、「並列つなぎ」として計算されます。

PD制御を行う場合を考えてみる

PD制御を行う場合も、PI制御と同様に考えます。レシピに「微分」したものを追加するということです。変数は何かと言えば、「積分」の時と同様に考えて、時刻\(t\)ですね。誤差\(e(t)\)を時刻\(t\)を変数として微分を計算したものを足し合わせろということです。

つまり、数式にすれば、適切な係数を用いて

$$
u(t) = k_P e(t) + k_D \dot{e}(t)
$$

のように書けるわけです。

PID制御を行う場合を考えてみる

では最後にPID制御についても考えてみましょう。制御則として立式される式は今までと同様に考えるだけです。「レシピ」の中に「比例・積分・微分」の3要素を組み込めと言われているということなので、

$$
\displaystyle K:u(t)=k_p e(t)+k_i\int_{0}^{t} e(\tau)\,d\tau + k_D\frac{d}{dt}e(t)
$$

のように書いてあげればよいでしょう。

コメント

タイトルとURLをコピーしました