(57)【要約】【課題】モーション制御を含む制御プログラムをシミュレーション実行する場合に、実行の開始から終了までの間の途中の制御周期からの再実行を可能にするコントローラサポート装置を提供する。【解決手段】制御プログラムのシーケンス制御部分を１周期分シミュレーション実行し、シーケンス制御部分に関する実行結果を生成する（ステップＳ３６）。モーション制御部分を１周期分シミュレーション実行し、モーション制御部分に関する実行結果を生成する（ステップＳ３８）。そして、次に、制御周期番号をインクリメント更新する（ステップＳ４０）。再開可能制御周期かどうかを判断し、再開可能制御周期であると判断した場合には、前の制御周期で更新された再開用データバッファ８２８の内容を再開用データ記憶部８２６に保存する（ステップＳ４４）。【選択図】図７
2011192016.tif 000002
【特許請求の範囲】
【請求項１】
機械の動きを制御するコントローラにおいて制御周期ごとに実行される、シーケンス制御部分およびモーション制御部分を含む制御プログラムをシミュレーション実行することができるコントローラサポート装置であって、
前記制御プログラムをシミュレーション実行し実行結果データを生成するシミュレーション手段と、
前記シミュレーション手段によって生成された実行結果データの時間的な変化を表示するための表示データを作成する表示データ作成手段と、
前記シミュレーション手段に対するユーザの指示を受け付ける受け付け手段と、
前記表示データ作成手段によって作成された表示データを表示することができる表示器とを備え、
前記シミュレーション手段は、
前記制御プログラムのシーケンス制御部分をシミュレーション実行し、前記シーケンス制御部分に関する実行結果データを生成するシーケンス演算実行部と、
前記シーケンス演算実行部がシミュレーション実行するために使用するシーケンス変数記憶部と、
前記制御プログラムのモーション制御部分をシミュレーション実行し、前記モーション制御部分に関する実行結果データを生成するモーション演算実行部と、
前記モーション演算実行部がシミュレーション実行するために使用するモーション変数記憶部と、
制御周期の実行回数を計数する制御周期計数部と、
シミュレーションの再実行を開始することができる制御周期である再開可能制御周期に対応する前記実行回数のデータと、前記シーケンス変数記憶部および前記モーション変数記憶部に記憶されているデータのうち前記再開可能制御周期からシミュレーションの再実行を開始するのに用いられる変数データとを含む再開用データを保存する再開用データ記憶部とを備え、
前記シミュレーション手段は、前記再開可能制御周期を特定し、前記再開可能制御周期に対応する前記再開用データを前記再開用データ記憶部に記憶し、
前記シミュレーション手段は、再実行を開始する制御周期を特定するための指定を前記受け付け手段から取得し、前記指定を用いて再実行を開始する制御周期を特定し、特定した制御周期に対応する前記保存された再開用データを用いて前記特定された制御周期からシミュレーションの再実行を開始する、コントローラサポート装置。
【請求項２】
前記制御プログラムを編集することができる編集手段をさらに備え、
前記編集手段は、前記シミュレーション手段においてシミュレーション実行されたことがある制御プログラムを修正するユーザの操作を受け付け可能にされており、
前記シミュレーション手段は、前記編集手段により修正された制御プログラムについて、当該制御プログラムが修正される前に保存した再開用データを用いてシミュレーションの再実行を開始するユーザの操作を受け付け可能にされている、請求項１に記載のコントローラサポート装置。
【請求項３】
前記制御プログラムのモーション制御部分は、それぞれの前記制御周期において、指令値を算出する状態である活性状態および前記活性状態でない非活性状態のいずれかの状態であり、
前記シミュレーション手段は、前記モーション制御部分が前記非活性状態から前記活性状態となる制御周期を基準として前記再開可能制御周期を特定する、請求項１に記載のコントローラサポート装置。
【請求項４】
前記制御プログラムのモーション制御部分は、それぞれの前記制御周期において、当該モーション制御部分が実行中の状態である実行中状態および前記実行中状態でない非実行中状態のいずれかの状態であり、
前記シミュレーション手段は、前記モーション制御部分が前記非実行中状態から前記実行中状態となる制御周期を基準として前記再開可能制御周期を特定する、請求項１に記載のコントローラサポート装置。
【請求項５】
前記シミュレーション手段は、一定間隔ごとの制御周期を前記再開可能制御周期として特定する、請求項１に記載のコントローラサポート装置。
【請求項６】
前記編集手段は、ユーザの操作により前記制御プログラムのモーション制御部分を修正し、
前記シミュレーション手段は、修正されたモーション制御部分を特定する情報を前記編集手段から取得し、前記再開可能制御周期の中から、最も最近に修正されたモーション制御部分から再実行することができる制御周期を特定し、当該制御周期からシミュレーションの再実行を開始する、請求項２に記載のコントローラサポート装置。
【請求項７】
前記編集手段は、前記表示器に前記制御プログラムの内容をリスト表示し、
前記受け付け手段は、前記リスト表示上で、再実行を開始するモーション制御部分の指定を受け付け、
前記シミュレーション手段は、前記再開可能制御周期の中から、前記指定されたモーション制御部分から再実行することができる制御周期を特定し、当該制御周期からシミュレーションの再実行を開始する、請求項２に記載のコントローラサポート装置。
【請求項８】
前記表示データ作成手段は、前記実行結果データの時間的な変化をグラフとして表示するための表示データを作成し、
前記受け付け手段は、前記表示器に表示された前記グラフ上の位置についてのユーザの指示を受け付け、
前記シミュレーション手段は、前記再開可能制御周期の中から、ユーザによって指示された前記グラフ上の位置に対応する制御周期を特定し、当該制御周期からシミュレーションの再実行を開始する、請求項１に記載のコントローラサポート装置。
【請求項９】
前記表示データ作成手段は、前記シミュレーション手段によって生成された位置についての実行結果データの時間的な変化を２次元空間または３次元空間における軌跡として表示するための表示データを作成し、
前記受け付け手段は、前記軌跡上の位置についてのユーザの指示を受け付け、
前記シミュレーション手段は、前記再開可能制御周期の中から、ユーザによって指示された前記軌跡上の位置に対応する制御周期を特定し、当該制御周期からシミュレーションの再実行を開始する、請求項１に記載のコントローラサポート装置。
【請求項１０】
前記表示データ作成手段は、前記実行結果データの時間的な変化を位置のリストとして表示するための表示データを作成し、
前記受け付け手段は、前記表示器に表示された前記位置のリスト上の位置についてのユーザの指示を受け付け、
前記シミュレーション手段は、前記再開可能制御周期の中から、ユーザによって指示された前記位置のリスト上の位置に対応する制御周期を特定し、当該制御周期からシミュレーションの再実行を開始する、請求項１に記載のコントローラサポート装置。
【請求項１１】
機械の動きを制御するコントローラにおいて制御周期ごとに実行される、シーケンス制御部分およびモーション制御部分を含む制御プログラムを、表示器を有するコントローラサポート装置においてシミュレーション実行する、制御プログラムのシミュレーション方法であって、
ユーザの指示により前記制御プログラムをシミュレーション実行し、実行結果データを生成するシミュレーション演算ステップと、
前記シミュレーション演算ステップによって生成された実行結果データの時間的な変化を表示するための表示データを作成する表示データ作成ステップと、
前記表示データ作成ステップによって作成された表示データを前記表示器に表示する表示ステップとを備え、
前記シミュレーション演算ステップは、
前記制御プログラムのシーケンス制御部分をシミュレーション実行し、シーケンス制御部分に関する実行結果データを生成するシーケンス演算実行ステップと、
前記制御プログラムのモーション制御部分をシミュレーション実行し、モーション制御部分に関する実行結果データを生成するモーション演算実行ステップと、
制御周期の実行回数を計数する制御周期計数ステップと、
前記シミュレーションの再実行を開始することができる制御周期である再開可能制御周期を特定するステップと、
前記再開可能制御周期に対応する前記実行回数のデータと、前記シーケンス制御部分の実行に関係するシーケンス変数データおよび前記モーション制御部分の実行に関係するモーション変数データのうち前記再開可能制御周期からシミュレーションの再実行を開始するのに用いられる変数データとを含む再開用データを保存する再開用データ保存ステップと、
再実行を開始する制御周期を特定するためのユーザによる指定を受け付け、前記指定を用いて再実行を開始する制御周期を特定し、特定した制御周期に対応する前記保存された再開用データを用いて前記特定された制御周期からシミュレーションの再実行を開始する再実行開始ステップとを含む、制御プログラムのシミュレーション方法。
【請求項１２】
機械の動きを制御するコントローラにおいて制御周期ごとに実行される、シーケンス制御部分およびモーション制御部分を含む制御プログラムを、表示器を有するコントローラサポート装置においてシミュレーション実行するためのコントローラのサポートプログラムであって、
前記制御プログラムは、前記コントローラサポート装置に対して、
ユーザの指示により前記制御プログラムをシミュレーション実行し、実行結果データを生成するシミュレーション演算ステップと、
前記シミュレーション演算ステップによって生成された実行結果データの時間的な変化を表示するための表示データを作成する表示データ作成ステップと、
前記表示データ作成ステップによって作成された表示データを前記表示器に表示する表示ステップとを実行させ、
前記シミュレーション演算ステップは、
前記制御プログラムのシーケンス制御部分をシミュレーション実行しシーケンス制御部分に関する実行結果データを生成するシーケンス演算実行ステップと、
前記制御プログラムのモーション制御部分をシミュレーション実行しモーション制御部分に関する実行結果データを生成するモーション演算実行ステップと、
制御周期の実行回数を計数する制御周期計数ステップと、
前記シミュレーションの再実行を開始することができる制御周期である再開可能制御周期を特定するステップと、
前記再開可能制御周期に対応する前記実行回数のデータと、前記シーケンス制御部分の実行に関係するシーケンス変数データおよび前記モーション制御部分の実行に関係するモーション変数データのうち前記再開可能制御周期からシミュレーションの再実行を開始するのに用いられる変数データとを含む再開用データを保存する再開用データ保存ステップと、
再実行を開始する制御周期を特定するためのユーザによる指定を受け付け、前記指定を用いて再実行を開始する制御周期を特定し、特定した制御周期に対応する前記保存された再開用データを用いて前記特定された制御周期からシミュレーションの再実行を開始する再実行開始ステップとを含む、コントローラのサポートプログラム。
【請求項１３】
機械の動きを制御するコントローラにおいて制御周期ごとに実行される、シーケンス制御部分およびモーション制御部分を含む制御プログラムを、表示器を有するコントローラサポート装置においてシミュレーション実行するためのコントローラのサポートプログラムを格納したコンピュータ読み取り可能な記憶媒体であって、
前記制御プログラムは、前記コントローラサポート装置に対して、
ユーザの指示により前記制御プログラムをシミュレーション実行し実行結果データを生成するシミュレーション演算ステップと、
前記シミュレーション演算ステップによって生成された実行結果データの時間的な変化を表示するための表示データを作成する表示データ作成ステップと、
前記表示データ作成ステップによって作成された表示データを前記表示器に表示する表示ステップとを実行させ、
前記シミュレーション演算ステップは、
前記制御プログラムのシーケンス制御部分をシミュレーション実行しシーケンス制御部分に関する実行結果データを生成するシーケンス演算実行ステップと、
前記制御プログラムのモーション制御部分をシミュレーション実行しモーション制御部分に関する実行結果データを生成するモーション演算実行ステップと、
制御周期の実行回数を計数する制御周期計数ステップと、
前記シミュレーションの再実行を開始することができる制御周期である再開可能制御周期を特定するステップと、
前記再開可能制御周期に対応する前記実行回数のデータと、前記シーケンス制御部分の実行に関係するシーケンス変数データおよび前記モーション制御部分の実行に関係するモーション変数データのうち前記再開可能制御周期からシミュレーションの再実行を開始するのに用いられる変数データとを含む再開用データを保存する再開用データ保存ステップと、
再実行を開始する制御周期を特定するためのユーザによる指定を受け付け、前記指定を用いて再実行を開始する制御周期を特定し、特定した制御周期に対応する前記保存された再開用データを用いて前記特定された制御周期からシミュレーションの再実行を開始する再実行開始ステップとを含む、コントローラのサポートプログラムを格納したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械の動きを制御するコントローラにおいて制御周期ごとに実行される、シーケンス制御部分およびモーション制御部分を含む制御プログラムをシミュレーション実行することができるコントローラサポート装置、制御プログラムのシミュレーション方法、コントローラのサポートプログラムおよびコントローラのサポートプログラムを格納したコンピュータ読み取り可能な記憶媒体に関する。
【背景技術】
【０００２】
特許文献１には、ＰＬＣ（Programmable Logic Controller）プログラムの命令実行をシミュレーションするＰＬＣシミュレータ装置が記載されている。ここでいうＰＬＣプログラムは、具体的にはラダーダイアグラムやインストラクションリストの言語で記述されるシーケンスプログラムである。このＰＬＣシミュレータ装置は、ＰＬＣプログラムを１命令ごとに実行し、実行結果を表示することができる。これにより、ＰＬＣプログラムのデバッグが容易にできる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−２０９４０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一般的にシーケンスプログラムの動作確認は、命令ごとに、所定の入力条件のときに想定された出力が得られることを確認するのが基本である。
【０００５】
特許文献１でも言及されているように、所定の入力条件が現れるのを待つために一巡実行を多数回繰り返すことはあるが、所定の入力条件が現れれば、命令の動作自体は１周期の実行で確認することができる。
【０００６】
また、一巡実行を繰り返すことなく、手入力で、あるいはデバッグ用のプログラムを用いて、所定の入力条件を与えて、ある命令の動作を１周期の実行で確認することが行われている。
【０００７】
ところが、サーボモータ、ステッピングモータなどを駆動するモータドライバに制御周期ごとに指令値を与えてモータの動作を制御するモーション制御を含む制御プログラムにおいては、モータドライバに提供する指令値が設計時の想定どおりに算出されているかどうかを確認するためには、非常に多数の制御周期にわたってプログラムの動作を追跡する必要がある。
【０００８】
たとえば、制御周期が１ｍｓの場合に１０秒間のモータ動作を確認するためには１万回算出される指令値の推移を確認する必要がある。この場合に、途中の任意の制御周期の指令値を調べるためには、その制御周期にいたるまで最初から制御プログラムを繰り返し実行しなければならない。
【０００９】
このように、プログラムのモーション制御部分については、シーケンス制御部分の場合とは異なり、所定の入力条件を与えてその制御周期のみ実行することにより動作確認するということができない。そのため、モーション制御部分を含む制御プログラムに適した動作確認の手法を新たに創出する必要がある。
【００１０】
その場合に次のような事情を考慮すべきである。
モーション制御においては、「現在位置から目標位置まで与えられた速度で動く」というような単位となる動きをいくつもつなげて、全体として長時間にわたる複雑な動きがプログラムされることが多い。そのような場合に、制御プログラムのモーション制御部分を修正したりモーション制御部分の起動や中断に影響するシーケンス制御部分を修正したりしてその結果を確認しようとすると、一連の動きについてまた最初からシミュレーション実行しなければならないため、プログラム修正の結果の確認に非常に時間がかかることがある。
【００１１】
その上、制御プログラムが、センサからの入力や手動スイッチからの入力に応じてモーション制御の内容を変化させるようになっている場合には、シミュレーションの再実行のたびに、入力内容や入力タイミングを正確に再現しなければならないことも不便である。
【００１２】
上記の事情を考慮した結果、発明者らは、モーション制御を含む制御プログラムをシミュレーション実行する場合に、実行の開始から終了までの間の途中の制御周期からの再実行を可能にすることができれば高い利便性が得られることを見出した。
【００１３】
本発明は、モーション制御を含む制御プログラムをシミュレーション実行する場合に、実行の開始から終了までの間の途中の制御周期からの再実行を可能にするコントローラサポート装置、制御プログラムのシミュレーション方法、コントローラのサポートプログラムおよびコントローラのサポートプログラムを格納したコンピュータ読み取り可能な記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明のある局面に従うコントローラサポート装置は、機械の動きを制御するコントローラにおいて制御周期ごとに実行される、シーケンス制御部分およびモーション制御部分を含む制御プログラムをシミュレーション実行することができるコントローラサポート装置であって、制御プログラムをシミュレーション実行し実行結果データを生成するシミュレーション手段と、シミュレーション手段によって生成された実行結果データの時間的な変化を表示するための表示データを作成する表示データ作成手段と、シミュレーション手段に対するユーザの指示を受け付ける受け付け手段と、表示データ作成手段によって作成された表示データを表示することができる表示器とを備える。シミュレーション手段は、制御プログラムのシーケンス制御部分をシミュレーション実行し、シーケンス制御部分に関する実行結果データを生成するシーケンス演算実行部と、シーケンス演算実行部がシミュレーション実行するために使用するシーケンス変数記憶部と、制御プログラムのモーション制御部分をシミュレーション実行し、モーション制御部分に関する実行結果データを生成するモーション演算実行部と、モーション演算実行部がシミュレーション実行するために使用するモーション変数記憶部と、制御周期の実行回数を計数する制御周期計数部と、シミュレーションの再実行を開始することができる制御周期である再開可能制御周期に対応する実行回数のデータと、シーケンス変数記憶部およびモーション変数記憶部に記憶されているデータのうち再開可能制御周期からシミュレーションの再実行を開始するのに用いられる変数データとを含む再開用データを保存する再開用データ記憶部とを備える。シミュレーション手段は、再開可能制御周期を特定し、再開可能制御周期に対応する再開用データを再開用データ記憶部に記憶する。シミュレーション手段は、再実行を開始する制御周期を特定するための指定を受け付け手段から取得し、指定を用いて再実行を開始する制御周期を特定し、特定した制御周期に対応する保存された再開用データを用いて特定された制御周期からシミュレーションの再実行を開始する。
【００１５】
好ましくは、制御プログラムを編集することができる編集手段をさらに備える。編集手段は、シミュレーション手段においてシミュレーション実行されたことがある制御プログラムを修正するユーザの操作を受け付け可能にされている。シミュレーション手段は、編集手段により修正された制御プログラムについて、当該制御プログラムが修正される前に保存した再開用データを用いてシミュレーションの再実行を開始するユーザの操作を受け付け可能にされている。
【００１６】
好ましくは、制御プログラムのモーション制御部分は、それぞれの制御周期において、指令値を算出する状態である活性状態および活性状態でない非活性状態のいずれかの状態である。シミュレーション手段は、モーション制御部分が非活性状態から活性状態となる制御周期を基準として再開可能制御周期を特定する。
【００１７】
好ましくは、制御プログラムのモーション制御部分は、それぞれの制御周期において、当該モーション制御部分が実行中の状態である実行中状態および実行中状態でない非実行中状態のいずれかの状態である。シミュレーション手段は、モーション制御部分が非実行中状態から実行中状態となる制御周期を基準として再開可能制御周期を特定する。
【００１８】
好ましくは、シミュレーション手段は、一定間隔ごとの制御周期を再開可能制御周期として特定する。
【００１９】
特に、編集手段は、ユーザの操作により制御プログラムのモーション制御部分を修正する。シミュレーション手段は、修正されたモーション制御部分を特定する情報を編集手段から取得し、再開可能制御周期の中から、最も最近に修正されたモーション制御部分から再実行することができる制御周期を特定し、当該制御周期からシミュレーションの再実行を開始する。
【００２０】
特に、編集手段は、表示器に制御プログラムの内容をリスト表示する。受け付け手段は、リスト表示上で、再実行を開始するモーション制御部分の指定を受け付ける。シミュレーション手段は、再開可能制御周期の中から、指定されたモーション制御部分から再実行することができる制御周期を特定し、当該制御周期からシミュレーションの再実行を開始する。
【００２１】
好ましくは、表示データ作成手段は、実行結果データの時間的な変化をグラフとして表示するための表示データを作成する。受け付け手段は、表示器に表示されたグラフ上の位置についてのユーザの指示を受け付ける。シミュレーション手段は、再開可能制御周期の中から、ユーザによって指示されたグラフ上の位置に対応する制御周期を特定し、当該制御周期からシミュレーションの再実行を開始する。
【００２２】
好ましくは、表示データ作成手段は、シミュレーション手段によって生成された位置についての実行結果データの時間的な変化を２次元空間または３次元空間における軌跡として表示するための表示データを作成する。受け付け手段は、軌跡上の位置についてのユーザの指示を受け付ける。シミュレーション手段は、再開可能制御周期の中から、ユーザによって指示された軌跡上の位置に対応する制御周期を特定し、当該制御周期からシミュレーションの再実行を開始する。
【００２３】
好ましくは、表示データ作成手段は、実行結果データの時間的な変化を位置のリストとして表示するための表示データを作成する。受け付け手段は、表示器に表示された位置のリスト上の位置についてのユーザの指示を受け付ける。シミュレーション手段は、再開可能制御周期の中から、ユーザによって指示された位置のリスト上の位置に対応する制御周期を特定し、当該制御周期からシミュレーションの再実行を開始する。
【００２４】
本発明のある局面に従う制御プログラムのシミュレーション方法は、機械の動きを制御するコントローラにおいて制御周期ごとに実行される、シーケンス制御部分およびモーション制御部分を含む制御プログラムを、表示器を有するコントローラサポート装置においてシミュレーション実行する、制御プログラムのシミュレーション方法であって、ユーザの指示により制御プログラムをシミュレーション実行し、実行結果データを生成するシミュレーション演算ステップと、シミュレーション演算ステップによって生成された実行結果データの時間的な変化を表示するための表示データを作成する表示データ作成ステップと、表示データ作成ステップによって作成された表示データを表示器に表示する表示ステップとを備える。シミュレーション演算ステップは、制御プログラムのシーケンス制御部分をシミュレーション実行し、シーケンス制御部分に関する実行結果データを生成するシーケンス演算実行ステップと、制御プログラムのモーション制御部分をシミュレーション実行し、モーション制御部分に関する実行結果データを生成するモーション演算実行ステップと、制御周期の実行回数を計数する制御周期計数ステップと、シミュレーションの再実行を開始することができる制御周期である再開可能制御周期を特定するステップと、再開可能制御周期に対応する実行回数のデータと、シーケンス制御部分の実行に関係するシーケンス変数データおよびモーション制御部分の実行に関係するモーション変数データのうち再開可能制御周期からシミュレーションの再実行を開始するのに用いられる変数データとを含む再開用データを保存する再開用データ保存ステップと、再実行を開始する制御周期を特定するためのユーザによる指定を受け付け、指定を用いて再実行を開始する制御周期を特定し、特定した制御周期に対応する保存された再開用データを用いて特定された制御周期からシミュレーションの再実行を開始する再実行開始ステップとを含む。
【００２５】
本発明のある局面に従うコントローラのサポートプログラムは、機械の動きを制御するコントローラにおいて制御周期ごとに実行される、シーケンス制御部分およびモーション制御部分を含む制御プログラムを、表示器を有するコントローラサポート装置においてシミュレーション実行するためのコントローラのサポートプログラムである。制御プログラムは、コントローラサポート装置に対して、ユーザの指示により制御プログラムをシミュレーション実行し、実行結果データを生成するシミュレーション演算ステップと、シミュレーション演算ステップによって生成された実行結果データの時間的な変化を表示するための表示データを作成する表示データ作成ステップと、表示データ作成ステップによって作成された表示データを表示器に表示する表示ステップとを実行させる。シミュレーション演算ステップは、制御プログラムのシーケンス制御部分をシミュレーション実行しシーケンス制御部分に関する実行結果データを生成するシーケンス演算実行ステップと、制御プログラムのモーション制御部分をシミュレーション実行しモーション制御部分に関する実行結果データを生成するモーション演算実行ステップと、制御周期の実行回数を計数する制御周期計数ステップと、シミュレーションの再実行を開始することができる制御周期である再開可能制御周期を特定するステップと、再開可能制御周期に対応する実行回数のデータと、シーケンス制御部分の実行に関係するシーケンス変数データおよびモーション制御部分の実行に関係するモーション変数データのうち再開可能制御周期からシミュレーションの再実行を開始するのに用いられる変数データとを含む再開用データを保存する再開用データ保存ステップと、再実行を開始する制御周期を特定するためのユーザによる指定を受け付け、指定を用いて再実行を開始する制御周期を特定し、特定した制御周期に対応する保存された再開用データを用いて特定された制御周期からシミュレーションの再実行を開始する再実行開始ステップとを含む。
【００２６】
本発明のある局面に従うコントローラのサポートプログラムを格納した記録媒体は、機械の動きを制御するコントローラにおいて制御周期ごとに実行される、シーケンス制御部分およびモーション制御部分を含む制御プログラムを、表示器を有するコントローラサポート装置においてシミュレーション実行するためのコントローラのサポートプログラムを格納したコンピュータ読み取り可能な記憶媒体である。制御プログラムは、コントローラサポート装置に対して、ユーザの指示により制御プログラムをシミュレーション実行し実行結果データを生成するシミュレーション演算ステップと、シミュレーション演算ステップによって生成された実行結果データの時間的な変化を表示するための表示データを作成する表示データ作成ステップと、表示データ作成ステップによって作成された表示データを表示器に表示する表示ステップとを実行させる。シミュレーション演算ステップは、制御プログラムのシーケンス制御部分をシミュレーション実行しシーケンス制御部分に関する実行結果データを生成するシーケンス演算実行ステップと、制御プログラムのモーション制御部分をシミュレーション実行しモーション制御部分に関する実行結果データを生成するモーション演算実行ステップと、制御周期の実行回数を計数する制御周期計数ステップと、シミュレーションの再実行を開始することができる制御周期である再開可能制御周期を特定するステップと、再開可能制御周期に対応する実行回数のデータと、シーケンス制御部分の実行に関係するシーケンス変数データおよびモーション制御部分の実行に関係するモーション変数データのうち再開可能制御周期からシミュレーションの再実行を開始するのに用いられる変数データとを含む再開用データを保存する再開用データ保存ステップと、再実行を開始する制御周期を特定するためのユーザによる指定を受け付け、指定を用いて再実行を開始する制御周期を特定し、特定した制御周期に対応する保存された再開用データを用いて特定された制御周期からシミュレーションの再実行を開始する再実行開始ステップとを含む。
【発明の効果】
【００２７】
本発明によれば、モーション制御を含む制御プログラムをシミュレーション実行する場合に、実行の開始から終了までの間の途中の制御周期からの再実行が可能になるので、プログラムの動作確認が容易になる。
【図面の簡単な説明】
【００２８】
【図１】本発明の実施の形態に従う制御システムの構成を説明する図である。
【図２】本発明の実施の形態に従うＰＣ６のハードウェア構成を説明する図である。
【図３】ＣＰＵ９０１がコントローラサポートプログラム８を実行することにより実現される機能ブロックを説明する図である。
【図４】本発明の実施の形態に従うシミュレーション部８０６の機能を説明する詳細なブロック図である。
【図５】本発明の実施の形態に従う制御プログラムのデバッグ作業を説明するフロー図である。
【図６】本発明の実施の形態に従うコントローラサポートプログラム８の実行を説明するフロー図である。
【図７】本発明の実施の形態に従うシミュレーション部８０６におけるシミュレーション実行を説明するフロー図である。
【図８】制御周期内の処理を時系列的に配列した場合を説明する図である。
【図９】本発明の実施の形態に従う指令値が算出されている制御周期に関するシミュレーション部８０６におけるデータの流れを説明する図である。
【図１０】本発明の実施の形態に従う指令値が算出されていない制御周期に関するシミュレーション部８０６におけるデータの流れについて説明する図である。
【図１１】本発明の実施の形態に従うＩＣチップ移載装置１００を説明する図である。
【図１２】本発明の実施の形態に従うＩＣチップ移載装置１００の動作のフローを説明する図である。
【図１３】ＩＣチップ移載装置１００におけるＸＹＺガイド５０を制御する制御プログラムの一部を説明する図である。
【図１４】本発明の実施の形態に従うコントローラサポートプログラムのウインドウ画面について説明する図である。
【図１５】本発明の実施の形態に従う再開可能点設定方式の選択ウインドウ画面１１００を説明する図である。
【図１６】本発明の実施の形態に従うタイムチャートウインドウ画面１２００について説明する図である。
【図１７】本発明の実施の形態に従う空間軌跡表示ウインドウ画面１３００を説明する図である。
【図１８】本発明の実施の形態に従う軸位置のリストの表示ウインドウ画面１４００を説明する図である。
【図１９】本発明の実施の形態に従うBufferedモードを説明する図である。
【図２０】本発明の実施の形態に従うAbortingモードにおけるＦＢの一部の端子について入力される信号および出力される信号のタイミングチャートを説明する図である。
【図２１】本発明の実施の形態に従うBlendingNextモードにおけるＦＢの一部の端子について入力される信号および出力される信号のタイミングチャートを示す図である。
【図２２】本発明の実施の形態に従うBlendingPreviousモードにおけるＦＢの一部の端子について入力される信号および出力される信号のタイミングチャートを示す図である。
【発明を実施するための形態】
【００２９】
以下、この発明の実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付し、その説明は繰り返さない。
【００３０】
図１は、本発明の実施の形態に従う制御システムの構成を説明する図である。
図１を参照して、本発明の実施の形態に従う制御システムは、サーバ２と、ネットワーク４と、ＰＣ（パーソナルコンピュータ）６と、コントローラ１４と、制御対象装置１６とから構成されている。
【００３１】
サーバ２は、ネットワーク４を介してＰＣ６と接続されている。ＰＣ６は、制御対象装置１６を制御するコントローラ１４と通信可能に接続されている。
【００３２】
ＰＣ６は、本発明の一実施形態におけるコントローラサポート装置に相当する。ＰＣ６には、コントローラサポートプログラム８がインストールされており、また、ユーザが作成した制御プログラム１０が記憶されている。ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）１２は、コントローラサポートプログラム８を格納している。ＰＣ６にインストールされているコントローラサポートプログラム８は、このＣＤ−ＲＯＭ１２からインストールされたものである。
【００３３】
コントローラ１４は、制御対象装置１６の動きを制御する。
本発明の実施の形態においては、コントローラ１４として一例として、ＰＬＣ（Programmable Logic Controller）が用いられる。すなわち、このＰＬＣには、いわゆるモーションコントロール機能が備えられている。コントローラ１４は、制御対象装置１６に対する制御内容を規定する制御プログラム１５を記憶している。コントローラ１４は、制御周期ごとに制御プログラム１５を一巡実行する。ここで、コントローラ１４に記憶されている制御プログラム１５は、ＰＣ６に記憶されている制御プログラム１０をコピーしたコピーデータであり、ＰＣ６から送信されたものである。
【００３４】
制御対象装置１６は、サーボモータ、ステッピングモータなどのモータ１８およびモータを駆動するモータドライバ１７を含む。
【００３５】
モータ１８はモータドライバ１７から駆動電流を供給される。モータドライバ１７は、制御プログラム１５を実行するコントローラ１４から制御周期ごとに位置の指令値を与えられ、それに応じた駆動電流をモータ１８に供給する。モータ１８がサーボモータである場合、モータ１８にはエンコーダが備えられており、モータ１８の回転位置の実測値がエンコーダによって検出される。モータの回転位置の実測値は、モータドライバ１７がフィードバック制御に利用する。
【００３６】
なお、上記においては、ＣＤ−ＲＯＭ１２を介して、ＰＣ６にコントローラサポートプログラムをインストールする場合について説明したが、特にこれに限られず、サーバ２からネットワーク４を介してコントローラサポートプログラムをＰＣ６にダウンロードするようにしても良い。制御プログラムについても同様である。
【００３７】
図２は、本発明の実施の形態に従うＰＣ６のハードウェア構成を説明する図である。
図２を参照して、本発明の実施の形態に従うＰＣ６は、処理手段であるＣＰＵ９０１と、記憶手段であるＲＯＭ９０２、ＲＡＭ９０３、およびＨＤＤ９０４と、データ読取部であるＣＤ−ＲＯＭ駆動装置９０８と、通信手段である通信ＩＦ９０９と、表示手段であるモニタ９０７と、入力手段であるキーボード９０５およびマウス９０６とを含む。なお、これらの部位は、内部バス９１０を介して互いに接続される。
【００３８】
ＨＤＤ９０４は、典型的には不揮発性の磁気メモリであり、ＣＤ−ＲＯＭ駆動装置９０８によりＣＤ−ＲＯＭ１２から読取られたコントローラサポートプログラムを格納する。また、制御プログラム１５も格納している。
【００３９】
ＣＰＵ９０１は、ＨＤＤ９０４に格納されている、本実施の形態に従うコントローラサポートプログラム８をＲＡＭ９０３などに展開して実行する。
【００４０】
ＲＡＭ９０３は、揮発性メモリであり、ワークメモリとして使用される。ＲＯＭ９０２は、一般的に、オペレーティングシステム（ＯＳ：Operating System）等のプログラムを格納している。
【００４１】
通信ＩＦ９０９は、典型的にはイーサネット（登録商標）およびＵＳＢ（Universal Serial Bus）といった汎用的な通信プロトコルをサポートし、ネットワーク４を介してサーバ２との間でデータ通信を提供するとともに、コントローラ１４との間でデータ通信を提供する。
【００４２】
モニタ９０７は、液晶表示装置、ＣＲＴ（Cathode Ray Tube）、プラズマディスプレイ装置などで構成され、ＰＣ６による処理結果などを表示する。キーボード９０５は、ユーザによるキー入力を受付け、マウス９０６は、ユーザによるポインティング操作を受付ける。
【００４３】
図３は、ＣＰＵ９０１がコントローラサポートプログラム８を実行することにより実現される機能ブロックを説明する図である。
【００４４】
図３を参照して、ここでは、ユーザインタフェース部８０２と、表示データ作成部８０４と、シミュレーション部８０６と、制御プログラム記憶部８０８と、制御プログラム編集部８１０と、コントローラインタフェース部８１２とが示されている。
【００４５】
ユーザインタフェース部８０２は、ＰＣ６のモニタ９０７に表示するウインドウ画面の内容を作成し、また、キーボード９０５やマウス９０６によるユーザの操作を受け付ける部位である。
【００４６】
制御プログラム編集部８１０は、ユーザに制御プログラムの入力および編集を行わせる。制御プログラムを実行するためにコンパイルが必要である場合はコンパイルも行う。作成された制御プログラムは、コントローラインタフェース部８１２を介してコントローラ１４に送られる。また、作成された制御プログラムは、ＨＤＤ９０４の所定領域である制御プログラム記憶部８０８に格納される。また、制御プログラム編集部８１０は、コントローラインタフェース部８１２を介してコントローラ１４に記憶されている制御プログラム１５を読み出して編集することもできる。
【００４７】
シミュレーション部８０６は、コントローラ１４のシミュレータである。シミュレーション部８０６は、制御プログラム記憶部８０８に記憶された制御プログラム１０に従ってコントローラ１４が制御プログラム１５を実行する動作をシミュレートし、コントローラ１４が制御周期ごとに出力するはずの位置の指令値を算出する。
【００４８】
また、シミュレーション部８０６は、外部からの信号が到来して制御プログラムの動作に影響を与える状態をシミュレートしたり、制御プログラム１５の実行自体によってコントローラ１４のメモリの記憶内容などのコントローラ１４の内部状態が変化して、その変化が制御プログラム１５の動作に影響を与える状態をシミュレートしたりすることができる。
【００４９】
また、シミュレーション部８０６は、ユーザインタフェース部８０２を介してシミュレーション実行に関するユーザの指示を受け付ける。すなわち、ユーザインタフェース部８０２は、シミュレーション部８０６に対するユーザの指示を受け付ける手段としても働く。
【００５０】
表示データ作成部８０４は、シミュレーション部８０６によって作成された実行結果データの時間的な変化を表示するための表示データを作成する。表示データ作成部８０４は、作成した表示データをユーザインタフェース部８０２に送ることによりＰＣ６のモニタ９０７に表示データをグラフや文字の態様で表示する。
【００５１】
図４は、本発明の実施の形態に従うシミュレーション部８０６の機能を説明する詳細なブロック図である。
【００５２】
図４を参照して、本発明の実施の形態に従うシミュレーション部８０６は、シミュレーション制御部８２０と、デバッグ支援部８２２と、制御周期計数部８２４と、再開用データ記憶部８２６と、再開用データバッファ８２８と、実行結果データ記憶部８３０と、シーケンス制御シミュレーション部８４０と、モーション制御シミュレーション部８５０とを含む。ここで、再開用データ記憶部８２６、再開用データバッファ８２８、実行結果データ記憶部８３０は、それぞれＲＡＭ９０３あるいはＨＤＤ９０４の所定領域が用いられるものとする。
【００５３】
シミュレーション制御部８２０は、制御プログラム記憶部８０８から制御プログラム１０を読み込み、制御プログラム１０をシミュレーション実行および途中から再実行し、それに伴って、シーケンス制御シミュレーション部８４０、モーション制御シミュレーション部８５０、制御周期計数部８２４、再開用データバッファ８２８、再開用データ記憶部８２６および実行結果データ記憶部８３０の間のデータの流れを制御する。具体的なデータの流れについては後述する。
【００５４】
シーケンス制御シミュレーション部８４０は、制御プログラム１０のシーケンス制御部分を実行する。
【００５５】
モーション制御シミュレーション部８５０は、制御プログラム１０のモーション制御部分を実行する。
【００５６】
制御プログラム１０のモーション制御部分は、制御周期ごとに、モータドライバ１７に与える指令値を算出する部分である。モーション制御部分は、たとえば、ラダーチャートの中で用いられるモーションファンクションブロックの形式で記述される。以下、モーションファンクションブロックを単にＦＢと記載することがある。
【００５７】
制御プログラム１０のシーケンス制御部分とは、制御プログラム１０のモーション制御部分以外の部分を指すこととする。シーケンス制御部分は、ラダーチャートのリレーシーケンス部分のほか、数値演算用命令または数値演算用ファンクションブロックなども含むものとする。
【００５８】
シーケンス制御シミュレーション部８４０は、シーケンス演算実行部８４４と、シーケンス変数記憶部８４６と、シーケンス演算制御部８４２とを含む。
【００５９】
シーケンス演算制御部８４２は、シーケンス制御部分の実行を制御する。
シーケンス演算実行部８４４は、シーケンス演算制御部８４２の指示に従って制御プログラムのシーケンス制御部分をシミュレーション実行し、シーケンス制御部分に関する実行結果データを生成する。
【００６０】
シーケンス変数記憶部８４６は、シーケンス演算制御部８４２の指示に従ってシーケンス制御部分の実行に関係するシーケンス変数を記憶する。なお、シーケンス変数記憶部８４６は、ＲＡＭ９０３あるいはＨＤＤ９０４の所定領域が用いられるものとする。
【００６１】
モーション制御シミュレーション部８５０は、モーション演算実行部８５４と、モーション変数記憶部８５６と、モーション演算制御部８５２とを含む。
【００６２】
モーション演算制御部８５２は、モーション制御部分の実行を制御する。
モーション演算実行部８５４は、モーション演算制御部８５２の指示に従って制御プログラムのモーション制御部分をシミュレーション実行し、モーション制御部分に関する実行結果データを生成する。
【００６３】
モーション変数記憶部８５６は、モーション演算制御部８５２の指示に従ってモーション制御部分の実行に関係するモーション変数を記憶する。なお、モーション変数記憶部８５６は、ＲＡＭ９０３あるいはＨＤＤ９０４の所定領域が用いられるものとする。
【００６４】
制御周期計数部８２４は、制御周期の実行回数を計数する。
再開用データバッファ８２８は、再開用データ記憶部８２６に保存される種類のデータを毎制御周期ごとに一時保存する。
【００６５】
再開用データ記憶部８２６は、少なくとも一度シミュレーションが実行された後にシミュレーションの途中から再実行を開始するために必要な再開用データを保存する。保存するデータは、再開用データバッファ８２８に一時保存されていたデータである。再開用データは、次の３種類のデータを含む。
【００６６】
第１は、シミュレーションの再実行を開始することができる再開可能制御周期に対応する制御周期の実行回数のデータである。
【００６７】
第２は、シーケンス変数記憶部８４６に記憶されているデータのうち再開可能制御周期からシミュレーションの再実行を開始するのに用いられるシーケンス変数データである。
【００６８】
第３は、モーション変数記憶部８５６に記憶されているデータのうち再開可能制御周期からシミュレーションの再実行を開始するのに用いられるモーション変数データである。
【００６９】
実行結果データ記憶部８３０は、表示に用いる実行結果データを記憶する。
デバッグ支援部８２２は、制御プログラムの途中でシミュレーションを一時停止する箇所であるブレークポイントの設定や、制御プログラムを１ステップ実行するごとに一時停止するステップ実行の設定などの、デバッグの際に用いる機能を提供する。デバッグ支援部８２２は、ユーザインタフェース部８０２を介して、シミュレーションの実行および途中からの再実行やその他のデバッグ機能に関するユーザの指示を受け付け、シミュレーション制御部８２０にユーザの指示に基づく動作を行わせる。
【００７０】
シミュレーション部８０６は、シミュレーション部８０６を構成する各部が協調して働くことにより、再実行を開始する制御周期を特定するための指定をユーザインタフェース部８０２を介して取得し、この指定を用いて再実行を開始する制御周期を特定し、特定した制御周期に対応する再開用データを用いて、特定した制御周期からシミュレーションの再実行を開始する。
【００７１】
図５は、本発明の実施の形態に従う制御プログラムのデバッグ作業を説明するフロー図である。
【００７２】
図５を参照して、まず、制御プログラムを作成する（ステップＳ０）。そして、次に、制御プログラムをシミュレーション実行する（ステップＳ２）。そして、次に、想定どおりの結果が取得できたかどうかを判断する（ステップＳ４）。ステップＳ４において、想定でおりの結果が取得できたと判断した場合には、ステップＳ６に進み、実機であるコントローラ１４で動作確認し、必要に応じてコントローラサポートプログラム８に従ってＰＣ６において制御プログラムを修正する。そして、処理を終了する。
【００７３】
一方、ステップＳ４において、想定どおりの結果が取得できなかったと判断した場合（ステップＳ４においてＮＯ）には、制御プログラムを修正する（ステップＳ８）。そして、再び、ステップＳ２に戻り、修正した制御プログラムに基づいてシミュレーション実行する。以降の処理については、上述したのと同様であるのでその詳細な説明は繰り返さない。なお、想定どおりの結果が取得された制御プログラムは、制御プログラム記憶部８０８に記憶されるものとする。
【００７４】
図６は、本発明の実施の形態に従うコントローラサポートプログラム８の実行を説明するフロー図である。
【００７５】
図６を参照して、まず、制御プログラム１０を準備する（ステップＳ１０）。制御プログラム１０の準備は、種々の方式があり、たとえば、図５で説明したように新規入力により作成され、制御プログラム記憶部８０８に記憶された制御プログラムを用いることが可能である。あるいは、記憶媒体（ＣＤ−ＲＯＭ１２）またはネットワーク４を介してサーバ２から当該制御プログラムを読み込むことも可能である。あるいは、実機であるコントローラ１４から読み込むようにしても良い。
【００７６】
そして、次に、シミュレーション部８０６は、ユーザの指示により制御プログラム１０をシミュレーション実行し、実行結果データを生成する（ステップＳ１４）。
【００７７】
そして、表示データ作成部８０４は、実行結果データの時間的な変化を表示するための表示データを作成する（ステップＳ１６）。
【００７８】
次に、ユーザインタフェース部８０２は、表示データをモニタ９０７に表示する（ステップＳ１８）。
【００７９】
そして、次に、制御プログラム編集部８１０は、修正開始の指示が有ったかどうかを判断する（ステップＳ２０）。具体的には、制御プログラム編集部８１０は、ユーザインタフェース部８０２を介してユーザから修正開始の指示があったかどうかを判断する。
【００８０】
ステップＳ２０において、制御プログラム編集部８１０は、ユーザインタフェース部８０２を介してユーザから修正開始の指示が有ったと判断した場合（ステップＳ２０においてＹＥＳ）には、ユーザの指示により制御プログラムを修正する（ステップＳ２２）。そして、再び、ステップＳ１２に戻り、ユーザの指示により制御プログラムをシミュレーション実行する（ステップＳ１２）。以降の処理は同様である。
【００８１】
一方、ステップＳ２０において、制御プログラム編集部８１０は、修正開始の指示が無かったと判断した場合（ステップＳ２０においてＮＯ）には、ユーザの指示により実機であるコントローラ１４に制御プログラムを送信する（ステップＳ２４）。そして、処理を終了する。
【００８２】
次に、図６のステップＳ１２におけるユーザの指示により制御プログラムをシミュレーション実行する処理と、ステップＳ１４における実行結果データを生成する処理の具体的な内容について説明する。
【００８３】
図７は、本発明の実施の形態に従うシミュレーション部８０６におけるシミュレーション実行を説明するフロー図である。
【００８４】
図７を参照して、まず、シミュレーション制御部８２０は、初期化処理または再開初期処理を実行する（ステップＳ３０）。ここで、「初期化処理」とは、制御プログラムを最初の制御周期から実行する場合に、変数の値を初期化するなどの処理を意味する。また、「再開初期処理」とは、制御プログラムを途中の制御周期から再実行する場合に、再開用データ記憶部８２６から再開用データを読み込み、それを用いてシミュレーションの再実行を開始する準備を行う処理を意味する。
【００８５】
次に、シミュレーション制御部８２０は、Ｉ／Ｏリフレッシュ処理のシミュレーションを実行する（ステップＳ３２）。「Ｉ／Ｏリフレッシュ処理」は、出力処理と入力処理とからなる。
【００８６】
出力処理は、前の周期における実行結果データを出力する処理である。
出力処理は、制御プログラムのシーケンス制御部分の実行結果である出力変数データを出力する処理と、制御プログラムのモーション制御部分の実行結果である指令値を出力する処理とを含む。
【００８７】
実際のコントローラ１４では、出力変数データはＩ／Ｏユニットを経由して制御対象装置１６に送られ、そのアクチュエータの駆動などに使用される。また、指令値はモータドライバ１７に送られ、制御対象装置１６のモータ１８の制御に使用される。しかし、シミュレーション実行の場合は実行結果データが制御対象装置１６に実際に送られることはなく、実行結果データの一部が実行結果データ記憶部８３０に記憶される。
【００８８】
入力処理は、シーケンス制御部分が使用する入力変数データ、モーション制御部分が使用する位置データなどを取り込む処理である。シミュレーション実行の場合、入力変数データは、ユーザが手動で与えたり、制御対象装置の動作を模倣するデバッグ用のプログラムが与えたりする。位置データは、前の周期における位置の指令値をそのまま採用することができる。
【００８９】
そして、次に、シーケンス制御シミュレーション部８４０は、制御プログラムのシーケンス制御部分を１周期分シミュレーション実行し、シーケンス制御部分に関する実行結果を生成する（ステップＳ３６）。
【００９０】
次に、モーション制御シミュレーション部８５０は、モーション制御部分を１周期分シミュレーション実行し、モーション制御部分に関する実行結果を生成する（ステップＳ３８）。
【００９１】
そして、次に、シミュレーション制御部８２０は、制御周期番号をインクリメント更新する（ステップＳ４０）。
【００９２】
そして、シミュレーション制御部８２０は、実行中の制御周期が再開可能制御周期かどうかを判断する（ステップＳ４２）。すなわち、実行中の制御周期が、後述する「ＦＢのActive ON」、「ＦＢのBusy ON」、「一定間隔」などの指定された再開可能制御周期の条件に合致している場合には、実行中の制御周期は再開可能制御周期であると判断する。この判断により一連の制御周期の中から再開可能制御周期が特定される。なお、再開可能制御周期の条件が「一定間隔」である場合には、あらかじめ再開可能制御周期である制御周期のリストを用意することによって再開可能制御周期を特定することもできる。この場合には、当該リストと照合することによって、実行中の制御周期が再開可能制御周期かどうかを判断することができる。
【００９３】
ステップＳ４２において、シミュレーション制御部８２０は、再開可能制御周期であると判断した場合には（ステップＳ４２においてＹＥＳ）前の制御周期で更新された再開用データバッファ８２８の内容を再開用データ記憶部８２６に保存する（ステップＳ４４）。
【００９４】
そして、ステップＳ４６に進む。
一方、ステップＳ４２において、シミュレーション制御部８２０は、再開可能制御周期でないと判断した場合（ステップＳ４２においてＮＯ）には、シーケンス制御シミュレーション部８４０およびモーション制御シミュレーション部８５０において生成された実行結果に基づいて再開用データバッファ８２８の内容を更新する（ステップＳ４６）。
【００９５】
そして、次に、シミュレーション制御部８２０は、シミュレーション実行が終了したかどうかを判断する（ステップＳ４８）。
【００９６】
ステップＳ４８において、シミュレーション制御部８２０は、シミュレーション実行が終了したと判断した場合には処理を終了する。
【００９７】
一方、ステップＳ４８において、シミュレーション制御部８２０は、シミュレーション実行が終了していないと判断した場合（ステップＳ４８においてＮＯ）には、ステップＳ３２に戻り、インクリメント更新した次の制御周期番号に従ってステップＳ３２におけるＩ／Ｏリフレッシュのシミュレーションを実行する。そしてシミュレーション実行が終了するまで上記した処理を繰り返す。
【００９８】
本実施の形態に従うコントローラサポートプログラムにおいては、図６に示されるように、制御プログラム編集部８１０は、シミュレーション部８０６においてシミュレーション実行されたことがある制御プログラムを修正するユーザの操作を受け付け可能にされている。
【００９９】
また、図７に示されるように、シミュレーション部８０６は、制御プログラム編集部８１０により修正された制御プログラムについて、当該制御プログラムが修正される前に保存した再開用データを用いてシミュレーションの再実行を開始するユーザの操作を受け付け可能にされている。
【０１００】
したがって、修正によって実行結果が影響を受ける制御プログラムの部分が実行される制御周期より前の制御周期をユーザが指定してシミュレーションの再実行を開始すれば、修正の影響が及ぶ制御プログラムの部分の動作を迅速に確認することができる。
【０１０１】
図８は、制御周期内の処理を時系列的に配列した場合を説明する図である。
図８（Ａ）を参照して、再開可能制御周期でない場合、Ｉ／Ｏリフレッシュ処理、シーケンス制御部分の実行、モーション制御部分の実行、制御周期番号更新の各処理を実行する。そしてその後、更新した制御周期番号とその制御周期で生成した実行結果データで再開用データバッファを上書き更新（再開用データバッファ更新）する。
【０１０２】
図８（Ｂ）を参照して、再開可能制御周期である場合、Ｉ／Ｏリフレッシュ処理、シーケンス制御部分の実行、モーション制御部分の実行、制御周期番号更新の各処理を実行する。そしてその後、再開用データバッファ８２８に格納されている前の制御周期で更新した制御周期番号と前の制御周期で生成された実行結果データを再開用データ記憶部８２６に保存（再開用データ保存）する。その後、その制御周期で更新した制御周期番号とその制御周期で生成した実行結果データで再開用データバッファ８２８を上書き更新（再開用データバッファ更新）する。
【０１０３】
ここで、制御周期番号更新処理、再開用データバッファ更新処理および再開用データ保存処理は、実機であるコントローラ１４では実行されないシミュレーション特有の処理である。
【０１０４】
各制御周期が占める時間は、実機であるコントローラ１４では一定であるが、シミュレーション実行においても、制御周期はタイマ割り込みで開始することにより一定時間になるようにしている。
【０１０５】
制御周期内の必要な処理を完了した後の時間はアイドリング時間である。このようにすると、シミュレーション実行の所要時間から実機であるコントローラ１４における実行時間を予測する精度が高まる。その必要がなければ、制御周期内の必要な処理を完了した後、ただちに次の制御周期の処理を開始するようにしてもよい。
【０１０６】
図９は、本発明の実施の形態に従う指令値が算出されている制御周期に関するシミュレーション部８０６におけるデータの流れを説明する図である。
【０１０７】
図９を参照して、制御周期計数部８２４は、現在の「制御周期番号」をカウントする。「制御周期番号」とは、制御プログラムの実行開始からの制御周期の通算実行回数である。
【０１０８】
ここで、「現在」として示されているのは、実行中の制御周期におけるデータであることを意味する。以下においても同様である。制御周期ごとに変化しうるデータであることが前提である。
【０１０９】
また、シーケンス変数記憶部８４６は、シーケンス変数を記憶する。「シーケンス変数」とは、制御プログラムのシーケンス制御部分の実行に関係するデータである。シーケンス制御部分の実行のために読み込まれるデータと実行の結果書き出されるデータの両方を含む。具体的には、現在の「Ｉ／Ｏデータ」と、「内部変数データ」とを記憶する。
【０１１０】
「Ｉ／Ｏデータ」とは、シーケンス制御部分の実行に関係する変数データであって、Ｉ／Ｏリフレッシュ処理の対象となるデータである。すなわち、入力変数データおよび出力変数データである。
【０１１１】
「内部変数データ」とは、シーケンス制御部分の実行に関係する変数データであるが、プログラム内部での使用に限られ、Ｉ／Ｏリフレッシュ処理の対象とならないデータである。
【０１１２】
また、モーション変数記憶部８５６は、モーション変数を記憶する。「モーション変数」とは、制御プログラムのモーション制御部分の実行に関係するデータである。モーション制御部分の実行のために読み込まれるデータと実行の結果書き出されるデータの両方を含む。具体的には、モーション変数として、現在の「ＦＢ設定パラメータ」と、「指令値」と、「軸の位置」と、「ActiveなＦＢのＩＤ」と、「BusyなＦＢのＩＤ」とを記憶する。
【０１１３】
本実施形態では、モーション制御部分はモーションファンクションブロック（ＦＢ）として記述されているものとする。「ＦＢ設定パラメータ」とは、ＦＢの動作の仕方を指定するパラメータである。ＦＢ設定パラメータは、プログラミング段階で与えられている定数値およびプログラムの実行によって値が決定される変数値でありうる。ＦＢ設定パラメータは、ＦＢの入力値を用いてＦＢ内で算出される２次的なパラメータを含む場合がある。たとえば、加速時間は、ＦＢの入力値である速度と加速度から算出されて加速中の複数の制御周期において参照されるが、ＦＢの実行を開始した制御周期において加速時間を算出してモーション変数記憶部に格納しておけば、制御周期ごとに同じ計算を行う必要がない。
【０１１４】
なお、ＦＢ設定パラメータがＦＢの入力値である定数およびシーケンス変数のみで構成されている場合であって、モーション演算実行部８５４がシーケンス変数記憶部８４６にアクセスできるように構成した場合には、プログラム自体が与える定数およびシーケンス変数記憶部８４６に格納されたシーケンス変数によりＦＢ設定パラメータが決定されるので、ＦＢ設定パラメータのモーション変数記憶部８５６への格納は必須ではない。
【０１１５】
「指令値」とは、モーション制御部分が制御周期ごとに出力するデータである。本実施形態では少なくとも位置の指令値を含む。ほかに、速度の指令値、トルクの指令値などがありうる。
【０１１６】
「軸の位置」とは、モータ１８の回転位置またはモータ１８によって駆動される制御対象装置の特定部位の位置である。実際の制御対象装置の軸の位置はロータリエンコーダなどで計測される。シミュレーションでは、モーション変数記憶部８５６の中に仮想的な軸を用意し、指令値を仮想的な軸の記憶領域に書き込んでその記憶内容を軸の位置とし、その値を新しい指令値で更新していく。ある軸についてモーション制御部分が制御周期ごとに指令値を出力している期間においては、軸の位置は１つ前の制御周期で算出された位置の指令値となっている。モーション制御部分が制御周期ごとに指令値を出力していない期間は、軸の位置は更新されず、同じ値が保持されている。
【０１１７】
軸の位置としては、指令値をそのまま採用するのでなく、指令値の履歴から制御対象装置の可動部のモーメント、質量、摩擦などの物理特性を考慮して算出した予測位置を採用してもよい。
【０１１８】
「Active」とは、制御周期ごとに指令値を算出しているＦＢの状態である。活性状態ともいう。
【０１１９】
「Busy」とは、ＦＢが実行中の状態である。Busy状態のＦＢは、Activeである場合とActiveでない場合がある。後述するが、ＦＢがExecute ONの入力を与えられるとBusyとなる。通常はBusyであればActiveであるが、後述するBufferedモードまたはBlendingモードにより複数のＦＢが連結されている場合には、連結された先頭以外のＦＢにおいて、BusyであるがActiveでない状態が出現する。
【０１２０】
「ＦＢのＩＤ」とは、１つの制御プログラムにおいて使用されているＦＢを個別に特定する情報である。たとえばプログラミングの際に与えられたＦＢの名称である。
【０１２１】
制御周期が開始されると、シミュレーション制御部８２０は、１周期分、シーケンス制御シミュレーション部８４０およびモーション制御シミュレーション部８５０にシミュレーション実行させる。制御周期計数部８２４は、「現在制御周期番号」をインクリメント更新する。そして、上述したようにシミュレーション制御部８２０は、再開可能制御周期であるかどうかを判断し、再開可能制御周期でないと判断した場合には、制御周期計数部８２４から「現在制御周期番号」を、シーケンス変数記憶部８４６から「現在Ｉ／Ｏデータ」、「現在内部変数データ」を、モーション変数記憶部８５６から「現在ＦＢ設定パラメータ」、「現在指令値」、「軸の現在位置」、「現在ActiveなＦＢのＩＤ」、「現在BusyなＦＢのＩＤ」を再開用データバッファ８２８に上書き保存する。
【０１２２】
一方、シミュレーション制御部８２０が再開可能制御周期であると判断した場合には、まず、再開用データバッファ８２８の内容を再開用データ記憶部８２６に追記し、その後、再開可能制御周期でないと判断した場合と同様に再開用データバッファ８２８を上書きする。
【０１２３】
再開用データ記憶部８２６に保存する制御周期番号は、本実施形態では再実行を開始することができる再開可能制御周期の１つ前の周期の制御周期番号であるが、制御周期番号を再開用データバッファ８２８から転送するのではなく、再開可能制御周期の制御周期番号自体を再開用データとして保存するようにしてもよい。その場合は、シミュレーションを再実行するときに、再開用データに含まれている制御周期番号は、制御周期番号以外の再開用データが生成された制御周期の次の制御周期を示していることを前提として再実行を開始する準備の処理を行う。また、たとえば、一定のオフセット値を加算した制御周期番号を再開用データとして保存し、再開時には同じオフセット値を減算するというような約束があれば、上記以外の制御周期番号を保存するようにすることもできる。すなわち、保存するのは、再開可能制御周期に対応させることができる制御周期番号である。
【０１２４】
再開用データ記憶部８２６には、再開可能制御周期から再実行を開始するのに用いられる再開用データを再開用データバッファから読み出して追記する。このことは、再開可能制御周期において生成された再開用データを記憶するということと同じ意味ではない。図８の場合には、再開可能制御周期の１つ前の制御周期において生成された再開用データを記憶している。再開用データバッファ８２８を複数周期分のリングバッファとして構成すれば、数周期前の制御周期において生成された再開用データを再開用データ記憶部８２６に記憶することもできる。この場合、再実行時には、再開用データが生成された制御周期の次の制御周期から数周期分準備的な実行をすることにより、ユーザの指定を用いて特定された制御周期から再実行を開始することができる状態となる。
【０１２５】
再開用データ記憶部８２６に指令値と軸の位置の両方を記憶しておくと、軸の位置が前の周期の指令値である場合には、指令値と軸の位置との差から速度を求めることができる。
【０１２６】
再開用データ記憶部８２６に、指令値に代えて、再開用データが生成された制御周期の１つ前の周期で更新された軸の位置、すなわち２つ前の周期において出力された指令値を反映した軸の位置を記憶するようにしてもよい。そうすると、２つの「軸の位置」の差から速度を求めることができる。軸の位置を、制御対象装置の物理特性を考慮した予測位置として算出している場合には、それに対応する予測速度を求めることができる。
【０１２７】
以上のように２つの位置の値から再開時に速度を求める代わりに、あらかじめ算出した速度値を再開用データ記憶部８２６に記憶するようにしてもよい。
【０１２８】
再開用データ記憶部８２６にすべての制御周期の再開用データを保存するようにしてもよい。そうすると、どの制御周期からでもシミュレーションの再実行を開始することができる。
【０１２９】
再開用データ記憶部８２６にすべての制御周期の再開用データをいったん保存した後、再開可能制御周期を任意の数だけ設定し、その後再開可能制御周期の設定対象とならなかった制御周期に対応する再開用データを削除するようにしてもよい。
【０１３０】
シミュレーション制御部８２０は、毎制御周期における図７のＩ／Ｏリフレッシュ処理のシミュレーション実行のタイミング（ステップＳ３２）で、図９に（１）、（２）、（３）で示したとおり、制御周期計数部８２４から「現在制御周期番号」を、シーケンス変数記憶部８４６から「現在Ｉ／Ｏデータ」を、モーション変数記憶部８５６から「現在指令値」、「軸の現在位置」を実行結果データ記憶部８３０に追記するとともに、「軸の移動中実行フラグ」を生成して実行結果データ記憶部８３０に追記する。「軸の移動実行中フラグ」は、その軸を制御するいずれかのＦＢがActiveであることを示すフラグである。なお、Ｉ／Ｏデータは、すべての種類のＩ／Ｏデータを記憶してもよいが、タイムチャートのグラフ表示をすることを予定しているＩ／Ｏデータをユーザが指定し、それに限って記憶することにすれば記憶容量を節約できる。指令値と軸の位置は、どちらか一方だけを実行結果データ記憶部に記憶させるようにしてもよい。両方を記憶しておくと、軸の位置が制御対象装置の物理特性を考慮して算出した予測位置である場合に、指令値と予測位置との差異を確認することができる。
【０１３１】
実行結果データ記憶部８３０に記憶された実行結果データから速度を得たい場合は、前の周期（制御周期番号＃Ｎ−１）の軸の位置と本周期（制御周期番号＃Ｎ）の軸の位置との差から速度を求めることができる。
【０１３２】
軸の位置が前の周期の指令値である場合には、同じ制御周期における指令値と軸の位置との差から速度を求めることができる。
【０１３３】
以上のように実行結果データを表示するときに２つの位置の値から速度を求める代わりに、あらかじめ算出した速度値を実行結果データ記憶部８３０に記憶するようにしてもよい。
【０１３４】
制御対象の軸が複数ある場合には、指令値、軸の位置、軸の移動実行中フラグは、それらが記憶される各記憶部において、軸ごとに記憶される。
【０１３５】
ＦＢ設定パラメータ、ＦＢのＩＤは、対象となるＦＢが複数ある場合には、ＦＢごとに記憶される。
【０１３６】
図９においては、いずれかのＦＢがActive、すなわちいずれかのＦＢが指令値を算出している期間中の制御周期であるか、シーケンス制御部分のみが実行されている期間の制御周期であるかにかかわらず、どの制御周期も再開可能制御周期とすることができる。
【０１３７】
図１０は、本発明の実施の形態に従う指令値が算出されていない制御周期に関するシミュレーション部８０６におけるデータの流れについて説明する図である。
【０１３８】
図１０を参照して、いずれのＦＢもActiveでない期間におけるデータの流れを示す。この期間中は、ＦＢの状態に関するデータ（ＦＢ設定パラメータ、指令値、ActiveなＦＢのＩＤ、BusyなＦＢのＩＤ）が有効に存在しないので、ＦＢの状態に関するデータは再開用データおよび実行結果データとして記憶されない。軸の位置はＦＢがActiveでない期間にも有効に存在するので記憶される。
【０１３９】
本例においては、記憶されないデータの領域を詰めた態様で表示しているが、データ領域自体は確保したままでもかまわない。
【０１４０】
再開可能制御周期を設定できる期間をいずれのＦＢもActiveでない期間に限定すると、ＦＢの状態に関するデータを再開用データとして保存する必要がないので、再開用データの保存のための記憶容量を削減することができる。いずれのＦＢもActiveでない期間からいずれかのＦＢがActiveになった最初の制御周期を再開可能制御周期とすることができるようにした場合も、保存されるデータが生成された前の周期においてはまだいずれのＦＢもActiveではないから、上記の再開可能制御周期を設定できる期間をいずれのＦＢもActiveでない期間に限定した場合と同様である。
【０１４１】
ＦＢの途中から再開せず、常にＦＢの冒頭から再開できればよい場合には、このように再開可能制御周期とすることができる制御周期を限定する方式も有用である。
【０１４２】
図１１は、本発明の実施の形態に従うＩＣチップ移載装置１００を説明する図である。本発明の実施の形態においては、制御対象装置としてＩＣチップ移載装置１００を例に挙げて説明する。
【０１４３】
図１１（Ａ）には、ＩＣチップ移載装置１００の平面図が示されている。
また、図１１（Ｂ）には、ＩＣチップ移載装置１００の正面図が示されている。
【０１４４】
図１１（Ａ）および（Ｂ）を参照して、ＩＣチップ移載装置１００は、図示しないモータによりＸ軸の位置決めが可能なＸガイド５１、Ｙ軸の位置決めが可能なＹガイド５２、Ｚ軸の位置決めが可能なＺガイド５３により構成されるＸＹＺガイド５０と、ＸＹＺガイド５０を用いてＩＣチップＴＰを真空吸着するための真空吸着式チャック６０とで構成されている。真空吸着式チャック６０は、ＩＣチップコンベア８０に所定間隔置きに配置されたＩＣチップＴＰを真空吸着する。そして、ＸＹＺガイド５０を用いてＩＣトレイコンベア７５に載置されたＩＣトレイ７０の所定の位置にＩＣチップＴＰを載置する。
【０１４５】
ＩＣトレイ７０には、行列状にＩＣチップを載置するための空きセルＲＮが設けられる。そして、ＸＹＺガイド５０は、ＩＣトレイ７０に設けられた空きセルＲＮに１つずつＩＣチップを移載するものとする。具体的には、ＩＣチップＴＰが供給されるワーク供給位置が予め設定されており、また、ＩＣトレイ７０の空きセルＲＮのいずれかにワーク移載位置が指定される。ＸＹＺガイド５０は、当該ワーク供給位置から当該ワーク移載位置に、真空吸着式チャック６０を用いて真空吸着したＩＣチップＴＰを移送して、当該指定されたワーク移載位置にＩＣチップＴＰを載置する。
【０１４６】
ＩＣチップコンベア８０に載置されているＩＣチップＴＰは、ＩＣチップコンベア８０を移動させることにより当該ワーク供給位置に移動させられる。ＩＣチップＴＰは、ＩＣチップコンベア８０の進行方向に沿って所定間隔おきに配置されているものとする。
【０１４７】
図１２は、本発明の実施の形態に従うＩＣチップ移載装置１００の動作のフローを説明する図である。
【０１４８】
図１２を参照して、まず、ＩＣチップＴＰが載置されていないすなわち、未載置のＩＣトレイ７０を供給受付位置へＩＣトレイコンベア７５を用いて移動させる（ステップＳ５０）。
【０１４９】
そして、次に、ＩＣチップコンベア８０を移動させてＩＣチップＴＰをワーク供給位置へ移動する（ステップＳ５２）。
【０１５０】
そして、次に、ＸＹＺガイド５０を用いて真空吸着式チャック６０をワーク供給位置へ移動させる（ステップＳ５４）。
【０１５１】
そして、次に、真空吸着式チャック６０を用いてＩＣチップＴＰを真空吸着する（ステップＳ５６）。
【０１５２】
そして、ＸＹＺガイド５０を用いて真空吸着したＩＣチップＴＰをＩＣトレイ７０の空きセル位置（ワーク移載位置）へ移動させる（ステップＳ５８）。
【０１５３】
そして、ＩＣチップＴＰをＩＣトレイ７０の空きセル位置（ワーク移載位置）に載置する（ステップＳ６０）。
【０１５４】
次に、ＩＣチップＴＰの移載を継続するかどうかを判断する（ステップＳ６２）。
ステップＳ６２において、ＩＣチップＴＰの移載を継続しないと判断した場合（ステップＳ６２においてＮＯ）には、処理を終了する。
【０１５５】
一方、ステップＳ６２において、ＩＣチップの移載を継続すると判断した場合（ステップＳ６２においてＹＥＳ）には、次にＩＣトレイ７０に空きセルＲＮがあるかどうかを判断する（ステップＳ６４）。ＩＣトレイ７０に空きセルＲＮがあると判断した場合（ステップＳ６４においてＹＥＳ）には、ＩＣチップＴＰを供給位置へ移動する（ステップＳ５２）。以降の処理は同様であるのでその詳細な説明は繰返さない。すなわち、１つずつＩＣチップＴＰをＩＣトレイ７０の空きセルＲＮに載置していくことになる。
【０１５６】
ステップＳ６４において、ＩＣトレイ７０に空きセルがないと判断した場合（ステップＳ６４においてＮＯ）には、未載置のＩＣトレイ７０を供給受付位置へ移動させる（ステップＳ５０）。
【０１５７】
そして、上記処理を繰り返すものとする。
図１３は、ＩＣチップ移載装置１００におけるＸＹＺガイド５０を制御する制御プログラムの一部を説明する図である。
【０１５８】
図１３を参照して、ここでは、ＸＹＺガイド５０を制御して真空吸着式チャック６０をＩＣトレイ７０の空きセルＲＮの位置へ移動する部分のプログラムが示されている。
【０１５９】
ここで、ＦＢ１およびＦＢ２は、MC_MoveAbsoluteという名称の同じ種類のモーションファンクションブロックであり、１つの軸（モータの回転位置）を現在位置から絶対座標で与えた目標位置まで移動させるように制御周期ごとに指令値を生成する機能を有する。
【０１６０】
ＦＢ１（MoveToTray_X）は、真空吸着式チャック６０のＸ座標位置を空きセルのＸ座標位置まで移動させるために用いられている。
【０１６１】
ＦＢ２（MoveToTray_Y）は、真空吸着式チャック６０のＹ座標位置を空きセルのＹ座標位置まで移動させるために用いられている。ここでは、ＦＢ１とＦＢ２が制御プログラムのモーション制御部分に該当する。
【０１６２】
各ＦＢの左側の端子は入力端子、右側の端子は出力端子である。
まず、入力端子について説明する。
【０１６３】
「Axis」端子にはそのＦＢに対応付ける軸名称を与える。Axis_1にはＸ軸、Axis_2にはＹ軸が割り当てられている。
【０１６４】
「Execute」端子にＯＮ入力を与えるとＦＢが起動し、Busy状態およびActive状態となる。
【０１６５】
「Position」、「Velocity」、「Acceleration」、「Deceleration」、「Jerk」の各端子には、それぞれ目標とする位置、速度、加速度、減速度、躍度の値を与える。
【０１６６】
「Position」端子へはCell_X, Cell_Yという変数名で目標位置が与えられている。Cell_X, Cell_Yには、プログラムの別の場所で計算された空きセルのＸ座標、Ｙ座標が格納されている。
【０１６７】
「Velocity」、「Acceleration」、「Deceleration」の各端子には、プログラミング段階で定数値が与えられている。「Jerk」端子への入力は省略されている。
【０１６８】
「Direction」は、１周内の軸の回転位置が同じであれば軸が何周してその位置にあっても区別しないリングモードのための端子であり、ここでは使用しない。
【０１６９】
「BufferMode」については後述する。ここではBufferModeは使用されていない。
次に、出力端子について説明する。
【０１７０】
出力の「Axis」端子は、入力のAxis端子のデータをそのまま出力する。
「Done」端子は、ＦＢの実行が完了した制御周期の次の制御周期においてONを出力する。
【０１７１】
「CommandAborted」端子は、ＦＢの実行が中止した制御周期の次の制御周期においてONを出力する。
【０１７２】
「Busy」端子は、ＦＢがBusy状態である間、ONを出力する。
「Active」端子は、ＦＢがActive状態である間、ONを出力する。
【０１７３】
「Error」端子は、なんらかのエラーが発生したときにONを出力する。
「ErrorID」端子は、エラーが発生したときにエラーコードを出力する。
【０１７４】
ここでは、Under_MovingToTrayと名づけられた接点（変数）がONになると、ＦＢ１およびＦＢ２の「Execute」端子にONが与えられ、ＦＢ１およびＦＢ２は空きセルＲＮの位置へ向かってＸ軸とＹ軸を移動させるための指令値算出を開始する。それぞれの軸の移動が完了すると、各「Done」端子はONを出力する。「Done」端子の出力のＯＮまたはＯＦＦの値は、ToTray_Done_X, ToTray_Done_Yと名づけられた接点（変数）に格納される。これらの接点は、ＩＣチップＴＰを空きセルに載置するためのＺ軸の下降動作を開始するために用いられる。
【０１７５】
図１４は、本発明の実施の形態に従うコントローラサポートプログラムのウインドウ画面について説明する図である。
【０１７６】
図１４を参照して、本発明の実施の形態に従うコントローラサポートプログラムのウインドウ画面１０００には、設定欄１００２と、制御プログラム編集欄１００４とが設けられる。
【０１７７】
設定欄１００２は、制御プログラムの編集やシミュレーションを行う上で必要となる種々の設定入力をする部分である。
【０１７８】
また、制御プログラム編集欄１００４は、制御プログラムを入力し、編集するために用いられる。
【０１７９】
また、右下領域においては、再開可能点設定方式の設定ボタン１０１０およびシミュレーション実行制御ボタン１００６と、シミュレーション実行結果表示リンク部１００８とが設けられている場合が示されている。
【０１８０】
再開可能点設定方式の設定ボタン１０１０を押下すると、図１５の選択ウインドウ画面１１００が別ウインドウとして開くものとする。この設定をした後にシミュレーションを実行すると再開用データが保存される。
【０１８１】
シミュレーション実行制御ボタン１００６として４つのボタンが設けられ、左から、シミュレーションの実行開始、停止、一時停止、ステップ実行を指示するためのボタンがそれぞれ設けられている。
【０１８２】
シミュレーション実行結果表示リンク部１００８は、当該リンク部をクリック（押下）すると、図１６のタイムチャートウインドウ画面が別ウインドウとして開くものとする。
【０１８３】
図１５は、本発明の実施の形態に従う再開可能点設定方式の選択ウインドウ画面１１００を説明する図である。
【０１８４】
図１５を参照して、本発明の実施の形態に従う選択ウインドウ画面１１００は、「ＦＢのActive ON」、「ＦＢのBusy ON」、「一定間隔」をそれぞれチェックすることが可能なチェックボックスが設けられており、本例においては、マウス９０６等を介して「ＦＢのActive ON」にチェックが付けられた場合が示されている。そして、「ＯＫ」ボタン１１０４と、「キャンセル」ボタン１１０６とがそれぞれ設けられており、「ＯＫ」ボタン１１０４をクリック（押下）することによりチェックボックスにチェックした設定方式が有効となる。当該「ＯＫ」ボタン１１０４あるいは「キャンセル」ボタン１１０６をクリック（押下）することにより当該ウインドウ画面は閉じるものとする。
【０１８５】
「ＦＢのActive ON」にチェックを入れると、各ＦＢがActive ONとなる制御周期が再開可能制御周期とされる。
【０１８６】
各ＦＢがActive ONとなる制御周期より一定数前の制御周期が再開可能制御周期とされるようにしてもよい。このようにモーション制御部分が活性状態となる制御周期を基準として再開可能制御周期を設定すると、ユーザはモーション制御部分が活性状態になる付近から再実行を開始させることが容易になる。モーション制御部分が活性状態となる制御周期と関係しない再開可能制御周期を設定しないか設定数を少なくすれば再開用データの保存量が少なくて済み、そのようにしてもある程度の利便性が保たれる。
【０１８７】
「ＦＢのBusy ON」にチェックを入れると、各ＦＢがBusy ONとなる制御周期が再開可能制御周期とされる。あるＦＢがBusy ONとなる制御周期を再開可能制御周期とする場合は、１つ前の周期、すなわち再開用データが生成される周期において、その軸に関してBusyかつActiveである他のＦＢが存在する可能性があるので「現在ActiveなＦＢのＩＤ」を再開用データとして保存する必要はあるが、その軸に関してBusyであるがActiveでない他のＦＢは存在しないので、「現在BusyなＦＢのＩＤ」を再開用データとして保存することを省略してもよい。各ＦＢがBusy ONとなる制御周期より一定数前の制御周期が再開可能制御周期となるようにしてもよい。このようにモーション制御部分が実行中状態となる制御周期を基準として再開可能制御周期を設定すると、ユーザはモーション制御部分が実行中状態になる付近から再実行を開始させることが容易になる。モーション制御部分が実行中状態となる制御周期と関係しない再開可能制御周期を設定しないか設定数を少なくすれば再開用データの保存量が少なくて済み、そのようにしてもある程度の利便性が保たれる。
【０１８８】
「一定間隔」にチェックを入れ、時間（秒）を指定すると、指定した時間間隔ごとの時間に相当する制御周期が再開可能制御周期とされる。再開可能制御周期の設定間隔が十分小さければ、近似的にどこからでも再実行を開始させることができる。
【０１８９】
なお、１つに限られず複数の設定方式を同時に有効とすることが可能である。
図１６は、本発明の実施の形態に従うタイムチャートウインドウ画面１２００について説明する図である。
【０１９０】
図１６を参照して、本発明の実施の形態に従うタイムチャートウインドウ画面１２００は、図１４のシミュレーション実行結果表示リンク部１００８をクリック（押下）すると開かれる。
【０１９１】
ここでは、１つのＩＣチップＴＰの吸着と載置の１サイクルの動作について、各軸の速度と移動実行中フラグの状態を示している。
【０１９２】
「再開点指定方式」の欄では、再開点指定方式が５つの方式の中から択一的に選択できるようになっている。
【０１９３】
具体的には、「再開点指定方式」の欄で「チャート上」を選択すると時間指定つまみを横方向にドラッグすることにより再開点を指定することができる。再開可能点が「ＦＢのActive ON」または「ＦＢのBusy ON」に設定されているとすると、いずれかの軸の移動実行中フラグの立ち上がりタイミングが再開可能点となっている。再開点は垂直のカーソル線１２０８の位置によって示されており、このカーソル線１２０８は時間指定つまみ１２０６の移動に伴って移動するが、時間指定つまみ１２０６は連続的に位置を変更できるのに対し、再開可能点は離散的に存在しているのでカーソル線１２０８の移動の仕方も離散的となる。本例においては、時間指定つまみ１２０６の位置に最も近い３．１８秒の再開可能点にカーソル線１２０８が位置している。この状態から時間指定つまみをわずかに左に動かすと、カーソル線１２０８はＺ軸の移動実行中フラグが立ち上がる３．０４秒の位置に離散的に移動する。時間表示欄１２０３には、時間スケール１２１２において、カーソル線１２０８の位置における時間が表示されており、値表示欄１２０４に表示されているのはカーソル線１２０８の位置における各グラフの縦軸の値である。また、スクロールバー１２１０を操作することにより時間スケール１２１２の位置を変更することが可能である。
【０１９４】
このように、モニタ９０７に表示されたグラフ上の位置についてのユーザの指示を受け付け、ユーザによって指示されたグラフ上の位置に対応する再開可能制御周期を特定し、当該再開可能制御周期からシミュレーションの再実行を開始することにより、ユーザは、制御プログラムの実行結果の推移と対応付けて再実行の開始を指示することができる。
【０１９５】
「再開点指定方式」の欄で「チャート上」の右側にある「一時解除」をチェックすると、再開点の指定操作の状態が一時的に解除され、カーソル線１２０８が時間指定つまみ１２０６と同じ位置に表示されて連続的に移動するようになり、値表示欄１２０４の表示によって任意の時間における各グラフの値を調べることができる。
【０１９６】
「再開点指定方式」の欄で「最終修正ＦＢ」を選択すると、図１４の制御プログラム編集欄１００４で最も最近に入力値が修正されたＦＢから再実行することができる再開可能制御周期が再開点として指定される。この場合、シミュレーション部８０６は、修正されたＦＢを特定する情報を制御プログラム編集部８１０から取得し、最も最近に修正されたＦＢから再実行することができる再開可能制御周期を特定し、当該再開可能制御周期からシミュレーションの再実行を開始する。このようにすることにより、修正したモーション制御部分から再実行することが容易にできる。
【０１９７】
「再開点指定方式」の欄で「プログラムリスト上」を選択すると、図１４の制御プログラム編集欄１００４に表示されたプログラムリスト上でＦＢを選択することにより、そのＦＢから再実行することができる再開可能制御周期が再開点として特定される。具体的には、プログラムリスト上で１つのＦＢをクリックして選択し、プルダウンメニューから「再開点として指定」を選択する。この場合、シミュレーション部８０６は、プログラムのリスト表示上で指定されたＦＢから再実行することができる再開可能制御周期を特定し、当該再開可能制御周期からシミュレーションの再実行を開始する。このようにすることにより、ユーザは制御プログラムのリスト表示に表れたモーション制御部分と対応付けて再実行の開始を指示することができる。
【０１９８】
「再開点指定方式」の欄で「空間軌跡上」を選択すると、図１７の空間軌跡表示ウインドウ画面１３００に表示される空間軌跡上で指定した位置に対応する制御周期が再開点として指定される。
【０１９９】
「再開点指定方式」の欄で「軸位置リスト上」を選択すると、図１８の軸位置リスト上での指定に従い再開点が指定される。
【０２００】
「最終修正ＦＢ」、「プログラムリスト上」、「空間軌跡上」、「軸位置リスト上」のいずれの場合も、指定された再開点が表示されるようにグラフは自動的にスクロールされる。
【０２０１】
「プログラムリスト上」、「空間軌跡上」、「軸位置リスト上」のいずれかを選択して「ＧＯ」ボタン１２０１を押すと、対応する図１４、図１７、または図１８のウインドウ画面が開き、または手前のウインドウ画面として表示される。
【０２０２】
図１７は、本発明の実施の形態に従う空間軌跡表示ウインドウ画面１３００を説明する図である。
【０２０３】
図１７を参照して、空間軌跡表示ウインドウ画面１３００に表示される空間軌跡は、実行結果データ記憶部に記憶された一連の軸の位置を用いて描画される。
【０２０４】
軸の位置に代えて記憶された指令値を用いて描画してもよい。
図１７に表示されている空間軌跡は、ＩＣチップ移載装置１００のＸＹＺガイド５０の場合と異なり、Ｚ方向に上昇しつつ、ＸＹ座標平面への投影としては半円を描く軌跡の例が示されている。
【０２０５】
画面上部の仮想機構設定欄１３０１には現在使用されている仮想機構の名称が表示されている。仮想機構は、電子的に構築されたモデルであって、ＸＹＺガイドのような機構の種類ごとにその構成を抽象化した、一連の指令値によって動く３次元モデルである。同欄右の三角マークをクリックすると仮想機構のリストが現れ、そこから現在使用されている仮想機構を他の仮想機構に変更することができる。
【０２０６】
設定編集のボタン１３０３を押すと、仮想機構設定画面が別ウインドウ画面として開く。
【０２０７】
座標値表示欄１３０４には、座標軸ごとの軸の現在位置が表示されている。
軸とモーションＦＢの対応表示欄１３０６には制御プログラムの中で使われている軸名と現在働いているＦＢ名との対応関係が表示されている。
【０２０８】
本例においては、表示設定欄１３０７の「３Ｄ」ボタン１３０７Ａを押して画像表示欄１３０２において、３Ｄ表示を大きく表示したところである。「３Ｄ」ボタン１３０７Ａをもう一度押すと３Ｄ表示のほかに、ＸＹ平面への投影図、ＸＺ平面への投影図、ＹＺ平面への投影図からなる４分割表示となる。「３Ｄ」以外の１つのボタンを押すと対応する平面投影図が拡大表示される。
【０２０９】
３Ｄ表示は、透視図法によって描写されており、マウス操作によって３次元空間内での視点の位置と視線方向を自由に変更することができる。
【０２１０】
Ｚ方向の直動要素の先端に現在位置を示す現在位置マーカーとして小さな球が表示されている。
【０２１１】
表示設定欄１３０７では、指令値の軌跡を表示するかどうかの選択、および仮想機構を表示するのかどうかの選択ができるようになっている。仮想機構を表示しない場合には軌跡の曲線だけの表示となる。詳細設定ボタン１３０７Ｐを押すと、さらに、軌跡の太さの設定、軌跡の表示色の設定、座標軸と座標数値を表示する設定などを行うことができる。
【０２１２】
画面の下部には動画再生制御ボタン１３１０が表示されている。
再生時間バー１３１４は、制御プログラムを最初から最後まで実行するのに要する時間を表している。現在時刻つまみ１３１２は、再生時間バー１３１４上を制御プログラムの実行時間の経過にしたがって左から右に移動する。現在時刻つまみ１３１２をマウス９０６でドラッグ操作することにより動画の表示開始時刻を調整することができる。軌跡始点つまみ１３０８、軌跡終点つまみ１３１６は、軌跡の表示開始時刻、終了時刻を示しており、いずれもマウス９０６でドラッグ操作することにより再生時間バー１３１４に沿って移動させることができる。現在位置が時間の経過とともに連続的に移動する場合は、軌跡始点つまみ１３０８または軌跡終点つまみ１３１６を動かすとそれに応じて表示されている軌跡の長さが変わる。
【０２１３】
動画の表示を開始すると、各機構要素が動いて現在位置マーカーが軌跡に沿って動いていく様子が表示される。
【０２１４】
動画を構成する順次に表示される各静止画は、すべての制御周期について作成せず、一定間隔ごとの制御周期について作成してもよい。
【０２１５】
画像表示欄１３０２において、軌跡に重ねて表示されている多数の十字マークはシミュレーションの再開可能点が設定されている位置を示す。この例では、時間的に一定間隔で再開可能点が設定されている。ユーザは、これらのマークのいずれかをクリックして選択し、プルダウンメニューから「再開点として指定」を選択することにより、シミュレーション再開点を指定することができる。この場合、シミュレーション部は、ユーザによって指示された軌跡上の位置に対応する再開可能制御周期を特定し、当該再開可能制御周期からシミュレーションの再実行を開始する。このようにすることにより、ユーザは、位置の指令値の空間的軌跡と対応付けて再実行の開始を指示することができる。
【０２１６】
図１８は、本発明の実施の形態に従う軸位置のリストの表示ウインドウ画面１４００を説明する図である。
【０２１７】
図１８を参照して、本発明の実施の形態に従う表示ウインドウ画面１４００は、再開可能点が設定されている制御周期に対応する時間と軸位置のリストが表示され、その中から再開点を指定することができる。
【０２１８】
スクロールバー１４０２を操作することにより表示ウインドウ画面に表示される内容をスクロールすることができる。指定できる再開点は１つのみである。本例においては、各軸の位置が数値で表示されているが、軸位置を表す変数名によって表示してもよい。そして、「ＯＫ」ボタン１４０４をクリック（押下）することにより再開点の指定が有効となる。また、「キャンセル」ボタン１４０６をクリック（押下）することにより再開点の指定を中止することができる。
【０２１９】
この場合、シミュレーション部８０６は、ユーザによって指示された位置のリスト上の位置に対応する再開可能制御周期を特定し、当該再開可能制御周期からシミュレーションの再実行を開始する。このようにすることにより、ユーザは、制御プログラムの実行結果の推移と対応付けて再実行の開始を指示することができる。
【０２２０】
図１９は、本発明の実施の形態に従うBufferedモードを説明する図である。
図１９（Ａ）を参照して、Bufferedモードは、先行側（左側）のＦＢのAxis出力端子と後続側（右側）のＦＢのAxis入力端子を直結することにより２つのＦＢを直列に接続し、先行側のＦＢの実行中に、後続側のＦＢのExecute端子にON（１の値）を入力して後続側のＦＢをBusy状態としておくモードである。あらかじめBusy状態とされた後続側のＦＢは先行側のＦＢが実行完了した制御周期の次の制御周期からActiveとなって指令値の算出を開始する。
【０２２１】
Bufferedモードは、後続側のＦＢのBufferMode端子に「Buffered」を入力することにより指定する。
【０２２２】
後続側のＦＢの後ろにさらに別のＦＢを直列に接続してそのＦＢにもBufferedモードを指定することも可能である。
【０２２３】
図１９（Ｂ）を参照して、ここでは、BufferedモードにおけるＦＢの一部の端子について入力される信号および出力される信号のタイミングチャートが示されている。
【０２２４】
時刻ｔ１にＦＢ１が起動してBusy状態およびActive状態となる場合が示されている。また、時刻ｔ２にＦＢ２が起動してBusy状態となる場合が示されている。また、時刻ｔ３にＦＢ２がActive状態となる場合が示されている。
【０２２５】
再開可能点の設定方式として、「ＦＢのActive ON」と「ＦＢのBusy ON」の両方を指定すると、グラフの時刻ｔ１，ｔ２，ｔ３に対応する制御周期が再開可能点となる。
【０２２６】
図２０は、本発明の実施の形態に従うAbortingモードにおけるＦＢの一部の端子について入力される信号および出力される信号のタイミングチャートを説明する図である。
【０２２７】
図１９（Ａ）の２つのＦＢを直列接続した状態で、後続側のＦＢのBufferMode端子に「Aborting」を入力すると、Abortingモードとなる。Abortingモードでは、先行側のＦＢの実行中に、後続側のＦＢのExecute端子にON（１の値）を入力すると、直ちに、先行側のＦＢの実行が中止され、次の制御周期で後続側のＦＢがActiveとなって指令値の算出を開始する。後続側のＦＢの後ろにさらに別のＦＢを直列に接続してそのＦＢにもAbortingモードを指定することも可能である。
【０２２８】
再開可能点の設定方式として、「ＦＢのActive ON」と「ＦＢのBusy ON」の両方を指定すると、グラフの時刻ｔ１，ｔ２に対応する制御周期が再開可能点となる。Bufferedモードの場合に後続側のＦＢが実行開始した時刻ｔ３はAbortingモードでは再開可能点とならない。
【０２２９】
次に、Blendingモードについて説明する。Blendingモードは先行側のＦＢが中止されずに実行完了する点でBufferedモードと共通するが、Bufferedモードのように速度がいったんゼロになるのではなく、中継速度での移動を継続したまま先行側のＦＢがActiveな状態から後続側のＦＢがActiveな状態に移行する。Blendingモードには、中継速度の決定のされ方により、BlendingNextモード、BlendingPreviousモード、BlendingHighモード、BlendingLowモードの４つのモードがある。
【０２３０】
図２１は、本発明の実施の形態に従うBlendingNextモードにおけるＦＢの一部の端子について入力される信号および出力される信号のタイミングチャートを示す図である。
【０２３１】
図１９（Ａ）の２つのＦＢを直列接続した状態で、後続側のＦＢのBufferMode端子に「BlendingNext」を入力するとBlendingNextモードになる。
【０２３２】
BlendingNextモードでは、先行側のＦＢの実行中に、後続側のＦＢのExecute端子にON（１の値）を入力すると、先行側のＦＢの終了速度が後続側のＦＢの目標速度となるように先行側ＦＢの指令値演算内容が調整される。あらかじめBusy状態とされた後続側のＦＢは先行側のＦＢが実行完了した制御周期の次の制御周期からActiveとなって指令値の算出を開始する。
【０２３３】
後続側のＦＢの後ろにさらに別のＦＢを直列に接続してそのＦＢにもBlendingNextモードを指定することも可能である。
【０２３４】
再開可能点の設定方式として、「ＦＢのActive ON」と「ＦＢのBusy ON」の両方を指定すると、グラフの時刻ｔ１，ｔ２，ｔ３に対応する制御周期が再開可能点となる。
【０２３５】
図２２は、本発明の実施の形態に従うBlendingPreviousモードにおけるＦＢの一部の端子について入力される信号および出力される信号のタイミングチャートを示す図である。
【０２３６】
図１９（Ａ）の２つのＦＢを直列接続した状態で、後続側のＦＢのBufferMode端子に「BlendingPrevious」を入力するとBlendingPreviousモードになる。
【０２３７】
BlendingPreviousモードでは、先行側のＦＢの実行中に、後続側のＦＢのExecute端子にON（１の値）を入力すると、先行側のＦＢが実行完了まで目標速度を維持するように先行側ＦＢの指令値演算内容が調整される。あらかじめBusy状態とされた後続側のＦＢは先行側のＦＢが実行完了した制御周期の次の制御周期からActiveとなって指令値の算出を開始する。
【０２３８】
後続側のＦＢの後ろにさらに別のＦＢを直列に接続してそのＦＢにもBlendingPreviousモードを指定することができる。
【０２３９】
再開可能点の設定方式として、「ＦＢのActive ON」と「ＦＢのBusy ON」の両方を指定すると、グラフの時刻ｔ１，ｔ２，ｔ３に対応する制御周期が再開可能点となる。
【０２４０】
また、図１９（Ａ）の２つのＦＢを直列接続した状態で、後続側のＦＢのBufferMode端子に「BlendingHigh」を入力するとBlendingHighモードになる。BlendingHighモードでは、先行側ＦＢの目標速度と後続側ＦＢの目標速度の大きい方が中継速度となる。すなわち、先行側ＦＢの目標速度の方が大きい場合の動作はBlendingPreviousモードの動作と同じであり、先行側ＦＢの目標速度の方が小さい場合の動作はBlendingNextモードの動作と同じである。
【０２４１】
また、図１９（Ａ）の２つのＦＢを直列接続した状態で、後続側のＦＢのBufferMode端子に「BlendingLow」を入力するとBlendingLowモードになる。BlendingLowモードでは、先行側ＦＢの目標速度と後続側ＦＢの目標速度の小さい方が中継速度となる。すなわち、先行側ＦＢの目標速度の方が大きい場合の動作はBlendingNextモードの動作と同じであり、先行側ＦＢの目標速度の方が小さい場合の動作はBlendingPreviousモードの動作と同じである。
【０２４２】
以上、１つの軸について目標位置を絶対座標で指定するモーションファンクションブロックを例に説明してきたが、モーションファンクションブロックには、目標位置をそのＦＢの実行開始時の位置からの相対座標で指定するものや、複数の軸をグループ化してグループに含まれる各軸の移動開始と移動終了のタイミングおよび途中の速度制御を同期させることにより２次元空間または３次元空間内の２点間を直線的に移動させるもの、さらに２点間を円弧状の軌跡を描いて移動させるものなど、いろいろな種類がある。いうまでもなく、いずれの場合にも本発明を適用することができる。
【０２４３】
なお、コンピュータを機能させて、上述のフローで説明したような制御を実行させる方法あるいは当該方法を実現するプログラムを提供することもできる。このようなプログラムは、コンピュータに付属するフレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）およびメモリカードなどの一時的でないコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵するハードディスクなどの記録媒体にて記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
【０２４４】
なお、プログラムは、コンピュータのオペレーションシステム（ＯＳ）の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずＯＳと協働して処理が実行される。このようなモジュールを含まないプログラムも、本発明にかかるプログラムに含まれ得る。
【０２４５】
また、本発明にかかるプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本発明にかかるプログラムに含まれ得る。
【０２４６】
提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記録された記録媒体とを含む。
【０２４７】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２４８】
２  サーバ、４  ネットワーク、８  コントローラサポートプログラム、１０，１５  制御プログラム、１４  コントローラ、１６  制御対象装置、１７  モータドライバ、１８  モータ、５０  ＸＹＺガイド、６０  真空吸着式チャック、７０  ＩＣトレイ、７５  ＩＣトレイコンベア、８０  ＩＣチップコンベア、１００  ＩＣチップ移載装置、８０２  ユーザインタフェース部、８０４  表示データ作成部、８０６  シミュレーション部、８０８  制御プログラム記憶部、８１０  制御プログラム編集部、８１２  コントローラインタフェース部、８２０  シミュレーション制御部、８２２  デバッグ支援部、８２４  制御周期計数部、８２６  再開用データ記憶部、８２８  再開用データバッファ、８３０  実行結果データ記憶部、８４０  シーケンス制御シミュレーション部、８４２  シーケンス演算制御部、８４４  シーケンス演算実行部、８４６  シーケンス変数記憶部、８５０  モーション制御シミュレーション部、８５２  モーション演算制御部、８５４  モーション演算実行部、８５６  モーション変数記憶部。
【図１】
2011192016.tif 000003
【図２】
2011192016.tif 000004
【図３】
2011192016.tif 000005
【図４】
2011192016.tif 000006
【図５】
2011192016.tif 000007
【図６】
2011192016.tif 000008
【図７】
2011192016.tif 000009
【図８】
2011192016.tif 000010
【図９】
2011192016.tif 000011
【図１０】
2011192016.tif 000012
【図１１】
2011192016.tif 000013
【図１２】
2011192016.tif 000014
【図１３】
2011192016.tif 000015
【図１４】
2011192016.tif 000016
【図１５】
2011192016.tif 000017
【図１６】
2011192016.tif 000018
【図１７】
2011192016.tif 000019
【図１８】
2011192016.tif 000020
【図１９】
2011192016.tif 000021
【図２０】
2011192016.tif 000022
【図２１】
2011192016.tif 000023
【図２２】
2011192016.tif 000024