モーターの位置決めを行うために必要なサーボ制御技術。 そのサーボ制御の原理について解説をしています。 また、サーボ制御に有効なプログラマブルサーボ/シーケンスコントローラー(PSC)を簡単に紹介します。
モーターのサーボ制御を解説します。サーボ制御の基本となるフィードバック制御から説明しましょう。
モーターは外部から電流を供給し回転させる電動機です。
モーターを狙い通りに回転させるためには、モーターが今、どのように回転しているかをモニターし、その結果からモーターに与える電流値を決定するというフィードバック制御を行います。
つまり、モーターがどんなスピードで回っているかを検出し、より速くしなければならないのか、より遅くしなければならないのかに応じて、モーターに供給する電流を増やしたり減らしたりすれば、狙い目の回転速度を維持できるはずです。
フィードバック制御を行うためにはローターの回転情報が必要ですが、そのための装置の一つがロータリーエンコーダーです。
ロータリーエンコーダーは次のようなものです。
多数の穴のあいた円盤をローターに取りつけます。円盤の向こう側に発光器を、こちら側には受光器を置きます。円盤はローターと一緒に回転し、発光器の前に円盤の穴が来ますと光が受光器に達し穴を検知します。ローターがゆっくり回ると穴の来る周期が長くなり、速く回ると穴の検出の周期が短くなります。これによりローターの回転速度がわかります。
また、穴をもう一つだけあけておき、円盤の原点を決めます。すると、次々にやってくる穴がいま何番目の穴かを数えることができます。こうやって、ローターの現在の回転位置がわかります。実は、これだけでは回転に関する重要な情報が抜けています。それは、ローターが時計回りに回っているのか、反時計回りに回っているのか、がわからないことです。そこで、もう一列、別の穴を、最初の穴と少しずらしてあけておきます。こうすれば、二つの列の穴の位置関係から、時計回り(CW: Clockwise)、 反時計回り(CCW: Counter Clockwise)の区別がつきます。
これがロータリーエンコーダーです。
サーボ制御はフィードバック制御の一つで、モーター制御によく使われます。
サーボ制御とは、「指令を出すものと動作するものがあり、前者の指令通りに後者を動作させるための方法」です。たとえば、大勢の小学生たちに、先生が「進め」「止まれ」「右向け右」などと指令を出したとき、生徒たちがその指令通りに動いたり止まったりします。これがサーボ制御です。
モーターのサーボ制御について見てみましょう。アーム・ロボットを動かす方法を考えてみます。一例として、アームが大きな歯車に固定され、その歯車はモーターに装着された小さな歯車で回転するとします。モーターが回転するとその回転数に比例してアームが移動します。今、このアームが一回転するためにはモーターが100回転しなければならないとしましょう。すると、例えば、アームを90°だけ回転させたい場合はモーターを25回、回転させることになります。つまり、サーボ制御の指令は「25回、回転せよ」となります。これを受けて、モーターが停止状態からすぐさま動き出して回転し始め、25回だけ回ったら、さっと止まる、ということができれば、アームを90°回転させることができます。
ただ、現実にはそうはいかないことは経験からわかります。つまり、アームのついた歯車を回転させるとき、モーターが停止状態から動き出すまでには多少の時間がかかりますし、また、モーターを停止するときも、停止指令を出したとしてもモーターはそれまでの勢いで少しの間は回り続けます。このように、ただ「25回転せよ」という指令のみですと実際のモーターの回転数が25になるという確証はありません。
モーターのサーボ制御では、モーターの回転数と回転速度を制御するのが基本です。アームが動き出すときはモーターをゆっくりと回し、徐々に速度を上げ、最大の指令速度に達した後、その速度を維持し、適度なタイミングで回転を少しずつ遅くして行き、最後には停止させるという制御を行います。
ただし、この一連の運動でのモーターの回転数が、指令された回転数に一致するように制御しなければなりません。
「指令」の台形の面積が回転数となります。
「実際のモーターの動作」の面積は「指令」の面積と等しくなるように制御します。
サーボ制御の中の速度制御にはPID制御が使われます。
PID制御とはP制御(Proportional (比例)制御)、I制御(Integral (積分)制御)、および、D制御(Differential (微分)制御)をそれぞれ並列に行うものです。
これらの制御にはそれぞれ得意な働きあり、3つが揃うといろいろな変動にも対処しやすいという利点があります。P制御は単なる増幅動作で、ある設定値に対して現状の値がそれよりも小さい場合はプラスに、大きい場合はマイナスに制御します。P制御だけでは目標の値に到達できないことが多いので、I制御を追加します。I制御は現在までの差の総計(積分値)に比例してモーターの駆動電流を決めます。つまり、それまでに蓄積された誤差を解消するための制御です。
一方、D制御は異常事態に対処するためにあります。D制御は変化の度合いが大きければ大きいほど元に戻す力を強くする制御です。急に大きな負荷が加えられたり、急に負荷を取り外したり、また、電源が不安定になり電圧が急に下がったりと、大きな外乱がやってきた場合にすみやかに元の状態に戻すために有効な制御です。
このようにPID制御によってモーターの回転速度を理想回転速度に近づけることができます。
サーボ制御の概要を説明してきました。マイコンを使うとより簡単にサーボ制御が実現できます。
近年、サーボ制御にマイコンが使われるようになりました。マイコンはサーボ制御をプログラムによって実現しますが、通常マイコンはシステムコントローラーとして利用されており、サーボ制御以外にもいろいろな制御をしています。サーボ制御はサーボ以外の制御とは非同期で実行されます。更に、サーボ制御は一定時間毎に処理を実行する必要があります。マイコンはシステムコントローラーとしての制御とサーボ制御が同時に必要となった場合はどちらかを優先しなければなりません。しかし、後回しとなった制御が必要なタイミングに対して遅れてはいけません。マイコンが制御するシステムが高機能なほど、サーボ制御の精度を上げれば上げるほどこのような事象が発生し易くなります。この問題を回避するためにはマイコンの処理の高速化が要求されます。一般的にはシステムクロックを速くすることで対応可能ですが、消費電力が大きくなり、ノイズの発生や発熱等の問題が発生します。さらに場合によってはマイコンの動作限界で高速化できない事もあるでしょう。このような問題を解決するためにサーボ制御を専門に行うコプロセッサーをマイコンの中に組み込んで、システム制御とサーボ制御のハードウェアを分離することでマイコンの処理の負荷を軽減する方法があります。プログラマブルサーボ/シーケンスコントローラー(PSC)は、システム制御とは非同期にタイマーカウンターで周期的に起動してサーボ制御の処理を行うことができます。1つのICではありますが、システム制御とサーボ制御が別のハードウェアで処理されるので、システムクロックは低いままでも大丈夫です。
当社がサーボ制御用に開発したマイコンには、PSC以外にも特殊な回路が内蔵されており、より簡単に高精度なサーボ制御ができるようになっています。