概要
- 周波数応答に着目した制御理論
- 多変数が扱えないのでロボットの実運用にはほとんど役に立たない!!!
- 入出力が一変数で周波数応答と安定余裕解析を知りたい時にしか使えないので、僕は使ったことがない
- 古典制御では、信号の初期値が全て0であると仮定してシステムを取り扱うことがほとんど
- 実際に初期値0の場合がほとんど&初期値の項はG(初期値0とした項+初期値による項)となり、結局Gの安定性により考えなくてよくなりがちなので https://controlabo.com/transfer-function/
- シンプルな という形で議論している時点で、s 空間での式が に依存していないのだから、数学的に かつ であることが前提となっています。
参考
- octaveスクリプト
- 制御工学演習
- https://controlabo.com/
- 不要な数学を排除しているのでとてもわかりやすい
理論の限界と結論
-
ブロック線図の定義(これを理解していないとマジで制御論周りが何もわからなくなるので必ず理解すること)
- 線は時系列を表すラプラス変換された周波数領域での変数を表している。
- ブロックは後段の線=前段の線*ブロックであることを表している。
- o のような節は、加減算を表している。下の例では
-
限界(超重要)
- 古典制御論は、以下の形式のブロック線図しか取り扱うことができない(図はここより引用)
-
結論
- 閉ループ伝達関数に不安定極がなく、不安定極相殺がなければ、内部安定
- 一巡伝達関数のナイキスト線図が (-1, 0) を囲わないならば内部安定
- ただし、上記はナイキスト線図が二周以上しない場合に限るが(通常しない)、二周以上する場合の判定方法もある
- 閉ループ伝達関数は求めるのが面倒なので、一巡伝達関数だけで判定できるのが偉い
- 伝達関数にを突っ込むと周波数応答がわかる(三角関数を入力した時、何倍振幅が増大して出力されるかがわかる)
- インパクト応答は全 sin 関数の重ね合わせなので、インパクト応答をフーリエ変換すると、ボード線図のゲインも位相も描ける。機械システムの周波数特性(振動特性)を確認するインパルス加振実験が代表的です。ハンマーで対象をぶっ叩いて、インパルス応答を分析すると、システム同定ができる。
- その他、どれくらい安定性に余裕があるかとかとか、不安定零点があるとアンダーシュートが必ず起きるとかが理論的にわかるとか、そういうことが理論的に議論される。
s空間での設計をz空間に変換してプログラムに実装
- 具体例として、以下の条件で進めます。
- 設計した制御器(PI制御と仮定):(比例ゲイン 、積分ゲイン )
- 制御周期(サンプリング周期):
ステップ1:離散化(タスティン変換)
- s領域の伝達関数をz領域に変換します。最も一般的で精度と安定性のバランスが良い**タスティン変換(双一次変換)**を用います。
- タスティン変換は積分を台形近似している。周波数特性を守りたいなら タスティン変換、時間応答の波形を守りたいなら ステップ不変法 (ZOH)
変換式は以下の通りです。
これを に代入します。
これが離散化された制御器の伝達関数です。
ステップ2:差分方程式の導出
は入力 (偏差)に対する出力 (操作量)の比です。
これがプログラムに実装すべき差分方程式です。「前回の出力」「今回の偏差」「前回の偏差」から「今回の出力」が計算できます。
// 状態変数の保持(システムの起動時に0初期化すること)
double u_prev = 0.0; // u[k-1]: 前回の操作量
double e_prev = 0.0; // e[k-1]: 前回の偏差
// 10msごとに呼び出される制御関数
double calculate_control_output(double target, double current_value) {
// 1. 偏差 e[k] の計算
double e_k = target - current_value;
// 2. 差分方程式による操作量 u[k] の計算
// u[k] = u[k-1] + 2.05 * e[k] - 1.95 * e[k-1]
double u_k = u_prev + 2.05 * e_k - 1.95 * e_prev;
// 3. 過去値の更新(次回のサイクルのために保存)
u_prev = u_k;
e_prev = e_k;
return u_k;
}
目次
- 現代ではほぼ意味がないもの
- メンタルモデル
- 単語
- 特性方程式の闇
- 安定性判定
- 離散化
- BIBO安定・漸近安定の必要十分条件
- 不安定零点と可制御可観測
- 状態空間モデルと伝達関数表記
- ゲイン余裕・位相余裕
現代ではほぼ意味がないもの
- 根軌跡法
- ゲインを変えたときに極がどう変わるかを手書きで追う方法
- パソコン使えばよくね?
メンタルモデル
- 古典制御理論は、一変数一入力の入出力をラプラス変換で特徴づけたときに安定性を議論する理論です。
- ラプラス変換
- モチベーション(重要)
- 微分方程式と指数関数の相性がいいことは自明(指数関数の微分はそれ自身の定数倍なので)。
- ところで、絶対可積分できる関数はフーリエ変換で指数関数の和で表現できることが知られている→全ての周波数で微分方程式を解いて足し合わせると楽だよねというのがフーリエ変換が微分方程式で解ける理由
- しかし、絶対可積分ではない関数はそこそこある。なので、関数f(x)にたいして、x<0ならゼロに、x≥0ならe−axをかけて、「より収束しやすく」した上でフーリエ変換したものがラプラス変換
- 複素数に一般化された周波数応答を考えることで、微分方程式を掛け算で解けるようにする
- 微分方程式を掛け算と部分分数分解で解ける https://controlabo.com/transfer-function/#toc3
- 簡単にシステムを結合できる。 https://controlabo.com/transfer-function/#toc3
- 簡単に周波数解析ができる。実際 s = iω と入力するとフーリエ変換になって、特定の周波数がどれくらい大きくなるかなどがわかる。 https://controlabo.com/transfer-function/#toc3
- モチベーション(重要)
- 伝達関数
- Y = GX としたときの G
- X(s), Y(s) は両方とも時系列を表す(ラプラス変換されているので周波数空間だけど)
- 超重要: を代入する⇔x = sin(ωt) を入力した時に、y = |G(s)| sin(ω(t-arg(G(iω))) が出力される
- つまり、G は 周波数ωのsin関数を入力すると、|G(iω)|倍に増幅されて、arg(G(iω)) だけ位相が遅れる(=グラフが右に移動する)
- gain(G): ω -> log |G(iω)|, phase(G): arg(G(iω)) のグラフがボード線図と呼ばれる。
- gain = log(増幅率)
- 伝達関数 G, H があった時、gain(GH) = gain(G) + gain(H), phase(GH) = phase(G) + phase(H)
- 伝達関数 G, H があった時、gain(N/D) = -gain(D/N), phase(N/D) = -phase(D/N)
- 動作範囲での gain は減衰せず phase は遅れず、高周波での gain は高周波ノイズ対策のためなるべく小さく、超低周波での gain は低周波ノイズ対策のためはフィードバック制御によって定常特性を改善させ影響を抑制
- プロパー https://controlabo.com/proper-system/
- F/G において、dim(F)<dim(G) なら真にプロパー、dim(F)<=dim(G)ならプロパー
- 現実世界のシステムは概ね真にプロパー
- プロパーでないと、sが式に残ることになって未来の情報を欲しているのでどうしても近似せざるをえないので、そのシステムを厳密には実現できない、というのがよくある説明(だがよくわからない)
- 自分が設計した制御器がプロパーかは考えたほうがいい
- 直感的には D ゲイン s は確かに 5 ms 前の値と比較して差分など、近似をしているがなぜプロパーなシステムなら厳密に表現できるといえるのかはよくわからない)
- 実際のところは、プロパーでない制御器も微分要素を「厳密でないけどほぼ微分な要素」に置き換えることで、むりやり実現できる場合が多いです。電気信号を微分する微分回路や、微分をプログラムで近似的に計算する数値微分がその代表でしょう。これらには必ず誤差が含まれるので「厳密な微分」ではないですが、実用上はそれで十分な場合がほとんど
- 逆に、定数はただの比例、1/s はただの積分なので、そりゃ過去の情報や現在の情報から実現できるという言い方では納得できる。
- 極
- 極は時間空間でのexp(-極t)として現れる。
- なので、極の実部が正だと発散するし、負だと収束するし、虚部があると振動する
- 零点
- そもそも不安定零点が問題である理由があるかというと、
- 不安定零点を持つシステム G を考える。
- 逆システム G^{-1} を考えると、分子分母をひっくり返すだけなので、 逆システムが安定ではなくなる
- 安定ではない逆システムが存在するということは、そのシステムは出力を一定に保つために無限に発散する入力が必要になる可能性があるといった自体に陥る可能性があるということ
- 零点と極は、不安定零点・不安定極は分子分母で相殺してはならない(内部安定ではなくなるので。後で詳述)。逆に安定極・安定零点は相殺して良い
- 式上で相殺できても現実問題では相殺できないし、何なら特定の周波数に超敏感になってかなり危ない
- 不安定な極零相殺は「悪者同士が手を組んでお互いの存在を隠している」ような状態であるため、意図的に起こさせないのはもちろん、意図せず生じていないかも注意深く確認が必要です。
- 不安定零点が存在することによる弊害の例: プロパーなシステムG(s)のステップ応答に対して、次のように影響を与えます。
- G(s)−G(0)が実数の不安定零点を1つでも持つと、ステップ応答にオーバーシュートが生じる
- G(s)が実数の不安定零点を1つでも持つと、ステップ応答にアンダーシュートが生じる
- G(s)−G(∞)が実数の不安定零点を奇数個持つと、ステップ応答に初期アンダーシュートが生じる
- そもそも不安定零点が問題である理由があるかというと、
- 制御システムでよく出る伝達関数 (R = 目標値, E = 誤差 = R - Y^、U = 入力, Y = 出力, Y^ = 観測量) https://controlabo.com/open-loop-closed-loop/
- 制御器 U = C E : 人間が設計する
- 制御対象 Y = G U : 実世界に存在する
- 検出器 Y^ = H Y : センサ特性。例えば距離センサから物体までの距離を測る時、内部の電気応答などから実際の距離とセンサリングされた距離には乖離があることがある。このようなセンサ特性をモデル化できる。
- 閉ループ伝達関数:目標値rから出力yまでの伝達関数
- 開ループ伝達関数:誤差eから出力yまでの伝達関数
- 一巡伝達関数 :誤差eから観測量y^までの伝達関数(通常検出器はモデル化しないことが多いので、開ループ伝達関数=一巡伝達関数となることが実用上多い)
- 少なくとも一巡伝達関数が不安定だと発散するのでシステムは不安定
- 閉ループ伝達関数の極を見るのはめんどうくさいが(現代では面倒ではない)、「一巡伝達関数の不安定極数と、一巡伝達関数のナイキスト線図の回転数」から、閉ループ伝達関数が安定かを判定できる(ナイキストの安定判別法)。この方法は現代では意味がないように思えるが、実は安定余裕がわかるのでナイキスト線図自体は意味がある。
- gain, phase の設計: 閉ループ伝達関数
- リマインダ: 目標値 -> 出力の伝達関数
- 理想: gain = 0, phase = 0 が望ましい (リマインダ: gain = log(増幅率) なので 増幅率が 1 が望ましいということ)
- 現実的には動作周波数ではそうなっていて、それより高周波はノイズなので可能なら減衰・遅れが発生してもいいって感じ(むしろノイズは減衰すべきかも)
- 内部安定 https://controlabo.com/internal-stability/
- システムに加わるすべての入力信号 (R, D) に対して、システム内のすべての信号 (E, U, Y) が発散しないならば、そのシステムは内部安定であるという
- 閉ループ伝達関数が安定ならば内部安定、ではない!!!
- U^ = U + D (D は外乱) が制御対象に入力されることに注意。D から Y への経路が発散するのも良くない。これを外乱感度といって、これが悪いと外乱によってめっちゃ出力が変わってしまう(目標値では制御不能な外乱で制御対象や Y が不安定になるので)
- Y 以外にも、U, E が発散することもあるので。例えば入力 U が発散したら無限のエネルギーを求められてしまう
- 内部安定でなければ、システムは使い物にならない
- 不安定な極零相殺がなく、かつ閉ループ伝達関数が安定であれば、そのシステムは内部安定である
- 不安定な極零相殺があるならば、そのシステムは内部安定でない
- 例: 制御機が (s-1)/s, 制御対象が 1/(s-1) の時、入力にステップ応答の入力 U とステップ応答の外乱 d が加わると、(真面目に計算しないとわからないが)U が安定して E, Y が発散する。
- ナイキスト図: 一巡伝達関数CPHに対し C(iω)P(iω) のω: 0->∞の軌跡(と、それをIm軸でひっくり返したもの)
- リマインダ: 一巡伝達関数は誤差 E から観測量 y^ までの伝達関数
- C(iω)P(iω): E が周波数ωのsinの時、信号が|CP|倍されarg(CP)だけ遅れる。軌跡はそれぞれのωでどれくらいの増幅率・位相になるかを表している(ボード線図 2 つを使って絶対値・偏角の形で二次元にしただけ)
- お気持ち: E = R - Y なので、E に sin ωt を入力して、その周波数 ω で E, R の間の位相遅れが180度になる場合、
- Rの増幅率が 1 なので R = -sin ωt となる。単純に R = 0, D = 0と仮定すると、E = R - Y から、時系列でずっと E = sin ωt を維持することになる。
- Rの増幅率が 1 以上だと、徐々に E, R が逆位相を保ったまま増幅していく
- Rの増幅率が 1 未満だと、徐々に E, R が逆位相を保ったまま減衰していく(←これが健康で、-180度の偏角で (0, -1) より向こう側を通ってほしくない)
- 事実: 開ループ伝達関数は実用上ほぼ不安定極を持たない。
- 数学的事実: 厳密にプロパーなシステムのベクトル軌跡は必ず実軸からスタートし、原点に収束する(証明略、信じてください)
- 数学的事実: 閉ループ伝達関数が不安定極を持たず、不安定零点相殺がなければ、内部安定(証明略、信じてください)
- 数学的事実: 一巡伝達関数のナイキスト図が (-1, 0) を囲わないならば内部安定(証明略、信じてください)
- となると、数式の誤差でナイキスト図が (-1, 0) を囲ってしまわないような余裕が知りたい
- ゲイン余裕:位相そのままでゲインをあと何倍すると軌跡が点(-1,0)に触れるか (CP を k 倍すると、ナイキスト図の軌跡もそのまま k 倍拡大される)
- 位相余裕:ゲインそのままで位相があと何度遅れると軌跡が点(-1,0)に触れるか (CP を回転させて (-1, 0) にぶつかるまでの角度)
- リマインダ: 一巡伝達関数は誤差 E から観測量 y^ までの伝達関数
- gain, phase の設計: 開ループ伝達関数
- 理想: 低周波ゲインが高く、高周波ゲインが低く、余裕位相が大きいほうがいい。
- リマインダ: 誤差 -> 出力の伝達関数
- 低周波ゲインが高いほうがいい https://controlabo.com/steady-state/
- 目標値と出力の差が時間→∞でどれくらいずれるか?を考えると、lim t->∞ e(t) = lim s->0 s E(S) である(最終値定理より、証明略、信じてください
- すると、R = 1/s (ステップ入力) に対して e = lim s->0 1/(1+CG) なので(証明略、信じてください)、開ループ伝達関数CGは s->0 でなるべく大きい方が、ステップ入力応答がよくなる。
- 数学的事実: 最小位相系: 全零点・極が安定ならば、ゲインは単調減少、位相は 0 から -180 まで単調減少(証明略、信じてください)
- 余裕位相とは、増幅率 = 1 (gain = 0) での位相が、-180 度からどれくらい離れているかを表すものであったので、ボード線図のゲインが 0 をまたぐところでの位相が -180 度からどれくらい離れているかが位相余裕としてみることができる。
- 数学的事実: 最小位相系では、増幅率 = 1 (gain = 0) での増幅率の傾きが小さいほど、phase が大きくなる(= 余裕位相が大きくて安心)である(証明略、信じてください)
- 開ループ伝達関数は gain = 0 となるような場所では gain はなだらかにしたほうがよい
単語
-
上にG_1, G_2, 下にHの,フィードバック系についての定義を述べる.
-
閉回路伝達関数W
- 目標値から制御量への伝達関数.制御屋さんが最も興味があるはずの応答
- G_1 G_2/(1+G_1 G_2 H)
-
G=G_1 G_2
- K=G_1, P=G_2と表現することもある.K=ゲイン,P=プラントモデル
-
直結フィードバック系
- H=1(要するに制御量と目標量の次元が一致しているということ)
-
一巡伝達関数
- G_1 G_2 H
- 更にひどいことに,直結フィードバック系だと一巡伝達関数がGに一致するので,「伝達関数が一巡伝達関数Gで表されるフィードバック系」とか表現されていることがある(Q7.5).このような場合はH=1と判断する.
-
特性方程式
- 1+GHの分子(GHで不安定零点相殺が発生する場合は、G/(1+GH)の分母が特性方程式)
- これまた勉強の際の混乱のもと
- 閉回路伝達関数の極を計算するのが面倒だから定義されただけのいらない子
- 閉回路伝達関数G/(1+GH)の極は,零点相殺がないならば特性方程式1+GHの根に一致する,というただそれだけ.
| ナイキスト線図 | G(jω)H(jω)をωをパラメータとして複素平面に描いた図。 |
| 根、零点 | 分子が0 |
| 極 | 分母が0 |
| プロパー | 分子<=分母、分子<分母は厳密にプロパー |
| 安定性 | BIBO安定と漸近安定がある |
特性方程式の闇
-
閉回路伝達関数G/(1+GH)の極は,零点相殺がないならば特性方程式1+GHの根に一致する
-
特性方程式の動機
- 閉回路伝達関数G/(1+GH)をきちんと計算して,その極を見れば安定性がわかる.
- しかし,それが面倒くさいっていう理由だけで1+GHの根で代用しているだけ.
- 従って,「G/(1+GH)の極は,零点相殺がないならば1+GHの根に一致する」という言及に過ぎない.なのに特性方程式とか大層な名前が付いているのが混乱の原因
- だから不安定零点相殺があるときは1+GHの根ではダメで,原義に戻ってG/(1+GH)の極を見なければならない,というただそれだけの事.
- それでも内部安定性は失われるんだけどね
安定性判定
内部安定性
-
不安定零点の相殺
- 不安定零点を相殺する⇔内部不安定になる
- 内部安定⇔外部から加わる信号=「目標値」「操作量外乱」から、各要素の出力=「操作量」「制御量」への4 つの伝達関数がすべて安定⇔G分子H分子+G分母H分母が根実部が全て負⇔相殺がないかつ閉ループ特性方程式の根実部が0より小さい
- 確かに、目標値rと状態yの間では安定になる。しかし、ノイズdと状態yの間で不安定になったりして死ぬ。
- 10.21 不安定零点の相殺があると,不可制御または不可観測になる
-
一般に零点の相殺
- 7.17 減衰の悪い極の零点相殺では,外乱dが存在する場合,それがなかなか消滅しなかったりする
- 7.16 零点の相殺があると,不可制御または不可観測になる
特性方程式から直接2
- 伝達関数の極実部が、すべて0より小さければ漸近安定
- G, Hのみの単純なフィードバックで、かつ、特性方程式(=1+GH)の計算途中で約分が発生しなければ、特性方程式の根実部がすべて0より小さければ漸近安定も導かれる
ナイキスト線図
-
開ループの不安定極数とナイキスト軌跡から、閉ループ不安定極数を求めることで、内部安定性を評価可能な手法。
- 特性方程式1+PK=[1+PKの極]/[PKの極]
-
閉回路伝達関数の不安定極数=一巡伝達関数PKの不安定極数+ナイキスト軌跡P(iω)K(iω)が-1を時計回りに回る回数
-
虚軸上の極は左に見るように回避
-
単純なものに関してはここの10ページ目がわかりやすい
ボード線図
- ある周波数の入力がどれくらい増幅されるかを表した図
- ボード線図の見方
- いきなり位相がずれてる=反応が遅れるんだ。ということはあんまりはやい動きをさせようとすると逆の動きをするかも
- Kpをかけると何が起きる?:位相が変わらない。値を上げていくとだんだん上がったり下がったりする。
- Kiをかけると何が起きる?:位相が逆方向に動く
- Kdをかけると何が起きる?:位相が進む。でも高周波だと途中から0dBより上がっているので、ノイズを増幅してしまう
- 時間応答だけ見てやると、ピークを見逃して悲しいので、ボード線図は必ず見る。
- つまり、状態空間から必ず伝達関数にして、ボード線図をみる!!
- ボード線図の読み取り方=「安定余裕」
- ゲイン180度でゲインが1以上だと死ぬ->逆に、その時に1以下なら任意の周波数で発振はしない
- 0とクロス時の時に180度までがでかいとうれしい、180度より下だとやばい
離散化
-
連続離散の変換
- 連続積分に相当する離散積分Discrete-time Integrator(K Ts / (z-1)),
- 連続微分に相当する離散微分Discrete Derivative(K(z-1)/Ts z)が存在する
- 実装は2_CtrlDesign->2_misc->PID_ctrlに単純な積分器と単純な微分器の原理も含んだ詳細なモデルが書かれているので参考になる。(単純なオイラー法)
-
一般には連続->離散双一次変換
- 連続は左平面
- 離散の場合は根は単位円に
- これらの写像を行う
-
z変換系でできることまとめ(制御工学演習参考)
- 8.1 インパルス時間応答からz変換を計算
- 8.2 プロパーなラプラス変換からz変換を計算
- の極σでの留数
- 8.4, 8.11 逆z変換
- の極σでの留数
- 8.12 sとzが混在するシステム図と応答計算方法
- 8.18 所望のデジタルフィルタの設計と演算図 (プログラミングできる!)
- プロパーなz伝達関数は線形差分方程式を表すので、演算図が計算可能。
- 8.1 インパルス時間応答からz変換を計算
-
BET変換を使うとsみたいなプロパーでないものでもzに変換可能らしい http://jaco.ec.t.kanazawa-u.ac.jp/edu/digi/pdf/43.pdf
BIBO安定・漸近安定の必要十分条件
- 2つの安定性の必要十分条件
- 定理10.4 漸近安定⇔状態空間モデルのAの固有値の実部が全て負
- 定理10.5 BIBO安定⇔閉回路伝達関数の極の実部が全て負
- 10.25 可観測and可制御→「BIBO安定→漸近安定」
不安定零点と可制御可観測
- 10.21 不安定零点相殺→不可観測もしくは不可制御となる
- 7.16 不安定でない零点相殺→不可観測もしくは不可制御となる
状態空間モデルと伝達関数表記
- 10.10 状態空間モデル→伝達関数が計算可能
- G(s)=c^t (sI-A)^{-1} b
- ここでMIMO性は.y, uがスカラと前提して捨てている.
- 10.11 伝達関数→状態空間モデルが計算可能
- 部分分数分解による
ゲイン余裕・位相余裕
-
- サーボ機構の場合 ゲイン余裕、位相余裕
- プロセス制御の場合 ゲイン余裕以上、位相余裕以上
-
ボード線図において、位相が を通過するときのゲインの値が より低く、またを通過するときの位相の値が より小さければ安定である。
-
http://alk.fam.cx/block_090.html
- ゲインは,位相差が-180度になる前に,さっさと1以下まで下がって欲しい,
- 位相差は,ゲインが1以下になってから,-180度になってほしい
-
直感的な意味
- 位相余裕が大きい→振動しにくい