パルスに追従する位置決めサーボ制御システムをマイコンで構築する
これまではあらかじめ作成したモータ位置の軌道に追従する方式として加速度指令方式での位置決めモーションコントロールを実現し、その動作の有効性を確認しました。
実際のモータ位置決めサーボシステムではパルスを位置決め指令として与えるものが多いです。そこで、今回は外部のエンコーダで発生させたパルスを指令値としてその動作に追従させる位置決めシステムをマイコンで実現してみます。
パルスに追従するところからステッピングモータのように与えたパルス分だけ動作することになります。
一般的な位置決めサーボシステム
一般的なモータの位置決めサーボシステムのブロック線図です。パワーアンプが電流指令タイプの場合は一番内側に電流フィードバックループがあり、モータへは電流指令を与えます。電圧指令タイプの場合は電圧指令値をオープン制御で与えることになります。
モータ位置決めサーボシステムではまず速度制御フィードバックによりモータ速度を安定させてから、外側に位置フィードバックループを設けるものが一般的です。
ハイゲインフィードバック方式を適用した位置決めサーボ
速度制御にはマイコンプログラムで簡単に実現でき、外乱抑制にも効果のあるハイゲインフィードバック方式を採用します。
位置制御システムに発展させるためには速度制御系の外側に位置フィードバックループを設けます。
ハイゲインフィードバック方式では速度制御系は1次遅れ系に近似できます。位置制御の補償器が比例ゲインKPだけなのは入力から出力までの伝達関数を2次遅れ系とするためです。
外部から任意のパルスを与える場合は多少難がありますが、あらかじめ位置目標値の軌道がわかっている場合は速度指令値が作成できるのでフィードフォワード項として付加すると遅れはほぼなくなり追従性はより向上します。
位置補償器ゲインの決定
入力から出力間の伝達関数は以下のように2次遅れ系となります。時定数Tm2は既知のため、減衰比ζのみを指定するとゲインKPは一意的に決まります。
例えば 時定数Tm2が25msの場合は減衰比ζを1に指定するとωnが20となるのでKPは10になります。
実際の回路
モータの位置および 外部入力パルスによる位置指令値はタイマのエンコーダインターフェースモードによりアップダウンカウントすることで得られます。
User SWは位置情報をリセット/プリセットするために使用します。リセットしたときにアップダウンカウンタの中間値あたりに指定しておけば、動作中にカウンタのオーバーフローやアンダーフローによる動作不良を防ぐことができます。
シミュレーションと実際の動作
① シミュレーション
まず恒例のシミュレーションをマイクロソフトExcelで実施しました。条件としてハイゲインフィードバックゲインC1,C2をそれぞれ2,3とする場合で検証します。
入出力間伝達関数は2次遅れ系となりますので減衰比ζを1と指定すると位置ゲインKPは15となります。
この条件では2次遅れ系の特徴がよく現れていて、入力の指令値がランプ状で変化しているときは、出力はわずかな定常偏差をもって変化し、定値になったところで定常偏差がなくなるサーボ追従をしています。制御理論の最終値定理のとおりです。
ハイゲインフィードバックゲインC1,C2を上げすぎると速度の追従性および外乱抑制は向上しますが、敏感になりすぎて振動的になります。位置サーボの場合は、小さめのゲインでも十分効果はあります。
2次遅れ系の場合は、ランプ入力では定常偏差が残りますが、位置補償器内でさらに積分補償器を追加して伝達関数の次数を増やすことで理論上(最終値定理と内部モデル原理)、定常偏差はゼロに収束します。前節の「実践で使えるDCモータの位置決め制御サーボシステムをマイコンで構築する」で構成したように軌道が既知であれば指令値として加速度、速度をフィードフォワード項を追加すれば遅れなしに追従するシステムを構成できます。
② 実機による実測
実機による動作の実測値です。エンコーダ軸を手動で回すと軸の動きに合わせて発生するパルスに追従するいわゆるパルス同期運転となります。
正転、逆転ともにモータの位置は任意に与えたパルスの通り、つまりエンコーダの軸の動きに追従しているのが確認できます。
多少複雑な入力パターンの場合でもしっかり追従しています。
シリアルモニターでエンコーダからの位置指令パルス(上段)とモータ位置パルス(下段)の値を確認してみますと、モータ位置パルスは指令パルスに追従しているのがわかります。
基本的なDCモータの位置決めサーボシステムは速度制御が安定に実現できていれば、その外側に位置制御用フィードバックループを加え、その位置偏差に位置補償器ゲインKPを通したものを速度指令とすると簡単に実現できます。位置指令として与えた任意のパルス分だけ動くことでまさにステッピングモータと同じ動作をします。
動画ではいとも簡単に外部から与えたパルスに追従している様子が確認できますが、試行錯誤の調整部分はなく、制御理論の上に成り立ったシステムです。制御の基礎をしっかり理解しておくと、一見難しそうな技術をかえってシンプルに実現できてしまう一例であるといえます。LEGOモータのような高精度でないホビー用途のものでも理論とプログラム次第で高度な運転ができるようになるところにフィードバック制御の醍醐味があります。