JP5259300B2 - サーボ制御装置 - Google Patents

サーボ制御装置 Download PDF

Info

Publication number
JP5259300B2
JP5259300B2 JP2008213020A JP2008213020A JP5259300B2 JP 5259300 B2 JP5259300 B2 JP 5259300B2 JP 2008213020 A JP2008213020 A JP 2008213020A JP 2008213020 A JP2008213020 A JP 2008213020A JP 5259300 B2 JP5259300 B2 JP 5259300B2
Authority
JP
Japan
Prior art keywords
command value
movement command
buffer
stored
cycle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008213020A
Other languages
English (en)
Other versions
JP2010051091A (ja
Inventor
哲男 梁田
裕理 高野
敬典 大橋
豊 松本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Industrial Equipment Systems Co Ltd
Original Assignee
Hitachi Industrial Equipment Systems Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Industrial Equipment Systems Co Ltd filed Critical Hitachi Industrial Equipment Systems Co Ltd
Priority to JP2008213020A priority Critical patent/JP5259300B2/ja
Publication of JP2010051091A publication Critical patent/JP2010051091A/ja
Application granted granted Critical
Publication of JP5259300B2 publication Critical patent/JP5259300B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Control Of Electric Motors In General (AREA)

Description

本発明は、半導体製造装置や工作機械,射出成形機などの産業用機械などに用いられるサーボ制御装置に係り、特に、上位装置から一定の周期で供給される移動指令値をこの周期よりも短い周期で高速に処理するようにしたサーボ制御装置に関する。
産業用機械などに用いられるサーボ制御装置は、上位装置からの移動指令値に応じて産業用機械を制御するものであるが、上位装置は制御対象を所望の位置に、また、所望の速度で所望の軌道にて制御する必要があり、多大な処理時間を要するため、近年では、サーボ制御装置の処理周期が高速であるのに対し、上位装置の処理周期を低速にし、上位装置の負担を低減するようにすることが一般的になっている。
そのため、上位装置の制御対象をサーボ制御装置で制御する場合、サーボ制御装置では、上位装置から一定周期で入力される移動指令値をサーボ制御装置の処理周期毎に分配する必要性が大きくなっている。
このような移動指令値の分配方法の一例として、上位装置から一定の周期(ホスト側処理周期)で供給される移動指令値を、このホスト側処理周期の1周期毎に、サーボ制御装置側の処理周期の個数分に区分して、区分された移動指令値を夫々このサーボ制御装置側の処理周期に順次等分配するようにした技術が知られている(例えば、特許文献1参照)。
この特許文献1に記載の技術での分配の具体的な方法としては、ホスト側処理周期をTMとし、サーボ制御装置側の処理周期をTSとすると、これらの比率を係数α(=TS/TM)として求め、この係数αを上位装置からの移動指令値に乗算することにより、この移動指令値をこの比率分低減し、これをサーボ制御装置側の処理周期TS毎にサンプリングして、この処理周期TS毎に移動指令値を等分配するものである。
特願平9ー62331号公報
ところで、上記特許文献1に記載の技術において、上位装置からの移動指令値をサーボ制御装置の各処理周期に等分配するのは、この上位装置の処理周期が一定であることが前提になるものである。
しかしながら、サーボ制御装置への移動指令値の伝送の過程で生ずるジッタなどにより、上位装置から供給される移動指令値の周期が変化する場合がある。このように、上位装置から供給される移動指令値の周期が変化すると、この移動指令値の周期の1周期に対するサーボ制御装置の処理周期の回数が変化し、サーボ制御装置の処理周期に移動指令値が分配されない処理周期が生ずることになる。これに対し、サーボ制御装置で処理周期への移動指令値の分配のために用いる上記の係数αは一定であるから、サーボ制御装置の処理周期のうちで移動指令値が分配されない処理周期が生じた場合には、移動指令値が分配された処理周期でのこれら移動指令値の積算値は、上位装置から供給された元の移動指令値と等しくならず、制御対象での制御が正常に行われなくなる。
本発明の目的は、かかる問題を解消し、構成を複雑にすることなく、上位装置から供給される移動指令値の周期が変化した場合でも、かかる周期の変化による影響を抑制して制御対象を円滑に制御することができるようにしたサーボ制御装置を提供することにある。
上記の目的を達成するために、本発明は、上位装置から受信周期で移動指令値が受信される毎に受信された移動指令値が格納され、格納された移動指令値を処理周期(<受信周期)で繰り返し読み出して出力する移動指令値格納バッファと、移動指令値格納バッファから移動指令値が出力される毎に、移動指令値を順次格納する複数のバッファを有する移動平均処理用バッファと、処理周期毎に、移動平均処理用バッファの全てのバッファに格納された移動指令値を合算し、得られた合算値をバッファの個数で除算した商を平均移動指令値とし、平均移動指令値を制御対象の移動指令値として制御サーボ部に供給する移動平均値演算部とを備え、移動平均処理用バッファは、受信周期を処理周期で除算して得られる商に等しい個数のバッファを有することを特徴とするものである。
また、本発明は、バッファに格納された移動指令値を、略等分ずつ任意の複数回にわたって補正して新たな移動指令値よりも1つ前に受信された移動指令値とする補正手段を有することを特徴とするものである。
また、本発明は、移動指令値の受信周期が変化し、その変化の規定の周期からの変化量が、処理周期の高々1周期であって、新たな移動指令値が規定の周期よりも短い受信周期で受信されたときには、移動平均処理用バッファでの最後に配列されるバッファに格納せず、最初に配列されるバッファに格納し、最後に配列されるバッファに格納されている移動指令値を、略等分ずつ任意の複数回にわたって補正して新たな移動指令値よりも1つ前に受信された移動指令値とする補正手段を備えたことを特徴とするものである。
また、本発明は、移動指令値の受信周期が変化し、その変化の規定の周期からの変化量が、処理周期の高々1周期であって、新たな移動指令値が規定の周期よりも長い受信周期で受信されたときには、移動平均処理用バッファでの最初に配列されるバッファに格納されている移動指令値を、略等分ずつ任意の複数回にわたって補正して新たな移動指令値よりも1つ前に受信された移動指令値とする補正手段を備えたことを特徴とするものである。
また、本発明は、移動平均値演算部は、補正手段がバッファの移動指令値の補正処理を行うときには、補正処理が行われた後に平均化処理を行うことを特徴とするものである。
本発明によると、上位装置からの規定の受信周期で受信される移動指令値から移動平均処理用バッファを用いて複数の同じ移動指令値を作成し、その平均値をサーボ処理用に移動指令値としているので、間欠的に受信される移動指令値が変化するものであっても、円滑に(緩やかに)変化するサーボ処理用の移動指令値となり、円滑なサーボを行うことができる。
また、移動指令値の受信周期が変化しても、移動平均処理用バッファでのバッファに格納される不具合な移動指令値を補正するものであるから、サーボ処理用の移動指令値の局所的な変動を抑制することができる。
以下、本発明による実施形態を図面を用いて説明する。
図1は本発明によるサーボ制御装置の一実施形態を示すブロック構成図であって、1は上位装置、2はこの実施形態のサーボ制御装置、21は指令値補間演算部、22はサーボ制御部、3は電動機、4は検出器である。
同図において、上位装置1は、サーボ制御装置2や電動機3,検出器4などからなる制御対象に、規定の周期tchgで、移動指令値Pk *(但し、k=1,2,3,……)を送信する(なお、「*」は上位装置1から送信されてきたものであることを表し、kは正整数である。また、以下では、周期tchgを規定の受信周期tchgということにする)。サーボ制御装置2は指令補間演算部21とサーボ制御部22とから構成されており、上位装置1からの移動指令値Pk *がこのサーボ制御装置2で受信される。
サーボ制御装置2では、受信された移動指令値Pk *が指令値補間演算部21に供給されて、このサーボ制御装置2の処理周期(以下、サーボ処理周期という)tschg毎に移動指令値Pk *を補間する補間演算処理が行われ、このサーボ処理周期tschg毎に平均化により補間された移動指令値(以下、平均移動指令値という)Psk *をサーボ制御部22に供給する。サーボ制御部22は、電動機3の回転子の位置や速度を検出する検出器4の検出結果を監視しながら、このサーボ処理周期tschg毎に、指令値補間演算部21から供給される平均移動指令値Psk *をもとに電動機の位置や速度電流を制御する。
図2は図1における指令値補間演算部21の基本構成を示すブロック構成図であって、211は移動指令値格納バッファ、212は移動平均処理用バッファ、213は移動平均値演算部、214は移動指令値格納バッファ、215は剰余バッファである。
同図において、この指令値補間演算部21は、移動指令値格納バッファ211と、移動平均処理用バッファ212と、移動平均値演算部213と、移動指令値格納バッファ214と、剰余バッファ215と、さらに、図示しないが、制御部とから構成されており、制御部によって各部が制御される。
受信された上位装置1(図1)からの規定の受信周期tchgの移動指令値Pk *は、順次移動指令値格納バッファ211に格納される。移動指令値格納バッファ211では、格納された移動指令値Pk *をサーボ制御装置2のサーボ処理周期tschgで繰り返し読出し、移動平均処理用バッファ212に順次格納する。なお、移動指令値格納バッファ211では、新たに移動指令値P(k+1) *が格納されると、これまで格納されていた移動指令値Pk *が新たな移動指令値P(k+1) *に更新される。
移動平均処理用バッファ212は、いま、受信周期tchg/サーボ処理周期tschgの商をm+1(但し、mは正整数)とすると、図示するように、(m+1)個のバッファb(0),b(1),b(2),……,b(m)から構成されるものであって、移動指令値格納バッファ211から読み出される移動指令値Pk *はバッファb(0)からバッファb(1),b(2),……,b(m)の順に格納される。従って、いま、移動指令値P1 *が移動指令値格納バッファ211に格納されたとすると、これに次いで、移動指令値格納バッファ211からサーボ処理周期tschgでこの移動指令値P1 *が繰り返し読み出され、最初に読み出された移動指令値P1 *から順にバッファb(0),b(1),b(2),……,b(m)に格納されることになる。ここで、サーボ処理周期tschgが規定の受信周期tchgの1/(m+1)倍とすると、移動指令値格納バッファ211から最初に読み出された移動指令値P1 *から順にバッファb(0),b(1),b(2),……,b(m)に順に格納され、最後のバッファb(m)に移動指令値格納バッファ211から読み出された移動指令値P1 *が書き込まれると、次に受信された移動指令値P2 *が移動指令値格納バッファ211に格納されることになり、同様にして、移動指令値格納バッファ211からこの移動指令値P2 *がサーボ処理周期tschgで繰り返し読み出されて、バッファb(0),b(1),b(2),……,b(m)に順に格納される。
なお、かかるバッファb(0),b(1),b(2),……,b(m)において、移動指令値格納バッファ211からの移動指令値Pk *を格納されるバッファb(i)(但し、i=0,1,2,……,m)は、図示しないが、上記の制御部に設けられたカウンタのカウント値によって指定される。かかるカウンタとしては、移動指令値Pk *が受信される毎にカウント値が「0」にリセットされるカウンタ(以下、リセットカウンタという)や0〜mの値を繰り返しカウントするリングカウンタが用いられる。カウント値が0のときには、バッファb(0)が指定され、カウント値が1のときには、バッファb(1)が指定され、……、カウント値がmのときには、バッファb(m)が指定される。
図2で示す状態は、バッファb(0),b(1),b(2),……,b(m)に移動指令値P1 *が書き込まれた後、次の移動指令値P2 *が移動指令値格納バッファ211に格納されて、移動平均処理用バッファ212のバッファb(0),b(1),b(2)まで移動指令値P2 *が格納された状態を示している。
移動平均処理用バッファ212の全てのバッファb(0),b(1),b(2),……,b(m)から、サーボ処理周期tschgの1周期毎に、同時に移動指令値Pk *が読み出されて移動平均値演算部213に供給され、その平均化処理(平均値計算)により、平均移動指令値Psk(n)*、即ち
Figure 0005259300
が求められる。
ここで、伝送の過程でジッタがなく、受信した移動指令値Pk *の規定周期tchgがサーボ制御装置2の処理周期tschgの(m+1)倍とすると、移動指令値格納バッファ211にk番目に受信された移動指令値Pk *が格納されたとき、この移動指令値格納バッファ211から最初に読み出される移動指令値Pk *が移動平均処理用バッファ212の最初のバッファb(0)に格納され、しかる後、移動平均処理用バッファ212の全てのバッファb(0)〜b(m)が読み出されて、移動平均値演算部213でその平均移動指令値Psk(0)*が計算されるが、これが1回目(n=0)の平均値計算である。そして、移動指令値格納バッファ211から次の2番目の移動指令値Pk *の読み出しが行われて移動平均処理用バッファ212の次のバッファb(1)に格納され、次いで、移動平均処理用バッファ212の全てのバッファb(0)〜b(m)が読み出されて、移動平均値演算部213でその平均移動指令値Psk(1)*が計算されるが、これが2回目(n=1)の平均値計算である。以下同様にして、移動指令値格納バッファ211から次の(m+1)番目の移動指令値P*の読み出しが行われて移動平均処理用バッファ212の次のバッファb(m)に格納され、次いで、移動平均処理用バッファ212の全てのバッファb(0)〜b(m)が読み出されて、移動平均値演算部213でその平均移動指令値Psk(m+1)*が計算されるが、これが(m+1)回目(n=m+1)の平均値計算であるが、これに続いて、次の移動指令値Pk+1 *が受信されて移動指令値格納バッファ211に格納され、上記と同様、移動平均処理用バッファ212の最初のバッファb(0)からのこの移動指令値Pk+1 *の格納が行われて、その格納が行われる毎に、n=0,1,2,……として、移動平均値演算部213でバッファb(0)〜b(m)の移動指令値Pk+1 *の平均移動指令値Ps(k+1)(n)*(なお、特定するものでないときには、単に、平均移動指令値Pskと表現する)が計算される。
なお、夫々の平均値計算において、値(m+1)未満の余り(剰余)値R(n−1)が生じた場合には、この剰余値R(n−1)が剰余バッファ215で一旦保持され、上記数1に示すように、次の平均値計算のとき、バッファb(0)〜b(m)の移動指令値Pk *の加算値にこの剰余値R(n−1)が剰余バッファ215から読み出されて加算されて平均移動指令値Psk *が計算される。これにより、この剰余値R(n−1)による影響を低減する(この剰余値R(n−1)を削除すると、受信される移動指令値Pとサーボ制御操作2で処理して得られる移動指令値との間で誤差が生ずる)。
移動平均値演算部213で順次得られる平均移動指令値Psk *は移動指令値格納バッファ214に一旦格納され、処理周期tschgで読み出されてサーボ制御装置2での移動指令値Psk *としてサーボ制御部22(図1)に供給される。サーボ制御部22は、この移動指令値Psk *に応じて電動機3(図1)のサーボ制御を行う。
図3は移動指令値P1 *が移動平均処理用バッファ212の最後のバッファb(m)に格納されてから図2に示す状態になるまでの移動平均処理用バッファ212の格納状態の変遷を示す図である。
図3(a)は移動指令値P1 *が移動指令値格納バッファ211に格納され、n=m+1回目の移動指令値P1 *が移動指令値格納バッファ211から読み出されて移動平均処理用バッファ212のn=m+1番目のバッファb(m)に格納された状態を示すものであって、このときの移動平均値演算部213で得られる平均移動指令値Psk *をPs1(m)*とし、余剰値RをR1(m)とする。
なお、移動指令値Pk *が規定の受信周期tchgで受信されるときには、この最後のバッファb(m)に移動指令値P(k-1) *が格納される期間(処理周期tschgの期間)に、次の移動指令値Pk *が受信されて移動指令値格納バッファ211に格納される。
図3(b)は次に移動指令値P2 *が移動指令値格納バッファ211に格納されて、移動指令値格納バッファ211から1回目(n=0)の、即ち、最初の移動指令値P2 *の読み出しが行われ、移動平均処理用バッファ212の最初(i=0)のバッファb(0)に格納された状態を示すものであって、このときの移動平均値演算部213で得られる平均移動指令値Psk(n)*をPs2(0)*とし、余剰値RをR2(0)とする。
図3(c)は移動指令値格納バッファ211から2回目(n=1)の移動指令値P2 *の読み出しが行われて、移動平均処理用バッファ212の2番目(i=1)のバッファb(1)に格納された状態を示すものであって、このときの移動平均値演算部213で得られる平均移動指令値Psk(n)*をPs2(1)*とし、余剰値RをR2(1)とする。
図3(d)は移動指令値格納バッファ211から3回目(n=2)の移動指令値P2 *の読み出しが行われて、移動平均処理用バッファ212の3番目(i=2)のバッファb(2)に格納された状態を示すものであって、このときの移動平均値演算部213で得られる平均移動指令値Psk(n)*をPs2(2)*とし、余剰値RをR2(2)とする。
以下同様にして、移動指令値格納バッファ211から移動指令値P2 *が繰り返し読み出され、移動平均処理用バッファ212のバッファb(3),b(4),……に順次格納され、格納される毎に上記数1による平均移動指令値Psk *が求められる。ここで、(n+1)番目のバッファb(n)に移動指令値P2 *が格納されたときの平均移動指令値PskをPs2(n)*とし、余剰値RをR2(n)とする。
以上の平均移動指令値Ps1(m)*,Ps2(0)*,Ps2(1)*,Ps2(2)*,Ps2(3)*,……,Ps2(n)*は、上記の数1により、次のようにして求められる。
Ps1(m)*={0・P2 *+(m+1)・P1 *+R(m−1)}/(m+1)
剰余値R=R1(m)
但し、R(m−1)は前回の平均値計算で得られた剰余値
Ps2(0)*={1・P2 *+(m+1−1)・P1 *+R(m)}/(m+1)
剰余値R=R2(0)
Ps2(1)*={2・P2 *+(m+1−2)・P1 *+R(0)}/(m+1)
剰余値R=R2(1)
Ps2(2)*={3・P2 *+(m+1−3)・P1 *+R(1)}/(m+1)
剰余値R=R2(2)
Ps2(3)*={4・P2 *+(m+1−4)・P1 *+R(2)}/(m+1)
剰余値R=R2(3)
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ps2(n)*={(n+1)・P2 *+(m+1−(n+1))・P1 *
+R(n−1)}/(m+1)
剰余値R=R2(n)
となる。
ここで、受信周期tchg=2msec、サーボ処理周期tschg=200μsec(=0.2msec)とし、受信移動指令値P*がP0 *=0,P1 *=1000,P2 *=2000,P3 *=3000と規定の受信周期tchgで変化した場合のサーボ処理周期tschgでの平均移動指令値Psk(n)*の変化を数値でもって具体的に説明する。
なお、ここでは、m+1=tchg/tschg=10であるから、m=9であり、移動平均処理用バッファ212では、バッファb(0),b(1),b(2),……,b(9)の10個のバッファが設けられることになる。
また、(n+1)番目のバッファb(n)に移動指令値Pk *が格納されて計算される平均移動指令値Psk(n)*の、その1つ前の(n)番目のバッファb(n−1)にこの移動指令値Pk *が格納されて計算された平均移動指令値Psk(n−1)*に対する変化量(以下、平均移動指令値Psk(n)*の変化量という)ΔPsk(n)は、
ΔPsk(n)=Psk(n)*−Psk(n−1)*
で表される。
但し、ここでは、受信移動指令値P0 *(k=0)=0であるから、平均移動指令値Ps0(n)*は全て0であり、剰余値R0(n)も0である。
そこで、受信移動指令値P1 *,P2 *,P3 *が規定の受信周期tchgで順次供給されるときの、移動平均値演算部213によってサーボ処理周期tschgで順次得られる平均移動指令値Ps1(n)*,平均移動指令値Ps2(n)*,平均移動指令値Ps3(n)*は次の通りである。
受信移動指令値P1 *を受信:
Ps1(0)*={1・P1 *+(10−1)・P0 *+R0(9)}/10=100
1(0)=0 ΔPs1(0)=100
Ps1(1)*={2・P1 *+(10−2)・P0 *+R1(0)}/10=200
1(1)=0 ΔPs1(1)=100
Ps1(2)*={3・P1 *+(10−3)・P0 *+R1(1)}/10=300
1(2)=0 ΔPs1(2)=100
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ps1(8)*={9・P1 *+(10−9)・P0 *+R1(7)}/10=900
1(8)=0 ΔPs1(8)=100
Ps1(9)*={10・P1 *+(10−10)・P0 *+R1(8)}/10
=1000
1(9)=0 ΔPs1(9)=100
受信移動指令値P2 *を受信:
Ps2(0)*={1・P2 *+(10−1)・P1 *+R1(9)}/10=1100
2(0)=0 ΔPs2(0)=100
Ps2(1)*={2・P2 *+(10−2)・P1 *+R2(0)}/10=1200
2(1)=0 ΔPs2(1)=100
Ps2(2)*={3・P2 *+(10−3)・P1 *+R2(1)}/10=1300
2(2)=0 ΔPs2(2)=100
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ps2(8)*={9・P2 *+(10−9)・P1 *+R2(7)}/10=1900
2(8)=0 ΔPs2(8)=100
Ps2(9)*={10・P2 *+(10−10)・P1 *+R2(8)}/10
=2000
2(9)=0 ΔPs2(9)=100
受信移動指令値P3 *を受信:
Ps3(0)*={1・P3 *+(10−1)・P2 *+R2(9)}/10=2100
3(0)=0 ΔPs3(0)=100
Ps3(1)*={2・P3 *+(10−2)・P2 *+R3(0)}/10=2200
3(1)=0 ΔPs3(1)=100
Ps3(2)*={3・P3 *+(10−3)・P2 *+R3(1)}/10=2300
3(2)=0 ΔPs3(2)=100
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ps3(8)*={9・P3 *+(10−9)・P2 *+R3(7)}/10=2900
3(8)=0 ΔPs3(8)=100
Ps3(9)*={10・P3 *+(10−10)・P2 *+R3(8)}/10
=3000
3(9)=0 ΔPs3(9)=100。
図4は以上の平均移動指令値Ps1(0)*〜Ps3(9)*の時間的な変化を示すグラフ図であって、規定の受信周期tchgで受信される受信移動指令値Pk *が線形的に増加するのに対し、図示するように、平均移動指令値Psk *は、サーボ処理周期tschg毎に、同じ変化量ΔPskずつ、即ち、直線状に増大する。これにより、電動機3(図1)のスムーズなサーボ制御が行われることになる。
一方、受信移動指令値Pk *がジッタなどの影響により、その受信周期が規定の受信周期tchgからずれる場合がある。図5は、このジッタなどの影響により、受信周期が受信周期tchgよりもサーボ処理周期tschg程度短くなったときの図2における移動平均処理用バッファ212での受信移動指令値Pk *の格納状況の変化を示す図である。なお、ここでも、上記と同様、m+1=10(n=0,1,2,……,9)とする。
図5(a)は移動指令値P2 *が移動指令値格納バッファ211に格納され、移動指令値格納バッファ211からの移動指令値P2 *の9回目(n=8)の読み出しが行われて、移動平均処理用バッファ212の9番目のバッファb(8)に格納された状態を示すものである。
ここで、ジッタにより、受信移動指令値Pk *の受信周期が規定の受信周期tchgよりもサーボ処理周期tschg程度短くなっているものとすると、図5(a)に示す状態のときに、即ち、移動指令値P2 *がこのバッファb(8)に格納されて移動平均値演算部213で平均移動指令値Ps1(8)*が求められる期間に、次の移動指令値P3 *が受信されて移動指令値格納バッファ211に格納されることになり、ここで、バッファ(i)の指定にリセットカウンタが使用されている場合には、次に、移動平均処理用バッファ212の最初のバッファb(0)が指定されるから、移動指令値格納バッファ211から最初に読み出される移動指令値P3 *は、図5(b)に示すように、この最初のバッファb(0)に格納される。そして、それ以降、b(1),b(2),b(3),……の順に移動指令値P3 *が格納されていき、図5(c)に示すように、バッファb(8)に移動指令値P3 *が格納され、次いで、図5(d)に示すように、バッファb(9)に移動指令値P3 *が格納される。そして、このバッファb(9)に移動指令値P3 *が格納されるときの期間に、次の移動指令値P4 *が受信され、最初のバッファb(0)からこの移動指令値P4 *が順に格納されていく。
これに対し、バッファb(i)の指定にリングカウンタが使用されている場合には、図5(a)に示す状態で次の移動指令値P3 *が受信されるから、このリングカウンタは次にバッファb(9)を指定することになり、このため、このバッファb(9)にこの移動指令値P3 *が最初に格納される図5(b’)に示す状態となる。これ以降では、移動指令値格納バッファ211から順に読み出される移動指令値P3 *は、最初のバッファb(0)から順に格納される。
そこで、バッファb(i)を指定するカウンタがリセットカウンタである場合の、移動指令値P3 *が受信される前後の移動平均値演算部213で得られるサーボ処理周期tschgの平均移動指令値Ps2(7)*〜Ps3(9)*を示すと、次のようになる。但し、図3に示した先の例と同様、P0 *=0,P1 *=1000,P2 *=2000,P3 *=3000とし、平均移動指令値Ps2(6)*までは図3に示した例と同様である。
Ps2(7)*={8・P2 *+(10−8)・P1 *+R1(6)}/10=1800
2(7)=0 ΔPs2(7)=100
Ps2(8)*={9・P2 *+(10−9)・P1 *+R2(7)}/10=1900
2(8)=0 ΔPs2(8)=100
受信移動指令値P3 *を受信:
Ps3(0)*={1・P3 *+(10−2)・P2 *+1・P1 *+R2(8)}/10
=2000
3(0)=0 ΔPs3(0)=100
Ps3(1)*={2・P3 *+(10−3)・P2 *+1・P1 *+R3(0)}/10
=2100
3(0)=0 ΔPs3(1)=100
Ps3(2)*={3・P3 *+(10−4)・P2 *+1・P1 *+R3(1)}/10
=2200
3(2)=0 ΔPs3(2)=100
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ps3(7)*={8・P3 *+(10−9)・P2 *+1・P1 *+R2(6)}/10
=2700
3(7)=0 ΔPs3(7)=100
Ps3(8)*={9・P3 *+(10−10)・P2 *+1・P1 *+R3(7)}/10
=2800
3(8)=0 ΔPs3(8)=100
Ps3(9)*={10・P3 *+(10−10)・P2 *+R3(1)}/10
=3000
3(9)=0 ΔPs3(9)=200。
ここで、次の移動指令値P4 *が受信されることになるが、P4 *=4000とすると、この移動指令値P4 *が移動平均処理用バッファ212のバッファb(0)に格納されたときの平均移動指令値Ps4(0)*は、
Ps4(0)*={1・P4 *+(10−1)・P3 *+R3(9)}/10=3100
3(2)=0 ΔPs3(2)=100
となる。
このように、規定の受信周期tchgよりも1サーボ処理周期tschg程度短い受信周期で移動指令値P3 *が受信されると、これまで平均移動指令値Ps2(n)*の変化量ΔPs2(n)は一定であったが(上記の例では、ΔPs2(n)=100)、この短い周期で移動指令値P3 *が受信された時点での平均移動指令値Ps2(8)*と平均移動指令値Ps3(9)*との間で、ΔPs3(n)=200という、平均移動指令値Ps3(9)*の変化量ΔPs3(9)に大きな変動が現われることになる。
一方、バッファb(i)を指定するカウンタがリングカウンタである場合について示すと、次のようになる。
Ps2(7)*={8・P2 *+(10−8)・P1 *+R1(6)}/10=1800
2(7)=0 ΔPs2(7)=100
Ps2(8)*={9・P2 *+(10−9)・P1 *+R2(7)}/10=1900
2(8)=0 ΔPs2(8)=100
受信移動指令値P3 *を受信:
Ps3(0)*={1・P3 *+(10−1)・P2 *+R2(8)}/10=2100
3(0)=0 ΔPs3(0)=200
Ps3(1)*={2・P3 *+(10−2)・P2 *+R3(0)}/10=2200
3(0)=0 ΔPs3(1)=100
Ps3(2)*={3・P3 *+(10−3)・P2 *+R3(1)}/10=2300
3(2)=0 ΔPs3(2)=100
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ps3(7)*={8・P3 *+(10−8)・P2 *+R2(6)}/10=2800
3(7)=0 ΔPs3(7)=100
Ps3(8)*={9・P3 *+(10−9)・P2 *+R3(7)}/10=2900
3(8)=0 ΔPs3(8)=100
Ps3(9)*={10・P3 *+(10−10)・P2 *+R3(1)}/10=3000
3(9)=0 ΔPs3(9)=100。
このように、受信周期tchgよりも1サーボ処理周期tschg程度短い受信周期で移動指令値P3 *が受信されると、バッファb(i)を指定するカウンタがリングカウンタである場合には、移動指令値P3 *が受信された後の最初の平均移動指令値Ps2(0)*で、ΔPsk(n)=200という、変化量ΔPsk(n)に大きな変動が現われることになる。
図6はリングカウンタを使用した場合の移動指令値P2 *を受信してから移動指令値P4 *を受信したときまでの期間での平均移動指令値Psk(n)*の変化を示す図であって、受信周期が規定の受信周期tchgよりも短い移動指令値P3 *を受信した時点での平均移動指令値Ps3(0)*(矢印Aで示す)に局所的な変動が現われる。
なお、リセットカウンタが使用された場合には、移動指令値P3 *を受信した後での平均移動指令値Ps3(9)*に局所的な変動が現われる。
図7は移動指令値Pkの受信周期が規定の受信周期tchgが、上記のように、短くなった場合に生ずる平均移動指令値Psk(n)*の変化量ΔPsk(n)の局所的な変動を抑制することができるようにした図1における指令値補間演算部21の第1の具体例を示すブロック構成図であって、216は不足バッファ補正処理部であり、図2に対応する部分には同一符号をつけて重複する説明を省略する。
同図において、移動平均処理用バッファ212は、バッファb(i)を指定するカウンタとして、リングカウンタを使用した場合の図5(b’)と同じ状態を示している。この第1の具体例では、この移動平均処理用バッファ212でバッファb(0)から順に移動指令値P2 *が格納されていくとき、最後のバッファb(m)でこの移動指令値P2 *に代わって次の移動指令値P3 *が格納されるものであり、しかる後、バッファb(0)から順に移動指令値P3 *が格納されていくが、このような所定回数α(但し、αはm+1以下の正整数)の各格納毎に、最後のバッファb(m)に格納されて移動指令値P1 *を更新した移動指令値P3 *を補正するものであり、かかる補正を不足バッファ補正処理部216で補正する。
バッファb(m)に格納されていた移動指令値P(k-1) *(ここでは、移動指令値P1 *)は、新たに移動指令値P(k+1) *(ここでは、移動指令値P3 *)が受信されると、本来期待する移動指令値Pk *(ここでは、移動指令値P2 *)に更新されない。不足バッファ補正処理部216は、この移動指令値P(k-1) *をα回にわたって補正処理することにより、本来格納されるべき移動指令値Pk *に補正するものである。
即ち、バッファb(0)に新たな移動指令値P(k+1) *が格納されると、バッファb(m)での移動指令値P(k-1) *を移動指令値Pk *に近づくように補正し、次に、バッファb(1)に新たな移動指令値P(k+1) *が格納されると、バッファb(m)での補正された移動指令値を移動指令値Pk *に近づくようにさらに補正し、……、バッファb(α−1)に新たな移動指令値P(k+1) *が格納されると、バッファb(m)での補正された移動指令値を、移動指令値Pk *に等しくなるように、さらに補正するものである。移動平均値演算部213での平均値計算では、バッファb(m)の移動指令値として、この補正された移動指令値が用いられる。
図8は図7における不足バッファ補正処理部216の補正処理の一具体例を示す図である。
同図において、不足バッファ補正処理部216では、最後のバッファb(m)でのj回目(但し、j=1,2,……,α)の補正された移動指令値を、補正移動指令値b(k+1)(j)(m)とすると、リセットカウンタが使用される場合、
Figure 0005259300
で表される。図5に示す状態では、P(k-1) *=P1 *,Pk *=P2 *であるから、
3(j)(m)=P1 *+(P2 *−P1 *)・j/α
となり、j=αのとき、
3(α)(m)=P1 *+(P2 *−P1 *)=P2 *
である。従って、かかる補正は、最後のバッファb(m)格納されていた移動指令値P1 *が移動指令値P2 *になるまで、(P2 *−P1 *)/αずつ補正されていくことになる。(α+1)回以降の平均値計算では、バッファb(m)に関しては、これに格納されているこの移動指令値P2 *が用いられる。即ち、バッファb(m)では、更新されなかった移動指令値P1 *が順次移動指令値P2 *へと更新されていくことになる。
このようにして、バッファb(m)での移動指令値が更新されることにより、図6において、移動指令値P3 *を受信した直後の平均移動指令値Ps3(0)*で生じた矢印Aで示すような局所的な変動が抑圧されることになる。
図9は図7に示す指令値補間演算部21の動作を示すフロー図である。ここでは、リセットカウンタが使用された場合を例に説明する。リングカウンタが使用される場合も、周期tchgが短い新たな移動指令値P(k+1) *が最初に格納されるバッファが異なるだけであって、動作は同様である。
同図において、移動平均処理用バッファ212でのバッファb(0)〜b(m)がカウンタによって順次指定されて移動指令値Pk *が格納されており、移動指令値Pk *の格納のためにバッファb(m−1)が指定された期間内に次の移動指令値P(k+1)が受信されないときには(ステップ100の“No”)、移動平均処理用バッファ212でのバッファb(0)〜b(m)から移動指令値P*が読み出され(ステップ106)、これをもとに移動平均値演算部213で平均移動指令値Psk *が生成される(ステップ107)。このとき、j=αに設定されており(ステップ108の“Yes”)、ステップ100に戻る。移動指令値Pk *の受信周期が、上記のように、受信周期tchgよりも短くならない限り、このステップ100,106〜108の動作が繰り返され、これによって、サーボ処理周期tschgで平均移動指令値Psk *が順次生成される。
ここで、移動指令値Pk *の受信周期が、上記のように、受信周期tchgよりも短くなり、移動平均処理用バッファ212でのバッファb(m−1)の指定期間内に次の移動指令値P(k+1) *が受信されると(ステップ100の“Yes”)、j=1が設定され(ステップ101)、移動平均処理用バッファ212でのバッファb(m−1)から移動指令値Pk *が、バッファb(m)から移動指令値P(k-1) *夫々読み出され、不足バッファ補正処理部216に供給される(ステップ102)。不足バッファ補正処理部216では、これら移動指令値Pk *,P(k-1) *が保存されるとともに(ステップ103)、これら移動指令値Pk *,P(k-1) *を用いて上記数2の演算処理が行われ、このバッファb(m)での移動指令値P(k-1) *に対する補正移動指令値b(k+1)(1)(m)が生成され(ステップ104)、これがバッファb(m)に格納される(ステップ105)。
しかる後、移動平均値演算部213でj=1回目のバッファb(0)〜b(m)からの移動指令値P*の読み出しが行われ(ステップ106)、これをもとに平均移動指令値Ps(k+1) *が生成される(ステップ107)。
そして、j<αであるので(ステップ108の“No”)、j=2とし(ステップ109)、ステッフ104に戻って、不足バッファ補正処理部216で、保存されている移動指令値P(k+1) *,P(k-1) *をもとに、次の補正移動指令値b(k+1)(2)(m)が生成され(ステップ104)、以下、ステップ105以下の動作が繰り返される。
その後、j>αとなると(ステップの“Yes”)、ステップ100に戻り、バッファb(m)での移動指令値P*がj=αのときの補正移動指令値b(k+1)(α)(m)である状態で、ステップ106〜108,100の動作が繰り返されて順次平均移動指令値Ps(k+1) *が生成される。
ここで、バッファb(i)を指定するカウンタとして、リセットカウンタを用いた場合での、m=9,α=4としたときの補正移動指令値b(k+1)(j)(m),平均移動指令値Ps(k+1) *の数値例を、移動指令値P2 *をバッファb(7)に格納するタイミングから移動指令値P3 *をバッファb(9)に格納するタイミングまでの平均移動指令値Ps*とともに、示すと、次のようになる。但し、上記のように、P2 *=2000,P3 *=3000とする。
Ps2(7)*={8・P2 *+(10−8)・P1 *+R1(6)}/10=1800
2(7)=0 ΔPs2(7)=100
Ps2(8)*={9・P2 *+(10−9)・P1 *+R2(7)}/10=1900
2(8)=0 ΔPs2(8)=100
受信移動指令値P3 *を受信:
Ps3(0)*={1・P3 *+(10−2)・P2 *+b3(1)(9)
+R2(8)}/10=2025
但し、b3(1)(9)=P1 *+(P2 *−P1 *)・1/4=1250
3(0)=0 ΔPs3(0)=125
Ps3(1)*={2・P3 *+(10−3)・P2 *+b3(2)(9)
+R3(0)}/10=2150
但し、b3(1)(9)=P1 *+(P2 *−P1 *)・2/4=1500
3(0)=0 ΔPs3(1)=125
Ps3(2)*={3・P3 *+(10−4)・P2 *+b3(3)(9)
+R3(1)}/10=2275
但し、b3(1)(9)=P1 *+(P2 *−P1 *)・3/4=1750
3(2)=0 ΔPs3(2)=125
Ps3(3)*={4・P3 *+(10−5)・P2 *+b3(4)(9)
+R3(2)}/10=2400
但し、b3(4)(9)=P1 *+(P2 *−P1 *)・4/4=2000
3(3)=0 ΔPs3(3)=125
Ps3(4)*={5・P3 *+(10−6)・P2 *+b3(4)(9)
+R3(2)}/10=2500
3(3)=0 ΔPs3(3)=100
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ps3(7)*={8・P3 *+(10−9)・P2 *+b3(4)(9)
+R3(6)}/10=2800
3(7)=0 ΔPs3(7)=100
Ps3(8)*={9・P3 *+(10−10)・P2 *+b3(4)(9)
+R3(7)}/10=2900
3(8)=0 ΔPs3(8)=100
Ps3(9)*={10・P3 *+(10−10)・P2 *+R3(8)}/10
=3000
3(9)=0 ΔPs3(9)=100。
このように、平均移動指令値Ps2(i),Ps3(i+1)が得られが、これを図6で示したバッファb(9)に格納されている移動指令値P1 *を補正しない場合と比較すると、移動指令値P1 *の補正が行われた平均移動指令値Ps3(0),Ps3(1),Ps3(2),Ps3(3)で変化量ΔPsk(n)が値「25」だけ増加しているのに対し、平均移動指令値Ps3(9)では、変化量ΔPsk(n)が値「100」だけ減少して、値「100」となっており、変化量ΔPsk(n)の局所的な増加の変動が発生していない。このことは、バッファb(9)に格納されている移動指令値P1 *を補正しなければ発生するこの局所的な増加の変動が、移動指令値P1 *の補正が行われた平均移動指令値Ps3(0),Ps3(1),Ps3(2),Ps3(3)に分散されたことによるものである。
以上のようにして、この具体例では、ジッタなどによって受信される移動指令値Pk *の周期tchgが短くなっても、これによって生ずる平均移動指令値Psk *の変化量ΔPsk(n)の局所的な変動を他の平均移動指令値Psk *に分散することができ、これにより、この平均移動指令値Psk *の変化量ΔPsk(n)の局所的な変動を抑制することができるものである。
なお、上記の例では、α=4としたが、これに限るものではなく、αを大きくすることにより、かかる局所的な増加の変動量をより多くの平均移動指令値Psk *への分散が可能となり、より均一な変化量変化量ΔPsk(n)で平均移動指令値Psk *が変化することになる。
ところで、以上は、移動指令値Pk *の受信周期が規定の受信周期tchgよりも短くなった場合であったが、逆に長くなる場合もある。図10は、このジッタなどの影響により、移動指令値Pk *の受信周期が規定の受信周期tchgよりも1サーボ処理周期tschg程度長くなったときの図2における移動平均処理用バッファ212での受信移動指令値Pk *の格納状況の変化を示す図である。なお、ここでも、上記と同様、m+1=10(i=0,1,2,……,9)とする。
図10(a)は移動指令値P2 *が移動指令値格納バッファ211に格納されて、移動指令値格納バッファ211からm(=9)回目の移動指令値P2 *の読み出しがあって、移動平均処理用バッファ212の9番目のバッファb(8)に格納された状態を示すものである。
また、図10(b)は次の、即ち、移動指令値格納バッファ211からm+1(=10)回目の移動指令値P2 *の読み出しがあって、移動平均処理用バッファ212の10番目、即ち、最後のバッファb(9)に格納された状態を示すものである。
ここで、ジッタにより、受信移動指令値Pk *の受信周期が規定の受信周期tchgよりも1サーボ処理周期tschg程度長くなっており、移動平均処理用バッファ212のバッファb(0)〜b(m)を移動指令値Pk *を格納するために指定するカウンタがリングカウンタである場合には、次のサーボ処理周期tschgでは、最初のバッファb(0)が指定されるから、移動平均処理用バッファ212の状態は、図10(c)に示すように、図10(b)に示す状態と同じ状態が維持される(なお、このときを、特に、n=11としている)。そして、このときに、次の移動指令値P3 *が受信されて移動指令値格納バッファ211に格納されるが、これにより、移動平均処理用バッファ212のバッファb(i)を指定する上記のカウンタがバッファb(1)からの指定が開始されるから、このとき、移動平均処理用バッファ212の状態は、図5(d)に示すように、移動指令値格納バッファ211から最初に読み出された移動指令値P3 *がバッファb(1)に格納される。そして、それ以降、b(2),b(3),……の順に移動指令値P3 *が格納されていく。
なお、この具体例は、移動平均処理用バッファ212のバッファb(i)を指定するカウンタとして、0〜mのカウントを繰り返すリングカウンタとするものであるが、仮りに、移動指定値Pk *が受信される毎にリセットされるリセットカウンタが使用される場合には、バッファb(0)から新たな移動指令値P3 *が格納されることになるから、図10(c)の状態から図10(d’)に示す状態に移行することになる。
そこで、リングカウンタの指定により、移動平均処理用バッファ212の状態が図10(a),(b),(c),(d)に示すように移行する場合の移動指令値P3 *が受信される前後の移動平均値演算部213で得られるサーボ処理周期tschgの平均移動指令値Ps2(8)*〜Ps3(9)*を示すと、次のようになる。但し、図3に示した先の例と同様、P0 *=0,P1 *=1000,P2 *=2000,P3 *=3000とし、平均移動指令値Ps2(7)*までは図3に示した例と同様であって、図10(a)に示す状態から示す。
Ps2(8)*={9・P2 *+(10−9)・P1 *+R2(7)}/10 =1900
2(8)=0 ΔPs2(8)=100
Ps2(9)*={10・P2 *+(10−10)・P1 *+R1(6)}/10=2000
2(9)=0 ΔPs2(9)=100
Ps2(10)*=Ps2(9)*=2000
2(10)=0 ΔPs2(10)=0
受信移動指令値P3 *を受信:
Ps3(0)*={1・P3 *+(10−1)・P2 *+R2(8)}/10=2100
3(0)=0 ΔPs3(0)=100
Ps3(1)*={2・P3 *+(10−2)・P2 *+R3(0)}/10=2200
3(1)=0 ΔPs3(1)=100
Ps3(2)*={3・P3 *+(10−3)・P2 *+R3(1)}/10=2300
3(2)=0 ΔPs3(2)=100
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ps3(8)*={9・P3 *+(10−9)・P2 *+R3(7)}/10 =2900
3(8)=0 ΔPs3(8)=100
Ps3(9)*={10・P3 *+(10−10)・P2 *+R3(1)}/10=3000
3(9)=0 ΔPs3(9)=100。
なお、移動平均処理用バッファ212のバッファb(0)〜b(m)を指定するカウンタがリセットカウンタである場合も、図10(c)に示す状態が存在するから、上記の移動指令値Pk *の受信によってリングカウンタを用いた場合と同様である。
このように、規定の受信周期tchgよりも1サーボ処理周期tschg程度長くなった受信周期で移動指令値P3 *が受信されると、これまで平均移動指令値Psk(n)*の変化量ΔPsk(n)は一定であったが(上記の例では、ΔPsk(n)=100)、この移動指令値P3 *の受信直後で、平均移動指令値Psk(n)*の変化量ΔPsk(n)に、これが変化しないという局所的な変動が現われることになる。
図11は移動指令値P2 *を受信してから移動指令値P4 *を受信したときまでの期間での平均移動指令値Psk(n)*の変化を示す図であって、移動指令値P3 *を受信する直前に得られる平均移動指令値Ps3(9)*に(矢印B)、変化しないという局所的変動が現れる。
図12は移動指令値Pkの受信周期が規定の受信周期tchgよりも長くなった場合に生ずる平均移動指令値Psk(n)*の変化量ΔPsk(n)の局所的な変動を抑制することができるようにした図1における指令値補間演算部21の第2の具体例を示すブロック構成図であって、217は超過バッファ補正処理部であり、図2に対応する部分には同一符号をつけて重複する説明を省略する。
同図において、移動平均処理用バッファ212は、図10(c)と同じ状態にあることを示している。この第2の具体例では、この移動平均処理用バッファ212でバッファb(0)から順に移動指令値P2 *が格納されていくとき、最後のバッファb(m)で移動指令値P2 *の格納がなされても、次の移動指令値P3 *は受信されず、1サーボ処理周期tschgだけ遅れて受信されるものであり、受信されるべき期間(即ち、バッファb(9)に移動指令値P2 *の格納が行われた図10(b)に示す状態の期間)に次の移動指令値P3 *が受信されないことが検出されると、超過バッファ補正処理部217が図10(c)に示す状態にあるバッファb(0)での移動指令値P2 *の補正を行い、さらに、これ以降、バッファb(1),b(2),……と移動指令値P3 *が格納されていくものである。
図13は図12における超過バッファ補正処理部217の一具体例を示すブロック構成図であって、218〜220は移動指令値格納バッファ、221は超過バッファ補正演算部、222,223は前回値保存処理部である。なお、移動平均処理用バッファ212のバッファb(0)〜b(m)を指定するカウンタとしては、ここでは、リングカウンタが使用されるものとする。
同図において、移動指令値格納バッファ218〜220は夫々受信した移動指令値Pk *を格納するものであって、移動指令値格納バッファ218には、最新の受信移動指令値P(k+1) *が、移動指令値格納バッファ219には、1つ前に受信した移動指令値Pk *が、移動指令値格納バッファ220には、2つ前に受信した移動指令値P(k-1) *が夫々格納される。ここで、移動指令値格納バッファ218に移動指令値Pk *が、移動指令値格納バッファ219に移動指令値P(k-1) *が、移動指令値格納バッファ220に移動指令値P(k-2) *が夫々格納された状態で、次の移動指令値P(k+1) *が受信されると、移動指令値格納バッファ219に格納されている移動指令値P(k-1) *が読み出されて、前回値保存処理部223を介して移動指令値格納バッファ220に格納され、移動指令値格納バッファ218に格納されている移動指令値Pk *が読み出されて、前回値保存処理部222を介して移動指令値格納バッファ219に格納される。そして、新たに受信された受信移動指令値P(k+1) *は移動指令値格納バッファ218に格納される。
超過バッファ補正演算部221は、新たに移動指令値P(k+1) *が受信されるべき期間にこの移動指令値P(k+1) *が受信されないとき、即ち、移動平均処理用バッファ212の状態が図10(b)に示す状態で移動指令値P(k+1) *が受信されないときに動作し、このとき移動指令値格納バッファ218,219,220に格納されている移動指令値P(k) *,P(k-1) *,P(k-2) *を用いて移動指令値格納バッファ220でのバッファb(0)に格納されている移動指令値Pk *の補正値(補正移動指令値)b(k+1)(0)(0)を生成する(ここで、「(k+1)」は格納予定の移動指令値P(k+1) *を予測するものであることを表し、「(0)」はバッファb(0)であることを表し、「(0)」は最初の補正移動指令値であることを表している)。ここで、補正移動指令値b(k+1)(0)(0)は、移動指令値格納バッファ218,219,220に格納されている移動指令値P(k) *,P(k-1) *,P(k-2) *から、現在バッファb(0)に格納されるべき移動指令値P(k+1) *を予測した値である。
図13はこのときの状態(即ち、図10(c)でのバッファb(0)の移動指令値を補正する状態)を示すものであって、移動指令値格納バッファ218に受信移動指令値P2 *が、移動指令値格納バッファ219に移動指令値P1 *が、移動指令値格納バッファ220に移動指令値P0 *が夫々格納されている。超過バッファ補正演算部221は、これら移動指令値P2 *,P1 *,P0 *から、バッファb(0)に対する補正移動指令値b3(0)(0)を、
Figure 0005259300
として求める。なお、この数3において、右辺第1項が位置を表わすものとすると、第2項は位置の変化で速度を表しており、第3項は速度の変化で加速度を表している。この数3に示す補正移動指令値b3(0)(0)は、移動指令値P0 *から移動指令値P2 *までの変化をもとに、位置と速度と加速度とにより、次の移動指令値P3 *を予測するものである。
超過バッファ補正演算部221で生成されたこの補正移動指令値b3(0)(0)は、図10(c)に示す状態にある移動平均処理用バッファ212(図12)のバッファb(0)に格納される。即ち、このとき、このバッファb(0)では、移動指令値P2 *が格納されたままとなっているが、これがこの補正移動指令値b3(0)(0)に更新されることになる。
このように、図10(c)の状態でバッファb(0)にこの補正移動指令値b3(0)(0)が格納されると、移動平均値演算部213(図12)において、移動平均処理用バッファ212での各バッファb(0)〜b(m)に格納された移動指令値P2 *が取り込まれ(但し、バッファb(0)からは、この補正移動指令値b3(0)(0)が取り込まれる)、第1の具体例と同様、移動指令値P2 *による平均移動指令値Ps2(n)*に続く移動指令値P2 *による平均移動指令値として、平均移動指令値Ps3(0)が生成される。
次に、移動指令値P3 *が受信されると、移動指令値格納バッファ218に受信された移動指令値P3 *が格納され、また、移動平均処理用バッファ212では、バッファb(1)にこの新たに受信された移動指令値P3 *が格納される。なお、ここでは、リングカウンタが使用されるので、バッファb(0)に上記の補正移動指令値b3(0)(0)がそのまま格納された状態にある。これ以降では、移動平均処理用バッファ212でのバッファb(2),b(3),……,b(m)に順に移動指令値P3 *が格納されていき、その都度移動平均値演算部213(図12)で平均移動指令値Ps3(n)*が生成される。
ここで、m=9,β=4としたときの補正移動指令値b3(0)(0),平均移動指令値Ps2 *,Ps3 *の数値例を、移動指令値P2 *をバッファb(8)(図10(a)に示す状態)に格納するタイミングから移動指令値P3 *をバッファb(9)に格納するタイミングまでの平均移動指令値Ps*とともに示す。但し、一例として、上記のように、P0 *=0,P1 *=1000,P2 *=2000,P3 *=3000とし、Ps2(7)*までは図11の場合と同様である。
Ps2(8)*={9・P2 *+(10−9)・P1 *+R2(7)}/10=1900
2(8)=0 ΔPs2(8)=100
Ps2(9)*={10・P2 *+(10−10)・P1 *+R1(6)}/10
=2000
2(7)=0 ΔPs2(7)=100
Ps2(10)*=Ps3(0)*
={b3(0)(0)+(10−1)・P2 *
+R1(6)}/10=2100
但し、b3(0)(0)=P2 *+(P2 *−P1 *)+{(P2 *−P1 *)
−(P1 *−P0 *)}=3000
3(0)=0 ΔPs3(0)=100
受信移動指令値P3 *を受信:
Ps3(1)*={b3(0)(0)+1・P3 *+(10−2)・P2 *
+R3(0)}/10=2200
3(0)=0 ΔPs3(1)=100
Ps3(2)*={b3(0)(0)+2・P3 *+(10−3)・P2 *
+R3(1)}/10=2300
3(2)=0 ΔPs3(2)=100
Ps3(3)*={b3(0)(0)+3・P3 *+(10−4)・P2 *
+R3(2)}/10=2400
3(3)=0 ΔPs3(3)=100
Ps3(4)*={b3(0)(0)+4・P3 *+(10−5)・P2 *
+R3(2)}/10=2500
3(3)=0 ΔPs3(3)=100
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ps3(7)*={b3(0)(0)+7・P3 *+(10−8)・P2 *
+R3(6)}/10=2800
3(7)=0 ΔPs3(7)=100
Ps3(8)*={b3(0)(0)+8・P3 *+(10−9)・P2 *
+R3(7)}/10=2900
3(8)=0 ΔPs3(8)=100
Ps3(9)*={b3(0)(0)+9・P3 *+(10−10)・P2 *
+R3(8)}/10=3000
3(9)=0 ΔPs3(9)=100。
このように、平均移動指令値Ps2(i),Ps3(i+1)が得られが、これを図11で示したバッファb(0)に格納されている移動指令値P2 *を補正しない場合と比較すると、補正が行われた平均移動指令値Ps3(0),Ps3(1),Ps3(2),Ps3(3)で変化量ΔPsk(n)が値「100」となって一定の値であり、変化量ΔPsk(n)の局所的な増加の変動が解消されることになる。
このようにして、この具体例では、シッタなどによって受信される移動指令値Pk *の受信周期が規定の受信周期tchgよりも長くなっても、これによって生ずる平均移動指令値Psk *の変化量ΔPsk(n)の局所的な変動を抑制することができる。
なお、上記の例では、β=4としたが、これに限るものではなく、βを大きくしても同様の効果が得られるものである。
なお、この具体例において、移動平均処理用バッファ212のバッファb(0)〜b(m)を指定するカウンタとして、移動指令値Pk *の受信でリセットされるリセットカウンタを使用した場合には、図10(c)に示す状態でバッファb(0)に上記の補正移動指令値b3(0)(0)が格納された状態と次の図10(d’)に示す状態とは、b3(0)(0)=P3 *=3000であるから、全く同じ状態であり、平均移動指令値Psk *の変化量の変動は補正されないことになる。従って、この具体例では、バッファb(0)に補正移動指令値b3(0)(0)がそのまま格納された状態で残るようにするために、リングカウンタが使用されるものである。
図14は図12における超過バッファ補正処理部217の他の具体例を示すブロック構成図であって、224は超過バッファ変動補正演算部、225は切替スイッチであって、図13に対応する部分には同一符号をつけて重複する説明を省略する。
同図において、この具体例は、図13に示す具体例の構成に超過バッファ変動補正演算部224と切替スイッチ225とを追加し、超過バッファ補正演算部221で生成された補正移動指令値b3(0)(0)と超過バッファ変動補正演算部224で生成される補正移動指令値b3(j)(0)とを、切替スイッチ225で切り替えて移動平均処理用バッファ212でのバッファb(0)に供給するものである。
なお、この具体例でも、移動平均処理用バッファ212でのバッファb(0)〜b(m)を指定するカウンタとして、リングカウンタが用いられる。従って、移動平均処理用バッファ212では、移動指令値Pk *の受信により、図10(c)に示す状態から図10(d)に示す状態に移行する。
図14(a)は移動平均処理用バッファ212が図10(c)に示す状態にあるときを示すものであって、移動指令値格納バッファ218に受信移動指令値P2 *が、移動指令値格納バッファ219に移動指令値P1 *が、移動指令値格納バッファ220に移動指令値P0 *が夫々格納されている。超過バッファ補正演算部221は、これら移動指令値P2 *,P1 *,P0 *から、バッファb(0)に対する補正移動指令値b3(0)(0)を、図13に示した具体例と同様、先の数3の演算を行うことによって求める。
このとき、切替スイッチ225はA端子側に閉じており、求められたこの補正移動指令値b3(0)(0)は、切替スイッチ225を介して図10(c)に示す状態にある移動平均処理用バッファ212(図12)のバッファb(0)に格納される。即ち、このとき、このバッファb(0)には、移動指令値P2 *が格納されているが、これがこの補正移動指令値b3(0)(0)に更新されることになる。
このように、図10(c)の状態でバッファb(0)にこの補正移動指令値b3(0)(0)が格納されると、移動平均値演算部213(図12)において、移動平均処理用バッファ212での各バッファb(1)〜b(m)に格納された移動指令値P2 *とバッファb(0)の補正移動指令値b3(0)(0)とが取り込まれ、第1の具体例と同様、移動指令値P2 *による平均移動指令値Ps2(9)*に続く移動指令値P3 *による最初の平均移動指令値として、平均移動指令値Ps3(0)が生成される。
次いで、次の移動指令値P3 *が受信されると、図14(b)に示す状態となり、移動指令値格納バッファ218に受信された移動指令値P3 *が格納され、これとともに、移動指令値格納バッファ218に格納されていた移動指令値P2 *が移動指令値格納バッファ219に格納され、移動指令値格納バッファ219に格納されていた移動指令値P1 *が移動指令値格納バッファ220に格納される。また、切替スイッチ225がB端子側に切り替わる。このとき、移動平均処理用バッファ212では、バッファb(0)に補正移動指令値b3(0)(0)が格納されている。
これとともに、超過バッファ変動補正演算部224が動作を開始し、β回(但し、βはm以下の整数)バッファb(0)の補正移動指令値b3(j)(0)(但し、j=1,2,……,β)を順次生成し、切替スイッチ225を介して移動平均処理用バッファ212でのバッファb(0)に格納する。従って、このバッファb(0)では、補正移動指令値b3(j)(0)が順次更新される。
かかる補正移動指令値b3(j)(0)は、超過バッファ補正演算部221で生成された補正移動指令値b3(0)(0)と移動指令値格納バッファ218に格納された移動指令値P3 *とから、
Figure 0005259300
によって求められるものである。
これにより、図10(d)に示す状態からバッファb(0)において、補正移動指令値b3(j)(0)がb3(1)(0),b3(1)(0),……,b3(β)(0)と更新されていくことになる。
ここで、m=9,β=4としたときの補正移動指令値b3(j)(0),平均移動指令値Ps2 *,Ps3 *の数値例を、移動指令値P2 *をバッファb(8)(図10(a)に示す状態)に格納するタイミングから移動指令値P3 *をバッファb(9)に格納するタイミングまでの平均移動指令値Ps*とともに示す。但し、上記のように、P2 *=2000,P3 *=3000とする。
Ps2(8)*={9・P2 *+(10−9)・P1 *+R2(7)}/10=1900
2(8)=0 ΔPs2(8)=100
Ps2(9)*={10・P2 *+(10−10)・P1 *+R1(6)}/10
=2000
2(7)=0 ΔPs2(7)=100
Ps2(10)*=Ps3(0)*
={b3(0)(0)+9・P2 *+R1(6)}/10=2100
但し、b3(0)(0)=P2 *+(P2 *−P1 *)+{(P2 *−P1 *)
−(P1 *−P0 *)}=3000
3(0)=0 ΔPs3(0)=100
受信移動指令値P3 *を受信:
Ps3(1)*={b3(1)(0)+1・P3 *+(10−2)・P2 *
+R3(0)}/10=2200
但し、b3(0)(0)=P3 *=3000であるから、上記の数4により、
3(1)(0)〜b3(4)(0)=b3(0)(0)=3000
3(0)=0 ΔPs3(1)=100
Ps3(2)*={b3(2)(0)+2・P3 *+(10−3)・P2 *
+R3(1)}/10=2300
3(2)=0 ΔPs3(2)=100
Ps3(3)*={b3(3)(0)+3・P3 *+(10−4)・P2 *
+R3(2)}/10=2400
但し、b3(4)(9)=P1 *+(P2 *−P1 *)・4/4=2000
3(3)=0 ΔPs3(3)=100
Ps3(4)*={b3(4)(0)+4・P3 *+(10−5)・P2 *
+R3(2)}/10=2500
3(3)=0 ΔPs3(3)=100
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ps3(7)*={b3(4)(0)+7・P3 *+(10−8)・P2 *
+R3(6)}/10=2800
3(7)=0 ΔPs3(7)=100
Ps3(8)*={b3(4)(0)+8・P3 *+(10−9)・P2 *
+R3(7)}/10=2900
3(8)=0 ΔPs3(8)=100
Ps3(9)*={b3(4)(0)+9・P3 *+(10−10)・P2 *
+R3(8)}/10=3000
3(9)=0 ΔPs3(9)=100。
このように、平均移動指令値Ps2(i),Ps3(i+1)が得られが、これを図11で示したバッファb(0)に格納されている移動指令値P2 *を補正しない場合と比較すると、補正が行われた平均移動指令値Ps3(0),Ps3(1),Ps3(2),Ps3(3)で変化量ΔPsk(n)が値「100」となって一定の値であり、変化量ΔPsk(n)の局所的な増加の変動が解消されることになる。
このようにして、この具体例では、ジッタなどによって受信される移動指令値Pk *の受信周期が規定の受信周期tchgよりも長くなっても、これによって生ずる平均移動指令値Psk *の変化量ΔPsk(n)の局所的な変動を抑制することができる。
なお、上記の例では、β=4としたが、これに限るものではなく、βを大きくしても同様の効果が得られるものである。
ここで、上記のように、補正移動指令値b3(j)(0)が次に受信する移動指令値P3 *と等しい場合には、超過バッファ変動補正演算部224で得られる補正移動指令値b3(j)(0)は超過バッファ補正演算部221で得られる補正移動指令値b3(0)(0)に等しく(なぜならば、上記数3でのP3 *−b3(0)(0)=0であるから)、この場合には、超過バッファ変動補正演算部224は超過バッファ補正演算部221が生成する補正移動指令値b3(0)(0)と等しい補正移動指令値b3(j)(0)を生成してバッファb(0)に格納するものであるから、図13に示す具体例では、補正移動指令値b3(0)(0)を1回格納するのに対し、図14に示す具体例では、これと同じ補正移動指令値b3(j)(0)をβ回格納するという点で異なるが、結果的には、超過バッファ変動補正演算部224は超過バッファ補正演算部221と同じ作用をなしているものである。従って、この場合には、図14に示す具体例は、図13に示す具体例と作用が等しいものである。
なお、上記数3において、移動指令値P0 *,P1 *,P2 *,P3 *が同じ関数で表わされる軌道上に存在するものであるときには、補正移動指令値b3(0)(0)が次に受信される移動指令値P3 *と等しくなる。
これに対し、超過バッファ補正演算部221で生成される補正移動指令値b3(0)(0)が次に受信する移動指令値P3 *と異なる場合もあり得、この場合には、超過バッファ変動補正演算部223の作用により、図14に示す具体例は、図13に示す具体例と作用が異なるものとなる。
即ち、図13に示す具体例では、例えば、図10(c)に示す状態で、バッファb(0)に補正移動指令値b3(0)(0)を格納したとすると、バッファb(1),b(2),……,b(9)に順次移動指令値P3 *を格納する間、バッファb(0)に補正移動指令値b3(0)(0)が保持されたままであり、次いで、バッファb(0)に移動指令値P3 *が格納されると(補正移動指令値b3(0)(0)が移動指令値P3 *に更新される)、バッファb(9)に対して、バッファb(0)の値が移動指令値P3 *と補正移動指令値b3(0)(0)との差の値が変化するだけであり、このときの平均移動指令値Ps3(0)の変化量ΔPs3(0)はその差値に応じたわずかな値である。
例えば、移動指令値P0 *,P1 *,P2 *,P3 *を夫々、P0 *=300、P1 *=500、P2 *=1000、P3 *=2000とすると、
補正移動指令値b3(0)(0)=1800
であるが、図13に示す具体例による図10(b)に示す状態からバッファb(0)で補正移動指令値b3(0)(0)が移動指令値P3 *に更新されるまでの平均移動指令値Psk(i)の変化をみると、次の通りである。
Ps2(9)*={10・P2 *+(10−10)・P1 *+R1(6)}/10
=1000
2(7)=0
Ps2(10)*=Ps3(0)*
={b3(0)(0)+9・P2 *+R1(6)}/10=1080
3(0)=0 ΔPs3(0)=80
受信移動指令値P3 *を受信:
Ps3(1)*={b3(0)(0)+1・P3 *+(10−2)・P2 *
+R3(0)}/10=1180
3(0)=0 ΔPs3(1)=100
Ps3(2)*={b3(0)(0)+2・P3 *+(10−3)・P2 *
+R3(1)}/10=1280
3(2)=0 ΔPs3(2)=100
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ps3(7)*={b3(0)(0)+7・P3 *+(10−8)・P2 *
+R3(6)}/10=1780
3(7)=0 ΔPs3(7)=100
Ps3(8)*={b3(0)(0)+8・P3 *+(10−9)・P2 *
+R3(7)}/10=1880
3(8)=0 ΔPs3(8)=100
Ps3(9)*={b3(0)(0)+9・P3 *+(10−10)・P2 *
+R3(8)}/10=1980
3(9)=0 ΔPs3(9)=100。
この平均移動指令値Ps3(9)*が生成される期間に規定の受信周期tchgで次の移動指令値P4 *が受信されることになり、バッファb(0)から順にこの移動指令値P4 *が格納されていくことになる。
これによると、バッファb(9)に格納される平均移動指令値Ps3(9)*は「1980」であって、移動指令値P3 *の「2000」よりも、この移動指令値P3 *と補正移動指令値b3(0)(0)との差に応じた値「20」だけ小さい値となっている。
このように、図13に示す具体例では、補正移動指令値b3(0)(0)が移動指令値P3 *と異なる場合には、正確な平均移動指令値Pskが得られないことになる。
これに対し、図14に示す具体例の場合には、
補正移動指令値b3(0)(0)=1800
3(1)(0)=50, b3(2)(0)=100,
3(3)(0)=150,b3(4)(0)=200
となるものであり、図10(b)に示す状態からバッファb(0)で補正移動指令値b3(0)(0)が移動指令値P3 *に更新されるまでの平均移動指令値Psk(i)の変化を見ると、次の通りである。
Ps2(9)*={10・P2 *+(10−10)・P1 *+R1(6)}/10
=1000
2(7)=0
Ps2(10)*=Ps3(0)*
={b3(0)(0)+9・P2 *+R1(6)}/10=1080
3(0)=0 ΔPs3(0)=80
受信移動指令値P3 *を受信:
Ps3(1)*={b3(1)(0)+1・P3 *+(10−2)・P2 *
+R3(0)}/10=1185
3(0)=0 ΔPs3(1)=105
Ps3(2)*={b3(2)(0)+2・P3 *+(10−3)・P2 *
+R3(1)}/10=1290
3(2)=0 ΔPs3(2)=105
Ps3(3)*={b3(3)(0)+3・P3 *+(10−4)・P2 *
+R3(6)}/10=1395
3(7)=0 ΔPs3(7)=105
Ps3(4)*={b3(4)(0)+4・P3 *+(10−5)・P2 *
+R3(6)}/10=1500
3(7)=0 ΔPs3(7)=105
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Ps3(7)*={b3(4)(0)+7・P3 *+(10−8)・P2 *
+R3(6)}/10=1800
3(7)=0 ΔPs3(7)=100
Ps3(8)*={b3(4)(0)+8・P3 *+(10−9)・P2 *
+R3(7)}/10=1900
3(8)=0 ΔPs3(8)=100
Ps3(9)*={b3(4)(0)+9・P3 *+(10−10)・P2 *
+R3(8)}/10=2000
3(9)=0 ΔPs3(9)=100。
この平均移動指令値Ps3(9)*を生成する期間に、規定の受信周期tchgで次の移動指令値P4 *が受信される。
これによると、平均移動指令値Ps3(8)*と平均移動指令値Ps3(9)*との間の変化量ΔPs3(9)は、正常値の「100」であり、局所的な変動は現れないし、移動指令値P3 *が最後のバッファb(9)に格納されたことによって生成される平均移動指令値Ps3(9)*は、移動指令値P3 *に等しい正しい値となっている。
図15は図1における指令値補間演算部21の第3の具体例を示すブロック構成図であって、図2,図7及び図12に対応する部分には同一符号をつけて重複する説明を省略する。
同図において、この第3の具体例は、図2に示す基本構成に図7における不足バッファ補正処理部216と図12における超過バッファ補正処理部217とを備えた構成をなすものである。不足バッファ補正処理部216は、先に説明したように、移動指令値Pk *の受信周期が規定の受信周期tchgよりも短くなったときに、図8で説明した補正処理により、移動平均処理用バッファ212のバッファb(m)に格納されている移動指令値Pk(m)*の補正処理を行うものである。超過バッファ補正処理部217は、先に説明したように、移動指令値Pk *の受信周期が規定の受信周期tchgよりも長くなったときに、移動平均処理用バッファ212のバッファb(0)に格納されている移動指令値Pk(0)*の補正処理を行うものであり、図13もしくは図14に示す構成をなしている。
ここで、この具体例では、不足バッファ補正処理部216と超過バッファ補正処理部217とが用いられるものであるから、移動平均処理用バッファ212でのバッファb(0)〜b(m)を指定するカウンタとして、リングカウンタとリセットカウンタとが用いられる。
これにより、この具体例では、移動指令値Pk *の受信周期tchgが短くなったときも、また、移動指令値Pk *の受信周期tchgが長くなったときも、移動平均処理用バッファ212に格納されている移動指令値Pk *を補正することができ、電動機3(図1)を制御するための平均移動指令値Psk *の変化量ΔPs3の局所的な変動を抑制することができる。
図16は図15に示す指令値補間演算部21での移動平均処理用バッファ212におけるバッファb(0)〜b(m)の指定手段の一具体例を示すブロック構成図であって、231はリセットカウンタ、232はリングカウンタ、233は比較部、234はANDゲート、235はカウント値判定部、236は切替スイッチであり、図15に対応する部分には同一符号をつけて重複する説明を省略する。
また、図17は図16に示す具体例の動作を示すタイムチャートである。なお、同図(a)は移動指令値Pk *が規定の受信周期tchgで受信されるときの、同図(b)は移動指令値Pk *が規定の受信周期tchgよりも1サーボ処理周期tschg程度短い周期で受信されたときの、同図(c)は移動指令値Pk *が規定の受信周期tchgよりも1サーボ処理周期tschg程度長い周期で受信されたときの夫々、移動指令値Pk *の受信とリセットカウンタ231の出力カウント値NC1とリングカウンタ232の出力カウント値NC2とのタイミング関係を示すものである。
図16において、図15での移動平均処理用バッファ212におけるバッファb(0)〜b(m)を指定する手段として、リセットカウンタ231とリングカウンタ232とが用いられ、これらの出力カウント値NC1,NC2が、バッファb(0)〜b(m)の指定値として、切替スイッチ236で選択される。通常、リングカウンタ232の出力カウント値NC2が、バッファb(0)〜b(m)の指定値として、切替スイッチ236で選択される。
即ち、図17(a)は移動指令値Pk *が規定の受信周期tchgで受信される状態を示すものであるが、この場合には、切替スイッチ236はB端子側に閉じ、リングカウンタ232の出力カウントNC2をバッファb(0)〜b(m)の指定値として選択する。
また、図17(b)は移動指令値Pk *が規定の受信周期tchgよりも1サーボ処理周期tschg程度短い周期で受信される状態を示すものであるが、この場合には、切替スイッチ236はA端子側に閉じ、リセットカウンタ231の出力カウントNC1をバッファb(0)〜b(m)の指定値として選択する。
さらに、図17(c)は移動指令値Pk *が規定の受信周期tchgよりも1サーボ処理周期tschg程度長い周期で受信される状態を示すものであるが、この場合には、切替スイッチ236はB端子側に閉じ、リングカウンタ232の出力カウントNC2をバッファb(0)〜b(m)の指定値として選択する。
移動指令値Pk *が受信される毎に、これに同期してリセットパルスPR *が生成され、このリセットパルスPR *によってリセットカウンタ231がリセットされる。このリセットカウンタ231とリングカウンタ232とは、このリセットパルスPR *の(m+1)倍の周波数のクロックをカウントするものであって、移動指令値Pk *が規定の受信周期tchgで受信されるときには、リセットカウンタ231はカウント値NC1がmになると、このリセットパルスPR *によって0にリセットされるから、0〜mの値を繰り返しカウントすることになる。また、リングカウンタ232も、リセットパルスPR *によってリセットされないが、0〜mの値を繰り返しカウントする。
但し、リングカウンタ232は、移動指令値Pk *が規定の受信周期tchgで受信されるときには、そのカウント値NC2がリセットカウンタ231のカウント値NC1と等しくなるように、移動指令値Pk *の受信開始時、リセットパルスPR *によって0にクリアされる。即ち、リセットカウンタ231のカウント値NC1は比較部233に供給され、値m+2と比較される。リングカウンタ232が、移動指令値Pk *が受信される毎に、リセットパルスPR *によってリセットされるときには、リセットカウンタ231のカウント値NC1は値m+1を越えることがなく、このカウント値NC1がm+2以上となると、移動指令値Pk *が受信されなくなってリングカウンタ232がリセットされなくなったことを意味することになる。そのときには、比較部233から“H”(ハイレベル)の信号が出力され、ANDゲート234に供給される。即ち、ANDゲート234への比較部233からの入力は、移動指令値Pk *が受信されなくなると、ON状態に保持されることになる。その後、移動指令値Pk *の受信が始まると、その最初のリセットパルスPR *がON状態にあるANDゲート234を通過し、クリアパルスとしてリングカウンタ232に供給される。これにより、リングカウンタ232はそのカウント値NC2が0にクリアされ、そこからカウントを始めることになる。これとともに、リセットカウンタ231もこの最初のリセットパルスPR *によってリセットされ、そこからカウントを始めることになる。これにより、比較部233は、リセットカウンタ231のカウント値NC1が値m+1以下となるので、その出力信号が“L”(ローレベル)となり、ANDゲート234はOFF状態となる。従って、その後の移動指令値Pk *の順次の受信によって生成されるリセットパルスPR *はリングカウンタ232に供給されず、リングカウンタ232は0〜mの値を繰り返しカウントすることになる。
このようにして、移動指令値Pk *が規定の受信周期tchgで受信されている限り、リセットカウンタ231とリングカウンタ232とから同時に出力されるカウント値NC1,NC2は等しい値となる。
移動指令値Pk *の受信周期tchgの変動の有無は、カウント値判定部235により、リセットパルスPR *のタイミングでのリングカウンタ232のカウント値NC2をもとに判定される。
即ち、移動指令値Pk *の受信周期の変動量は、高々1サーボ処理周期tschg程度であるが、かかる変動がなく、移動指令値Pk *が規定の受信周期tchgで受信されるときには、図17(a)に示すように、移動指令値Pk *の受信タイミング、即ち、リセットパルスPR *のタイミングはリングカウンタ232のカウント値NC2がmのときである。そこで、カウント値判定部235は、リセットパルスPR *のタイミングでのリングカウンタ232のカウント値NC2がmのとき、移動指令値Pk *が規定の受信周期tchgで受信されているものと判定し、切替スイッチ236をB端子側に閉じて、リングカウンタ232のカウント値NC2をバッファb(0)〜b(m)の指定値として選択する。これにより、図17(a)に示すように、リングカウンタ232の出力カウント値NC2により、移動平均処理用バッファ212(図15)において、バッファb(i)がb(0),b(1),b(2),……,b(m)の順に繰り返し指定されることになる。なお、この場合、不足バッファ補正処理部216も、また、超過バッファ補正処理部217も動作させない。
また、移動指令値Pk *の受信周期が規定の受信周期tchgよりも1サーボ処理周期tschg程度短くなったものとすると、図17(b)に示すように、このときの移動指令値Pk *の受信タイミング、即ち、リセットパルスPR *のタイミングはリングカウンタ232のカウント値NC2がm−1のときである。そこで、カウント値判定部235は、リセットパルスPR *のタイミングでのリングカウンタ232のカウント値NC2がm−1のとき、移動指令値Pk *が規定の受信周期tchgよりも1サーボ処理周期tschg程度短い周期で受信されているものと判定し、切替スイッチ236をA端子側に閉じて、リセットカウンタ231のカウント値NC1をバッファb(0)〜b(m)の指定値として選択する。これにより、図17(b)に示すように、これまでリングカウンタ232のカウント値NC2で移動平均処理用バッファ212(図15)のバッファb(i)が指定されていたのが、このカウント値NC2が値m−1のとき、例えば、移動指令値P3 *が規定の受信周期tchgよりも1サーボ処理周期tschg程度短い周期で受信されると、リセットカウンタ231の値0からのカウント値NC1により、移動平均処理用バッファ212(図15)のバッファb(i)がb(0),b(1),b(2),……の順で指定されることになる。なお、次の移動指令値P4 *が規定の受信周期tchgで受信された場合には、図17(b)に示すように、リングカウンタ232のカウント値NC2が値mのときに移動指令値P4 *が受信されることになるので、切替スイッチ236がB端子に切り替わり、リングカウンタ232のカウント値NC2が移動平均処理用バッファ212(図15)のバッファb(i)を指定するようにする。また、この場合、不足バッファ補正処理部216を動作させ、先の図7,図8で示した実施形態と同様にして、移動指令値P3 *の受信によって指定されなかった移動平均処理用バッファ212での最後のバッファb(m)に格納されている移動指令値Pk *の補正処理を行う。
また、図17(c)に示すように、移動指令値Pk *の受信周期が規定の受信周期tchgよりも1サーボ処理周期tschg程度長くなったものとすると、このときの移動指令値Pk *の受信タイミング、即ち、リセットパルスPR *のタイミングはリングカウンタ232のカウント値NC2が0のときである。そこで、カウント値判定部235は、リセットパルスPR *のタイミングでのリングカウンタ232のカウント値NC2が0のとき、移動指令値Pk *が規定の受信周期tchgよりも1サーボ処理周期tschg程度長い周期で受信されているものと判定し、切替スイッチ236をB端子側に閉じた状態として、リングカウンタ232のカウント値NC2をバッファb(0)〜b(m)の指定値として選択する。この場合、超過バッファ補正処理部217を動作させ、先の図12〜図14で示した実施形態と同様にして、移動平均処理用バッファ212での最初のバッファb(0)に格納されている移動指令値Pk *の補正処理を行う。
本発明によるサーボ制御装置の一実施形態を示すブロック構成図である。 図1における指令値補間演算部の基本構成を示すブロック構成図である。 図2での移動指令値P1 *が最後のバッファb(m)に格納されてから図2に示す状態になるまでの移動平均処理用バッファの格納状態の変遷を示す図である。 図3に示す移動平均処理用バッファの格納状態の変遷に対する図2での移動平均値演算部で得られた平均移動指令値Ps*の時間的な変化を示すグラフ図である。 ジッタなどによって受信周期tchgがサーボ処理周期tschg程度短くなったときの図2における移動平均処理用バッファでの受信移動指令値Pk *の格納状況の変化を示す図である。 図5に示す平均移動指令値Psk(n)*の変化を示すグラフ図である。 図1における指令値補間演算部の第1の具体例を示すブロック構成図である。 図7における不足バッファ補正処理部の補正処理の一具体例を示す図である。 図7に示す指令値補間演算部の動作を示すフロー図である。 ジッタなどによって受信周期tchgがサーボ処理周期tschg程度長くなったときの図2における移動平均処理用バッファでの受信移動指令値Pk *の格納状況の変化を示す図である。 図10に示す平均移動指令値Psk(n)*の変化を示すグラフ図である。 図1における指令値補間演算部の第2の具体例を示すブロック構成図である。 図12における超過バッファ補正処理部の一具体例を示すブロック構成図である。 図12における超過バッファ補正処理部の他の具体例を示すブロック構成図である。 図1における指令値補間演算部の第3の具体例を示すブロック構成図である。 図15に示す指令値補間演算部での移動平均処理用バッファにおけるバッファb(0)〜b(m)の指定手段の一具体例を示すブロック構成図である。 図16に示す具体例の動作を示すタイムチャートである。
符号の説明
1 上位装置
2 サーボ制御装置
21 指令値補間演算部
211 移動指令値格納バッファ
212 移動平均処理用バッファ
213 移動平均値演算部
214 移動指令値格納バッファ
215 剰余バッファ
216 不足バッファ補正処理部
217 超過バッファ補正処理部
218〜220 移動指令値格納バッファ
221 超過バッファ補正演算部
222,223 前回値保存処理部
224 超過バッファ変動補正演算部
225 切替スイッチ
22 サーボ制御部
3 電動機
4 検出器
231 リセットカウンタ
232 リングカウンタ
233 比較部
234 ANDゲート
235 カウント値判定部
236 切替スイッチ

Claims (5)

  1. 上位装置から受信周期で移動指令値が受信される毎に受信された該移動指令値が格納され、格納された該移動指令値を処理周期(<受信周期)で繰り返し読み出して出力する移動指令値格納バッファと、
    該移動指令値格納バッファから該移動指令値が出力される毎に、該移動指令値を順次格納する複数のバッファを有する移動平均処理用バッファと、
    該処理周期毎に、該移動平均処理用バッファの全ての該バッファに格納された該移動指令値を合算し、得られた合算値を該バッファの個数で除算した商を平均移動指令値とし、該平均移動指令値を制御対象の移動指令値として制御サーボ部に供給する移動平均値演算部と
    を備え、
    該移動平均処理用バッファは、該受信周期を該処理周期で除算して得られる商に等しい個数の該バッファを有することを特徴とするサーボ制御装置。
  2. 請求項1において、
    前記バッファに格納された前記移動指令値を、略等分ずつ任意の複数回にわたって補正して新たな移動指令値よりも1つ前に受信された移動指令値とする補正手段を有することを特徴とするサーボ制御装置。
  3. 請求項において、
    前記移動指令値の前記受信周期が変化し、その変化の規定の周期からの変化量が、前記処理周期の高々1周期であって、
    新たな前記移動指令値が該規定の周期よりも短い受信周期で受信されたときには、前記移動平均処理用バッファでの最後に配列される前記バッファに格納せず、最初に配列される前記バッファに格納し、該最後に配列される前記バッファに格納されている前記移動指令値を、略等分ずつ任意の複数回にわたって補正して新たな移動指令値よりも1つ前に受信された移動指令値とする補正手段を備えたことを特徴とするサーボ制御装置。
  4. 請求項において、
    前記移動指令値の前記受信周期が変化し、その変化の規定の周期からの変化量が、前記処理周期の高々1周期であって、
    新たな前記移動指令値が該規定の周期よりも長い受信周期で受信されたときには、前記移動平均処理用バッファでの最初に配列される前記バッファに格納されている前記移動指令値を、略等分ずつ任意の複数回にわたって補正して新たな移動指令値よりも1つ前に受信された移動指令値とする補正手段を備えたことを特徴とするサーボ制御装置。
  5. 請求項3または4において、
    前記移動平均値演算部は、前記補正手段が前記バッファの移動指令値の補正処理を行うときには、該補正処理が行われた後に前記平均化処理を行うことを特徴とするサーボ制御装置。
JP2008213020A 2008-08-21 2008-08-21 サーボ制御装置 Expired - Fee Related JP5259300B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008213020A JP5259300B2 (ja) 2008-08-21 2008-08-21 サーボ制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008213020A JP5259300B2 (ja) 2008-08-21 2008-08-21 サーボ制御装置

Publications (2)

Publication Number Publication Date
JP2010051091A JP2010051091A (ja) 2010-03-04
JP5259300B2 true JP5259300B2 (ja) 2013-08-07

Family

ID=42067700

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008213020A Expired - Fee Related JP5259300B2 (ja) 2008-08-21 2008-08-21 サーボ制御装置

Country Status (1)

Country Link
JP (1) JP5259300B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5862556B2 (ja) * 2012-07-12 2016-02-16 株式会社豊田自動織機 モータ制御装置及びモータ制御方法
JP6060384B2 (ja) * 2013-03-19 2017-01-18 パナソニックIpマネジメント株式会社 モータ駆動装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01292405A (ja) * 1988-05-19 1989-11-24 Hitachi Ltd ディジタル位置サーボ装置
JPH02202607A (ja) * 1989-01-31 1990-08-10 Okuma Mach Works Ltd サーボモータの制御方法及び装置
JP3599849B2 (ja) * 1995-08-21 2004-12-08 ファナック株式会社 サーボ制御における移動指令の分配方法
JP4904760B2 (ja) * 2005-09-29 2012-03-28 横河電機株式会社 データ処理装置

Also Published As

Publication number Publication date
JP2010051091A (ja) 2010-03-04

Similar Documents

Publication Publication Date Title
US9715225B2 (en) Numerical controller for smoothing tool path in operation based on table format data
US20050085939A1 (en) Numerical controller
US8175205B2 (en) Clock data recovery circuit capable of generating clock signal synchronized with data signal
CN104702278A (zh) 一种频率校准方法及装置
CN107561933B (zh) 速度调节方法、装置、计算机设备和存储介质
JP2018041150A (ja) モデル予測制御装置、モデル予測制御装置の制御方法、情報処理プログラム、および記録媒体
EP3361635B1 (en) Control system and pulse output device
KR20180082359A (ko) 고속 센서 인터페이스를 위한 동기화 메커니즘
JP5259300B2 (ja) サーボ制御装置
CN111030552B (zh) 一种伺服驱动器的同步控制方法及伺服驱动器
CN110023857B (zh) 伺服控制装置
WO2018214856A1 (zh) 一种数据处理的方法和设备
CN110815219A (zh) 一种轨迹跟踪方法、装置、电子设备及存储介质
JP4661284B2 (ja) 伝送制御装置
US10016823B2 (en) Machine for machining a moving object
JP4100144B2 (ja) クロック再生装置およびクロック再生方法
CN109164754B (zh) 一种伺服驱动器位置命令的平滑方法及其控制装置
JP3130426B2 (ja) モータ制御装置
CN109343473B (zh) 一种基于双时钟的高速高精度多轴同步运动的控制方法
CN114355839B (zh) 一种运动轨迹处理方法、装置、设备及存储介质
US20200103853A1 (en) Servo controller
US11871146B1 (en) Video processor for handling irregular input
JP4735268B2 (ja) サンプリング周波数変換装置
EP4109254A1 (en) Methods and systems for computerised resource allocation control
JP4726227B2 (ja) バッファフロー制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120919

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120925

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121119

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130409

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130424

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160502

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5259300

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees