(57)【特許請求の範囲】
【請求項１】
モータを備えるとともに前記モータによって駆動される機械と、前記モータを制御するモータドライバと、前記モータドライバを制御するコントローラとを具備した機械システムの動作を、前記機械の動作を模擬する機械モデルと、前記モータドライバの動作を模擬するドライバモデルとを用いて模擬するシミュレーションプログラムであって、
前記機械モデルの候補と、前記ドライバモデルの候補とを保持するモデルライブラリから、前記機械システムの動作を模擬する際のシミュレーションの抽象度が設定された情報である抽象度設定に基づいて、前記機械の動作を模擬する際に用いる前記機械モデルと、前記モータドライバの動作を模擬する際に用いる前記ドライバモデルとを選択するモデル選択ステップと、
前記モデル選択ステップで選択した前記機械モデルおよび前記ドライバモデルを用いて機械システムの動作を模擬するモデル演算ステップと、
をコンピュータに実行させ、
前記機械モデルの候補および前記ドライバモデルの候補の少なくとも一方は複数であり、前記機械モデルの候補が複数である場合には、前記機械モデルの候補には、１つの前記機械を異なる抽象度で模擬する複数の機械モデルが含まれ、前記ドライバモデルの候補が複数である場合には、前記ドライバモデルの候補には、１つの前記モータドライバを異なる抽象度で模擬する複数のドライバモデルが含まれている、
ことを特徴とするシミュレーションプログラム。
【請求項２】
前記機械モデルの候補が複数である場合に、前記抽象度の異なる前記複数の機械モデルは、共通のインターフェースを持つソフトウェアである、
ことを特徴とする請求項１に記載のシミュレーションプログラム。
【請求項３】
前記機械システムを実際に動作させることによって得られた信号である実機情報に基づいて、前記モデルライブラリに保持されている前記複数の機械モデルとは抽象度の異なる機械モデルを第１の機械学習によって生成し前記モデルライブラリに保持させるモデル生成ステップを、さらにコンピュータに実行させる、
ことを特徴とする請求項１または２に記載のシミュレーションプログラム。
【請求項４】
前記モデル生成ステップでは、前記モータの位置の時系列データを入力とし、前記モータによって移動させられる部位の位置の時系列データを出力としたニューラルネットワークを用いて、前記複数の機械モデルとは抽象度の異なる機械モデルを前記第１の機械学習によって生成する、
ことを特徴とする請求項３に記載のシミュレーションプログラム。
【請求項５】
前記複数の機械モデルのうちの１つの機械モデルある第１の機械モデルを用いて、前記第１の機械モデルの抽象度を低減した新たな機械モデルである第２の機械モデルを生成するモデル簡略化ステップを、さらにコンピュータに実行させる、
ことを特徴とする請求項１から４の何れか１つに記載のシミュレーションプログラム。
【請求項６】
前記抽象度設定に基づいて選択した前記機械モデルおよび前記ドライバモデルを第２の機械学習によって学習する学習ステップを、さらにコンピュータに実行させ、
前記モデル選択ステップでは、新たな抽象度設定を受け付けると、前記新たな抽象度設定を入力として前記第２の機械学習の学習結果に基づいて、前記新たな抽象度設定に対応する前記機械モデルを前記機械モデルの候補から選択するとともに前記新たな抽象度設定に対応する前記ドライバモデルを前記ドライバモデルの候補から選択する、
ことを特徴とする請求項１から５の何れか１つに記載のシミュレーションプログラム。
【請求項７】
モータを備えるとともに前記モータによって駆動される機械と、前記モータを制御するモータドライバと、前記モータドライバを制御するコントローラとを具備した機械システムの動作を、前記機械の動作を模擬する機械モデルと、前記モータドライバの動作を模擬するドライバモデルとを用いて模擬するシミュレーション装置であって、
前記機械モデルの候補と、前記ドライバモデルの候補とを保持するモデルライブラリから、前記機械システムの動作を模擬する際のシミュレーションの抽象度が設定された情報である抽象度設定に基づいて、前記機械の動作を模擬する際に用いる前記機械モデルと、前記モータドライバの動作を模擬する際に用いる前記ドライバモデルとを選択するモデル選択部と、
前記モデル選択部が選択した前記機械モデルおよび前記ドライバモデルを用いて機械システムの動作を模擬するモデル演算部と、
を備え、
前記機械モデルの候補および前記ドライバモデルの候補の少なくとも一方は複数であり、前記機械モデルの候補が複数である場合には、前記機械モデルの候補には、１つの前記機械を異なる抽象度で模擬する複数の機械モデルが含まれ、前記ドライバモデルの候補が複数である場合には、前記ドライバモデルの候補には、１つの前記モータドライバを異なる抽象度で模擬する複数のドライバモデルが含まれている、
ことを特徴とするシミュレーション装置。
【請求項８】
前記モデルライブラリは、前記コントローラが実行する１つのシーケンスプログラムの処理を異なる抽象度で模擬する複数のコントローラモデルを保持し、
前記モデル選択部は、前記モデルライブラリから、前記抽象度設定に基づいて、前記シーケンスプログラムの処理を模擬する際に用いるコントローラモデルを選択し、
前記モデル演算部は、前記モデル選択部が選択した前記コントローラモデルを用いて機械システムの動作を模擬する、
ことを特徴とする請求項７に記載のシミュレーション装置。
【請求項９】
モータを備えるとともに前記モータによって駆動される機械と、前記モータを制御するモータドライバと、前記モータドライバを制御するコントローラとを具備した機械システムの動作を、前記機械の動作を模擬する機械モデルと、前記モータドライバの動作を模擬するドライバモデルとを用いて模擬するシミュレーション方法であって、
前記機械モデルの候補と、前記ドライバモデルの候補とを保持するモデルライブラリから、前記機械システムの動作を模擬する際のシミュレーションの抽象度が設定された情報である抽象度設定に基づいて、前記機械の動作を模擬する際に用いる前記機械モデルと、前記モータドライバの動作を模擬する際に用いる前記ドライバモデルとを選択するモデル選択ステップと、
前記モデル選択ステップで選択した前記機械モデルおよび前記ドライバモデルを用いて機械システムの動作を模擬するモデル演算ステップと、
を含み、
前記機械モデルの候補および前記ドライバモデルの候補の少なくとも一方は複数であり、前記機械モデルの候補が複数である場合には、前記機械モデルの候補には、１つの前記機械を異なる抽象度で模擬する複数の機械モデルが含まれ、前記ドライバモデルの候補が複数である場合には、前記ドライバモデルの候補には、１つの前記モータドライバを異なる抽象度で模擬する複数のドライバモデルが含まれている、
ことを特徴とするシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、機械の動作およびモータドライバの動作の少なくとも一方の動作を模擬するシミュレーションプログラム、シミュレーション装置、およびシミュレーション方法に関する。
【背景技術】
【０００２】
モータによって駆動される機械が所望の動作を実行するためには、機械の構成を決める設計パラメータ、モータを制御するための制御パラメータなどのパラメータの調整が必要となる。これらのパラメータの調整のために機械の試作と試験動作を繰り返すとなると膨大な手間、時間、および費用が掛かる。このため、機械の動作を模擬するシミュレーション装置による数値計算の計算結果を用いてパラメータが調整されている。【０００３】
機械の動作をシミュレーションするためには、ソフトウェア上で機械の動作を模擬するためのモデルが必要となる。さらに、用途ごとに仕様の異なる機械は多種多様であり、機械のモデルも仕様に応じて作成される必要がある。例えば、パラメータの調整を目的とするシミュレーションに用いられるモデルには精度が求められるが、機械全体を高い精度で模擬するモデルを用いたシミュレーションには膨大な計算コストが掛かる。このため、シミュレーションの目的に応じて必要な部分は高精度に模擬し、その他の部分を簡略化するといったように部分毎に適切な抽象度のモデルが用いられる。【０００４】
特許文献１に記載のシミュレータは、モータを制御するモータドライバ、センサ信号を入力するためのセンサ信号ユニットなどのモデルを作成しておき、これらのモデルを組み合わせることで種々の機械に対してモデルの作成を容易化している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２００８／１２０３０４号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１の技術では、構成の異なる機械に対してモデルを作成することができるものの、１つの機械に対して抽象度の異なるモデルを用いることはできなかった。このため、上記特許文献１の技術の場合、シミュレーションしたい内容が変わるたびに、ユーザが適切な抽象度のモデルを作成する必要があり、モデルの作成に時間および手間がかかるので、計算効率の良いシミュレーションを簡易的に実現できないという問題があった。【０００７】
本開示は、上記に鑑みてなされたものであって、計算効率の良いシミュレーションを簡易的に実現することができるシミュレーションプログラムを得ることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本開示は、モータを備えるとともにモータによって駆動される機械と、モータを制御するモータドライバと、モータドライバを制御するコントローラとを具備した機械システムの動作を、機械の動作を模擬する機械モデルと、モータドライバの動作を模擬するドライバモデルとを用いて模擬するシミュレーションプログラムであって、機械モデルの候補と、ドライバモデルの候補とを保持するモデルライブラリから、機械システムの動作を模擬する際のシミュレーションの抽象度が設定された情報である抽象度設定に基づいて、機械の動作を模擬する際に用いる機械モデルと、モータドライバの動作を模擬する際に用いるドライバモデルとを選択するモデル選択ステップをコンピュータに実行させる。また、シミュレーションプログラムは、モデル選択ステップで選択した機械モデルおよびドライバモデルを用いて機械システムの動作を模擬するモデル演算ステップをコンピュータに実行させる。機械モデルの候補およびドライバモデルの候補の少なくとも一方は複数であり、機械モデルの候補が複数である場合には、機械モデルの候補には、１つの機械を異なる抽象度で模擬する複数の機械モデルが含まれ、ドライバモデルの候補が複数である場合には、ドライバモデルの候補には、１つのモータドライバを異なる抽象度で模擬する複数のドライバモデルが含まれている。
【発明の効果】
【０００９】
本開示にかかるシミュレーションプログラムは、計算効率の良いシミュレーションを簡易的に実現することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１にかかるシミュレーション装置によって動作がシミュレーションされる機械システムの構成を示す図
【図２】実施の形態１にかかるシミュレーション装置の構成を示す図
【図３】実施の形態１に係るシミュレーション装置によるシミュレーションの処理手順を示すフローチャート
【図４】実施の形態２にかかるシミュレーション装置の構成を示す図
【図５】実施の形態２にかかるシミュレーション装置が動作を模擬する機械システムで用いられるシーケンスプログラムを説明するための図
【図６】実施の形態３にかかるシミュレーション装置の構成を示す図
【図７】実施の形態３にかかるシミュレーション装置が用いるニューラルネットワークを説明するための図
【図８】実施の形態４にかかるシミュレーション装置の構成を示す図
【図９】実施の形態４にかかるシミュレーション装置がモデルの簡略化によって新たなモデルを生成する処理を説明するための図
【図１０】実施の形態５にかかるシミュレーション装置の構成を示す図
【図１１】実施の形態５にかかるシミュレーション装置が用いるニューラルネットワークを説明するための図
【図１２】実施の形態６にかかるシミュレーション装置によって動作がシミュレーションされる機械システムの構成を示す図
【図１３】実施の形態６にかかるシミュレーション装置の構成を示す図
【図１４】実施の形態１にかかるシミュレーション装置を実現するハードウェア構成例を示す図
【発明を実施するための形態】
【００１１】
以下に、本開示の実施の形態にかかるシミュレーションプログラム、シミュレーション装置、およびシミュレーション方法を図面に基づいて詳細に説明する。
【００１２】
実施の形態１．
図１は、実施の形態１にかかるシミュレーション装置によって動作がシミュレーションされる機械システムの構成を示す図である。実施の形態１では、シミュレーション装置が、図１に示す３軸のモータを有する機械システム２０Ａの動作を模擬する処理であるシミュレーションを実行する場合について説明する。
【００１３】
機械システム２０Ａは、モータで駆動される機械１と、機械１を制御するコントローラ１０Ａとを備えている。また、機械１は、ステージ５と、ヘッド６とを有している。以下の説明では、ステージ５の上面と平行な面内の２つの方向であって互いに直交する２つの方向をＸ方向およびＹ方向とする。また、Ｘ方向およびＹ方向に直交する方向をＺ方向とする。
【００１４】
機械１は、Ｘ方向に延びるＸ軸１ａと、Ｙ方向に延びるＹ軸１ｂと、Ｚ方向に延びるＺ軸１ｃとからなる３軸のモータを有している。
【００１５】
ステージ５は、Ｘ軸１ａおよびＹ軸１ｂに接続されており、Ｘ軸１ａの動作およびＹ軸１ｂの動作によって、ＸＹ平面内を移動する。ヘッド６は、Ｚ軸１ｃに接続されており、Ｚ軸１ｃの動作によって、Ｚ軸１ｃ方向に移動する。
【００１６】
コントローラ１０Ａは、Ｘ軸１ａの動作およびＹ軸１ｂの動作を制御することによって、ステージ５のＸ方向およびＹ方向の位置を制御する。また、コントローラ１０Ａは、Ｚ軸１ｃの動作を制御することによって、Ｚ軸１ｃの先端に取り付けられたヘッド６のＺ方向の位置を制御する。機械１は、ステージ５上に載置されたワークＷｐに対し、ヘッド６によって加工を施す。
【００１７】
また、機械システム２０Ａには、モータドライバ（図示せず）が搭載されている。機械システム２０Ａでは、コントローラ１０Ａが、モータドライバを制御し、モータドライバが各軸のモータを駆動および制御する。コントローラ１０Ａの例は、プログラマブルロジックコントローラ、産業用パーソナルコンピュータ、サーボシステムコントローラなどである。
【００１８】
図２は、実施の形態１にかかるシミュレーション装置の構成を示す図である。シミュレーション装置１１は、機械システム２０Ａの動作を模擬するコンピュータである。
【００１９】
シミュレーション装置１１は、モデル選択部１２と、モデルライブラリ１３と、モデル演算部１４とを備えている。モデル選択部１２は、外部から与えられる抽象度設定に基づいて、モデルライブラリ１３に格納されているモデルの候補の中から抽象度設定に対応するモデルを選択する。
【００２０】
抽象度設定は、シミュレーションの抽象度を示す情報である。換言すると、抽象度設定は、予め用意されたシミュレーションの選択肢の中から１つを選択するための情報である。すなわち、抽象度設定には、モデルの抽象度を決定する情報が含まれている。抽象度設定は、シミュレーション装置１１のユーザによってモデル選択部１２に入力される。
【００２１】
抽象度設定は、シミュレーションの目的を示す情報であってもよいし、抽象度を数値で示した情報であってもよい。抽象度設定が抽象度を数値で示した情報である場合、抽象度の数値が大きいほどシミュレーションの抽象度が高く、簡略化されたシミュレーションに対応する。なお、抽象度設定は、シミュレーションの用途を示す情報であってもよい。
【００２２】
モデル選択部１２は、抽象度設定と、選択するモデルとの対応関係を示す対応関係情報を記憶しておく。モデル選択部１２が選択するモデルは、シミュレーションの目的に対応するモデルである。したがって、対応関係情報は、抽象度設定と、シミュレーションの目的に対応するモデルとが対応付けされた情報であるともいえる。モデル選択部１２は、対応関係情報に基づいて、抽象度設定に対応するモデルを選択する。
【００２３】
モデルライブラリ１３は、複数の異なる抽象度のドライバモデルを記憶しておく。実施の形態１では、モデルライブラリ１３が記憶しておくドライバモデルがドライバモデルＤ１，Ｄ２の２つである場合について説明する。
【００２４】
ドライバモデルＤ１，Ｄ２は、モータドライバの動作を模擬するモデルである。ドライバモデルＤ１は、ドライバモデルＤ２よりも高精度にモータドライバの動作を模擬するモデルである。ドライバモデルＤ１は、例えば、フィードフォワード制御器、位置フィードバック制御器、速度フィードバック制御器、電流制御器などの機能を模擬する。また、ドライバモデルＤ２は、ドライバモデルＤ１よりも簡易的にモータドライバの動作を模擬するモデルである。ドライバモデルＤ２は、例えば、フィードフォワード制御器の機能のみを模擬する。
【００２５】
また、モデルライブラリ１３は、複数の異なる抽象度の機械モデルを記憶しておく。実施の形態１では、モデルライブラリ１３が記憶しておく機械モデルが機械モデルＭ１，Ｍ２の２つである場合について説明する。
【００２６】
機械モデルＭ１，Ｍ２は、機械１の動作を模擬するモデルである。機械モデルＭ１は、機械モデルＭ２よりも高精度に機械１の動作を模擬するモデルである。機械モデルＭ１は、例えば、機械１の振動特性などを模擬する。また、機械モデルＭ２は、機械モデルＭ１よりも簡易的に機械１の動作を模擬するモデルである。機械モデルＭ２は、例えば、ステージ５およびヘッド６の動作範囲を模擬する。ドライバモデルＤ１，Ｄ２、および機械モデルＭ１，Ｍ２の詳細については後述する。
【００２７】
なお、モデル選択部１２は、ドライバモデルおよび機械モデルのうち、少なくとも一方のモデルを選択すればよい。モデル選択部１２は、例えば、ドライバモデルのみを選択してもよいし、機械モデルのみを選択してもよい。換言すると、モデルライブラリ１３が保持している機械モデルの候補およびドライバモデルの候補の少なくとも一方は複数である。機械モデルの候補が複数である場合には、機械モデルの候補には、１つの機械を異なる抽象度で模擬する複数の機械モデルが含まれている。ドライバモデルの候補が複数である場合には、ドライバモデルの候補には、１つのモータドライバを異なる抽象度で模擬する複数のドライバモデルが含まれている。
【００２８】
モデル選択部１２は、複数のドライバモデルの中からドライバモデルのみを選択する場合には、固定された１つの機械モデルを選択する。一方、モデル選択部１２は、複数の機械モデルの中から機械モデルのみを選択する場合には、固定された１つのドライバモデルを選択する。
【００２９】
また、モデル選択部１２は、ドライバモデルと機械モデルとの組み合わせを選択してもよい。この場合、モデル選択部１２は、抽象度設定と、選択するモデルの組み合わせとの対応関係を示す対応関係情報を記憶しておく。実施の形態１では、モデル選択部１２が、ドライバモデルと機械モデルとの組み合わせを選択する場合について説明する。以下の説明では、ドライバモデルと機械モデルとの組み合わせを、モデル組という場合がある。モデル選択部１２は、モデルライブラリ１３から選択したモデル組をモデル演算部１４に通知する。
【００３０】
モデル組は、シミュレーションの目的に対応している。実施の形態１では、シミュレーションとして２種類の選択肢が用意されている場合について説明する。シミュレーション装置１１は、例えば、機械システム２０Ａの可動部の可動範囲を確認するためのシミュレーションを実行したい場合には、可動部を駆動するモータ、およびモータを駆動するモータドライバのモデルが必要となる。この場合のシミュレーション装置１１は、機微な振動特性、モータの制御応答特性まで高精度に模擬する必要は無く、モータのモデル、ドライバモデル、および機械モデルは抽象化してもよい。
【００３１】
一方、ユーザが、モータを多数搭載する多軸装置のモータドライバの制御パラメータを調整するためには、調整対象のモータドライバ、モータ、および機械１の精緻なモデルが必要となる。この場合のシミュレーション装置１１は、調整対象ではないモータドライバ、モータについては精緻なモデルは必要ではない。
【００３２】
また、プログラマブルロジックコントローラ、産業用パーソナルコンピュータ、サーボシステムコントローラなどの機械システム２０Ａが備えるコントローラ１０Ａのシーケンスプログラムをデバッグするためのシミュレーションが行われる場合がある。この場合、シミュレーション装置１１は、シーケンスプログラムの実行周期、実行順序を精確に模擬するモデルを必要とするが、機械１の振動特性などは簡略化してもよい。その他、モータで駆動される機械システム２０Ａの熱解析のためのシミュレーション、電力消費量解析のシミュレーションなど、シミュレーションの目的は多岐にわたり、これらの個々の目的を達成する範囲で適切な抽象度のモデルを用いて簡易的にシミュレーションを行うことが望まれる。
【００３３】
したがって、シミュレーション装置１１は、種々のシミュレーションの目的に対応する種々のモデルを格納しておき、選択されたシミュレーションの目的に対応するモデルを用いてシミュレーションを実行する。
【００３４】
実施の形態１では、例えば、シミュレーションの選択肢として、ステージ５およびヘッド６の動作範囲の確認を目的とするシミュレーションと、ステージ５を移動させるモータドライバのパラメータ調整を目的とするシミュレーションとの２種類が用意されている場合について説明する。
【００３５】
モデル選択部１２は、抽象度設定に基づいて、シミュレーションの目的に合ったモデルをモデルライブラリ１３から選択する。ここで、モデルライブラリ１３が保持しておく複数の機械モデルＭ１，Ｍ２は、共通のインターフェースを有するソフトウェアである。すなわち、機械モデルＭ１，Ｍ２は、入出力を共通の情報としたソフトウェアである。
【００３６】
ユーザは、例えば、モータ位置、モータ速度などのモータの情報をまとめて格納するオブジェクトを定義しておき、このオブジェクトを機械モデルの共通のインターフェースの入力としてもよい。また、ユーザは、ステージ５の位置、ヘッド６の位置、モータに与える外力、機械１の発熱などの情報をまとめたオブジェクトを定義しておき、このオブジェクトを機械モデルの共通インターフェースの出力としてもよい。この場合の、入出力の種類は、変数型であってもよいし、構造体型であってもよい。機械モデルの共通インターフェースは、１つの機械１を模擬する異なる機械モデルＭ１，Ｍ２間で共通化されていればよい。なお、機械モデルの共通インターフェースへの入出力仕様は、実施の形態１で説明した内容に限定されるものではない。
【００３７】
実施の形態１では、機械モデルＭ１，Ｍ２の共通インターフェースが、Ｘ軸１ａのモータ位置と、Ｙ軸１ｂのモータ位置と、Ｚ軸１ｃのモータ位置とを取得可能な入力インターフェースを有しているものとする。
【００３８】
機械モデルＭ１は、例えば、機械１のダイナミクスを考慮するモデルであり、機械１の振動特性を模擬する。機械モデルＭ２は、例えば、機械１のダイナミクスは考慮せずモータ位置に基づくキネマティクスのみによってステージ５の位置およびヘッド６の位置を変更し、ステージ５およびヘッド６の動作範囲を模擬する。なお、機械モデルＭ２は、ステージ５およびヘッド６のうちの一方の動作範囲のみを模擬してもよい。
【００３９】
モデル演算部１４は、モデル選択部１２から通知されたモデル組に対応するドライバモデルおよび機械モデルをモデルライブラリ１３から読み出す。モデル演算部１４は、読み出したドライバモデルおよび機械モデルを用いて、モータドライバおよび機械１のシミュレーション演算を行う。
【００４０】
モデル演算部１４は、モデルライブラリ１３から選択されたモデルを含めた機械システム２０Ａのモデルの演算を実施する。例えば、機械システム２０Ａのモデルにモータモデルおよびコントローラモデルが含まれているとする。モータモデルは、モータの動作を模擬するモデルであり、コントローラモデルは、コントローラ１０Ａの動作を模擬するモデルである。この場合、モデル演算部１４は、Ｘ軸１ａに対応するドライバモデルおよびモータモデルと、Ｙ軸１ｂに対応するドライバモデルおよびモータモデルと、Ｚ軸１ｃに対応するドライバモデルおよびモータモデルと、機械モデルと、さらにモータドライバに対してモータの位置指令を与えるコントローラモデルとを含めて機械システム２０Ａのモデルとする。モデル演算部１４は、モータモデルおよびコントローラモデルを、モデルライブラリ１３から取得してもよいし、モデルライブラリ１３以外から取得してもよい。モデル演算部１４は、シミュレーション結果を表示装置などの外部装置に出力する。これにより、表示装置が、シミュレーション結果を表示する。
【００４１】
次に、シミュレーション装置１１によるシミュレーションの処理手順について説明する。図３は、実施の形態１に係るシミュレーション装置によるシミュレーションの処理手順を示すフローチャートである。
【００４２】
シミュレーション装置１１のモデル選択部１２は、ユーザによって入力される抽象度設定を受け付ける（ステップＳ１０）。モデル選択部１２は、抽象度設定に基づいて、モデルライブラリ１３からモデル組を選択する（ステップＳ２０）。モデル選択部１２は、例えば、ドライバモデルＤ１，Ｄ２の何れかと、機械モデルＭ１，Ｍ２の何れかと、の２つのモデルからなるモデル組を選択する。
【００４３】
モデル選択部１２は、選択したモデル組をモデル演算部１４に通知する。モデル演算部１４は、モデル選択部１２によって選択されたモデル組をモデルライブラリ１３から読み出す（ステップＳ３０）。
【００４４】
モデル演算部１４は、読み出したモデル組を用いて機械システム２０Ａの動作をシミュレーションする（ステップＳ４０）。モデル演算部１４は、シミュレーション結果を表示装置などに出力する（ステップＳ５０）。これにより、ユーザは、シミュレーション結果を確認することが可能となる。
【００４５】
次に、実施の形態１におけるシミュレーション装置１１の詳細な動作について説明する。まず、抽象度設定として、ステージ５およびヘッド６の動作範囲の確認を目的とするシミュレーションを、ユーザが選択する場合を考える。
【００４６】
モデル選択部１２の対応関係情報には、ステージ５およびヘッド６の動作範囲の確認を目的とするシミュレーションが選択された場合には、Ｘ軸１ａ、Ｙ軸１ｂ、およびＺ軸１ｃに対応する３つのドライバモデルＤ２と、機械モデルＭ２とを選択することが予め定められているとする。この場合において、ステージ５およびヘッド６の動作範囲の確認を目的とするシミュレーションに対応する抽象度設定がユーザに指定されると、モデル選択部１２は、抽象度設定および対応関係情報に基づいて、Ｘ軸１ａ、Ｙ軸１ｂ、およびＺ軸１ｃに対応するドライバモデルとしてドライバモデルＤ２を選択する。また、モデル選択部１２は、機械モデルとして機械モデルＭ２を選択する。
【００４７】
モデル演算部１４は、これらの選択したモデル組、すなわちドライバモデルＤ２および機械モデルＭ２を用いてヘッド６の位置であるヘッド位置の動作を模擬するシミュレーションを実行する。このとき、モデル演算部１４は、コントローラモデルが生成するＸ軸１ａの位置指令を、Ｘ軸１ａのドライバモデルＤ２に入力する。この場合、ドライバモデルＤ２は、フィードフォワード制御のみによってＸ軸１ａのモータ位置を模擬制御する。モデル演算部１４は、Ｙ軸１ｂおよびＺ軸１ｃについてもＸ軸１ａと同様に、コントローラモデルが生成する位置指令をドライバモデルＤ２に入力する。この場合、ドライバモデルＤ２は、フィードフォワード制御のみによってＹ軸１ｂおよびＺ軸１ｃのモータ位置を模擬制御する。これにより、モデル演算部１４は、ドライバモデルＤ２を用いて、Ｘ軸１ａ、Ｙ軸１ｂ、およびＺ軸１ｃのモータ位置を演算する。
【００４８】
モデル演算部１４は、こうして演算したＸ軸１ａ、Ｙ軸１ｂ、およびＺ軸１ｃのモータ位置を入力として機械モデルＭ２の演算を行う。ここでは、機械モデルとして機械モデルＭ２が選択されているので、各軸のモータ位置からキネマティクスのみによってステージ位置およびヘッド位置が計算される。これにより、モデル演算部１４は、ステージ５およびヘッド６の動作範囲を模擬することができる。モデル演算部１４は、ステージ５およびヘッド６の動作範囲をシミュレーションの結果として出力する。
【００４９】
次に、抽象度設定として、ステージ５のモータドライバのパラメータ調整を目的とするシミュレーションを、ユーザが選択する場合を考える。
【００５０】
モデル選択部１２の対応関係情報には、ステージ５のモータドライバのパラメータ調整を目的とするシミュレーションが選択された場合には、Ｘ軸１ａおよびＹ軸１ｂに対応するドライバモデルとしてドライバモデルＤ１を選択することが予め定められているとする。また、対応関係情報には、ステージ５のモータドライバのパラメータ調整を目的とするシミュレーションが選択された場合には、Ｚ軸１ｃに対応するドライバモデルとしてドライバモデルＤ２を選択し、機械モデルとして機械モデルＭ１を選択することが予め定められているとする。この場合において、ステージ５のモータドライバのパラメータ調整を目的とするシミュレーションがユーザに指定されると、モデル選択部１２は、抽象度設定および対応関係情報に基づいて、Ｘ軸１ａおよびＹ軸１ｂに対応するドライバモデルとしてドライバモデルＤ１を選択する。また、モデル選択部１２は、Ｚ軸１ｃに対応するドライバモデルとしてドライバモデルＤ２を選択する。また、モデル選択部１２は、機械モデルとして機械モデルＭ１を選択する。
【００５１】
モデル演算部１４は、これらの選択したモデル、すなわちドライバモデルＤ１，Ｄ２および機械モデルＭ１を用いてヘッド位置の動作を模擬するシミュレーションを実行する。このとき、モデル演算部１４は、コントローラモデルが生成するＸ軸１ａの位置指令をＸ軸１ａのドライバモデルＤ１に入力する。この場合、ドライバモデルＤ１は、フィードフォワード制御器、位置フィードバック制御器、速度フィードバック制御器、および電流制御器によってモータ位置を模擬制御する。機械１には、位置フィードバック制御器、速度フィードバック制御器として、例えばＰＩ（Proportional-Integral、比例−積分）制御器が実装されている。この場合、それぞれの比例ゲインおよび積分ゲインが、制御パラメータとなっており、これらの制御パラメータが変更されることでＸ軸１ａのモータの位置制御性能が変更される。
【００５２】
Ｘ軸１ａと同様に、Ｙ軸１ｂのドライバモデルはドライバモデルＤ１であるので、制御パラメータに基づいてＹ軸１ｂのモータの位置制御性能が変更される。また、Ｚ軸１ｃのモータドライバモデルはドライバモデルＤ２であるので、フィードフォワード制御のみによってモータ位置が制御される。
【００５３】
また、機械モデルとしては、振動特性を模擬する機械モデルＭ１が選択されている。このため、モータの動作によって機械１に振動などが生じる。したがって、モデル演算部１４は、ステージ位置をシミュレーション結果として出力する。これにより、ユーザはステージ５の振動の有無を確認することができる。また、ユーザは、シミュレーション結果である機械１の振動の有無を確認しつつステージ５の振動が生じないようにＸ軸１ａおよびＹ軸１ｂの制御パラメータを調整することができる。
【００５４】
このように、実施の形態１では、ユーザが例えば２種類といった複数種類のシミュレーションの目的から何れかの目的を選択し、抽象度設定としてシミュレーション装置１１に入力している。モデル選択部１２は、抽象度設定および対応関係情報に基づいて、モデルライブラリ１３に保持されているモデルの中からシミュレーションに必要な精度を有しつつ必要な計算量が所定量よりも小さくなるような、適切な抽象度のモデルを選択している。
【００５５】
例えば、ヘッド６およびステージ５の動作範囲の確認を目的とするシミュレーションが選択された場合、モデル選択部１２は、機械モデルＭ２およびドライバモデルＤ２を選択する。機械モデルＭ２は、キネマティクスのみに基づいてモータ位置に対応するステージ位置およびヘッド位置を計算する。この機械モデルＭ２には、モータ位置に対する外力などのダイナミクスの影響は含まれないので、フィードバック制御によってモータ位置を制御するような模擬は必要が無い。このため、モデル選択部１２は、機械モデルＭ２を選択する場合には、フィードフォワード制御のみの簡易的なドライバモデルＤ２を選択している。
【００５６】
これにより、シミュレーション装置１１は、機械１のダイナミクス、またはフィードバック制御に係る複雑な微分方程式を演算する必要が無くなり、モデル演算部１４の演算は非常に簡単なものになる。このため、シミュレーション装置１１は、精緻なモデルのシミュレーションを実行する場合の微分方程式を演算する場合に比べて非常に小さい計算コストで、ヘッド６とステージ５の動作範囲を確認することができる。すなわち、シミュレーション装置１１は、シミュレーションの目的を満たすための適切な抽象度のモデルを用いたシミュレーションを、計算コストを小さく抑えたうえで実行することができる。
【００５７】
一方、ステージ５のモータドライバのパラメータ調整を目的とするシミュレーションが選択された場合、モデル選択部１２は、ステージ５を駆動するＸ軸１ａおよびＹ軸１ｂに対応するドライバモデルとして詳細な模擬を実行するドライバモデルＤ１を選択する。また、モデル選択部１２は、機械モデルとして精緻な模擬を実行する機械モデルＭ１を選択する。モデル選択部１２は、Ｘ軸１ａおよびＹ軸１ｂのモータドライバの制御性能に影響を与えないＺ軸１ｃのドライバモデルについては簡易なドライバモデルであるドライバモデルＤ２を選択する。
【００５８】
そして、ユーザはシミュレーション結果として出力されるステージ５の振動を確認しながらＸ軸１ａおよびＹ軸１ｂのパラメータを調整する。この場合において、シミュレーション装置１１は、Ｘ軸１ａ、Ｙ軸１ｂ、およびステージ５の動作については精緻なモデルをシミュレーションに用いているので、ユーザは、正確にパラメータの調整を行うことができる。この場合の精緻なモデルは計算量が大きいモデルであるが、シミュレーション装置１１は、Ｘ軸１ａおよびＹ軸１ｂのモータドライバの制御パラメータの調整に対して考慮する必要がないＺ軸１ｃの動作については、簡略化されたモデルを用いる。したがって、シミュレーション装置１１は、Ｚ軸１ｃの動作のシミュレーションについては計算量を抑えることができる。すなわち、シミュレーション装置１１は、シミュレーションの目的を満たすための適切な抽象度のモデルを用いたシミュレーションを、計算コストを小さく抑えたうえで実行することができる。
【００５９】
このように、ユーザが何れの抽象度設定を指定した場合であっても、シミュレーション装置１１は、抽象度設定に基づいてシミュレーションの目的に応じた適切な抽象度のモデルを選択することができるので、計算効率の良いシミュレーションを簡易的に実現できる。
【００６０】
例えば、モータで駆動される機械１がパラメータ調整される際には、パラメータが変更されながら何度もシミュレーションが実行されるのでシミュレーションの計算コストおよび時間コストを小さく抑えることが求められる。実施の形態１のシミュレーション装置１１は、パラメータが変更されて何度もシミュレーションが実行される場合であっても、抽象度設定に基づいてシミュレーションの目的に応じた適切な抽象度のモデルを選択することができるので、計算コストおよび時間コストを小さく抑えることができる。
【００６１】
ここで実施の形態１における機械モデルＭ１，Ｍ２が共通のインターフェースを有していることの効果について説明する。モータドライバのパラメータ調整の途中で、例えばモータドライバのパラメータをいかに調整しても機械システム２０Ａの望ましい動作仕様を満たすことができず、やむなく機械１の構造、材質などの変更が必要となる場合がある。また、例えば機械１の動作特性が機械１の設置環境の温度または湿度の影響を受けて変化することが新たに判明し、これらの影響を組み込んだ新たな機械モデルでないと必要な模擬精度を達成できない場合がある。
【００６２】
これらのような場合には、ユーザが新たに機械モデルを作成することとなる。その際に、機械モデルの共通インターフェースの仕様に準じた新たな機械モデルが作成されれば、モデル演算部１４において機械モデルを入れ替えるだけで新たな機械システム２０Ａのシミュレーションを実行することができる。すなわち、機械モデルの入れ替えの際に、モデル間の演算を実行するプログラムの追加または変更が不要となる。このように、機械モデルが共通のインターフェースを有していることで、シミュレーション装置１１は、シミュレーションの目的に応じた適切なシミュレーションを簡易的に実行することができる。
【００６３】
実施の形態１では、説明の簡単のために抽象度設定として２種類のシミュレーションの目的の何れかを選択する場合について説明をしたが、３種類以上のシミュレーションの目的の何れかが選択されてもよい。
【００６４】
また、シミュレーション装置１１は、実施の形態１の説明で挙げたシミュレーションの目的の他に、例えば、Ｚ軸１ｃのモータドライバのパラメータを調整することを目的として、Ｚ軸１ｃのモータドライバにドライバモデルＤ１を選択してもよい。この場合、シミュレーション装置１１は、Ｘ軸１ａおよびＹ軸１ｂのモータドライバにドライバモデルＤ２を選択し、機械モデルとして機械モデルＭ１を選択してもよい。これにより、ユーザは、Ｚ軸１ｃのモータドライバの制御パラメータの調整を効率良く行うことができる。
【００６５】
また、実施の形態１ではモータドライバの制御パラメータがＰＩ制御のゲインである場合について説明したが、モータドライバの制御パラメータはＰＩ制御のゲインに限らない。シミュレーション装置１１は、フィードバック制御器にノッチフィルタまたはローパスフィルタを加えてこれらの遮断周波数を制御パラメータとしてもよい。また、シミュレーション装置１１は、フィードフォワード制御器の応答帯域を制御パラメータとしてもよい。
【００６６】
なお、実施の形態１ではモータモデルについては１種類のみとしたが、モータモデルについて複数の異なる抽象度のモデルをモデルライブラリ１３に保持しておいてもよい。この場合、モデル選択部１２は、抽象度設定および対応関係情報に基づいて、モデルライブラリ１３からモータモデルを選択する。例えば、モータモデルのうち高精度なモデルは、固定子および回転子のモデルを含み、回転子の偏心、コギングなどを模擬する。一方、簡易なモータモデルは、モータドライバの位置指令の通りに回転子が動作するモデルとしてもよい。
【００６７】
また、シミュレーション装置１１は、ドライバモデルについては、ドライバモデルＤ１よりも高精度なドライバモデルをモデルライブラリ１３で保持しておいてもよい。この高精度なドライバモデルは、例えば、ＰＷＭ（Pulse  Width  Modulation、パルス幅変調）制御器、インバータのスイッチング回路などを模擬するドライバモデルであってもよい。
【００６８】
また、シミュレーション装置１１は、ドライバモデルＤ２よりも簡易なドライバモデルをモデルライブラリ１３で保持しておいてもよい。この簡易なドライバモデルは、コントローラ１０Ａから受け取った位置指令を遅延させるだけの無駄時間要素を有するドライバモデルであってもよいし、ローパスフィルタのみを作用させるようなドライバモデルであってもよい。
【００６９】
また、実施の形態１では、ドライバモデルが位置制御を行う場合について説明したが、ドライバモデルは、速度制御、トルク制御などを行うドライバモデルであってもよい。
【００７０】
また、シミュレーション装置１１のうちモデル選択部１２およびモデル演算部１４と、モデルライブラリ１３とは必ずしも１つのハードウェアに実装されている必要はない。例えば、シミュレーション装置１１の構成要素のうち、モデルライブラリ１３がクラウドサーバに実装されていてもよい。
【００７１】
また、シミュレーション装置１１は、機械システム２０Ａの全体の動作を模擬せず、機械１の動作を模擬してもよい。すなわち、シミュレーション装置１１は、コントローラ１０Ａの動作を模擬しなくてもよい。
【００７２】
このように、実施の形態１では、シミュレーション装置１１が、抽象度設定に基づいて、複数の機械モデルの候補と、複数のドライバモデルの候補とを保持するモデルライブラリ１３から、機械１の動作を模擬する際に用いる機械モデルと、モータドライバの動作を模擬する際に用いるドライバモデルとを選択して機械システム２０Ａの動作を模擬している。これにより、ユーザが何れの抽象度設定を指定した場合であっても、シミュレーション装置１１は、抽象度設定に基づいてシミュレーションの目的に応じた適切な抽象度のモデルを選択することができる。したがって、シミュレーション装置１１は、計算効率の良いシミュレーションを簡易的に実現することができる。
【００７３】
また、機械モデルＭ１，Ｍ２が共通インターフェースを持つので、機械モデルＭ１，Ｍ２が変更される際に、ユーザが、モデル間の演算を実行するプログラムの追加または変更をする必要がない。また、ユーザが自作した機械モデルも共通インターフェースを用いて作成されていれば、モデルライブラリ１３に登録して使用することが可能となる。
【００７４】
実施の形態２．
次に、図４および図５を用いて実施の形態２について説明する。実施の形態２のシミュレーション装置は、ドライバモデルおよび機械モデルの選択に加えて、抽象度の異なる複数のコントローラモデルの中からシミュレーションの目的に応じたコントローラモデルを選択する。
【００７５】
図４は、実施の形態２にかかるシミュレーション装置の構成を示す図である。図４の各構成要素のうち図２に示す実施の形態１のシミュレーション装置１１と同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【００７６】
実施の形態２でシミュレーションの対象として扱う機械システムは、実施の形態１と同様の機械システム２０Ａである。すなわち、シミュレーション装置２１は、シミュレーション装置１１と同様に、機械システム２０Ａの動作を模擬する。実施の形態２においても、ユーザに指定される抽象度設定によって２つのシミュレーションの目的のうちの何れかが指定される。
【００７７】
シミュレーション装置２１で選択されるシミュレーションの１つは、実施の形態１と同様に機械システム２０Ａのステージ５を駆動するモータドライバの制御パラメータの調整を目的としている。選択されるシミュレーションのうちのもう１つは、ステージ５およびヘッド６の運転順序を定めるシーケンスプログラムの動作確認を目的としている。
【００７８】
シミュレーション装置２１は、モデル選択部２２と、モデルライブラリ２３と、モデル演算部２４とを備えている。
【００７９】
モデル選択部２２は、モデル選択部１２と同様の機能を有している。また、モデルライブラリ２３は、モデルライブラリ１３と同様の機能を有し、モデル演算部２４は、モデル演算部１４と同様の機能を有している。
【００８０】
モデル選択部２２は、モデル選択部１２と同様に、抽象度設定と、モデル組との対応関係を示す対応関係情報を記憶しておく。実施の形態２における対応関係情報のモデル組には、ドライバモデルと、機械モデルと、コントローラモデルとが含まれている。
【００８１】
モデル選択部２２は、モデル選択部１２と同様に、外部から与えられる抽象度設定に基づいて、モデルライブラリ２３に格納されているモデルの中から抽象度設定に対応するモデル組を選択する。すなわち、モデル選択部２２は、抽象度設定に基づいて、シミュレーションの目的に合ったモデルをモデルライブラリ２３から選択する。モデル選択部２２が選択するモデル組は、ドライバモデルと、機械モデルと、コントローラモデルとの組み合わせである。
【００８２】
抽象度設定は、シミュレーション装置２１のユーザによってモデル選択部２２に入力される。実施の形態２の抽象度設定では、上述した２種類の選択肢のうちの何れかが指定されている。
【００８３】
モデルライブラリ２３は、モデルライブラリ１３と同様に、複数の異なる抽象度のドライバモデルと、複数の異なる抽象度の機械モデルとを記憶しておく。また、モデルライブラリ２３は複数の異なる抽象度のコントローラモデルを記憶しておく。なお、実施の形態２でも、機械モデルＭ１，Ｍ２は共通のインターフェースを有するソフトウェアである。
【００８４】
実施の形態２では、モデルライブラリ２３が記憶しておくコントローラモデルがコントローラモデルＣ１，Ｃ２の２つである場合について説明する。コントローラモデルＣ１，Ｃ２は、機械システム２０Ａが備えるコントローラ１０Ａの動作を模擬するモデルである。コントローラモデルＣ１は、コントローラモデルＣ２よりも高精度にコントローラ１０Ａの動作を模擬するモデルである。また、コントローラモデルＣ２は、コントローラモデルＣ１よりも簡易的にコントローラ１０Ａの動作を模擬するモデルである。
【００８５】
コントローラモデルＣ１，Ｃ２は、機械システム２０Ａが備えるコントローラ１０Ａのモデルである。コントローラ１０Ａの例は、前述したように、プログラマブルロジックコントローラ、産業用パーソナルコンピュータ、サーボシステムコントローラなどである。コントローラ１０Ａは、ステージ５の位置決め動作完了信号を受けた後に、ヘッド６の位置決め開始信号をオンにするシーケンスプログラムを実行する。
【００８６】
コントローラモデルＣ１は、コントローラ１０Ａが実行するシーケンスプログラムに対応する処理を正確に模擬する。コントローラモデルＣ１は、ステージ５の位置決め動作完了信号を待つシーケンスプログラムを一定の処理周期で実行し、ステージ５の位置決め動作完了信号が得られたら次の処理でヘッド６の位置決め開始信号をオンにして位置指令を生成する処理を模擬する。
【００８７】
コントローラモデルＣ２は、コントローラ１０Ａが実行する処理を簡略化して模擬する。コントローラモデルＣ２は、各モータの位置指令を生成する処理のみを模擬する。
【００８８】
モデル演算部２４は、モデル選択部２２から通知されたモデル組に対応するドライバモデル、機械モデル、およびコントローラモデルをモデルライブラリ２３から読み出す。モデル演算部２４は、読み出したドライバモデル、機械モデル、およびコントローラモデルを用いて、モータドライバ、機械１、およびコントローラ１０Ａのシミュレーション演算を行う。
【００８９】
モデル演算部２４は、モデルライブラリ２３から選択されたモデル組を含めた機械システム２０Ａのモデルの演算を実施する。例えば、機械システム２０Ａのモデルにモータモデルが含まれているとする。この場合、モデル演算部２４は、Ｘ軸１ａに対応するドライバモデルおよびモータモデルと、Ｙ軸１ｂに対応するドライバモデルおよびモータモデルと、Ｚ軸１ｃに対応するドライバモデルおよびモータモデルと、機械モデルと、コントローラモデルとを含めて機械システム２０Ａのモデルとする。
【００９０】
シミュレーション装置２１によるシミュレーションの処理手順は、図３で説明したシミュレーション装置１１によるシミュレーションの処理手順と同様であるので、その説明は省略する。
【００９１】
次に、実施の形態２におけるシミュレーション装置２１の詳細な動作について説明する。まず、抽象度設定として、ステージ５のモータドライバのパラメータ調整を目的とするシミュレーションを、ユーザが選択する場合を考える。
【００９２】
この場合、モデル選択部２２は、抽象度設定に基づいて、例えば、Ｘ軸１ａおよびＹ軸１ｂに対応する３つのドライバモデルＤ１と、Ｚ軸１ｃに対応するドライバモデルＤ２と、機械モデルＭ１とを選択する。また、モデル選択部２２は、例えば、抽象度設定に基づいて、コントローラモデルＣ２を選択する。このときのシミュレーション装置２１の動作は、実施の形態１のシミュレーション装置１１が、抽象度設定として、ステージ５のモータドライバのパラメータ調整を目的とするシミュレーションを、ユーザが選択する場合の動作と同様である。
【００９３】
次に、抽象度設定として、ステージ５とヘッド６との運転順序を定めるシーケンスプログラムの動作確認を目的とするシミュレーションを、ユーザが選択する場合を考える。
【００９４】
この場合、モデル選択部２２は、抽象度設定に基づいて、例えば、Ｘ軸１ａ、Ｙ軸１ｂ、およびＺ軸１ｃに対応する３つのドライバモデルＤ２と、機械モデルＭ２と、コントローラモデルＣ１とを選択する。
【００９５】
図５は、実施の形態２にかかるシミュレーション装置が動作を模擬する機械システムで用いられるシーケンスプログラムを説明するための図である。図５では、シーケンスプログラムによって実行される処理の手順が示されている。
【００９６】
図５に示すシーケンスプログラム２５には、ブロックＢＬ１０，ＢＬ２０，ＢＬ３０の各処理が実装されている。シーケンスプログラム２５では、コントローラ１０Ａの演算周期ごとに１ブロックずつの処理が演算されるものとする。
【００９７】
コントローラ１０Ａが、シーケンスプログラム２５の実行を開始すると、ステージ５の位置決めが開始される（ブロックＢＬ１０）。シーケンスプログラム２５では、ステージ５の位置決めが完了したか否かが判定される（ブロックＢＬ２０）。
【００９８】
ステージ５の位置決めが完了していない場合（ブロックＢＬ２０、Ｎｏ）、コントローラ１０Ａは、ステージ５の位置決めが完了するまで次の処理に進まず待機する。すなわち、ブロックＢＬ２０は、ステージ５の位置決め完了のビットがＯＮとなるまで、次のブロックの処理には遷移しない仕様となっている。
【００９９】
ステージ５の位置決めが完了すると（ブロックＢＬ２０、Ｙｅｓ）、コントローラ１０Ａは、ヘッド６の位置決めを開始する（ブロックＢＬ３０）。
【０１００】
コントローラモデルＣ１は、この図５に示したシーケンスプログラム２５の処理を模擬する。具体的には、コントローラモデルＣ１が、ブロックＢＬ１０の処理を模擬すると、すなわち、ステージ５の位置決めが開始されると、ステージ５を駆動するＸ軸１ａおよびＹ軸１ｂのドライバモデルに位置指令が与えられる。
【０１０１】
この後、コントローラモデルＣ１は、ブロックＢＬ２０の処理に遷移する。Ｘ軸１ａおよびＹ軸１ｂのドライバモデルは、ドライバモデルＤ２であり、Ｘ軸１ａおよびＹ軸１ｂの機械モデルは、機械モデルＭ２である。また、Ｘ軸１ａおよびＹ軸１ｂの機械モデルは、機械モデルＭ２であるので、コントローラモデルＣ１は、機械１の精密な振動特性などは模擬しない。シーケンスプログラム２５では、ステージ５への全ての位置指令が払い出されるまでの間はステージ５の位置決めは完了しないので、１回の演算周期では、ブロックＢＬ２０においてステージ５の位置決めが完了したとの判定は下されない。
【０１０２】
ステージ５の位置決めが完了すると、コントローラモデルＣ１は、コントローラ１０Ａの次の演算周期においてブロックＢＬ３０の処理へと遷移する。これにより、ヘッド６の位置決めが開始されることとなる。
【０１０３】
このように、コントローラモデルＣ１は、シーケンスプログラム２５の動作の確認を正確に行うことができる。一方、コントローラモデルＣ１は、モータドライバ、モータ、機械１の動作については簡略化しているので、シミュレーションにかかる計算コストおよび時間コストを小さく抑えることができる。
【０１０４】
このように、実施の形態２では、ユーザが例えば２種類といった複数種類のシミュレーションの目的から何れかの目的を選択し、抽象度設定としてシミュレーション装置２１に入力している。モデル選択部２２は、抽象度設定に基づいて、モデルライブラリ２３に保持されているモデルの中からシミュレーションに必要な精度を有しつつ必要な計算量が小さくなるような、適切な抽象度のモデルを選択している。
【０１０５】
例えば、ステージ５のモータドライバのパラメータ調整を目的とするシミュレーションが選択された場合、モデル選択部２２は、ステージ５を駆動するＸ軸１ａおよびＹ軸１ｂに対応する精緻なドライバモデルＤ１および機械モデルＭ１を選択する。モータドライバの調整においてシーケンスプログラム２５の模擬精度は影響しないので、モデル選択部２２は、シーケンスプログラム２５を模擬するコントローラモデルとしては模擬精度の低いコントローラモデルＣ２を選択する。
【０１０６】
一般に産業用のコントローラはリアルタイム性を追求して高速な処理ができるよう設計されている場合が多く演算周期は短時間であり、これらの演算をシミュレーションで模擬するためには膨大な計算コストを要する。実施の形態２のシミュレーション装置２１は、シーケンスプログラム２５を高精度で模擬する必要の無いパラメータ調整に対しては、コントローラモデルの模擬精度を下げているので、シミュレーションの計算コストを低減することができる。一方、シミュレーション装置２１は、パラメータ調整の際にモータドライバおよび機械モデルについては高精度なモデルを用いているので、モータドライバのパラメータ調整を正しく実施することが可能となる。すなわち、シミュレーション装置２１は、シミュレーションの目的を満たすための適切な抽象度のモデルを用いたシミュレーションを、計算コストおよび時間コストを小さく抑えたうえで実行することができる。
【０１０７】
また、ステージ５およびヘッド６の運転順序を定めるシーケンスプログラム２５の動作確認を目的とするシミュレーションが選択された場合、モデル選択部２２は、シーケンスプログラム２５を模擬するコントローラモデルとして高精度にシーケンスプログラム２５の処理を模擬するコントローラモデルＣ１を選択している。また、モデル選択部２２は、シーケンスプログラム２５の動作確認が行われる際には、簡略化された模擬処理を行うドライバモデルＤ２および機械モデルＭ２を選択している。
【０１０８】
シーケンスプログラム２５の動作確認においてはコントローラ１０Ａの演算が正しいことを確認できればよく、機械１の振動特性などの詳細な模擬は不要である。実施の形態２のシミュレーション装置２１は、ドライバモデルおよび機械モデルを簡略化することで計算コストおよび時間コストを小さく抑えたうえでシーケンスプログラム２５による処理を確認することができる。
【０１０９】
このように、実施の形態２によれば、実施の形態１と同様に、ユーザが何れの抽象度設定を指定した場合であっても、シミュレーション装置２１は、抽象度設定に基づいてシミュレーションの目的に応じた適切な抽象度のモデルを選択することができる。したがって、シミュレーション装置２１は、計算効率の良いシミュレーションを簡易的に実現することができる。
【０１１０】
また、シミュレーション装置２１は、シーケンスプログラム２５の一部のブロックのみを抽出して模擬するので、シミュレーションを簡略化して機械システム２０Ａの動作を模擬できる。
【０１１１】
実施の形態３．
次に、図６および図７を用いて実施の形態３について説明する。実施の形態１，２では機械モデルが予めモデルライブラリ１３，２３に格納されている場合について説明したが、実施の形態３では、シミュレーション装置が、機械モデルを生成してモデルライブラリに格納する。
【０１１２】
図６は、実施の形態３にかかるシミュレーション装置の構成を示す図である。図６の各構成要素のうち図２に示す実施の形態１のシミュレーション装置１１と同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１１３】
実施の形態３でシミュレーションの対象として扱う機械システムは、実施の形態１と同様の機械システム２０Ａである。すなわち、シミュレーション装置３１は、シミュレーション装置１１と同様に、機械システム２０Ａの動作を模擬する。実施の形態３においても、ユーザに指定される抽象度設定によって２つのシミュレーションの目的のうちの何れかが指定される。
【０１１４】
シミュレーション装置３１は、モデル選択部１２と、モデルライブラリ３３と、モデル演算部１４と、モデル生成部３６とを備えている。
【０１１５】
モデルライブラリ３３は、モデルライブラリ１３と同様に、複数の異なる抽象度のドライバモデルと、複数の異なる抽象度の機械モデルとを保持する。具体的には、モデルライブラリ３３は、ドライバモデルＤ１，Ｄ２と、機械モデルＭ１〜Ｍ３とを保持する。このように、実施の形態３のモデルライブラリ３３は、予め準備された機械モデルＭ１，Ｍ２に加えて、モデル生成部３６で生成された機械モデルＭ３を保持する。
【０１１６】
モデル生成部３６は、外部から入力された実機情報に基づいて機械モデルを生成する。実機のデータである実機情報は、機械システム２０Ａを実際に動作させることによって得られた信号である。実機情報には、例えば、Ｘ軸１ａ、Ｙ軸１ｂ、およびＺ軸１ｃのモータ位置の時系列データと、ステージ位置およびヘッド位置の時系列データとが含まれている。
【０１１７】
機械モデルＭ１〜Ｍ３は、実施の形態１と同様に共通のインターフェースを有するソフトウェアである。実施の形態１では、機械モデルＭ１〜Ｍ３の共通インターフェースが、Ｘ軸１ａのモータ位置と、Ｙ軸１ｂのモータ位置と、Ｚ軸１ｃのモータ位置とを取得可能な入力インターフェースを有しているものとする。また、機械モデルＭ１〜Ｍ３の共通インターフェースが、ヘッド位置およびステージ位置の情報を出力する出力インターフェースを有しているものとする。
【０１１８】
モデル生成部３６は、Ｘ軸１ａ、Ｙ軸１ｂ、およびＺ軸１ｃのモータ位置の時系列データを入力として、ステージ位置およびヘッド位置の時系列データを出力する機械モデルＭ３を生成する。
【０１１９】
モデル生成部３６は、入力と出力との関係を得るために、例えばニューラルネットワークまたはサポートベクター回帰などの機械学習技術を用いるか、予測誤差法または部分空間法などのシステム同定技術を用いる。ここでは、モデル生成部３６がニューラルネットワークを用いる例について説明する。
【０１２０】
モデル生成部３６は、Ｘ軸１ａ、Ｙ軸１ｂ、およびＺ軸１ｃのモータ位置の時系列データと、ステージ位置およびヘッド位置の時系列データとを学習用のデータとして、ニューラルネットワークを用いた学習動作を行う。すなわち、モデル生成部３６は、機械学習装置である。モデル生成部３６は、状態観測部、データ取得部、および学習部の機能を有している。状態観測部は、Ｘ軸１ａ、Ｙ軸１ｂ、およびＺ軸１ｃのモータ位置の時系列データを状態変数として観測し、データ取得部は、ステージ位置およびヘッド位置の時系列データを教師データとして取得する。学習部は、状態観測部から出力されるＸ軸１ａ、Ｙ軸１ｂ、およびＺ軸１ｃのモータ位置の時系列データ、および、データ取得部から出力されるステージ位置およびヘッド位置の時系列データの組合せに基づいて作成されるデータセットに基づいて、機械モデルＭ３を学習する。
【０１２１】
なお、機械学習装置であるモデル生成部３６は、ネットワークを介してシミュレーション装置３１に接続された、シミュレーション装置３１とは別個の装置であってもよい。また、モデル生成部３６は、クラウドサーバ上に存在していてもよい。
【０１２２】
図７は、実施の形態３にかかるシミュレーション装置が用いるニューラルネットワークを説明するための図である。ニューラルネットワークは、入力層Ｘ１、中間層Ｙ１、および出力層Ｚ１を有している。入力層Ｘ１へは、Ｘ軸１ａ、Ｙ軸１ｂ、およびＺ軸１ｃのモータ位置を示すＭ（Ｍは自然数）個の入力データ（ｉ１、ｉ２、…、ｉＭ）が入力される。右端の出力層Ｚ１からは、ステージ位置およびヘッド位置を示すＮ（Ｎは自然数）個の出力データ（ｏ１、ｏ２、…、ｏＮ）が出力される。
【０１２３】
入力層Ｘ１の各ノードから中間層Ｙ１の各ノードに対する重み係数は全て独立に設定することができるが、図７ではこれらの重み係数が、全て同一の重み係数Ｗ１として表記されている。同様に、中間層Ｙ１の各ノードから出力層Ｚ１の各ノードに対する重み係数は、全て同一の重み係数Ｗ２として表記されている。
【０１２４】
ニューラルネットワークでは、入力層Ｘ１の各ノードの出力値に対して重み係数Ｗ１が乗算され、乗算によって得られた結果の線形結合が中間層Ｙ１の各ノードに入力される。また、ニューラルネットワークでは、中間層Ｙ１の各ノードの出力値に対して重み係数Ｗ２が乗算され、乗算によって得られた結果の線形結合が出力層Ｚ１のノードに入力される。各層の各ノードでは、例えばシグモイド関数といった非線形関数によって入力値から出力値が計算されてもよい。また、入力層Ｘ１および出力層Ｚ１では、出力値は入力値の線形結合であってもよい。
【０１２５】
モデル生成部３６は、Ｘ軸１ａ、Ｙ軸１ｂ、およびＺ軸１ｃのモータ位置の時系列データと、ステージ位置およびヘッド位置の時系列データとを用いて、ニューラルネットワークの重み係数Ｗ１と重み係数Ｗ２とを計算する。モデル生成部３６は、ニューラルネットワークの重み係数Ｗ１および重み係数Ｗ２を、誤差逆伝播法または勾配降下法を用いることで計算することができる。ただし、ニューラルネットワークの重み係数Ｗ１，Ｗ２を得ることができる計算方法であれば、モデル生成部３６による重み係数Ｗ１，Ｗ２の計算方法は上述の方法に限られない。
【０１２６】
ニューラルネットワークの重み係数が決定されれば、Ｘ軸１ａ、Ｙ軸１ｂ、およびＺ軸１ｃのモータ位置の時系列データと、ステージ位置およびヘッド位置の時系列データとの関係式が得られたことになる。ここまでにおいて、３層のニューラルネットワークを用いた学習を行う例について説明したが、モデル生成部３６によるニューラルネットワークを用いた学習は、上述の例に限定されない。
【０１２７】
上述したモデル生成部３６の動作によりＸ軸１ａ、Ｙ軸１ｂ、およびＺ軸１ｃのモータ位置を入力としてステージ位置およびヘッド位置を出力とする機械モデルＭ３が得られる。
【０１２８】
ニューラルネットワークによる模擬精度は、ニューラルネットワークの層の数、またはノードの数を変更することで、任意に設定することができる。すなわち、モデル生成部３６は、学習モデルとして種々の数式を用いることで、実機情報にフィッティングする種々の抽象度の機械モデルを簡便に生成することができる。これにより、シミュレーション装置３１に対しては、精度の異なる複数の機械モデルを簡易的に生成することが可能となる。モデル生成部３６による学習が、第１の機械学習である。
【０１２９】
モデル生成部３６は、抽象度設定と機械モデルＭ３とを対応付けした情報を、モデル選択部１２の対応関係情報に登録する。これにより、モデル選択部１２は、抽象度設定および対応関係情報に基づいて、シミュレーションの目的に応じた適切な機械モデルを選択することができることとなる。また、モデル生成部３６は、機械モデルＭ３を生成したことと、この機械モデルＭ３に対応する抽象度設定とを、ユーザに通知してもよい。モデル生成部３６は、例えば、表示装置に機械モデルＭ３を生成したことと、この機械モデルＭ３に対応する抽象度設定とを表示させる。
【０１３０】
モデル選択部１２は、機械モデルＭ３を生成する場合に限らず、ニューラルネットワークの層の数、またはノードの数を変更することで抽象度の異なる機械モデルＭ４、機械モデルＭ５といった機械モデルＭ１〜Ｍ３とは異なる機械モデルを生成してもよい。これらの機械モデルＭ１〜Ｍ５は、共通のインターフェースを有するソフトウェアとして生成される。
【０１３１】
実施の形態３ではモデル生成部３６で生成した機械モデルＭ３は、ステージ位置およびヘッド位置を出力する場合について説明したが、機械モデルＭ３の出力はステージ位置およびヘッド位置に限られない。機械モデルＭ３は、例えば機械システム２０Ａの温度または音を機械システム２０Ａの出力としてもよい。このように、モデル生成部３６は、実機情報に含まれる情報の何れかを機械モデルＭ３の入力および出力に設定することができる。
【０１３２】
また、モデル生成部３６は、実機情報のみに限らず、例えばＣＡＤ（Computer  Aided  Design）ソフトが出力するＣＡＤデータと、実機情報とを機械モデルＭ３の生成のために用いてもよい。ＣＡＤデータは、機械１の設計情報を有するデータである。モデル生成部３６は、この設計情報と実機情報とに基づいて機械モデルＭ３を生成してもよい。設計情報と実機情報とに基づく機械モデルＭ３の生成方法の一例としては、設計情報に基づいて機械モデルＭ３の微分方程式を生成し、実機情報に基づいて、微分方程式のパラメータを決定するといった方法がある。
【０１３３】
このように、実施の形態３によれば、モデル生成部３６が機械モデルＭ３を実機情報に基づいて生成するので、ユーザが機械モデルＭ３を事前に準備していなくとも、モデル選択部１２は、抽象度の異なる複数のモデルの中から適切なモデルを選択することができるようになる。したがって、実施の形態３でも、計算効率の良いシミュレーションを簡易的に実現することができる。
【０１３４】
実施の形態４．
次に、図８および図９を用いて実施の形態４について説明する。実施の形態１では機械モデルが予めモデルライブラリ１３に格納されている場合について説明したが、実施の形態４では、シミュレーション装置が、モデルライブラリに格納されている機械モデルの抽象度を変更して新たな機械モデルを生成する。
【０１３５】
図８は、実施の形態４にかかるシミュレーション装置の構成を示す図である。図８の各構成要素のうち図２に示す実施の形態１のシミュレーション装置１１と同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１３６】
実施の形態４でシミュレーションの対象として扱う機械システムは、実施の形態１と同様の機械システム２０Ａである。すなわち、シミュレーション装置４１は、シミュレーション装置１１と同様に機械システム２０Ａの動作を模擬する。実施の形態４においても、ユーザに指定される抽象度設定によって２つのシミュレーションの目的のうちの何れかが指定される。
【０１３７】
シミュレーション装置４１は、モデル選択部１２と、モデルライブラリ４３と、モデル演算部１４と、モデル簡略化部４７とを備えている。
【０１３８】
モデルライブラリ４３は、複数の異なる抽象度のドライバモデルと、複数の異なる抽象度の機械モデルとを保持する。実施の形態４では、モデルライブラリ４３に予めドライバモデルＤ１，Ｄ２が保持されている場合について説明する。また、モデルライブラリ４３は、機械１の動作を高精度に模擬する機械モデルＭ１と、モデル簡略化部４７で生成される機械モデルＭ６とを保持する。機械モデルＭ１が第１の機械モデルであり、機械モデルＭ６が第２の機械モデルである。
【０１３９】
モデル簡略化部４７は、モデルライブラリ４３から読み出したモデルを簡略化することで、新たなモデルを生成する。実施の形態４では、モデル簡略化部４７が、機械モデルＭ１を読み出し、機械モデルＭ１を簡略化することで生成した機械モデルＭ６を新たな機械モデルとしてモデルライブラリ４３に登録する場合について説明する。
【０１４０】
モデル簡略化部４７は、抽象度設定と機械モデルＭ６とを対応付けした情報を、モデル選択部１２の対応関係情報に登録する。これにより、モデル選択部１２は、抽象度設定および対応関係情報に基づいて、シミュレーションの目的に応じた適切な機械モデルを選択することができることとなる。また、モデル簡略化部４７は、機械モデルＭ６を生成したことと、この機械モデルＭ６に対応する抽象度設定とを、ユーザに通知してもよい。モデル簡略化部４７は、例えば、表示装置に機械モデルＭ６を生成したことと、この機械モデルＭ６に対応する抽象度設定とを表示させる。
【０１４１】
機械モデルＭ１，Ｍ６は、共通のインターフェースを有するソフトウェアである。例えば、機械モデルＭ１，Ｍ６の共通インターフェースは、Ｘ軸１ａのモータ位置とＹ軸１ｂのモータ位置とＺ軸１ｃのモータ位置とを取得可能な入力インターフェースを有しているものとする。また、機械モデルＭ１，Ｍ６の共通インターフェースは、ステージ位置およびヘッド位置の情報を出力する出力インターフェースを有しているものとする。
【０１４２】
図９は、実施の形態４にかかるシミュレーション装置がモデルの簡略化によって新たなモデルを生成する処理を説明するための図である。図９の上段には、機械モデルＭ１に含まれる演算回路のうちのステージ位置およびヘッド位置を演算する演算回路９１をブロック図として示している。図９の下段には、機械モデルＭ６に含まれる演算回路のうちのステージ位置およびヘッド位置を演算する演算回路９６をブロック図として示している。
【０１４３】
機械モデルＭ１の演算回路９１は、ステージ位置を演算して出力するブロック４８ａと、ヘッド位置を演算して出力するブロック４８ｂとを含んでいる。ブロック４８ａ，４８ｂには、Ｘ軸１ａのモータ位置であるＸ軸モータ位置、Ｙ軸１ｂのモータ位置であるＹ軸モータ位置、およびＺ軸１ｃのモータ位置であるＺ軸モータ位置が入力される。
【０１４４】
ブロック４８ａは、Ｘ軸モータ位置、Ｙ軸モータ位置、およびＺ軸モータ位置に基づいて、ステージ位置を演算し出力する。また、ブロック４８ｂは、Ｘ軸モータ位置、Ｙ軸モータ位置、およびＺ軸モータ位置に基づいて、ヘッド位置を演算し出力する。
【０１４５】
このように、演算回路９１は、Ｘ軸モータ位置、およびＹ軸モータ位置が、ヘッド位置に影響を与え、Ｚ軸１ｃのモータ位置であるＺ軸モータ位置がステージ位置に干渉する回路となっている。すなわち、機械モデルＭ１では、Ｚ軸モータ位置が固定された状態であってもＸ軸モータ位置またはＹ軸モータ位置を急峻に変化させた場合に、ヘッド６の位置にも過渡的に振動が生じることを意味している。また、機械モデルＭ１では、Ｘ軸モータ位置およびＹ軸モータ位置が固定された状態であってもＺ軸モータ位置を急峻に変化させた場合に、ステージ５の位置にも過渡的に振動が生じることを意味している。このように、機械モデルＭ１は直交する軸間の干渉振動を模擬するような高精度なモデルであるといえる。
【０１４６】
モデル簡略化部４７は、上述した干渉振動の影響を無視するように簡略化された機械モデルＭ６を生成する。具体的には、モデル簡略化部４７は、ステージ位置を演算する演算式からＺ軸モータ位置を含む項を削除し、ヘッド位置を演算する演算式からＸ軸モータ位置およびＹ軸モータ位置を含む項を削除する。
【０１４７】
このようにして生成された機械モデルＭ６の演算回路９６は、ステージ位置を演算して出力するブロック４８ｃと、ヘッド位置を演算して出力するブロック４８ｄとを含んでいる。ブロック４８ｃは、Ｘ軸モータ位置およびＹ軸モータ位置からステージ位置を演算するブロックである。ブロック４８ｄは、Ｚ軸モータ位置のみからヘッド位置を演算するブロックである。
【０１４８】
このように、実施の形態４では、モデル簡略化部４７が、高精度な模擬を実行する機械モデルＭ１から、簡略された模擬を実行する新たな機械モデルＭ６を生成する。
【０１４９】
実施の形態４では、モデル簡略化部４７が軸間の干渉振動を無視するような簡略化を行ったが、簡略化の方法はこの方法に限らない。モデル簡略化部４７は、例えばＸ軸モータ位置からステージ位置を演算する際の振動特性を無視するような簡略化を行ってもよい。
【０１５０】
また、モデル簡略化部４７は、機械１の振動特性に加えて発熱を模擬するような機械モデルから発熱を模擬する部分を無視するような簡略化を行ってもよい。また、モデル簡略化部４７は、機械１の構成要素を柔軟体とした有限要素法で表現した機械モデルを、剛体の接続である多剛体モデルに簡略化してもよい。
【０１５１】
また、実施の形態４では、モデル簡略化部４７が機械モデルの簡略化を行ったが、モデル簡略化部４７は、ドライバモデル、モータモデル、またはコントローラモデルの簡略化を行ってもよい。モデル簡略化部４７は、例えばＰＩＤ（Proportional-Integral-Differential、比例−積分−微分）制御にノッチフィルタおよびローパスフィルタを付け加えた詳細なフィードバック制御を行うドライバモデルから、ＰＩＤ制御のみのフィードバック制御を行うドライバモデルに簡略化を行ってもよい。
【０１５２】
このように、実施の形態４によれば、モデル簡略化部４７が抽象度の異なる新たな機械モデルＭ６を生成するので、ユーザが機械モデルＭ６を事前に準備していなくとも、モデルライブラリ４３は、抽象度の異なる複数の機械モデルＭ１，Ｍ６を保持することができる。すなわち、ユーザが登録した機械モデルの抽象度が１種類だけであってもモデル簡略化部４７は、１種類の機械モデルから複数の簡易な機械モデルを生成することができる。これにより、ユーザによる機械モデルの簡略化の手間が不要となる。また、ユーザは、機械モデルＭ１，Ｍ６の中から適切なモデルを選択することが可能となる。したがって、実施の形態４でも、計算効率の良いシミュレーションを簡易的に実現することができる。
【０１５３】
実施の形態５．
次に、図１０および図１１を用いて実施の形態５について説明する。実施の形態１では、モデル選択部１２が、抽象度設定に対応するモデル組が対応付けされた対応関係情報を用いてモデル組を選択したが、実施の形態５では、モデル選択部が、抽象度設定に対応するモデル組を機械学習に基づいて選択する。
【０１５４】
図１０は、実施の形態５にかかるシミュレーション装置の構成を示す図である。図１０の各構成要素のうち図２に示す実施の形態１のシミュレーション装置１１と同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１５５】
実施の形態５でシミュレーションの対象として扱う機械システムは、実施の形態１と同様の機械システム２０Ａである。すなわち、シミュレーション装置５１は、シミュレーション装置１１と同様に機械システム２０Ａの動作を模擬する。実施の形態５においても、ユーザに指定される抽象度設定によって２つのシミュレーションの目的のうちの何れかが指定される。
【０１５６】
シミュレーション装置５１は、モデル選択部５２と、モデルライブラリ１３と、モデル演算部１４とを備えている。
【０１５７】
モデル選択部５２は、外部から入力される抽象度設定に基づいて、モデルライブラリ１３に格納されているモデルの中からモデルを選択する。このとき、モデル選択部５２は、Ｘ軸１ａ、Ｙ軸１ｂ、およびＺ軸１ｃに対応する３つのドライバモデルと、１つの機械モデルとからなる合計４つのモデルを、モデル組としてモデルライブラリ１３から選択する。
【０１５８】
モデル選択部５２は、抽象度設定を入力として、抽象度設定に対応する４つのモデルを出力とする入出力関係を学習する。モデル選択部５２による学習が、第２の機械学習である。モデル選択部５２は、モデル生成部３６と同様の構成を有した機械学習装置である。すなわち、モデル選択部５２は、状態観測部、データ取得部、および学習部の機能を有している。状態観測部は、抽象度設定を状態変数として観測し、データ取得部は、各抽象度設定に対応付けされたモデル組の情報を教師データとして取得する。学習部は、状態観測部から出力される抽象度設定、および、データ取得部から出力されるモデル組に基づいて作成されるデータセットに基づいて、抽象度設定と、抽象度設定に対応付けされた適切なモデルとの関係式を学習する。
【０１５９】
なお、機械学習装置であるモデル選択部５２は、ネットワークを介してシミュレーション装置５１に接続された、シミュレーション装置５１とは別個の装置であってもよい。また、モデル選択部５２は、クラウドサーバ上に存在していてもよい。
【０１６０】
モデル選択部５２は、この入力と出力との関係を得るために、例えばニューラルネットワーク、サポートベクター回帰などを用いる。ここでは、モデル選択部５２がニューラルネットワークを用いる例を説明する。
【０１６１】
モデル選択部５２は、複数の抽象度設定と、これらの各抽象度設定に対応付けされたモデル組の情報とを学習用データとして、ニューラルネットワークを用いた機械学習を行う。実施の形態５の抽象度設定ではシミュレーションの目的が設定されるものとする。また、実施の形態５では、機械学習を容易化するために、シミュレーションの目的を示す情報が、いくつかの要素に分けることができる情報であるとする。
【０１６２】
例えば、シミュレーションの目的を示す情報は、以下の３つの要素に分けることができる。１つ目の要素の要素である第１要素は、シミュレーションにおいて動作確認の対象となる軸である。第１要素の例は、「Ｘ軸１ａ」、「Ｙ軸１ｂ」、「Ｚ軸１ｃ」、または「全ての軸」である。
【０１６３】
２つ目の要素である第２要素は、シミュレーションにおいて確認する対象となる動作である。第２要素の例は、「動作範囲確認」、「消費電力確認」、または「制御パラメータ調整」である。
【０１６４】
３つ目の要素である第３要素は、シミュレーションに求められる精度である。第３要素の例は、「高精度」、または「低精度」である。
【０１６５】
図１１は、実施の形態５にかかるシミュレーション装置が用いるニューラルネットワークを説明するための図である。ニューラルネットワークは、入力層Ｘ２、中間層Ｙ２、および出力層Ｚ２を有している。入力層Ｘ２へは、第１要素、第２要素、および第３要素の３個の入力データ（ｅ１、ｅ２、ｅ３）が入力される。右端の出力層Ｚ２からは、Ｘ軸１ａ、Ｙ軸１ｂ、およびＺ軸１ｃに対応する３つのドライバモデルと、１つの機械モデルとからなる合計４個の出力データ（ｍ１、ｍ２、ｍ３、ｍ４）が出力される。
【０１６６】
入力層Ｘ２の各ノードから中間層Ｙ２の各ノードに対する重み係数は全て独立に設定することができるが、図１１ではこれらの重み係数が、全て同一の重み係数Ｗ３として表記されている。同様に、中間層Ｙ２の各ノードから出力層Ｚ２の各ノードに対する重み係数は、全て同一の重み係数Ｗ４として表記されている。
【０１６７】
ニューラルネットワークでは、入力層Ｘ２の各ノードの出力値に対して重み係数Ｗ３が乗算され、乗算によって得られた結果の線形結合が中間層Ｙ２の各ノードに入力される。また、ニューラルネットワークでは、中間層Ｙ２の各ノードの出力値に対して重み係数Ｗ４が乗算され、乗算によって得られた結果の線形結合が出力層Ｚ２のノードに入力される。各層の各ノードでは、例えばシグモイド関数といった非線形関数によって入力値から出力値が計算されてもよい。また、入力層Ｘ２および出力層Ｚ２では、出力値は入力値の線形結合であってもよい。
【０１６８】
モデル選択部５２は、複数の抽象度設定と、これらの各抽象度設定に対応付けされたモデル組の情報とを学習用データとして、ニューラルネットワークの重み係数Ｗ３，Ｗ４を計算する。モデル選択部５２は、ニューラルネットワークの重み係数Ｗ３，Ｗ４を、誤差逆伝播法または勾配降下法を用いることで計算することができる。ただし、ニューラルネットワークの重み係数Ｗ３，Ｗ４を得ることができる計算方法であれば、モデル選択部５２による重み係数Ｗ３，Ｗ４の計算方法は上述の方法に限られない。
【０１６９】
ニューラルネットワークの重み係数が決定されれば、抽象度設定と、抽象度設定に対応付けされた適切なモデルとの関係式が得られたことになる。ここまでにおいて、３層のニューラルネットワークを用いた学習を行う例について説明したが、モデル選択部５２によるニューラルネットワークを用いた学習は、上述の例に限定されない。
【０１７０】
上述したモデル選択部５２の動作により抽象度設定を入力として４つのモデルを出力とするニューラルネットワークが得られる。
【０１７１】
このように、実施の形態５によれば、モデル選択部５２が抽象度設定に対応する適切なモデル組を機械学習するので、ユーザが新たに入力する抽象度設定に対応する適切なモデル組をモデルライブラリ１３から選択することができる。したがって、実施の形態５でも、計算効率の良いシミュレーションを簡易的に実現することができる。
【０１７２】
実施の形態６．
次に、図１２および図１３を用いて実施の形態６について説明する。実施の形態１ではステージ５およびヘッド６を駆動する機械システム２０Ａの動作を模擬するシミュレーション装置１１について説明したが、実施の形態６では、機械システム２０Ａとは異なる機械システムの動作を模擬するシミュレーション装置について説明する。実施の形態６では、ロールツーロールでシート材を搬送する機械システムの動作を模擬するシミュレーション装置について説明する。
【０１７３】
図１２は、実施の形態６にかかるシミュレーション装置によって動作がシミュレーションされる機械システムの構成を示す図である。機械システム２０Ｂは、モータで駆動される機械２と、機械２を制御するコントローラ１０Ｂとを備えている。また、機械システム２０Ｂは、シート材Ｗｓに印刷をするスタンプ７を備えている。
【０１７４】
以下の説明では、スタンプ７によるシート材Ｗｓへの印刷面と平行な面内の２つの方向軸であって互いに直交する２つの方向をＸ方向およびＹ方向とする。また、Ｘ方向およびＹ方向に直交する方向をＺ方向とする。
【０１７５】
機械２は、Ｘ方向に延びる巻出し軸２ａと、Ｘ方向に延びる巻取り軸２ｂと、Ｚ方向に延びるＺ軸２ｃとからなる３軸のモータを有している。
【０１７６】
機械２は、巻出し軸２ａおよび巻取り軸２ｂによってシート材Ｗｓの搬送制御を行う。機械２では、シート材Ｗｓの送り動作と一時停止とが繰り返されながらシート材Ｗｓが搬送され、シート材Ｗｓの一時停止時にＺ軸２ｃの動作によってＺ軸２ｃに取り付けられたスタンプ７がシート材Ｗｓに印刷処理を施す。
【０１７７】
また、機械システム２０Ｂには、モータドライバ（図示せず）が搭載されている。機械システム２０Ｂでは、コントローラ１０Ｂが、モータドライバを制御し、モータドライバが各軸のモータを駆動する。コントローラ１０Ｂの例は、プログラマブルロジックコントローラ、産業用パーソナルコンピュータ、サーボシステムコントローラなどである。
【０１７８】
シート材Ｗｓは、巻出し軸２ａおよび巻取り軸２ｂに巻かれており、巻出し軸２ａおよび巻取り軸２ｂが回転することによってＹ方向に移動する。スタンプ７は、Ｚ軸２ｃの動作によってＺ方向に移動し、Ｙ方向に移動するシート材Ｗｓに印刷を行う。
【０１７９】
コントローラ１０Ｂは、巻出し軸２ａの動作および巻取り軸２ｂの動作を制御することによって、シート材ＷｓのＹ方向の位置を制御する。また、コントローラ１０Ｂは、Ｚ軸２ｃの動作を制御することによって、Ｚ軸２ｃに取り付けられたスタンプ７のＺ方向の位置を制御する。
【０１８０】
図１３は、実施の形態６にかかるシミュレーション装置の構成を示す図である。図１３の各構成要素のうち図２に示す実施の形態１のシミュレーション装置１１と同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１８１】
シミュレーション装置７１は、シミュレーション装置１１と同様のシミュレーションを実行するが、シミュレーション装置７１とシミュレーション装置１１とでは、シミュレーション対象である機械システムの種類が異なる。
【０１８２】
シミュレーション装置７１は、機械システム２０Ｂの動作を模擬する。実施の形態６においても、ユーザに指定される抽象度設定によって２つのシミュレーションの目的のうちの何れかが指定される。
【０１８３】
シミュレーション装置７１は、モデル選択部７２と、モデルライブラリ７３と、モデル演算部７４とを備えている。シミュレーション装置７１とシミュレーション装置１１とを比較すると、シミュレーション装置１１は、機械システム２０Ａの動作を模擬するのに対して、シミュレーション装置７１は、機械システム２０Ｂの動作を模擬する。
【０１８４】
シミュレーション装置７１のモデル選択部７２が受け付ける抽象度設定は、機械システム２０Ｂに対するシミュレーションの抽象度を示す情報である。モデル選択部７２は、モデル選択部１２と同様に抽象度設定に対応するモデルを選択する。モデル選択部７２は、選択したモデル組をモデル演算部７４に通知する。また、モデルライブラリ７３は、モデルライブラリ１３と同様に、抽象度の異なる複数のドライバモデルと、抽象度の異なる複数の機械モデルとを記憶しておく。
【０１８５】
実施の形態６では、モデルライブラリ７３が記憶しておくドライバモデルがドライバモデルＤ１１，Ｄ１２の２つである場合について説明する。また、モデルライブラリ７３が記憶しておく機械モデルが機械モデルＭ１１，Ｍ１２の２つである場合について説明する。
【０１８６】
ドライバモデルＤ１１，Ｄ１２は、ドライバモデルＤ１，Ｄ２と同様に、モータドライバの動作を模擬するモデルである。ドライバモデルＤ１１は、ドライバモデルＤ１２よりも高精度にモータドライバの動作を模擬するモデルである。ドライバモデルＤ１１は、例えば、フィードフォワード制御器、位置フィードバック制御器、速度フィードバック制御器、電流制御器などの機能を模擬する。また、ドライバモデルＤ１２は、ドライバモデルＤ１１よりも簡易的にモータドライバの動作を模擬するモデルである。ドライバモデルＤ１２は、例えば、フィードフォワード制御器の機能のみを模擬する。
【０１８７】
機械モデルＭ１１，Ｍ１２は、機械モデルＭ１，Ｍ２と同様のモデルである。機械モデルＭ１１，Ｍ１２は、機械２の動作を模擬する。機械モデルＭ１１は、機械モデルＭ１２よりも高精度に機械２の動作を模擬するモデルである。機械モデルＭ１１は、例えば、機械２の振動特性などを模擬する。また、機械モデルＭ１２は、機械モデルＭ１１よりも簡易的に機械２の動作を模擬するモデルである。機械モデルＭ１２は、例えば、スタンプ７によるシート材Ｗｓへの印刷位置を模擬する。ドライバモデルＤ１１，Ｄ１２、および機械モデルＭ１１，Ｍ１２の詳細については後述する。
【０１８８】
実施の形態６では、シミュレーションとして２種類の選択肢が用意されている場合について説明する。実施の形態６では、例えば、シミュレーションの選択肢として、印刷位置の確認を目的とするシミュレーションと、巻出し軸２ａのサーボパラメータの調整を目的とするシミュレーションとの２種類の選択肢が用意されている。
【０１８９】
モデルライブラリ７３に保持される複数の機械モデルＭ１１，Ｍ１２は、実施の形態１の機械モデルＭ１，Ｍ２と同様に、共通のインターフェースを有するソフトウェアである。実施の形態６では、シート材Ｗｓの位置であるシート位置、印刷位置、モータに与える外力、機械２の発熱などの情報まとめたオブジェクトを定義しておき、このオブジェクトを機械モデルの共通インターフェースの出力としてもよい。
【０１９０】
実施の形態６では、機械モデルＭ１１，Ｍ１２の共通インターフェースが、巻出し軸２ａのモータ位置と、巻取り軸２ｂのモータ位置と、Ｚ軸２ｃのモータ位置とを取得可能な入力インターフェースを有しているものとする。
【０１９１】
機械モデルＭ１１は、例えば、機械２のダイナミクスを考慮するモデルであり、シート材Ｗｓの張力を模擬する。機械モデルＭ１２は、例えば、機械２のダイナミクスは考慮せずモータ位置に基づくキネマティクスのみによってシート位置および印刷位置を変更し、シート位置および印刷位置の動作範囲を模擬する。なお、機械モデルＭ１２は、シート位置および印刷位置のうちの一方のみを模擬してもよい。
【０１９２】
モデル演算部７４は、モデル選択部７２から通知されたモデル組に対応するドライバモデルおよび機械モデルをモデルライブラリ７３から読み出す。モデル演算部７４は、読み出したドライバモデルおよび機械モデル用いて、モータドライバおよび機械２のシミュレーション演算を行う。
【０１９３】
モデル演算部７４は、モデルライブラリ７３から選択されたモデルを含めた機械システム２０Ｂのモデルの演算を実施する。例えば、機械システム２０Ｂのモデルにモータモデルおよびコントローラモデルが含まれているとする。モータモデルは、モータの動作を模擬するモデルであり、コントローラモデルは、コントローラ１０Ｂの動作を模擬するモデルである。この場合、モデル演算部７４は、巻出し軸２ａに対応するドライバモデルおよびモータモデルと、巻取り軸２ｂに対応するドライバモデルおよびモータモデルと、Ｚ軸２ｃに対応するドライバモデルおよびモータモデルと、機械モデルと、さらにモータドライバに対してモータの位置指令を与えるコントローラモデルとを含めて機械システム２０Ｂのモデルとする。モデル演算部７４は、モータモデルおよびコントローラモデルを、モデルライブラリ７３から取得してもよいし、モデルライブラリ７３以外から取得してもよい。モデル演算部７４は、シミュレーション結果を表示装置などの外部装置に出力する。これにより、表示装置が、シミュレーション結果を表示する。
【０１９４】
次に、実施の形態６におけるシミュレーション装置７１の詳細な動作について説明する。まず、抽象度設定として、印刷位置の確認を目的とするシミュレーションを、ユーザが選択する場合を考える。
【０１９５】
モデル選択部７２の対応関係情報には、印刷位置の確認を目的とするシミュレーションが選択された場合には、巻出し軸２ａ、巻取り軸２ｂ、およびＺ軸２ｃに対応する３つのドライバモデルＤ１２と、機械モデルＭ１２とを選択することが予め定められているとする。この場合において、印刷位置の確認を目的とするシミュレーションに対応する抽象度設定がユーザに指定されると、モデル選択部７２は、抽象度設定および対応関係情報に基づいて、巻出し軸２ａ、巻取り軸２ｂ、およびＺ軸２ｃに対応するドライバモデルとしてドライバモデルＤ１２を選択する。また、モデル選択部７２は、機械モデルとして機械モデルＭ１２を選択する。
【０１９６】
モデル演算部７４は、これらの選択したモデル、すなわちドライバモデルＤ１２および機械モデルＭ１２を用いてシート材Ｗｓの搬送とスタンプ７の動作とを模擬するシミュレーションを実行する。このとき、モデル演算部７４は、コントローラモデルが生成する巻出し軸２ａの位置指令を、巻出し軸２ａのドライバモデルＤ１２に入力する。この場合、ドライバモデルＤ１２は、フィードフォワード制御のみによって巻出し軸２ａのモータ位置を模擬制御する。モデル演算部７４は、巻取り軸２ｂおよびＺ軸２ｃについても巻出し軸２ａと同様に、コントローラモデルが生成する位置指令をドライバモデルＤ１２に入力する。この場合、ドライバモデルＤ１２は、フィードフォワード制御のみによって巻取り軸２ｂおよびＺ軸２ｃのモータ位置を模擬制御する。これにより、モデル演算部７４は、ドライバモデルＤ１２を用いて、巻出し軸２ａ、巻取り軸２ｂ、およびＺ軸２ｃのモータ位置を演算する。
【０１９７】
モデル演算部７４は、こうして演算した巻出し軸２ａ、巻取り軸２ｂ、およびＺ軸２ｃのモータ位置を入力として機械モデルＭ１２の演算を行う。ここでは、機械モデルとして機械モデルＭ１２が選択されているので、各軸のモータ位置からキネマティクスのみによってシート材Ｗｓの搬送位置およびスタンプ７の位置が計算される。これにより、モデル演算部７４は搬送されるシート材Ｗｓの何れの位置にスタンプ７による印刷が行われるかを模擬することができる。モデル演算部７４は、シート材Ｗｓの搬送位置およびスタンプ７の位置をシミュレーションの結果として出力する。
【０１９８】
次に、抽象度設定として、巻出し軸２ａのサーボパラメータの調整を目的とするシミュレーションを、ユーザが選択する場合を考える。
【０１９９】
モデル選択部７２の対応関係情報には、巻出し軸２ａのサーボパラメータの調整を目的とするシミュレーションが選択された場合には、巻出し軸２ａおよび巻取り軸２ｂに対応するドライバモデルとしてドライバモデルＤ１１を選択することが予め定められているとする。また、対応関係情報には、巻出し軸２ａのサーボパラメータの調整を目的とするシミュレーションが選択された場合には、Ｚ軸２ｃに対応するドライバモデルとしてドライバモデルＤ１２を選択し、機械モデルとして機械モデルＭ１１を選択することが予め定められているとする。この場合において、巻出し軸２ａのサーボパラメータの調整を目的とするシミュレーションがユーザに指定されると、モデル選択部７２は、抽象度設定および対応関係情報に基づいて、巻出し軸２ａおよび巻取り軸２ｂに対応するドライバモデルとして２つのドライバモデルＤ１１を選択する。また、モデル選択部７２は、Ｚ軸２ｃに対応するドライバモデルとしてドライバモデルＤ１２を選択する。また、モデル選択部７２は、機械モデルとして機械モデルＭ１１選択する。
【０２００】
モデル演算部７４は、これらの選択したモデル、すなわちドライバモデルＤ１１，Ｄ１２および機械モデルＭ１１を用いてヘッド位置の動作を模擬するシミュレーションを実行する。このとき、モデル演算部７４は、コントローラモデルが生成する巻出し軸２ａの位置指令を巻出し軸２ａのドライバモデルＤ１１に入力する。この場合、ドライバモデルＤ１１は、フィードフォワード制御器、位置フィードバック制御器、速度フィードバック制御器、電流制御器によってモータ位置を模擬制御する。機械２には、位置フィードバック制御器、速度フィードバック制御器として、例えばＰＩ制御器が実装されている。この場合、それぞれの比例ゲインおよび積分ゲインが、制御パラメータとなっており、これらの制御パラメータが変更されることで巻出し軸２ａのモータの位置制御性能が変更される。
【０２０１】
巻出し軸２ａと同様に、巻取り軸２ｂのドライバモデルはドライバモデルＤ１１であるので、制御パラメータに基づいて巻取り軸２ｂのモータの位置制御性能が変更される。また、Ｚ軸２ｃのモータドライバモデルはドライバモデルＤ１２であるので、フィードフォワード制御のみによってモータ位置が制御される。
【０２０２】
また、機械モデルとしては、シート材Ｗｓの張力を模擬する機械モデルＭ１１が選択されている。このため、モータの動作によってシート材Ｗｓの張力変動などが生じる。したがって、モデル演算部７４は、シート材Ｗｓの張力、およびスタンプ７の位置をシミュレーション結果として出力する。これにより、ユーザはシート材Ｗｓの張力変動を確認することができる。また、ユーザは、シミュレーション結果であるシート材Ｗｓの張力変動を確認しつつシート材Ｗｓの張力変動が生じないように巻出し軸２ａおよび巻取り軸２ｂの制御パラメータを調整することができる。
【０２０３】
このように、実施の形態６では、ユーザが例えば２種類といった複数種類のシミュレーションの目的から何れかの目的を選択し、抽象度設定としてシミュレーション装置７１に入力している。モデル選択部７２は、抽象度設定および対応関係情報に基づいて、モデルライブラリ７３に保持されているモデルの中からシミュレーションに必要な精度を有しつつ必要な計算量が所定量よりも小さくなるような、適切な抽象度のモデルを選択している。
【０２０４】
例えば、印刷位置の確認を目的とするシミュレーションが選択された場合、モデル選択部７２は、機械モデルＭ１２およびドライバモデルＤ１２を選択する。機械モデルＭ１２は、キネマティクスのみに基づいてモータ位置に対応するシート材Ｗｓの搬送位置およびスタンプ７の位置を計算する。この機械モデルＭ１２には、モータ位置に対する外力などのダイナミクスの影響は含まれないので、フィードバック制御によってモータ位置を制御するような模擬は必要が無い。このため、モデル選択部７２は、機械モデルＭ１２を選択する場合には、フィードフォワード制御のみの簡易的なドライバモデルＤ１２を選択している。
【０２０５】
これにより、シミュレーション装置７１は、機械２のダイナミクス、およびフィードバック制御に係る複雑な微分方程式を演算する必要が無くなり、モデル演算部７４の演算は非常に簡単なものになる。このため、シミュレーション装置７１は、精緻なモデルのシミュレーションを実行する場合の微分方程式を演算する場合に比べて非常に小さい計算コストで、印刷位置を確認することができる。すなわち、シミュレーション装置７１は、シミュレーションの目的を満たすための適切な抽象度のモデルを用いたシミュレーションを、計算コストを小さく抑えたうえで実行することができる。
【０２０６】
一方、巻出し軸２ａのサーボパラメータの調整を目的とするシミュレーションが選択された場合、モデル選択部７２は、シートを搬送する巻出し軸２ａおよび巻取り軸２ｂに対応するドライバモデルとして詳細な模擬を実行するドライバモデルＤ１１を選択する。また、モデル選択部７２は、機械モデルとして精緻な模擬を実行する機械モデルＭ１１を選択する。巻取り軸２ｂについて詳細なモデルを選択する理由は、巻出し軸２ａと巻取り軸２ｂとはシート材Ｗｓを介して干渉するので、巻出し軸２ａの調整において巻取り軸２ｂの動作が無視できないからである。
【０２０７】
モデル選択部７２は、巻出し軸２ａおよび巻取り軸２ｂのモータドライバの制御性能に影響を与えないＺ軸２ｃのドライバモデルについては簡易なドライバモデルであるドライバモデルＤ１２を選択する。
【０２０８】
そして、ユーザはシミュレーション結果として出力されるシート材Ｗｓの張力変動を確認しながら巻出し軸２ａのパラメータを調整する。この場合において、シミュレーション装置７１は、巻出し軸２ａ、巻取り軸２ｂ、およびシート材Ｗｓの動作については精緻なモデルをシミュレーションに用いているので、ユーザは正確なパラメータの調整を行うことができる。この場合の精緻なモデルは計算量が大きいモデルであるが、シミュレーション装置７１は、巻出し軸２ａのモータドライバの制御パラメータの調整に対して考慮する必要がないＺ軸２ｃの動作については、簡略化されたモデルを用いる。したがって、シミュレーション装置７１は、Ｚ軸２ｃの動作のシミュレーションについては計算量を抑えることができる。すなわち、シミュレーション装置７１は、シミュレーションの目的を満たすための適切な抽象度のモデルを用いたシミュレーションを、計算コストを小さく抑えたうえで実行することができる。
【０２０９】
このように、ユーザが何れの抽象度設定を指定した場合であっても、シミュレーション装置７１は、抽象度設定に基づいてシミュレーションの目的に応じた適切な抽象度のモデルを選択することができるので、計算効率の良いシミュレーションを簡易的に実現できる。
【０２１０】
なお、実施の形態６では、巻出し軸２ａおよび巻取り軸２ｂのモータドライバに対しては、位置指令に基づく位置制御が行われる場合について説明したが、速度指令による速度制御が行われてもよいし、トルク指令によるトルク制御が行われてもよい。また、機械システム２０Ｂは、巻取り軸２ｂのモータドライバが速度制御され、巻出し軸２ａのモータドライバがトルク制御されるシステムであってもよい。
【０２１１】
このように、実施の形態６によれば、実施の形態１から５と同様に、抽象度設定に基づいてシミュレーションの目的に応じた適切な抽象度のモデルを選択することができるので、計算効率の良いシミュレーションを簡易的に実現することができる。
【０２１２】
ここで、シミュレーション装置１１，２１，３１，４１，５１，７１のハードウェア構成について説明する。なお、シミュレーション装置１１，２１，３１，４１，５１，７１は、同様のハードウェア構成を有しているので、ここではシミュレーション装置１１のハードウェア構成について説明する。
【０２１３】
図１４は、実施の形態１にかかるシミュレーション装置を実現するハードウェア構成例を示す図である。シミュレーション装置１１は、入力装置３００、プロセッサ１００、メモリ２００、および出力装置４００により実現することができる。プロセッサ１００の例は、ＣＰＵ（Central  Processing  Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、ＤＳＰ（Digital  Signal  Processor）ともいう）またはシステムＬＳＩ（Large  Scale  Integration）である。メモリ２００の例は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）である。
【０２１４】
シミュレーション装置１１は、プロセッサ１００が、メモリ２００で記憶されているシミュレーション装置１１の動作を実行するための、コンピュータで実行可能な、シミュレーションプログラムを読み出して実行することにより実現される。シミュレーション装置１１の動作を実行するためのプログラムであるシミュレーションプログラムは、シミュレーション装置１１の手順または方法をコンピュータに実行させるものであるともいえる。
【０２１５】
シミュレーション装置１１で実行されるシミュレーションプログラムは、モデル選択部１２と、モデル演算部１４とを含むモジュール構成となっており、これらが主記憶装置上にロードされ、これらが主記憶装置上に生成される。
【０２１６】
入力装置３００は、抽象度設定を受け付けてプロセッサ１００に送る。メモリ２００は、モデルライブラリ１３などを記憶する。このメモリ２００が記憶するモデルライブラリ１３内に、ドライバモデルＤ１，Ｄ２および機械モデルＭ１，Ｍ２が格納されている。また、メモリ２００は、プロセッサ１００が各種処理を実行する際の一時メモリに使用される。出力装置４００は、モデル演算部１４が計算したシミュレーション結果をモニタなどに出力する。
【０２１７】
ここではシミュレーション装置１１，２１，３１，４１，５１，７１は１つのコンピュータによって実現される例を示したが、シミュレーション装置１１，２１，３１，４１，５１，７１は複数のコンピュータによって実現されてもよい。
【０２１８】
例えばシミュレーション装置３１は、２つのコンピュータによって実現されるものとして、モデル演算部１４を含むプログラムと、モデル生成部３６を含むプログラムとは、別のコンピュータで実行されてもよい。
【０２１９】
また、例えばシミュレーション装置４１は、２つのコンピュータによって実現されるものとして、モデル演算部１４を含むプログラムと、モデル簡略化部４７を含むプログラムとは、別のコンピュータで実行されてもよい。
【０２２０】
また、例えばシミュレーション装置５１は、２つのコンピュータによって実現されるものとして、モデル演算部１４を含むプログラムと、モデル選択部５２を含むプログラムとは、別のコンピュータで実行されてもよい。
【０２２１】
シミュレーションプログラムは、インストール可能な形式または実行可能な形式のファイルで、コンピュータが読み取り可能な記憶媒体に記憶されてコンピュータプログラムプロダクトとして提供されてもよい。また、シミュレーションプログラムは、インターネットなどのネットワーク経由でシミュレーション装置１１に提供されてもよい。なお、シミュレーション装置１１の機能について、一部を専用回路などの専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
【０２２２】
以上の実施の形態に示した構成は、一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、実施の形態同士を組み合わせることも可能であるし、要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【０２２３】
１，２  機械、１ａ  Ｘ軸、１ｂ  Ｙ軸、１ｃ，２ｃ  Ｚ軸、２ａ  巻出し軸、２ｂ  巻取り軸、５  ステージ、６  ヘッド、７  スタンプ、１０Ａ，１０Ｂ  コントローラ、１１，２１，３１，４１，５１，７１  シミュレーション装置、１２，２２，５２，７２  モデル選択部、１３，２３，３３，７３  モデルライブラリ、１４，２４，７４  モデル演算部、２０Ａ，２０Ｂ  機械システム、２５  シーケンスプログラム、３６  モデル生成部、４７  モデル簡略化部、４８ａ，４８ｂ，４８ｃ，４８ｄ  ブロック、９１，９６  演算回路、１００  プロセッサ、２００  メモリ、３００  入力装置、４００  出力装置、Ｃ１，Ｃ２  コントローラモデル、Ｄ１，Ｄ２，Ｄ１１，Ｄ１２  ドライバモデル、Ｍ１〜Ｍ６，Ｍ１１，Ｍ１２  機械モデル、Ｗｐ  ワーク、Ｗｓ  シート材。
【要約】
モータを備えた機械と、モータを制御するモータドライバと、モータドライバを制御するコントローラとを具備した機械システムの動作を、機械の動作を模擬する機械モデルと、モータドライバの動作を模擬するドライバモデルとを用いて模擬するシミュレーションプログラムであって、シミュレーションの抽象度が設定された抽象度設定に基づいて、機械モデルの候補と、ドライバモデルの候補とを保持するモデルライブラリ（１３）から、シミュレーションに用いる機械モデルとドライバモデルとを選択するモデル選択ステップと、選択された機械モデルおよびドライバモデルを用いて機械システムの動作を模擬するモデル演算ステップと、をコンピュータに実行させ、１つの機械を異なる抽象度で模擬する複数の機械モデルが機械モデルの候補に含まれるか、または１つのモータドライバを異なる抽象度で模擬する複数のドライバモデルがドライバモデルの候補に含まれている。【図１】
0006961130.tif 000002
【図２】
0006961130.tif 000003
【図３】
0006961130.tif 000004
【図４】
0006961130.tif 000005
【図５】
0006961130.tif 000006
【図６】
0006961130.tif 000007
【図７】
0006961130.tif 000008
【図８】
0006961130.tif 000009
【図９】
0006961130.tif 000010
【図１０】
0006961130.tif 000011
【図１１】
0006961130.tif 000012
【図１２】
0006961130.tif 000013
【図１３】
0006961130.tif 000014
【図１４】
0006961130.tif 000015