(58)【調査した分野】(Int.Cl.,DB名)
前記切替部は、前記指令解析部により出力される解析位置指令の前記フィルタ演算部への入力が完了していないと前記補正部が判定した場合、前記位置制御部に前記フィルタ演算部により演算された演算後位置指令を出力させる、
請求項1または請求項2記載の位置制御装置。
前記補正部は、前記指令解析部により出力される解析位置指令の前記フィルタ演算部への入力が完了したと判定した場合、前記偏差導出部により導出された積分指令偏差が第1の閾値以下であるか否かを判定する、
請求項1または請求項2記載の位置制御装置。
前記切替部は、前記偏差導出部により導出された積分指令偏差が第1の閾値以下でないと前記補正部が判定した場合、前記位置制御部に前記フィルタ演算部により演算された演算後位置指令を出力させる、
請求項4項に記載の位置制御装置。
前記切替部は、前記フィルタ演算部から出力された演算後位置指令が第2の閾値以下でないと前記補正部が判定した場合、前記位置制御部に前記フィルタ演算部により演算された演算後位置指令を出力させる、
請求項4項に記載の位置制御装置。
前記切替部は、前記偏差導出部により導出された積分指令偏差が第1の閾値以下で、且つ前記フィルタ演算部から出力された演算後位置指令が第2の閾値以下と前記補正部が判定した場合、前記位置制御部に前記補正部が出力した積分指令偏差を出力させる、
請求項4項に記載の位置制御装置。
前記指令解析部は、第1のタイミングで第1の上位位置指令を取得し、取得した前記第1の上位位置指令を予め設定した分割数の上限値で平滑し、平滑した第1の解析位置指令を所定の周期ごとに前記フィルタ演算部に出力する、
請求項1から7のうちいずれか1項に記載の位置制御装置。
前記指令解析部は、前記第1のタイミングの後の第2のタイミングで第2の上位位置指令を取得し、前記フィルタ演算部に出力が完了していない前記第1の解析位置指令と、取得した前記第2の上位位置指令との合算を、前記第1の上位位置指令と前記第2の上位位置指令との間隔に基づいて平滑し、平滑した第2の解析位置指令を、所定の周期ごとに前記フィルタ演算部に出力する、
請求項8記載の位置制御装置。
前記指令解析部は、前記第2のタイミングの後の第3のタイミングで第3の上位位置指令を取得し、前記フィルタ演算部に出力が完了していない前記第2の解析位置指令と、取得した前記第3の上位位置指令との合算を、前記第2の上位位置指令と前記第3の上位位置指令との間隔とに基づいて平滑し、平滑した第3の解析位置指令を、所定の周期ごとに前記フィルタ演算部に出力する、
請求項9記載の位置制御装置。
【発明を実施するための形態】
【0007】
以下、実施形態の位置制御装置を、図面を参照して説明する。
【0008】
(第1の実施形態)
図1は、位置制御装置20を含む位置制御システム1の機能構成を示す図である。位置制御システム1は、例えば、上位指令装置10と、位置制御装置20とを備える。上位指令装置10は、例えば、キーボードやタッチパネルなどの操作部と、画像を表示する表示部とを備える。上位指令装置10は、オペレータによって操作部に対して入力された情報に応じた位置指令(制御対象の位置を指示する情報であって、移動距離を示す指標や値)を位置制御装置20に出力する。以下、上位指令装置10から出力された位置指令を「上位位置指令」と称する場合がある。
【0009】
上位位置指令は、パルス方式や、通信方式、バス方式で位置制御装置20に出力される。パルス方式では、上位指令装置10は、移動距離に応じたパルスを出力することで上位位置指令を出力する。パルス方式では、1パルスの制御対象の移動距離は1μmなどのように、1パルスに対する制御対象の移動距離が定められている。また、目標位置までの速度は、パルスの周波数で表される。通信方式、またはバス方式では、例えば、上位指令装置10は、制御対象の移動距離に相当する値や速度等に相当する値を所定の周期、および所定のタイミングで上位位置指令として出力する。具体的には、上位指令装置10は、例えば、5m[sec]ごとに、5m[sec]間で制御対象を移動させたい距離や速度等の情報を出力する。
【0010】
位置制御装置20は、例えば、指令解析部22と、フィルタ演算部30と、偏差導出部32と、補正部40と、切替部49と、位置制御部50と、速度制御部60とを備える。位置制御装置20は、例えば、CPU(Central Processing Unit)等のプロセッサが位置制御装置20の記憶装置に記憶されたプログラムを実行することにより実現されてよい。また、位置制御装置20の全部または一部は、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)等のハードウェアによって実現され、これらの機能部の機能を実現するための回路構成を有してもよい。また、これらの機能部は、ソフトウェアとハードウェアの協働によって実現されてもよい。
【0011】
指令解析部22は、上位位置指令を位置制御装置20内で処理できるように解析して所定の周期でフィルタ演算部30に位置指令として出力する。位置制御装置20内で処理できるようにとは、位置制御装置20の位置制御周期(例えば100μ[sec])に合わせて制御対象の移動距離を示す情報をフィルタ演算部30に出力することである。以下、指令解析部22により解析され、出力された位置指令を「解析位置指令」と称する場合がある。
【0012】
フィルタ演算部30は、指令解析部22により出力された解析位置指令を取得し、取得した解析位置指令に対して所定の周波数成分(主に40Hz前後の低周波数帯)を減衰させ、減衰させた位置指令を位置制御部50に出力する。フィルタ演算部30において用いられるフィルタは、例えば、ノッチフィルタや、IIR(Infinite impulse response)フィルタである。以下、フィルタ演算部30により演算された位置指令を「演算後位置指令」と称する場合がある。
【0013】
偏差導出部32は、解析位置指令と、フィルタ演算部30により演算された演算後位置指令との差である指令偏差を積分した積分指令偏差を導出する。
補正部40は、例えば、第1判定部44と、第2判定部46と、出力制御部48とを備える。
【0014】
第1判定部44は、偏差導出部32により導出された積分指令偏差が第1の閾値以下であるか否かを判定する。第2判定部46は、フィルタ演算部30により演算された演算後位置指令が第2の閾値以下であるか否かを判定する。
【0015】
出力制御部48は、解析位置指令が無い状態で、偏差導出部32により導出された積分指令偏差が第1の閾値以下であり、且つフィルタ演算部30により演算された演算後位置指令が第2の閾値以下である場合に、積分指令偏差を出力する。出力制御部48から積分指令偏差が出力される場合は、出力制御部48から出力された積分指令偏差が位置指令として位置制御部50に入力される。出力制御部48から積分指令偏差が出力されない場合は、演算後位置指令が位置指令として位置制御部に入力される。
以上の様な一連の処理をまとめると
図2の様になる。
図2を用いてもう少し詳しく説明する。
【0016】
まず、フィルタ演算部30は、指令解析部22から取得した解析位置指令に対して、フィルタ演算処理を実行し演算後位置指令を求める(ステップS100)。次に、偏差導出部32は、積分指令偏差を導出する(ステップS102)。
【0017】
ここで、フィルタ演算部30に入力される解析位置指令と、フィルタ演算部30から出力される演算後位置指令との関係について説明する。例えば、フィルタ演算部30に解析位置指令が入力されると、フィルタ演算が行われ、演算結果が出力される。上位位置指令を解析した解析位置指令が入力されたときの始期ではフィルタ演算部30への入力とフィルタ演算部30からの出力との差である指令偏差は、フィルタ演算部30でフィルタ処理されている為、大きくなる。例えば入力される解析位置指令は「100」、出力される演算後位置指令は「1」とすると、指令偏差は「99」となる。また、次の周期のフィルタ演算において、入力される解析位置指令は「100」、出力される演算後位置指令は「10」とすると、積分指令偏差は、今回の指令偏差「90」と、前回の指令偏差「99」を積算した「189」となる。時間が経過するに従い、演算後位置指令は解析位置指令に追いついていき指令偏差は小さくなる。
【0018】
一方、上位位置指令を解析した解析位置指令の終期では、積分指令偏差は小さくなる。例えば終期において入力された解析位置指令は「1」、出力される演算後位置指令は「90」とすると、指令偏差は「−89」となり、前回の積分指令偏差が「189」である場合、今回の積分指令偏差は、「100(189−89)」となる。
【0019】
更に、上位位置指令に対応する解析位置指令の入力が完了後においても、フィルタの演算結果が出力される。例えば、フィルタ演算部30に入力される解析位置指令が「0」である場合であっても、フィルタ演算による入力に対する出力の遅延によって、出力される演算後位置指令が「100」になる場合がある。
【0020】
上述したように、積分指令偏差は、解析位置指令の終期または解析位置指令のフィルタ演算部30への入力が完了後に減少する傾向であるため、解析位置指令のフィルタ演算部30への入力が完了した場合に、積分指令偏差の絶対値が、第1の閾値以下である場合、フィルタ演算部30によって演算される演算後位置指令がすべて出力されるタイミングに近いと推測することができる。
【0021】
次に、補正部40は、フィルタ演算部30への解析位置指令の入力が完了したか否かを判定する(ステップS104)。解析位置指令の入力が完了していない場合、位置制御部50への入力である位置指令は、フィルタ演算部30によってフィルタ演算された演算後位置指令のみになる(ステップS106)。
【0022】
フィルタ演算部30への解析位置指令の入力が完了した場合、第1判定部44は、積分指令偏差の絶対値が、第1の閾値(例えば「3」)以下であるか否かを判定する(ステップS108)。
【0023】
積分指令偏差の絶対値が、第1の閾値以下でない場合、ステップS106の処理に進む。積分指令偏差の絶対値が、第1の閾値以下の場合、ステップS110の処理に進む。
【0024】
フィルタ演算部30への解析位置指令の入力が完了し、積分指令偏差の絶対値が第1の閾値以下の場合、第2判定部46は、フィルタ演算部30により演算された演算後位置指令の絶対値が、第2の閾値以下であるか否かを判定する(ステップS110)。第2の閾値は、第1の閾値と同一であってもよいし、異なっていてもよい。フィルタ演算部30により演算された演算後位置指令の絶対値が、第2の閾値以下でない場合、ステップS106に処理に進む。フィルタ演算部30により演算された演算後位置指令の絶対値が、第2の閾値以下である場合、出力制御部48は、積分指令偏差を出力する(ステップS112)。なお、積分指令偏差を出力した場合、積分指令偏差が位置指令として位置制御部50に入力される。(ステップS114)これにより、フィルタ演算部30に入力された解析位置指令の合計(指令位置指令)と、位置制御部50に入力される位置指令の合計とが合致する。
【0025】
切替部49は、このように、補正部40から出力された積分指令偏差とフィルタ演算部30により演算された演算後位置指令とのいずれかを選択し、位置制御部50へ位置指令として出力する。
【0026】
位置制御部50は、制御対象(例えばモータ)の位置を検出する位置検出部(不図示)により検出された位置情報(フィードバック信号)を取得する。位置検出部は、光学的または磁気的に制御対象の位置を検出するエンコーダやレゾルバ等である。位置制御部50は、取得した位置情報、フィルタ演算部30により演算された演算後位置指令、および出力制御部48により出力される積分指令偏差に基づいて、上位指令装置10により指示された位置と、制御対象の位置とが合致するようにフィードバック制御を行う。位置制御部50は、フィードバック制御の結果に基づいて、速度指令を生成し、速度制御部60に出力する。
【0027】
速度制御部60は、位置制御部50から取得した速度指令と、制御対象の動作速度(例えばモータの回転速度)を算出する速度算出部により算出された速度とが合致するような電流指令を導出し、制御対象に出力する。制御対象は、速度制御部60により出力された電流指令に基づいて、自装置を制御する。このように制御対象が制御されることによって、制御対象の動作によって制御されるアクチュエータ等の位置が制御される。
【0028】
図3は、解析位置指令とフィルタ演算部30により演算された演算後位置指令および積分指令偏差の関係を模式的に示す図である。
図3の(a)は解析位置指令が示す位置の時間的経緯を示している。
図3の(b)の縦軸は処理周期ごとの解析位置指令を示し、横軸は時間を示す。
図3の(c)は演算後位置指令が示す位置の時間的経緯を示す。
図3の(d)の縦軸は処理周期ごとの演算後位置指令を示し、横軸は時間を示す。
図3の(e)の縦軸は解析位置指令と演算後位置指令との差である指令偏差を示し、横軸は時間を示す。
図3の(f)の縦軸は指令偏差を積分した積分指令偏差を示し、横軸は時間を示す。
【0029】
図4は、解析位置指令が無い状態で、フィルタ演算部30により演算された演算後位置指令がアンダーシュートする場合を示す図である。
図3と重複する説明は省略する。
図4の(a)の縦軸はフィルタ演算部30の処理周期ごとに出力される演算後位置指令S1〜Snを示している。図示するように、フィルタ演算部30の演算結果において、演算後位置指令Sn−2からSnのようにアンダーシュートした演算後位置指令が出力される場合がある。この場合、積分指令偏差の絶対値は、第1の閾値(Th1)以下になる場合がある。
図4(c)の時刻Tn−1およびTnの期間で積分指令偏差の絶対値がTh1以下になっている。しかしながら、積分指令偏差の絶対値が第1の閾値以下であっても、フィルタ演算部30の演算結果の演算後位置指令が第2の閾値(Th2)を超える場合が有る。
図4(a)の時刻Tn−1およびTnの期間で積分指令偏差の絶対値がTh1以下であるが、演算後位置指令の絶対値の|Sn−1|がTh2以上になっている。この場合、フィルタ演算の結果が全て出しきられていない可能性が有る。
図4で、時刻Tn−1およびTnの期間で積分指令偏差の絶対値がTh1以下になっている為、その時点で補正部40が積分指令偏差を出力し、その積分指令偏差が位置制御部50に位置指令として入力して位置指令の位置制御部50への入力が完了したと判断してしまう。しかし、それだけでは、実際には演算後位置指令Sn−1の後にSn〜Sn+3が有り、本来の動きと相違を生じる為、制御対象に振動が発生してしまう可能性がある。
【0030】
このため、補正部40は、フィルタ演算部30に入力された解析位置指令と、フィルタ演算部30により出力された演算後位置指令との差である指令偏差を積分した積分指令偏差の絶対値が第1の閾値以下と判定した場合であっても、演算後位置指令の絶対値が第2の閾値以下でない場合は、積分指令偏差は出力しないようにする。この結果、演算後位置指令がアンダーシュートする場合における誤判定を抑制させることができる。
【0031】
上述したように、解析位置指令が無い状態で、補正部40が、積分指令偏差の絶対値が第1の閾値以下であり、且つフィルタ演算部30によりフィルタ演算された演算後位置指令の絶対値が第2の閾値以下である場合に、積分指令偏差を出力するため、積分指令偏差が位置指令として位置制御部50に入力される。これにより、位置制御部50に入力される位置指令の信頼性を向上させることができ、より正確に位置指令を反映した制御を実現することができる。また、フィルタ演算部30の演算の終了タイミングを迅速に判定することができる。
【0032】
(第2の実施形態)
以下、第2の実施形態について説明する。第2の実施形態では、指令解析部22が、上位位置指令を平滑処理する。上位位置指令が第2の実施形態のように指令されない時は、適用できない場合がある。以下、
図5、6を使って説明する。
【0033】
図5は、指令解析部22により実行される処理の流れを示すフローチャートで、
図6は、指令解析部22により上位位置指令が平滑化される際の概念図である。
指令解析部22は、
(1)第1のタイミングで第1の上位位置指令(
図6のP1)を取得する。第1のタイミングが初回の場合、次のタイミングである第2のタイミングとの時間間隔が分からないので予め設定した分割数の上限値で平滑して第1の解析位置指令として所定の周期ごとにフィルタ演算部30に出力する(
図6の例ではP11〜P14)。所定の周期は、位置制御部50で処理される位置制御周期と同じ周期である。予め設定した分割数の上限値をNmとすると、P11=P12=…=Pnm=P1/Nmを所定の周期ごとにフィルタ演算部30に出力する。例えばP1を1000、Nmを10とし、所定の周期を100μsecとすると、1000/10=100(P11、P12、…)を100μsecごとにフィルタ演算部30に出力する。
(1)の一連の処理の流れが、
図5のSTART→S200→S202→S204→RETURNとなる。
次に、
(2)第1のタイミングの後の第2のタイミングで第2の上位位置指令(
図6のP2)を取得し、第1の上位位置指令と第2の上位位置指令との時間間隔(
図6の例ではP1からP2の時間間隔、所定の周期の4回分の時間)に基づいて、第2の上位位置指令と第1の解析位置指令の出力していない残り分との合算を平滑化し、平滑化した第2の解析位置指令として所定の周期ごとにフィルタ演算部30に出力する。平滑とは、初回は予め設定した分割数の上限値、それ以降は、各タイミング間の時間間隔を所定の周期で除算した値(周期の回数N)の2倍の値を分割数とし、その分割数で除算する事をいう。P1=P2=1000、所定の周期:100μsecとすると、
図6の例では所定の周期の4回分の解析位置指令をフィルタ演算部30に出力しているので、出力していない残り分は、1000−100×4=600、そしてP2は1000なので600+1000=1600を周期の4回(N=4)の2倍である8が分割数となるので8で除算した200(P15、P16、…)を100μsecごとにフィルタ演算部30に出力する。
(2)の一連の処理の流れが、
図5のSTART→S200→S202→S206→RETURNとなる。
【0034】
(3)第2のタイミングの後の第3のタイミングで第3の上位位置指令(
図6のP3)を取得し、第3の上位位置指令と、第2の解析位置指令の出力していない残り分とを合算し、第2の上位位置指令と第3の上位位置指令との時間間隔(
図6の例ではP2からP3の時間間隔、所定の周期の4回分の時間)とに基づいて、合算した値を平滑化し、第3の解析位置指令として所定の周期ごとにフィルタ演算部30に出力する。
(3)の一連の処理の流れは(2)と同様、
図5のSTART→S200→S202→S206→RETURNとなる。
【0035】
なお、指令解析部22は、位置制御周期ごとに上位位置指令を取得した場合、「N=2」として上位位置指令を平滑化する。また、上記の一例では、上位位置指令が4つの位置制御周期が経過した際に指令解析部22に入力されるものとして説明したが、これに限らず、上位位置指令が入力される周期が可変である場合においても、指令解析部22は上記と同等の処理を実行する。
【0036】
このように、指令解析部22は、入力された上位位置指令を平滑化するのでフィルタ演算部30のフィルタ演算は不要とすることもできる。
【0037】
更に、本実施形態2の指令解析部22は、入力される上位位置指令の周期が変化した場合でも、上位位置指令が入力される周期に基づいて自動的に上位位置指令を適切に平滑化することができる。
【0038】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。