(57)【要約】【課題】上位装置からの移動指令値の周期が変化した場合でも、かかる周期の変化による影響を抑制して制御対象を円滑に制御することができるようにする。【解決手段】受信周期ｔchgで受信された移動指令値Ｐ2*はバッファ２１１に格納され、受信周期ｔchgより短い処理周期ｔｓchgで繰り返し読み出されて、移動平均処理用バッファ２１２でのバッファｂ（０），ｂ（１），……に順に格納され、かかる格納が行われる毎に、演算部２１３において、これらバッファｂ（０），ｂ（１），……での移動指令値の平均値が求められる。ここで、短い受信周期ｔchgで次の移動指令値Ｐ3*が受信されてバッファｂ（０），ｂ（１），……への格納が行われると、最後のバッファｂ（ｍ）に１つ前の移動指令値Ｐ2*が格納されなくなるので、バッファｂ（ｍ）の移動指令値を不足バッファ補正処理部２１６で補正し、演算部２１３では、バッファｂ（ｍ）での移動指令値として、この補正した移動指令値を用いる。【選択図】図１
2010051091.tif 000002
【特許請求の範囲】
【請求項１】
上位装置から受信周期で移動指令値が受信される毎に受信された該移動指令値が格納され、格納された該移動指令値を処理周期（＜受信周期）で繰り返し読み出して出力する移動指令値格納バッファと、
該移動指令値格納バッファから該移動指令値が出力される毎に、該移動指令値を順次格納する複数のバッファを有する移動平均処理用バッファと、
該処理周期毎に、該移動平均処理用バッファの全ての該バッファから平均移動指令値を生成し、制御対象の移動指令値として制御サーボ部に供給する移動平均値演算部と
を備え、
該移動平均処理用バッファは、該受信周期を該処理周期で除算して得られる商に等しい個数の該バッファを有することを特徴とするサーボ制御装置。
【請求項２】
請求項１において、
前記移動指令値の前記受信周期が変化したとき、前記移動平均処理用バッファでのいずれかの前記バッファに格納されている前記移動指令値を補正する補正手段を備えたことを特徴とするサーボ制御装置。
【請求項３】
請求項２において、
前記移動指令値の受信周期の規定の周期からの変化量は、前記処理周期の高々１周期であって、
前記補正手段が前記移動指令値を補正する前記バッファは、
新たな前記移動指令値が該規定の周期よりも短い受信周期で受信されたときには、前記移動平均処理用バッファでの最後に配列される前記バッファであり、
新たに前記移動指令値が該規定の周期よりも長い受信周期で受信されるときには、前記移動平均処理用バッファでの最初に配列される前記バッファである
ことを特徴とするサーボ制御装置。
【請求項４】
請求項２または３において、
前記移動平均値演算部は、前記補正手段が前記バッファの移動指令値の補正処理を行うときには、該補正処理が行われた後に前記平均化処理を行うことを特徴とするサーボ制御装置。
【請求項５】
請求項２，３または４において、
前記補正手段は、規定の周期よりも短い前記受信周期で新たな移動指令値が受信されたとき、該新たな移動指令値よりも２つ前に受信された移動指令値が残留している前記バッファの移動指令値を補正することを特徴とするサーボ制御装置。
【請求項６】
請求項２，３または４において、
前記補正手段は、規定の周期よりも短い前記受信周期で新たな移動指令値が受信されて、該新たな移動指令値よりも２つ前に受信された前記移動指令値が格納されている前記バッファに格納せず、２つ前に受信された前記移動指令値が該新たな移動指令値によって補正されることを特徴とするサーボ制御装置。
【請求項７】
請求項５または６において、
前記補正手段は、移動指令値を補正する前記バッファでの前記移動指令値を、複数回にわたって補正して前記新たな移動指令値よりも１つ前に受信された移動指令値とすることを特徴とするサーボ制御装置。
【請求項８】
請求項２，３または４において、
前記補正手段は、規定の周期よりも長い前記受信周期で新たな移動指令値が受信されたとき、該新たな移動指令値よりも１つ前に受信された移動指令値が格納された前記個数分の前記バッファの後に移動指令値の格納が指定され、かつ該新たな移動指令値が格納されない前記バッファに格納されている移動指令値を補正することを特徴とするサーボ制御装置。
【請求項９】
請求項８において、
前記補正手段は、移動指令値を補正する前記バッファでの前記移動指令値を前記新たな移動指令値にするための補正を１回行うことを特徴とするサーボ制御装置。
【請求項１０】
請求項８において、
前記補正手段は、移動指令値を補正する前記バッファでの前記移動指令値を、複数回にわたって補正して、前記新たな移動指令値にすることを特徴とするサーボ制御装置。
【請求項１１】
請求項５，６，７のいずれか１つに記載の補正手段と、請求項８，９，１０のいずれか１つに記載の補正手段とを備えたことを特徴とするサーボ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体製造装置や工作機械，射出成形機などの産業用機械などに用いられるサーボ制御装置に係り、特に、上位装置から一定の周期で供給される移動指令値をこの周期よりも短い周期で高速に処理するようにしたサーボ制御装置に関する。
【背景技術】
【０００２】
産業用機械などに用いられるサーボ制御装置は、上位装置からの移動指令値に応じて産業用機械を制御するものであるが、上位装置は制御対象を所望の位置に、また、所望の速度で所望の軌道にて制御する必要があり、多大な処理時間を要するため、近年では、サーボ制御装置の処理周期が高速であるのに対し、上位装置の処理周期を低速にし、上位装置の負担を低減するようにすることが一般的になっている。
【０００３】
そのため、上位装置の制御対象をサーボ制御装置で制御する場合、サーボ制御装置では、上位装置から一定周期で入力される移動指令値をサーボ制御装置の処理周期毎に分配する必要性が大きくなっている。
【０００４】
このような移動指令値の分配方法の一例として、上位装置から一定の周期（ホスト側処理周期）で供給される移動指令値を、このホスト側処理周期の１周期毎に、サーボ制御装置側の処理周期の個数分に区分して、区分された移動指令値を夫々このサーボ制御装置側の処理周期に順次等分配するようにした技術が知られている（例えば、特許文献１参照）。
【０００５】
この特許文献１に記載の技術での分配の具体的な方法としては、ホスト側処理周期をＴMとし、サーボ制御装置側の処理周期をＴSとすると、これらの比率を係数α（＝ＴS／ＴM）として求め、この係数αを上位装置からの移動指令値に乗算することにより、この移動指令値をこの比率分低減し、これをサーボ制御装置側の処理周期ＴS毎にサンプリングして、この処理周期ＴS毎に移動指令値を等分配するものである。
【特許文献１】特願平９ー６２３３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、上記特許文献１に記載の技術において、上位装置からの移動指令値をサーボ制御装置の各処理周期に等分配するのは、この上位装置の処理周期が一定であることが前提になるものである。
【０００７】
しかしながら、サーボ制御装置への移動指令値の伝送の過程で生ずるジッタなどにより、上位装置から供給される移動指令値の周期が変化する場合がある。このように、上位装置から供給される移動指令値の周期が変化すると、この移動指令値の周期の１周期に対するサーボ制御装置の処理周期の回数が変化し、サーボ制御装置の処理周期に移動指令値が分配されない処理周期が生ずることになる。これに対し、サーボ制御装置で処理周期への移動指令値の分配のために用いる上記の係数αは一定であるから、サーボ制御装置の処理周期のうちで移動指令値が分配されない処理周期が生じた場合には、移動指令値が分配された処理周期でのこれら移動指令値の積算値は、上位装置から供給された元の移動指令値と等しくならず、制御対象での制御が正常に行われなくなる。
【０００８】
本発明の目的は、かかる問題を解消し、構成を複雑にすることなく、上位装置から供給される移動指令値の周期が変化した場合でも、かかる周期の変化による影響を抑制して制御対象を円滑に制御することができるようにしたサーボ制御装置を提供することにある。
【課題を解決するための手段】
【０００９】
上記の目的を達成するために、本発明は、上位装置から受信周期で移動指令値が受信される毎に受信された移動指令値が格納され、格納された移動指令値を処理周期（＜受信周期）で繰り返し読み出して出力する移動指令値格納バッファと、移動指令値格納バッファから移動指令値が出力される毎に、移動指令値を順次格納する複数のバッファを有する移動平均処理用バッファと、処理周期毎に、移動平均処理用バッファの全てのバッファから平均移動指令値を生成し、制御対象の移動指令値として制御サーボ部に供給する移動平均値演算部とを備え、移動平均処理用バッファは、受信周期を処理周期で除算して得られる商に等しい個数のバッファを有することを特徴とするものである。
【００１０】
また、本発明は、移動指令値の受信周期が変化したとき、移動平均処理用バッファでのいずれかのバッファに格納されている移動指令値を補正する補正手段を備えたことを特徴とするものである。
【００１１】
また、本発明は、移動指令値の受信周期の規定の周期からの変化量が、処理周期の高々１周期であって、補正手段が移動指令値を補正するバッファは、新たな移動指令値が規定の周期よりも短い受信周期で受信されたときには、移動平均処理用バッファでの最後に配列されるバッファであり、新たに移動指令値が規定の周期よりも長い受信周期で受信されるときには、移動平均処理用バッファでの最初に配列されるバッファであることを特徴とするものである。
【００１２】
また、本発明は、移動平均値演算部が、補正手段がバッファの移動指令値の補正処理を行うときには、補正処理が行われた後に平均化処理を行うことを特徴とするものである。
【００１３】
また、本発明は、補正手段が、規定の周期よりも短い受信周期で新たな移動指令値が受信されたとき、新たな移動指令値よりも２つ前に受信された移動指令値が残留しているバッファの移動指令値を補正することを特徴とするものである。
【００１４】
また、本発明は、補正手段が、規定の周期よりも短い受信周期で新たな移動指令値が受信されて、新たな移動指令値よりも２つ前に受信された移動指令値が格納されているバッファに格納せず、２つ前に受信された移動指令値が新たな移動指令値によって補正されることを特徴とするものである。
【００１５】
また、本発明は、補正手段が、移動指令値を補正するバッファでの移動指令値を、複数回にわたって補正して新たな移動指令値よりも１つ前に受信された移動指令値とすることを特徴とするものである。
【００１６】
また、本発明は、補正手段が、規定の周期よりも長い受信周期で新たな移動指令値が受信されたとき、新たな移動指令値よりも１つ前に受信された移動指令値が格納された個数分のバッファの後に移動指令値の格納が指定され、かつ新たな移動指令値が格納されないバッファに格納されている移動指令値を補正することを特徴とするものである。
【００１７】
また、本発明は、補正手段が、移動指令値を補正するバッファでの移動指令値を新たな移動指令値にするための補正を１回行うことを特徴とするものである。
【００１８】
また、本発明は、補正手段が、移動指令値を補正するバッファでの移動指令値を、複数回にわたって補正して、新たな移動指令値にすることを特徴とするものである。
【００１９】
また、本発明は、規定の周期よりも短い受信周期で新たな移動指令値が受信されたときの補正手段と、規定の周期よりも長い受信周期で新たな移動指令値が受信されたときの補正手段とを備えたことを特徴とするものである。
【発明の効果】
【００２０】
本発明によると、上位装置からの規定の受信周期で受信される移動指令値から移動平均処理用バッファを用いて複数の同じ移動指令値を作成し、その平均値をサーボ処理用に移動指令値としているので、間欠的に受信される移動指令値が変化するものであっても、円滑に（緩やかに）変化するサーボ処理用の移動指令値となり、円滑なサーボを行うことができる。
【００２１】
また、移動指令値の受信周期が変化しても、移動平均処理用バッファでのバッファに格納される不具合な移動指令値を補正するものであるから、サーボ処理用の移動指令値の局所的な変動を抑制することができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明による実施形態を図面を用いて説明する。
【００２３】
図１は本発明によるサーボ制御装置の一実施形態を示すブロック構成図であって、１は上位装置、２はこの実施形態のサーボ制御装置、２１は指令値補間演算部、２２はサーボ制御部、３は電動機、４は検出器である。
【００２４】
同図において、上位装置１は、サーボ制御装置２や電動機３，検出器４などからなる制御対象に、規定の周期ｔchgで、移動指令値Ｐk*（但し、ｋ＝１，２，３，……）を送信する（なお、「＊」は上位装置１から送信されてきたものであることを表し、ｋは正整数である。また、以下では、周期ｔchgを規定の受信周期ｔchgということにする）。サーボ制御装置２は指令補間演算部２１とサーボ制御部２２とから構成されており、上位装置１からの移動指令値Ｐk*がこのサーボ制御装置２で受信される。
【００２５】
サーボ制御装置２では、受信された移動指令値Ｐk*が指令値補間演算部２１に供給されて、このサーボ制御装置２の処理周期（以下、サーボ処理周期という）ｔｓchg毎に移動指令値Ｐk*を補間する補間演算処理が行われ、このサーボ処理周期ｔｓchg毎に平均化により補間された移動指令値（以下、平均移動指令値という）Ｐｓk*をサーボ制御部２２に供給する。サーボ制御部２２は、電動機３の回転子の位置や速度を検出する検出器４の検出結果を監視しながら、このサーボ処理周期ｔｓchg毎に、指令値補間演算部２１から供給される平均移動指令値Ｐｓk*をもとに電動機の位置や速度電流を制御する。
【００２６】
図２は図１における指令値補間演算部２１の基本構成を示すブロック構成図であって、２１１は移動指令値格納バッファ、２１２は移動平均処理用バッファ、２１３は移動平均値演算部、２１４は移動指令値格納バッファ、２１５は剰余バッファである。
【００２７】
同図において、この指令値補間演算部２１は、移動指令値格納バッファ２１１と、移動平均処理用バッファ２１２と、移動平均値演算部２１３と、移動指令値格納バッファ２１４と、剰余バッファ２１５と、さらに、図示しないが、制御部とから構成されており、制御部によって各部が制御される。
【００２８】
受信された上位装置１（図１）からの規定の受信周期ｔchgの移動指令値Ｐk*は、順次移動指令値格納バッファ２１１に格納される。移動指令値格納バッファ２１１では、格納された移動指令値Ｐk*をサーボ制御装置２のサーボ処理周期ｔｓchgで繰り返し読出し、移動平均処理用バッファ２１２に順次格納する。なお、移動指令値格納バッファ２１１では、新たに移動指令値Ｐ(k+1)*が格納されると、これまで格納されていた移動指令値Ｐk*が新たな移動指令値Ｐ(k+1)*に更新される。
【００２９】
移動平均処理用バッファ２１２は、いま、受信周期ｔchg／サーボ処理周期ｔｓchgの商をｍ＋１（但し、ｍは正整数）とすると、図示するように、（ｍ＋１）個のバッファｂ（０），ｂ（１），ｂ（２），……，ｂ（ｍ）から構成されるものであって、移動指令値格納バッファ２１１から読み出される移動指令値Ｐk*はバッファｂ（０）からバッファｂ（１），ｂ（２），……，ｂ（ｍ）の順に格納される。従って、いま、移動指令値Ｐ1*が移動指令値格納バッファ２１１に格納されたとすると、これに次いで、移動指令値格納バッファ２１１からサーボ処理周期ｔｓchgでこの移動指令値Ｐ1*が繰り返し読み出され、最初に読み出された移動指令値Ｐ1*から順にバッファｂ（０），ｂ（１），ｂ（２），……，ｂ（ｍ）に格納されることになる。ここで、サーボ処理周期ｔｓchgが規定の受信周期ｔchgの１／（ｍ＋１）倍とすると、移動指令値格納バッファ２１１から最初に読み出された移動指令値Ｐ1*から順にバッファｂ（０），ｂ（１），ｂ（２），……，ｂ（ｍ）に順に格納され、最後のバッファｂ（ｍ）に移動指令値格納バッファ２１１から読み出された移動指令値Ｐ1*が書き込まれると、次に受信された移動指令値Ｐ2*が移動指令値格納バッファ２１１に格納されることになり、同様にして、移動指令値格納バッファ２１１からこの移動指令値Ｐ2*がサーボ処理周期ｔｓchgで繰り返し読み出されて、バッファｂ（０），ｂ（１），ｂ（２），……，ｂ（ｍ）に順に格納される。
【００３０】
なお、かかるバッファｂ（０），ｂ（１），ｂ（２），……，ｂ（ｍ）において、移動指令値格納バッファ２１１からの移動指令値Ｐk*を格納されるバッファｂ（ｉ）（但し、ｉ＝０，１，２，……，ｍ）は、図示しないが、上記の制御部に設けられたカウンタのカウント値によって指定される。かかるカウンタとしては、移動指令値Ｐk*が受信される毎にカウント値が「０」にリセットされるカウンタ（以下、リセットカウンタという）や０〜ｍの値を繰り返しカウントするリングカウンタが用いられる。カウント値が０のときには、バッファｂ（０）が指定され、カウント値が１のときには、バッファｂ（１）が指定され、……、カウント値がｍのときには、バッファｂ（ｍ）が指定される。
【００３１】
図２で示す状態は、バッファｂ（０），ｂ（１），ｂ（２），……，ｂ（ｍ）に移動指令値Ｐ1*が書き込まれた後、次の移動指令値Ｐ2*が移動指令値格納バッファ２１１に格納されて、移動平均処理用バッファ２１２のバッファｂ（０），ｂ（１），ｂ（２）まで移動指令値Ｐ2*が格納された状態を示している。
【００３２】
移動平均処理用バッファ２１２の全てのバッファｂ（０），ｂ（１），ｂ（２），……，ｂ（ｍ）から、サーボ処理周期ｔｓchgの１周期毎に、同時に移動指令値Ｐk*が読み出されて移動平均値演算部２１３に供給され、その平均化処理（平均値計算）により、平均移動指令値Ｐｓk（ｎ）*、即ち
【数１】
2010051091.tif 000003
【００３３】
が求められる。
【００３４】
ここで、伝送の過程でジッタがなく、受信した移動指令値Ｐk*の規定周期ｔchgがサーボ制御装置２の処理周期ｔｓchgの（ｍ＋１）倍とすると、移動指令値格納バッファ２１１にｋ番目に受信された移動指令値Ｐk*が格納されたとき、この移動指令値格納バッファ２１１から最初に読み出される移動指令値Ｐk*が移動平均処理用バッファ２１２の最初のバッファｂ（０）に格納され、しかる後、移動平均処理用バッファ２１２の全てのバッファｂ（０）〜ｂ（ｍ）が読み出されて、移動平均値演算部２１３でその平均移動指令値Ｐｓk（０）*が計算されるが、これが１回目(ｎ＝０)の平均値計算である。そして、移動指令値格納バッファ２１１から次の２番目の移動指令値Ｐk*の読み出しが行われて移動平均処理用バッファ２１２の次のバッファｂ（１）に格納され、次いで、移動平均処理用バッファ２１２の全てのバッファｂ（０）〜ｂ（ｍ）が読み出されて、移動平均値演算部２１３でその平均移動指令値Ｐｓk（１）*が計算されるが、これが２回目（ｎ＝１）の平均値計算である。以下同様にして、移動指令値格納バッファ２１１から次の（ｍ＋１）番目の移動指令値Ｐ*の読み出しが行われて移動平均処理用バッファ２１２の次のバッファｂ（ｍ）に格納され、次いで、移動平均処理用バッファ２１２の全てのバッファｂ（０）〜ｂ（ｍ）が読み出されて、移動平均値演算部２１３でその平均移動指令値Ｐｓk（ｍ＋１）*が計算されるが、これが（ｍ＋１）回目（ｎ＝ｍ＋１）の平均値計算であるが、これに続いて、次の移動指令値Ｐk+1*が受信されて移動指令値格納バッファ２１１に格納され、上記と同様、移動平均処理用バッファ２１２の最初のバッファｂ（０）からのこの移動指令値Ｐk+1*の格納が行われて、その格納が行われる毎に、ｎ＝０，１，２，……として、移動平均値演算部２１３でバッファｂ（０）〜ｂ（ｍ）の移動指令値Ｐk+1*の平均移動指令値Ｐｓ(k+1)（ｎ）*（なお、特定するものでないときには、単に、平均移動指令値Ｐｓkと表現する）が計算される。
【００３５】
なお、夫々の平均値計算において、値（ｍ＋１）未満の余り（剰余）値Ｒ（ｎ−１）が生じた場合には、この剰余値Ｒ（ｎ−１）が剰余バッファ２１５で一旦保持され、上記数１に示すように、次の平均値計算のとき、バッファｂ（０）〜ｂ（ｍ）の移動指令値Ｐk*の加算値にこの剰余値Ｒ（ｎ−１）が剰余バッファ２１５から読み出されて加算されて平均移動指令値Ｐｓk*が計算される。これにより、この剰余値Ｒ（ｎ−１）による影響を低減する（この剰余値Ｒ（ｎ−１）を削除すると、受信される移動指令値Ｐとサーボ制御操作２で処理して得られる移動指令値との間で誤差が生ずる）。
【００３６】
移動平均値演算部２１３で順次得られる平均移動指令値Ｐｓk*は移動指令値格納バッファ２１４に一旦格納され、処理周期ｔｓchgで読み出されてサーボ制御装置２での移動指令値Ｐｓk*としてサーボ制御部２２（図１）に供給される。サーボ制御部２２は、この移動指令値Ｐｓk*に応じて電動機３（図１）のサーボ制御を行う。
【００３７】
図３は移動指令値Ｐ1*が移動平均処理用バッファ２１２の最後のバッファｂ（ｍ）に格納されてから図２に示す状態になるまでの移動平均処理用バッファ２１２の格納状態の変遷を示す図である。
【００３８】
図３（ａ）は移動指令値Ｐ1*が移動指令値格納バッファ２１１に格納され、ｎ＝ｍ＋１回目の移動指令値Ｐ1*が移動指令値格納バッファ２１１から読み出されて移動平均処理用バッファ２１２のｎ＝ｍ＋１番目のバッファｂ（ｍ）に格納された状態を示すものであって、このときの移動平均値演算部２１３で得られる平均移動指令値Ｐｓk*をＰｓ1（ｍ)*とし、余剰値ＲをＲ1(ｍ）とする。
【００３９】
なお、移動指令値Ｐk*が規定の受信周期ｔchgで受信されるときには、この最後のバッファｂ（ｍ）に移動指令値Ｐ(k-1)*が格納される期間（処理周期ｔｓchgの期間）に、次の移動指令値Ｐk*が受信されて移動指令値格納バッファ２１１に格納される。
【００４０】
図３（ｂ）は次に移動指令値Ｐ2*が移動指令値格納バッファ２１１に格納されて、移動指令値格納バッファ２１１から１回目（ｎ＝０）の、即ち、最初の移動指令値Ｐ2*の読み出しが行われ、移動平均処理用バッファ２１２の最初（ｉ＝０）のバッファｂ（０）に格納された状態を示すものであって、このときの移動平均値演算部２１３で得られる平均移動指令値Ｐｓk（ｎ）*をＰｓ2(０)*とし、余剰値ＲをＲ2(０）とする。
【００４１】
図３（ｃ）は移動指令値格納バッファ２１１から２回目（ｎ＝１）の移動指令値Ｐ2*の読み出しが行われて、移動平均処理用バッファ２１２の２番目（ｉ＝１）のバッファｂ（１）に格納された状態を示すものであって、このときの移動平均値演算部２１３で得られる平均移動指令値Ｐｓk（ｎ）*をＰｓ2(１)*とし、余剰値ＲをＲ2(１）とする。
【００４２】
図３（ｄ）は移動指令値格納バッファ２１１から３回目（ｎ＝２）の移動指令値Ｐ2*の読み出しが行われて、移動平均処理用バッファ２１２の３番目（ｉ＝２）のバッファｂ（２）に格納された状態を示すものであって、このときの移動平均値演算部２１３で得られる平均移動指令値Ｐｓk（ｎ）*をＰｓ2(２)*とし、余剰値ＲをＲ2(２）とする。
【００４３】
以下同様にして、移動指令値格納バッファ２１１から移動指令値Ｐ2*が繰り返し読み出され、移動平均処理用バッファ２１２のバッファｂ（３），ｂ（４），……に順次格納され、格納される毎に上記数１による平均移動指令値Ｐｓk*が求められる。ここで、（ｎ＋１）番目のバッファｂ（ｎ）に移動指令値Ｐ2*が格納されたときの平均移動指令値ＰｓkをＰｓ2(ｎ)*とし、余剰値ＲをＲ2(ｎ）とする。
【００４４】
以上の平均移動指令値Ｐｓ1（ｍ)*，Ｐｓ2(０)*，Ｐｓ2(１)*，Ｐｓ2(２)*，Ｐｓ2(３)*，……，Ｐｓ2(ｎ)*は、上記の数１により、次のようにして求められる。
【００４５】
Ｐｓ1(ｍ)*＝｛０・Ｐ2*＋（ｍ＋１）・Ｐ1*＋Ｒ（ｍ−１）｝／（ｍ＋１）
剰余値Ｒ＝Ｒ1（ｍ）
但し、Ｒ（ｍ−１）は前回の平均値計算で得られた剰余値
Ｐｓ2(０)*＝｛１・Ｐ2*＋（ｍ＋１−１）・Ｐ1*＋Ｒ（ｍ）｝／（ｍ＋１）
剰余値Ｒ＝Ｒ2（０）
Ｐｓ2(１)*＝｛２・Ｐ2*＋（ｍ＋１−２）・Ｐ1*＋Ｒ（０）｝／（ｍ＋１）
剰余値Ｒ＝Ｒ2（１）
Ｐｓ2(２)*＝｛３・Ｐ2*＋（ｍ＋１−３）・Ｐ1*＋Ｒ（１）｝／（ｍ＋１）
剰余値Ｒ＝Ｒ2（２）
Ｐｓ2(３)*＝｛４・Ｐ2*＋（ｍ＋１−４）・Ｐ1*＋Ｒ（２）｝／（ｍ＋１）
剰余値Ｒ＝Ｒ2（３）
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ｐｓ2(ｎ)*＝｛（ｎ＋１）・Ｐ2*＋（ｍ＋１−（ｎ＋１））・Ｐ1*
＋Ｒ（ｎ−１）｝／（ｍ＋１）
剰余値Ｒ＝Ｒ2（ｎ）
となる。
【００４６】
ここで、受信周期ｔchg＝２ｍｓｅｃ、サーボ処理周期ｔｓchg＝２００μｓｅｃ（＝０．２ｍｓｅｃ）とし、受信移動指令値Ｐ*がＰ0*＝０，Ｐ1*＝１０００，Ｐ2*＝２０００，Ｐ3*＝３０００と規定の受信周期ｔchgで変化した場合のサーボ処理周期ｔｓchgでの平均移動指令値Ｐｓk（ｎ）*の変化を数値でもって具体的に説明する。
【００４７】
なお、ここでは、ｍ＋１＝ｔchg／ｔｓchg＝１０であるから、ｍ＝９であり、移動平均処理用バッファ２１２では、バッファｂ（０），ｂ（１），ｂ（２），……，ｂ（９）の１０個のバッファが設けられることになる。
【００４８】
また、（ｎ＋１）番目のバッファｂ（ｎ）に移動指令値Ｐk*が格納されて計算される平均移動指令値Ｐｓk（ｎ）*の、その１つ前の（ｎ）番目のバッファｂ（ｎ−１）にこの移動指令値Ｐk*が格納されて計算された平均移動指令値Ｐｓk（ｎ−１）*に対する変化量（以下、平均移動指令値Ｐｓk（ｎ）*の変化量という）ΔＰｓk（ｎ）は、
ΔＰｓk(ｎ）＝Ｐｓk(ｎ）*−Ｐｓk(ｎ−１）*
で表される。
【００４９】
但し、ここでは、受信移動指令値Ｐ0*（ｋ＝０）＝０であるから、平均移動指令値Ｐｓ0（ｎ）*は全て０であり、剰余値Ｒ0（ｎ）も０である。
【００５０】
そこで、受信移動指令値Ｐ1*，Ｐ2*，Ｐ3*が規定の受信周期ｔchgで順次供給されるときの、移動平均値演算部２１３によってサーボ処理周期ｔｓchgで順次得られる平均移動指令値Ｐｓ1（ｎ）*，平均移動指令値Ｐｓ2（ｎ）*，平均移動指令値Ｐｓ3（ｎ）*は次の通りである。
【００５１】
受信移動指令値Ｐ1*を受信：
Ｐｓ1(０)*＝{１・Ｐ1*＋(１０−１)・Ｐ0*＋Ｒ0(９）}/１０＝１００
Ｒ1(０)＝０    ΔＰｓ1(０）＝１００
Ｐｓ1(１)*＝{２・Ｐ1*＋(１０−２)・Ｐ0*＋Ｒ1(０）}/１０＝２００
Ｒ1(１)＝０    ΔＰｓ1(１）＝１００
Ｐｓ1(２)*＝{３・Ｐ1*＋(１０−３)・Ｐ0*＋Ｒ1(１）}/１０＝３００
Ｒ1(２)＝０    ΔＰｓ1(２）＝１００
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ｐｓ1(８)*＝{９・Ｐ1*＋(１０−９)・Ｐ0*＋Ｒ1(７）}/１０＝９００
Ｒ1(８)＝０    ΔＰｓ1(８）＝１００
Ｐｓ1(９)*＝{１０・Ｐ1*＋(１０−１０)・Ｐ0*＋Ｒ1(８）}/１０
＝１０００
Ｒ1(９)＝０    ΔＰｓ1(９）＝１００
受信移動指令値Ｐ2*を受信：
Ｐｓ2(０)*＝{１・Ｐ2*＋(１０−１)・Ｐ1*＋Ｒ1(９）}/１０＝１１００
Ｒ2(０)＝０    ΔＰｓ2(０）＝１００
Ｐｓ2(１)*＝{２・Ｐ2*＋(１０−２)・Ｐ1*＋Ｒ2(０）}/１０＝１２００
Ｒ2(１)＝０    ΔＰｓ2(１）＝１００
Ｐｓ2(２)*＝{３・Ｐ2*＋(１０−３)・Ｐ1*＋Ｒ2(１）}/１０＝１３００
Ｒ2(２)＝０    ΔＰｓ2(２）＝１００
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ｐｓ2(８)*＝{９・Ｐ2*＋(１０−９)・Ｐ1*＋Ｒ2(７）}/１０＝１９００
Ｒ2(８)＝０    ΔＰｓ2(８）＝１００
Ｐｓ2(９)*＝{１０・Ｐ2*＋(１０−１０)・Ｐ1*＋Ｒ2(８）}/１０
＝２０００
Ｒ2(９)＝０    ΔＰｓ2(９）＝１００
受信移動指令値Ｐ3*を受信：
Ｐｓ3(０)*＝{１・Ｐ3*＋(１０−１)・Ｐ2*＋Ｒ2(９）}/１０＝２１００
Ｒ3(０)＝０    ΔＰｓ3(０）＝１００
Ｐｓ3(１)*＝{２・Ｐ3*＋(１０−２)・Ｐ2*＋Ｒ3(０）}/１０＝２２００
Ｒ3(１)＝０    ΔＰｓ3(１）＝１００
Ｐｓ3(２)*＝{３・Ｐ3*＋(１０−３)・Ｐ2*＋Ｒ3(１）}/１０＝２３００
Ｒ3(２)＝０    ΔＰｓ3(２）＝１００
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ｐｓ3(８)*＝{９・Ｐ3*＋(１０−９)・Ｐ2*＋Ｒ3(７）}/１０＝２９００
Ｒ3(８)＝０    ΔＰｓ3(８）＝１００
Ｐｓ3(９)*＝{１０・Ｐ3*＋(１０−１０)・Ｐ2*＋Ｒ3(８）}/１０
＝３０００
Ｒ3(９)＝０    ΔＰｓ3(９）＝１００。
【００５２】
図４は以上の平均移動指令値Ｐｓ1（０)*〜Ｐｓ3（９)*の時間的な変化を示すグラフ図であって、規定の受信周期ｔchgで受信される受信移動指令値Ｐk*が線形的に増加するのに対し、図示するように、平均移動指令値Ｐｓk*は、サーボ処理周期ｔｓchg毎に、同じ変化量ΔＰｓkずつ、即ち、直線状に増大する。これにより、電動機３（図１）のスムーズなサーボ制御が行われることになる。
【００５３】
一方、受信移動指令値Ｐk*がジッタなどの影響により、その受信周期が規定の受信周期ｔchgからずれる場合がある。図５は、このジッタなどの影響により、受信周期が受信周期ｔchgよりもサーボ処理周期ｔｓchg程度短くなったときの図２における移動平均処理用バッファ２１２での受信移動指令値Ｐk*の格納状況の変化を示す図である。なお、ここでも、上記と同様、ｍ＋１＝１０（ｎ＝０，１，２，……，９）とする。
【００５４】
図５（ａ）は移動指令値Ｐ2*が移動指令値格納バッファ２１１に格納され、移動指令値格納バッファ２１１からの移動指令値Ｐ2*の９回目（ｎ＝８）の読み出しが行われて、移動平均処理用バッファ２１２の９番目のバッファｂ（８）に格納された状態を示すものである。
【００５５】
ここで、ジッタにより、受信移動指令値Ｐk*の受信周期が規定の受信周期ｔchgよりもサーボ処理周期ｔｓchg程度短くなっているものとすると、図５（ａ）に示す状態のときに、即ち、移動指令値Ｐ2*がこのバッファｂ（８）に格納されて移動平均値演算部２１３で平均移動指令値Ｐｓ1（８）*が求められる期間に、次の移動指令値Ｐ3*が受信されて移動指令値格納バッファ２１１に格納されることになり、ここで、バッファ（ｉ）の指定にリセットカウンタが使用されている場合には、次に、移動平均処理用バッファ２１２の最初のバッファｂ（０）が指定されるから、移動指令値格納バッファ２１１から最初に読み出される移動指令値Ｐ3*は、図５（ｂ）に示すように、この最初のバッファｂ（０）に格納される。そして、それ以降、ｂ（１），ｂ（２），ｂ（３），……の順に移動指令値Ｐ3*が格納されていき、図５（ｃ）に示すように、バッファｂ（８）に移動指令値Ｐ3*が格納され、次いで、図５（ｄ）に示すように、バッファｂ（９）に移動指令値Ｐ3*が格納される。そして、このバッファｂ（９）に移動指令値Ｐ3*が格納されるときの期間に、次の移動指令値Ｐ4*が受信され、最初のバッファｂ（０）からこの移動指令値Ｐ4*が順に格納されていく。
【００５６】
これに対し、バッファｂ（ｉ）の指定にリングカウンタが使用されている場合には、図５（ａ）に示す状態で次の移動指令値Ｐ3*が受信されるから、このリングカウンタは次にバッファｂ（９）を指定することになり、このため、このバッファｂ（９）にこの移動指令値Ｐ3*が最初に格納される図５（ｂ’）に示す状態となる。これ以降では、移動指令値格納バッファ２１１から順に読み出される移動指令値Ｐ3*は、最初のバッファｂ（０）から順に格納される。
【００５７】
そこで、バッファｂ（ｉ）を指定するカウンタがリセットカウンタである場合の、移動指令値Ｐ3*が受信される前後の移動平均値演算部２１３で得られるサーボ処理周期ｔｓchgの平均移動指令値Ｐｓ2（７）*〜Ｐｓ3（９）*を示すと、次のようになる。但し、図３に示した先の例と同様、Ｐ0*＝０，Ｐ1*＝１０００，Ｐ2*＝２０００，Ｐ3*＝３０００とし、平均移動指令値Ｐｓ2（６）*までは図３に示した例と同様である。
【００５８】
Ｐｓ2(７)*＝{８・Ｐ2*＋(１０−８)・Ｐ1*＋Ｒ1(６）}/１０＝１８００
Ｒ2(７)＝０    ΔＰｓ2(７）＝１００
Ｐｓ2(８)*＝{９・Ｐ2*＋(１０−９)・Ｐ1*＋Ｒ2(７）}/１０＝１９００
Ｒ2(８)＝０    ΔＰｓ2(８）＝１００
受信移動指令値Ｐ3*を受信：
Ｐｓ3(０)*＝{１・Ｐ3*＋(１０−２)・Ｐ2*＋１・Ｐ1*＋Ｒ2(８）}/１０
＝２０００
Ｒ3(０)＝０    ΔＰｓ3(０）＝１００
Ｐｓ3(１)*＝{２・Ｐ3*＋(１０−３)・Ｐ2*＋１・Ｐ1*＋Ｒ3(０）}/１０
＝２１００
Ｒ3(０)＝０    ΔＰｓ3(１）＝１００
Ｐｓ3(２)*＝{３・Ｐ3*＋(１０−４)・Ｐ2*＋１・Ｐ1*＋Ｒ3(１）}/１０
＝２２００
Ｒ3(２)＝０    ΔＰｓ3(２）＝１００
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ｐｓ3(７)*＝{８・Ｐ3*＋(１０−９)・Ｐ2*＋１・Ｐ1*＋Ｒ2(６）}/１０
＝２７００
Ｒ3(７)＝０    ΔＰｓ3(７）＝１００
Ｐｓ3(８)*＝{９・Ｐ3*＋(１０−１０)・Ｐ2*＋１・Ｐ1*＋Ｒ3(７）}/１０
＝２８００
Ｒ3(８)＝０    ΔＰｓ3(８）＝１００
Ｐｓ3(９)*＝{１０・Ｐ3*＋(１０−１０)・Ｐ2*＋Ｒ3(１）}/１０
＝３０００
Ｒ3(９)＝０    ΔＰｓ3(９）＝２００。
【００５９】
ここで、次の移動指令値Ｐ4*が受信されることになるが、Ｐ4*＝４０００とすると、この移動指令値Ｐ4*が移動平均処理用バッファ２１２のバッファｂ（０）に格納されたときの平均移動指令値Ｐｓ4(０)*は、
Ｐｓ4(０)*＝{１・Ｐ4*＋(１０−１)・Ｐ3*＋Ｒ3(９）}/１０＝３１００
Ｒ3(２)＝０    ΔＰｓ3(２）＝１００
となる。
【００６０】
このように、規定の受信周期ｔchgよりも１サーボ処理周期ｔｓchg程度短い受信周期で移動指令値Ｐ3*が受信されると、これまで平均移動指令値Ｐｓ2（ｎ）*の変化量ΔＰｓ2（ｎ）は一定であったが（上記の例では、ΔＰｓ2（ｎ）＝１００）、この短い周期で移動指令値Ｐ3*が受信された時点での平均移動指令値Ｐｓ2(８)*と平均移動指令値Ｐｓ3(９)*との間で、ΔＰｓ3（ｎ）＝２００という、平均移動指令値Ｐｓ3（９）*の変化量ΔＰｓ3（９）に大きな変動が現われることになる。
【００６１】
一方、バッファｂ（ｉ）を指定するカウンタがリングカウンタである場合について示すと、次のようになる。
【００６２】
Ｐｓ2(７)*＝{８・Ｐ2*＋(１０−８)・Ｐ1*＋Ｒ1(６）}/１０＝１８００
Ｒ2(７)＝０    ΔＰｓ2(７）＝１００
Ｐｓ2(８)*＝{９・Ｐ2*＋(１０−９)・Ｐ1*＋Ｒ2(７）}/１０＝１９００
Ｒ2(８)＝０    ΔＰｓ2(８）＝１００
受信移動指令値Ｐ3*を受信：
Ｐｓ3(０)*＝{１・Ｐ3*＋(１０−１)・Ｐ2*＋Ｒ2(８）}/１０＝２１００
Ｒ3(０)＝０    ΔＰｓ3(０）＝２００
Ｐｓ3(１)*＝{２・Ｐ3*＋(１０−２)・Ｐ2*＋Ｒ3(０）}/１０＝２２００
Ｒ3(０)＝０    ΔＰｓ3(１）＝１００
Ｐｓ3(２)*＝{３・Ｐ3*＋(１０−３)・Ｐ2*＋Ｒ3(１）}/１０＝２３００
Ｒ3(２)＝０    ΔＰｓ3(２）＝１００
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ｐｓ3(７)*＝{８・Ｐ3*＋(１０−８)・Ｐ2*＋Ｒ2(６）}/１０＝２８００
Ｒ3(７)＝０    ΔＰｓ3(７）＝１００
Ｐｓ3(８)*＝{９・Ｐ3*＋(１０−９)・Ｐ2*＋Ｒ3(７）}/１０＝２９００
Ｒ3(８)＝０    ΔＰｓ3(８）＝１００
Ｐｓ3(９)*＝{１０・Ｐ3*＋(１０−１０)・Ｐ2*＋Ｒ3(１)}/１０＝３０００
Ｒ3(９)＝０    ΔＰｓ3(９）＝１００。
【００６３】
このように、受信周期ｔchgよりも１サーボ処理周期ｔｓchg程度短い受信周期で移動指令値Ｐ3*が受信されると、バッファｂ（ｉ）を指定するカウンタがリングカウンタである場合には、移動指令値Ｐ3*が受信された後の最初の平均移動指令値Ｐｓ2(０)*で、ΔＰｓk（ｎ）＝２００という、変化量ΔＰｓk（ｎ）に大きな変動が現われることになる。
【００６４】
図６はリングカウンタを使用した場合の移動指令値Ｐ2*を受信してから移動指令値Ｐ4*を受信したときまでの期間での平均移動指令値Ｐｓk（ｎ）*の変化を示す図であって、受信周期が規定の受信周期ｔchgよりも短い移動指令値Ｐ3*を受信した時点での平均移動指令値Ｐｓ3（０）*（矢印Ａで示す）に局所的な変動が現われる。
【００６５】
なお、リセットカウンタが使用された場合には、移動指令値Ｐ3*を受信した後での平均移動指令値Ｐｓ3（９）*に局所的な変動が現われる。
【００６６】
図７は移動指令値Ｐkの受信周期が規定の受信周期ｔchgが、上記のように、短くなった場合に生ずる平均移動指令値Ｐｓk（ｎ）*の変化量ΔＰｓk（ｎ）の局所的な変動を抑制することができるようにした図１における指令値補間演算部２１の第１の具体例を示すブロック構成図であって、２１６は不足バッファ補正処理部であり、図２に対応する部分には同一符号をつけて重複する説明を省略する。
【００６７】
同図において、移動平均処理用バッファ２１２は、バッファｂ（ｉ）を指定するカウンタとして、リングカウンタを使用した場合の図５（ｂ’）と同じ状態を示している。この第１の具体例では、この移動平均処理用バッファ２１２でバッファｂ（０）から順に移動指令値Ｐ2*が格納されていくとき、最後のバッファｂ（ｍ）でこの移動指令値Ｐ2*に代わって次の移動指令値Ｐ3*が格納されるものであり、しかる後、バッファｂ（０）から順に移動指令値Ｐ3*が格納されていくが、このような所定回数α（但し、αはｍ＋１以下の正整数）の各格納毎に、最後のバッファｂ（ｍ）に格納されて移動指令値Ｐ1*を更新した移動指令値Ｐ3*を補正するものであり、かかる補正を不足バッファ補正処理部２１６で補正する。
【００６８】
バッファｂ（ｍ）に格納されていた移動指令値Ｐ(k-1)*（ここでは、移動指令値Ｐ1*）は、新たに移動指令値Ｐ(k+1)*（ここでは、移動指令値Ｐ3*）が受信されると、本来期待する移動指令値Ｐk*（ここでは、移動指令値Ｐ2*）に更新されない。不足バッファ補正処理部２１６は、この移動指令値Ｐ(k-1)*をα回にわたって補正処理することにより、本来格納されるべき移動指令値Ｐk*に補正するものである。
【００６９】
即ち、バッファｂ（０）に新たな移動指令値Ｐ(k+1)*が格納されると、バッファｂ（ｍ）での移動指令値Ｐ(k-1)*を移動指令値Ｐk*に近づくように補正し、次に、バッファｂ（１）に新たな移動指令値Ｐ(k+1)*が格納されると、バッファｂ（ｍ）での補正された移動指令値を移動指令値Ｐk*に近づくようにさらに補正し、……、バッファｂ（α−１）に新たな移動指令値Ｐ(k+1)*が格納されると、バッファｂ（ｍ）での補正された移動指令値を、移動指令値Ｐk*に等しくなるように、さらに補正するものである。移動平均値演算部２１３での平均値計算では、バッファｂ（ｍ）の移動指令値として、この補正された移動指令値が用いられる。
【００７０】
図８は図７における不足バッファ補正処理部２１６の補正処理の一具体例を示す図である。
【００７１】
同図において、不足バッファ補正処理部２１６では、最後のバッファｂ（ｍ）でのｊ回目（但し、ｊ＝１，２，……，α）の補正された移動指令値を、補正移動指令値ｂ(k+1)(j)(ｍ）とすると、リセットカウンタが使用される場合、
【数２】
2010051091.tif 000004
【００７２】
で表される。図５に示す状態では、Ｐ(k-1)*＝Ｐ1*，Ｐk*＝Ｐ2*であるから、
ｂ3(j)(ｍ）＝Ｐ1*＋（Ｐ2*−Ｐ1*)・ｊ/α
となり、ｊ＝αのとき、
ｂ3(α)(ｍ）＝Ｐ1*＋（Ｐ2*−Ｐ1*）＝Ｐ2*
である。従って、かかる補正は、最後のバッファｂ（ｍ）格納されていた移動指令値Ｐ1*が移動指令値Ｐ2*になるまで、（Ｐ2*−Ｐ1*)/αずつ補正されていくことになる。（α＋１）回以降の平均値計算では、バッファｂ（ｍ）に関しては、これに格納されているこの移動指令値Ｐ2*が用いられる。即ち、バッファｂ（ｍ）では、更新されなかった移動指令値Ｐ1*が順次移動指令値Ｐ2*へと更新されていくことになる。
【００７３】
このようにして、バッファｂ（ｍ）での移動指令値が更新されることにより、図６において、移動指令値Ｐ3*を受信した直後の平均移動指令値Ｐｓ3（０）*で生じた矢印Ａで示すような局所的な変動が抑圧されることになる。
【００７４】
図９は図７に示す指令値補間演算部２１の動作を示すフロー図である。ここでは、リセットカウンタが使用された場合を例に説明する。リングカウンタが使用される場合も、周期ｔchgが短い新たな移動指令値Ｐ(k+1)*が最初に格納されるバッファが異なるだけであって、動作は同様である。
【００７５】
同図において、移動平均処理用バッファ２１２でのバッファｂ（０）〜ｂ（ｍ）がカウンタによって順次指定されて移動指令値Ｐk*が格納されており、移動指令値Ｐk*の格納のためにバッファｂ（ｍ−１）が指定された期間内に次の移動指令値Ｐ(k+1)が受信されないときには（ステップ１００の“Ｎｏ”）、移動平均処理用バッファ２１２でのバッファｂ（０）〜ｂ（ｍ）から移動指令値Ｐ*が読み出され（ステップ１０６）、これをもとに移動平均値演算部２１３で平均移動指令値Ｐｓk*が生成される（ステップ１０７）。このとき、ｊ＝αに設定されており（ステップ１０８の“Ｙｅｓ”）、ステップ１００に戻る。移動指令値Ｐk*の受信周期が、上記のように、受信周期ｔchgよりも短くならない限り、このステップ１００，１０６〜１０８の動作が繰り返され、これによって、サーボ処理周期ｔｓchgで平均移動指令値Ｐｓk*が順次生成される。
【００７６】
ここで、移動指令値Ｐk*の受信周期が、上記のように、受信周期ｔchgよりも短くなり、移動平均処理用バッファ２１２でのバッファｂ（ｍ−１）の指定期間内に次の移動指令値Ｐ(k+1)*が受信されると（ステップ１００の“Ｙｅｓ”）、ｊ＝１が設定され（ステップ１０１）、移動平均処理用バッファ２１２でのバッファｂ（ｍ−１）から移動指令値Ｐk*が、バッファｂ（ｍ）から移動指令値Ｐ(k-1)*夫々読み出され、不足バッファ補正処理部２１６に供給される（ステップ１０２）。不足バッファ補正処理部２１６では、これら移動指令値Ｐk*，Ｐ(k-1)*が保存されるとともに（ステップ１０３）、これら移動指令値Ｐk*，Ｐ(k-1)*を用いて上記数２の演算処理が行われ、このバッファｂ（ｍ）での移動指令値Ｐ(k-1)*に対する補正移動指令値ｂ(k+1)(1)(ｍ）が生成され（ステップ１０４）、これがバッファｂ（ｍ）に格納される（ステップ１０５）。
【００７７】
しかる後、移動平均値演算部２１３でｊ＝１回目のバッファｂ（０）〜ｂ（ｍ）からの移動指令値Ｐ*の読み出しが行われ（ステップ１０６）、これをもとに平均移動指令値Ｐｓ(k+1)*が生成される（ステップ１０７）。
【００７８】
そして、ｊ＜αであるので（ステップ１０８の“Ｎｏ”）、ｊ＝２とし（ステップ１０９）、ステッフ１０４に戻って、不足バッファ補正処理部２１６で、保存されている移動指令値Ｐ(k+1)*，Ｐ(k-1)*をもとに、次の補正移動指令値ｂ(k+1)(2)(ｍ）が生成され（ステップ１０４）、以下、ステップ１０５以下の動作が繰り返される。
【００７９】
その後、ｊ＞αとなると（ステップの“Ｙｅｓ”）、ステップ１００に戻り、バッファｂ（ｍ）での移動指令値Ｐ*がｊ＝αのときの補正移動指令値ｂ(k+1)(α)(ｍ）である状態で、ステップ１０６〜１０８，１００の動作が繰り返されて順次平均移動指令値Ｐｓ(k+1)*が生成される。
【００８０】
ここで、バッファｂ（ｉ）を指定するカウンタとして、リセットカウンタを用いた場合での、ｍ＝９，α＝４としたときの補正移動指令値ｂ(k+1)(j)(ｍ），平均移動指令値Ｐｓ(k+1)*の数値例を、移動指令値Ｐ2*をバッファｂ（７）に格納するタイミングから移動指令値Ｐ3*をバッファｂ（９）に格納するタイミングまでの平均移動指令値Ｐｓ*とともに、示すと、次のようになる。但し、上記のように、Ｐ2*＝２０００，Ｐ3*＝３０００とする。
【００８１】
Ｐｓ2(７)*＝{８・Ｐ2*＋(１０−８)・Ｐ1*＋Ｒ1(６）}/１０＝１８００
Ｒ2(７)＝０    ΔＰｓ2(７）＝１００
Ｐｓ2(８)*＝{９・Ｐ2*＋(１０−９)・Ｐ1*＋Ｒ2(７）}/１０＝１９００
Ｒ2(８)＝０    ΔＰｓ2(８）＝１００
受信移動指令値Ｐ3*を受信：
Ｐｓ3(０)*＝{１・Ｐ3*＋(１０−２)・Ｐ2*＋ｂ3(1)(９）
＋Ｒ2(８）}/１０＝２０２５
但し、ｂ3(1)(９）＝Ｐ1*＋（Ｐ2*−Ｐ1*)・１/４＝１２５０
Ｒ3(０)＝０    ΔＰｓ3(０）＝１２５
Ｐｓ3(１)*＝{２・Ｐ3*＋(１０−３)・Ｐ2*＋ｂ3(2)(９）
＋Ｒ3(０）}/１０＝２１５０
但し、ｂ3(1)(９）＝Ｐ1*＋（Ｐ2*−Ｐ1*)・２/４＝１５００
Ｒ3(０)＝０    ΔＰｓ3(１）＝１２５
Ｐｓ3(２)*＝{３・Ｐ3*＋(１０−４)・Ｐ2*＋ｂ3(3)(９）
＋Ｒ3(１）}/１０＝２２７５
但し、ｂ3(1)(９）＝Ｐ1*＋（Ｐ2*−Ｐ1*)・３/４＝１７５０
Ｒ3(２)＝０    ΔＰｓ3(２）＝１２５
Ｐｓ3(３)*＝{４・Ｐ3*＋(１０−５)・Ｐ2*＋ｂ3(4)(９）
＋Ｒ3(２）}/１０＝２４００
但し、ｂ3(4)(９）＝Ｐ1*＋（Ｐ2*−Ｐ1*)・４/４＝２０００
Ｒ3(３)＝０    ΔＰｓ3(３）＝１２５
Ｐｓ3(４)*＝{５・Ｐ3*＋(１０−６)・Ｐ2*＋ｂ3(4)(９）
＋Ｒ3(２）}/１０＝２５００
Ｒ3(３)＝０    ΔＰｓ3(３）＝１００
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ｐｓ3(７)*＝{８・Ｐ3*＋(１０−９)・Ｐ2*＋ｂ3(4)(９）
＋Ｒ3(６）}/１０＝２８００
Ｒ3(７)＝０    ΔＰｓ3(７）＝１００
Ｐｓ3(８)*＝{９・Ｐ3*＋(１０−１０)・Ｐ2*＋ｂ3(4)(９）
＋Ｒ3(７）}/１０＝２９００
Ｒ3(８)＝０    ΔＰｓ3(８）＝１００
Ｐｓ3(９)*＝{１０・Ｐ3*＋(１０−１０)・Ｐ2*＋Ｒ3(８）}/１０
＝３０００
Ｒ3(９)＝０    ΔＰｓ3(９）＝１００。
【００８２】
このように、平均移動指令値Ｐｓ2（ｉ），Ｐｓ3（ｉ＋１）が得られが、これを図６で示したバッファｂ（９）に格納されている移動指令値Ｐ1*を補正しない場合と比較すると、移動指令値Ｐ1*の補正が行われた平均移動指令値Ｐｓ3（０），Ｐｓ3（１），Ｐｓ3（２），Ｐｓ3（３）で変化量ΔＰｓk（ｎ）が値「２５」だけ増加しているのに対し、平均移動指令値Ｐｓ3（９）では、変化量ΔＰｓk（ｎ）が値「１００」だけ減少して、値「１００」となっており、変化量ΔＰｓk（ｎ）の局所的な増加の変動が発生していない。このことは、バッファｂ（９）に格納されている移動指令値Ｐ1*を補正しなければ発生するこの局所的な増加の変動が、移動指令値Ｐ1*の補正が行われた平均移動指令値Ｐｓ3（０），Ｐｓ3（１），Ｐｓ3（２），Ｐｓ3（３）に分散されたことによるものである。
【００８３】
以上のようにして、この具体例では、ジッタなどによって受信される移動指令値Ｐk*の周期ｔchgが短くなっても、これによって生ずる平均移動指令値Ｐｓk*の変化量ΔＰｓk（ｎ）の局所的な変動を他の平均移動指令値Ｐｓk*に分散することができ、これにより、この平均移動指令値Ｐｓk*の変化量ΔＰｓk（ｎ）の局所的な変動を抑制することができるものである。
【００８４】
なお、上記の例では、α＝４としたが、これに限るものではなく、αを大きくすることにより、かかる局所的な増加の変動量をより多くの平均移動指令値Ｐｓk*への分散が可能となり、より均一な変化量変化量ΔＰｓk（ｎ）で平均移動指令値Ｐｓk*が変化することになる。
【００８５】
ところで、以上は、移動指令値Ｐk*の受信周期が規定の受信周期ｔchgよりも短くなった場合であったが、逆に長くなる場合もある。図１０は、このジッタなどの影響により、移動指令値Ｐk*の受信周期が規定の受信周期ｔchgよりも１サーボ処理周期ｔｓchg程度長くなったときの図２における移動平均処理用バッファ２１２での受信移動指令値Ｐk*の格納状況の変化を示す図である。なお、ここでも、上記と同様、ｍ＋１＝１０（ｉ＝０，１，２，……，９）とする。
【００８６】
図１０（ａ）は移動指令値Ｐ2*が移動指令値格納バッファ２１１に格納されて、移動指令値格納バッファ２１１からｍ（＝９）回目の移動指令値Ｐ2*の読み出しがあって、移動平均処理用バッファ２１２の９番目のバッファｂ（８）に格納された状態を示すものである。
【００８７】
また、図１０（ｂ）は次の、即ち、移動指令値格納バッファ２１１からｍ＋１（＝１０）回目の移動指令値Ｐ2*の読み出しがあって、移動平均処理用バッファ２１２の１０番目、即ち、最後のバッファｂ（９）に格納された状態を示すものである。
【００８８】
ここで、ジッタにより、受信移動指令値Ｐk*の受信周期が規定の受信周期ｔchgよりも１サーボ処理周期ｔｓchg程度長くなっており、移動平均処理用バッファ２１２のバッファｂ（０）〜ｂ（ｍ）を移動指令値Ｐk*を格納するために指定するカウンタがリングカウンタである場合には、次のサーボ処理周期ｔｓchgでは、最初のバッファｂ（０）が指定されるから、移動平均処理用バッファ２１２の状態は、図１０（ｃ）に示すように、図１０（ｂ）に示す状態と同じ状態が維持される（なお、このときを、特に、ｎ＝１１としている）。そして、このときに、次の移動指令値Ｐ3*が受信されて移動指令値格納バッファ２１１に格納されるが、これにより、移動平均処理用バッファ２１２のバッファｂ（ｉ）を指定する上記のカウンタがバッファｂ（１）からの指定が開始されるから、このとき、移動平均処理用バッファ２１２の状態は、図５（ｄ）に示すように、移動指令値格納バッファ２１１から最初に読み出された移動指令値Ｐ3*がバッファｂ（１）に格納される。そして、それ以降、ｂ（２），ｂ（３），……の順に移動指令値Ｐ3*が格納されていく。
【００８９】
なお、この具体例は、移動平均処理用バッファ２１２のバッファｂ（ｉ）を指定するカウンタとして、０〜ｍのカウントを繰り返すリングカウンタとするものであるが、仮りに、移動指定値Ｐk*が受信される毎にリセットされるリセットカウンタが使用される場合には、バッファｂ（０）から新たな移動指令値Ｐ3*が格納されることになるから、図１０（ｃ）の状態から図１０（ｄ’）に示す状態に移行することになる。
【００９０】
そこで、リングカウンタの指定により、移動平均処理用バッファ２１２の状態が図１０（ａ），（ｂ），（ｃ），（ｄ）に示すように移行する場合の移動指令値Ｐ3*が受信される前後の移動平均値演算部２１３で得られるサーボ処理周期ｔｓchgの平均移動指令値Ｐｓ2（８）*〜Ｐｓ3（９）*を示すと、次のようになる。但し、図３に示した先の例と同様、Ｐ0*＝０，Ｐ1*＝１０００，Ｐ2*＝２０００，Ｐ3*＝３０００とし、平均移動指令値Ｐｓ2（７）*までは図３に示した例と同様であって、図１０（ａ）に示す状態から示す。
【００９１】
Ｐｓ2(８)*＝{９・Ｐ2*＋(１０−９)・Ｐ1*＋Ｒ2(７）}/１０   ＝１９００
Ｒ2(８)＝０    ΔＰｓ2(８）＝１００
Ｐｓ2(９)*＝{１０・Ｐ2*＋(１０−１０)・Ｐ1*＋Ｒ1(６)}/１０＝２０００
Ｒ2(９)＝０    ΔＰｓ2(９）＝１００
Ｐｓ2(１０)*＝Ｐｓ2(９)*＝２０００
Ｒ2(１０)＝０  ΔＰｓ2(１０）＝０
受信移動指令値Ｐ3*を受信：
Ｐｓ3(０)*＝{１・Ｐ3*＋(１０−１)・Ｐ2*＋Ｒ2(８）}/１０＝２１００
Ｒ3(０)＝０    ΔＰｓ3(０）＝１００
Ｐｓ3(１)*＝{２・Ｐ3*＋(１０−２)・Ｐ2*＋Ｒ3(０）}/１０＝２２００
Ｒ3(１)＝０    ΔＰｓ3(１）＝１００
Ｐｓ3(２)*＝{３・Ｐ3*＋(１０−３)・Ｐ2*＋Ｒ3(１）}/１０＝２３００
Ｒ3(２)＝０    ΔＰｓ3(２）＝１００
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ｐｓ3(８)*＝{９・Ｐ3*＋(１０−９)・Ｐ2*＋Ｒ3(７）}/１０ ＝２９００
Ｒ3(８)＝０    ΔＰｓ3(８）＝１００
Ｐｓ3(９)*＝{１０・Ｐ3*＋(１０−１０)・Ｐ2*＋Ｒ3(１)}/１０＝３０００
Ｒ3(９)＝０    ΔＰｓ3(９）＝１００。
【００９２】
なお、移動平均処理用バッファ２１２のバッファｂ（０）〜ｂ（ｍ）を指定するカウンタがリセットカウンタである場合も、図１０（ｃ）に示す状態が存在するから、上記の移動指令値Ｐk*の受信によってリングカウンタを用いた場合と同様である。
【００９３】
このように、規定の受信周期ｔchgよりも１サーボ処理周期ｔｓchg程度長くなった受信周期で移動指令値Ｐ3*が受信されると、これまで平均移動指令値Ｐｓk（ｎ）*の変化量ΔＰｓk（ｎ）は一定であったが（上記の例では、ΔＰｓk（ｎ）＝１００）、この移動指令値Ｐ3*の受信直後で、平均移動指令値Ｐｓk（ｎ）*の変化量ΔＰｓk（ｎ）に、これが変化しないという局所的な変動が現われることになる。
【００９４】
図１１は移動指令値Ｐ2*を受信してから移動指令値Ｐ4*を受信したときまでの期間での平均移動指令値Ｐｓk（ｎ）*の変化を示す図であって、移動指令値Ｐ3*を受信する直前に得られる平均移動指令値Ｐｓ3（９）*に（矢印Ｂ）、変化しないという局所的変動が現れる。
【００９５】
図１２は移動指令値Ｐkの受信周期が規定の受信周期ｔchgよりも長くなった場合に生ずる平均移動指令値Ｐｓk（ｎ）*の変化量ΔＰｓk（ｎ）の局所的な変動を抑制することができるようにした図１における指令値補間演算部２１の第２の具体例を示すブロック構成図であって、２１７は超過バッファ補正処理部であり、図２に対応する部分には同一符号をつけて重複する説明を省略する。
【００９６】
同図において、移動平均処理用バッファ２１２は、図１０（ｃ）と同じ状態にあることを示している。この第２の具体例では、この移動平均処理用バッファ２１２でバッファｂ（０）から順に移動指令値Ｐ2*が格納されていくとき、最後のバッファｂ（ｍ）で移動指令値Ｐ2*の格納がなされても、次の移動指令値Ｐ3*は受信されず、１サーボ処理周期ｔｓchgだけ遅れて受信されるものであり、受信されるべき期間（即ち、バッファｂ（９）に移動指令値Ｐ2*の格納が行われた図１０（ｂ）に示す状態の期間）に次の移動指令値Ｐ3*が受信されないことが検出されると、超過バッファ補正処理部２１７が図１０（ｃ）に示す状態にあるバッファｂ（０）での移動指令値Ｐ2*の補正を行い、さらに、これ以降、バッファｂ（１），ｂ（２），……と移動指令値Ｐ3*が格納されていくものである。
【００９７】
図１３は図１２における超過バッファ補正処理部２１７の一具体例を示すブロック構成図であって、２１８〜２２０は移動指令値格納バッファ、２２１は超過バッファ補正演算部、２２２，２２３は前回値保存処理部である。なお、移動平均処理用バッファ２１２のバッファｂ（０）〜ｂ（ｍ）を指定するカウンタとしては、ここでは、リングカウンタが使用されるものとする。
【００９８】
同図において、移動指令値格納バッファ２１８〜２２０は夫々受信した移動指令値Ｐk*を格納するものであって、移動指令値格納バッファ２１８には、最新の受信移動指令値Ｐ(k+1)*が、移動指令値格納バッファ２１９には、１つ前に受信した移動指令値Ｐk*が、移動指令値格納バッファ２２０には、２つ前に受信した移動指令値Ｐ(k-1)*が夫々格納される。ここで、移動指令値格納バッファ２１８に移動指令値Ｐk*が、移動指令値格納バッファ２１９に移動指令値Ｐ(k-1)*が、移動指令値格納バッファ２２０に移動指令値Ｐ(k-2)*が夫々格納された状態で、次の移動指令値Ｐ(k+1)*が受信されると、移動指令値格納バッファ２１９に格納されている移動指令値Ｐ(k-1)*が読み出されて、前回値保存処理部２２３を介して移動指令値格納バッファ２２０に格納され、移動指令値格納バッファ２１８に格納されている移動指令値Ｐk*が読み出されて、前回値保存処理部２２２を介して移動指令値格納バッファ２１９に格納される。そして、新たに受信された受信移動指令値Ｐ(k+1)*は移動指令値格納バッファ２１８に格納される。
【００９９】
超過バッファ補正演算部２２１は、新たに移動指令値Ｐ(k+1)*が受信されるべき期間にこの移動指令値Ｐ(k+1)*が受信されないとき、即ち、移動平均処理用バッファ２１２の状態が図１０（ｂ）に示す状態で移動指令値Ｐ(k+1)*が受信されないときに動作し、このとき移動指令値格納バッファ２１８，２１９，２２０に格納されている移動指令値Ｐ(k)*，Ｐ(k-1)*，Ｐ(k-2)*を用いて移動指令値格納バッファ２２０でのバッファｂ（０）に格納されている移動指令値Ｐk*の補正値（補正移動指令値）ｂ(k+1)(0)(０）を生成する（ここで、「(k+1)」は格納予定の移動指令値Ｐ(k+1)*を予測するものであることを表し、「(0)」はバッファｂ（０）であることを表し、「（０）」は最初の補正移動指令値であることを表している）。ここで、補正移動指令値ｂ(k+1)(0)(０）は、移動指令値格納バッファ２１８，２１９，２２０に格納されている移動指令値Ｐ(k)*，Ｐ(k-1)*，Ｐ(k-2)*から、現在バッファｂ（０）に格納されるべき移動指令値Ｐ(k+1)*を予測した値である。
【０１００】
図１３はこのときの状態（即ち、図１０（ｃ）でのバッファｂ（０）の移動指令値を補正する状態）を示すものであって、移動指令値格納バッファ２１８に受信移動指令値Ｐ2*が、移動指令値格納バッファ２１９に移動指令値Ｐ1*が、移動指令値格納バッファ２２０に移動指令値Ｐ0*が夫々格納されている。超過バッファ補正演算部２２１は、これら移動指令値Ｐ2*，Ｐ1*，Ｐ0*から、バッファｂ（０）に対する補正移動指令値ｂ3(0)(０）を、
【数３】
2010051091.tif 000005
【０１０１】
として求める。なお、この数３において、右辺第１項が位置を表わすものとすると、第２項は位置の変化で速度を表しており、第３項は速度の変化で加速度を表している。この数３に示す補正移動指令値ｂ3(0)(０）は、移動指令値Ｐ0*から移動指令値Ｐ2*までの変化をもとに、位置と速度と加速度とにより、次の移動指令値Ｐ3*を予測するものである。
【０１０２】
超過バッファ補正演算部２２１で生成されたこの補正移動指令値ｂ3(0)(０）は、図１０（ｃ）に示す状態にある移動平均処理用バッファ２１２（図１２）のバッファｂ（０）に格納される。即ち、このとき、このバッファｂ（０）では、移動指令値Ｐ2*が格納されたままとなっているが、これがこの補正移動指令値ｂ3(0)(０）に更新されることになる。
【０１０３】
このように、図１０（ｃ）の状態でバッファｂ（０）にこの補正移動指令値ｂ3(0)(０）が格納されると、移動平均値演算部２１３（図１２）において、移動平均処理用バッファ２１２での各バッファｂ（０）〜ｂ（ｍ）に格納された移動指令値Ｐ2*が取り込まれ（但し、バッファｂ（０）からは、この補正移動指令値ｂ3(0)(０）が取り込まれる）、第１の具体例と同様、移動指令値Ｐ2*による平均移動指令値Ｐｓ2（ｎ）*に続く移動指令値Ｐ2*による平均移動指令値として、平均移動指令値Ｐs3（０）が生成される。
【０１０４】
次に、移動指令値Ｐ3*が受信されると、移動指令値格納バッファ２１８に受信された移動指令値Ｐ3*が格納され、また、移動平均処理用バッファ２１２では、バッファｂ（１）にこの新たに受信された移動指令値Ｐ3*が格納される。なお、ここでは、リングカウンタが使用されるので、バッファｂ（０）に上記の補正移動指令値ｂ3(0)(０）がそのまま格納された状態にある。これ以降では、移動平均処理用バッファ２１２でのバッファｂ（２），ｂ（３），……，ｂ（ｍ）に順に移動指令値Ｐ3*が格納されていき、その都度移動平均値演算部２１３（図１２）で平均移動指令値Ｐｓ3（ｎ）*が生成される。
【０１０５】
ここで、ｍ＝９，β＝４としたときの補正移動指令値ｂ3(0)(０），平均移動指令値Ｐｓ2*，Ｐｓ3*の数値例を、移動指令値Ｐ2*をバッファｂ（８）（図１０（ａ）に示す状態）に格納するタイミングから移動指令値Ｐ3*をバッファｂ（９）に格納するタイミングまでの平均移動指令値Ｐｓ*とともに示す。但し、一例として、上記のように、Ｐ0*＝０，Ｐ1*＝１０００，Ｐ2*＝２０００，Ｐ3*＝３０００とし、Ｐｓ2(７)*までは図１１の場合と同様である。
【０１０６】
Ｐｓ2(８)*＝{９・Ｐ2*＋(１０−９)・Ｐ1*＋Ｒ2(７）｝/１０＝１９００
Ｒ2(８)＝０    ΔＰｓ2(８）＝１００
Ｐｓ2(９)*＝{１０・Ｐ2*＋(１０−１０)・Ｐ1*＋Ｒ1(６）}/１０
＝２０００
Ｒ2(７)＝０    ΔＰｓ2(７）＝１００
Ｐｓ2(１０)*＝Ｐｓ3(０)*
＝{ｂ3(0)(０）＋（１０−１）・Ｐ2*
＋Ｒ1(６）}/１０＝２１００
但し、ｂ3(0)(０）＝Ｐ2*＋(Ｐ2*−Ｐ1*)＋{（Ｐ2*−Ｐ1*)
−（Ｐ1*−Ｐ0*)}＝３０００
Ｒ3(０)＝０    ΔＰｓ3(０）＝１００
受信移動指令値Ｐ3*を受信：
Ｐｓ3(１)*＝{ｂ3(0)(０）＋１・Ｐ3*＋(１０−２)・Ｐ2*
＋Ｒ3(０）}/１０＝２２００
Ｒ3(０)＝０    ΔＰｓ3(１）＝１００
Ｐｓ3(２)*＝{ｂ3(0)(０）＋２・Ｐ3*＋(１０−３)・Ｐ2*
＋Ｒ3(１）}/１０＝２３００
Ｒ3(２)＝０    ΔＰｓ3(２）＝１００
Ｐｓ3(３)*＝{ｂ3(0)(０）＋３・Ｐ3*＋(１０−４)・Ｐ2*
＋Ｒ3(２）}/１０＝２４００
Ｒ3(３)＝０    ΔＰｓ3(３）＝１００
Ｐｓ3(４)*＝{ｂ3(0)(０）＋４・Ｐ3*＋(１０−５)・Ｐ2*
＋Ｒ3(２）}/１０＝２５００
Ｒ3(３)＝０    ΔＰｓ3(３）＝１００
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ｐｓ3(７)*＝{ｂ3(0)(０）＋７・Ｐ3*＋(１０−８)・Ｐ2*
＋Ｒ3(６）}/１０＝２８００
Ｒ3(７)＝０    ΔＰｓ3(７）＝１００
Ｐｓ3(８)*＝{ｂ3(0)(０）＋８・Ｐ3*＋(１０−９)・Ｐ2*
＋Ｒ3(７）}/１０＝２９００
Ｒ3(８)＝０    ΔＰｓ3(８）＝１００
Ｐｓ3(９)*＝{ｂ3(0)(０）＋９・Ｐ3*＋(１０−１０)・Ｐ2*
＋Ｒ3(８）}/１０＝３０００
Ｒ3(９)＝０    ΔＰｓ3(９）＝１００。
【０１０７】
このように、平均移動指令値Ｐｓ2（ｉ），Ｐｓ3（ｉ＋１）が得られが、これを図１１で示したバッファｂ（０）に格納されている移動指令値Ｐ2*を補正しない場合と比較すると、補正が行われた平均移動指令値Ｐｓ3（０），Ｐｓ3（１），Ｐｓ3（２），Ｐｓ3（３）で変化量ΔＰｓk（ｎ）が値「１００」となって一定の値であり、変化量ΔＰｓk（ｎ）の局所的な増加の変動が解消されることになる。
【０１０８】
このようにして、この具体例では、シッタなどによって受信される移動指令値Ｐk*の受信周期が規定の受信周期ｔchgよりも長くなっても、これによって生ずる平均移動指令値Ｐｓk*の変化量ΔＰｓk（ｎ）の局所的な変動を抑制することができる。
【０１０９】
なお、上記の例では、β＝４としたが、これに限るものではなく、βを大きくしても同様の効果が得られるものである。
【０１１０】
なお、この具体例において、移動平均処理用バッファ２１２のバッファｂ（０）〜ｂ（ｍ）を指定するカウンタとして、移動指令値Ｐk*の受信でリセットされるリセットカウンタを使用した場合には、図１０（ｃ）に示す状態でバッファｂ（０）に上記の補正移動指令値ｂ3(0)(０）が格納された状態と次の図１０（ｄ’）に示す状態とは、ｂ3(0)(０）＝Ｐ3*＝３０００であるから、全く同じ状態であり、平均移動指令値Ｐｓk*の変化量の変動は補正されないことになる。従って、この具体例では、バッファｂ（０）に補正移動指令値ｂ3(0)(０）がそのまま格納された状態で残るようにするために、リングカウンタが使用されるものである。
【０１１１】
図１４は図１２における超過バッファ補正処理部２１７の他の具体例を示すブロック構成図であって、２２４は超過バッファ変動補正演算部、２２５は切替スイッチであって、図１３に対応する部分には同一符号をつけて重複する説明を省略する。
【０１１２】
同図において、この具体例は、図１３に示す具体例の構成に超過バッファ変動補正演算部２２４と切替スイッチ２２５とを追加し、超過バッファ補正演算部２２１で生成された補正移動指令値ｂ3(0)(０）と超過バッファ変動補正演算部２２４で生成される補正移動指令値ｂ3(j)(０）とを、切替スイッチ２２５で切り替えて移動平均処理用バッファ２１２でのバッファｂ（０）に供給するものである。
【０１１３】
なお、この具体例でも、移動平均処理用バッファ２１２でのバッファｂ（０）〜ｂ（ｍ）を指定するカウンタとして、リングカウンタが用いられる。従って、移動平均処理用バッファ２１２では、移動指令値Ｐk*の受信により、図１０（ｃ）に示す状態から図１０（ｄ）に示す状態に移行する。
【０１１４】
図１４（ａ）は移動平均処理用バッファ２１２が図１０（ｃ）に示す状態にあるときを示すものであって、移動指令値格納バッファ２１８に受信移動指令値Ｐ2*が、移動指令値格納バッファ２１９に移動指令値Ｐ1*が、移動指令値格納バッファ２２０に移動指令値Ｐ0*が夫々格納されている。超過バッファ補正演算部２２１は、これら移動指令値Ｐ2*，Ｐ1*，Ｐ0*から、バッファｂ（０）に対する補正移動指令値ｂ3(0)(０）を、図１３に示した具体例と同様、先の数３の演算を行うことによって求める。
【０１１５】
このとき、切替スイッチ２２５はＡ端子側に閉じており、求められたこの補正移動指令値ｂ3(0)(０）は、切替スイッチ２２５を介して図１０（ｃ）に示す状態にある移動平均処理用バッファ２１２（図１２）のバッファｂ（０）に格納される。即ち、このとき、このバッファｂ（０）には、移動指令値Ｐ2*が格納されているが、これがこの補正移動指令値ｂ3(0)(０）に更新されることになる。
【０１１６】
このように、図１０（ｃ）の状態でバッファｂ（０）にこの補正移動指令値ｂ3(0)(０）が格納されると、移動平均値演算部２１３（図１２）において、移動平均処理用バッファ２１２での各バッファｂ（１）〜ｂ（ｍ）に格納された移動指令値Ｐ2*とバッファｂ（０）の補正移動指令値ｂ3(0)(０）とが取り込まれ、第１の具体例と同様、移動指令値Ｐ2*による平均移動指令値Ｐｓ2（９）*に続く移動指令値Ｐ3*による最初の平均移動指令値として、平均移動指令値Ｐs3（０）が生成される。
【０１１７】
次いで、次の移動指令値Ｐ3*が受信されると、図１４（ｂ）に示す状態となり、移動指令値格納バッファ２１８に受信された移動指令値Ｐ3*が格納され、これとともに、移動指令値格納バッファ２１８に格納されていた移動指令値Ｐ2*が移動指令値格納バッファ２１９に格納され、移動指令値格納バッファ２１９に格納されていた移動指令値Ｐ1*が移動指令値格納バッファ２２０に格納される。また、切替スイッチ２２５がＢ端子側に切り替わる。このとき、移動平均処理用バッファ２１２では、バッファｂ（０）に補正移動指令値ｂ3(0)(０）が格納されている。
【０１１８】
これとともに、超過バッファ変動補正演算部２２４が動作を開始し、β回（但し、βはｍ以下の整数）バッファｂ（０）の補正移動指令値ｂ3(j)(０）（但し、ｊ＝１，２，……，β）を順次生成し、切替スイッチ２２５を介して移動平均処理用バッファ２１２でのバッファｂ（０）に格納する。従って、このバッファｂ（０）では、補正移動指令値ｂ3(j)(０）が順次更新される。
【０１１９】
かかる補正移動指令値ｂ3(j)(０）は、超過バッファ補正演算部２２１で生成された補正移動指令値ｂ3(0)(０）と移動指令値格納バッファ２１８に格納された移動指令値Ｐ3*とから、
【数４】
2010051091.tif 000006
【０１２０】
によって求められるものである。
【０１２１】
これにより、図１０（ｄ）に示す状態からバッファｂ（０）において、補正移動指令値ｂ3(j)(０）がｂ3(1)(０），ｂ3(1)(０），……，ｂ3(β)(０）と更新されていくことになる。
【０１２２】
ここで、ｍ＝９，β＝４としたときの補正移動指令値ｂ3(j)(０），平均移動指令値Ｐｓ2*，Ｐｓ3*の数値例を、移動指令値Ｐ2*をバッファｂ（８）（図１０（ａ）に示す状態）に格納するタイミングから移動指令値Ｐ3*をバッファｂ（９）に格納するタイミングまでの平均移動指令値Ｐｓ*とともに示す。但し、上記のように、Ｐ2*＝２０００，Ｐ3*＝３０００とする。
【０１２３】
Ｐｓ2(８)*＝{９・Ｐ2*＋(１０−９)・Ｐ1*＋Ｒ2(７）｝/１０＝１９００
Ｒ2(８)＝０    ΔＰｓ2(８）＝１００
Ｐｓ2(９)*＝{１０・Ｐ2*＋(１０−１０)・Ｐ1*＋Ｒ1(６）}/１０
＝２０００
Ｒ2(７)＝０    ΔＰｓ2(７）＝１００
Ｐｓ2(１０)*＝Ｐｓ3(０)*
＝{ｂ3(0)(０）＋９・Ｐ2*＋Ｒ1(６）}/１０＝２１００
但し、ｂ3(0)(０）＝Ｐ2*＋(Ｐ2*−Ｐ1*)＋{（Ｐ2*−Ｐ1*)
−（Ｐ1*−Ｐ0*)}＝３０００
Ｒ3(０)＝０    ΔＰｓ3(０）＝１００
受信移動指令値Ｐ3*を受信：
Ｐｓ3(１)*＝{ｂ3(1)(０）＋１・Ｐ3*＋(１０−２)・Ｐ2*
＋Ｒ3(０）}/１０＝２２００
但し、ｂ3(0)(０)＝Ｐ3*＝３０００であるから、上記の数４により、
ｂ3(1)(０）〜ｂ3(4)(０）＝ｂ3(0)(０）＝３０００
Ｒ3(０)＝０    ΔＰｓ3(１）＝１００
Ｐｓ3(２)*＝{ｂ3(2)(０）＋２・Ｐ3*＋(１０−３)・Ｐ2*
＋Ｒ3(１）}/１０＝２３００
Ｒ3(２)＝０    ΔＰｓ3(２）＝１００
Ｐｓ3(３)*＝{ｂ3(3)(０）＋３・Ｐ3*＋(１０−４)・Ｐ2*
＋Ｒ3(２）}/１０＝２４００
但し、ｂ3(4)(９）＝Ｐ1*＋（Ｐ2*−Ｐ1*)・４/４＝２０００
Ｒ3(３)＝０    ΔＰｓ3(３）＝１００
Ｐｓ3(４)*＝{ｂ3(4)(０）＋４・Ｐ3*＋(１０−５)・Ｐ2*
＋Ｒ3(２）}/１０＝２５００
Ｒ3(３)＝０    ΔＰｓ3(３）＝１００
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ｐｓ3(７)*＝{ｂ3(4)(０）＋７・Ｐ3*＋(１０−８)・Ｐ2*
＋Ｒ3(６）}/１０＝２８００
Ｒ3(７)＝０    ΔＰｓ3(７）＝１００
Ｐｓ3(８)*＝{ｂ3(4)(０）＋８・Ｐ3*＋(１０−９)・Ｐ2*
＋Ｒ3(７）}/１０＝２９００
Ｒ3(８)＝０    ΔＰｓ3(８）＝１００
Ｐｓ3(９)*＝{ｂ3(4)(０）＋９・Ｐ3*＋(１０−１０)・Ｐ2*
＋Ｒ3(８）}/１０＝３０００
Ｒ3(９)＝０    ΔＰｓ3(９）＝１００。
【０１２４】
このように、平均移動指令値Ｐｓ2（ｉ），Ｐｓ3（ｉ＋１）が得られが、これを図１１で示したバッファｂ（０）に格納されている移動指令値Ｐ2*を補正しない場合と比較すると、補正が行われた平均移動指令値Ｐｓ3（０），Ｐｓ3（１），Ｐｓ3（２），Ｐｓ3（３）で変化量ΔＰｓk（ｎ）が値「１００」となって一定の値であり、変化量ΔＰｓk（ｎ）の局所的な増加の変動が解消されることになる。
【０１２５】
このようにして、この具体例では、ジッタなどによって受信される移動指令値Ｐk*の受信周期が規定の受信周期ｔchgよりも長くなっても、これによって生ずる平均移動指令値Ｐｓk*の変化量ΔＰｓk（ｎ）の局所的な変動を抑制することができる。
【０１２６】
なお、上記の例では、β＝４としたが、これに限るものではなく、βを大きくしても同様の効果が得られるものである。
【０１２７】
ここで、上記のように、補正移動指令値ｂ3(j)(０）が次に受信する移動指令値Ｐ3*と等しい場合には、超過バッファ変動補正演算部２２４で得られる補正移動指令値ｂ3(j)(０）は超過バッファ補正演算部２２１で得られる補正移動指令値ｂ3(0)(０）に等しく（なぜならば、上記数３でのＰ3*−ｂ3(0)(０）＝０であるから）、この場合には、超過バッファ変動補正演算部２２４は超過バッファ補正演算部２２１が生成する補正移動指令値ｂ3(0)(０）と等しい補正移動指令値ｂ3(j)(０）を生成してバッファｂ（０）に格納するものであるから、図１３に示す具体例では、補正移動指令値ｂ3(0)(０）を１回格納するのに対し、図１４に示す具体例では、これと同じ補正移動指令値ｂ3(j)(０）をβ回格納するという点で異なるが、結果的には、超過バッファ変動補正演算部２２４は超過バッファ補正演算部２２１と同じ作用をなしているものである。従って、この場合には、図１４に示す具体例は、図１３に示す具体例と作用が等しいものである。
【０１２８】
なお、上記数３において、移動指令値Ｐ0*，Ｐ1*，Ｐ2*，Ｐ3*が同じ関数で表わされる軌道上に存在するものであるときには、補正移動指令値ｂ3(0)(０）が次に受信される移動指令値Ｐ3*と等しくなる。
【０１２９】
これに対し、超過バッファ補正演算部２２１で生成される補正移動指令値ｂ3(0)(０）が次に受信する移動指令値Ｐ3*と異なる場合もあり得、この場合には、超過バッファ変動補正演算部２２３の作用により、図１４に示す具体例は、図１３に示す具体例と作用が異なるものとなる。
【０１３０】
即ち、図１３に示す具体例では、例えば、図１０（ｃ）に示す状態で、バッファｂ（０）に補正移動指令値ｂ3(0)(０）を格納したとすると、バッファｂ（１），ｂ（２），……，ｂ（９）に順次移動指令値Ｐ3*を格納する間、バッファｂ（０）に補正移動指令値ｂ3(0)(０）が保持されたままであり、次いで、バッファｂ（０）に移動指令値Ｐ3*が格納されると（補正移動指令値ｂ3(0)(０）が移動指令値Ｐ3*に更新される）、バッファｂ（９）に対して、バッファｂ（０）の値が移動指令値Ｐ3*と補正移動指令値ｂ3(0)(０）との差の値が変化するだけであり、このときの平均移動指令値Ｐｓ3（０）の変化量ΔＰｓ3(０）はその差値に応じたわずかな値である。
【０１３１】
例えば、移動指令値Ｐ0*，Ｐ1*，Ｐ2*，Ｐ3*を夫々、Ｐ0*＝３００、Ｐ1*＝５００、Ｐ2*＝１０００、Ｐ3*＝２０００とすると、
補正移動指令値ｂ3(0)(０）＝１８００
であるが、図１３に示す具体例による図１０（ｂ）に示す状態からバッファｂ（０）で補正移動指令値ｂ3(0)(０）が移動指令値Ｐ3*に更新されるまでの平均移動指令値Ｐｓk（ｉ）の変化をみると、次の通りである。
【０１３２】
Ｐｓ2(９)*＝{１０・Ｐ2*＋(１０−１０)・Ｐ1*＋Ｒ1(６）}/１０
＝１０００
Ｒ2(７)＝０
Ｐｓ2(１０)*＝Ｐｓ3(０)*
＝{ｂ3(0)(０）＋９・Ｐ2*＋Ｒ1(６）}/１０＝１０８０
Ｒ3(０)＝０    ΔＰｓ3(０）＝８０
受信移動指令値Ｐ3*を受信：
Ｐｓ3(１)*＝{ｂ3(0)(０）＋１・Ｐ3*＋(１０−２)・Ｐ2*
＋Ｒ3(０）}/１０＝１１８０
Ｒ3(０)＝０    ΔＰｓ3(１）＝１００
Ｐｓ3(２)*＝{ｂ3(0)(０）＋２・Ｐ3*＋(１０−３)・Ｐ2*
＋Ｒ3(１）}/１０＝１２８０
Ｒ3(２)＝０    ΔＰｓ3(２）＝１００
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ｐｓ3(７)*＝{ｂ3(0)(０）＋７・Ｐ3*＋(１０−８)・Ｐ2*
＋Ｒ3(６）}/１０＝１７８０
Ｒ3(７)＝０    ΔＰｓ3(７）＝１００
Ｐｓ3(８)*＝{ｂ3(0)(０）＋８・Ｐ3*＋(１０−９)・Ｐ2*
＋Ｒ3(７）}/１０＝１８８０
Ｒ3(８)＝０    ΔＰｓ3(８）＝１００
Ｐｓ3(９)*＝{ｂ3(0)(０）＋９・Ｐ3*＋(１０−１０)・Ｐ2*
＋Ｒ3(８）}/１０＝１９８０
Ｒ3(９)＝０    ΔＰｓ3(９）＝１００。
【０１３３】
この平均移動指令値Ｐｓ3(９)*が生成される期間に規定の受信周期ｔchgで次の移動指令値Ｐ4*が受信されることになり、バッファｂ（０）から順にこの移動指令値Ｐ4*が格納されていくことになる。
【０１３４】
これによると、バッファｂ（９）に格納される平均移動指令値Ｐｓ3(９)*は「１９８０」であって、移動指令値Ｐ3*の「２０００」よりも、この移動指令値Ｐ3*と補正移動指令値ｂ3(0)(０）との差に応じた値「２０」だけ小さい値となっている。
【０１３５】
このように、図１３に示す具体例では、補正移動指令値ｂ3(0)(０）が移動指令値Ｐ3*と異なる場合には、正確な平均移動指令値Ｐｓkが得られないことになる。
【０１３６】
これに対し、図１４に示す具体例の場合には、
補正移動指令値ｂ3(0)(０）＝１８００
ｂ3(1)(０）＝５０，  ｂ3(2)(０）＝１００，
ｂ3(3)(０）＝１５０，ｂ3(4)(０）＝２００
となるものであり、図１０（ｂ）に示す状態からバッファｂ（０）で補正移動指令値ｂ3(0)(０）が移動指令値Ｐ3*に更新されるまでの平均移動指令値Ｐｓk（ｉ）の変化を見ると、次の通りである。
【０１３７】
Ｐｓ2(９)*＝{１０・Ｐ2*＋(１０−１０)・Ｐ1*＋Ｒ1(６）}/１０
＝１０００
Ｒ2(７)＝０
Ｐｓ2(１０)*＝Ｐｓ3(０)*
＝{ｂ3(0)(０）＋９・Ｐ2*＋Ｒ1(６）}/１０＝１０８０
Ｒ3(０)＝０    ΔＰｓ3(０）＝８０
受信移動指令値Ｐ3*を受信：
Ｐｓ3(１)*＝{ｂ3(1)(０）＋１・Ｐ3*＋(１０−２)・Ｐ2*
＋Ｒ3(０）}/１０＝１１８５
Ｒ3(０)＝０    ΔＰｓ3(１）＝１０５
Ｐｓ3(２)*＝{ｂ3(2)(０）＋２・Ｐ3*＋(１０−３)・Ｐ2*
＋Ｒ3(１）}/１０＝１２９０
Ｒ3(２)＝０    ΔＰｓ3(２）＝１０５
Ｐｓ3(３)*＝{ｂ3(3)(０）＋３・Ｐ3*＋(１０−４)・Ｐ2*
＋Ｒ3(６）}/１０＝１３９５
Ｒ3(７)＝０    ΔＰｓ3(７）＝１０５
Ｐｓ3(４)*＝{ｂ3(4)(０）＋４・Ｐ3*＋(１０−５)・Ｐ2*
＋Ｒ3(６）}/１０＝１５００
Ｒ3(７)＝０    ΔＰｓ3(７）＝１０５
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ｐｓ3(７)*＝{ｂ3(4)(０）＋７・Ｐ3*＋(１０−８)・Ｐ2*
＋Ｒ3(６）}/１０＝１８００
Ｒ3(７)＝０    ΔＰｓ3(７）＝１００
Ｐｓ3(８)*＝{ｂ3(4)(０）＋８・Ｐ3*＋(１０−９)・Ｐ2*
＋Ｒ3(７）}/１０＝１９００
Ｒ3(８)＝０    ΔＰｓ3(８）＝１００
Ｐｓ3(９)*＝{ｂ3(4)(０）＋９・Ｐ3*＋(１０−１０)・Ｐ2*
＋Ｒ3(８）}/１０＝２０００
Ｒ3(９)＝０    ΔＰｓ3(９）＝１００。
【０１３８】
この平均移動指令値Ｐｓ3(９)*を生成する期間に、規定の受信周期ｔchgで次の移動指令値Ｐ4*が受信される。
【０１３９】
これによると、平均移動指令値Ｐｓ3(８)*と平均移動指令値Ｐｓ3(９)*との間の変化量ΔＰｓ3（９）は、正常値の「１００」であり、局所的な変動は現れないし、移動指令値Ｐ3*が最後のバッファｂ（９）に格納されたことによって生成される平均移動指令値Ｐｓ3(９)*は、移動指令値Ｐ3*に等しい正しい値となっている。
【０１４０】
図１５は図１における指令値補間演算部２１の第３の具体例を示すブロック構成図であって、図２，図７及び図１２に対応する部分には同一符号をつけて重複する説明を省略する。
【０１４１】
同図において、この第３の具体例は、図２に示す基本構成に図７における不足バッファ補正処理部２１６と図１２における超過バッファ補正処理部２１７とを備えた構成をなすものである。不足バッファ補正処理部２１６は、先に説明したように、移動指令値Ｐk*の受信周期が規定の受信周期ｔchgよりも短くなったときに、図８で説明した補正処理により、移動平均処理用バッファ２１２のバッファｂ（ｍ）に格納されている移動指令値Ｐk（ｍ）*の補正処理を行うものである。超過バッファ補正処理部２１７は、先に説明したように、移動指令値Ｐk*の受信周期が規定の受信周期ｔchgよりも長くなったときに、移動平均処理用バッファ２１２のバッファｂ（０）に格納されている移動指令値Ｐk（０）*の補正処理を行うものであり、図１３もしくは図１４に示す構成をなしている。
【０１４２】
ここで、この具体例では、不足バッファ補正処理部２１６と超過バッファ補正処理部２１７とが用いられるものであるから、移動平均処理用バッファ２１２でのバッファｂ（０）〜ｂ（ｍ）を指定するカウンタとして、リングカウンタとリセットカウンタとが用いられる。
【０１４３】
これにより、この具体例では、移動指令値Ｐk*の受信周期ｔchgが短くなったときも、また、移動指令値Ｐk*の受信周期ｔchgが長くなったときも、移動平均処理用バッファ２１２に格納されている移動指令値Ｐk*を補正することができ、電動機３（図１）を制御するための平均移動指令値Ｐｓk*の変化量ΔＰｓ3の局所的な変動を抑制することができる。
【０１４４】
図１６は図１５に示す指令値補間演算部２１での移動平均処理用バッファ２１２におけるバッファｂ（０）〜ｂ（ｍ）の指定手段の一具体例を示すブロック構成図であって、２３１はリセットカウンタ、２３２はリングカウンタ、２３３は比較部、２３４はＡＮＤゲート、２３５はカウント値判定部、２３６は切替スイッチであり、図１５に対応する部分には同一符号をつけて重複する説明を省略する。
【０１４５】
また、図１７は図１６に示す具体例の動作を示すタイムチャートである。なお、同図（ａ）は移動指令値Ｐk*が規定の受信周期ｔchgで受信されるときの、同図（ｂ）は移動指令値Ｐk*が規定の受信周期ｔchgよりも１サーボ処理周期ｔｓchg程度短い周期で受信されたときの、同図（ｃ）は移動指令値Ｐk*が規定の受信周期ｔchgよりも１サーボ処理周期ｔｓchg程度長い周期で受信されたときの夫々、移動指令値Ｐk*の受信とリセットカウンタ２３１の出力カウント値ＮC1とリングカウンタ２３２の出力カウント値ＮC2とのタイミング関係を示すものである。
【０１４６】
図１６において、図１５での移動平均処理用バッファ２１２におけるバッファｂ（０）〜ｂ（ｍ）を指定する手段として、リセットカウンタ２３１とリングカウンタ２３２とが用いられ、これらの出力カウント値ＮC1，ＮC2が、バッファｂ（０）〜ｂ（ｍ）の指定値として、切替スイッチ２３６で選択される。通常、リングカウンタ２３２の出力カウント値ＮC2が、バッファｂ（０）〜ｂ（ｍ）の指定値として、切替スイッチ２３６で選択される。
【０１４７】
即ち、図１７（ａ）は移動指令値Ｐk*が規定の受信周期ｔchgで受信される状態を示すものであるが、この場合には、切替スイッチ２３６はＢ端子側に閉じ、リングカウンタ２３２の出力カウントＮC2をバッファｂ（０）〜ｂ（ｍ）の指定値として選択する。
【０１４８】
また、図１７（ｂ）は移動指令値Ｐk*が規定の受信周期ｔchgよりも１サーボ処理周期ｔｓchg程度短い周期で受信される状態を示すものであるが、この場合には、切替スイッチ２３６はＡ端子側に閉じ、リセットカウンタ２３１の出力カウントＮC1をバッファｂ（０）〜ｂ（ｍ）の指定値として選択する。
【０１４９】
さらに、図１７（ｃ）は移動指令値Ｐk*が規定の受信周期ｔchgよりも１サーボ処理周期ｔｓchg程度長い周期で受信される状態を示すものであるが、この場合には、切替スイッチ２３６はＢ端子側に閉じ、リングカウンタ２３２の出力カウントＮC2をバッファｂ（０）〜ｂ（ｍ）の指定値として選択する。
【０１５０】
移動指令値Ｐk*が受信される毎に、これに同期してリセットパルスＰR*が生成され、このリセットパルスＰR*によってリセットカウンタ２３１がリセットされる。このリセットカウンタ２３１とリングカウンタ２３２とは、このリセットパルスＰR*の（ｍ＋１）倍の周波数のクロックをカウントするものであって、移動指令値Ｐk*が規定の受信周期ｔchgで受信されるときには、リセットカウンタ２３１はカウント値ＮC1がｍになると、このリセットパルスＰR*によって０にリセットされるから、０〜ｍの値を繰り返しカウントすることになる。また、リングカウンタ２３２も、リセットパルスＰR*によってリセットされないが、０〜ｍの値を繰り返しカウントする。
【０１５１】
但し、リングカウンタ２３２は、移動指令値Ｐk*が規定の受信周期ｔchgで受信されるときには、そのカウント値ＮC2がリセットカウンタ２３１のカウント値ＮC1と等しくなるように、移動指令値Ｐk*の受信開始時、リセットパルスＰR*によって０にクリアされる。即ち、リセットカウンタ２３１のカウント値ＮC1は比較部２３３に供給され、値ｍ＋２と比較される。リングカウンタ２３２が、移動指令値Ｐk*が受信される毎に、リセットパルスＰR*によってリセットされるときには、リセットカウンタ２３１のカウント値ＮC1は値ｍ＋１を越えることがなく、このカウント値ＮC1がｍ＋２以上となると、移動指令値Ｐk*が受信されなくなってリングカウンタ２３２がリセットされなくなったことを意味することになる。そのときには、比較部２３３から“Ｈ”（ハイレベル）の信号が出力され、ＡＮＤゲート２３４に供給される。即ち、ＡＮＤゲート２３４への比較部２３３からの入力は、移動指令値Ｐk*が受信されなくなると、ＯＮ状態に保持されることになる。その後、移動指令値Ｐk*の受信が始まると、その最初のリセットパルスＰR*がＯＮ状態にあるＡＮＤゲート２３４を通過し、クリアパルスとしてリングカウンタ２３２に供給される。これにより、リングカウンタ２３２はそのカウント値ＮC2が０にクリアされ、そこからカウントを始めることになる。これとともに、リセットカウンタ２３１もこの最初のリセットパルスＰR*によってリセットされ、そこからカウントを始めることになる。これにより、比較部２３３は、リセットカウンタ２３１のカウント値ＮC1が値ｍ＋１以下となるので、その出力信号が“Ｌ”（ローレベル）となり、ＡＮＤゲート２３４はＯＦＦ状態となる。従って、その後の移動指令値Ｐk*の順次の受信によって生成されるリセットパルスＰR*はリングカウンタ２３２に供給されず、リングカウンタ２３２は０〜ｍの値を繰り返しカウントすることになる。
【０１５２】
このようにして、移動指令値Ｐk*が規定の受信周期ｔchgで受信されている限り、リセットカウンタ２３１とリングカウンタ２３２とから同時に出力されるカウント値ＮC1，ＮC2は等しい値となる。
【０１５３】
移動指令値Ｐk*の受信周期ｔchgの変動の有無は、カウント値判定部２３５により、リセットパルスＰR*のタイミングでのリングカウンタ２３２のカウント値ＮC2をもとに判定される。
【０１５４】
即ち、移動指令値Ｐk*の受信周期の変動量は、高々１サーボ処理周期ｔｓchg程度であるが、かかる変動がなく、移動指令値Ｐk*が規定の受信周期ｔchgで受信されるときには、図１７（ａ）に示すように、移動指令値Ｐk*の受信タイミング、即ち、リセットパルスＰR*のタイミングはリングカウンタ２３２のカウント値ＮC2がｍのときである。そこで、カウント値判定部２３５は、リセットパルスＰR*のタイミングでのリングカウンタ２３２のカウント値ＮC2がｍのとき、移動指令値Ｐk*が規定の受信周期ｔchgで受信されているものと判定し、切替スイッチ２３６をＢ端子側に閉じて、リングカウンタ２３２のカウント値ＮC2をバッファｂ（０）〜ｂ（ｍ）の指定値として選択する。これにより、図１７（ａ）に示すように、リングカウンタ２３２の出力カウント値ＮC2により、移動平均処理用バッファ２１２（図１５）において、バッファｂ（ｉ）がｂ（０），ｂ（１），ｂ（２），……，ｂ（ｍ）の順に繰り返し指定されることになる。なお、この場合、不足バッファ補正処理部２１６も、また、超過バッファ補正処理部２１７も動作させない。
【０１５５】
また、移動指令値Ｐk*の受信周期が規定の受信周期ｔchgよりも１サーボ処理周期ｔｓchg程度短くなったものとすると、図１７（ｂ）に示すように、このときの移動指令値Ｐk*の受信タイミング、即ち、リセットパルスＰR*のタイミングはリングカウンタ２３２のカウント値ＮC2がｍ−１のときである。そこで、カウント値判定部２３５は、リセットパルスＰR*のタイミングでのリングカウンタ２３２のカウント値ＮC2がｍ−１のとき、移動指令値Ｐk*が規定の受信周期ｔchgよりも１サーボ処理周期ｔｓchg程度短い周期で受信されているものと判定し、切替スイッチ２３６をＡ端子側に閉じて、リセットカウンタ２３１のカウント値ＮC1をバッファｂ（０）〜ｂ（ｍ）の指定値として選択する。これにより、図１７（ｂ）に示すように、これまでリングカウンタ２３２のカウント値ＮC2で移動平均処理用バッファ２１２（図１５）のバッファｂ（ｉ）が指定されていたのが、このカウント値ＮC2が値ｍ−１のとき、例えば、移動指令値Ｐ3*が規定の受信周期ｔchgよりも１サーボ処理周期ｔｓchg程度短い周期で受信されると、リセットカウンタ２３１の値０からのカウント値ＮC1により、移動平均処理用バッファ２１２（図１５）のバッファｂ（ｉ）がｂ（０），ｂ（１），ｂ（２），……の順で指定されることになる。なお、次の移動指令値Ｐ4*が規定の受信周期ｔchgで受信された場合には、図１７（ｂ）に示すように、リングカウンタ２３２のカウント値ＮC2が値ｍのときに移動指令値Ｐ4*が受信されることになるので、切替スイッチ２３６がＢ端子に切り替わり、リングカウンタ２３２のカウント値ＮC2が移動平均処理用バッファ２１２（図１５）のバッファｂ（ｉ）を指定するようにする。また、この場合、不足バッファ補正処理部２１６を動作させ、先の図７，図８で示した実施形態と同様にして、移動指令値Ｐ3*の受信によって指定されなかった移動平均処理用バッファ２１２での最後のバッファｂ（ｍ）に格納されている移動指令値Ｐk*の補正処理を行う。
【０１５６】
また、図１７（ｃ）に示すように、移動指令値Ｐk*の受信周期が規定の受信周期ｔchgよりも１サーボ処理周期ｔｓchg程度長くなったものとすると、このときの移動指令値Ｐk*の受信タイミング、即ち、リセットパルスＰR*のタイミングはリングカウンタ２３２のカウント値ＮC2が０のときである。そこで、カウント値判定部２３５は、リセットパルスＰR*のタイミングでのリングカウンタ２３２のカウント値ＮC2が０のとき、移動指令値Ｐk*が規定の受信周期ｔchgよりも１サーボ処理周期ｔｓchg程度長い周期で受信されているものと判定し、切替スイッチ２３６をＢ端子側に閉じた状態として、リングカウンタ２３２のカウント値ＮC2をバッファｂ（０）〜ｂ（ｍ）の指定値として選択する。この場合、超過バッファ補正処理部２１７を動作させ、先の図１２〜図１４で示した実施形態と同様にして、移動平均処理用バッファ２１２での最初のバッファｂ（０）に格納されている移動指令値Ｐk*の補正処理を行う。
【図面の簡単な説明】
【０１５７】
【図１】本発明によるサーボ制御装置の一実施形態を示すブロック構成図である。
【図２】図１における指令値補間演算部の基本構成を示すブロック構成図である。
【図３】図２での移動指令値Ｐ1*が最後のバッファｂ（ｍ）に格納されてから図２に示す状態になるまでの移動平均処理用バッファの格納状態の変遷を示す図である。
【図４】図３に示す移動平均処理用バッファの格納状態の変遷に対する図２での移動平均値演算部で得られた平均移動指令値Ｐｓ*の時間的な変化を示すグラフ図である。
【図５】ジッタなどによって受信周期ｔchgがサーボ処理周期ｔｓchg程度短くなったときの図２における移動平均処理用バッファでの受信移動指令値Ｐk*の格納状況の変化を示す図である。
【図６】図５に示す平均移動指令値Ｐｓk（ｎ）*の変化を示すグラフ図である。
【図７】図１における指令値補間演算部の第１の具体例を示すブロック構成図である。
【図８】図７における不足バッファ補正処理部の補正処理の一具体例を示す図である。
【図９】図７に示す指令値補間演算部の動作を示すフロー図である。
【図１０】ジッタなどによって受信周期ｔchgがサーボ処理周期ｔｓchg程度長くなったときの図２における移動平均処理用バッファでの受信移動指令値Ｐk*の格納状況の変化を示す図である。
【図１１】図１０に示す平均移動指令値Ｐｓk（ｎ）*の変化を示すグラフ図である。
【図１２】図１における指令値補間演算部の第２の具体例を示すブロック構成図である。
【図１３】図１２における超過バッファ補正処理部の一具体例を示すブロック構成図である。
【図１４】図１２における超過バッファ補正処理部の他の具体例を示すブロック構成図である。
【図１５】図１における指令値補間演算部の第３の具体例を示すブロック構成図である。
【図１６】図１５に示す指令値補間演算部での移動平均処理用バッファにおけるバッファｂ（０）〜ｂ（ｍ）の指定手段の一具体例を示すブロック構成図である。
【図１７】図１６に示す具体例の動作を示すタイムチャートである。
【符号の説明】
【０１５８】
１  上位装置
２  サーボ制御装置
２１  指令値補間演算部
２１１  移動指令値格納バッファ
２１２  移動平均処理用バッファ
２１３  移動平均値演算部
２１４  移動指令値格納バッファ
２１５  剰余バッファ
２１６  不足バッファ補正処理部
２１７  超過バッファ補正処理部
２１８〜２２０  移動指令値格納バッファ
２２１  超過バッファ補正演算部
２２２，２２３  前回値保存処理部
２２４  超過バッファ変動補正演算部
２２５  切替スイッチ
２２  サーボ制御部
３  電動機
４  検出器
２３１  リセットカウンタ
２３２  リングカウンタ
２３３  比較部
２３４  ＡＮＤゲート
２３５  カウント値判定部
２３６  切替スイッチ
【図１】
2010051091.tif 000007
【図２】
2010051091.tif 000008
【図３】
2010051091.tif 000009
【図４】
2010051091.tif 000010
【図５】
2010051091.tif 000011
【図６】
2010051091.tif 000012
【図７】
2010051091.tif 000013
【図８】
2010051091.tif 000014
【図９】
2010051091.tif 000015
【図１０】
2010051091.tif 000016
【図１１】
2010051091.tif 000017
【図１２】
2010051091.tif 000018
【図１３】
2010051091.tif 000019
【図１４】
2010051091.tif 000020
【図１５】
2010051091.tif 000021
【図１６】
2010051091.tif 000022
【図１７】
2010051091.tif 000023