(57)【特許請求の範囲】
【請求項１】
モータの動作に関する関数であり、当該モータのトルクを含む関数である目的関数、及び当該目的関数に関する条件であり、前記モータの速度、前記モータによって移動される移動対象の速度、前記移動対象の移動時間、前記モータの移動量、前記移動対象の移動量、及びトルクの少なくともいずれかに関する条件である制約条件が記憶される記憶部と、
前記モータに関する現在のフィードバック値を用いて、前記制約条件を満たすように、前記目的関数を最適化する最適解であるトルクを算出し、当該算出したトルクに応じて、前記モータのトルクをフィードバック制御する制御部にトルク指令値を出力する算出部と、を備え、
前記目的関数は、前記モータによって移動される移動対象の移動時間を示す関数、または前記モータによって消費されるエネルギーに関する関数である、トルク算出装置。
【請求項２】
前記目的関数は、外力をも含む関数であり、
前記モータに作用する外力に関する情報である外力情報が記憶される外力記憶部をさらに備え、
前記算出部は、前記外力情報をも用いてトルクを算出する、請求項１記載のトルク算出装置。
【請求項３】
前記目的関数は、前記モータによって消費されるエネルギーに関する関数であり、
前記モータは、溶接ワイヤを送給するモータである、請求項１または請求項２記載のトルク算出装置。
【請求項４】
前記モータは、ロボットの関節を動作させるモータである、請求項１または請求項２記載のトルク算出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータの動作に関する目的関数を最適化するようにトルクを算出するトルク算出装置に関する。
【背景技術】
【０００２】
一般的なサーボモータのコントローラは、まず位置や速度、トルクの時系列の指令値を算出し、次に各時刻の指令値と応答値と比較することによって、各時刻に必要なトルクを算出し、モータを動作させていた。
【０００３】
なお、そのような制御において、外力などに起因する想定外の状態変化が発生することがある。そのような外力の影響を考慮した従来技術として、例えば、外力を検知し、要因を切り分けることで、制御系において、直接制御量の操作量が外力に影響されないようにすることが行われている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１０８９１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のようなサーボモータのコントローラでは、外力などに起因する想定外の状態変化が発生した場合に、その変化を適切に利用するのではなく、かえってその変化をなくすための制御が行われていた。例えば、図６で示されるように、外力によって状態が変化した場合には、図中の矢印で示されるように、現在の応答値を現在の指令値に近づける制御が行われることになる。すなわち、応答値が目標値に達していても、現在の指令値が目標値に達していない場合には、モータが一旦、現在の指令値の位置に戻り、再び指令値に応じて最終目標値へ向かうように制御が行われることになる。その結果として、余分なエネルギーが必要になる可能性があり、その余分なエネルギーによって発熱の問題が起こったり、コスト増大が引き起こされたりすることになる。また、上記特許文献１に記載された制御方法においても、外力の影響を低減することが行われており、外力を利用することは行われていなかった。
【０００６】
本発明は、上記課題を解決するためになされたものであり、外力等によって想定外の状態変化が起こった場合であっても、その変化後の状態から最終目標に向かう適切なトルク指令値を求めることができるトルク算出装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明によるトルク算出装置は、モータの動作に関する関数であり、モータのトルクを含む関数である目的関数、及び目的関数に関する条件であり、モータの速度、モータによって移動される移動対象の速度、移動対象の移動時間、モータの移動量、移動対象の移動量、及びトルクの少なくともいずれかに関する条件である制約条件が記憶される記憶部と、モータに関する現在のフィードバック値を用いて、制約条件を満たすように、目的関数を最適化する最適解であるトルクを算出し、算出したトルクに応じて、モータのトルクをフィードバック制御する制御部にトルク指令値を出力する算出部と、を備えたものである。
このような構成により、例えば、外力によって現在のフィードバック値に想定外の変化が起こった場合であっても、その変化後の現在のフィードバック値から目標に向かうようにトルク指令値を求めることができる。その結果、外力等による状態変化を適切に利用しうることになる。また、例えば、不必要な動作を行わないようにできた場合には、モータの消費エネルギーを削減できることになる。また、目的関数に応じた量、例えば、モータによって消費されるエネルギーや、モータによって移動される移動対象の移動時間等を低減させる制御が可能となる。
【０００８】
また、本発明によるトルク算出装置では、目的関数は、外力をも含む関数であり、モータに作用する外力に関する情報である外力情報が記憶される外力記憶部をさらに備え、算出部は、外力情報をも用いてトルクを算出してもよい。
このような構成により、目的関数においてあらかじめ外力を考慮することによって、より精度の高い制御が可能となる。
【０００９】
また、本発明によるトルク算出装置では、目的関数は、モータによって移動される移動対象の移動時間を示す関数であってもよい。
このような構成により、移動対象の移動時間を低減させるようにモータを制御できるようになる。
【００１０】
また、本発明によるトルク算出装置では、目的関数は、モータによって消費されるエネルギーに関する関数であってもよい。
このような構成により、モータによって消費されるエネルギーを低減させるようにモータを制御できるようになる。
【００１１】
また、本発明によるトルク算出装置では、モータは、溶接ワイヤを送給するモータであってもよい。
このような構成により、ワイヤ送給装置のモータによって消費されるエネルギーを低減させることができる。
【００１２】
また、本発明によるトルク算出装置では、モータは、ロボットの関節を動作させるモータであってもよい。
このような構成により、例えば、ロボットのモータによって消費されるエネルギーを低減させることができる。
【発明の効果】
【００１３】
本発明によるトルク算出装置によれば、現在のフィードバック値に想定外の変化が起こった場合であっても、その変化後の現在のフィードバック値から目標に向かうようにトルク指令値を求めることができ、外力等による変化を適切に利用しうることになる。また、目的関数に応じた量、例えば、モータによって消費されるエネルギーや、モータによって移動される移動対象の移動時間等を低減させることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態によるトルク算出装置の構成を示すブロック図
【図２】同実施の形態における指令値の算出について説明するための図
【図３】同実施の形態によるトルク算出装置の動作を示すフローチャート
【図４】同実施の形態におけるトルク等の時間変化の一例を示す図
【図５】同実施の形態におけるトルク等の変更について説明するための図
【図６】従来の制御方法による指令値と応答値との一例を示す図
【発明を実施するための形態】
【００１５】
以下、本発明によるトルク算出装置について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。本実施の形態によるトルク算出装置は、モータの動作に関する目的関数を最適化するようにトルクを算出するものである。
【００１６】
図１は、本実施の形態によるトルク算出装置１の構成を示すブロック図である。本実施の形態によるトルク算出装置１は、記憶部１１と、外力記憶部１２と、算出部１３と、制御部１４とを備える。なお、図１では、トルク算出装置１の制御対象となる装置が、溶接ワイヤを送給するワイヤ送給装置２である場合について示しているが、そうでなくてもよい。トルク算出装置１の制御対象となる装置は、例えば、モータにより駆動される関節によって連結された複数のアームを有するロボットであってもよく、その他のサーボモータを有する装置等であってもよい。そのロボットは、例えば、垂直多関節ロボットであってもよく、水平多関節ロボットであってもよい。また、そのロボットは、例えば、搬送ロボットであってもよく、溶接ロボットであってもよく、組立ロボットであってもよく、塗装ロボットであってもよく、または、その他の用途のロボットであってもよい。
【００１７】
記憶部１１では、目的関数と、その目的関数に関する条件である制約条件とが記憶される。目的関数は、モータの動作に関する関数である。すなわち、目的関数は、例えば、モータによって消費されるエネルギーに関する関数であってもよく、モータによって移動される移動対象の移動時間を示す関数であってもよく、モータの動作に関するその他の関数であってもよい。モータによって消費されるエネルギーに関する関数とは、例えば、エネルギーそのものを示す関数であってもよく、エネルギーに応じた値、例えば、エネルギーの自乗やエネルギーの１／２乗、エネルギーに比例した値、実効トルク、エネルギーと正の相関を有する値などを示す関数であってもよい。ここで、エネルギーを示す関数とは、関数の値によってエネルギーの値が示されることを意味している。また、その目的関数は、モータのトルクを含む関数である。すなわち、その目的関数は、モータのトルクを引数（変数）として含む関数である。また、その目的関数は、トルク以外の引数、例えば、モータの動作に関するタイミングを示す時刻や期間を含んでいてもよい。また、その目的関数は、外力をも含む関数であってもよい。外力を含むとは、外力の大きさを含むことであると考えてもよい。その外力は、例えば、制御対象のモータに作用する、外力に応じたトルクであってもよい。本実施の形態では、目的関数が外力をも含む関数である場合について主に説明する。そのモータは、例えば、ワイヤ送給装置２において溶接ワイヤを送給するモータであってもよく、ロボットにおいて関節を動作させるモータであってもよく、その他の装置で用いられるモータであってもよい。本実施の形態では、そのモータがワイヤ送給装置２において溶接ワイヤを送給するモータである場合について主に説明する。その溶接ワイヤを送給するモータは、例えば、溶接ワイヤの前進（インチング）及び後退（リトラクト）を繰り返して実行させるためのものであってもよい。また、移動対象の移動時間とは、移動対象が第１の位置から第２の位置に移動するのにかかる時間（期間）のことである。その移動時間は、その移動対象を移動させるために動作するモータの駆動時間と等しいため、モータの移動時間（駆動時間）であると考えてもよい。また、記憶部１１では、２以上の目的関数が記憶されていてもよい。例えば、モータの動作が複数の期間に分けられ、現在の時点が含まれる期間ごとに目的関数が異なる場合に、現在の時点が含まれる期間に応じた複数の目的関数が記憶されていてもよい。具体的には、モータの動作が加速期間、等速期間、減速期間の３つに分けられる場合に、現在の時点が加速期間に含まれるときの目的関数と、現在の時点が等速期間に含まれるときの目的関数と、現在の時点が減速期間に含まれるときの目的関数とが記憶されていてもよい。
【００１８】
制約条件は、モータの速度、モータによって移動される移動対象の速度、その移動対象の移動時間、モータの移動量、その移動対象の移動量、及びトルクの少なくともいずれかに関する条件である。また、制約条件には、それ以外の条件が含まれていてもよい。モータの移動量とは、モータの回転量であると考えてもよい。その条件は、例えば、モータの速度等の値を特定の値に決める条件（例えば、時刻ｔ１のモータの速度はｖ１であるという条件など）であってもよく、モータの速度等の値の範囲を制限する条件（例えば、モータの速度はｖ１以下であるという条件など）であってもよい。なお、制約条件が、モータのトルクに関する条件を含む場合に、そのトルクに関する条件は、加速度に関する条件であると考えてもよい。トルクと加速度とは慣性モーメントを介して関係づけられるからである。また、複数の目的関数が存在する場合に、制約条件は、すべての目的関数に対して同じであってもよく、または、目的関数ごとに異なっていてもよい。
【００１９】
記憶部１１に目的関数等が記憶される過程は問わない。例えば、記録媒体を介して目的関数等が記憶部１１で記憶されるようになってもよく、通信回線等を介して送信された目的関数等が記憶部１１で記憶されるようになってもよく、または、入力デバイスを介して入力された目的関数等が記憶部１１で記憶されるようになってもよい。記憶部１１での記憶は、ＲＡＭ等における一時的な記憶でもよく、または、長期的な記憶でもよい。記憶部１１は、所定の記録媒体（例えば、半導体メモリや磁気ディスクなど）によって実現されうる。
【００２０】
外力記憶部１２では、モータに作用する外力に関する情報である外力情報が記憶される。その外力情報によって示される外力は、例えば、ワイヤ送給装置２やロボット等において外乱オブザーバによって求めた外力であってもよく、計算によって算出された外力であってもよく、ワイヤ送給装置２等においてセンサ等によって測定した外力であってもよい。例えば、制御対象のモータが溶接ワイヤを送給する場合には、その外力は、例えば、溶接ワイヤの摩擦に関する外力や、溶接ワイヤをワイヤリールから引き出す摩擦に関する外力、アーク発生時に溶接ワイヤをインチング方向に吸い寄せる外力などであってもよい。また、例えば、制御対象のモータが産業用ロボットの関節を動作させる場合には、その外力は、例えば、関節の摩擦に関する外力や、搬送対象やアームにかかる重力に関する外力などであってもよい。また、加速期間、等速期間などのように複数の期間が存在する場合には、外力情報は、その期間ごとに設定されていてもよい。また、外力情報が示す外力は、時系列に沿って一定の値であってもよく、または、そうでなくてもよい。後者の場合には、例えば、外力は時間に依存して変化してもよく、または、モータの速度等に応じて変化してもよい。
【００２１】
外力記憶部１２に外力情報が記憶される過程は問わない。例えば、記録媒体を介して外力情報が外力記憶部１２で記憶されるようになってもよく、通信回線等を介して送信された外力情報が外力記憶部１２で記憶されるようになってもよく、または、入力デバイスを介して入力された外力情報が外力記憶部１２で記憶されるようになってもよい。また、外力記憶部１２で記憶されている外力情報は、外力の変化に応じて更新されることが好適である。例えば、ワイヤ送給装置２の溶接ワイヤの種類やコンジットケーブルの種類が変わった場合には、溶接ワイヤに作用する摩擦力が変化しうる。したがって、そのような場合には、その変化後の外力を示すものとなるように外力情報が更新されることが好適である。外力記憶部１２での記憶は、ＲＡＭ等における一時的な記憶でもよく、または、長期的な記憶でもよい。外力記憶部１２は、所定の記録媒体（例えば、半導体メモリや磁気ディスクなど）によって実現されうる。
【００２２】
算出部１３は、モータに関する現在のフィードバック値を用いて、制約条件を満たすように、目的関数を最適化する最適解であるトルクを算出する。そして、算出部１３は、算出したトルクに応じてトルク指令値を制御部１４に出力する。なお、目的関数が外力も含むものである場合には、算出部１３は、外力記憶部１２で記憶されている外力情報をも用いてトルクを算出してもよい。外力情報をも用いるとは、その外力情報によって示される外力の値を、目的関数に代入して最適解であるトルクを算出することである。また、モータに関する現在のフィードバック値は、例えば、モータの現在位置、モータの現在速度、モータの現在電流（現在トルク）のいずれかであってもよく、または、それらの任意の２以上の組み合わせであってもよい。モータの現在位置は、例えば、エンコーダによって取得されたものであってもよい。また、モータの現在速度は、例えば、その現在位置を時間微分したものであってもよい。また、モータの現在電流は、例えば、電流計によって取得されたものであってもよい。算出部１３は、例えば、その現在位置等を制御部１４から受け取ってもよく、または、制御対象のモータから受け取ってもよい。目的関数を最適化する最適解とは、目的関数を最大または最小にする解である。目的関数がエネルギーや移動時間である場合には、通常、そのエネルギー等を最小にする解が算出される。なお、本実施の形態では、最適解としてトルクが算出されることになる。また、目的関数にトルク以外の変数（例えば、時刻等）も含まれる場合には、目的関数を最適化することによって、その変数に関する値も算出されることになる。その目的関数を最適化する最適解を算出する方法、例えば、最急降下法等を用いた算出方法はすでに公知であり、その説明を省略する。なお、その算出されたトルクは、例えば、時系列のトルクであってもよい。すなわち、その算出時点以降に時間変化するトルクが算出されてもよい。目的関数に、例えば、複数の期間ごとのトルクが変数として含まれている場合には、各変数の値が算出されることによって、結果として、時系列のトルクが算出されることになってもよい。時系列のトルクは、その算出時点において目標を達成できるように（制約条件を満たすように）算出されたトルクとなる。したがって、想定外の外力等がない場合には、その算出したトルクに応じた制御が行われることによって、モータの所望の動作が達成されることになる。算出部１３は、その算出したトルクを用いて、トルク指令値を算出する。例えば、外力が存在しない場合には、その算出したトルクがそのままトルク指令値となる。一方、外力が存在する場合には、算出部１３は、その外力を相殺できるようにトルク指令値を算出する。すなわち、算出部１３は、外力を相殺した結果が算出したトルクとなるようにトルク指令値を算出する。したがって、算出部１３は、最適化問題を解く際だけでなく、トルク指令値を算出する際にも、外力記憶部１２で記憶されている外力情報を用いてもよい。なお、外力も時系列に沿って変化する場合には、その外力の時間変化に応じてトルク指令値も時間変化することになる。
【００２３】
また、後述する具体例でも説明するように、トルクを算出する現時点が含まれる期間によっては、最適化問題を解くことなく、制約条件のみを用いて、目的関数に含まれるすべての変数（引数）を算出できることもある。そうであっても、最適化問題を解くことによってトルクを算出する期間があるのであれば、全体としてみれば、算出部１３は、目的関数と制約条件とを用いて、目的関数の最適解であるトルクを算出していると考えることができる。また、制約条件の個数の方が目的関数に含まれる変数の個数よりも多い場合もありうる。そのような場合には、算出部１３は、一部の制約条件のみを用いてトルクを算出してもよい。したがって、制約条件を満たすようにトルクを算出することには、制約条件の一部を満たすようにトルクを算出することが含まれると考えてもよい。
【００２４】
なお、算出部１３がトルクを算出するタイミングは問わない。例えば、算出部１３は、トルクを定期的に算出してもよく、あらかじめ決められたイベントの発生時にトルクを算出してもよい。そのイベントは、例えば、モータの状態が想定以上に変化したことであってもよい。具体的には、予測値と現在値との差が閾値以上になったことであってもよい。なお、その予測値や現在値は、例えば、トルク、速度、または位置に関する予測値や現在値であってもよい。トルクの予測値とは、算出部１３によって算出されたトルクであってもよい。また、速度や位置の予測値とは、その算出されたトルクに応じた速度や位置であってもよい。また、トルク等の現在値は、現在のフィードバック値であってもよい。また、算出部１３は、動作の開始時にもトルクの算出を行ってもよい。その場合には、現在のフィードバック値が初期値であるとしてトルクの算出を行ってもよい。
【００２５】
また、モータの動作が複数の期間に分けられており、その期間ごとの目的関数等が設定されている場合には、算出部１３は、現在の時点（算出時点）が含まれる期間に応じた目的関数等を用いてトルクを算出してもよい。なお、そのようにして算出するトルクは、その期間以後の期間をもカバーする時系列のトルクであってもよい。
【００２６】
制御部１４は、算出部１３が出力したトルク指令値を用いて、モータのトルクをフィードバック制御する。すなわち、制御対象のモータのトルクがトルク指令値に近づくようにフィードバック制御を行う。具体的には、制御部１４は、制御対象のモータの現在電流（現在トルク）を受け取り、その現在電流に応じたトルクがトルク指令値に近づくように、モータのトルクを制御する。この制御は、モータのサーボコントローラにおける電流ループとして知られている制御である。
【００２７】
なお、本実施の形態では、トルク算出装置１が制御部１４を有している場合について主に説明するが、そうでなくてもよい。ワイヤ送給装置２やロボット等の制御対象のモータを有する装置が制御部１４を有していてもよく、その他の装置が制御部１４を有していてもよい。制御部１４がトルク算出装置１の外部に存在する場合には、算出部１３は、その制御部１４を有している装置にトルク指令値を出力するものとする。
【００２８】
また、記憶部１１と、外力記憶部１２とは、同一の記録媒体によって実現されてもよく、または、別々の記録媒体によって実現されてもよい。前者の場合には、目的関数等を記憶している領域が記憶部１１となり、外力情報を記憶している領域が外力記憶部１２となる。
【００２９】
また、制御対象のモータが複数存在する場合には、そのモータごとに上述したトルク指令値の出力が行われてもよい。また、その場合には、モータごとに目的関数や制約条件が異なっていてもよく、または、そうでなくてもよい。
【００３０】
ここで、本実施の形態によるトルク指令値の算出について、図２を用いて説明する。時刻ｔ1において、目標時刻に目標値に到達するように算出されたトルク指令値に応じた位置は、図２の左側のグラフにおいて破線で示される指令経路であったとする。一方、想定外の外力等によって時刻ｔ2においては、図２の右側のグラフで示されるように、算出された指令経路と大きく異なる動作経路となっていたとする。すると、算出部１３は、時刻ｔ2に再度、目標時刻に目標値に到達するようにトルク指令値を算出する。そのトルク指令値に応じた位置は、図２の右側のグラフにおいて破線で示される指令経路であったとする。すると、それ以降はその指令経路に応じたトルク指令値となるように制御が行われることになる。その結果、図６で示されるような不必要な制御が行われることを回避することができる。
【００３１】
次に、トルク算出装置１の動作について図３のフローチャートを用いて説明する。なお、このフローチャートでは、目的関数が外力をも含む関数である場合について説明する。
（ステップＳ１０１）算出部１３は、トルクの算出を行うかどうか判断する。そして、トルクの算出を行う場合には、ステップＳ１０２に進み、そうでない場合には、ステップＳ１０５に進む。なお、算出部１３は、前述のように、トルクの算出を行うと定期的に判断してもよく、または、予測値と現在値（実測値）とが閾値以上乖離していることが検知されたことなどのイベントの発生に応じてトルクの算出を行うと判断してもよい。
【００３２】
（ステップＳ１０２）算出部１３は、記憶部１１から目的関数と制約条件とを読み出す。なお、複数の目的関数が存在する場合には、算出部１３は、例えば、その時点に応じた目的関数を読み出してもよい。
【００３３】
（ステップＳ１０３）算出部１３は、外力記憶部１２から外力情報を読み出す。
【００３４】
（ステップＳ１０４）算出部１３は、読み出した外力情報を代入した目的関数と、制約条件と、現在のフィードバック値とを用いて、目的関数を最適化する最適解としてのトルクを算出する。また、算出部１３は、その算出結果を用いて、外力を考慮したトルクを算出する。その外力は、外力記憶部１２で記憶されている外力情報によって示されるものであってもよい。その算出されたトルクは、トルクの時間変化であってもよい。例えば、現時点がｔpである場合に、時系列に沿ったトルクτp（ｔ）が算出されてもよい。なお、外力が存在しない場合には、最適化問題を解くことによって算出したトルクがそのままτp（ｔ）となってもよい。また、算出されたトルクは、図示しない記録媒体で記憶されてもよい。そして、ステップＳ１０１に戻る。
【００３５】
（ステップＳ１０５）算出部１３は、トルク指令値を出力するタイミングであるかどうか判断する。そして、トルク指令値を出力するタイミングである場合には、ステップＳ１０６に進み、そうでない場合には、ステップＳ１０１に戻る。なお、算出部１３は、例えば、トルク指令値を出力するタイミングであると定期的に判断してもよい。また、トルク指令値を出力するタイミングとなるまでに、少なくともステップＳ１０４におけるトルクの算出が行われているものとする。
【００３６】
（ステップＳ１０６）算出部１３は、トルク指令値を制御部１４に出力する。その結果、制御部１４は、モータの現在のトルクがそのトルク指令値となるようにモータのトルクを制御する。そして、ステップＳ１０１に戻る。なお、算出部１３は、ステップＳ１０４で算出した最新のトルクτp（ｔ）を用いて、現時点に対応するトルクを特定してもよい。例えば、現時点がｔkである場合に、算出部１３は、その時点のトルクτp（ｔk）を特定してもよい。そのτp（ｔk）がトルク指令値となる。
【００３７】
なお、図３のフローチャートにおける処理の順序は一例であり、同様の結果を得られるのであれば、各ステップの順序を変更してもよい。また、図３のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【００３８】
次に、本実施の形態によるトルク算出装置１の動作について、具体例を用いて説明する。この具体例では、溶接ワイヤを送給するワイヤ送給装置２のモータを制御する場合について説明する。その溶接ワイヤの送給では、次のような条件があるとする。
・インチング、リトラクトをあらかじめ決められた期間ｔcycごとに繰り返す。
・一回のインチング量はｘiである。
・一回のリトラクト量はｘr（＝ｘi−δ）である。
なお、δは、一回のインチング、リトラクトによる前進量である。
・インチング時、リトラクト時のモータの最高速度はそれぞれｖi、ｖrである。
【００３９】
また、その溶接ワイヤの送給では、次のような既知の外力があるとする。したがって、これらの外力の値を示す外力情報が、外力記憶部１２で記憶されているものとする。
・ワイヤ送給の摩擦τfr：溶接ワイヤの送給方向と逆向きに発生する。
・ワイヤリールの摩擦τfr2：リールから溶接ワイヤを引き出すときにのみ発生する。
・アーク反力τarc：アーク発生時に溶接ワイヤの前進方向に発生する。
【００４０】
また、この具体例では、目的関数をモータの実効トルクＴの自乗とする。すなわち、図４で示されるように、周期的にインチング、リトラクトが行われる場合には、時刻ｔ0における目的関数Ｔ２は、次式のようになる。なお、図４において、モータの加速度に応じたトルクτ1，τ2，τ3，τ4，τ5，τ6を実線で示しており、またモータにかかる外力に応じたトルクτfr，τfr2，τarcを破線で示している。なお、図４のトルクτfr2，τarcは、厳密にはワイヤ送給の摩擦に応じたトルクをも含んでいる。すなわち、期間Ｔ3の外力は厳密には−τfr2−τfrであり、期間Ｔ6の外力は厳密にはτarc＋τfrであるが、この具体例では説明の便宜上、それらを−τfr2，τarcとしている。また、図４では、トルクτ1等に応じた速度及び位置の時間変化も示している。そのτ1等は、モータの加速度に応じたトルクであるため、モータは、それらのトルクに応じた加速度で動作するように制御されることになる。なお、この具体例では、説明の便宜上ｔ0＝０としている。
Ｔ２＝｛（τ1＋τfr）２×ｔ1＋（τ2−τfr）２×（ｔfr2−ｔ1）
＋（τ3−τfr2）２×（ｔ2−ｔfr2）
＋（τ4＋τfr）２×（ｔ3−ｔ2）
＋（τ5−τfr）２×（ｔarcs−ｔ3＋ｔcyc−ｔarce）
＋（τ６−τarc）２×（ｔarce−ｔarcs）｝／ｔcyc      （１）
【００４１】
なお、この具体例におけるワイヤ送給では、インチング時、リトラクト時に、まず等加速で速度の絶対値が最大値となるまで加速し、それから減速するものとする。また、ｔ1は、インチング時に速度が最大となる時刻であり、ｔfr2は、ワイヤリールからの溶接ワイヤの引き出しが開始される時刻であり、ｔ2は、速度が０となる時刻であり、ｔ3は、リトラクト時に速度の絶対値が最大となる時刻である。ｔarcsは、アークの開始時刻であり、ｔarceは、アークの終了時刻であり、両者とも既知である。また、ｔcycは、インチング、リトラクトが繰り返される周期であり、上述のように既知である。また、ｔfr2は、上述のように、ワイヤリールからの溶接ワイヤの引き出しが開始される時刻、すなわち、位置がｘrとなる時刻である。したがって、ｔfr2は算出することができる。上記（１）式で示される目的関数において、τ1，τ2，τ3，τ4，τ5，τ6，ｔ1，ｔ2，ｔ3が変数である。それらの変数が求まれば、トルクの時間変化がわかることになる。
【００４２】
次に、制約条件について説明する。まず、インチング速度に関する制約条件は、次式のようになる。なお、αは、イナーシャ（慣性モーメント）の逆数である。また、（２）式は、速度０からｖiまでの加速時の条件であり、（３）式は、速度ｖiから０までの減速時の条件である。
τ1×α×ｔ1＝ｖi      （２）
τ2×α×（ｔfr2−ｔ1）＋τ3×α×（ｔ2−ｔfr2）＝ｖi      （３）
【００４３】
また、リトラクト速度に関する制約条件は、次式のようになる。なお、（４）式は、速度０から−ｖrまでの減速時の条件であり、（５）式は、速度−ｖrから０までの加速時の条件である。
τ4×α×（ｔ3−ｔ2）＝ｖr      （４）
τ5×α×（ｔarcs−ｔ3＋ｔcyc−ｔarce）
＋τ6×α×（ｔarce−ｔarcs）＝ｖr      （５）
なお、インチング速度、リトラクト速度は、インチング時、リトラクト時のモータの速度である。
【００４４】
また、インチング量に関する制約条件は、次式のようになる。
｛ｔ1×ｖi＋（ｔfr2−ｔ1）×（２ｖi−τ2×α×（ｔfr2−ｔ1））
＋（ｔ2−ｔfr2）×（ｖi−τ2×α×（ｔfr2−ｔ1））｝／２＝ｘi      （６）
【００４５】
また、リトラクト量に関する制約条件は、次式のようになる。
｛（ｔ3−ｔ2）×ｖr＋（ｔarcs−ｔ3）×（２ｖr−τ5×α×（ｔarcs−ｔ3））
＋（ｔarce−ｔarcs）×（２ｖr−２τ5×α×（ｔarcs−ｔ3）
−τ6×α×（ｔarce−ｔarcs））
＋（ｔcyc−ｔarce）×（ｖr−τ5×α×（ｔarcs−ｔ3）
−τ6×α×（ｔarce−ｔarcs））｝／２＝ｘr      （７）
なお、インチング量、リトラクト量は、インチング時、リトラクト時のモータの移動量である。したがって、ｘiは、インチング時のモータの移動量であり、ｘrは、リトラクト時のモータの移動量である。
【００４６】
また、時刻に関する制約条件は、次の通りである。
ｔ3＞ｔ2＞ｔfr2＞ｔ1
【００４７】
上記（１）式の目的関数には９個の変数が含まれており、（２）〜（７）式の６個の制約条件が存在するため、変数を３個に減らすことができる。したがって、算出部１３は、目的関数を最小化するように、その３個の変数を求めることによって、すべての変数を算出することができ、制約条件に応じた目的を達成するためのトルクの時間変化を知ることができる。ここで、制約条件の数は、７個であってもよい。その場合には、例えば、時刻ｔ2からｔ3までの期間をあらかじめ決められた値とする制約条件を追加してもよく、または、その他の制約条件を追加してもよい。制約条件が７個である場合には、目的関数を最小にする２個の変数を求めることによって、すべての変数を算出できることになる。また、制約条件の個数は、それら以外であってもよい。
【００４８】
次に、期間Ｔ1に含まれる時刻ｔpにトルクを算出する処理について説明する。その時刻ｔpにおける目的関数Ｔ２は、次式のようになる。なお、次式の目的関数は、時刻ｔpからｔcycまでの実効トルクの自乗である。このように、目的関数は、現時点ｔpから、目標とする状態（この具体例では、インチング、リトラクトの１周期の終わり）までの消費エネルギー等を示すものであってもよい。
Ｔ２＝｛（τ1＋τfr）２×（ｔ1−ｔp）＋（τ2−τfr）２×（ｔfr2−ｔ1）
＋（τ3−τfr2）２×（ｔ2−ｔfr2）
＋（τ4＋τfr）２×（ｔ3−ｔ2）
＋（τ5−τfr）２×（ｔarcs−ｔ3＋ｔcyc−ｔarce）
＋（τ６−τarc）２×（ｔarce−ｔarcs）｝／（ｔcyc−ｔp）      （１１）
【００４９】
また、時刻ｔ0における制約条件のうち、（２）、（６）式は、次式のようになる。それ以外の制約条件は、（３）〜（５）、（７）式と同じである。そのように、制約条件は、現時点ｔpから、目標とする状態（この具体例では、インチング、リトラクトの１周期の終わり）までの条件を示すものであってもよい。なお、目的関数や制約条件におけるトルクτ1等は、時刻ｔpに算出される新しいトルクである。また、ｖpは、時刻ｔpのモータの速度であり、ｘpは、時刻ｔpのモータの位置である。それらの速度や位置は、モータに関する現在のフィードバック値である。したがって、この具体例では、現在のフィードバック値は制約条件に代入されることになる。
τ1×α×（ｔ1−ｔp）＝ｖi−ｖp      （１２）
｛（ｔ1−ｔp）×（ｖp＋ｖi）＋（ｔfr2−ｔ1）×（２ｖi−τ2×α×（ｔfr2−ｔ1））
＋（ｔ2−ｔfr2）×（ｖi−τ2×α×（ｔfr2−ｔ1））｝／２＝ｘi−ｘp      （１６）
【００５０】
なお、この期間Ｔ1に含まれる時刻ｔpにおいては、目的関数には、９個の変数が含まれており、（３）〜（５）、（７）、（１２）、（１６）式の６個の制約条件が存在するため、変数を３個に減らすことができる。したがって、算出部１３は、目的関数を最小化するように、その３個の変数を求めることによって、すべての変数を算出することができ、制約条件に応じた目的を達成するためのトルクの時間変化を知ることができる。また、時刻ｔ0における目的関数等は、この期間Ｔ1に含まれる時刻ｔpの目的関数等において、ｔp＝０，ｖp＝０，ｘp＝０にしたものとなる。
【００５１】
次に、期間Ｔ2に含まれる時刻ｔpにトルクを算出する処理について説明する。その時刻ｔpにおける目的関数Ｔ２は、次式のようになる。なお、次式の目的関数は、時刻ｔpからｔcycまでの実効トルクの自乗である。
Ｔ２＝｛（τ2−τfr）２×（ｔfr2−ｔp）＋（τ3−τfr2）２×（ｔ2−ｔfr2）
＋（τ4＋τfr）２×（ｔ3−ｔ2）
＋（τ5−τfr）２×（ｔarcs−ｔ3＋ｔcyc−ｔarce）
＋（τ６−τarc）２×（ｔarce−ｔarcs）｝／（ｔcyc−ｔp）      （２１）
【００５２】
また、時刻ｔ0における制約条件のうち、（２）式は不要となり、（３）、（６）式は、次式のようになる。それ以外の制約条件は、（４）、（５）、（７）式と同じである。なお、目的関数や制約条件におけるトルクτ2等は、時刻ｔpに算出される新しいトルクである。
τ2×α×（ｔfr2−ｔp）＋τ3×α×（ｔ2−ｔfr2）＝ｖp      （２３）
｛（ｔfr2−ｔp）×（２ｖp−τ2×α×（ｔfr2−ｔp））
＋（ｔ2−ｔfr2）×（ｖp−τ2×α×（ｔfr2−ｔp））｝／２＝ｘi−ｘp      （２６）
【００５３】
なお、この期間Ｔ2に含まれる時刻ｔpにおいては、目的関数には、２個の変数τ1，ｔ1を除いた７個の変数が含まれており、（４）、（５）、（７）、（２３）、（２６）式の５個の制約条件が存在するため、変数を２個に減らすことができる。したがって、算出部１３は、目的関数を最小化するように、その２個の変数を求めることによって、すべての変数を算出することができ、制約条件に応じた目的を達成するためのトルクの時間変化を知ることができる。
【００５４】
次に、期間Ｔ3に含まれる時刻ｔpにトルクを算出する処理について説明する。その時刻ｔpにおける目的関数Ｔ２は、次式のようになる。なお、次式の目的関数は、時刻ｔpからｔcycまでの実効トルクの自乗である。
Ｔ２＝｛（τ3−τfr2）２×（ｔ2−ｔp）
＋（τ4＋τfr）２×（ｔ3−ｔ2）
＋（τ5−τfr）２×（ｔarcs−ｔ3＋ｔcyc−ｔarce）
＋（τ６−τarc）２×（ｔarce−ｔarcs）｝／（ｔcyc−ｔp）      （３１）
【００５５】
また、時刻ｔ0における制約条件のうち、（２）式は不要となり、（３）、（６）式は、次式のようになる。それ以外の制約条件は、（４）、（５）、（７）式と同じである。なお、目的関数や制約条件におけるトルクτ3等は、時刻ｔpに算出される新しいトルクである。
τ3×α×（ｔ2−ｔp）＝ｖp      （３３）
｛（ｔ2−ｔp）×ｖp｝／２＝ｘi−ｘp      （３６）
【００５６】
なお、その（３６）式により、時刻ｔ2は決定される。したがって、この期間Ｔ3に含まれる時刻ｔpにおいては、目的関数には、４個の変数τ1，τ2，ｔ1，ｔ2を除いた５個の変数が含まれており、（４）、（５）、（７）、（３３）式の４個の制約条件が存在するため、変数を１個に減らすことができる。したがって、算出部１３は、目的関数を最小化するように、その１個の変数を求めることによって、すべての変数を算出することができ、制約条件に応じた目的を達成するためのトルクの時間変化を知ることができる。
【００５７】
次に、期間Ｔ4に含まれる時刻ｔpにトルクを算出する処理について説明する。その時刻ｔpにおける目的関数Ｔ２は、次式のようになる。なお、次式の目的関数は、時刻ｔpからｔcycまでの実効トルクの自乗である。
Ｔ２＝｛（τ4＋τfr）２×（ｔ3−ｔp）
＋（τ5−τfr）２×（ｔarcs−ｔ3＋ｔcyc−ｔarce）
＋（τ６−τarc）２×（ｔarce−ｔarcs）｝／（ｔcyc−ｔp）      （４１）
【００５８】
また、時刻ｔ0における制約条件のうち、（２）、（３）、（６）式は不要となり、（４）、（７）式は、次式のようになる。それ以外の制約条件は、（５）式と同じである。なお、目的関数や制約条件におけるトルクτ4等は、時刻ｔpに算出される新しいトルクである。また、δ＝ｘi−ｘrである。
τ4×α×（ｔ3−ｔp）＝ｖr＋ｖp      （４４）
｛（ｔ3−ｔp）×（ｖr−ｖp）＋（ｔarcs−ｔ3）×（２ｖr−τ5×α×（ｔarcs−ｔ3））
＋（ｔarce−ｔarcs）×（２ｖr−２τ5×α×（ｔarcs−ｔ3）
−τ6×α×（ｔarce−ｔarcs））
＋（ｔcyc−ｔarce）×（ｖr−τ5×α×（ｔarcs−ｔ3）
−τ6×α×（ｔarce−ｔarcs））｝／２＝ｘp−δ      （４７）
【００５９】
なお、この期間Ｔ4に含まれる時刻ｔpにおいては、目的関数には、５個の変数τ1，τ2，τ3，ｔ1，ｔ2を除いた４個の変数が含まれており、（５）、（４４）、（４７）式の３個の制約条件が存在するため、変数を１個に減らすことができる。したがって、算出部１３は、目的関数を最小化するように、その１個の変数を求めることによって、すべての変数を算出することができ、制約条件に応じた目的を達成するためのトルクの時間変化を知ることができる。
【００６０】
次に、期間Ｔ5に含まれる時刻ｔpにトルクを算出する処理について説明する。その時刻ｔpにおいては、時刻ｔ0における制約条件のうち、（２）、（３）、（４）、（６）式は不要となり、（５）、（７）式は、次式のようになる。なお、目的関数や制約条件におけるトルクτ5等は、時刻ｔpに算出される新しいトルクである。
τ5×α×（ｔarcs−ｔp＋ｔcyc−ｔarce）
＋τ6×α×（ｔarce−ｔarcs）＝−ｖp      （５５）
｛（ｔarcs−ｔp）×（−２ｖp−τ5×α×（ｔarcs−ｔp））
＋（ｔarce−ｔarcs）×（−２ｖp−２τ5×α×（ｔarcs−ｔp）
−τ6×α×（ｔarce−ｔarcs））
＋（ｔcyc−ｔarce）×（−ｖp−τ5×α×（ｔarcs−ｔp）
−τ6×α×（ｔarce−ｔarcs））｝／２＝ｘp−δ      （５７）
【００６１】
なお、この期間Ｔ5に含まれる時刻ｔpにおいては、未定の変数はτ5，τ6の２個である。また、（５５）、（５７）式の２個の制約条件が存在するため、その２個の変数τ5，τ6を算出することができ、制約条件に応じた目的を達成するためのトルクの時間変化を知ることができる。このように、期間Ｔ5に含まれる時刻ｔpにおいては、目的関数を最適化するまでもなく、制約条件からトルクが算出されることになる。
【００６２】
次に、期間Ｔ6に含まれる時刻ｔpにトルクを算出する処理について説明する。その時刻ｔpにおいては、時刻ｔ0における制約条件のうち、（２）、（３）、（４）、（６）式は不要となり、（５）、（７）式は、次式のようになる。なお、目的関数や制約条件におけるトルクτ5等は、時刻ｔpに算出される新しいトルクである。
τ6×α×（ｔarce−ｔp）
＋τ5×α×（ｔcyc−ｔarce）＝−ｖp      （６５）
｛（ｔarce−ｔp）×（−２ｖp−τ6×α×（ｔarce−ｔp））
＋（ｔcyc−ｔarce）×（−ｖp−τ6×α×（ｔarce−ｔp））｝／２
＝ｘp−δ      （６７）
【００６３】
なお、この期間Ｔ6に含まれる時刻ｔpにおいては、未定の変数はτ5，τ6の２個である。また、（６５）、（６７）式の２個の制約条件が存在するため、その２個の変数τ5，τ6を算出することができ、制約条件に応じた目的を達成するためのトルクの時間変化を知ることができる。このように、期間Ｔ6に含まれる時刻ｔpにおいても、目的関数を最適化するまでもなく、制約条件からトルクが算出されることになる。
【００６４】
次に、期間Ｔ7に含まれる時刻ｔpにトルクを算出する処理について説明する。その時刻ｔpにおいては、時刻ｔ0における制約条件のうち、（２）、（３）、（４）、（６）式は不要となり、（５）、（７）式は、次式のようになる。なお、目的関数や制約条件におけるトルクτ5は、時刻ｔpに算出される新しいトルクである。
τ5×α×（ｔcyc−ｔp）＝−ｖp      （７５）
｛（ｔcyc−ｔp）×（−ｖp）｝／２＝ｘp−δ      （７７）
【００６５】
なお、この期間Ｔ7に含まれる時刻ｔpにおいては、未定の変数はτ5の１個である。また、上記（７７）式は、変数に関する条件となっていないため、実質的な制約条件は（７５）式のみとなる。したがって、（７５）式の制約条件から変数τ5を算出することができ、制約条件に応じた目的を達成するためのトルクの時間変化を知ることができる。このように、期間Ｔ7に含まれる時刻ｔpにおいても、目的関数を最適化するまでもなく、制約条件からトルクが算出されることになる。
【００６６】
上述のように、Ｔ1〜Ｔ7の各期間について、目的関数と制約条件とが設定されていることになる。したがって、その期間ごとの目的関数及び制約条件が、記憶部１１で記憶されることになる。なお、期間Ｔ5等のように目的関数を最適化する必要がない場合には、未定の変数を算出するために必要な制約条件のみが記憶部１１で記憶されていてもよい。この具体例では、上述のように、期間Ｔ5〜Ｔ7においては、最適化問題を解くことなくトルクを算出することができるが、その他の期間については、最適化問題を解くことによってトルクを算出しているため、全期間を考慮した場合には、算出部１３は、最適化問題を解くことによってトルクを算出していると考えることができる。
【００６７】
また、この具体例におけるモータの動作は周期的であるため、時刻ｔcyc以降の次の周期においても、Ｔ1〜Ｔ7の各期間と同様の目的関数と制約条件を用いることによって、トルクの時間変化を算出することができる。具体的には、時刻ｔpを、０からｔcycまでの時刻であるｔp−ｎ×ｔcyc（ｎは１以上の整数である）とすることにより、上述の説明と同様の目的関数等を用いることができる。
【００６８】
なお、上記説明では、インチング量やリトラクト量といった位置の変化量（移動量）に関する制約条件を設定しているが、それを位置に関する制約条件としてもよい。その場合には、例えば、１回目の周期が終わった時点、すなわち時刻ｔcycの位置がδから少しずれていたとしても、２回目の周期が終わった時点において、位置が２δに近づくように制御できることになる。なお、モータの位置とは、基準位置からの変化量（移動量）であるため、モータや移動対象の位置に関する制約条件は、モータや移動対象の移動量に関する制約条件に含まれると考えることができる。
【００６９】
次に、トルクを算出する時刻ｔpが期間Ｔ1〜Ｔ7のいずれに含まれるのかを判断する方法について説明する。基本的には、ある時刻ｔpがどの期間に属するのかについては、時刻ｔpと時刻ｔ1等とを比較することによって判断することができる。しかしながら、例えば、ｔp＜ｔ1であっても、速度ｖpがｖiを超えている場合には、その時刻ｔpは、期間Ｔ2であると考えるべきである。したがって、次のように判断するものとする。なお、以下の説明において、最新の算出結果に応じた時刻ｔ1等を用いるものとする。
・ｔ0＜ｔp＜ｔ1の場合
ｖp＜ｖiであれば、期間Ｔ1
ｖp≧ｖiであれば、期間Ｔ2
・ｔ1＜ｔp＜ｔfr2の場合
ｘp＜ｘrであれば、期間Ｔ2
ｘp≧ｘrであれば、期間Ｔ3
・ｔfr2＜ｔp＜ｔ2の場合
ｖp＞０であれば、期間Ｔ3
ｖp≦０であれば、期間Ｔ4
・ｔ2＜ｔp＜ｔ3の場合
ｖp＞−ｖrであれば、期間Ｔ4
ｖp≦−ｖrであれば、期間Ｔ5
なお、それ以降の期間Ｔ5〜Ｔ7については、時刻ｔarcs，ｔarce，ｔcycが固定値であるため、時刻ｔpとそれらの時刻との大小を比較することによって、時刻ｔpが期間Ｔ5，Ｔ6，Ｔ7のいずれに属するのかを判断することができる。
【００７０】
次に、各トルク等を算出する処理の手順について説明する。まず、溶接ワイヤの送給を開始する時刻ｔ0に、算出部１３は、トルクを算出するタイミングであると判断し（ステップＳ１０１）、時刻ｔ0に対応する目的関数等を読み出す（ステップＳ１０２，Ｓ１０３）。なお、時刻ｔ0に対応する目的関数等は、期間Ｔ1の目的関数等において、ｔp＝０等としたものであってもよい。また、算出部１３は、外力情報の示す外力を代入した目的関数や、制約条件を用いて、最適解であるトルクτ1，τ2，τ3，τ4，τ5，τ6、及び時刻ｔ1，ｔ2，ｔ3を算出し、外力を考慮したトルクの時間変化τ0（ｔ）を算出して図示しない記録媒体に蓄積する（ステップＳ１０４）。ここで、トルクτ1等は、モータの加速度に応じたトルクである。すなわち、モータは、そのトルクτ1等に応じた加速度で加速される必要がある。そのため、モータを動作させるためのトルク指令値は、外力であるτfr等の影響をなくす必要があるため、時刻ｔ0に算出したトルクの時間変化τ0（ｔ）は、次式のようになる。
τ0（ｔ）＝τ1＋τfr    （期間Ｔ1）
−τ2＋τfr    （期間Ｔ2）
−τ3＋τfr2    （期間Ｔ3）
−τ4−τfr    （期間Ｔ4）
τ5−τfr    （期間Ｔ5）
τ6−τarc    （期間Ｔ6）
τ5−τfr    （期間Ｔ7）
また、算出部１３は、そのトルクの時間変化τ0（ｔ）を用いて、トルク指令値を出力するタイミングごとにトルク指令値を制御部１４に出力する。例えば、算出部１３は、トルク指令値を出力する時点ｔkが含まれる期間に応じたトルク指令値τ0（ｔk）を制御部１４に出力する。すると、そのトルク指令値τ0（ｔk）に応じて、制御部１４は、ワイヤ送給装置２のモータのトルクを制御する（ステップＳ１０５，Ｓ１０６）。このモータのトルクの制御は、あらかじめ決められた周期ごとに繰り返される。
【００７１】
なお、算出部１３は、算出したトルクから想定される位置（例えば、図４で示される位置）と、エンコーダによって測定されたモータの現在位置とを比較し、両者の差があらかじめ決められた閾値以上となると、トルクを再度、算出すると判断する（ステップＳ１０１）。その時点の時刻ｔpは、ｔ0＜ｔp＜ｔ1であったとする。すると、算出部１３は、その時刻ｔpが含まれる期間を特定する。具体的には、ｔ0＜ｔp＜ｔ1であるため、算出部１３は、その時点の速度ｖpがｖiより大きいかどうか判断する。その場合には、ｖp＜ｖiであったとすると、算出部１３は、期間Ｔ1に応じた目的関数等を読み出し、トルク等を算出し、図示しない記録媒体に蓄積する（ステップＳ１０２〜Ｓ１０４）。そして、その後は、その最新のトルク等を用いたトルク指令値τp（ｔk）の出力が行われることになる（ステップＳ１０５，Ｓ１０６）。図５は、そのようにして変更されたトルク等を示すグラフである。時刻ｔ0に算出されたトルク等に応じた速度、位置を破線で示しており、時刻ｔpに算出されたトルク等に応じた速度、位置を実線で示している。時刻ｔ1'、ｔfr2'は、時刻ｔ0に算出された時刻ｔ1、ｔfr2である。また、図５では、時刻ｔ0に算出された時刻ｔp以降のトルクを細線で示している。なお、外力に応じたトルクについては、時刻ｔpに算出された時刻ｔfr2に応じて示している。図５で示される状況では、想定外の外力の影響によって、時刻ｔpの時点で速度や位置が想定していた値に達していないことになる。従来の制御方法であれば、目標とする位置と現実の位置との乖離を小さくするため、トルクが一気に大きくなるように制御されることになるが、その場合にはモータの消費エネルギーが大きくなってしまう。一方、本実施の形態によるトルク算出装置１では、制約条件を満たす範囲において、モータの消費エネルギーが最小となるようにトルクが算出されるため、溶接ワイヤの送給に関する要件を満たしながらも、モータの消費エネルギーを削減することができるようになる。
【００７２】
なお、この具体例で用いた目的関数や制約条件は一例であり、それ以外の目的関数や制約条件を用いてもよいことは言うまでもない。例えば、インチング量やリトラクト量に代えて、溶接ワイヤの平均送給速度（モータの平均速度）を用いた制約条件を設定してもよい。
【００７３】
また、この具体例では、制御対象のモータが、溶接ワイヤの送給のような周期的な動作を行う場合について説明したが、そうでなくてもよい。制御対象のモータが、ロボットの関節の動作のように、加速期間、等速期間、減速期間に応じた動作を行う場合であっても、同様にしてトルクを算出することができる。具体的には、加速期間の終期の速度（速度の最大値）が設定されており、また加速期間の始期から減速期間の終期までの全期間の長さが設定されており、また、その全期間におけるモータの全移動量（全回転量）が設定されているとする。すると、モータの消費エネルギーに応じた目的関数に含まれる変数は、例えば、加速期間の終期の時刻、等速期間の終期の時刻、加速期間のトルク、減速期間のトルクの４個になる。また、例えば、２個の制約条件、すなわち、加速期間の終期の速度に関する制約条件と、全移動量に関する制約条件とを設定すると、目的関数の変数を２個に減らすことができ、目的関数を最小にする２個の変数を求めることによって、すべての変数を算出できる。そのようにして、ロボットの関節を動作させるモータに関するトルクを算出することができる。
【００７４】
以上のように、本実施の形態によるトルク算出装置１によれば、外力等によって、制御対象のモータの状態に想定外の変化が起こったとしても、その変化後の状態から目標に向かうようにトルク指令値が求められるようになる。その結果、例えば、外力が目標に向かう方向に状態を変化させた場合には、その外力をも利用したモータの制御が可能となる。また、目的関数を最適化するようにトルクを算出するため、その目的関数に応じた量を最適化するようにトルクを制御できる。例えば、エネルギーや移動時間等を最小化するトルクを取得することができることになる。また、モータの消費エネルギーを削減した場合には、モータの発熱を抑えることができ、定格電流の小さいモータを使用することもできるようになる。
【００７５】
なお、本実施の形態では、ワイヤ送給装置２が有する、溶接ワイヤを送給するためのモータを制御する場合について説明したが、それ以外のモータを制御してもよいことは上述の通りである。トルク算出装置１は、例えば、産業用ロボットの関節を動作させるモータに関するトルクを算出してもよい。
【００７６】
また、本実施の形態では、溶接ワイヤのインチング、リトラクトを行うためのモータの消費エネルギーに応じた目的関数を最適化するようにトルク等を算出する場合について説明したが、上述のように、目的関数は、その他の最適化したい量を示す関数であってもよい。
【００７７】
また、本実施の形態では、トルク算出装置１が外力記憶部１２を有する場合について説明したが、そうでなくてもよい。トルク算出装置１は、外力記憶部１２を有していなくてもよい。その場合には、算出部１３は、外力情報を用いないでトルクを算出してもよい。すなわち、目的関数に外力が含まれていなくてもよい。
【００７８】
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、または、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
【００７９】
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う２個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、または、その情報の受け渡しを行う２個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
【００８０】
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いる閾値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、または長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、または、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、または、図示しない読み出し部が行ってもよい。
【００８１】
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる閾値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、または、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
【００８２】
また、上記実施の形態において、トルク算出装置１に含まれる２以上の構成要素が通信デバイスや入力デバイス等を有する場合に、２以上の構成要素が物理的に単一のデバイスを有してもよく、または、別々のデバイスを有してもよい。
【００８３】
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、または、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをＣＰＵ等のプログラム実行部が読み出して実行することによって、各構成要素が実現されうる。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。また、そのプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体（例えば、光ディスクや磁気ディスク、半導体メモリなど）に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。また、そのプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、または分散処理を行ってもよい。
【００８４】
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【００８５】
以上より、本発明によるトルク算出装置によれば、目的関数に応じた量、例えば、モータの消費エネルギー等を最適化するようにトルクを求められるという効果が得られ、例えば、ワイヤ送給装置や産業用ロボットの有するモータのトルクに関する算出を行うトルク算出装置等として有用である。
【符号の説明】
【００８６】
１  トルク算出装置
１１  記憶部
１２  外力記憶部
１３  算出部
１４  制御部
【図１】
0006396718.tif 000002
【図２】
0006396718.tif 000003
【図３】
0006396718.tif 000004
【図４】
0006396718.tif 000005
【図５】
0006396718.tif 000006
【図６】
0006396718.tif 000007