実践で使えるDCモータの位置決め制御サーボシステムをマイコンで構築する
前回ではレゴEV3モータをテーマとして実践で使える速度サーボ運転をマイコンで実現するのに、このサイトで紹介したPI制御方式、ハイゲインフィードバック方式そして2自由度ロバスト方式を適用してそれぞれの特性を実機において検証しました。
今回は速度サーボのさらなる発展としてモータの回転位置をコントロールする位置サーボ(位置追従制御)を実機を使って検証していきたいと思います。
位置決めサーボ(加速度指令方式)
速度制御系でハイゲインフィードバック方式や2自由度ロバスト制御が適用されて指令値通りに応答できるようになっていれば、位置決めサーボ系に発展させることは容易です。
ここでは位置決めサーボ系において応答を決めるゲインをほぼ一意的に選定できる加速度指令方式を採用して実機に適用してその有効性を検証していきます。加速度指令方式についてはマイコンで実現するフィードバック制御のための基礎知識【発展編】で詳細を解説しています。
この方式では設定する目標軌道の位置のみならず、速度および加速度に分解したものを予め作成して指令値として与えます。
ゲインKp, Kvの決め方はマイコンで実現するフィードバック制御のための基礎知識【解析編】で解説している2次遅れ特性を参考にしてください。ゲインを適切に設定することにより位置偏差がゼロに収束していわゆる位置決めサーボが実現できます。
上式が成立するのは速度系にロバスト制御が施されていて速度指令値θ'ref ≒ 速度θ' となることにより加速度指令値θ"ref ≒ 加速度θ" とみなせるからです。
適切に設定したゲインKv、Kpによって起動時に発生している誤差が2次遅れ系の特性で収束すると位置θは目標値 θ0に遅れなしに追従することになります。詳細はマイコンで実現するフィードバック制御のための基礎知識【発展編】の位置決め追従制御(加速度指令方式)で解説しています。
今回は速度制御系の部分にはハイゲインフィードバック方式を採用して簡易的なロバスト制御を実現しています。
実機への適用
指令値は台形速度パターンが最も簡単なので今回はこれを採用しています。プログラムで浮動小数点を使用すればsin関数を用いた加速度曲線などが定義でき、よりスムーズなパターンが作成できます。
指令値を作成するにあたってはマイクロソフトExcelを使用してサイクルタイム毎に刻んで演算すれば下図のような数値が得られます。
実際のプログラミングではExcelの演算と同じものをそれぞれ加速度、速度および位置指令値の配列に代入すればよいわけです。準備する配列の個数は下図の例ではサイクルタイムを5msとしているため各1000個ずつ必要です(5s/5ms個)。
- ピーク速度が360p/s
- 加減速期間1.5s
- 定常速度期間2.0sの台形速度パターン
指令値作成は高校数学の関数問題レベルのものです。微分・積分の基本的な考え方と1次・2次関数のおさらいです。ちょっとした頭の体操になりますのでやってみてください。
フィードバックおよび実機計測に取り込む速度と位置のデータはエンコーダからのパルスをNucleoに取り組みますが、速度と位置はそれぞれ別個のタイマ・カウンタで計測します。
実際の動作
外乱負荷を与えない状態での速度変化の指令値と実測値です。起動時はどうしてもわずかに乱れていますがハイゲインフィードバックの影響かもしれません。エンコーダ分解能が極めて粗いのと、演算を整数化しているため、一工夫しているとはいえ特に低速時には理想通りには動作させるにはあと何か必要かもしれません。
位置決めサーボでの速度実測値ですので速度定常時にわずかに脈動しているのは問題ではありません。
0.5s毎に外乱負荷を与えた場合の速度です。わずかに外乱の影響はありますが、ハイゲインフィードバックが効いてほぼ安定しています。
実際のモータの移動位置です。位置指令値と実測値にはずれが見られず遅れなく追従しているのが確認できます。外乱負荷を与えた場合でも位置にはほぼ影響がありません。
レゴEV3Lモータは一回転あたり180パルスのエンコーダを内蔵しています。この指令値はちょうど7回転で最終到達パルスが1260パルスになるものです。
動画1 シリアルモニター
上段が速度、下段が位置です。5秒で台形加減速して設定位置1260に到達しています。
動画2 レゴEV3Lモータ7回転位置決め
起動してからちょうど7回転(1260パルス分)で停止しています。
レゴEV3Lモータのような簡易的なエンコーダがついたものでも高度なロバスト制御を施した位置決めサーボに発展させると高精度な位置の追従制御ができることが確認できました。
ハードウェアはマイコンと電圧制御タイプのドライバのごく普通の組み合わせのものなのですが、本格的な理論を適用したモーションコントロールが簡単に実現できてしまうのです。
制御理論の応用も特殊なハードウェアを必要とするものでなくだれでも身近に応用できるものを紹介しました。ここではモータを使ったモーションコントロールを例にあげて解説してきましたが、それ以外の用途に活用しても面白いと思います。
モーションコントロールを始めとする制御系をプログラミングによりマイコン等で操作を行うためにはまずシミュレーションで動作を確認して理論通りに実現できるかどうかを見極めることです。理論段階ではScilab等のシミュレーションソフトで動作確認をし、プログラミングのためにはExcel等などを使って離散系を意識したシミュレーションをすることが実現化の早道です。
高度な制御理論を適用したものでもそのツボとなる部分は実際の何百行に渡るプログラムにおいてほんの数行足らずの数式にすぎません。ですが、このほんの数行の記述でもともとの特性が全く高度なものに化けるのです。物理的な対象が化学のように化けるのがフィードバック制御の面白いところです。興味深いと思いませんか。