(57)【要約】【課題】システムの振動を低減する指令のパラメータを、簡単に決定できるようにする。    【解決手段】サーボ制御装置へ指令のパラメータを出力しモータを制御するモーション制御装置において、移動距離ｄｉｓｔと移動時間ｔｂを入力する動作条件入力部と、振動周期ｔｆを入力する振動入力部と、移動距離と振動周期を入力して振動低減パラメータを導出し、モータ指令計算部に出力する振動低減パラメータ導出部と、振動低減パラメ−タを入力してモータ指令を生成しモータ指令出力部に出力するモータ指令計算部と、モータ指令をサーボ制御装置に出力するモータ指令出力部とを備え、振動低減パラメータ導出部は動作条件と振動周期の比ｘを求め、予め求めておいた関数Ｆ（ｘ）にｘ＝ｔｂ／ｔｆの値を代入して指令のパラメータを決定する。【選択図】図１
2006031111.tif 000002
【特許請求の範囲】
【請求項１】
サーボ制御装置へ入力する指令のパラメータを、振動が発生しないように設定する指令パラメータ設定方法において、
移動距離ｄｉｓｔと移動時間ｔｂを動作条件として入力し、
振動周期ｔｆを入力し、
振動周期ｔｆと移動時間ｔｂの比ｘ＝ｔｂ／ｔｆを求め、
予め求めておいた関数Ｆ（ｘ）に前記ｘの値を代入し、前記指令のパラメータを決定するという手順で処理することを特徴とするモーション制御装置の指令パラメータ設定方法。
【請求項２】
前記指令は、ａを移動距離ｄｉｓｔに依存する変数、ｔｂを移動時間を表す変数とした時、ｋを前記指令のパラメータとする時間の関数
ｖ（ｔ）＝ａ・ｔｋ・（ｔｂ−ｔ）  ｋ      （０≦ｔ≦ｔｂ）
で表される速度指令ｖ（ｔ）か、あるいは、速度指令ｖ（ｔ）を積分した位置指令であることを特徴とする請求項１記載のモーション制御装置の指令パラメータ設定方法。
【請求項３】
サーボ制御装置へ入力する指令のパラメータを、振動が発生しないように設定する方法において、
移動速度Ｖと加速時間ｔａと一定速度時間ｔｃを動作条件として入力し、
振動周期ｔｆを入力し、
振動周期ｔｆと加速時間ｔａの比ｘ＝  ｔａ／ｔｆを求め、
予め求めておいた関数Ｆ（ｘ）に前記ｘの値を代入し、前記指令のパラメータｋを決定するという手順で処理することを特徴とするモーション制御装置の指令パラメータ設定方法。
【請求項４】
前記入力する指令は、ａを移動速度Ｖに依存する変数、ｔａを加速時間および減速時間を表す変数、ｔｃを一定速度時間を表す変数とした時、ｋを前記指令のパラメータとする、    
加速区間、一定速度区間、減速区間で場合分けされた時間の関数
加速区間  ：α（ｔ）＝ａ・ｔｋ・（ｔｂ−ｔ）ｋ          （０≦ｔ≦ｔａ）
一定速区間：α（ｔ）＝０                          （ｔａ＜ｔ＜ｔａ＋ｔｃ）
減速区間  ：α（ｔ）＝ａ・（ｔ−（ｔａ＋ｔｃ））ｋ・（（２ｔａ＋ｔｃ）−ｔ）ｋ 
（ｔａ＋ｔｃ≦ｔ≦２ｔａ＋ｔｃ）
で表される加速度指令α（ｔ）か、あるいは、加速度指令α（ｔ）を積分した速度指令か、あるいは、加速度指令α（ｔ）を２回積分した位置指令であることを特徴とする請求項３記載のモーション制御装置の指令パラメータ設定方法。
【請求項５】
サーボ制御装置へ入力する指令のパラメータを、振動が発生しないように設定する指令パラメータ設定方法において、
移動速度Ｖと加速時間ｔａ１と減速時間ｔａ２と一定速度時間ｔｃを動作条件として入力し、
振動周期ｔｆを入力し、
振動周期ｔｆと加速時間ｔａ１の比ｘ１＝ｔａ１／ｔｆを求め、
振動周期ｔｆと加速時間ｔａ２の比ｘ２＝ｔａ２／ｔｆを求め、
予め求めておいた関数Ｆ（ｘ）に前記ｘ１の値を代入し、前記指令の加速時のパラメータを決定し、
予め求めておいた関数Ｆ（ｘ）に前記ｘ２の値を代入し、前記指令の減速時のパラメータを決定するという手順で処理することを特徴とするモーション制御装置の指令パラメータ設定方法。
【請求項６】
前記入力する指令は、ａ１、ａ２を移動速度Ｖに依存する変数、ｔａ１を加速時間、ｔａ２を減速時間を表す変数、ｔｃを一定速度時間を表す変数とした時、ｋ１を前記指令の加速時のパラメータ、ｋ２を前記指令の減速時のパラメータとする、加速区間、一定速度区間、減速区間で場合分けされた時間の関数
加速区間：α（ｔ）＝ａ１・ｔｋ１・（ｔｂ−ｔ）ｋ１      （０≦ｔ≦ｔａ１）
一定速区間：α（ｔ）＝０                      （ｔａ１＜ｔ＜ｔａ１＋ｔｃ）
減速区間：
α（ｔ）＝ａ２・（ｔ−（ｔａ１＋ｔｃ））ｋ２・（（ｔａ１＋ｔａ２＋ｔｃ）−ｔ）ｋ２ 
（ｔａ１＋ｔｃ≦ｔ≦ｔａ１＋ｔａ２＋ｔｃ）
で表される加速度指令α（ｔ）か、あるいは、加速度指令α（ｔ）を積分した速度指令か、あるいは、加速度指令α（ｔ）を２回積分した位置指令であることを特徴とする請求項５記載のモーション制御装置の指令パラメータ設定方法。
【請求項７】
前記関数Ｆ（ｘ）が変数ｘの多項式で計算されることを特徴とする請求項１乃至６記載のモーション制御装置の指令パラメータ設定方法。
【請求項８】
前記関数Ｆ（ｘ）の変わりに、ｘと指令パラメータの関係をテーブルにしたものをメモリ上に有しておき、ｘの値から直接テーブル上のパラメータの値を決定することを特徴とする請求項１乃至７記載のモーション制御装置の指令パラメータ設定方法。
【請求項９】
前記振動周期ｔｆを入力する変わりに、実機の応答から振動周期ｔｆを自動的に検出することを特徴とする請求項１乃至請求項８記載のモーション制御装置の指令パラメータ設定方法。
【請求項１０】
前記動作条件を入力する変わりに、モーション制御装置内部で教示データから自動的に動作条件が設定されることを特徴とする請求項１乃至請求項９記載のモーション制御装置の指令パラメータ設定方法。
【請求項１１】
サーボ制御装置へ指令のパラメータを出力しモータを制御するモーション制御装置において、
移動距離ｄｉｓｔと移動時間ｔｂを入力する動作条件入力部と、
振動周期ｔｆを入力する振動入力部と、
前記移動距離と前記振動周期を入力して振動低減パラメータを導出し、モータ指令計算部に出力する振動低減パラメータ導出部と、
前記振動低減パラメ−タを入力してモータ指令を生成しモータ指令出力部に出力するモータ指令計算部と、
前記モータ指令を前記サーボ制御装置に出力するモータ指令出力部とを備え、
前記振動低減パラメータ導出部は前記動作条件と振動周期の比ｘを求め、予め求めておいた関数Ｆ（ｘ）にｘ＝ｔｂ／ｔｆの値を代入して前記指令のパラメータを決定することを特徴とするモーション制御装置。
【請求項１２】
前記指令は、ａを移動距離ｄｉｓｔに依存する変数とした時、ｋを前記指令のパラメータとする時間の関数
ｖ（ｔ）＝ａ・ｔｋ・（ｔｂ−ｔ）  ｋ      （０≦ｔ≦ｔｂ）
で表される速度指令ｖ（ｔ）か、あるいは、速度指令ｖ（ｔ）を積分した位置指令であることを特徴とする請求項１１記載のモーション制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、振動要素を有する制御対象を制御するサーボ制御装置へ入力する指令のパラメータ設定方法に関し、特に、振動を低減できるパラメータの設定方法とモーション制御装置に関する。  
【背景技術】
【０００２】
従来のサーボ制御装置の指令は、振動を低減できるパラメータを学習手段により設定している（例えば、特許文献１参照）。
図５は従来のモーション制御装置を示す構成図である。図において、１はサーボモータの動作条件を入力する動作条件入力部、５１は動作条件に応じたカム曲線を生成するカム曲線生成部、５２はカム曲線生成部で生成されたカム曲線を記憶しておくカム曲線記憶部、４はモータに与える指令値を計算するモータ指令計算部、５はモータ指令計算部４で計算された指令値をもとにサーボ制御装置６に位置指令や速度指令を出力するモータ指令出力部である。６はモータに電流を流して駆動するサーボ制御装置、７は制御対象であるモータ、８はモータの軸の回転量を調べるエンコーダ、９はモータで駆動する負荷であり、１００はモーション制御装置全体を示す。５３はカム曲線評価部であり、５４はカム曲線学習部である。
カム曲線評価部５３では、カム曲線生成部５１で生成した曲線に従ってモータを動作させた直後にモータに流れる電流値の絶対値を一定時間積分してカム曲線の評価値Ｉｃを求める。動作後に負荷に残留振動が残っている場合、振動を止めるようにモータに大きな電流が流れるため、Ｉｃの値が大きくなるので、Ｉｃによって残留振動の検出ができる。カム曲線学習部５４では、Ｉｃの値をもとにカム曲線の曲線生成パラメータｔｖの学習を行う。図６のフローチャートに学習のアルゴリズムを示す。
まず、ステップＳＴ６１では、ｔｖ＝０、０．１２５、０．３７５の３通りの曲線を生成し、それらの曲線で実際に負荷を動かし、モータに流れる電流の絶対値の積分値Ｉｃを求める。
ステップＳＴ６２では、学習回数ｎに３をセットする。
ステップＳＴ６３では、実際にモータを動かして得られた電流の積分値Ｉｃとｔｖの値の組（ｔｖｉ，Ｉｃｉ）（ｉ＝１，２，．．．，ｎ）からＩｃが最小になると予想されるｔｖｎ＋１を推定する。ｔｖの推定は、データ（ｔｖｉ，Ｉｃｉ）（ｉ＝１，２，．．．，ｎ）をもとにｔｖ−Ｉｃ平面上でスプライン補間を行い、スプライン曲線上のＩｃが最小となるｔｖを推定値とすることによって行う。このとき、推定したｔｖの値が０．３７５かつステップＳＴ６４においてｔｖ＝０．５で、まだモータを動作させていない場合は推定値ｔｖｎ＋１＝０．５とする。
ステップＳＴ６４では、推定した値ｔｖｎ＋１を用いて  カム曲線を生成し、モータを動かしてＩｃｎ＋１を求める。
ＳＴ６５では、これが予め設定した許容電流積分値Ｉｃｓｅｔより小さいかまたは試行回数ｎ＋１が試行回数の上限Ｎより大きいかを判断し、これらの条件を満たす場合、終了する。条件を満たさない場合は、試行して得られたデータを元にｔｖを推定し、試行することを繰り返す。
以上の動作を繰り返すことにより  動作後の残留振動の少ないｔｖを得ることができる。
このように、従来のモーション制御装置では、実際に複数回機械を動作させ、その時のモータの電流値等を監視し、評価基準を満足するパラメータを決定するという手順で、動作後の残留振動の少ないパラメータｔｖの値を得るという手順がとられていた。
【特許文献１】特許第３４７７７９２号公報（第６−７頁、図５、図６）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来のモーション制御装置のパラメータ設定方法では、実際に機械を数回動作させる必要があるため、パラメータを決定するために時間がかかるという問題があった。
また、評価基準に試行回数の上限Ｎを設定する必要があるため、どれぐらいの値にしたら良いかユーザに分かりにくいとともに、Ｎの値によって、性能が大きく変わる可能性があり、ユーザによって設定後の性能がばらつくという問題もあった。
本発明はこのような問題点に鑑みてなされたものであり、機械を動かさなくとも簡単な関数を用いて、振動しないパラメータを自動的に設定でき、誰でも簡単に振動しない指令を作成することができ、かつユーザによって設定後の性能がばらつかないパラメータ設定方法とモーション制御装置を提供することを目的とする。
また、単純な時間関数で、振動しないパラメータを設定でき、振動が小さくなる指令を自動的に作成できるパラメータ設定方法とモーション制御装置を提供することを目的とする。
また、一定速度区間をもつような指令を作成する場合も、自動的に振動しないパラメータを設定できるパラメータ設定方法を提供することを目的とする。
また、一定速度区間を持つような動作時も、振動しないパラメータｋを自動的に設定し、計算量とメモリ量が大幅に低減できるパラメータ設定方法を提供することを目的とする。
また、加速時間と減速時間とを変えて動作させる場合も、簡単に、加速時の指令パラメータと減速時の指令パラメータを自動的に決定できるパラメータ設定方法を提供することを目的とする。
また、加速時間と減速時間とを変えて動作させる場合も、単純な時間関数を用いて、振動しないパラメータｋを自動的に設定できるパラメータ設定方法を提供することを目的とする。
また、指令パラメータを決定する関数を、時間の多項式で表せるパラメータ設定方法を提供することを目的とする。
また、指令パラメータを決定する際に、関数を用いる代わりに、テーブルを用いることができるパラメータ設定方法を提供することを目的とする。
また、振動周期を自動的に検出し、自動的にパラメータを設定できるパラメータ設定方法を提供することを目的とする。
また、産業用ロボットの動作位置を教示する用途でも使用できるパラメータ設定方法を提供することを目的とする。
【課題を解決するための手段】
【０００４】
請求項１記載の本発明は、サーボ制御装置へ入力する指令のパラメータを、振動が発生しないように設定する指令パラメータ設定方法において、移動距離ｄｉｓｔと移動時間ｔｂを動作条件として入力し、振動周期ｔｆを入力し、振動周期ｔｆと移動時間ｔｂの比ｘ＝ｔｂ／ｔｆを求め、予め求めておいた関数Ｆ（ｘ）に前記ｘの値を代入し、前記指令のパラメータを決定するという手順をとったのである。
請求項２記載の本発明は、請求項１記載の指令パラメータ設定方法において、指令は、ａを移動距離ｄｉｓｔに依存する変数、ｔｂを移動時間を表す変数とした時、ｋを前記指令のパラメータとする時間の関数
ｖ（ｔ）＝ａ・ｔｋ・（ｔｂ−ｔ）ｋ        （０≦ｔ≦ｔｂ）
で表される速度指令ｖ（ｔ）か、あるいは、速度指令ｖ（ｔ）を積分した位置指令であるようにしたものである。
請求項３記載の本発明は、請求項１記載の指令パラメータ設定方法において、サーボ制御装置へ入力する指令のパラメータを、振動が発生しないように設定する方法において、移動速度Ｖと加速時間ｔａと一定速度時間ｔｃを動作条件として入力し、振動周期ｔｆを入力し、振動周期ｔｆと加速時間ｔａの比ｘ＝  ｔａ／ｔｆを求め、予め求めておいた関数Ｆ（ｘ）に前記ｘの値を代入し、前記指令のパラメータｋを決定するという手順をとったものである。
請求項４記載の本発明は、請求項３記載の指令パラメータ設定方法において、入力する指令は、ａを移動速度Ｖに依存する変数、ｔａを加速時間および減速時間を表す変数、ｔｃを一定速度時間を表す変数とした時、ｋを前記指令のパラメータとする、加速区間、一定速度区間、減速区間で場合分けされた時間の関数
加速区間：α（ｔ）＝  ａ・ｔｋ・（ｔｂ−ｔ）ｋ                （０≦ｔ≦ｔａ）
一定速区間：α（ｔ）＝０                              （ｔａ＜ｔ＜ｔａ＋ｔｃ）
減速区間：α（ｔ）＝ａ・（ｔ−（ｔａ＋ｔｃ））ｋ・（（２ｔａ＋ｔｃ）−ｔ）  ｋ 
（ｔａ＋ｔｃ≦ｔ≦２ｔａ＋ｔｃ）
で表される加速度指令α（ｔ）か、あるいは、加速度指令α（ｔ）を積分した速度指令か、あるいは、加速度指令α（ｔ）を２回積分した位置指令であるようにしたものである。
請求項５記載の本発明は、サーボ制御装置へ入力する指令のパラメータを、振動が発生しないように設定する指令パラメータ設定方法において、移動速度Ｖと加速時間ｔａ１と減速時間ｔａ２と一定速度時間ｔｃを動作条件として入力し、振動周期ｔｆを入力し、振動周期ｔｆと加速時間ｔａ１の比ｘ１＝  ｔａ１／ｔｆを求め、振動周期ｔｆと加速時間ｔａ２の比ｘ２＝  ｔａ２／ｔｆを求め、予め求めておいた関数Ｆ（ｘ）に前記ｘ１の値を代入し、前記指令の加速時のパラメータを決定し、予め求めておいた関数Ｆ（ｘ）に前記ｘ２の値を代入し、前記指令の減速時のパラメータを決定するという手順をとったものである。
請求項６記載の本発明は、請求項５記載の指令パラメータ設定方法において、入力する指令は、ａ１，ａ２を移動速度Ｖに依存する変数、ｔａ１を加速時間、ｔａ２を減速時間を表す変数、ｔｃを一定速度時間を表す変数とした時、ｋ１を前記指令の加速時のパラメータ、ｋ２を前記指令の減速時のパラメータとする加速区間、一定速度区間、減速区間で場合分けされた時間の関数
加速区間：α（ｔ）＝ａ１・ｔｋ１・（ｔｂ−ｔ）ｋ１            （０≦ｔ≦ｔａ１）
一定速区間：α（ｔ）＝０                        （ｔａ１＜ｔ＜ｔａ１＋ｔｃ）
減速区間：
α（ｔ）＝ａ２・（ｔ−（ｔａ１＋ｔｃ））ｋ２・（（ｔａ１＋ｔａ２＋ｔｃ）−ｔ）ｋ２
（ｔａ１＋ｔｃ≦ｔ≦ｔａ１＋ｔａ２＋ｔｃ）
で表される加速度指令α（ｔ）か、あるいは、加速度指令α（ｔ）を積分した速度指令か、あるいは、加速度指令α（ｔ）を２回積分した位置指令であるようにしたものである。
請求項７記載の本発明は、請求項１乃至６記載の指令パラメータ設定方法において、関数Ｆ（ｘ）が変数ｘの多項式で計算されるようにしたものである。
請求項８記載の本発明は、請求項１乃至７記載の指令パラメータ設定方法において、ｘと指令パラメータの関係をテーブルにしたものをメモリ上に有しておき、ｘの値から直接テーブル上のパラメータの値を決定するようにしたものである。
請求項９記載の本発明は、請求項１乃至８記載の指令パラメータ設定方法において、振動周期ｔｆを入力する代わりに、実機の応答から振動周期ｔｆを自動的に検出するようにしたものである。
請求項１０記載の本発明は、請求項１乃至９記載のパラメータ設定方法において、動作条件を入力する代わりに、モーション制御装置内部で教示データなどから自動的に動作条件が設定されるようにしたものである。
請求項１１記載の本発明は、サーボ制御装置へ指令のパラメータを出力しモータを制御するモーション制御装置において、移動距離を入力する動作条件入力部と、振動周期を入力する振動入力部と、移動距離ｄｉｓｔ、移動時間ｔｂと振動周期ｔｆを入力して振動低減パラメータを導出し、モータ指令計算部に出力する振動低減パラメータ導出部と、振動低減パラメ−タを入力してモータ指令を生成しモータ指令出力部に出力するモータ指令計算部と、モータ指令をサーボ制御装置に出力するモータ指令出力部とを備え、振動低減パラメータ導出部は動作条件と振動周期の比ｘを求め、予め求めておいた関数Ｆ（ｘ）にｘ＝ｔｂ／ｔｆの値を代入して指令のパラメータを決定するようにしたものである。
請求項１２記載の本発明は、請求項１１記載のモーション制御装置において、指令は、ａを移動距離ｄｉｓｔに依存する変数とした時、ｋを前記指令のパラメータとする時間の関数
ｖ（ｔ）＝ａ・ｔｋ・（ｔｂ−ｔ）  ｋ      （０≦ｔ≦ｔｂ）
で表される速度指令ｖ（ｔ）か、あるいは、速度指令ｖ（ｔ）を積分した位置指令であるようにしたものである。
【発明の効果】
【０００５】
請求項１に記載の発明によると、パラメータを振動周期ｔｆと移動時間ｔｂの比ｘの関数を用いて、自動的に振動しないパラメータを設定できるため、パラメータ設定の時間を大幅に短縮することができ、また、機械を実際に動かしながらの設定が必要ないため、誰でも簡単に振動しない指令を作成するとこができ、さらに、振動周期ｔｆと移動時間ｔｂから一意に決定されるため、ユーザによって設定後の性能がばらつくという問題も発生しない。
請求項２に記載の発明によると、単純な時間関数を用いても、振動しないパラメータｋを自動的に設定し、振動が小さくなるような指令を作成できるため、三角関数を用いたカム曲線を用いる場合に比べて、計算量もメモリ量も大幅に低減できる。
請求項３に記載の発明によると、一定速度区間をもつような指令を作成する場合も、パラメータを振動周期ｔｆと加速時間ｔａの比ｘの関数を用いて、自動的に振動しないパラメータを設定できるため、本アルゴリズムを一定速度区間を持つような動作にも問題なく使用することができる。
請求項４に記載の発明によると、一定速度区間を持つような動作時も、単純な時間関数を用いて、振動しないパラメータｋを自動的に設定し、振動が小さくなるような指令を作成できるため、三角関数を用いたカム曲線を用いる場合に比べて、計算量もメモリ量も大幅に低減できる。
請求項５に記載の発明によると、加速時間と減速時間とを変えて動作させる場合も、同じ手順で、簡単に、加速時の指令パラメータと減速時の指令パラメータを決定できる。
請求項６に記載の発明によると、加速時間と減速時間とを変えて動作させる場合も、単純な時間関数を用いて、振動しないパラメータｋを自動的に設定し、振動が小さくなるような指令を作成できるため、三角関数を用いたカム曲線を用いる場合に比べて、計算量もメモリ量も大幅に低減できる。
請求項７に記載の発明によると、指令パラメータを決定する関数を、時間の多項式で表すことができるため計算が簡単になる。
請求項８に記載の発明によると、指令パラメータを決定する際に、関数を用いる代わりに、テーブルを用いることができるため、演算がまったく必要なくなり、さらにパラメータ決定時間の短縮につながる。
請求項９に記載の発明によると、振動周期を自動的に検出し、自動的に設定できるので、ユーザは振動周期の測定を行わないで良くなる。
請求項１０に記載の発明によると、動作条件を自動的に設定する用途でも使用できるため、産業用ロボット等のように、動作する位置を教示しておいて、その間をある速度で移動するような用途にも、本発明を問題なく使用できる。
請求項１１に記載の発明によると、パラメータを振動周期ｔｆと移動時間ｔｂの比ｘの関数を用いて、自動的に振動しないパラメータを設定できるため、パラメータ設定の時間を大幅に短縮でき、また、機械を実際に動かしながらの設定が必要ないため、誰でも簡単に振動しない指令を作成するとこができ、さらに、振動周期ｔｆと移動時間ｔｂから一意に決定されるため、ユーザによって設定後の性能がばらつくという問題が発生しないモーション制御装置を提供できる。
請求項１２に記載の発明によると、単純な時間関数を用いて、振動しないパラメータｋを自動的に設定し、振動が小さくなるような指令を作成できるため、三角関数を用いたカム曲線を用いる場合に比べて、計算量もメモリ量も大幅に低減したモーション制御装置を提供できる。
【発明を実施するための最良の形態】
【０００６】
以下、本発明の方法の具体的実施例について、図に基づいて説明する。
【実施例１】
【０００７】
図２は、本発明のモーション制御装置の構成を示すブロック図である。図において１および４〜９は、（背景技術）で記述した従来例と全く同じである。２は振動周期入力部であり、３は振動低減パラメータ導出部である。また１００はモーション制御装置全体を指す。
【０００８】
動作条件入力部１では移動距離ｄｉｓｔや移動時間ｔｂを入力する。振動周期入力部２では振動周期ｔｆを入力する。振動低減パラメータ導出部３では、１で入力された移動時間ｔｂと２で入力された振動周期ｔｆをもとに、振動を低減できる、指令パラメータｋの値を計算により導出し出力する。
【０００９】
図１はモーション制御装置において、振動を低減できる指令パラメータｋを導出する方法の処理手順を示すフローチャートである。この図を用いて本発明の方法を順を追って説明する。
はじめにステップ１で、動作条件を入力する。ここでは、動作条件として移動距離ｄｉｓｔと移動時間ｔｂを入力する。
ステップ２では、振動周期ｔｆを入力する。ここで、入力する振動周期ｔｆの値は、実際に機械を動作させたときの、振動１周期（山から山など）の時間を測定するか、機械の設計情報（質量とばね定数など）から、振動周期を机上で算出して決定すればよい。
ステップ３では、移動時間ｔｂと振動周期ｔｆの比ｘを式（２）により求める。
ｘ＝ｔｂ／ｔｆ    ・・・（２）
ステップ４で、予め格納されている、指令パラメータを計算する関数Ｆ（ｘ）にｘを代入し、パラメータｋの値を算出する。
関数Ｆ（ｘ）は、例えば、式（３）のような時間の多項式で表しておけば良く、
ｋ＝Ｆ（ｘ）＝  ｐ５・ｘ５＋ｐ４・ｘ４＋ｐ３・ｘ３＋ｐ２・ｘ２＋ｐ１・ｘ＋ｐ０  
・・・（３）
ｐ０からｐ５の係数は、実験やシミュレーション、数値解析等により、予め決定しておけばよい。このように、入力された移動時間ｔｂと振動周期ｔｆの比ｘを計算し、計算されたｘの値を、関数Ｆ（ｘ）に代入することで、振動を低減できるパラメータｋを自動的に計算できる。
例えば入力する指令が、ａを移動距離ｄｉｓｔに依存する変数、ｔｂを移動時間を表す変数、ｋを設定パラメータとする時間の関数
ｖ（ｔ）＝ａ・ｔｋ・（ｔｂ−ｔ）  ｋ      （０≦ｔ≦ｔｂ）      ・・・（４）
で表される速度指令ｖ（ｔ）であるとすると、上の手順で算出されたｋの値を用いて、モータ指令計算部４で、速度指令ｖ（ｔ）の変数ａの値を移動距離ｄｉｓｔから計算し、モータ指令出力部５では、指令周期ごとに、サーボ制御装置６へ指令を出力すればよいのである。これにより、簡単な処理で、振動を低減できる指令を作成することができるのである。
【００１０】
では次に、振動を低減できるパラメータｋが、移動時間ｔｂと振動周期ｔｆの比ｘの関数となる理由について説明する。
ここでは、制御対象が２慣性系であるとして説明する。２慣性系とは、一次側と二次側の２つの慣性がばね要素で結合されている系を指す。入力は一次側に与えられる。例えば、モータに減速器を介して負荷が取り付けれられている場合、一次側イナーシャがモータイナーシャとなり、二次側イナーシャが負荷イナーシャとなり、減速器の剛性がばね要素となる。また、入力はモータへ与えるトルク指令ということになる。
上述した制御対象において、負荷側の運動方程式は式（５）のようになる。ここで、ＸＭ（ｔ）はモータ位置、ＸＬ（ｔ）は負荷位置、Ｊ１はモータイナーシャ、Ｊ２は負荷イナーシャ、Ｋ２は減速機ばね定数を表すものとする。またＸＬ（ｔ）  （２）はＸＬ（ｔ）の２階微分を表すものとする。
Ｊ２・ＸＬ（ｔ）  （２）  ＝    Ｋ２・（ＸＭ（ｔ）−ＸＬ（ｔ））    ・・・（５）
ここで√（Ｊ２／Ｋ２）を反共振周波数Ｗとし、式（５）を整理すると式（６）のようになる。
Ｗ＾２はＷの２乗を表す。
ＸＬ（ｔ）  （２）＋Ｗ＾２・ＸＬ（ｔ）  ＝  Ｗ＾２・ＸＭ（ｔ）    ・・・（６）
ここで、サーボ制御装置によって、モータ指令ＸＲ（ｔ）と実際のモータ位置ＸＭ（ｔ）が完全に一致したと仮定すると。式（６）は式（７）のようになる。
ＸＬ（ｔ）  （２）＋Ｗ＾２・ＸＬ（ｔ）  ＝  Ｗ＾２・ＸＲ（ｔ）    ・・・（７）
そして、式（７）の微分方程式を解くことにより、モータ指令ＸＲ（ｔ）を入力したときの、負荷位置ＸＬ（ｔ）が求まる。
ここで、負荷ＸＬ（ｔ）が振動しないためには、時刻ｔ＝０およびｔ＝ｔｂ時に、負荷速度ＸＬ（ｔ）  （１）および負荷加速度ＸＬ（ｔ）  （２）が０になるという条件を満たせばよいため、式（７）の微分方程式を解くことにより得られた、負荷位置ＸＬ（ｔ）を用いて、式（８）を満足するように指令のパラメータを決定すればよいことになる。
ＸＬ（０）（１）＝ＸＬ（０）（２）  ＝ＸＬ（ｔｂ）（１）＝ＸＬ（ｔｂ）（２）＝０・・・（８）
【００１１】
一方、式（７）の微分方程式の解ＸＬ（ｔ）は、一般的に、時間の多項式と三角関数の和の形で表現できるため、その微分値や２階微分値も、時間の多項式Ｐ１（ｔ）、Ｐ２（ｔ）と三角関数を用いて、式（９）、式（１０）のように表現できる。ここで、時間の多項式Ｐ１（ｔ）、Ｐ２（ｔ）や、係数ｓ１、ｓ２、ｓ３、ｓ４は、ＸＲ（ｔ）によって変化するものである。
ＸＬ（ｔ）（１）＝Ｐ１（ｔ）＋ｓ１・ｃｏｓ［ｔ・Ｗ］＋ｓ２・ｓｉｎ［ｔ・Ｗ］・・・（９）
ＸＬ（ｔ）（２）＝Ｐ２（ｔ）＋ｓ３・ｃｏｓ［ｔ・Ｗ］＋ｓ４・ｓｉｎ［ｔ・Ｗ］
・・・（１０）
式（９）、（１０）で、ｔ＝０の時、三角関数はｃｏｓ［０］＝１、ｓｉｎ［０］＝０となるため、Ｐ１（０）とＰ２（０）、ｓ１，ｓ２，ｓ３，ｓ４の関係を求めることができる。
また、ｔ＝ｔｂの時は、式（８）の条件を満たすために、式（１１）、式（１２）のようになる。
ＸＬ（ｔｂ）（１）
＝Ｐ１（ｔｂ）＋ｓ１・ｃｏｓ［ｔｂ・Ｗ］＋ｓ２・ｓｉｎ［ｔｂ・Ｗ］＝０
・・・（１１）
ＸＬ（ｔｂ）（２）
＝Ｐ２（ｔｂ）＋ｓ３・ｃｏｓ［ｔｂ・Ｗ］＋ｓ４・ｓｉｎ［ｔｂ・Ｗ］＝０
・・・（１２）
ここで、移動時間ｔｂは、動作条件として入力される決まった値であるから、Ｐ１（ｔｂ）もＰ２（ｔｂ）も、ｓ１，ｓ２，ｓ３，ｓ４もすべて入力した指令ＸＲ（ｔ）によってのみ変化する定数となる。
【００１２】
それに対しｃｏｓ［ｔｂ・Ｗ］およびｓｉｎ［ｔｂ・Ｗ］は、指令ＸＲ（ｔ）を変えても、変化しない項であり、この項はｔｂ・Ｗのみに依存した値となる。ここで、振動周期をｔｆとすると、Ｗ＝２π／ｔｆ  であるから、ｔｂ・Ｗ＝２π・（ｔｂ／ｔｆ）＝２π・ｘとなる。２πは定数であるため、結果として、式（１１）、式（１２）を満たす条件は、ｘ＝ｔｂ／ｔｆの値と、指令ＸＲ（ｔ）のみで決定できる。
言い換えれば、ＸＲ（ｔ）が設定可能なパラメータｋを持っている時は、式（１１）、式（１２）を満たす条件は、ｘとｋの関係のみとなる。
したがって、振動を低減できるパラメータｋをｘのみの関数で表すことができるのである。
また、指令として、一定速度区間を有するような指令を考えた場合、式（８）に該当する、振動しないための条件は、式（１３）のようになる。
ＸＬ（０）（２）＝ＸＬ（ｔａ）（２）＝０                ・・・（１３）
この場合も、ｘがｘ＝ｔａ／ｔｆのように、加速時間ｔａと振動周期ｔｆの比になるだけで、後は同様の理由で、振動を低減できるパラメータｋをｘだけに依存する関数で表すことができるのである。
例えば、一定速度区間を有する指令として、入力する指令がａを移動速度Ｖに依存する変数、ｔａを加速時間および減速時間を表す変数、ｔｃを一定速度時間を表す変数とした時、ｋを設定パラメータとする、加速区間、一定速度区間、減速区間で場合分けされた時間の関数
加速区間：α（ｔ）＝ａ・ｔｋ・（ｔｂ−ｔ）ｋ                （０≦ｔ≦ｔａ）
一定速区間：α（ｔ）＝０                              （ｔａ＜ｔ＜ｔａ＋ｔｃ）
減速区間：α（ｔ）＝ａ・（ｔ−（ｔａ＋ｔｃ））ｋ・（（２ｔａ＋ｔｃ）−ｔ）  ｋ 
（ｔａ＋ｔｃ≦ｔ≦２ｔａ＋ｔｃ）
・・・（１４）
で表される加速度指令α（ｔ）を積分した速度指令である場合は、式（２）のｘを求める計算をｘ＝ｔａ／ｔｆと変え、それ以外は同じ方法で、パラメータｋの値を算出し、算出されたｋの値を用いて、モータ指令計算部４で、加速度指令α（ｔ）の変数ａの値を移動速度Ｖから計算し、モータ指令出力部５では、指令周期ごとに、サーボ制御装置６へ指令を出力すればよいのである。これにより、簡単な処理で、振動を低減できる指令を作成することができるのである。
【００１３】
また、例えば入力する指令が、ａ１，ａ２を移動速度Ｖに依存する変数、ｔａ１を加速時間、ｔａ２を減速時間を表す変数、ｔｃを一定速度時間を表す変数とした時、ｋ１を加速時の設定パラメータ、ｋ２を減速時の設定パラメータとする、加速区間、一定速度区間、減速区間で場合分けされた時間の関数
加速区間：α（ｔ）＝ａ１・ｔｋ１・（ｔｂ−ｔ）ｋ１          （０≦ｔ≦ｔａ１）
一定速区間：α（ｔ）＝０                          （ｔａ１＜ｔ＜ｔａ１＋ｔｃ）
減速区間：α（ｔ）
＝ａ２・（ｔ−（ｔａ１＋ｔｃ））ｋ２・（（ｔａ１＋ｔａ２＋ｔｃ）−ｔ）ｋ２ 
（ｔａ１＋ｔｃ≦ｔ≦ｔａ１＋ｔａ２＋ｔｃ）
・・・（１５）
で表される加速度指令α（ｔ）を積分した速度指令である場合は、式（２）のｘを求める計算をｘ１＝ｔａ１／ｔｆ、ｘ２＝ｔａ２／ｔｆと変え、ｘ１を関数Ｆ（ｘ）に代入し求めたパラメータｋ１と、ｘ２を関数Ｆ（ｘ）に代入し求めたｋ２の値を用いて、モータ指令計算部４で、加速度指令α（ｔ）の変数ａ１およびａ２の値を移動速度Ｖから計算し、モータ指令出力部５では、指令周期ごとに、サーボ制御装置６へ指令を出力すればよいのである。これにより、簡単な処理で、振動を低減できる指令を作成することができるのである。
【実施例２】
【００１４】
本実施例では、実施例１と異なり、図１の処理フローにおいて、ステップ４で関数Ｆ（ｘ）にｘを代入し、パラメータｘの値を求める変わりに、メモリ上にテーブルを有しておき、ｘの値によって、テーブルからパラメータｋの値を読み込むようにしているところである。
このように、関数ではなくテーブルを用いるため、演算がまったく必要なくなりパラメータ決定時間の短縮につながるという効果が得られる。
【実施例３】
【００１５】
図３は本実施例を適用する構成を示すブロック図である。実施例１の図２と異なる点は、２の振動周期入力部の変わりに、１１の振動周期検出部を有する点である。
実施例１との方法の違いは、振動周期ｔｆを入力するか、自動で検出するかのみである。それ以外に関しては、実施例１と全く同様の方法で実現できるものである。
振動周期ｔｆの検出には、どのような方法を用いても良いが、例えば１度だけ実機モータを動作させ、その時の、例えば位置検出値をサーボ制御装置から１１の振動周期検出部に入力する。検出された位置検出値の振動の山と山の間の時間を計測し、それを振動周期ｔｆとして自動的に検出するなどの方法を用いればよい。
このように、振動周期を自動的に検出し、自動的に設定できるので、ユーザは振動周期の測定を行わないで良くなるという効果が得られる。
【実施例４】
【００１６】
図４は本実施例を適用する構成を示すブロック図である。実施例１の図２と異なる点は、１の動作条件入力部の変わりに、１０の教示データ格納部および１２の動作条件設定部を有する点である。
実施例１との方法の違いは、動作条件である、移動距離ｄｉｓｔや移動速度Ｖや、加速時間ｔａ等を直接入力する変わりに、教示データなどから、自動的に動作条件を設定するところである。それ以外に関しては、実施例１と全く同様の方法で実現できるものである。
例えば、教示データとして、移動前と移動後の座標および、その間を動作する際の最高速度Ｖｍａｘが教示されているとすると、移動距離ｄｉｓｔを（移動後の座標）と（移動前の座標）の差の絶対値とし、移動時間ｔｂは、移動距離ｄｉｓｔと最高速度Ｖｍａｘを用いて、式（１６）により逆算で求めればよい。
ｔｂ＝２・ｄｉｓｔ／Ｖｍａｘ                                  ・・・（１６）
このように、教示データなどから動作条件を自動的に設定する用途でも使用できるため、産業用ロボット等のように動作する位置を教示しておいて、その間をある速度で移動するような用途のシステムにも、本発明を問題なく使用できる。
【産業上の利用可能性】
【００１７】
振動周期ｔｆと移動時間ｔｂの比ｘを求め、ｘの値から関数を用いて一意に振動を低減できるパラメータｋの値が決定するという手順をとるため、簡単に振動低減ができる指令が作成でき、クレーンやエレベータ、ロボットなどの振動抑制という用途にも適用できる。
【図面の簡単な説明】
【００１８】
【図１】本発明の方法の処理手順を示すフローチャート
【図２】本発明の方法を適用するモーション制御装置の構成を示すブロック図
【図３】本発明の第２の方法を適用するモーション制御装置の構成を示すブロック図
【図４】本発明の第２の方法の処理手順を示すフローチャート
【図５】従来の方法を適用したモーション制御装置の構成を示すブロック図
【図６】従来の方法の処理手順を示すフローチャート
【符号の説明】
【００１９】
１  動作条件入力部
２  振動周期入力部
３  振動低減パラメータ導出部
４  モータ指令計算部
５  モータ指令出力部
６  サーボ制御装置
７  モータ
８  エンコーダ
９  負荷
１０  教示データ格納部
１１  振動周期検出部
１２  動作条件設定部
５１  カム曲線生成部
５２  カム曲線記憶部
５３  カム曲線評価部
５４  カム曲線学習部
１００  モーション制御装置
【図１】
2006031111.tif 000003
【図２】
2006031111.tif 000004
【図３】
2006031111.tif 000005
【図４】
2006031111.tif 000006
【図５】
2006031111.tif 000007
【図６】
2006031111.tif 000008