(57)【特許請求の範囲】
【請求項１】
位置ループ内に速度ループを有し、所定周期毎位置・速度ループ処理を実行するサーボモータの制御方法において、移動指令が零になった後、位置偏差が設定しきい値幅内に最初になったときの周期のみ上記速度ループの積分器の値を小さな値に切り替えて処理しオーバーシュートを防止することを特徴とするサーボモータのオーバーシュート防止方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、工作機械やロボット等の各種産業機械の可動部を駆動し位置決めを行うサーボモータの駆動方法に関し、特にオーバーシュートの発生を防止する方法に関する。
【０００２】
【従来の技術】
サーボモータを用いて駆動される工作機械の送り軸やロボットのアーム等の各種産業機械の可動部の制御において、該可動部を目標位置に位置決めするときの停止間際にオーバーシュートが発生する。このオーバーシュート発生を防止する方法として、指令目標位置にサーボモータもしくは可動部の実際の位置が到達した瞬間に、すなわち、目標指令位置と実際の位置との差である位置偏差が設定しきい値幅内になった時、速度制御ループ内の積分器の内容をクリアしてサーボモータへのトルク指令を減少させ、該サーボモータの出力トルクを動摩擦レベル以下に下げてオーバーシュートを防止する方法が採用されている。
【０００３】
【発明が解決しようとする課題】
応答性をよくするために、位置ループにフィードフォワードをかけてサーボモータの位置を制御する方法が採用されているが、この位置ループにフィードフォワードをかけてサーボモータを制御する方法において、位置決め時にオーバーシュート発生を防止するために、上述した位置偏差がしきい値幅内になった時速度ループの積分器の値を「０」にする方法を採用すると、移動途中で積分器の値を「０」にする場合が生じる。それは、非常に遅い速度でサーボモータを駆動している時、フィードフォワード制御が有効に作用し、位置偏差が小さな状態でサーボモータが駆動され、位置偏差が設定しきい値幅内になり速度ループの積分器の値を「０」にする場合が生じるからである。
【０００４】
また、移動指令終了後、実際の位置が目標位置近傍に達し、位置偏差が設定しきい値幅内にいって積分器が「０」にされると、サーボモータの出力トルクが減少し、該サーボモータで駆動する機械のバネ要素等によって逆にモータが機械によって押し戻されて、再びしきい値幅外に位置偏差が出てしまう場合がある。位置偏差がしきい値幅外に出ると位置偏差を減らすようにトルク指令が増大しモータ出力トルクも増大して再度位置偏差はしきい値幅内になり、再び積分値が「０」にクリアされる。これを繰り返し、結果として、機械の位置がしきい値を中心に振動する場合があった。また、しきい値幅のどちら側（＋側、−側）から位置決めするかによって振動中心が、しきい値幅の＋側となるか、−側のとなるか、その場所が異なり、結果として位置決め精度が損なわれる現象が発生していた。
【０００５】
そこで、本発明は、上記従来技術の欠点を解消し、サーボモータの移動停止時におけるオーバーシュートの発生を防止し、また位置決め時の位置決め精度の悪化をも防止することを目的とするものである。
【０００６】
【課題を解決するための手段】
本発明は、移動指令が零になった後、位置偏差が設定しきい値幅内に最初になったときの周期のみ速度ループの積分器の値を小さな値に切り替えることによってオーバーシュートを防止し、移動途中で積分器が小さな値に切り替え移動が停止するようなことを防止した。  
【０００７】
【発明の実施の形態】
図２は、本発明を適用した工作機械等におけるサーボモータ制御系の一実施形態の概要ブロック図であり、従来の構成と同一であることから概要のみを図示している。
１は工作機械等を制御するコンピュータ内蔵の数値制御装置（ＣＮＣ）、２は該数値制御装置１から出力される移動指令や各種信号をディジタルサーボ回路３のプロセッサに引き渡し、またディジタルサーボ回路３からの各種制御信号、状態信号を数値制御装置１に引き渡すために利用される共有メモリである。ディジタルサーボ回路３は、プロセッサ及びＲＯＭ、ＲＡＭ等のメモリ等で構成され、サーボモータ５の位置、速度のフィードバック制御をソフトウエア制御で行うものである。４はトランジスタインバータ等で構成されサーボモータ５を駆動するサーボアンプ、６は該サーボモータ５の位置、速度を検出しディジタルサーボ回路３にフィードバックするパルスコーダ等の位置、速度検出器である。
【０００８】
ディジタルサーボ回路３のプロセッサは、位置・速度ループ処理周期毎に図１に示す処理を実行し、サーボモータ５の制御を行う。
ディジタルサーボ回路３のプロセッサは、従来と同様に、数値制御装置１から共有メモリ２を介して送られてくる分配周期毎の移動指令を読み、位置・速度ループ処理周期毎の移動指令に変換し、該移動指令を位置偏差を記憶するレジスタに加算すると共に位置・速度検出器６からフィードバックされてくるサーボモータ５の移動量をレジスタに減算入力することによって位置偏差を求め、この位置偏差に位置ループゲインを乗じて速度指令Ｖｃ  を求める位置ループ処理を行う（ステップＳ１，Ｓ２）。
【０００９】
次に上記レジスタに入力される移動指令が「０」か否か判断し、「０」でなければ、フラグＦを「０」にして（ステップＳ９）、ステップＳ２の位置ループ処理によって求められた速度指令Ｖｃ  から、位置・速度検出器６からフィードバックされてくるサーボモータ５の実速度Ｖｆｂを減じた速度偏差に積分ゲインｋ１  を乗じ、その値を積分器として機能するレジスタに記憶されている前周期までの積分値Σｎ−１  に加算して当該周期における積分値Σｎ  を求める（ステップＳ１０）。すなわち、速度ループ制御における積分処理をこのステップＳ１０で行う。
【００１０】
その後、上記速度偏差（Ｖｃ  −Ｖｆｂ）に比例ゲインＫ２  を乗じた値を上記当該周期の積分値Σｎ  に加算してトルク指令Ｔｃ  を求める。このステップＳ１０とステップＳ７の処理が速度ループ処理に対応し、この実施形態では比例積分（ＰＩ）処理の速度ループ処理がなされる。こうして求められたトルク指令Ｔｃ  を電流ループに引き渡し（ステップＳ８）、当該位置・速度ループ処理周期の処理を終了する。なお、電流ループ処理では、このトルク指令Ｔｃ  に基づいて、サーボモータの各相に流す電流を制御してサーボモータ５を駆動することになる。
【００１１】
以下、移動指令がある限り各位置・速度ループ処理周期毎、ステップＳ１〜Ｓ３、Ｓ９、Ｓ１０、Ｓ７、Ｓ８の処理を繰り返し実行し、サーボモータ５位置、速度をフィードバック制御する。
一方、移動指令がなくなり、ステップＳ３で移動指令が「０」と判断されると、フラグＦが「１」か否か判断し（ステップＳ４）、最初は該フラグＦはステップＳ９で「０」にセットされているから、ステップＳ４からステップＳ５に移行し、ステップＳ２の位置ループ処理によってレジスタに記憶されている位置偏差を読み取り、該位置偏差が設定しきい値幅ε以下か否か判断する。該位置偏差がしきい値幅εよりも大きいときには、前述したステップＳ１０の通常の積分処理を行いステップＳ７でトルク指令Ｔｃ  を求めて電流ループに引き渡す。すなわち通常の速度ループ処理を行うものである。
【００１２】
位置偏差がしきい値幅εより大きい限りステップＳ１〜Ｓ５、Ｓ１０、Ｓ７、Ｓ８の処理を各位置・速度ループ処理周期毎実施し、サーボモータ５の実際位置が指令された目標位置近傍に達し、位置偏差がしきい値幅ε内になると、ステップＳ５からステップＳ６に移行し、前周期までの積分値Σn-1 に設定係数ｋ3 を乗じて当該周期の積分値Σn とする。この係数のＫ3 は０よりも大きく１よりも小さい値（０＜Ｋ3 ＜１）を設定しておくものであり、その結果、積分値は小さな値となる。また、フラグＦを「１」にセットする。そして、速度偏差（Ｖc −Ｖf ）に比例ゲインＫ2 を乗じた値と上記積分値Σn を加算して当該周期のトルク指令Ｔc を求め（ステップＳ７）、電流ループに出力する（ステップＳ８）。積分値が小さな値に切り替えられることから、トルク指令Ｔc は小さなものとなり、サーボモータ５の出力トルクも小さくなりオーバーシュートの発生が防止される。
【００１３】
次の周期からは、フラグＦが「１」にセットされているから、ステップＳ１〜Ｓ４の処理を行った後ステップＳ１０に移行し、通常の積分処理を行うが、すでに積分値が小さな値に切り替えられていることから、ステップＳ１０の積分処理を実行しても積分値は大きなものにならない。次にステップＳ７に移行し、この積分値に速度偏差に比例ゲインＫ２  を乗じた値を加算しトルク指令Ｔｃ  を求め電流ループに引き渡す（ステップＳ８）。これによってサーボモータの移動停止時のオーバーシュート発生を防止する。以後、移動指令が再び出力されない限り上記ステップＳ１〜Ｓ４、Ｓ１０、Ｓ７、Ｓ８の処理を各周期毎実行することになる。その結果、積分値が小さな値に切り替えられトルク指令Ｔｃ  が小さなものとなってサーボモータ５の出力トルクが小さくなり、機械のバネ要素によってサーボモータが逆方向に押し戻され位置偏差が増大したとしても、フラグＦが「１」にセットされてステップＳ４からステップＳ１０に移行するから、ステップＳ５、Ｓ６の処理は行われず、再度積分値が小さな値に切り替えられることがないから振動の発生を防止できる。
【００１４】
次に、再び移動指令が出力されステップＳ３で移動指令が「０」でないことを検出すると、ステップＳ９に移行してフラグＦを「０」にセットし通常の速度ループ処理（ステップＳ１０，Ｓ７）を行ってトルク指令Ｔｃ  を求めることになる。
なお、位置のフィードフォワード制御を行う場合にはステップＳ２の位置ループ処理と共に位置のフィードフォワード制御処理が実行され速度指令Ｖｃ  が求められるが、この位置のフィードフォワード処理は従来から公知であるので説明を省略する。
【００１５】
図３は上記処理の動作説明図で、図３（ａ）に示されるような移動指令が出力され、サーボモータ５が駆動され、サーボモータ５の速度が安定している状態では、図３（ｂ）、（ｃ）に示すように位置偏差及び積分器の積分値はほぼ一定な値を保持している。そして移動指令がなくなると（ステップＳ３）、位置偏差は小さくなり、この位置偏差が設定されたしきい値幅の一方のしきい値以下になると（ステップＳ５）、積分器の積分値を小さな値に切り替え、フラグＦを「１」にセットする（ステップＳ６及び図３（ｃ）、（ｄ）参照）。位置偏差がしきい値幅ε内にいっているときには速度は低下していることから速度偏差も大きくはなく積分器の積分値の増大も小さい。そして、次の移動指令が出力されるとフラグＦは「０」にセットされ、積分値は徐々に増大し通常の位置・速度ループの処理がなされることになる。
【００１６】
図４〜図６は、本実施形態の効果をみるために行った実験結果を示す図である。０．１ｍｍの位置に位置決めのために、該位置より小さい方から移動して来たときと、該位置より大きい位置より移動してきたとき（正方向移動による位置決め、及び負方向移動による位置決め）の２つの例の実験結果である。図４は、移動停止の際の積分値を小さくするオーバーシュート防止を行わなかったときの実験結果である。この図４に示す通り、停止時にオーバーシュートが生じている。
【００１７】
図５は、従来行われていた位置偏差がしきい値以下になったとき積分値を小さな値にしたときの実験結果である。オーバーシュートの発生は防止されているが、位置決め方向によって位置決め位置に段差が生じ位置決め精度を悪化させている。また、停止時の振動が大きくなっている。
図６は本発明を実施した時の実験結果である。この図６に示されるように、オーバーシュートは発生せず、かつ位置決め方向によって段差も発生せず、しかも、停止時の振動も図５に比べ小さくなっていることが分かる。
【００１８】
なお、上記実施の形態では、ステップＳ６において積分値を小さくするために前周期までの積分値Σｎ−１  に１より小さな係数Ｋ３  を乗じて積分値を小さくしたが、この処理に代えて予め設定された小さな値の積分値に切り替えるようにしてもよい。
【００１９】
【発明の効果】
本発明は、サーボモータの移動停止時にオーバーシュートを発生させず、位置決め方向によって位置決め位置に対する段差をも発生させず位置決め精度を向上させ、かつ停止時の振動を小さくすることができる。
【図面の簡単な説明】
【図１】本発明の一実施形態のにおける位置・速度ループ処理周期における処理のフローチャートである。
【図２】同実施形態の制御系のブロック図である。
【図３】同実施形態における動作説明図である。
【図４】オーバシュート発生防止対策を行わずに従来の制御方法でサーボモータを位置決めしたときの実験結果を示す図である。
【図５】位置偏差がしきい値以下になったとき積分値を小さな値にする従来のオーバシュート防止方法を適用してサーボモータを位置決めしたときの実験結果である。
【図６】本発明を適用してサーボモータを位置決めしたときの実験結果である。
【符号の説明】
１  数値制御装置（ＣＮＣ）
２  共有メモリ
３  ディジタルサーボ回路
４  サーボアンプ
５  サーボータ
６  位置・速度検出器
【図１】
0003556779.tif 000002
【図２】
0003556779.tif 000003
【図３】
0003556779.tif 000004
【図４】
0003556779.tif 000005
【図５】
0003556779.tif 000006
【図６】
0003556779.tif 000007