(57)【要約】【課題】時系列的に入力される指令値を、Ｊｅｒｋが大きくならず、且つ、指令に対する追従遅れが少ない形で補間できる内挿技術を提供する。【解決手段】サーボドライバ２０の制御部１０は、第ｋ（≧３）時間区間内の指令値を算出するための第ｋ補間関数を、ｘ(ｋ−２)からｘ(ｋ＋１)までの４指令値に基づき順次生成する機能であって、第ｋ補間関数として、第ｋ時間区間の開始時間、終了時間における関数値が、それぞれ、ｘ(ｋ)、ｘ(ｋ＋１)と一致し、且つ、第ｋ時間区間の開始時間における２階導関数値が、第ｋ−１補間関数の第ｋ−１時間区間の終了時間における２階導関数値と一致する、時間の５次式を生成する機能を有する。【選択図】図１
2019087128.tif 000002
【特許請求の範囲】
【請求項１】
所定周期ｔｓで順次入力される指令値ｘ(ｋ)（ｋは、何番目に入力された指令値であるかを示す整数値）を補間する指令値補間装置において、
第ｋ時間区間の開始時間、終了時間における関数値が、それぞれ、指令値ｘ(ｋ)、指令値ｘ(ｋ＋１)と一致する第ｋ補間関数を、“１”以上のｋ値のそれぞれについてｋ値の昇順に生成する補間関数生成手段と、
前記補間関数生成手段により生成される前記第ｋ補間関数を用いて前記第ｋ時間区間内の複数の指令値を算出する処理を、ｋ値の昇順に繰り返す補間手段と、
を備え、
前記補間関数生成手段が、前記第ｋ（≧３）補間関数を指令値ｘ(ｋ−２)から指令値ｘ(ｋ＋１)までの４指令値に基づき生成する手段であると共に、前記第ｋ（≧３）補間関数として、前記第ｋ時間区間の開始時間、終了時間における関数値が、それぞれ、指令値ｘ(ｋ)、指令値ｘ(ｋ＋１)と一致し、且つ、前記第ｋ時間区間の開始時間における２階導関数値が、第ｋ−１補間関数の第ｋ−１時間区間の終了時間における２階導関数値と一致する、時間の５次式を生成する手段である、
ことを特徴とする指令値補間装置。
【請求項２】
前記補間関数生成手段は、前記第ｋ（≧３）補間関数として、前記第ｋ時間区間の開始時間、終了時間における関数値が、それぞれ、指令値ｘ(ｋ)、指令値ｘ(ｋ＋１)と一致し、且つ、前記第ｋ時間区間の終了時間における１階導関数値、２階導関数値が、それぞれ、前記第ｋ−１補間関数の第ｋ−１時間区間の開始時間における１階導関数値、２階導関数値と一致する、時間の５次式を、生成する、
ことを特徴とする請求項１に記載の指令値補間装置。
【請求項３】
前記第ｋ（≧３）補間関数が、以下の式を満たすａ１〜ａ６を、それぞれ、０次〜５次の係数とした、第ｋ時間区間の開始時間からの経過時間ｔの５次式である、
ことを特徴とする請求項２に記載の指令値補間装置。
【数１】
2019087128.tif 000020
【請求項４】
前記補間関数生成手段は、前記第ｋ（≧１）補間関数を生成するための生成処理を、指令値ｘ(ｋ＋１)が入力されたときに実行し、
前記補間手段は、前記第ｋ補間関数が生成されたときに、前記第ｋ時間区間内の指令値を算出する処理を開始する、
ことを特徴とする請求項１から３のいずれか一項に記載の指令値補間装置。
【請求項５】
前記補間関数生成手段は、
ｘ(−１)、ｘ(０)の値が、それぞれ、“３・ｘ(１)−２・ｘ(２)”、“２・ｘ(１)−ｘ(２)”であると仮定して、前記（１）式により、前記第１補間関数を生成し、
ｘ(０)の値が、“２・ｘ(１)−ｘ(２)”であると仮定して、前記（１）式により、前記第２補間関数を生成する、
ことを特徴とする請求項３に記載の指令値補間装置。
【請求項６】
前記補間関数生成手段は、
ｘ(−１)、ｘ(０)の値が、いずれも、ｘ(１)であると仮定して、前記（１）式により、前記第１補間関数を生成し、
ｘ(０)の値が、ｘ(１)であると仮定して、前記(１)式により、前記第２補間関数を生成する、
ことを特徴とする請求項３に記載の指令値補間装置。
【請求項７】
指令値ｘ(ｋ＋１)（ｋ≧３）が入力されるべき入力タイミングで指令値ｘ(ｋ＋１)が入力されなかった場合、前記補間手段は、第ｋ−１補間関数を用いて第ｋ時間区間内の指令値を算出する、
ことを特徴とする請求項１から６のいずれか一項に記載の指令値補間装置。
【請求項８】
指令値ｘ(ｋ＋１)（ｋ≧３）が入力されるべき入力タイミングで指令値ｘ(ｋ＋１)が入力されなかった場合、前記補間関数生成手段は、第ｋ−１補間関数を用いて指令値ｘ(ｋ
＋１)を推定し、推定した指令値ｘ(ｋ＋１)を用いて第ｋ補間関数を生成する
ことを特徴とする請求項１から６のいずれか一項に記載の指令値補間装置。
【請求項９】
所定周期で順次入力される指令値ｘ(ｋ)（ｋは、何番目に入力された指令値であるかを示す整数値）に基づきサーボモータを駆動するサーボドライバにおいて、
前記サーボモータを駆動するためのパワー回路と、
指令値ｘ(ｋ＋１)（ｋ≧１）が入力されたときに、第ｋ時間区間の開始時間、終了時間における関数値が、それぞれ、指令値ｘ(ｋ)、指令値ｘ(ｋ＋１)と一致する第ｋ補間関数を生成する補間関数生成手段と、
前記補間関数生成手段により生成される前記第ｋ補間関数を用いて前記第ｋ時間区間内の複数の指令値を算出する補間手段と、
前記補間手段により算出された各指令値に基づき前記パワー回路を制御する駆動制御手段と、
を備え、
前記補間関数生成手段が、前記第ｋ（≧３）補間関数を指令値ｘ(ｋ−２)から指令値ｘ(ｋ＋１)までの４指令値に基づき生成する手段であると共に、前記第ｋ（≧３）補間関数として、前記第ｋ時間区間の開始時間、終了時間における関数値が、それぞれ、指令値ｘ(ｋ)、指令値ｘ(ｋ＋１)と一致し、且つ、前記第ｋ時間区間の開始時間における２階導関数値が、第ｋ−１補間関数の第ｋ−１時間区間の終了時間における２階導関数値と一致する、時間の５次式を、生成する手段である、
ことを特徴とするサーボドライバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、指令値補間装置とサーボドライバとに関する。
【背景技術】
【０００２】
数値制御工作機械のより滑らかな制御を可能とするために、与えられている複数の指令値に基づき、１階導関数及び２階導関数が連続するように、各指令値間の指令値を補間（算出）するための補間関数を生成し、生成した各補間関数を用いて指令値を補間することが行われている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２２５８２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
補間対象となる複数の指令値が既に存在している場合、補間関数の生成に必要とされる指令値数は特に限定されない。ただし、指令値が順次入力される場合には、補間関数の生成に必要とされる指令値数が少ない程、各指令値からなる指令に対する追従遅れを少なくすることができる。そのため、指令値が順次入力される場合には、補間関数の生成に必要とされる指令値数は少ない方がよい。そして、指令値が順次入力される場合にも、Ｊｅｒｋ（加加速度）が大きくなるのを防ぐために、各補間関数の２階導関数が連続していることが望まれる。
【０００５】
本発明は、上記事情に鑑みてなされたものであり、時系列的に入力される指令値を、Ｊｅｒｋが大きくならず、且つ、指令に対する追従遅れが少ない形で補間できる内挿技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明の、所定周期ｔｓで順次入力される指令値ｘ(ｋ)（ｋは、何番目に入力された指令値であるかを示す整数値）を補間する指令値補間装置は、第ｋ時間区間の開始時間、終了時間における関数値が、それぞれ、指令値ｘ(ｋ)、指令値ｘ(ｋ＋１)と一致する第ｋ補間関数を、"１"以上のｋ値のそれぞれについてｋ値の昇順に生成する補間関数生成手段と、前記補間関数生成手段により生成される前記第ｋ補間関数を用いて前記第ｋ時間区間内の複数の指令値を算出する処理を、ｋ値の昇順に繰り返す補間手段と、を備え、  前記補間関数生成手段が、前記第ｋ（≧３）補間関数を指令値ｘ(
ｋ−２)から指令値ｘ(ｋ＋１)までの４指令値に基づき生成する手段であると共に、前記
第ｋ（≧３）補間関数として、前記第ｋ時間区間の開始時間、終了時間における関数値が、それぞれ、指令値ｘ(ｋ)、指令値ｘ(ｋ＋１)と一致し、且つ、前記第ｋ時間区間の開始時間における２階導関数値が、第ｋ−１補間関数の第ｋ−１時間区間の終了時間における２階導関数値と一致する、時間の５次式を生成する手段である構成を有する。
【０００７】
すなわち、本発明の指令値補間装置の補間関数生成手段は、ｋ≧３である場合、指令値ｘ(ｋ−２)から指令値ｘ(ｋ＋１)までの４指令値に基づき、第ｋ指令区間内の指令値を算出するための第ｋ補間関数として、時間の５次式を生成する。そして、補間関数生成手段が生成する第ｋ（≧３）補間関数は、第ｋ時間区間の開始時間、終了時間における関数値が、それぞれ、指令値ｘ(ｋ)、指令値ｘ(ｋ＋１)と一致し、且つ、第ｋ時間区間の開始時間における２階導関数値が、第ｋ−１補間関数の第ｋ−１時間区間の終了時間における２
階導関数値と一致する関数である。従って、補間関数生成手段が生成する各補間関数によれば、Ｊｅｒｋ（加加速度）が小さくなる形で指令値を補間できる。そして、補間関数生成手段は、各補間関数を少量（４個）の指令値から生成するのであるから、本発明に係る指令値補間装置によれば、各指令値からなる指令に対する追従遅れを少なくすることも可能となる。
【０００８】
１次導関数も連続していた方が、Ｊｅｒｋの抑制効果は向上する。従って、本発明の指令値補間装置に、『前記補間関数生成手段は、前記第ｋ（≧３）補間関数として、前記第ｋ時間区間の開始時間、終了時間における関数値が、それぞれ、指令値ｘ(ｋ)、指令値ｘ(ｋ＋１)と一致し、且つ、前記第ｋ時間区間の終了時間における１階導関数値、２階導関数値が、それぞれ、前記第ｋ−１補間関数の第ｋ−１時間区間の開始時間における１階導関数値、２階導関数値と一致する、時間の５次式を、生成する』構成を採用しておいてもよい。なお、当該構成は、例えば、第ｋ補間関数が、『以下の式を満たすａ１〜ａ６を、それぞれ、０次〜５次の係数とした、第ｋ時間区間の開始時間からの経過時間ｔの５次式』となるようにしておくことにより実現できる。
【０００９】
【数１】
2019087128.tif 000003
【００１０】
本発明の指令値補間装置には、通常、『前記補間関数生成手段は、前記第ｋ（≧１）補間関数を生成するための生成処理を、指令値ｘ(ｋ＋１)が入力されたときに実行し、前記補間手段は、前記第ｋ補間関数が生成されたときに、前記第ｋ時間区間内の指令値を算出する処理を開始する』構成が採用される。ただし、本発明の指令値補間装置に、補間関数生成手段による第ｋ補間関数の生成タイミングや、補間手段による“第ｋ時間区間内の指令値を算出する処理”の開始タイミングが、上記したものとは異なる構成を採用しておいてもよい。
【００１１】
また、本発明の指令値補間装置の補間関数生成手段としては、第１，第２補間関数の具体的な生成手順が異なる様々なものを採用することが出来る。具体的には、補間関数生成手段として、例えば、『ｘ(−１)、ｘ(０)の値が、それぞれ、"３・ｘ(１)−２・ｘ(２)"、"２・ｘ(１)−ｘ(２)"であると仮定して、前記（１）式により、第１補間関数を生成し、ｘ(０)の値が、"２・ｘ(１)−ｘ(２)"であると仮定して、前記（１）式により、第２補間関数を生成する』ものを採用してもよい。また、補間関数生成手段として、『ｘ(−１)、ｘ(０)の値として、いずれも、ｘ(１)であると仮定して、前記（１）式により、第１補間関数を生成し、ｘ(０)の値が、ｘ(１)であると仮定して、前記(１)式により、第２補間関数を生成する』ものを採用してもよい。
【００１２】
また、或る指令値が入力されなくても補間を続行できるようにするために、本発明の指
令値補間装置に、『指令値ｘ(ｋ＋１)（ｋ≧３）が入力されるべき入力タイミングで指令値ｘ(ｋ＋１)が入力されなかった場合、前記補間手段は、第ｋ−１補間関数を用いて第ｋ時間区間内の指令値を算出する』構成や、『指令値ｘ(ｋ＋１)（ｋ≧３）が入力されるべき入力タイミングで指令値ｘ(ｋ＋１)が入力されなかった場合、前記補間関数生成手段は、第ｋ−１補間関数を用いて指令値ｘ(ｋ＋１)を推定し、推定した指令値ｘ(ｋ＋１)を用いて第ｋ補間関数を生成する』構成を採用しておいてもよい。
【００１３】
また、本発明の、所定周期で順次入力される指令値ｘ(ｋ)（ｋは、何番目に入力された指令値であるかを示す整数値）に基づきサーボモータを駆動するサーボドライバは、前記サーボモータを駆動するためのパワー回路と、指令値ｘ(ｋ＋１)（ｋ≧１）が入力されたときに、第ｋ時間区間の開始時間、終了時間における関数値が、それぞれ、指令値ｘ(ｋ)、指令値ｘ(ｋ＋１)と一致する第ｋ補間関数を生成する補間関数生成手段と、前記補間関数生成手段により生成される前記第ｋ補間関数を用いて前記第ｋ時間区間内の複数の指令値を算出する補間手段と、前記補間手段により算出された各指令値に基づき前記パワー回路を制御する駆動制御手段と、を備え、前記補間関数生成手段が、前記第ｋ（≧３）補間関数を指令値ｘ(ｋ−２)から指令値ｘ(ｋ＋１)までの４指令値に基づき生成する手段であると共に、前記第ｋ（≧３）補間関数として、前記第ｋ時間区間の開始時間、終了時間における関数値が、それぞれ、指令値ｘ(ｋ)、指令値ｘ(ｋ＋１)と一致し、且つ、前記第ｋ時間区間の開始時間における２階導関数値が、第ｋ−１補間関数の第ｋ−１時間区間の終了時間における２階導関数値と一致する、時間の５次式を、生成する手段である構成を有する。
【００１４】
すなわち、本発明のサーボドライバは、本発明の指令値補間装置と同様に、第ｋ（≧３）指令区間内の指令値を算出するための第ｋ補間関数（時間の５次式）を、指令値ｘ(ｋ
−２)から指令値ｘ(ｋ＋１)までの４指令値に基づき生成する補間関数生成手段を備える
。また、この補間関数生成手段が生成する第ｋ（≧３）補間関数は、第ｋ時間区間の開始時間、終了時間における関数値が、それぞれ、指令値ｘ(ｋ)、指令値ｘ(ｋ＋１)と一致し、且つ、第ｋ時間区間の開始時間における２階導関数値が、第ｋ−１補間関数の第ｋ−１時間区間の終了時間における２階導関数値と一致する関数である。従って、補間関数生成手段が生成する各補間関数によれば、Ｊｅｒｋ（加加速度）が小さくなる形で指令値を補間できる。そして、補間関数生成手段は、各補間関数を少量（４個）の指令値から生成するのであるから、本発明のサーボドライバによれば、指令に対する追従遅れが少ない形でパワー回路の制御できることになる。
【発明の効果】
【００１５】
本発明によれば、時系列的に入力される指令値を、Ｊｅｒｋが大きくならず、且つ、指令に対する追従遅れが少ない形で、補間することが可能となる。
【図面の簡単な説明】
【００１６】
【図１】図１は、本発明の一実施形態に係るサーボドライバの概略構成及び使用形態の説明図である。
【図２】図２は、実施形態に係るサーボドライバが備える制御部の機能ブロック図である。
【図３】図３は、補間関数ｙｋ（ｔ）を説明するための図である。
【図４】図４は、制御部内の補間関数生成部が実行する補間関数生成処理の流れ図である。
【図５】図５は、パラメータ算出処理の具体例の説明図である。
【図６】図６は、パラメータ算出処理の他の具体例の説明図である。
【図７】図７は、図５のパラメータ算出処理を採用した場合におけるモータの位置及びトルクの時間変化パターンの説明図である。
【図８】図８は、図６のパラメータ算出処理を採用した場合におけるモータの位置及びトルクの時間変化パターンの説明図である。
【図９】図９は、補間関数生成処理のステップＳ１０６の処理の説明図である。
【図１０】図１０は、同一入力に対して、１次補間、２次補間、制御部による５次補間を行った場合のＪｅｒｋ値のシミュレーション結果の説明図である。
【図１１】図１１は、実施形態に係るサーボドライバの制御部による補間結果の説明図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態を、図面を参照して説明する。
【００１８】
図１に、本発明の一実施形態に係るサーボドライバ２０の概略構成及び使用形態を示す。
【００１９】
本実施形態に係るサーボドライバ２０は、モータ（三相モータ）４０を駆動するための装置である。図示してあるように、サーボドライバ２０は、パワー回路２１、制御部１０、及び、パワー回路２１内のインバータ回路２４（詳細は後述）の各レグの入出力電流値を測定するための電流センサ２５を備える。
【００２０】
パワー回路２１は、モータ４０に供給する三相交流を生成するための回路である。パワー回路２１は、三相電源５０からの三相交流を整流するための整流回路２２、及び、平滑コンデンサ２３を備える。さらに、パワー回路２１は、平滑コンデンサ２３により平滑化された整流回路２２の出力電圧を、三相交流に変換するためのインバータ回路２４を備える。
【００２１】
制御部１０は、プロセッサ、フラッシュＲＯＭ、ＲＡＭ、ゲートドライバ等から構成されたユニットである。図示してあるように、この制御部１０には、各電流センサ２５からの信号と、モータ４０に取り付けられたエンコーダ４１（アブソリュートエンコーダやインクリメンタルエンコーダ）からの信号とが、入力されている。
【００２２】
また、制御部１０のフラッシュＲＯＭには、サーボドライバ２０用のものとして開発されたプログラムが記憶されている。制御部１０は、当該プログラムをプロセッサがＲＡＭ上に読み出して実行することにより、後述する各種機能を有するユニットとして動作する。
【００２３】
以下、制御部１０の機能を説明する。
【００２４】
制御部１０は、基本的には、ＰＬＣ（Programmable logic controller）等の上位装置
３０から所定の周期ｔｓ（例えば、４ｍｓ）で周期的に入力される指令値（本実施形態では、電流指令値）に従ってインバータ回路２４を制御するユニットである。以下、上位装置３０からのｋ番目（ｋ≧１；先頭が１番目）の指令値のことを、ｘ(ｋ)と表記する。また、ｋ番目の指令値が入力されてからｋ＋１番目の指令値が入力されるまでの時間区間、及び、ｋ番目の指令値が出力されてからｋ＋１番目の指令値が出力されるまでの時間区間のことを、第ｋ指令区間と表記する。
【００２５】
図２に、制御部１０の機能ブロック図を示す。図示してあるように、制御部１０は、補間関数生成部１１、補間部１２及び駆動部１３として動作する。
【００２６】
補間関数生成部１１は、指令区間毎に、その指令区間用の補間関数を生成するユニット（機能ブロック）である。詳細については後述するが、この補間関数生成部１１は、第ｋ
（≧１）指令区間用の補間関数ｙｋ(ｔ)として、時間ｔの５次式を生成する。
ｙｋ(ｔ)＝ａ１＋ａ２ｔ＋ａ３ｔ２＋ａ４ｔ３＋ａ５ｔ４＋ａ６ｔ５
【００２７】
なお、この５次式におけるｔは、図３に模式的に示してあるように、第ｋ指令区間の開始時間（開始時刻）からの経過時間である。すなわち、指令値（指令値の補間値）を算出すべき第ｋ時間区間内の時刻をｔｔｇｔと表記し、第ｋ指令区間の開始時刻をｔｋと表記すると、上記５次式は、ｔに、“ｔｔｇｔ−ｔｋ”を代入することにより、時刻ｔｔｇｔにおける指令値が算出される式となっている。
【００２８】
補間部１２（図２）は、基本的には、補間関数生成部１１により生成された最新の補間関数による指令値の算出を、周期ｔｓよりも短い周期ｔｏ（例えば、０．１２５ｍｓ）で繰り返すユニットである。ただし、補間部１２は、第ｋ−１指令区間用の補間式ｙｋ−１(ｔ)から、第ｋ指令区間内の指令値を算出する機能（詳細は後述）を有している。
【００２９】
駆動部１３は、各センサ２５からの電流値が、補間部１２により算出された指令値に応じた値となるように、インバータ回路２４を制御するユニットである。
【００３０】
以下、制御部１０の機能を、さらに具体的に説明する。
制御部１０の補間関数生成部１１は、１番目（最初）の指令値ｘ(１)が入力されたときに、図４に示した手順の補間関数生成処理を開始する。なお、この図４及び以下の説明において、ｋとは、初期値が“１”で、ステップＳ１０１の処理（判断）にて“ＹＥＳ”側への分岐が行われる度に、“１”カウントアップされる変数のことである。
【００３１】
すなわち、指令値ｘ(１)が入力されたため、この補間関数生成処理を開始した補間関数生成部１１は、まず、ステップＳ１０１にて、次の指令値の入力タイミングとなるのを待機する。換言すれば、補間関数生成部１１は、今回の指令値の入力時刻から、指令値の入力周期ｔｓが経過するのを待機する。
【００３２】
指令値の入力タイミングとなった場合（ステップＳ１０１；ＹＥＳ）、補間関数生成部１１は、指令値が入力されたか否かを判断する（ステップＳ１０２）。そして、補間関数生成部１１は、指令値が入力された場合（ステップＳ１０２；ＹＥＳ）には、ｋ値が４以上であるか（今回入力された指令値が４番目以降の指令値であるか）否かを判断する（ステップＳ１０３）。
【００３３】
ｋ値が４未満であった場合（ステップＳ１０３；ＮＯ）、すなわち、今回入力された指令値が２番目又は３番目の指令値であった場合、補間関数生成部１１は、パラメータ算出処理（ステップＳ１０４）を行ってから、関数生成処理（ステップＳ１０５）を行う。一方、今回入力された指令値が４番目以降の指令値であった場合（ステップＳ１０３；ＹＥＳ）、補間関数生成部１１は、パラメータ算出処理を行うことなく、関数生成処理（ステップＳ１０５）を行う。
【００３４】
関数生成処理は、第ｋ指令区間用の補間関数“ｙｋ(ｔ)＝ａ１＋ａ２ｔ＋ａ３ｔ２＋ａ４ｔ３＋ａ５ｔ４＋ａ６ｔ５”の係数ａ１〜ａ６を、以下の（１）式により算出して算出結果を補間部１２に通知する処理である。
【００３５】
【数２】
2019087128.tif 000004
【００３６】
以下、（１）式の導出手順を説明する。なお、以下の説明では、関数ｆ（ｙｋ(ｔ)等）のｎ階導関数のことを、ｆ(n)と表記する。
【００３７】
上記した（１）式は、１階導関数、２階導関数が区間境界において連続する指令値補間用の関数の生成法を鋭意研究した結果として得られたものである。
【００３８】
具体的には、指令区間境界における関数値が指令値と一致し、指令区間境界における１階導関数、２階導関数が連続する補間関数は、６つの境界条件を満たす必要がある。従って、６つの係数を有する以下の（２）式（時間ｔの５次式）を用いれば、指令区間境界における関数値が指令値と一致し、指令区間境界における１階導関数、２階導関数が連続する補間関数を得ることができる。
【００３９】
【数３】
2019087128.tif 000005
【００４０】
（２）式の６つの係数の値を決定するためには、原則として、６つの指令値が必要とされる。ただし、係数ａ１〜ａ６の値の算出に要する指令値数が多いと、指令に対する追従遅れが大きくなる。そこで、上記（１）式の開発時には、指令に対する追従遅れを少なくするために、第ｋ補間関数の第ｋ指令区間の各境界（開始時間“０”、終了時間“ｔｓ”）における１階導関数値、２階導関数値を、以下の（３）〜（６）式で近似している。
【００４１】
【数４】
2019087128.tif 000006
【００４２】
（３）式は、第ｋ補間関数の第ｋ指令区間の終了時間における１階導関数値の近似式で
あり、（４）式は、第ｋ補間関数の第ｋ指令区間の終了時間における２階導関数値の近似式である。これらの式は、（２）式のテイラー展開等により導出したものとなっている。
【００４３】
具体的には、（２）式を点ｔｓ回りでテイラー展開すると以下の（７）式が得られる。
【００４４】
【数５】
2019087128.tif 000007
この（７）式の右辺の“ｔ−ｔｓ”の３次以上の各項を、無視する（“０”と見做す）と、以下の（８）式を得ることができる。
【００４５】
【数６】
2019087128.tif 000008
【００４６】
（８）式のｔに、−ｔｓ、０を代入すると、それぞれ、以下の（９）、（１０）式が得られる。
【００４７】
【数７】
2019087128.tif 000009
【００４８】
これらの式を、ｙｋ(１)(ｔｓ)、ｙｋ(２)(ｔｓ)の連立方程式として解くと、以下の（１１）式と（１２）式とを得ることができる。
【００４９】
【数８】
2019087128.tif 000010
【００５０】
上記した（３）式は、（１１）式の右辺を、ｙｋ(−ｔｓ)＝ｘ(ｋ−１)、ｙｋ(０)＝ｘ(ｋ)、ｙｋ(ｔｓ)＝ｘ(ｋ＋１)という関係式を用いて、ｘの式に変更したものであり、上記した（４）式は、同じ関係式を用いて、（１２）式の右辺をｘの式に変更したものである。
【００５１】
上記した（５）、（６）式は、それぞれ、第ｋ補間関数の第ｋ指令区間の開始時間における１階導関数値、２階導関数値の近似式である。これらの式は、以下の手順で導出したものとなっている。
【００５２】
求めたい第ｋ補間関数は、第ｋ指令区間の開始時間における１階、２階導関数値が、それぞれ、第ｋ−１補間関数の第ｋ−１指令区間の終了時間（＝第ｋ指令区間の開始時間）
における１階、２階導関数値と一致する関数である。従って、第ｋ補間関数は、以下の２条件を満たす必要がある。
【００５３】
【数９】
2019087128.tif 000011
【００５４】
ここで、上記した（３）、（４）式の“ｋ”に、“ｋ−１”を代入すると以下の（１５）、（１６）式を得ることができる。
【００５５】
【数１０】
2019087128.tif 000012
【００５６】
そして、（１３）式を用いて（１５）式を変形すれば、（５）式が得られ、（１４）式を用いて（１６）式を変形すれば、（６）式が得られる。従って、（５）、（６）式を満たすようにすれば、第ｋ指令区間の開始時間における１階、２階導関数値が、それぞれ、第ｋ−１補間関数の第ｋ−１指令区間の終了時間（＝第ｋ指令区間の開始時間）における１階、２階導関数値と一致する第ｋ補間関数を得ることができる。
【００５７】
以上、説明したように、（３）、（４）式は、それぞれ、第ｋ補間関数の第ｋ指令区間の終了時間における１階導関数値、２階導関数値の近似式として使用できるものである。また、（５）式は、第ｋ補間関数の第ｋ指令区間の開始時間における１階導関数値の近似式、及び、第ｋ補間関数の第ｋ指令区間の開始時間における１階階導関数の連続条件式として使用できるものである。さらに、（６）式は、第ｋ補間関数の第ｋ指令区間の開始時間における２階導関数値の近似式、及び、第ｋ補間関数の第ｋ指令区間の開始時間における２階階導関数の連続条件式として使用できるものである。そして、ｙｋ(０)＝ｘ(ｋ)、ｙｋ(ｔｓ)＝ｘ(ｋ＋１)であるから、結局、以下の（１７）式が成立することになる。
【００５８】
【数１１】
2019087128.tif 000013
【００５９】
すなわち、以下のように、行列Ｙｄ、ＫＸ、Ｘを定義すると、Ｙｄ＝ＫＸ・Ｘが成立することになる。
【００６０】
【数１２】
2019087128.tif 000014
【００６１】
また、（１）式（ｔの５次式）の両辺をｔで微分すると、以下の（１８）式を得ることができ、（１８）式の両辺をｔで微分すると、以下の（１９）式を得ることができる。
【００６２】
【数１３】
2019087128.tif 000015
【００６３】
さらに、（１）式から、ｙｋ(０)＝ａ１が得られ、（１８）式、（１９）式から、それぞれ、ｙｋ(１)(０)＝ａ２、ｙｋ(２)(０)＝２ａ３が得られる。
従って、以下の（２０）式が成立することになる。
【００６４】
【数１４】
2019087128.tif 000016
【００６５】
この（２０）式中の右辺の６行６列行列、１行６列行列のことを、それぞれ、ＫＡ、Ａと表記すると、Ｙｄ＝ＫＡ・Ａが成立していることになるが、既に説明したように、Ｙｄ＝ＫＸ・Ｘが成立している（（１７）式参照）。
【００６６】
そして、ＫＸ、ＫＡ、Ｘの要素は、全て既知数であるため、ＫＡ−１・ＫＸ・Ｘにより、Ａを求めることができる。Ａを求めるために、ＫＡ−１・ＫＸを実際に計算すると、以下の行列が得られる。
【００６７】
【数１５】
2019087128.tif 000017
【００６８】
従って、Ａ（ａ１〜ａ６）を、上記した（１）式により算出できることになる。
【００６９】
図４に戻って説明を続ける。
上記説明から明らかなように、関数生成処理は、本来は、連続的に入力された４つ指令値を必要とする処理である。ただし、関数生成処理をそのような処理としておいた場合、４番目の指令値が入力されるまで、パワー回路２１の制御（モータ４０の駆動制御）を開始できないことになる。
【００７０】
２番目の指令値が入力された段階で、パワー回路２１の制御を開始できるようにするために用意されている処理が、ステップＳ１０４のパラメータ算出処理である。
【００７１】
具体的には、上記内容の関数生成処理は、連続した４つの指令値があれば実行可能である。従って、第１補間関数の生成時には、指令値ｘ(−１)、指令値ｘ(０)が算出（推定）されて関数生成処理が行われ、第２補間関数の生成時には、指令値ｘ(０)が算出されて関数生成処理が行われるようにしておけば、２番目の指令値が入力された段階でパワー回路２１の制御を開始することが可能となる。なお、指令値ｘ(−１)とは、指令値ｘ(１)の２つ前の指令値の推定値のことであり、指令値ｘ(０)とは、指令値ｘ(１)の１つ前の指令値の推定値のことである。
【００７２】
ただし、指令値ｘ(−１)や指令値ｘ(０)の値が適正でない場合には、パワー回路２１に対して好ましくない制御が行われてしまうことになる。そのような不具合の発生を防止するために、ステップＳ１０４では、既に入力されている指令値に基づき、指令値ｘ(−１)及びｘ(０)、又は、指令値ｘ(０)を算出するパラメータ算出処理が行われる。
【００７３】
以下、パラメータ算出処理の具体例を説明する。
パラメータ算出処理としては、ｋ＝２である場合には、以下の（２１）及び（２２）式により、ｘ(−１)とｘ(０)とを算出（推定）し、ｋ＝３である場合には、以下の（２２）式により、ｘ(０)を算出するものを採用することが出来る。
【００７４】
ｘ(−１)＝３・ｘ(１)−２・ｘ(２)          …（21）
ｘ(０)＝２・ｘ(１)−ｘ(２)                …（22）
【００７５】
すなわち、このパラメータ算出処理では、図５に模式的に示したように、指令値の変化速度が一定であると仮定して、ｘ(−１)及びｘ(０)、又はｘ(０)を算出する。
【００７６】
また、パラメータ算出処理として、図６に模式的に示したように、ｋ＝２である場合に
は、指令値ｘ(１)と同じ値を、ｘ(−１)とｘ(０)として算出し、ｋ＝２である場合には、指令値ｘ(１)と同じ値を、ｘ(０)として算出する処理を採用することもできる。
【００７７】
なお、前者のパラメータ算出処理（図５）を採用した場合、モータ４０の位置、トルクは、それぞれ、図７に示したように変化する。また、後者のパラメータ算出処理（図６）を採用した場合、モータ４０の位置、トルクは、それぞれ、図８に示したように変化する。
【００７８】
すなわち、変化速度一定を仮定して指令値ｘ(−１)、ｘ（０）を算出する前者のパラメータ算出処理を採用しておけば（図７）、指令値ｘ(−１)、ｘ（０）をｘ（１）と同じ値とする後者のパラメータ算出処理を採用した場合（図８）よりも、軌道再現性を向上させることができる。ただし、後者のパラメータ算出処理を採用しておけば（図８）、動作開始点のトルクのピークを、前者のパラメータ算出処理を採用した場合（図７）よりも小さくすることができる。従って、動作開始点のトルクのピークを小さくしたい場合には、前者のパラメータ算出処理が行われるようにしておけば良く、良好な軌道再現性を得たい場合には、後者のパラメータ算出処理が行われるようにしておけば良い。
【００７９】
図４に戻って説明を続ける。
関数生成処理を終えた補間関数生成部１１は、ステップＳ１０１に戻って次の指令値の入力タイミングとなるのを待機する。
【００８０】
補間関数生成部１１は、通常は、上記のような処理を繰り返す。ただし、指令値の入力タイミングとなったにも拘わらず、指令値が入力されなかった場合（ステップＳ１０２；ＮＯ）、補間関数生成部１１は、補間部１２に、前指令区間用の５次補間式での補間を指示する（ステップＳ１０６）。
【００８１】
すなわち、上位装置３０からは、通常、なだらかに時間変化する指令値が入力される。従って、図９に模式的に示したように、第ｋ−１指令値から入力されなかった第ｋ指令値（図では、欠落指令値）までの第ｋ指令区間の補間を、第ｋ−１指令区間用の５次補間式ｙｋ−１(ｔ)で行うことができる。なお、第ｋ−１指令区間用の５次補間式ｙｋ−１(ｔ)におけるｔは、第ｋ−１指令区間の開始時刻ｔｋ−１からの経過時間である。そのため、ステップＳ１０６の処理による指示を受けた補間部１２は、指令値を算出すべき時刻ｔｔｇｔの第ｋ時間区間の開始時刻からの経過時間をΔｔと表記すると、ｙｋ−１(ｔ)のｔに、“ｔｓ＋Δｔ”を代入することにより、時刻ｔｔｇｔにおける指令値を算出する。
【００８２】
以上、説明したように、本実施形態に係るサーボドライバ２０の制御部１０は、指令値ｘ(ｋ−２)から指令値ｘ(ｋ＋１)までの４指令値に基づき、指令値ｘ(ｋ)から指令値ｘ(
ｋ＋１)までの第ｋ指令区間内の指令値を算出するための第ｋ補間関数（時間の５次式）
を生成する。そして、制御部１０の生成する第ｋ補間関数は、第ｋ時間区間の開始時間、終了時間における関数値が、それぞれ、指令値ｘ(ｋ)、指令値ｘ(ｋ＋１)と一致し、且つ、第ｋ時間区間の開始時間における１階導関数値、２階導関数値が、それぞれ、第ｋ−１補間関数の第ｋ−１時間区間の終了時間における１階導関数値、２階導関数値と一致する関数である。従って、制御部１０が生成する各補間関数によれば、オリジナル軌道（補間対象指令値の時間変化パターン）への追従性が高く、Ｊｅｒｋ（加加速度）も大きくならない形で指令値を補間できる。
【００８３】
具体的には、図１０に、同一入力（同一の指令値群）に対して、１次補間、２次補間、制御部１０による５次補間を行った場合のＪｅｒｋ値のシミュレーション結果を示す。図示してあるように、１次補間を行った場合（図１０（ａ））には、指令値の入力毎に、比較的に大きなＪｅｒｋが発生する。また、２次補間を行った場合（図１０（ｂ））にも、
指令値の入力毎に、比較的に大きなＪｅｒｋが発生するが、制御部１０の５次補間によれば、図１０（ｃ）に示してあるように、Ｊｅｒｋ値を極めて小さな値に抑えることができる。
【００８４】
さらに、制御部１０は、４指令値が揃わない第１補間関数、第２補間関数を、指令値ｘ(０)等の推定値を用いて生成する機能を有している。従って、本実施形態に係るサーボドライバ２０（制御部１０）によれば、図１１に示したように、１次補間と同様に、２番目の指令値の入力時点から、指令値の補間を開始できることにもなる。
【００８５】
《変形形態》
上記した実施形態に係るサーボドライバ２０（制御部１０）は、各種の変形を行えるものである。例えば、上記技術に基づき、モータ４０用のものではない指令値を補正する装置を製造しても良い。また、補間関数生成処理（図４）を、指令値の入力タイミングで指令値が入力されなかった場合（ステップＳ１０２；ＮＯ）に、第ｋ−１指令区間用の５次補間式ｙｋ−１(ｔ)のｔに２ｔｓを代入することによりｘ(ｋ＋１)を算出（推定）する処理が行われてから、ステップＳ１０５の処理が行われる処理に変形しても良い。
【００８６】
２次導関数が連続していれば（第ｋ時間区間の開始時間における２階導関数値が、第ｋ−１補間関数の第ｋ−１時間区間の終了時間における２階導関数値と一致していれば）、１次導関数が連続していなくても、Ｊｅｒｋは小さくなる。従って、（５）式の代わりに他の式が用いられてａ１〜ａ６が算出されるようにしておいてもよい。ただし−１次導関数及び２次導関数の双方が連続していた方がＪｅｒｋは小さくなるので、（５）式を用いておく（（１）式によりａ１〜ａ６が算出されるようにしておく）ことが好ましい。
【００８７】
なお、（５）式の代わりに使用できる式としては、以下の（２３）式を例示できる。
【００８８】
【数１６】
2019087128.tif 000018
【００８９】
この（２３）式を（５）式の代わりに用いた場合、ａ１〜ａ６は、以下の（２４）式にて算出されることになる。
【００９０】
【数１７】
2019087128.tif 000019
【符号の説明】
【００９１】
１０    サーボドライバ
１１    補間関数生成部
１２    補間部
１３    駆動部
２１    パワー回路
２２    整流回路
２３    平滑コンデンサ
２４    インバータ回路
２５    電流センサ
３０    上位装置
４０    モータ
４１    エンコーダ
５０    三相電源
【図１】
2019087128.tif 000021
【図２】
2019087128.tif 000022
【図３】
2019087128.tif 000023
【図４】
2019087128.tif 000024
【図５】
2019087128.tif 000025
【図６】
2019087128.tif 000026
【図７】
2019087128.tif 000027
【図８】
2019087128.tif 000028
【図９】
2019087128.tif 000029
【図１０】
2019087128.tif 000030
【図１１】
2019087128.tif 000031