定常特性とは?定常偏差・最終値定理・内部モデル原理を解説!

システムと伝達関数

このページでは、システムの定常特性とその計算方法について、具体例を交えながら説明します。特に、フィードバック制御システムの定常偏差と内部モデル原理について詳しく解説します。

このページのまとめ
  • フィードバック制御システムが目標値と同じ数の積分要素を持っていれば、定常偏差が0になる
  • これを内部モデル原理と呼ぶ
  • ただし、システムの積分要素が増えるほど安定性に悪影響が出るので注意が必要
  • 積分要素が足りなくても、制御ゲインを大きくすれば定常偏差を低減できる

モバイル端末の方へ
数式が画面からはみ出している場合は、式を横スクロールするか、横持ちしてご覧ください

スポンサーリンク

定常特性概要

定常特性と定常偏差

システムが動作してから十分に時間がたち、定常状態に落ち着いたときの特性を、システムの定常特性と呼びます。

定常特性にも色々ありますが、フィードバック制御システムにとっては「制御量が目標値に誤差なく追従できているかどうか」が非常に重要となります。この定常状態における誤差は、定常偏差と呼ばれます。

定常偏差を表すブロック線図

定常特性・定常偏差は、システムの数式モデル(伝達関数)を解けば計算できますが、当然システムが複雑になるほど計算が面倒になってしまいます…。

ただ古典制御では、ラプラス変換の便利な性質(最終値定理)を用いることで、システムの数式モデルを直接解くことなく定常特性を計算することが可能です

以降、定常特性でも特に重要な「フィードバック制御システムの定常偏差」にフォーカスして、その特性と分析方法を詳しく見ていきましょう。

目標値の種類

フィードバックシステムの定常偏差を評価する場合、目標値の基本単位として、ステップ入力(一定入力)・ランプ入力(一定速度入力)・加速度入力(一定加速度入力)を考えることがほとんどです。

ステップ入力・ランプ入力・加速度入力のグラフ

特にステップ入力とランプ入力は、実用上でも非常に多く用いられる、基本中の基本となる目標値ですね。

※「入力」と名前がついていますが、制御対象への制御入力$u$ではなく、目標値$r$への入力(つまり閉ループシステムへの入力)であることに注意してください。閉ループシステムについてはこちらのページで解説していますので、合わせてご覧ください。

以降の数式表現をスッキリさせるため、本ページでは各種係数を1に統一した「単位入力」を使用することにします。それぞれの数式表現$r(t)$とラプラス変換$R(s)$を次に示します。

$$\begin{array}{lll} 単位ステップ入力 & r(t)=1 & R(s) = \frac{1}{s} \\ 単位ランプ入力 & r(t) = t & R(s) = \frac{1}{s^2} \\ 単位加速度入力 & r(t) = \frac{t^2}{2} & R(s) = \frac{1}{s^3}\end{array}$$

単位入力以外の目標値は単位入力の組み合わせで表現できるので、結局単位入力に対する特性を調べればOK、ということになります。

単位入力以外の目標値を単位入力の組み合わせで表現した図
スポンサーリンク

定常偏差の計算

それでは、それぞれの目標値に対する定常偏差を実際に計算し、その特性を深堀りしていきましょう。

ここでは、次のブロック線図で表されるフィードバック制御システムを考えます。

フィードバック制御システムのブロック線図

$C(s)$は制御器の伝達関数、$G(s)$は制御対象の伝達関数です。

最終値定理を用いた導出

定常偏差$e_s$を数式で表すと、次のようになりますね。

$$e_s = \lim _{t\rightarrow \infty} e(t)$$

これを直接計算してもよいのですが、ラプラス変換の最終値定理を用いると、上式を$s$領域にて計算することができます。つまり、伝達関数表現のまま$e_s$が計算できるので、面倒な逆ラプラス変換なしにお手軽に分析が可能となります

$$最終値定理:\lim _{t\rightarrow \infty} f(t) = \lim _{s\rightarrow 0} s F(s)$$

$F(s)$は$f(t)$のラプラス変換です。元の関数$f(t)$のラプラス変換$F(s)$に$s$をかけて、$t\rightarrow \infty$の代わりに$s \rightarrow 0$とすれば、同じ解が得られるというわけですね。これを用いて先ほどの定常偏差を計算すると、次式が得られます。

$$e_s = \lim _{t\rightarrow \infty} e(t) = \lim _{s\rightarrow 0} sE(s)$$

$E(s)$は誤差$e(t)$のラプラス変換です。

では、中身の$E(s)$を計算していきましょう。ブロック線図上の関係性より、$E(s)$は次のように求められます。

フィードバック制御システムのブロック線図

$$\begin{align}ブロック線図より、 & E(s) = R(s) – Y(s)\\Y(s)をE(s)で表して、\ & E(s) = R(s) – C(s)G(s)E(s)\\ E(s)で整理して、\ & E(s) = \frac{1}{1 + C(s)G(s)} \cdot R(s) \end{align}$$

$R(s)$は目標値$r(t)$のラプラス変換、$Y(s)$は出力$y(t)$のラプラス変換です。これを先ほどの式に代入すると、定常偏差$e_s$の計算式が求まります。

$$e_s = \lim _{s\rightarrow 0} sE(s) = \lim _{s\rightarrow 0} s \cdot \frac{1}{1 + C(s)G(s)}\cdot R(s)$$

この式を用いて、各種入力に対する定常偏差を計算していきましょう。

スポンサーリンク

単位ステップ入力に対する定常偏差

目標値として、単位ステップ入力$R(s)=\frac{1}{s}$を与えた場合を考えます。

目標値として単位ステップ入力を加えたフィードバック制御システムのブロック線図

このときのシステムの定常偏差$e_s$は、次のように計算できます。

$$e_s = \lim _{s\rightarrow 0} s \cdot \frac{1}{1 + C(s)G(s)} \cdot \ubgd{\frac{1}{s}}{ステップ}{入力} = \lim _{s\rightarrow 0} \frac{1}{1 + C(s)G(s)} $$

最終値定理によってかけられた$s$が、ちょうどステップ入力$\frac{1}{s}$に打ち消されていますね。

制御の目的としては$e_s=0$を目指したいわけですが、そのためには開ループ伝達関数$C(s)G(s)$が$s\rightarrow 0$で$\infty$になればよいことになります。

$$e_s = \lim _{s\rightarrow 0} \frac{1}{1 + \ubg{C(s)G(s)}{\inftyになればe_s=0}} $$

では、どんなときにこれが満たされるのでしょうか。結論を言うと、開ループ伝達関数$C(s)G(s)$が積分要素$\frac{1}{s}$を1個(以上)持てばOK、ということになります。

$$C(s)G(s) = \ubg{\frac{1}{s}}{\inftyになる} \cdot \ubgd{L(s)\vphantom{\frac{1}{s}}}{その他}{の部分}$$

積分要素が$s\rightarrow 0$で$\infty$に発散してくれるというわけですね。「ステップ入力$\frac{1}{s}$に対しては、$\frac{1}{s}$があればOK」と頭に入れて、次に行きましょう。

※$C(s)G(s)$は既約形式である(限界まで約分してある)ことが前提です。例えば$\frac{1}{s}\cdot\frac{s}{s+1}$は一見積分要素を持ってそうですが、約分すると$\frac{1}{s+1}$なので実際は持っていません。

※ちなみに、システムが積分要素を持つことを「積分器を持つ」と言ったりもします

単位ランプ入力に対する定常偏差

目標値として、単位ランプ入力$R(s)=\frac{1}{s^2}$を与えた場合を考えます。

目標値として単位ランプ入力を加えたフィードバック制御システムのブロック線図

このときの定常偏差$e_s$も、同様に計算していきましょう。

$$e_s = \lim _{s\rightarrow 0} s \cdot \frac{1}{1 + C(s)G(s)} \cdot \ubgd{\frac{1}{s^2}}{ランプ}{入力} = \lim _{s\rightarrow 0} \frac{1}{s + sC(s)G(s)} $$

先ほどより分母の$s$の次数が1大きくなってますね。$e_s=0$とするためには、$sC(s)G(s)$が$s\rightarrow 0$で$\infty$になればよいことになります。

$$e_s = \lim _{s\rightarrow 0} \frac{1}{\ubg{s}{0になる} + \ubg{sC(s)G(s)}{\inftyになればe_s=0}} $$

先ほどと同様に考えると、開ループ伝達関数$C(s)G(s)$が積分要素$\frac{1}{s}$を2個(以上)持てばOKですね。

$$C(s)G(s) = \ubgd{\frac{1}{s}}{前のsを}{打ち消す}\cdot \obg{\frac{1}{s}}{\inftyになる} \cdot \ubgd{L(s)\vphantom{\frac{1}{s}}}{その他}{の部分}$$

1個目の積分要素が前についた$s$を打ち消し、2個目の積分要素が$s\rightarrow 0$で$\infty$に発散してくれるというわけですね。「ランプ入力$\frac{1}{s^2}$に対しては、$\frac{1}{s^2}$があればOK」と頭に入れて、次に行きましょう。

スポンサーリンク

単位加速度入力に対する定常偏差

最後に、目標値として単位加速度入力$R(s)=\frac{1}{s^3}$を与えた場合を考えます。

目標値として単位加速度入力を加えたフィードバック制御システムのブロック線図

このときの定常偏差$e_s$を計算していきます。

$$e_s = \lim _{s\rightarrow 0} s \cdot \frac{1}{1 + C(s)G(s)} \cdot \ubgd{\frac{1}{s^3}}{加速度}{入力} = \lim _{s\rightarrow 0} \frac{1}{s^2 + s^2C(s)G(s)} $$

また分母の$s$の次数が1大きくなってますね。$e_s=0$とするためには、$s^2C(s)G(s)$が$s\rightarrow 0$で$\infty$になればよいことになります。

$$e_s = \lim _{s\rightarrow 0} \frac{1}{\ubg{s^2}{0になる} + \ubg{s^2C(s)G(s)}{\inftyになればe_s=0}} $$

だいたい分かってきたと思いますが、開ループ伝達関数$C(s)G(s)$が積分要素$\frac{1}{s}$を3個(以上)持てばOKですね。

$$C(s)G(s) = \ubgd{\frac{1}{s^2}}{前のs^2を}{打ち消す}\cdot \obg{\frac{1}{s}}{\inftyになる} \cdot \ubgd{L(s)\vphantom{\frac{1}{s}}}{その他}{の部分}$$

加速度入力$\frac{1}{s^3}$に対しては、$\frac{1}{s^3}$があればOK」と頭に入れて、次に行きましょう。

内部モデル原理

ここまでステップ入力・ランプ入力・加速度入力に対する定常偏差を見てきましたが、同様の議論により、より高次の入力に対しても同じ法則が成り立ちます。

  • $R(s)=\frac{1}{s}$に対しては、$C(s)G(s)$が$\frac{1}{s}$を持てば定常偏差が0になる
  • $R(s)=\frac{1}{s^2}$に対しては、$C(s)G(s)$が$\frac{1}{s^2}$を持てば定常偏差が0になる
  • $R(s)=\frac{1}{s^3}$に対しては、$C(s)G(s)$が$\frac{1}{s^3}$を持てば定常偏差が0になる
  • $R(s)=\frac{1}{s^k}$に対しては、$C(s)G(s)$が$\frac{1}{s^k}$を持てば定常偏差が0になる

上記より、定常偏差を0にするためには、開ループシステムが目標値と同じ要素を持っていればよいことが分かります。この法則は、内部モデル原理と呼ばれます。覚えやすくていいですね。

シミュレーション例

それでは、内部モデル原理が本当に成り立つのか、実際にシミュレーションしてみましょう。

例題として、次のシステムを考えます。

シミュレーション例にて考慮するシステムのブロック線図

制御対象$G(s)=\frac{2s+1}{s^2+2s+3}$は積分要素を1個も持っていないことに注意してください。これに対して、制御器$C(s)$で積分要素をいくつか付加していき、定常偏差を比較しましょう。

$$\begin{array}{lll} C(s) = K_0 & のとき & C(s)G(s)は積分要素\mathbf{0}個 \\C(s) = \frac{K_1}{s} & のとき & C(s)G(s)は積分要素\mathbf{1}個 \\ C(s) = \frac{K_2}{s^2} & のとき & C(s)G(s)は積分要素\mathbf{2}個\end{array}$$

$K_0, K_1, K_2$は、定数の制御ゲイン(調整パラメータ)です。

スポンサーリンク

ステップ入力に対するシミュレーション

まず、目標値として単位ステップ入力$R(s)=\frac{1}{s}$を加えてシミュレーションしてみます。

ステップ入力$\frac{1}{s}$に対しては、開ループ伝達関数$C(s)G(s)$が積分要素$\frac{1}{s}$を1個(以上)持てばOKでしたね。これを確かめてみましょう。

適当な$K_0, K_1, K_2$を用いてシミュレーションした結果がこちらです。

様々な積分要素数を持ったシステムにステップ目標値を与えた際の定常偏差の比較

確かに、積分要素を1個以上持っている場合に定常偏差が0となっていますね

対して、積分要素が0個の場合は一定の定常偏差が残ってしまっています。さらに観察すると、制御ゲイン$K_0$が大きいほうが定常偏差が小さくなっていますね。

これについて、数式で確認してみましょう。各制御器に対する定常偏差$e_s$を計算すると、次のようになります。

$$e_s =\lim _{s\rightarrow 0} s \cdot \frac{1}{1 + C(s)G(s)} \cdot R(s) \quad より、$$

$$\begin{align} C(s) = K_0のとき &\quad e_s = \lim _{s\rightarrow 0} s \cdot \frac{1}{1 + K_0\frac{2s+1}{s^2+2s+3}} \cdot \frac{1}{s} = \frac{1}{1 + \frac{K_0}{3}}\quad\color{green}{確かに一定}\\ C(s) = \frac{K_1}{s}のとき &\quad e_s = \lim _{s\rightarrow 0} s \cdot \frac{1}{1 + \frac{K_1}{s}\cdot\frac{2s+1}{s^2+2s+3}} \cdot \frac{1}{s} = 0 \qquad \quad \color{green}{確かに0}\\ C(s) = \frac{K_2}{s^2}のとき &\quad e_s = \lim _{s\rightarrow 0} s \cdot \frac{1}{1 + \frac{K_2}{s^2}\cdot \frac{2s+1}{s^2+2s+3}} \cdot \frac{1}{s} = 0\qquad \quad \color{green}{確かに0}\end{align}$$

$C(s)=K_0$、つまり積分要素が0の場合は、制御ゲイン$K_0$が大きくなればなるほど$e_s$の分母が大きくなるため、結果的に定常偏差が小さくなることが数式からも分かりますね。

本来は$C(s)G(s)$が$s\rightarrow 0$で$\infty$なってほしかったわけですが、それができない場合は、$C(s)G(s)$がなるべく大きな値に収束するように制御ゲインを設定すればOK、ということになります。

※ただし制御ゲインを上げれば上げるほど入力飽和(システムの能力以上の要求を出してしまうこと)のリスクが高まります。極端な話、$K_0=\infty$を入れてもシステムはそれを実現できませんので、システムの能力の範囲内でゲインを調整する必要があることに注意してください。

ランプ入力に対するシミュレーション

次に、目標値として単位ランプ入力$R(s)=\frac{1}{s^2}$を加えてシミュレーションしてみます。

ランプ入力$\frac{1}{s^2}$に対しては、開ループ伝達関数$C(s)G(s)$が積分要素$\frac{1}{s}$を2個(以上)持てばOKでしたね。

適当な$K_0, K_1, K_2$を用いてシミュレーションした結果がこちらです。

様々な積分要素数を持ったシステムにランプ目標値を与えた際の定常偏差の比較

確かに、積分要素を2個持っている場合に定常偏差が0となっていますね

対して、積分要素が1個の場合は一定の定常偏差が残ってしまい、0個の場合は偏差が時間とともに無限に大きくなってしまっています

これも数式で確認してみましょう。各制御器に対する定常偏差$e_s$を計算すると、次のようになります。

$$e_s =\lim _{s\rightarrow 0} s \cdot \frac{1}{1 + C(s)G(s)} \cdot R(s) \quad より、$$

$$\begin{align} C(s) = K_0のとき &\quad e_s = \lim _{s\rightarrow 0} s \cdot \frac{1}{1 + K_0\frac{2s+1}{s^2+2s+3}} \cdot \frac{1}{s^2} = \infty \qquad \qquad\color{green}{確かに\infty}\\ C(s) = \frac{K_1}{s}のとき &\quad e_s = \lim _{s\rightarrow 0} s \cdot \frac{1}{1 + \frac{K_1}{s}\cdot\frac{2s+1}{s^2+2s+3}} \cdot \frac{1}{s^2} = \frac{1}{1 + \frac{K_1}{3}} \quad \color{green}{確かに一定}\\ C(s) = \frac{K_2}{s^2}のとき &\quad e_s = \lim _{s\rightarrow 0} s \cdot \frac{1}{1 + \frac{K_2}{s^2}\cdot \frac{2s+1}{s^2+2s+3}} \cdot \frac{1}{s^2} = 0\qquad \qquad\color{green}{確かに0}\end{align}$$

確かに計算結果がシミュレーションと一致していますね。$C(s) = \frac{K_1}{s}$、つまり積分要素が1個の場合は、先ほどと同じ理屈で制御ゲイン$K_1$が大きくなればなるほど定常偏差が小さくなることも分かります。

スポンサーリンク

加速度入力に対するシミュレーション

最後に、目標値として単位加速度入力$R(s)=\frac{1}{s^3}$を加えてシミュレーションしてみます。

加速度入力$\frac{1}{s^3}$に対しては、開ループ伝達関数$C(s)G(s)$が積分要素$\frac{1}{s}$を3個(以上)持てばOKでしたね。

適当な$K_0, K_1, K_2$を用いてシミュレーションした結果がこちらです。

様々な積分要素数を持ったシステムに加速度目標値を与えた際の定常偏差の比較

これまでの傾向通り、積分要素が2個の場合は一定の定常偏差が残り、1個以下の場合は偏差が時間とともに無限に大きくなっていますね。

では積分要素が3個なら定常偏差がなくなるかというと、そうはなりません(あくまで今回の場合は)。積分要素3個の場合のシミュレーション結果がこちらです。

積分要素数を3個持ったシステムに加速度目標値を与えた際、出力が発散する図

それどころか、出力がどんどん大きくなり、発散してしまっていますね…。なぜ内部モデル原理が成り立たないのでしょうか。この理由について、説明していきましょう。

実用上のポイント

積分要素と安定性

上記シミュレーションが発散してしまった理由は、積分要素を加えすぎてシステムが不安定になったからです。(逆に言うと、システムの安定性が保たれていれば、定常偏差はちゃんとなくなります)

定常特性を議論する際は、システムが安定であることが大前提となっていました。内部モデル原理や最終値定理もシステムが安定であることを前提とした理論であるため、これが崩れてしまうと数式上の計算は意味をなさなくなってしまいます

…なんで積分要素を加えるとシステムの安定性が崩れるの?

積分要素$\frac{1}{s}$の極は0なので、積分要素単体は安定なシステムではありません。よって、これを付ければ付けるほどシステム全体の安定性がどんどん悪くなる、というのがざっくりとしたイメージです。

たくさんの積分要素がシステムの安定性を脅かすイメージ図

…じゃあいくつまでなら付けていいの?

これに関しては、フィードバック制御システムの安定余裕次第なので、システムに応じてケースバイケースで判断する必要があります。(システムの安定余裕については追って解説記事を書く予定です)

とはいえ、実用上は積分要素は2個以下しか使われないことがほとんどです。通常は0個、それだと定常偏差が大きすぎるなら1個、どうしても必要な特別な理由があれば2個、といったイメージです。

え、でも積分要素が少ないと定常偏差が出ちゃうんじゃないの?

その通りです。ただ前述の通り、定常偏差は制御ゲインを大きくすることによって、低減させることが可能です。ゲインの調整によって実用上問題ない精度が実現できるのであれば、わざわざ安定性を脅かす積分要素を追加する必要はないというわけですね。

ゲインの調整によって実用上問題ない精度が実現できるのであれば、わざわざ安定性を脅かす積分要素を追加する必要はない例

内部モデル原理は、あくまで定常偏差を厳密に0にするための条件であることに注意してくださいね。

スポンサーリンク

積分要素を持つ制御器の設計

ここまでの例題では、分かりやすさのために制御器を単体の積分要素$\frac{1}{s}$に設定していました。

ただ実用シーンでは、上述の安定性の問題が生じるため、積分要素を他の要素と組み合わせて使用することがほとんどです。

代表的な例としては、積分要素と比例要素の組み合わせであるPI制御器が挙げられます。

PI制御のブロック線図

PI制御は、積分要素単体の場合よりも、目標値追従性と安定性に優れるという特徴を持ちます。

この理由について、簡単にイメージを説明しておきます。制御器の式を通分すると$\frac{K_P s+K_I}{s}$となるため、確かにPI制御器も積分要素を持つことが分かります。ただし分子に$s$が入るのがミソです。分子の$s$は微分(的)な作用を及ぼすため、これにより積分要素の悪影響をある程度打ち消している、とイメージすればOKです。

※PI制御に含まれる比例要素・積分要素の作用については、こちらのページにて直感的に解説していますので、合わせてご覧ください。

本ページでは「積分要素がなぜ定常特性を向上させるのか」を数式に基づいて説明しましたが、上記ページではそれを直感的なイメージに基づいて説明していますので、より理解が深まると思います。(PID制御のI項の説明部分です)

以上、システムの定常特性・定常偏差・内部モデル原理についての解説でした。

このページのまとめ
  • フィードバック制御システムが目標値と同じ数の積分要素を持っていれば、定常偏差が0になる
  • これを内部モデル原理と呼ぶ
  • ただし、システムの積分要素が増えるほど安定性に悪影響が出るので注意が必要
  • 積分要素が足りなくても、制御ゲインを大きくすれば定常偏差を低減できる

コメント