(57)【要約】【課題】センサの検知結果に応じた制御のシミュレーションを実現すること。【解決手段】制御プログラムにしたがって、仮想空間において機械に対応する仮想機械を動かせるための指令値が計算され（ステップＳ３１６，ステップＳ３１７）、計算された指令値にしたがった仮想機械の動きが計算され（ステップＳ３１８）、計算された仮想機械の動きによって、仮想機械の状態が、機械のセンサの検知条件に対応する仮想検知条件を満たす状態となったか否かが判断され（ステップＳ３１９，ステップＳ１１２，ステップＳ１１３，ステップＳ１２１）、満たすと判断された仮想検知条件に応じて、指令値が計算される（ステップＳ１２２，ステップＳ３２１，ステップＳ３２２，ステップＳ３１６，ステップＳ３１７）。【選択図】図４
2013206062.tif 000002
【特許請求の範囲】
【請求項１】
機械の動きを制御するコントローラにおいて実行される制御プログラムのシミュレーションを実行する制御部を有するシミュレーション装置であって、
前記制御部は、
前記制御プログラムにしたがって、仮想空間において前記機械に対応する仮想機械を動かせるための指令値を計算する第１の計算手段と、
前記第１の計算手段によって計算された前記指令値にしたがった前記仮想機械の動きを計算する第２の計算手段と、
前記第２の計算手段によって計算された前記仮想機械の動きによって、前記仮想機械の状態が、前記機械のセンサの検知条件に対応する仮想検知条件を満たす状態となったか否かを判断する検知手段とを含み、
前記第１の計算手段は、前記検知手段によって満たすと判断された前記仮想検知条件に応じて、前記指令値を計算する、シミュレーション装置。
【請求項２】
前記第１の計算手段、前記第２の計算手段、および、前記検知手段は、同一の時間軸にしたがって、それぞれ、前記指令値、前記仮想機械の動き、および、前記前記仮想検知条件を満たす状態となったか否かを判断する、請求項１に記載のシミュレーション装置。
【請求項３】
前記制御部は、さらに、
前記シミュレーションを一時停止させる操作を受付ける操作受付手段と、
前記操作受付手段によって一時停止させる操作が受付けられた場合、前記シミュレーションを一時停止させる動作制御手段とを備える、請求項１に記載のシミュレーション装置。
【請求項４】
前記制御部は、さらに、
前記操作受付手段によって一時停止させる操作が受付けられた場合、前記仮想機械の状態を示す情報を表示する表示制御手段を備える、請求項３に記載のシミュレーション装置。
【請求項５】
機械の動きを制御するコントローラにおいて実行される制御プログラムのシミュレーションを実行する制御部を有するシミュレーション装置で行なわれるシミュレーション方法であって、
前記制御部が、
前記制御プログラムにしたがって、仮想空間において前記機械に対応する仮想機械を動かせるための指令値を計算する第１のステップと、
前記第１のステップで計算された前記指令値にしたがった前記仮想機械の動きを計算する第２のステップと、
前記第２のステップで計算された前記仮想機械の動きによって、前記仮想機械の状態が、前記機械のセンサの検知条件に対応する仮想検知条件を満たす状態となったか否かを判断する検知ステップとを含み、
前記第１のステップは、前記検知ステップで満たすと判断された前記仮想検知条件に応じて、前記指令値を計算するステップを含む、シミュレーション方法。
【請求項６】
機械の動きを制御するコントローラにおいて実行される制御プログラムのシミュレーションを実行する制御部を有するシミュレーション装置で実行されるシミュレーションプログラムであって、
前記制御プログラムにしたがって、仮想空間において前記機械に対応する仮想機械を動かせるための指令値を計算する第１のステップと、
前記第１のステップで計算された前記指令値にしたがった前記仮想機械の動きを計算する第２のステップと、
前記第２のステップで計算された前記仮想機械の動きによって、前記仮想機械の状態が、前記機械のセンサの検知条件に対応する仮想検知条件を満たす状態となったか否かを判断する検知ステップとを前記制御部に実行させ、
前記第１のステップは、前記検知ステップで満たすと判断された前記仮想検知条件に応じて、前記指令値を計算するステップを含む、シミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、シミュレーション装置、シミュレーション方法、および、シミュレーションプログラムに関し、特に、対象物を扱う機械の動きを制御するコントローラにおいて実行される制御プログラムのシミュレーションを実行するのに適したシミュレーション装置、シミュレーション方法、および、シミュレーションプログラムに関する。
【背景技術】
【０００２】
従来、制御プログラムにしたがった制御のシミュレーションをするものがあった（たとえば、特許文献１、特許文献２、および、特許文献３）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−１１８９８１号公報
【特許文献２】特開２００７−９０４７９号公報
【特許文献３】特開２０１０−１０８２９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、このような従来技術においては、機械の所定の状態を検知するセンサをシミュレーションしていなかったため、センサの検知結果に応じた制御をシミュレーションすることはできなかった。
【０００５】
この発明は、上述の問題を解決するためになされたものであり、その目的の１つは、センサの検知結果に応じた制御のシミュレーションを実現することが可能なシミュレーション装置、シミュレーション方法、および、シミュレーションプログラムを提供することである。
【課題を解決するための手段】
【０００６】
上述の目的を達成するために、この発明のある局面によれば、シミュレーション装置は、機械の動きを制御するコントローラにおいて実行される制御プログラムのシミュレーションを実行する制御部を有する装置である。
【０００７】
制御部は、制御プログラムにしたがって、仮想空間において機械に対応する仮想機械を動かせるための指令値を計算する第１の計算部と、第１の計算部によって計算された指令値にしたがった仮想機械の動きを計算する第２の計算部と、第２の計算部によって計算された仮想機械の動きによって、仮想機械の状態が、機械のセンサの検知条件に対応する仮想検知条件を満たす状態となったか否かを判断する検知部とを含む。第１の計算部は、検知部によって満たすと判断された仮想検知条件に応じて、指令値を計算する。
【０００８】
好ましくは、第１の計算部、第２の計算部、および、検知部は、同一の時間軸にしたがって、それぞれ、指令値、仮想機械の動き、および、仮想検知条件を満たす状態となったか否かを判断する。
【０００９】
好ましくは、制御部は、さらに、シミュレーションを一時停止させる操作を受付ける操作受付部と、操作受付部によって一時停止させる操作が受付けられた場合、シミュレーションを一時停止させる動作制御部とを備える。
【００１０】
さらに好ましくは、制御部は、さらに、操作受付部によって一時停止させる操作が受付けられた場合、仮想機械の状態を示す情報を表示する表示制御部を備える。
【００１１】
この発明の他の局面によれば、シミュレーション方法は、機械の動きを制御するコントローラにおいて実行される制御プログラムのシミュレーションを実行する制御部を有するシミュレーション装置で行なわれる方法である。
【００１２】
シミュレーション方法は、制御部が、制御プログラムにしたがって、仮想空間において機械に対応する仮想機械を動かせるための指令値を計算する第１のステップと、第１のステップで計算された指令値にしたがった仮想機械の動きを計算する第２のステップと、第２のステップで計算された仮想機械の動きによって、仮想機械の状態が、機械のセンサの検知条件に対応する仮想検知条件を満たす状態となったか否かを判断する検知ステップとを含む。第１のステップは、検知ステップで満たすと判断された仮想検知条件に応じて、指令値を計算するステップを含む。
【００１３】
この発明のさらに他の局面によれば、シミュレーションプログラムは、機械の動きを制御するコントローラにおいて実行される制御プログラムのシミュレーションを実行する制御部を有するシミュレーション装置で実行されるプログラムである。
【００１４】
シミュレーションプログラムは、制御プログラムにしたがって、仮想空間において機械に対応する仮想機械を動かせるための指令値を計算する第１のステップと、第１のステップで計算された指令値にしたがった仮想機械の動きを計算する第２のステップと、第２のステップで計算された仮想機械の動きによって、仮想機械の状態が、機械のセンサの検知条件に対応する仮想検知条件を満たす状態となったか否かを判断する検知ステップとを制御部に実行させる。第１のステップは、検知ステップで満たすと判断された仮想検知条件に応じて、指令値を計算するステップを含む。
【発明の効果】
【００１５】
この発明に従えば、センサの検知結果に応じた制御のシミュレーションを実現することが可能なシミュレーション装置、シミュレーション方法、および、シミュレーションプログラムを提供することができる。
【図面の簡単な説明】
【００１６】
【図１】この発明の実施の形態に従う制御システムの構成を説明する図である。
【図２】この発明の実施の形態に従うＰＣのハードウェア構成を説明する図である。
【図３】ＣＰＵがシミュレーションプログラムを実行することにより実現される機能ブロックを説明する図である。
【図４】第１の実施の形態におけるシミュレーションの制御の流れを示すフローチャートである。
【図５】第１の実施の形態における機械の制御のシミュレーションの状況を示す図である。
【図６】第１の実施の形態における機械の制御の一例を示す図である。
【図７】第１の実施の形態におけるセンサの変形例を示す図である。
【図８】第１の実施の形態における機械の変形例を示す図である。
【図９】第２の実施の形態における機械の例を示す図である。
【図１０】第２の実施の形態における機械の初期位置を示す図である。
【図１１】第３の実施の形態における機械の例を示す図である。
【図１２】第４の実施の形態における機械の例を示す図である。
【発明を実施するための形態】
【００１７】
以下、この発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００１８】
［第１の実施の形態］
図１は、この発明の実施の形態に従う制御システムの構成を説明する図である。図１を参照して、この発明の実施の形態に従う制御システムは、サーバ２と、ネットワーク４と、ＰＣ（Personal Computer）６と、コントローラ１４と、制御対象装置１６とから構成されている。
【００１９】
サーバ２は、ネットワーク４を介してＰＣ６と接続されている。ＰＣ６は、制御対象装置１６を制御するコントローラ１４と通信可能に接続されている。
【００２０】
ＰＣ６は、この発明の一実施形態におけるシミュレーション装置に相当する。ＰＣ６には、シミュレーションプログラムを含むコントローラサポートプログラム８がインストールされており、また、ユーザが作成した制御プログラム１０が記憶されている。ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）１２は、コントローラサポートプログラム８を格納している。ＰＣ６にインストールされているコントローラサポートプログラム８は、このＣＤ−ＲＯＭ１２からインストールされたものである。
【００２１】
コントローラ１４は、制御対象装置１６の動きを制御する。この発明の実施の形態においては、コントローラ１４として一例として、ＰＬＣ（Programmable Logic Controller）が用いられる。すなわち、このＰＬＣには、いわゆるモーションコントロール機能が備えられている。コントローラ１４は、制御対象装置１６に対する制御内容を規定する制御プログラム１５を記憶している。コントローラ１４は、制御周期ごとに制御プログラム１５を一巡実行する。ここで、コントローラ１４に記憶されている制御プログラム１５は、ＰＣ６に記憶されている制御プログラム１０をコピーしたコピーデータであり、ＰＣ６から送信されたものである。
【００２２】
制御対象装置１６は、サーボモータ、ステッピングモータなどのモータ１８およびモータを駆動するモータドライバ１７を含む。
【００２３】
モータ１８はモータドライバ１７から駆動電流を供給される。モータドライバ１７は、制御プログラム１５を実行するコントローラ１４から制御周期ごとに位置の指令値を与えられ、それに応じた駆動電流をモータ１８に供給する。モータ１８がサーボモータである場合、モータ１８にはエンコーダが備えられており、モータ１８の回転位置の実測値がエンコーダによって検出される。モータの回転位置の実測値は、モータドライバ１７がフィードバック制御に利用する。
【００２４】
なお、上記においては、ＣＤ−ＲＯＭ１２を介して、ＰＣ６にシミュレーションプログラムをインストールする場合について説明したが、特にこれに限られず、サーバ２からネットワーク４を介してシミュレーションプログラムをＰＣ６にダウンロードするようにしても良い。制御プログラムについても同様である。
【００２５】
図２は、この発明の実施の形態に従うＰＣ６のハードウェア構成を説明する図である。図２を参照して、この発明の実施の形態に従うＰＣ６は、処理手段であるＣＰＵ９０１と、記憶手段であるＲＯＭ９０２、ＲＡＭ９０３、およびＨＤＤ９０４と、データ読取部であるＣＤ−ＲＯＭ駆動装置９０８と、通信手段である通信ＩＦ９０９と、表示手段であるモニタ９０７と、入力手段であるキーボード９０５およびマウス９０６とを含む。なお、これらの部位は、内部バス９１０を介して互いに接続される。
【００２６】
ＨＤＤ９０４は、典型的には不揮発性の磁気メモリであり、ＣＤ−ＲＯＭ駆動装置９０８によりＣＤ−ＲＯＭ１２から読取られたシミュレーションプログラムを格納する。また、制御プログラム１５も格納している。
【００２７】
ＣＰＵ９０１は、ＨＤＤ９０４に格納されている、本実施の形態に従うコントローラサポートプログラム８をＲＡＭ９０３などに展開して実行する。
【００２８】
ＲＡＭ９０３は、揮発性メモリであり、ワークメモリとして使用される。ＲＯＭ９０２は、一般的に、オペレーティングシステム（ＯＳ：Operating System）等のプログラムを格納している。
【００２９】
通信ＩＦ９０９は、典型的にはイーサネット（登録商標）およびＵＳＢ（Universal Serial Bus）といった汎用的な通信プロトコルをサポートし、ネットワーク４を介してサーバ２との間でデータ通信を提供するとともに、コントローラ１４との間でデータ通信を提供する。
【００３０】
モニタ９０７は、液晶表示装置、ＣＲＴ（Cathode Ray Tube）、プラズマディスプレイ装置などで構成され、ＰＣ６による処理結果などを表示する。キーボード９０５は、ユーザによるキー入力を受付け、マウス９０６は、ユーザによるポインティング操作を受付ける。
【００３１】
図３は、ＣＰＵ９０１がコントローラサポートプログラム８を実行することにより実現される機能ブロックを説明する図である。図３を参照して、ここでは、ユーザインタフェース部８０２と、表示データ作成部８０４と、シミュレーション部８０６と、制御プログラム記憶部８０８と、制御プログラム編集部８１０と、コントローラインタフェース部８１２とが示されている。
【００３２】
ユーザインタフェース部８０２は、ＰＣ６のモニタ９０７に表示するウインドウ画面の内容を作成し、また、キーボード９０５やマウス９０６によるユーザの操作を受け付ける部位である。
【００３３】
制御プログラム編集部８１０は、ユーザに制御プログラムの入力および編集を行わせる。制御プログラムを実行するためにコンパイルが必要である場合はコンパイルも行う。作成された制御プログラムは、コントローラインタフェース部８１２を介してコントローラ１４に送られる。また、作成された制御プログラムは、ＨＤＤ９０４の所定領域である制御プログラム記憶部８０８に格納される。また、制御プログラム編集部８１０は、コントローラインタフェース部８１２を介してコントローラ１４に記憶されている制御プログラム１５を読み出して編集することもできる。
【００３４】
シミュレーション部８０６は、コントローラ１４のシミュレータである。シミュレーション部８０６は、制御プログラム記憶部８０８に記憶された制御プログラム１０に従ってコントローラ１４が制御プログラム１５を実行する動作をシミュレートし、コントローラ１４が制御周期ごとに出力するはずの位置の指令値を算出する。
【００３５】
また、シミュレーション部８０６は、外部からの信号が到来して制御プログラムの動作に影響を与える状態をシミュレートしたり、制御プログラム１５の実行自体によってコントローラ１４のメモリの記憶内容などのコントローラ１４の内部状態が変化して、その変化が制御プログラム１５の動作に影響を与える状態をシミュレートしたりすることができる。
【００３６】
また、シミュレーション部８０６は、ユーザインタフェース部８０２を介してシミュレーション実行に関するユーザの指示を受け付ける。すなわち、ユーザインタフェース部８０２は、シミュレーション部８０６に対するユーザの指示を受け付ける手段としても働く。
【００３７】
表示データ作成部８０４は、シミュレーション部８０６によって作成された実行結果データの時間的な変化を表示するための表示データを作成する。表示データ作成部８０４は、作成した表示データをユーザインタフェース部８０２に送ることによりＰＣ６のモニタ９０７に表示データをグラフや文字の態様や３Ｄ表現の態様で表示する。
【００３８】
この実施の形態においては、実空間に対応する仮想的な空間である３Ｄ空間には、実空間の機械（たとえば、エアシリンダ）に対応する仮想機械（たとえば、仮想エアシリンダ）が配置される。
【００３９】
図３で示したシミュレーション部８０６は、３Ｄシミュレータと、機械制御シミュレータとを実行する。
【００４０】
３Ｄシミュレータは、データトレースで取得した結果に基づいて３Ｄ空間にオブジェクト（この実施の形態においては、仮想機械）を表示する。この実施の形態においては、３Ｄシミュレータは、仮想機械に設けられた仮想センサ（たとえば、エアシリンダのピストン位置を検出する位置センサ）の検出条件（たとえば、所定のピストン位置にピストンが存在といった条件）が成立したか否かを判断する。仮想センサは、実空間の機械のセンサに対応するものである。
【００４１】
機械制御シミュレータは、３Ｄ空間における仮想機械を制御する。具体的には、機械制御シミュレータは、仮想機械への制御の指令値を計算して、その指令値に対する仮想機械の動きを計算する。この実施の形態においては、機械制御シミュレータは、満たした検出条件に応じて、指令値を計算する。
【００４２】
３Ｄシミュレータおよび機械制御シミュレータの同期を取る手法としては、（１）機械制御シミュレータが計算された機械、ワークの状態を３Ｄシミュレータに送信し、（２）３Ｄシミュレータが、受信した機械、ワークを３Ｄ空間に表示し、（３）３Ｄシミュレータが、センサの検出条件が成立したか否かを判断し、検出条件が成立した場合は、その旨の情報を機械制御シミュレータに送信し、（４）機械制御シミュレータが、受信した情報に基づき、仮想機械を制御するといった連携を取ることによって同期を取る手法がある。
【００４３】
図４は、第１の実施の形態におけるシミュレーションの制御の流れを示すフローチャートである。図４を参照して、シミュレーション部８０６は、機械制御シミュレータを実行することによって、ステップＳ３１１で、ワークの初期位置を設定する。
【００４４】
次に、シミュレーション部８０６は、機械制御シミュレータを実行することによって、ステップＳ３１２で、制御プログラム１５の実行を開始することによって、仮想機械の制御を開始する。
【００４５】
ステップＳ３１３では、シミュレーションを一時停止する操作がユーザインタフェース部８０２から受付けられたか否かを判断する。受付けられていないと判断した場合（ステップＳ３１３でＮＯと判断した場合）、シミュレーション部８０６は、実行する処理をステップＳ３１６の処理に進める。
【００４６】
一方、一時停止する操作が受付けられたと判断した場合（ステップＳ３１３でＹＥＳと判断した場合）、シミュレーション部８０６は、ステップＳ３１４で、シミュレーションを一時停止させて、機械の状態を表現するための変数などのトレース結果などをＰＣ６のモニタ９０７に表示するための情報をユーザインタフェース部８０２に受け渡す。
【００４７】
そして、一時停止を解除する操作がユーザインタフェース部８０２から受付けられたか否かを判断する。受付けられていないと判断した場合（ステップＳ３１５でＮＯと判断した場合）、シミュレーション部８０６は、ステップＳ３１５の処理を繰返す。
【００４８】
一方、一時停止を解除する操作が受付けられたと判断した場合（ステップＳ３１５でＹＥＳと判断した場合）、ステップＳ３１６で、シミュレーション部８０６は、後述するステップＳ３２２で変更されるセンサの状態に基づき、シーケンス制御を実行する。ステップＳ３１７では、シミュレーション部８０６は、センサの状態に基づいて、モーション制御を実行する。
【００４９】
そして、シミュレーション部８０６は、ステップＳ３１８で、モーション制御の結果としての機械およびワークの状態を計算し、ステップＳ３１９で、計算した機械およびワークの状態を、３Ｄシミュレータに送信する。
【００５０】
次いで、シミュレーション部８０６は、３Ｄシミュレータを実行することによって、ステップＳ１１２で、機械制御シミュレータから送信された機械およびワークの状態を受信し、ステップＳ１１３で、受信した状態の機械およびワークを、モニタ９０７の３Ｄ空間に表示させるために、必要な実行結果データが表示データ作成部８０４に受け渡される。
【００５１】
次に、シミュレーション部８０６は、ステップＳ１２１で、センサの検知を変更する条件が成立したか否かを判断する。たとえば、エアシリンダの場合、ピストンの位置を検知するセンサについて、ピストンの位置が、センサの検知位置に存在するようになったことで、センサの検知をオン状態に変更する条件が成立したと判断する。また、ピストンの位置が、センサの検知位置に存在しなくなったことで、センサの検知をオフ状態に変更する条件が成立したと判断する。
【００５２】
このように、３Ｄシミュレータによって機械の部分の位置を特定することができるので、センサの検知を変更する条件が成立したか否かを判断することができる。
【００５３】
センサ検知変更条件が成立したと判断した場合（ステップＳ１２１でＹＥＳと判断した場合）、シミュレーション部８０６は、ステップＳ１２２で、センサ検知変更となったセンサの識別情報およびどのように変更になったかを示す変更内容情報を、機械制御シミュレータに送信する。
【００５４】
ステップＳ１２２の後、および、センサ検知変更条件が成立していないと判断した場合（ステップＳ１２１でＮＯと判断した場合）、シミュレーション部８０６は、実行する処理をステップＳ１１２の処理に戻す。
【００５５】
シミュレーション部８０６は、機械制御シミュレータを実行することによって、ステップＳ３２１で、センサ識別情報および変更内容情報を含むセンサ情報を３Ｄシミュレータから受信したか否かを判断する。
【００５６】
センサ情報を受信したと判断した場合（ステップＳ３２１でＹＥＳと判断した場合）、シミュレーション部８０６は、センサ情報に含まれるセンサ識別情報で示されるセンサのセンサ状態を、センサ情報に含まれる変更内容情報で示される内容に変更する。
【００５７】
ステップＳ３２２の後、および、センサ情報を受信していないと判断した場合（ステップＳ３２１でＮＯと判断した場合）、シミュレーション部８０６は、実行する処理をステップＳ３１３の処理に戻す。
【００５８】
仮想機械が単動型エアシリンダ６１０である場合、仮想機械を定義する設定項目は、エア供給口にエア圧が加圧されているか否かを示すブール型の変数ａ、単動型エアシリンダ６１０のストロークを示す定数ｂ、および、単動型エアシリンダのタイプ（押出型または引込型）を示す定数ｃである。なお、ブール型の変数は、「真（ｔｒｕｅ）」および「偽（ｆａｌｓｅ）」の２種類の値を取る。
【００５９】
定数ｂおよび定数ｃは、仮想機械である単動型エアシリンダ６１０を選定する際に決定される。変数ａは、シミュレーションの実行とともに値を変える。
【００６０】
図５は、第１の実施の形態における機械の制御のシミュレーションの状況を示す図である。図５を参照して、ここでは、単動型エアシリンダ６１０のタイプを示す定数ｃが、押出型を示す値であることとする。時間が２ｍｓのときに、単動型エアシリンダ６１０のエア供給口（図で矢印で示している部分）にエア圧が加圧されるような制御が行なわれると、押出型であるので、変数ａが「真」となり、単動型エアシリンダ６１０の状態が、ピストンが定数ｂで示されるストロークいっぱいまで伸びきった状態となる。
【００６１】
また、時間が１２８ｍｓのときに、単動型エアシリンダ６１０のエア供給口のエア圧が開放される制御が行なわれると、変数ａが「偽」となり、単動型エアシリンダ６１０の状態が、ピストンが縮みきった状態となる。再度、時間が２５８ｍｓのときに、単動型エアシリンダ６１０のエア供給口のエア圧が加圧される制御が行なわれ、変数ａが「真」となり、単動型エアシリンダ６１０の状態が、いっぱいまで伸びきった状態となる。
【００６２】
図６は、第１の実施の形態における機械の制御の一例を示す図である。図６を参照して、単動型エアシリンダ６１０Ａ，６１０Ｂには、それぞれ、単動型エアシリンダ６１０Ａ，６１０Ｂのピストンが伸びきった状態を検知するセンサ６１１Ａ，６１１Ｂが設けられている。
【００６３】
たとえば、制御プログラム６１５に従って、単動型エアシリンダ６１０Ａのピストンが伸びきったことを条件として、単動型エアシリンダ６１０Ｂのピストンを伸ばす制御をする場合について考える。
【００６４】
従来のシミュレーションの場合は、このセンサ６１１Ａ，６１１Ｂによる検知をシミュレーションすることができなかった。この実施の形態においては、図４のステップ１２１，ステップＳ１２２で示したように、センサ６１１Ａ，６１１Ｂの検知変更条件が成立した場合（ここでは、センサ６１１Ａのピストンが伸びきって、その状態がセンサ６１１Ａによって検知されたという検知変更条件が成立した場合）、３Ｄシミュレータによって、そのセンサの識別情報（たとえば、センサ６１１Ａを特定するために予め割振られる番号）および変更内容情報（たとえば、単動型エアシリンダ６１０Ａの変数ａが「偽」から「真」になったこと）が、機械制御シミュレータに送信される。
【００６５】
そして、機械制御シミュレータでは、受信したセンサ状態に基づきシーケンス制御およびモーション制御が行なわれる（たとえば、単動型エアシリンダ６１０Ａのピストンが伸びきったとのセンサ６１１Ａの検知結果に基づき単動型エアシリンダ６１０Ｂのピストンを伸ばす制御が行なわれる）。
【００６６】
このように、３Ｄシミュレータがセンサ６１１Ａによる検知をシミュレーションできるようにしたので、センサ６１１Ａの検知結果に基づいた制御のシミュレーションを行なうことができる。
【００６７】
図６で示した単動型エアシリンダ６１０Ａ，６１０Ｂにおいては、センサ６１１Ａ，６１１Ｂは、それぞれ、単動型エアシリンダ６１０Ａ，６１０Ｂのピストンが伸びきった状態を検知するようにした。
【００６８】
図７は、第１の実施の形態におけるセンサの変形例を示す図である。図７を参照して、図６で説明したものに限定されず、単動型エアシリンダ６１０Ｃのセンサ６１１Ｃは、図７で示すような、ピストンが伸びきった状態と縮みきった状態との間の位置にある状態を検知するものであってもよい。また、縮みきった状態を検知するものであってもよい。
【００６９】
図８は、第１の実施の形態における機械の変形例を示す図である。図８を参照して、図５および図６で説明した押出型に限定されず、単動型エアシリンダ６１０Ｄは、図８で示すような引込型であってもよい。この場合、単動型エアシリンダのタイプ（押出型または引込型）を示す定数ｃは、引込型を示す値に設定される。
【００７０】
［第２の実施の形態］
第１の実施の形態においては、単動型エアシリンダのシミュレーションを行なう場合の例を説明した。第２の実施の形態においては、複動型エアシリンダのシミュレーションを行なう場合の例を説明する。
【００７１】
図９は、第２の実施の形態における機械の例を示す図である。図９を参照して、仮想機械が複動型エアシリンダ６２０Ａである場合、仮想機械を定義する設定項目は、ピストンと反対側のエア供給口にエア圧が加圧されているか否かを示すブール型の変数ｄ、ピストン側のエア供給口にエア圧が加圧されているか否かを示すブール型の変数ｅ、複動型エアシリンダ６２０Ａのストロークを示す定数ｆ、および、複動型エアシリンダ６２０Ａの初期位置を示す定数ｇである。
【００７２】
定数ｆおよび定数ｇは、仮想機械である複動型エアシリンダ６２０Ａを選定する際に決定される。変数ｄおよび変数ｅは、シミュレーションの実行とともに値を変える。センサ６２１Ａは、ピストンの伸びきった状態を検知する。
【００７３】
複動型エアシリンダ６２０Ａのピストンと反対側のエア供給口にエア圧が加圧されるとともに、ピストン側のエア供給口のエア圧が開放されるような制御が行なわれると、変数ｄおよび変数ｅは、それぞれ、「真」および「偽」となり、複動型エアシリンダ６２０Ａの状態が、ピストンが定数ｆで示されるストロークいっぱいまで伸びきった状態となる。
【００７４】
複動型エアシリンダ６２０Ａのピストン側のエア供給口にエア圧が加圧されるとともに、ピストンと反対側のエア供給口のエア圧が開放されるような制御が行なわれると、変数ｄおよび変数ｅは、それぞれ、「偽」および「真」となり、複動型エアシリンダ６２０Ａの状態が、ピストンが縮みきった状態となる。
【００７５】
第１の実施の形態の単動型エアシリンダ６１０と同様、第２の実施の形態の複動型エアシリンダ６２０Ａにおいても、３Ｄシミュレータがセンサ６２１Ａによる検知をシミュレーションできるようにしたので、センサ６２１Ａの検知結果に基づいた制御のシミュレーションを行なうことができる。
【００７６】
図１０は、第２の実施の形態における機械の初期位置を示す図である。図１０を参照して、第２の実施の形態においては、複動型エアシリンダ６２０Ａの初期位置を示す定数ｇを設けるようにしたので、図１０（Ａ）で示すようなピストンを完全に引込んだ状態、図１０（Ｂ）で示すようなピストンが途中まで押出された状態、および、図１０（Ｃ）で示すようなピストンが完全に押出された状態などの様々な初期位置を設定することができる。
【００７７】
［第３の実施の形態］
第１の実施の形態および第２の実施の形態においては、機械がエアシリンダである場合のシミュレーションを行なう例を説明した。第３の実施の形態においては、機械がボールねじである場合のシミュレーションを行なう例を説明する。
【００７８】
図１１は、第３の実施の形態における機械の例を示す図である。図１１を参照して、仮想機械がボールねじ６３１である場合、制御プログラム６３５に従って、ボールねじ６３１のスクリュー軸が回転させられるように制御されることによって、可動部６３２が左右に動かされる。
【００７９】
そして、終端センサ６３３，６３４の位置まで可動部６３２が来ると、終端センサ６３３，６３４によって、可動部６３２が終端まで来たことが検知される。
【００８０】
図５のステップＳ１２１が実行されることで、シミュレーション部８０６は、終端センサ６３３，６３４について、可動部６３２が終端の位置に達したことで、終端センサ６３３，６３４の検知をオン状態に変更する条件が成立したと判断する。また、可動部６３２が、終端に存在しなくなったことで、終端センサ６３３，６３４の検知をオフ状態に変更する条件が成立したと判断する。
【００８１】
これにより、３Ｄシミュレータが終端センサ６３３，６３４による検知をシミュレーションできるようにしたので、制御プログラム６３５によって、終端センサ６３３，６３４の検知結果に基づいた制御のシミュレーションを行なうことができる。たとえば、終端センサ６３３，６３４の検知がオン状態に変更された場合に、アラームを出すように制御したり、可動部６３２を原点に復帰させる命令を実行したりできる。
【００８２】
［第４の実施の形態］
第１の実施の形態および第２の実施の形態においては、機械がエアシリンダである場合のシミュレーションを行なう例を説明した。第４の実施の形態においては、機械がロボットアームである場合のシミュレーションを行なう例を説明する。
【００８３】
図１２は、第４の実施の形態における機械の例を示す図である。図１２を参照して、仮想機械がロボットアーム６５０Ａ，６５０Ｂである場合、制御プログラム６５５に従って、ロボットアーム６５０Ａ，６５０Ｂが制御されることによって、ロボットアーム６５０Ａ，６５０Ｂが動かされる。
【００８４】
そして、ロボットアーム６５０Ａ，６５０Ｂが互いに衝突すると、衝突検知センサ６５１Ａ，６５１Ｂによって、衝突が検知される。
【００８５】
図５のステップＳ１２１が実行されることで、シミュレーション部８０６は、衝突検知センサ６５１Ａ，６５１Ｂについて、ロボットアーム６５０Ａ，６５０Ｂが互いに衝突する位置関係になったことで、衝突検知センサ６５１Ａ，６５１Ｂの検知をオン状態に変更する条件が成立したと判断する。また、互いに衝突する位置関係でなくなったことで、衝突検知センサ６５１Ａ，６５１Ｂの検知をオフ状態に変更する条件が成立したと判断する。
【００８６】
これにより、３Ｄシミュレータが衝突検知センサ６５１Ａ，６５１Ｂによる検知をシミュレーションできるようにしたので、制御プログラム６５５によって、衝突検知センサ６５１Ａ，６５１Ｂの検知結果に基づいた制御のシミュレーションを行なうことができる。たとえば、衝突検知センサ６５１Ａ，６５１Ｂの検知がオン状態に変更された場合に、緊急停止信号をオン状態にして、ロボットアーム６５０Ａ，６５０Ｂを停止させる制御を行なうことができる。
【００８７】
［まとめ］
（１）  以上説明したように、上述した実施の形態に係るシミュレーション装置（たとえば、ＰＣ６）は、機械（たとえば、３Ｄ空間の単動型エアシリンダ６１０，６１０Ａ〜６１０Ｄ、複動型エアシリンダ６２０Ａ、ボールねじ６３１、ロボットアーム６５０Ａ，６５０Ｂに対応する実空間の機械）の動きを制御するコントローラ（たとえば、コントローラ１４）において実行される制御プログラム（たとえば、制御プログラム１０，１５，６１５，６３５，６５５）のシミュレーションを実行する制御部（たとえば、ＣＰＵ９０１）を有する装置である。
【００８８】
制御部は、第１の計算部と、第２の計算部と、検知部とを含む。第１の計算部は、制御プログラムにしたがって、仮想空間（たとえば、３Ｄ空間）において機械に対応する仮想機械（たとえば、単動型エアシリンダ６１０，６１０Ａ〜６１０Ｄ、複動型エアシリンダ６２０Ａ、ボールねじ６３１、ロボットアーム６５０Ａ，６５０Ｂ）を動かせるための指令値を計算する部分である（たとえば、図４のステップＳ３１６，ステップＳ３１７が実行されることでＣＰＵ９０１に形成される部分である）。
【００８９】
第２の計算部は、第１の計算部によって計算された指令値にしたがった仮想機械の動きを計算する部分である（たとえば、図４のステップＳ３１８が実行されることでＣＰＵ９０１に形成される部分である）。
【００９０】
検知部は、第２の計算部によって計算された仮想機械の動きによって、仮想機械の状態が、機械のセンサの検知条件に対応する仮想検知条件を満たす状態となったか否かを判断する部分である（たとえば、図４のステップＳ３１９，ステップＳ１１２，ステップＳ１１３，ステップＳ１２１が実行されることでＣＰＵ９０１に形成される部分である）。
【００９１】
第１の計算部は、検知部によって満たすと判断された仮想検知条件に応じて、指令値を計算する（たとえば、図４のステップＳ１２２，ステップＳ３２１，ステップＳ３２２，ステップＳ３１６，ステップＳ３１７が実行されることでＣＰＵ９０１に形成される部分である）。
【００９２】
このように、制御プログラムにしたがって、仮想空間において機械に対応する仮想機械を動かせるための指令値が計算され、計算された指令値にしたがった仮想機械の動きが計算され、計算された仮想機械の動きによって、仮想機械の状態が、機械のセンサの検知条件に対応する仮想検知条件を満たす状態となったか否かが判断され、満たすと判断された仮想検知条件に応じて、指令値が計算される。
【００９３】
これによれば、実空間の機械に対応する仮想空間における仮想機械が、実空間のセンサに対応する仮想空間のセンサによる検知結果に応じて制御される。このため、センサの検知結果に応じた制御のシミュレーションを実現することができる。
【００９４】
（２）  また、第１の計算部、第２の計算部、および、検知部は、同一の時間軸にしたがって、それぞれ、指令値、仮想機械の動き、および、仮想検知条件を満たす状態となったか否かを判断する（たとえば、図４の機械制御シミュレータ、および、３Ｄシミュレータは、それぞれ、データをやり取りしながら、それぞれのループ処理を実行するので、それぞれのやり取りのタイミングで同期が取られ、共通の時間軸にしたがって動作する）。これによれば、同期性を持った統合シミュレーションを実現できる。
【００９５】
（３）  また、制御部は、さらに、シミュレーションを一時停止させる操作を受付ける操作受付部（たとえば、図４のステップＳ３１３が実行されることでＣＰＵ９０１に形成される部分）と、操作受付部によって一時停止させる操作が受付けられた場合、シミュレーションを一時停止させる動作制御部（たとえば、図４のステップＳ３１４が実行されることでＣＰＵ９０１に形成される部分）とを備える。これによれば、センサの検知結果に応じたシミュレーションの制御をする場合であってもシミュレーションを一時停止させることができる。
【００９６】
（４）  さらにまた、制御部は、さらに、操作受付部によって一時停止させる操作が受付けられた場合、仮想機械の状態を示す情報を表示する表示制御部（たとえば、図４のステップＳ３１４が実行されることでＣＰＵ９０１に形成される部分）を備える。これによれば、シミュレーションの一時停止中に、仮想機械の状態を示す情報を確認することによって制御プログラムをデバッグすることができる。
【００９７】
［変形例］
（１）  前述した実施の形態においては、図５で示したように、機械（たとえば、単動型エアシリンダ６１０）の部分の状態が、時間０ｍｓで瞬間的に、第１の状態から第２の状態に変化することとした（たとえば、ピストンが縮みきった状態から伸びきった状態に変化することとした）。しかし、これに限定されず、機械の部分の変化に要する時間（たとえば、ピストンの伸縮に要する時間）を加味してシミュレーションが行なわれるようにしてもよい。
【００９８】
また、この機械の部分の変化に要する時間を、固定的に設定できるようにしてもよいし、負荷などに応じて変化可能なように設定できるようにしてもよい。
【００９９】
（２）  前述した実施の形態においては、シミュレーション部８０６が実行するシミュレータが、３Ｄシミュレータ、および、機械制御シミュレータの２つに分かれている場合について説明した。
【０１００】
しかし、これに限定されず、これらの２つが統合されていてもよい。このようにすれば、それぞれのシミュレータ間でのデータのやり取りを行なわずに済むので、効率よくシミュレーションを実行することができる。
【０１０１】
（３）  前述した実施の形態における機械の部分の位置を検知するセンサとしては、機械的な接触を検知することによって位置を検知するセンサであってもよいし、超音波、赤外線および光などで位置を検知するセンサであってもよい。
【０１０２】
（４）  前述した実施の形態においては、シミュレーション装置の発明として説明した。しかし、これに限定されず、シミュレーション装置で行なわれるシミュレーション方法の発明として捉えることができるし、シミュレーション装置で実行されるシミュレーションプログラムの発明として捉えることができる。
【０１０３】
（５）  前述した実施の形態においては、仮想センサは、実空間の機械のセンサに対応するものであることとした。たとえば、第１の実施の形態で示したように、仮想センサは、実空間の単動型エアシリンダ６１０Ａ〜６１０Ｃのセンサ６１１Ａ〜６１１Ｃである。また、第２の実施の形態で示したように、仮想センサは、実空間の複動型エアシリンダ６２０Ａのセンサ６２１Ａである。また、第３の実施の形態で示したように、仮想センサは、実空間のボールねじ６３１の終端センサ６３３，６３４である。また、第４の実施の形態で示したように、仮想センサは、ロボットアーム６５０Ａ，６５０Ｂの衝突検知センサ６５１Ａ，６５１Ｂである。
【０１０４】
しかし、これに限定されず、仮想センサは、実空間の機械のセンサに対応しない、仮想空間である３Ｄ空間のみに存在するセンサであってもよい。たとえば、仮想センサは、ロボットアームのすべての外面の接触を検知できるセンサであってもよい。３Ｄシミュレータでは、３Ｄ空間で機械を表現しているので、機械同士の相対的な位置を計算することができる。この機械同士の相対的な距離が０の点が生じたか否かを判断することによって、機械同士の接触を検知することができる。
【０１０５】
このような仮想センサに対応するセンサを実空間で実現することは現実的ではない。しかし、制御プログラムのシミュレーションにおいて機械同士の接触を検知するために仮想センサを設ければ、制御プログラムによる制御によって機械同士の接触が発生するか否かを検証することができる。
【０１０６】
（６）  前述した第４の実施の形態においては、図１２で示したように、ロボットアーム６５０Ａ，６５０Ｂの衝突検知センサ６５１Ａ，６５１Ｂが、それぞれ、アームの先端部に存在し、先端部の接触を検知可能であることとした。
【０１０７】
しかし、これに限定されず、ロボットアームの所定部の接触を検知可能な衝突検知センサであればよく、ロボットアームの下腕部全体の接触を検知可能な衝突検知センサであってもよいし、ロボットアームの上腕部全体の接触を検知可能な衝突検知センサであってもよいし、ロボットアームの上腕部および下腕部の全体の接触を検知可能な衝突検知センサであってもよい。
【０１０８】
（７）  今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１０９】
２  サーバ、４  ネットワーク、８  コントローラサポートプログラム、１０，１５  制御プログラム、１２  ＣＤ−ＲＯＭ、１４  コントローラ、１６  制御対象装置、１７  モータドライバ、１８  モータ、６１０，６１０Ａ〜６１０Ｄ  単動型エアシリンダ、６１１Ａ〜６１１Ｃ，６２１Ａ  センサ、６２０Ａ  複動型エアシリンダ、６３１  ボールねじ、６３２  可動部、６３３，６３４  終端センサ、６５０Ａ，６５０Ｂ  ロボットアーム、６５１Ａ，６５１Ｂ  衝突検知センサ、８０２  ユーザインタフェース部、８０４  表示データ作成部、８０６  シミュレーション部、８０８  制御プログラム記憶部、８１０  制御プログラム編集部、８１２  コントローラインタフェース部、９０１  ＣＰＵ、９０２  ＲＯＭ、９０３  ＲＡＭ、９０４  ＨＤＤ、９０５  キーボード、９０６  マウス、９０７  モニタ、９０８  ＣＤ−ＲＯＭ駆動装置、９０９  通信ＩＦ、９１０  内部バス。
【図１】
2013206062.tif 000003
【図２】
2013206062.tif 000004
【図３】
2013206062.tif 000005
【図４】
2013206062.tif 000006
【図５】
2013206062.tif 000007
【図６】
2013206062.tif 000008
【図７】
2013206062.tif 000009
【図８】
2013206062.tif 000010
【図９】
2013206062.tif 000011
【図１０】
2013206062.tif 000012
【図１１】
2013206062.tif 000013
【図１２】
2013206062.tif 000014