今回はタイトルの通り位置サーボを掛けてステップ入力して、サーボ特性によってどのような加速度が生じて速度になって移動するかを調べてみる。
サーボの構成要素は現実には制約を含むケースが多いが、とりあえず物体の移動をモニタする変位センサと入力された信号に従って物体に加速度を与える手段(リニアモータなど)とがあって、これらを用いてサーボを組んでみる。

サーボの組み方だがよく言われる PID 制御とか、速度フィードバックを掛けておいて、変位をフィードバックする 2 重ループ方式とかあるのだが、前々回の PID 制御との関係
http://blogs.yahoo.co.jp/susanoo2001_hero/7892825.html
で少し触れたように結果的には大して変わらない。要はゲイン交点での位相マージンを取る、ということだけである。

ということで今回は変位サーボをそのまま掛ける。しかしこれでは変位差分信号で加速度を生じさせることになってしまうので、2 階積分の関係になって二次系、すなわち位相が 180°遅れる系になる。そこでフォーカスサーボでも用いた位相進み補償を入れて位相を戻してマージンを確保してループを安定させる。速度フィードバックを掛けた 2 重ループ方式も位相を進めているだけとも言えるので同じことである。位相進み補償は特定の帯域で変位信号を微分して速度信号を作っているようなものだからである。

Xcos でループを組んでみた。途中の位相進み補償の伝達関数は以下の通りである。
イメージ 3
イメージ 4


イメージ 1
今回は位相進み補償は位相進み始め周波数と進み止まり周波数を広げてある。ゲイン設定によっては位相マージンを広く取れるようにするのが目的だが(後でゲインを振った時に比較するため)、高い周波数領域まで速度信号をフィードバックしているというイメージである。もちろん移動機構にガタなどによる不要共振があったら、その手前で位相を戻しておく必要がある。
帯域は 1 Hz にしてみた。

まずはリミッタを掛けない場合。ゲイン= 100、帯域 1 Hz

イメージ 2
誤差信号を 100 倍しているので、リミッタの直前でレベル 100 になるのでリミット値をそれ以上にしておけばいいのだが、結果は以下の通り。

イメージ 5
約 1.5 秒後のところで変位誤差 0 というところだろうか。
サーボ帯域が 1 Hz なのでそんなものといえばそんなものか。

では、ゲインを 1000 にして帯域を 10 Hz にするとどうなるか。結果は以下。

イメージ 6
最初だけ頑張って加速しているがその後はあまり代わり映えしないような気がするがどうだろうか。

ではゲインを戻して、リミッタとして最大加速度±1 としてみると、

イメージ 7
Bang - Bang 制御にかなり近い波形にはなっている。2 秒後、減速が終わった後にちょっともたもたしている。

ではリミッタ付きでゲインが高いと、

イメージ 8
ほとんど Bang - Bang 制御になっている。これで完成か!と思ったら大間違いで、ちょっとパラメータをずらすとこんな具合である。
(位相進み補償は以下の特性)
イメージ 10

イメージ 9
要は先ほどのはパラメータの条件がたまたま上手くいったという感じで(カラクリはよく分からない)、動作マージンは全くないと言っていいだろう。自分も最初きれいな波形が得られたので目を疑った。

で、この最後の波形がリミッタ付きでサーボを掛けた状態で得られるよくありがちな波形だと思われる。つまり加速はそれなりにフル加速してくれるが、減速の方が変位誤差が減ってくるとリミッタが掛からない状態で移動していることになり、収束が遅れるというわけである。
パラメータをよく詰めればもっと良い状態が作れるかも知れないが、それにしても Bang - Bang 制御に対してどのくらい遅れが追加されるか、リミッタが聞かなくなった状態で早く収束出来るか、サーボ設計に掛かっているわけだが結構難しそうだ。

次回は位相マージンと収束の関係を見てみる。