(57)【要約】【課題】少ない工数のワーク設定を行うだけで、小さなメモリ消費で、生産システムの複雑な動作をシミュレーションにより検証できるようにする。【解決手段】生産装置の動作に係る応答信号を入出力可能な制御装置と、生産装置を制御するＰＬＣ装置Ｂと、を備えた生産システムの動作を検証する制御部１０４を備えたラインシミュレータ装置Ａが、前記制御装置またはＰＬＣ装置Ｂとの間で入出力した信号に基づき、仮想環境において生産装置に対応する生産装置モデルおよび生産装置モデルが取り扱うワークの状態をシミュレートする。制御部１０４は、前記制御装置から出力される応答信号を監視し、その応答信号と、生産装置モデルとワークの組合せ、ないしワーク同士の組合せの状態を記述した状態命令と、のトリガが一致した場合、仮想環境において、状態命令に対応する動作を生産装置モデルに行わせる。【選択図】図１
2019101757.tif 000002
【特許請求の範囲】
【請求項１】
生産装置の動作に係る応答信号を入出力可能な複数の制御装置と、生産装置の動作を検証するシミュレータ制御部を備えた生産システム検証装置が、前記制御装置で入出力した信号に基づき、仮想環境において前記生産装置に対応する生産装置モデルおよび前記生産装置モデルが取り扱うワークの状態をシミュレートする生産システム検証方法において、
前記シミュレータ制御部が、前記生産装置が取り扱う全てのワークの初期絶対位置データを記憶部に記憶させる記憶工程と、
前記シミュレータ制御部が、前記制御装置から出力される応答信号を監視し、前記応答信号と、前記生産装置モデルと前記ワークの組合せ、ないし前記ワーク同士の組合せの状態を記述した状態命令と、のトリガが一致した場合、前記仮想環境において、前記状態命令に対応する動作を前記生産装置モデルと前記ワークに行わせる状態監視工程と、
前記シミュレータ制御部が、前記状態監視工程で一致した前記状態命令で指定された前記生産装置モデルとワークの組合せ、または、複数のワークの組合せを一体化するための相対的な位置関係を表す相対位置データを算出する処理と、前記生産装置の変位情報に基づき前記生産装置モデルの絶対位値データを算出する処理と、前記生産装置モデルの絶対位置データと前記一体化したワークの相対位置データよりワークの絶対位置データを算出する処理を行う計算工程と、
前記シミュレータ制御部が、前記計算工程で算出した前記絶対位置データに基づき、前記仮想環境に相当する仮想表示を表示装置に行わせる仮想表示工程と、を備え、
前記シミュレータ制御部は、前記生産装置モデルが一体化し、前記仮想環境から排出したワークに関する相対位置データを前記記憶部において無効化する生産システム検証方法。
【請求項２】
請求項１に記載の生産システム検証方法において、前記制御装置が、前記応答信号を入出力可能なソフトウェアによって構成された仮想制御装置である生産システム検証方法。
【請求項３】
請求項１から２のいずれか１項に記載の生産システム検証方法において、
前記状態命令は、
前記生産装置モデルとワークの組合せに対して前記相対位置データの算出の依頼を行い、一体化の情報を付加する処理を行う把持命令と、
前記一体化した生産装置モデルとワークに対して一体化の情報と相対位置データを削除する処理を行う解放命令と、
複数の前記ワークの組合せに対して前記相対位置データの算出の依頼を行い、一体化の情報を付加する処理を行う組立命令と、
前記一体化したワークを、前記仮想表示で非表示にし、一体化したワークの全ての一体化の情報と相対位置データを削除する処理を行う排出命令と、
前記非表示にしたワークの絶対位置を初期絶対位置データに更新する処理を行うことにより前記ワークを再び供給する供給命令と、を含む生産システム検証方法。
【請求項４】
請求項１から３のいずれか１項に記載の生産システム検証方法において、
前記生産システムの実環境に配置された物理センサに対応し、前記物理センサの動作を模擬する仮想センサの出力に応じて、
前記シミュレータ制御部が、前記仮想環境において、前記生産装置モデルないし前記ワークの間で発生する干渉を検出する干渉判断工程を備え、
前記干渉判断工程において、前記シミュレータ制御部は、前記仮想センサが干渉状態を検出すると前記仮想センサの情報を更新し、干渉状態を検出した旨を通知する信号を前記制御装置に送信する生産システム検証方法。
【請求項５】
請求項１から４のいずれか１項に記載の生産システム検証方法において、前記仮想環境において、前記生産装置モデルによって、複数のワークの組立てを繰り返しシミュレーションする場合、
前記シミュレータ制御部は、複数のワークの組立てを繰り返しシミュレーションする前に、状態を遷移させるワークの種類と、状態を遷移させるワークの数と、に応じて、複製処理によって、複数のワークの組立てに必要なワークのモデルを作成する生産システム検証方法。
【請求項６】
請求項５に記載の生産システム検証方法において、
前記シミュレータ制御部は、前記ワークの組立てを行うために必要な状態命令リストと、ワークの供給を行うための供給命令を含む供給命令リストと、ワーク構成設定リストと、を含む状態遷移設定データを用い、
前記シミュレータ制御部は、複数のワークの組立てを繰り返しシミュレーションする前に、前記状態命令リストと供給命令リストには、状態を遷移させるワークの種類を設定し、前記ワーク構成設定リストには、ワークの種類の数だけ、前記供給命令により供給される最低限のワークの数と、供給の順序と仮想環境の中のワークとを関連づけるリンク情報と、組立途中となるワークの数を設定し、前記シミュレーションにおいて前記組立途中となるワークの数だけ当該のワークを作成し、前記作成したワークを含めたワークの供給の組合せリストと、各ワークの前記供給命令リストに存在する総点数の最小公倍数の数だけワークの組合せリストを作成し、
前記状態監視工程において、前記状態命令リストの最初の命令のトリガが一致すると、前記シミュレータ制御部は、前記組立の組合せリストに記述されたワークを関連づけて状態命令リストを作成し、また、前記供給命令リストのトリガが一致すると、供給リストのワーク情報を関連づけて、供給命令リストを作成し、
実行した状態命令を前記の状態命令リストおよび供給命令リストから削除または無効化する生産システム検証方法。
【請求項７】
請求項１から６のいずれか１項に記載の生産システム検証方法において、前記複数の制御装置のうち少なくとも１つの制御装置が統合制御装置であり、前記統合制御装置は、他の制御装置からの応答信号に基づいて生産装置を制御する生産システム検証方法。
【請求項８】
請求項１から７のいずれか１項に記載の生産システム検証方法を実行するシミュレータ制御部と表示装置を備えた生産システム検証装置。
【請求項９】
請求項８に記載の生産システム検証装置と、前記統合制御装置と、前記生産装置と、を備え、前記統合制御装置および前記生産装置に前記生産システム検証装置で検証された動作を行わせ、部品を製造する生産システム。
【請求項１０】
請求項８に記載の生産システム検証装置によって検証された動作を前記統合制御装置および前記生産装置に行わせ、部品を製造する部品の製造方法。
【請求項１１】
請求項９に記載の生産システムにおいて、前記統合制御装置がＰＬＣ装置である生産システム。
【請求項１２】
請求項９に記載の生産システムにおいて、前記生産装置がロボット装置、ないし前記ワークの搬送装置を含む生産システム。
【請求項１３】
請求項１から６のいずれか１項に記載の各工程を前記シミュレータ制御部に実行させる制御プログラム。
【請求項１４】
請求項１３に記載の制御プログラムを格納したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生産システムの動作を検証する生産システム検証方法、生産システム検証装置、および生産システムに関する。
【背景技術】
【０００２】
工業製品やその部品の生産ライン（生産システム）は、例えば、ロボットやＮＣ加工装置などの組立装置、スライダ／テーブル／コンベヤのような搬送装置、などの生産装置が配置されて構成されている。ラインの各要素は、ＰＬＣ装置（プログラマブルロジックコントローラ）のようなライン全体を制御する統合制御装置によって制御される。
【０００３】
この種の生産ライン（生産システム）を設計する際、実機を用いずに全体の動作を検証する検証装置として、いわゆるラインシミュレータが用いられることがある。ラインシミュレータによれば、例えば外部装置から入力した制御信号に基づき仮想環境に再現したモデルを動作させ、例えばＰＬＣ装置の制御プログラムや外部装置の動作状態を検証することができる。ここで、外部装置とは、主に上記の生産ラインの構成要素、例えばＰＬＣ装置や、ロボットやスライダなどの装置に相当する。
【０００４】
ラインシミュレータでは、実機と同様に仮想環境中の実機に対応するモデルを動作させ、その検証を行えることが求められる。そのため、ラインシミュレータでは、例えば下記のような機能が求められる。
【０００５】
（１）複数の異なる外部装置と通信して、同期をとれること。
（２）外部装置のプログラムを網羅するため、長時間、連続して動作させることができること。
（３）仮想環境中で、ワークの搬送や組立てを再現することができること。
（４）実機と同様に各部に配置されたセンサの動作を再現できること。
（５）モデル同士、あるいはモデルと仮想環境中に配置された構造物や障害物との衝突、接触、といった干渉状態を検出できること。
【０００６】
例えば下記の特許文献１に記載されるシミュレーション装置では、ワークの搬送や組立ての再現をモデルとワークの間の相対位置を拘束する手段により実現している。この拘束によって、モデルの移動に合わせて、ワークを追従させることができる。例えばロボット（のモデル）のハンドで把持したワークを移動させる様子を仮想環境中で再現することができる。また、干渉判断手段を有し、センサの動作を再現しつつ、モデル同士、あるいはモデルと構造物や障害物との干渉状態を検出することができる。
【０００７】
また、下記の特許文献２に記載されるオフライン教示システムでは、ワークの搬送や組立てを異なる状態に相当するワークを用意し、その表示や非表示を切り替えることによって再現している。この異なるワークの状態とは、供給されたワークの状態、把持されたワークの状態、組立て（組付け）後のワークの状態などである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第４４１３８９１号公報
【特許文献２】特開平３−２８８２１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記の特許文献１の構成で、生産ラインの長時間の連続的な動作を検証しようとする場合には、組立てを行う数だけワークのモデルを事前に用意する必要がある。例えば、１０時間、連続して動作するために必要なワークの数が１万個の場合、その数だけ対応するモデルを事前に用意する必要があり、シミュレーションを実行するまでに多くの工数がかかる問題がある。また、モデルの数が多いほど、メモリの使用量が増大する問題があり、また、実メモリや仮想記憶の消費が増えるために動作が遅くなってしまう問題がある。
【００１０】
また、上記の特許文献２の構成においても、長時間の連続的な動作を検証しようとする場合には、組み立て対象のワークの点数が増え、その数が多いほど、システムで管理すべきワークの状態の数が増大する。そのため、特許文献２の構成では、ワークの用意や、ワークの表示と非表示の設定などの工数が増え、同様にシミュレーションを実行するまでに多くの工数がかかる問題がある。
【００１１】
上記のように、従来構成では、生産ラインの長時間の連続的な動作をシミュレーションにより検証しようとする場合には、ワークのモデルと、その状態を全て用意する必要があった。従来では、このようなモデルと状態のデータは、シミュレータのプログラミングや制御データの設定を作業者が手作業により行うことで用意しなければならなかった。従って、従来では、シミュレーション前に多くの工数が必要であり、長時間の連続的な動作をシミュレーションするのが困難であった。
【００１２】
そこで、本発明の課題は、生産システムのシミュレーションに必要な設定工数を削減し、簡単なワーク設定を行うだけで、小さなメモリ消費で、生産システムの複雑な動作をシミュレーションによって検証できるようにすることにある。
【課題を解決するための手段】
【００１３】
上記課題を解決するため、本発明においては、生産装置の動作に係る応答信号を入出力可能な複数の制御装置と、生産装置の動作を検証するシミュレータ制御部を備えた生産システム検証装置が、前記制御装置で入出力した信号に基づき、仮想環境において前記生産装置に対応する生産装置モデルおよび前記生産装置モデルが取り扱うワークの状態をシミュレートする生産システム検証方法において、前記シミュレータ制御部が、前記生産装置が取り扱う全てのワークの初期絶対位置データを記憶部に記憶させる記憶工程と、前記シミュレータ制御部が、前記制御装置から出力される応答信号を監視し、前記応答信号と、前記生産装置モデルと前記ワークの組合せ、ないし前記ワーク同士の組合せの状態を記述した状態命令と、のトリガが一致した場合、前記仮想環境において、前記状態命令に対応する動作を前記生産装置モデルと前記ワークに行わせる状態監視工程と、前記シミュレータ制御部が、前記状態監視工程で一致した前記状態命令で指定された前記生産装置モデルとワークの組合せ、または、複数のワークの組合せを一体化するための相対的な位置関係を表す相対位置データを算出する処理と、前記生産装置の変位情報に基づき前記生産装置モデルの絶対位値データを算出する処理と、前記生産装置モデルの絶対位置データと前記一体化したワークの相対位置データよりワークの絶対位置データを算出する処理を行う計算工程と、前記シミュレータ制御部が、前記計算工程で算出した前記絶対位置データに基づき、前記仮想環境に相当する仮想表示を表示装置に行わせる仮想表示工程と、を備え、前記シミュレータ制御部は、前記生産装置モデルが一体化し、前記仮想環境から排出したワークに関する相対位置データを前記記憶部において無効化する構成を採用した。
【発明の効果】
【００１４】
上記構成によれば、生産システムのシミュレーションに必要な設定工数を削減し、簡単なワーク設定を行うだけで、小さなメモリ消費で、生産システムの複雑な動作をシミュレーションによって検証することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態１に係わる生産システムの構成を示したブロック図である。
【図２】本発明の実施形態１に係わる検証制御を示したフローチャート図である。
【図３】図２の検証制御の要部を詳細に示したフローチャート図である。
【図４】図２の検証制御の要部を詳細に示したフローチャート図である。
【図５】本発明の実施形態１に係わる仮想環境表示図である。
【図６】本発明の実施形態１に係わる作業順序一覧を示した説明図である。
【図７】本発明の実施形態１に係わる組立ワーク（ＡＢ）の組付図である。
【図８】本発明の実施形態１に係わる状態遷移命令一覧を示した説明図である。
【図９】（ａ）、（ｂ）、（ｃ）は本発明の実施形態１に係わる把持、組立命令に対応する生産装置の状態を示した説明図である。
【図１０】（ａ）、（ｂ）は本発明の実施形態１に係わる排出命令の状態に対応する生産装置の状態を示した説明図である。
【図１１】（ａ）、（ｂ）は本発明の実施形態１に係わる供給命令の状態に対応する生産装置の状態を示した説明図である。
【図１２】本発明の実施形態２に係わる生産システムの構成、ないし対応する仮想環境を示した説明図である。
【図１３】本発明の実施形態２に係わる生産システムの異なる構成を示した説明図である。
【図１４】本発明の実施形態３に係わる複数のワークから組み立てられる部品の説明図である。
【図１５】本発明の実施形態３に係わる、状態命令リスト、供給命令リスト、ワーク構成設定リストから成る状態遷移設定データ一覧を示した説明図である。
【図１６】本発明の実施形態３に係わる複製後のワーク構成設定リストを示した説明図である。
【図１７】本発明の実施形態３に係わるワークの組合せリストを示した説明図である。
【図１８】（ａ）、（ｂ）は本発明の実施形態３に係わる紐付け後の状態命令リストを示した説明図である。
【図１９】（ａ）〜（ｃ）は本発明の実施形態３に係わる１回目の供給命令リストを示した説明図である。
【図２０】本発明の実施形態１〜３のシミュレータ制御部などに実施可能な制御ハードウェアの具体的な構成を示した説明図である。
【発明を実施するための形態】
【００１６】
以下、添付図面を参照して本発明を実施するための形態につき説明する。なお、以下に示す構成はあくまでも一例であり、例えば細部の構成については本発明の趣旨を逸脱しない範囲において当業者が適宜変更することができる。また、本実施形態で取り上げる数値は、参考数値であって、本発明を限定するものではない。
【００１７】
＜実施形態１＞
以下、図１〜図９、図２０を参照し、本発明の実施形態１に係る生産システム検証装置の一例として、ラインシミュレータ装置Ａの構成と、基本的な検証動作につき説明する。
【００１８】
図１は、本実施形態１に係るラインシミュレータ装置Ａの機能的な概略構成を示している。図１の各部は、例えば図２０に示すようなＣＰＵ１６０１を中心とした制御系のハードウェアないしはそのソフトウェアによって構成することができる。
【００１９】
図１のラインシミュレータ装置Ａは、表示部１０１、外部通信部１０２、データ入出力部１０３、制御部１０４、記憶部１０５、計算部１０６、状態監視部１０７、を備える。これら各部は、ラインシミュレータ装置Ａのシミュレータ制御部を構成する。また、このラインシミュレータ装置Ａは、主に後述の実施形態で説明する干渉判断部１１０、仮想センサ１１２、を備える。
【００２０】
図１のラインシミュレータ装置Ａは、生産装置と、この生産装置を制御する統合制御装置としてのＰＬＣ装置と、を備えた生産システム（生産ライン）の動作を検証するためのものである。図１のＰＬＣ装置Ｂは、生産システム（生産ライン）に配置される１つないし複数の生産装置の統合制御装置として機能する。生産装置には、ロボット装置や、スライダのような搬送装置、あるいは部品供給装置など、（制御）信号の授受に基づき動作し、例えば工業製品やその部品を構成するワークを取り扱うものが含まれる。
【００２１】
図１では、生産装置は、その制御装置Ｃの部分のみをブロック図示してある。例えば、生産装置がロボットアームの場合には、ロボット制御装置の部分が図１の制御装置Ｃに相当する。本実施形態では、制御装置Ｃは、例えばロボット制御装置のようなハードウェア装置であってもよく、また下記の仮想制御装置１１１のようなソフトウェアによりエミュレートされた機能ブロックであってもよい。これら制御装置Ｃと、仮想制御装置１１１と、はいずれも生産装置の動作に係る応答信号を入出力可能な制御装置を構成する。
【００２２】
本実施形態では、これら制御装置Ｃ、あるいは、仮想制御装置１１１は、特定の（ロボット）動作を指令する制御信号（例えば後述の状態命令）を受信し、それに対応する応答信号を送信（返送）できるものとする（ハンドシェイク）。ただし、ハードウェア装置から成る制御装置Ｃの場合は、実機の生産（例えばロボット）装置のようなハードウェアが接続されていなくても上記のようなハンドシェイク通信を行えるものとする。あるいは、実機の生産（例えばロボット）装置のようなハードウェアが接続されている場合でも、その実機の生産装置を実際に動作させることなく、上記のようなハンドシェイク通信を行えるものとする。これは、ラインシミュレータ装置Ａが、実際の生産装置ハードウェアを動作させることなく、生産ライン（システム）の動作をシミュレーションし、検証できるようにするためである。ハードウェアによる制御装置Ｃと、仮想制御装置１１１とは、どちらか一方のみが設けられていてもよく、また、上記のハンドシェイク通信を行えるものであれば、その双方が混在していても構わない。
【００２３】
また、統合制御装置としてのＰＬＣ装置は、必ずしも生産ライン（生産システム）に配置しなくてもよい。例えば、生産装置同士が、所定の制御信号と応答信号の交換（ハンドシェイク）によって、ワークを受け渡しながら物品を生産するような生産ライン（生産システム）が考えられる。そのようなＰＬＣ装置が配置されない構成においても、本実施形態のラインシミュレータ装置は各生産装置の制御装置に対する状態命令とその応答信号を監視し、後述するものと同等の制御を行うことができる。
【００２４】
図１において、制御部１０４は、ラインシミュレータ装置の全体の情報の統括、各部への処理依頼などをコントロールする処理部である。
【００２５】
表示部１０１は、シミュレーションする装置を再現した仮想環境Ｅ（図５）を表示装置Ｄに表示するために用いられる。この表示部１０１は、作業者や管理者などのユーザに対するユーザーインターフェースを構成する。表示装置Ｄは、ＬＣＤディスプレイなど各種の表示方式によるディスプレイ装置から構成することができる。
【００２６】
外部通信部１０２は、外部装置との通信を行うインターフェース部である。ＰＬＣ装置Ｂやロボット２０１やスライダ２０３（図５）などの制御装置Ｃと通信し、ＩＯ信号や変位などの制御信号、応答信号の送受信を行う。また、仮想制御装置１１１が設けられている場合は、制御部１０４は外部通信部１０２を介さずに仮想制御装置１１１に対して制御信号、応答信号を送受信することができる。ただし、仮想制御装置１１１も外部通信部１０２を介して制御信号、応答信号の授受を行うよう構成されていてもよい。
【００２７】
データ入出力部１０３は、ラインシミュレータ装置の各種設定情報の入出力を行うインターフェース部である。このデータ入出力部１０３は、仮想環境上のシミュレーションを進行させる仮想環境設定データ１０８、および状態遷移設定データ１０９を入出力するために用いられる。仮想環境設定データ１０８、および状態遷移設定データ１０９は、後述の外部記憶装置１６０４（図２０）などに例えばファイル形式で保存されている。
【００２８】
記憶部１０５は、ＲＡＭ１６０３（図２０）や外部記憶装置１６０４（図２０）上などに配置される仮想記憶のような記憶領域と、この記憶領域の管理ルーチンなどから構成される。記憶部１０５は、制御部１０４からの要求に応じて、データ入出力部１０３や外部通信部１０２と、記憶部１０５の記憶領域の間で情報の入出力処理を行う。その場合、取得した情報は記憶部１０５の記憶領域に記憶する。また、記憶部１０５は、制御部１０４からの要求に応じて、記憶領域の制御データを読み出して制御部１０４に対して出力する。あるいは、記憶部１０５と、制御部１０４や、他の周辺デバイスとのデータ入出力は、ＤＭＡ転送やブロック転送によって行われるよう構成されていてもよい。
【００２９】
計算部１０６は、制御部１０４から依頼された計算を行い、制御部１０４に計算結果を出力する。計算結果は、制御部１０４を通じて記憶部１０５の記憶領域に記憶される。計算部１０６は、例えば、次のような計算工程を実行する。その１つは状態命令で指定された生産装置ないしワークなどの仮想環境中におけるモデル間の相対的な位置関係に相当する相対位置データを算出する演算処理である。また、他の１つは、生産装置の変位情報に基づき前記生産装置モデルの絶対位値データを算出する演算処理である。また、他には、生産装置モデルの絶対位置データと一体化したワークの相対位置データよりワークの絶対位置データを算出する演算処理、などである。
【００３０】
状態監視部１０７は、外部装置、例えば制御装置ＣやＰＬＣ装置Ｂから取得した信号、例えば応答信号の状態を監視する。そして、その監視対象の信号が状態遷移設定データ１０９に設定された値と一致すると、仮想環境中でワークを状態遷移させる命令を制御部１０４に出力する。
【００３１】
このワークの状態遷移の命令を受け取ると、制御部１０４は、計算部１０６にワークを仮想環境中で状態遷移させるための計算を依頼し、計算部１０６から出力された計算結果を記憶部１０５に記憶させる。そして、計算部１０６から出力された計算結果に基づき、表示部１０１に対して仮想表示画面（例えば図５）の更新を依頼し、仮想環境Ｅの表示を更新する。
【００３２】
ここで、図２０を参照して、図１にＡのブロックとして示したラインシミュレータ装置の具体的な構成例を説明する。図２０は、ラインシミュレータ装置Ａのハードウェア構成を中心に示している。同図に示すように、この制御系はＣＰＵ１６０１廻りに配置された各ブロックから成る構成である。なお、このＣＰＵ１６０１廻りに配置された各ブロックから成る構成は、例えば、図１の（ロボット）制御装置ＣやＰＬＣ装置Ｂなどにおいてもほぼ同様に適用できる。図２０のＣＰＵ１６０１廻りの構成を、ラインシミュレータ装置Ａ以外のハードウェアに適用する場合については、以下で必要に応じて説明する。
【００３３】
図２０では、ラインシミュレータ装置Ａと、制御装置ＣやＰＬＣ装置ＢがネットワークＮＷを介して接続された構成を示している。図２０のラインシミュレータ装置Ａを構成するハードウェアは、例えば、ＣＰＵ１６０１、ＲＯＭ１６０２、ＲＡＭ１６０３などを主たる制御手段（制御装置）として用いた構成である。
【００３４】
図２０の制御装置は、主制御手段としてのＣＰＵ１６０１、記憶装置としてのＲＯＭ１６０２、およびＲＡＭ１６０３を備える。ＲＯＭ１６０２には、後述する制御手順を実現するためのＣＰＵ１６０１の制御プログラムや定数情報などを格納しておくことができる。また、ＲＡＭ１６０３は、後述する制御手順を実行する時にＣＰＵ１６０１のワークエリアなどとして使用される。
【００３５】
図２０の構成が、ラインシミュレータ装置Ａの場合には、ユーザーインターフェース装置として、例えばディスプレイ１６０８（図１の表示装置Ｄ）、および操作部１６０９がインターフェース１６０７に接続される。操作部１６０９は、例えばフルキーボードおよびポインティングデバイスなどから構成することができ、シミュレーション、検証を行う作業者のためのユーザーインターフェースを構成する。
【００３６】
図２０のラインシミュレータ装置Ａには、ネットワークＮＷを介して通信する通信手段としてネットワークインターフェース１６０５が接続されている。ラインシミュレータ装置Ａは、ネットワークインターフェース１６０５〜ネットワークＮＷを介して例えば、図１の（ロボット）制御装置ＣやＰＬＣ装置Ｂとの間で制御のための信号を送受信することができる。その場合、ネットワークインターフェース１６０５は、例えばＩＥＥＥ  ８０２．３のような有線通信、ＩＥＥＥ  ８０２．１１、８０２．１５のような無線通信による通信規格で構成する。しかしながら、ネットワークＮＷには、もちろん、それ以外の任意の通信規格を採用しても構わない。
【００３７】
なお、後述の制御手順を実現するためのＣＰＵ１６０１の制御プログラムは、ＨＤＤやＳＳＤなどから成る外部記憶装置１６０４や、ＲＯＭ１６０２（の例えばＥＥＰＲＯＭ領域）のような記憶部に格納しておくこともできる。その場合、後述の制御手順を実現するためのＣＰＵ１６０１の制御プログラムは、ネットワークインターフェース１６０５を介して、上記の各記憶部に供給し、また新しい（別の）プログラムに更新することができる。あるいは、後述の制御手順を実現するためのＣＰＵ１６０１の制御プログラムは、各種の磁気ディスクや光ディスク、フラッシュメモリなどの記憶手段と、そのためのドライブ装置を経由して、上記の各記憶部に供給し、またその内容を更新することができる。上述の制御手順を実現するためのＣＰＵ１６０１の制御プログラムを格納した状態における各種の記憶手段や記憶部は、本発明の制御手順を格納したコンピュータ読み取り可能な記録媒体を構成することになる。
【００３８】
なお、図２０のＣＰＵ１６０１を中心とした構成は、例えば、図２０中の「Ａ」と、「Ｂ」や「Ｃ」との参照符号を相互に交換して読み換えると、ＰＬＣ装置Ｂやロボットアームを制御する（ロボット）制御装置Ｃの構成として考えることができる。（ロボット）制御装置Ｃの場合には、ロボットアームの各部のモータやソレノイドなど（不図示）を駆動するドライバ回路７０１がインターフェース１６０６に接続される。
【００３９】
また、ディスプレイ１６０８および操作部１６０９から成るユーザーインターフェースは、（ロボット）制御装置Ｃの場合には、ティーチングペンダントのような操作端末（不図示）に置き換えてもよい。
【００４０】
次に、図２および図３を参照して、本実施形態におけるラインシミュレータ装置Ａの処理について説明する。図２、図３は、ラインシミュレータ装置Ａの検証制御の全体の流れを示している。図示の手順は、制御部１０４や計算部１０６を構成するハードウェア、例えば図２０におけるＣＰＵ１６０１、即ち、コンピュータが読み取り、実行可能な制御プログラムとしてＲＯＭ１６０２や外部記憶装置１６０４などに格納しておくことができる。
【００４１】
なお、図２において、ステップＳ７に関連して図の右方にステップＳ７＋を図示してあるが、この処理については後述の実施形態２で説明する。また、図２のステップＳ１はステップＳ１００１、Ｓ１００２で構成されるよう図示してあるが、特にステップＳ１００２の組立リストの作成処理の細部については後述の実施形態３で説明する。
【００４２】
以下では、まずラインシミュレータ装置Ａの初期処理について説明し、続いてラインシミュレータの制御周期ごとに毎回行われる常時処理について説明する。そして、最後にワークの状態遷移処理について説明を行う。
【００４３】
図２のステップＳ１（Ｓ１００１、Ｓ１００２）からステップＳ３は、ラインシミュレータ装置Ａの初期処理に相当する。まず、ステップＳ１００１で設定ファイルを読み込み、仮想環境Ｅ（図５）を作成する。本実施形態における設定ファイルは、図１の仮想環境設定データ１０８、および状態遷移設定データ１０９である。このうち、仮想環境設定データ１０８は、図５のような仮想表示画面として図１の表示装置Ｄ（ディスプレイ１６０８：図２０）に出力できるような仮想環境Ｅを構成するために必要な情報を設定した設定ファイルである。この仮想環境設定データ１０８には、ロボット装置、ワークなどの３Ｄモデルとその配置情報、ＰＬＣ装置Ｂや制御装置Ｃとの通信に必要な設定、信号の配線などの設定が定義されている。
【００４４】
また、状態遷移設定データ１０９は、仮想環境（Ｅ）中のワークの状態遷移を行うための設定ファイルである。ワークの状態遷移とは、ＰＬＣ装置Ｂや制御装置Ｃから入力した信号の状態を監視し、監視している信号（例えば応答信号）と予め定義されたトリガ（トリガ信号）の状態が一致すると、ワークの状態を遷移させる処理を行うものである。状態遷移設定データ１０９には、上記の状態遷移を行うため、遷移する状態に合わせて、状態命令と監視するトリガ（信号）との紐（関連）付けるリンク情報が格納されている。ロボット装置、ワークなどを仮想環境（Ｅ）中で動作させるための状態命令に関しては、後述するワークの状態遷移処理で説明する。
【００４５】
なお、本実施形態では、説明を容易にするため、ロボット装置によって、部品を１つ組み立て（製造）し、排出する動作を例示するものとする。しかしながら、長時間に渡って複数ないし複数種類の部品を繰返し製造するような動作をシミュレートする場合には、ステップＳ１００２においてそのための組立リストを作成する。この処理の詳細については、後述の実施形態３で説明する。
【００４６】
ステップＳ１００１で各データを読込むと、上記の処理によって、表示装置Ｄ（ディスプレイ１６０８：図２０）に図５に示すような仮想環境Ｅを表示する。図５は、理解を容易にするため、表示装置Ｄ（ディスプレイ１６０８：図２０）に表示される仮想表示に相当する形式で図示されている。図５の仮想環境Ｅには、ロボット２０１（ロボットアーム）、ハンド２０２、スライダ２０３、パレット（Ａ）２０４、パレット（Ｂ）２０５が配置されている。また、部品の形に組み立てるワークとして、パレット（Ａ）２０４の上にワーク（Ａ）２０６、パレット（Ｂ）２０５の上にワーク（Ｂ）２０７がそれぞれ配置されている。
【００４７】
次に、図２のステップＳ２で、外部装置（ＰＬＣ装置Ｂや制御装置Ｃ）との接続確認を行う。例えば、図５の構成に相当する生産システムの場合、外部装置は、ＰＬＣ装置Ｂと、ロボット２０１を制御する制御装置（Ｃ）と、ハンド２０２を制御する制御装置（Ｃ）と、スライダ２０３を制御する制御装置（Ｃ）である。
【００４８】
また、実環境中にワーク供給機が配置される場合は、ロボット２０１、ハンド２０２、スライダ２０３に加え、ワーク供給機の制御装置（Ｃ）が仮想環境（Ｅ）中に配置されていてもよい。ただし、仮想環境（Ｅ）では、ワークの供給に関しては、ワークの状態遷移の処理で再現することができ、供給機の制御装置（Ｃ）、あるいはそれに相当する仮想制御装置は用意しなくてもよい。
【００４９】
ステップＳ２で全ての外部装置との接続確認が終了すると、ステップＳ３で、シミュレーションを開始する。これ以降の処理は、ラインシミュレータ装置Ａの制御周期ごとに、外部装置と同期を取りながら進行する。
【００５０】
図２のステップＳ４からＳ１０、ないし図３のステップＳ１１〜Ｓ２０は、ラインシミュレータ装置の制御周期（制御クロックないしその分周信号）ごとに常に行われ、シミュレーションの完了信号（ないしその指令）を受信するまで繰り返し行われる処理である。シミュレーションの完了信号（ないしその指令）は、例えばディスプレイ１６０８および操作部１６０９から成るユーザーインターフェースで所定の終了操作を行うことによって発生させる。
【００５１】
図２のステップＳ４からＳ１０までのメジャーループは、ワークの状態遷移が無い状態でも常に行われる処理である。特に、ワークの状態遷移があるか否かはステップＳ７で検出され、ワークの状態遷移がある場合には、ステップＳ７、即ち図３のステップＳ１１からＳ２０によって、状態命令の種別によって状態遷移の態様が決定される。図３は、ステップＳ７の詳細な処理内容に相当する。以下では、まず、図２のステップＳ４からＳ１０のワークの状態遷移が無い状態でも常に行われるメジャーループについて詳細に説明する。
【００５２】
図６の順序６０１の１〜１２はロボット２０１がワークを操作し、組み立て、ある部品を製造する作業の一例を表形式で示している。この１〜１２の作業は、図７に示すワーク（Ａ）２０６、ワーク（Ｂ）２０７を組立てて、１セットの組立ワーク（Ａ＋Ｂ）２０８（完成した部品）を製造するために必要な手順である。本実施形態では、この作業をラインシミュレータ装置Ａの仮想環境Ｅ中で実行する。図６に示した情報は、作業データテーブルのような形式で、仮想環境設定データ１０８ないし状態遷移設定データ１０９の一部として含まれていてよい。
【００５３】
作業ごとにＰＬＣ装置Ｂから制御装置Ｃに送信される開始信号６０３と、制御装置ＣからＰＬＣ装置Ｂに送信される完了信号６０４は、これらの装置の間の配線状態に対応する。図６の１〜１２の作業は、それぞれ、ＰＬＣ装置Ｂの開始信号６０３によって開始され、制御装置ＣからＰＬＣ装置Ｂに応答信号として返送される完了信号６０４によって、終了する。
【００５４】
図６の製造処理では、まず、１から４までの作業で、ロボット２０１を移動させ、ハンド２０２でワーク（Ａ）２０６を把持し、さらにロボット２０１を移動させ、ワーク（Ａ）２０６をスライダ２０３に置く。
【００５５】
次に、５から９までの作業で、ロボット２０１を移動させ、ハンド２０２でワーク（Ｂ）２０７を把持し、さらにロボット２０１を移動させ、ワーク（Ａ）２０６に組み付けて、組立ワーク（ＡＢ）２０８（完成した部品）を製造する。次に、１０の作業で、スライダ２０３を排出位置に移動させ、組立ワーク（ＡＢ）２０８を排出する。
【００５６】
最後に、１１と１２の作業で、パレット（Ａ）２０４にワーク（Ａ）２０６を、また、パレット（Ｂ）２０５にワーク（Ｂ）２０７をそれぞれ供給する。以上のような一連の作業によって、組立ワーク（ＡＢ）２０８（完成した部品）を製造することができる。
【００５７】
図２において、シミュレーションを開始すると、ステップＳ４で、ＰＬＣ装置Ｂから信号を受信する。受信した信号は、ステップＳ５でＰＬＣ装置Ｂから制御装置Ｃに送信する。このとき、仮想環境設定データ１０８で設定したＰＬＣ装置Ｂと制御装置Ｃとの間の配線に従い、該当する信号を制御装置Ｃに送信する。
【００５８】
制御装置Ｃは、入力した信号より実行するプログラムを判断する。ラインシミュレータ装置Ａと外部装置（ＰＬＣ装置Ｂ、制御装置Ｃ）は、それぞれ個別に動作する。これら各装置の同期は、ラインシミュレータ装置Ａの制御周期（例えば制御クロックないしその分周クロック）を基準として進めるよう制御する。
【００５９】
ステップＳ６では、制御装置Ｃより現在の変位と応答信号を受信する。次に、ステップＳ７では制御装置Ｃから受信した変位に基づき、仮想環境Ｅ中の生産装置モデル、およびワークの姿勢、姿勢を更新する。このステップＳ７の詳細については、後述の図３で詳細に説明する。ステップＳ７で監視している信号に変化がある場合は、図３の処理の結果に応じてステップＳ８において、仮想環境Ｅ中で必要なワークの状態遷移を発生させる処理を行う。
【００６０】
続いて、ステップＳ９では、制御装置Ｃから受信した信号をＰＬＣ装置Ｂに送信する。制御装置Ｃから受信した信号をＰＬＣ装置Ｂに送信すると、ＰＬＣ装置Ｂは、予め用意されたＰＬＣプログラムに従って、次の制御信号を送信する。
【００６１】
ステップＳ１０では、シミュレーションを終了させるか否かを判定する。終了操作は、例えばディスプレイ１６０８および操作部１６０９から成るユーザーインターフェースで行われる。この終了操作に対応する終了指令を受信していない場合は、ステップＳ４に復帰し、シミュレーションを終了するまで制御周期ごとに上記のステップＳ４〜Ｓ１０の処理を繰り返す。
【００６２】
ここで、上記のステップＳ４〜Ｓ１０の処理を、図５〜図７の構成と、作業内容に即して簡単に説明しておく。まず、ステップＳ４でＰＬＣ装置Ｂより開始信号を受信すると、ラインシミュレータ装置ＡはステップＳ５で、配線情報に従ってロボット２０１の制御装置Ｃに開始信号を送信する。
【００６３】
この開始信号を受信すると、ロボット２０１の制御装置Ｃは、ロボット２０１をワーク（Ａ）２０６の把持位置まで移動させる変位の出力を開始する。
【００６４】
次に、ステップＳ６において、ラインシミュレータ装置Ａはロボット２０１の制御装置Ｃから変位信号を受信し、ステップＳ７で、受信した変位信号に応じて仮想環境Ｅ中のロボット２０１の位置、姿勢を更新する。
【００６５】
例えば、図６の１の順位の作業ではワークの状態遷移は存在しないため、ラインシミュレータ装置Ａでは、仮想環境Ｅ中のワークの状態遷移は生じさせない。ステップＳ９で、制御装置Ｃから受信した（例えば変位に係る）信号をＰＬＣ装置Ｂに送信する。そして、まだシミュレーションの完了信号は受信していないものとすれば、ステップＳ１０はＮｏに進み、ステップＳ４からの処理が繰り返される。
【００６６】
このようにして、以後、図６の１の順位の作業では、ロボット２０１の移動が完了するまで、ステップＳ４からＳ１０までが繰り返される。そして、ロボット２０１の移動が完了すると、ステップＳ７において、ラインシミュレータ装置Ａはロボット２０１の制御装置Ｃから完了信号を受信する。このロボット２０１の制御装置Ｃから受信した完了信号は、ステップＳ１０でラインシミュレータ装置ＡからＰＬＣ装置Ｂに送信する。この完了信号の送信により、ＰＬＣ装置Ｂは、予め用意されたＰＬＣプログラムに従って、次の制御信号を送信する。図６の２の順位以降の作業についても、上記と同様の手続に従って制御が進められる。
【００６７】
次に、図３および図８を参照して、ワークの状態遷移処理（Ｓ７）を構成するステップＳ１１からＳ２０につき詳細に説明する。ラインシミュレータ装置Ａでは、このワークの把持、組立、排出などの状態を再現するため、本実施形態では、次のような状態命令を設定し、状態命令ごとに異なる処理を行う。
【００６８】
図８は、図５、図７に示したワーク（Ａ）２０６、ワーク（Ｂ）２０７を操作して部品を製造する工程に対応する状態命令から成るシーケンスに相当する状態命令の設定リストである。この状態命令の設定リストは、状態遷移設定データ１０９に含まれ、状態命令（８０２）と、トリガとなる信号に関する情報（８０３）と、主モデル（８０４）または主ワークと、従ワーク（８０５）の指定を記述する。図８において、８０１は状態命令の順序を示している。
【００６９】
本実施形態の場合、状態命令（８０２）の種類は、図８に示すように、把持命令、解放命令、組立命令、排出命令、供給命令を設けている。このうち、把持命令は、指定されたモデルでワークを把持し、モデルの移動に合わせてワークを追従させるための命令である。
【００７０】
また、解放命令は、指定されたモデルが把持しているワークの解放を行う命令である。組立命令は、指定されたベースのワークに他のワークの組み付けを行う命令である。排出命令は、指定されたベースのワークと、ベースのワークに組み付いている全てのワークを非表示にして、解放する命令である。供給命令は、指定されたワークを供給する命令である。
【００７１】
トリガとなる信号情報（８０３）には、監視する制御装置Ｃからの応答信号の情報と、その信号がＯＮまたはＯＦＦのいずれの場合に当該の状態命令を実行するか、の各条件が記述されている。
【００７２】
上記の主モデル（８０４）とは、ワークを操作する治工具、例えば、ワーク（２０６や２０７）を把持するハンド（２０２）、ワークが置かれた後に変位の入力により移動するスライダ（２０３）などのモデルのことを示す。
【００７３】
主ワーク（８０４）とは、組立のベースとなるワーク、従ワーク（８０５）とは、把持されるワーク、または、ベースに組み付けられるワークのことを示す。
【００７４】
例えば、図５において、ハンド２０２でワーク（Ａ）２０６を把持する操作は、主モデル（８０４）にハンド２０２が、従ワーク（８０５）にワーク（Ａ）２０６が設定される。図５〜図７のような組立作業に関する状態命令リスト（図８）は、例えば上述のステップＳ１で作成するか、あるいは予め用意されたデータを読み込むことにより設定される。例えば、上述のステップＳ１において、状態遷移設定データ１０９に記載されたモデル及びワークに対して、記憶部１０５に次のような記憶領域を確保する。まず、主モデルまたは主ワークに対応する記憶領域に、拘束（把持または組み付け）される従ワークを特定する記憶領域を確保する。
【００７５】
次に、従ワーク（８０５）の相対位置と、従ワーク（８０５）の初期絶対位置データをそれぞれ格納するための記憶領域を記憶部１０５に確保する。以上の記憶領域を確保した後、上述の図２のステップＳ２とＳ３が行われ、ステップＳ４でシミュレーションのループ処理を開始する。
【００７６】
ここで、図２、図３の手順に即して、上記の状態命令のいくつかの処理の詳細につき述べる。ここでは、把持命令について、図５のロボット２０１の生産装置モデルが図６の順序（２）の作業を完了した直後の状態より説明する。
【００７７】
図２のステップＳ７において、ワークの状態遷移の有無を確認する。図６の順序（２）の完了信号の番号（２）が、図８のＮＯ（１）のトリガ信号（８０３）と一致し、状態遷移が生じると、図３のステップＳ１１を行う。
【００７８】
次に、図３のステップＳ１１で、今回の状態遷移に係る状態命令が把持命令または組付命令かどうかを判断する。この場合は、状態命令が把持命令であるため、ステップＳ１２でロボット（２０１）とワーク（２０７）に対応する仮想環境（Ｅ）中のモデル間の相対位置を計算する。この相対位置は、現在の主モデル（２０６）の絶対位置と従モデル（２０７）の絶対位置の差で求めることができる。
【００７９】
図８の把持命令では、ハンド２０２とワーク（Ａ）２０６の相対位置Ｌ１を計算し、計算した結果はワーク（Ａ）２０６の相対位置の記憶領域に保存する。次に、ステップＳ１３で、指定モデル間の相対位置拘束の付加を行う。また、図８の把持命令では、ハンド２０２の従ワークの記憶領域にワーク（Ａ）２０６を付加する。その後、ステップＳ２０で、他に状態命令が有るか確認し、全ての状態命令を処理した場合は、図２のステップＳ８に進む。
【００８０】
図９（ａ）は、ハンド２０２でワーク（Ａ）２０６を把持した状態を示している。図９（ａ）〜（ｃ）の状態は、いずれも実機の状態ではなく、仮想環境（Ｅ）中のものである。図９（ａ）〜（ｃ）の図示は、表示装置Ｄ（ディスプレイ１６０８：図２０）の仮想表示の状態、と考えてもよい。
【００８１】
図９（ａ）のようにハンド２０２でワーク（Ａ）２０６を把持する状態に遷移すると、以後、把持状態が他の状態に遷移するまで、同ワークの絶対位置が計算される。即ち、図２のステップＳ７において、モデルとワークの姿勢の更新時に、ワーク（Ａ）２０６はハンド２０２との間の相対位置Ｌ１を維持するように同ワークの絶対位置が計算され、表示部１０１によりその仮想表示が更新される。
【００８２】
絶対位置の計算は、先に変位を持つ生産装置モデル（ロボット２０１）の位置姿勢の計算を行い、その後にそのモデルが拘束したワークの計算を行う。拘束されたワーク（２０６）の絶対位置の計算は、主モデル（２０１）の現在の絶対位置と従ワーク（２０６）の記憶領域に格納された相対位置の、例えば積を求めることにより可能である。図９（ａ）の例では、ハンド２０２の現在の絶対位置と、ワーク（Ａ）２０６の記憶領域に保存した相対位置との積を求めることによりワーク（Ａ）２０６の絶対位置が計算される。
【００８３】
図９（ｂ）は、図６の順序（３）のハンド２０２により把持中のワーク（Ａ）２０６の状態を示している。この時、ハンド２０２とワーク（Ａ）２０６との間の相対位置Ｌ１が維持された状態で移動が行われる。
【００８４】
次に、図６の順序（４）の解放命令について、この順序（４）の作業の完了直後の状態より説明する。
【００８５】
図２のステップＳ８で、図６の順序（４）の完了信号の番号（４）が、図８のＮＯ（２）、（３）のトリガ信号（８０３）と一致する。従って、解放命令、把持命令の順で、２つの状態命令が出力され、図３の手順により、この２つの状態命令が順番に処理される。
【００８６】
１つ目の状態命令は解放命令については、図３のステップＳ１１、ステップＳ１４は、Ｎｏに進み、ステップＳ１６の判定はＹｅｓとなり、ステップＳ１７に進む。ステップＳ１７では、ワークの解放に応じて、生産装置モデル（ロボット２０１）との間の相対位置拘束の削除を行う。
【００８７】
この相対位置拘束の削除処理は、主モデルと従ワークとの間の拘束情報を削除することにより行う。ここでは、まず、従ワーク（２０６）に関して記憶部１０５に記憶している相対位置を削除する。即ち、ハンド２０２とワーク（Ａ）２０６の相対位置の情報を削除ないし無効化する。また、主モデル（ハンド２０２）の状態情報から、拘束にあった従ワーク（２０６）の設定情報を削除ないし無効化する。このようにして、ステップＳ１７で相対位置拘束の削除（無効化）処理が完了すると、ステップＳ２０で他に状態命令が有るか否かを判断する。このような記憶領域の削除ないし無効化は、当該の記憶領域を解放するライブラリルーチンなどによって実装可能である。
【００８８】
この例では、２つ目の把持命令が続けて出力されているため（図８のＮＯ（３））、この把持命令は、ステップＳ１１に戻り、上述のステップＳ１２、Ｓ１３によって処理される。図６の順序（５）〜（７）も同様に図３の制御によって処理される。
【００８９】
次に、図６の順序（８）の組立命令について、順序（８）の作業の完了直後の状態より説明する。
【００９０】
図６の順序（８）の完了信号の番号（８）が図８のＮＯ（５）（６）のトリガ信号（８０３）と一致するため、解放命令、組立命令の順で出力される。
【００９１】
1つ目の状態命令は解放命令のため（図８のＮＯ（５））、図３の処理はステップＳ１６、Ｓ１７と進み、前述の解放命令の処理が実行される。この場合は、ハンド２０２とワーク（Ｂ）２０７の相対位置拘束を削除して解放する。
【００９２】
２つ目の状態命令は組立命令のため（図８のＮＯ（６））、図３の処理はステップＳ１１、Ｓ１２、Ｓ１３と進み、上述の把持命令と同様の処理が行われる。なお、組立命令は、処理は把持命令と同じだが、対象が異なり、ワーク（２０６、２０７）同士の組合せの相対位置拘束とする命令である。拘束後のワークの絶対位置の計算は、主ワーク（２０６）から順番に行われる。この場合、ワーク（Ｂ）２０７の絶対位置の計算は、先に計算されたワーク（Ａ）２０６の現在の絶対位置と、ワーク（Ｂ）２０７の相対位置との積より求める。
【００９３】
図９（ｃ）は、以上のようにして組立命令を処理した後の組立ワーク（ＡＢ）２０８が組み上げられた状態に相当する。この場合、スライダ２０３とワーク（Ａ）２０６との間の相対位置Ｌ２と、ワーク（Ａ）２０６とワーク（Ｂ）２０７との間の相対位置Ｌ３の拘束状態がそれぞれ形成される。
【００９４】
次に、図６の順序（１０）の排出命令について、順序（１０）の作業の完了直後の状態より説明する。
【００９５】
この場合、図６の順序（１０）の完了信号の番号（１０）が図８のＮＯ（７）（８）のトリガ信号（８０３）と一致するため、解放命令と排出命令の順で出力される。
【００９６】
1つ目の状態命令は解放命令（図８のＮＯ（７））であり、図３の処理はステップＳ１６、Ｓ１７と進み、前述の解放命令の処理が行われる。この場合は、スライダ２０３とワーク（Ａ）２０６の相対位置拘束を削除して解放する。
【００９７】
ここで、図１０（ａ）は、解放命令によってロボット２０１から解放された組立ワーク（ＡＢ）２０８の状態を示している。同図では、スライダ２０３とワーク（Ａ）２０６との間の相対位置Ｌ２の拘束が削除されている状態である。一方、組立ワーク（ＡＢ）２０８は、ワーク（Ａ）２０６とワーク（Ｂ）２０７が組み上げられた状態であり、相対位置Ｌ３の拘束は解除されていない。
【００９８】
続いて、２つ目の状態命令は排出命令（図８のＮＯ（８））であり、図３の処理はステップＳ１４からＳ１５、Ｓ１７と進む。ステップＳ１５では、組立ワーク（ＡＢ）２０８の排出に対応し、指定された（ワークの）モデルと、拘束中の（ワークの）モデルを含めた全てのモデルを非表示にする。なお、本実施形態では、仮想表示中で非表示にしたモデルは、３Ｄモデルの表示には存在しないが、記憶部１０５のメモリ空間上の非表示ワークの記憶領域２０９には依然として存在しているものとする。
【００９９】
なお、この排出命令（図８のＮＯ（８））では、ワーク（Ａ）２０６を指定しており、ワーク（Ａ）２０６と、ワーク（Ａ）２０６と相対位置拘束中のワーク（Ｂ）２０７を非表示にするものとする。続いて、ステップＳ１７で指定ワークのモデル間の相対位置拘束の削除を行う。ここでは、主モデルおよび主ワークのみ設定している場合は、指定したモデルとの間に存在する全ての相対位置拘束が削除される。この例では、ワーク（Ａ）２０６とワーク（Ｂ）２０７との間の相対位置Ｌ３の拘束を削除する。図１０（ｂ）は上記の排出命令後の状態を示しており、これらワーク（Ａ）とワーク（Ｂ）はスライダ２０３の上から非表示となり、相対位置の拘束が削除される。なお、製造した１つの組立ワーク（ＡＢ）２０８の排出操作は、スライダ２０３を排出側に移動することにより行われる（図６の順序（１０）の完了信号）。
【０１００】
次の同じ部品の製造のための供給命令について、図６の順序（１１）の作業の開始直後の状態より説明する。
【０１０１】
図１１（ａ）は、排出命令を実施した後の状態を示している。パレット（Ａ）２０４およびパレット（Ｂ）２０５の上からワークが無くなると、次の部品を製造するため、新たにワークを供給しなければならない。そこで、供給命令により、ワークの供給を再現する。
【０１０２】
ここでは、図６の順序（１１）の開始信号の番号（１１）が、図８のＮＯ（９）のトリガ信号（８０３）と一致するため、当該の供給命令が出力される。
【０１０３】
図８のＮＯ（９）の供給命令に関して、図３の処理はステップＳ１１とＳ１４とＳ１６は、全てＮｏに進み、ステップＳ１８において、指定されたワークの絶対位置の初期化を行う。ここで、絶対位置の初期化処理は、例えば、非表示ワークの記憶領域２０９に存在するワークを、初期の絶対位置に移動させることによって行うことができる。図８のＮＯ（９）の供給命令の場合、ワーク（Ａ）２０６（のみ）を初期の絶対位置に移動する。
【０１０４】
そしてステップＳ１８に続き、ステップＳ１９で、この指定ワーク、ワーク（Ａ）２０６を仮想環境（Ｅ）の仮想表示中で表示状態にする。図１１（ｂ）はワーク（Ａ）２０６の供給命令を実行した後の状態であり、パレット（Ａ）２０４の上に、ワーク（Ａ）２０６が表示されている。供給命令完了すると、ＰＬＣ装置Ｂに完了信号（１０）をＯＮにして送信する。
【０１０５】
以上のように、各状態命令の処理を行うことにより、ＰＬＣ装置Ｂの信号に合わせてワークの搬送、組立、排出、供給という状態を仮想環境（Ｅ）中で再現し、それを表示部１０１、表示装置Ｄ（ディスプレイ１６０８）で刻々と仮想表示することができる。従って、同じ部品を製造するための生産ライン（システム）の振舞いを繰り返し、シミュレーション実行することができる。
【０１０６】
なお、本実施形態では、ＰＬＣ装置Ｂは実機を用いて説明したが、これに限らず、ＰＬＣ装置Ｂはメーカが提供しているＰＬＣ装置Ｂの動作を再現できる仮想ＰＬＣソフトウェアによって構成してもよい。また、制御装置Ｃも同様に、メーカが提供している制御装置Ｃの動作を再現できるソフトウェアによって構成してもよく、この構成は、図１の仮想制御装置１１１に相当する。
【０１０７】
＜実施形態２＞
実施形態１では、ラインシミュレータ装置Ａにおいて、状態命令を各部で入出力し、処理することにより、ワークの状態を再現するための基本的な構成を示した。実機のロボット装置では、フォトセンサや圧力センサなど、多種多様なセンサを用いて実ハードウェアの状態を遷移させている。ところが、ラインシミュレータ装置では、実機を実際に稼働させることなく（稼働させる前に）、ラインシミュレーションを行うため、実センサの出力を利用することはできない。そのため、本実施形態２では、センサの状態を再現する仮想センサ１１２（図１）を仮想環境中に配置して、干渉状態（外部装置のプログラムミスなどによる生産装置の衝突や接触）を検出する構成につき説明する。
【０１０８】
仮想センサ１１２は、生産システムの実環境に配置された物理センサに対応し、前記物理センサの動作をソフトウェア的な処理によって模擬する仮想的なセンサである。仮想センサ１１２については既に図１に示してあり、本実施形態２では、この仮想センサ１１２を用いた干渉チェック、特に干渉状態の再現について、説明する。本実施形態２に係る処理は、図２において、ステップＳ７に関する追加的な手続き、ステップＳ７＋として図示してある。
【０１０９】
本実施形態２では、仮想センサ１１２は実機に設けられるフォトセンサを模擬するものとして構成されており、このフォトセンサの状態の再現に関する構成、処理を例示する。本実施形態では、図１の仮想センサ１１２により、仮想環境Ｅ中の干渉を判断するための干渉判断部１１０を用いる。
【０１１０】
干渉判断部１１０では、主に２種類の状態について判断する。まず、１つ目は正常系の処理であり、実機上に存在するセンサと同じ反応を、干渉状態を再現するセンサ状態判断手段である（図２のステップＳ７＋、Ｓ７１）。
【０１１１】
図１２は、仮想センサの配置図であり、順序４（図６）の作業の完了直後、スライダ２０３の上にワーク（Ａ）２０６を置いている状態である。スライダ２０３の供給側の上空と、スライダ２０３の排出側の上空と、各ワークのパレットの上空にそれぞれ仮想センサ３０１〜３０４を配置している。図１２では、仮想センサ３０１〜３０４が反射型（あるいは透過型でも可）の光センサから構成されるものとし、直線の図示によって、その検出光の光線モデルを示している。
【０１１２】
仮想センサ３０１〜３０４を模擬するフォトセンサは、遮光または受光の判断を行う必要がある。そこで、光線モデルとワークの干渉を判断することにより、遮光または受光の状態を再現し、干渉が判断されたら、センサの信号を変更する。具体的には、スライダ２０３の上にワーク（Ａ）２０６が置かれると、仮想センサ３０１の光線モデルとワーク（Ａ）２０６が干渉状態となり、センサの出力信号の状態を変更する（図２のステップＳ７＋、Ｓ７２）。
【０１１３】
干渉判断部１１０の２つ目の処理は異常系の処理であり、プログラムミスにより発生する衝突を、干渉を用いて判断し、状態を再現する異常判断手段である。
【０１１４】
ただし、当然のことながら、下記のような状態のワークは干渉状態発生と判断しない。即ち、把持命令や組立命令で必ず接触しなければならないモデルとワークの間、またはワーク同士は、干渉検出の対象外にする（図２のステップＳ７＋、Ｓ７１）。また、仮想環境（Ｅ）中で非表示扱いとなっているワークは、実機の作業空間には存在しないワークに相当するため、干渉の対象外にする必要がある（同ステップＳ７１）。このように、ワークの状態に応じて干渉の対象を動的に切り替える。
【０１１５】
そこで、干渉の対象となるモデルおよびワークの切り替えは、以下、ステップＳ７＋（Ｓ７１、Ｓ７２）を含め、本実施形態２において図２につき説明済みの部分に対して変更や追加すべき処理につき説明する。
【０１１６】
図２のステップＳ１の初期処理では、干渉制御に関しては、全てのモデルとワークの組合せを干渉状態とする。状態命令に記載されているモデルとワークの組合せ、ワーク同士の組合せを干渉の対象から外す。また、現在、非表示になっているワークについては、ラインシミュレータ装置Ａの制御周期ごとに干渉の対象から外す処理を行う。以上の処理を行うことで、動的に干渉の対象となるワークを変更する。
【０１１７】
以下では、上記の２種類の干渉の判断について状態命令を含めて説明する。ここでは、例えば、１つ目の仮想センサ３０１の干渉の判断について、図６の順序（４）の完了直後の状態より説明する。
【０１１８】
本実施形態では、図２のステップＳ７で、モデルとワークの姿勢の更新を行った後に、ステップＳ７＋で、ステップＳ７１とステップＳ７２の干渉の判断処理を行う。
【０１１９】
ステップＳ７１では、仮想センサ３０１の出力を監視し、モデル、ワークの干渉を判断する。例えば、図１２の状態では、スライダ２０３の組立側の上空の仮想センサ３０１がワーク（Ａ）２０６と干渉していると判断される。
【０１２０】
仮想センサ３０１が干渉状態を検出していると判断した場合は、ステップＳ７２により、仮想センサ３０１の信号の状態を変更する（センサ状態判断手段）。変更後の仮想センサ３０１の出力信号は、制御装置Ｃからの受信信号とともに、ステップＳ９でＰＬＣ装置Ｂに送信され、次のプログラムが実行される。
【０１２１】
また、排出命令後のワークに対する干渉制御は次のように行われる。例えば図８のＮＯ（８）の排出命令を行うと、上述の手順より、組立ワーク２０８は非表示状態となる。この時、図１２のスライダ２０３の排出側の上空の仮想センサ３０２と、組立ワーク（ＡＢ）が干渉状態と判断されたままでは、実機と異なる干渉検出状態となる。そこで、非表示にしている組立ワーク（ＡＢ）を干渉の対象外とする（ステップＳ７１）。これにより、実機と同等の干渉検出状態を構成できる。
【０１２２】
その後、供給命令（図８のＮＯ（９））で非表示状態のワークが表示されると、表示されたワークは干渉判断の対象となり、センサとの干渉が判断されるようになる。図８のＮＯ（９）の状態命令である供給命令を実行すると、パレット（Ａ）２０４の上空の仮想センサ３０３と、ワーク（Ａ）２０６が干渉状態と判断される。
【０１２３】
次に、干渉判断部１１０の２つ目の衝突判断について説明する。例えば、図２のステップＳ７１で、モデル（ロボット２０１）とワークや他の障害物（仮想環境（Ｅ）中に配置された構造物など）の干渉が判断された場合には、エラー信号を発生し、シミュレータの完了信号を出力する。その場合、出力された完了信号は、図２のステップＳ９で、ＰＬＣ装置Ｂに送信され、ＰＬＣ装置Ｂのエラー処理が行われる。ＰＬＣ装置Ｂでは、この完了信号を、干渉状態を検出した旨を通知する信号として取り扱い、適宜、エラー処理を行うことができる。また、出力された完了信号はステップＳ１０で検出され、ラインシミュレータ装置Ａの検証動作を終了する。
【０１２４】
以上のようにして、仮想環境（Ｅ）に仮想センサを配置して干渉チェックに用いることができ、本来生じるべきではない干渉状態を、拘束状態など正常系の状態とは区別して確実に検出することができる。そして、ワークの状態を再現し、再利用することで繰り返しシミュレーションを行うことができる。
【０１２５】
＜実施形態３＞
実施形態１では、説明を容易にするため、１セットの組立ワーク（ＡＢ）２０８を繰り返し組立てるケースで説明した。本実施形態３では、一般的には複数のワークをパレットに配置し、連続的に組立を行う生産制御に対応可能な構成につき説明する。
【０１２６】
本実施形態３では、複数のワークをパレットに置き、最低限のワークの数で、連続的に組立ての再現を行う構成について、図４、図１３〜図１９を用いて説明する。本実施形態３の処理は、図４に示してある。図４は、図２に組み立てリストの作成（Ｓ１００２）として示した処理の細部を詳細に示したものである。以下では、実施形態２と同様に、実施形態１と同一ないし同等の構成については、同一参照符号を用いて言及し、特に必要がない場合、重複した説明は省略するものとする。
【０１２７】
図１３は、２台のロボット４０１、４０３でワーク３個を組み立てる生産システムを、仮想環境（Ｅ）における仮想表示の態様で示している。
【０１２８】
図１３の仮想環境（Ｅ）では、生産装置として、ロボット（Ａ）４０１、ロボット（Ｂ）４０３、スライダ２０３が配置され、ロボットＡ４０１にはハンドＡ４０２が、ロボットＢ４０３にはハンドＢ４０４が取り付けられている。ロボットＡ４０１とロボットＢ４０３の間には、組立台４０５が設置されている。
【０１２９】
また、図１３の仮想環境（Ｅ）では、パレット（Ａ）２０４にはワーク（Ａ）２０６が９個、パレット（Ｂ）２０５にはワーク（Ｂ）２０７が６個、パレット（Ｃ）４０６にはワーク（Ｃ）４０７が１６個、設置されている。また、ロボット（Ｂ）４０３と、排出先（不図示）との間にはスライダ２０３が設置されている。
【０１３０】
本実施形態３では、上記構成の生産システムにおいて、図１４に示すように、ワーク（Ａ）２０６とワーク（Ｂ）２０７を組立てて、組立ワーク（ＡＢ）２０８を製造する。そして、さらに組立ワーク（ＡＢ）２０８とワーク（Ｃ）４０７を組立て、組立ワーク（ＡＢＣ）４０８を作成する。
【０１３１】
組立ワーク（ＡＢ）２０８の作成は、ロボット（Ａ）４０１が行い、組立ワーク（ＡＢＣ）４０８の作成は、ロボット（Ｂ）４０３が行う。
【０１３２】
図１３のように、異なるワーク点数が各パレット上に供給されている場合、組立の組合せに必要なワークの数が足りず、組立てを繰り返すことができない。また、供給命令が発生した場合、組立途中のワークが組立台４０５やスライダ２０３の上に存在し、（排出されている）ワークの数が不足して供給できない。
【０１３３】
そこで、本実施形態３では、最初に供給されている最低限のワークの数で繰り返しシミュレーションを実行するために、下記のような３つの手段を用意する。
【０１３４】
（Ｐ１）１つ目は、繰り返しが行える最低限のワークの数を複製する手段である。
（Ｐ２）２つ目は、複製したワークを含めて、組み立てるワークの組合せと供給するワークの組合せを作成する手段である。
（Ｐ３）３つ目は、作成した組合せに従ってラインシミュレーションを行う手段である。
以下、図４を参照して、上記３つの手段（Ｐ１〜Ｐ３）について詳細に説明する。
【０１３５】
まず、（Ｐ１）のワーク情報の複製処理について説明する。図２のステップＳ１００１で、最低限のワークの数を設定した仮想環境設定データ１０８と、状態遷移設定データ１０９を読み込む。その後、ステップＳ１００２（図４のＳ１０１〜Ｓ１１０）において、以下のように組み立てリストを作成する。
【０１３６】
図１５は、状態遷移設定データ１０９（図１）の構成例であり、組立ワーク（ＡＢＣ）４０８を作成するために必要な状態命令（１１０Ａ：１１０１〜１１０５：図８の８０１〜８０５に対応）を１セット備える。また、この状態遷移設定データ１０９は、供給命令（１１０Ｂ：１１０１〜１１０５）を１セットと、ワーク構成設定リスト（１１０Ｃ：１１１１〜１１１４）が登録されている。
【０１３７】
状態命令リスト（１１０Ａ）には、組立を１ループ実行するために必要な１セット分の供給命令を省いた状態命令リストが、組立の手順に従って、順序（１）から順番に状態命令が記述されている。また、供給命令リスト（１１０Ｂ）には、繰り返し実行するために必要なワークの種類分の供給命令が記述されている。
【０１３８】
ワーク構成設定リスト（１１０Ｃ）には、状態命令で設定しているワーク（Ａ〜Ｃ）の識別子（１１１１）、ワーク点数分の識別番号（１１１２）、識別番号に対する仮想環境のワーク名（１１１３）、組立途中となるワークの数（１１１４）が記述されている。このワークの識別番号（１１１２）は、パレットの上に存在するワークを取得する順番に相当するものとする。ここで、「組立途中のワーク数」とは、組立台４０５の上やスライダ２０３の上などに、組立て途中として存在するワークの数を設定する。
【０１３９】
例えば、ワーク（Ａ）２０６の場合は、組立台４０５の上とスライダ２０３の上にそれぞれ組立て途中のワークが存在することになり、組立途中のワーク数（１１１４）は、２個となる。ワーク（Ｂ）２０７の場合も、ワーク（Ａ）２０６と同様、組立途中のワーク数（１１１４）は、２個となる。ワーク（Ｃ）４０７の場合は、スライダ２０３の上のみ存在するものであり、組立途中のワーク数（１１１４）は、１個となる。
【０１４０】
図４のステップＳ１０１では、組み立て途中となるワーク数だけ、ワークを複製する（ワーク複製工程）。このワークの複製処理は、ワークの識別番号の降順に、設定した組立て途中のワークの数だけ複製するものである。例えば、ワーク（Ａ）２０６の場合は、図１５の識別番号８のワークＡ＿８、識別番号９のワークＡ＿９を複製する。これら複製したワークに対して、識別番号を８−１のワークＡ＿８−１、識別番号９−１のワークＡ＿９−１と命名する。また、ワーク（Ｂ）２０７、ワーク（Ｃ）４０７にも同様の処理を行う。複製したワークは、ワーク構成設定リスト（図１８）として記憶部１０５の記憶領域に記憶する。
【０１４１】
図１６は、上記のようにして複製した後のワーク構成設定リストを示している。図示のように、各ワーク（１６０１）に対して、複製したワークが追加されている（１６０３）。ワークのリスト（１６０３）には、上記のようにして複製されたワークＡ＿８−１、ワークＡ＿９−１、ワークＢ＿５−１、ワークＢ＿６−１、ワークＣ＿１６−１が追加されている。
【０１４２】
次に、図４のステップＳ１０１〜Ｓ１０６で、組立の再現に必要なワークの組合せの作成を行う。組合せは、複製したワークを含め、２種類の組合せを作成する。ここでは、供給命令で初期化するワークの識別番号の組合せリスト（供給組合せリスト）を作成する。
【０１４３】
次に、組立ワークＡＢＣ４０８を再現するためのワークの識別番号の組合せ（以降、ワークの組合せ）リストを作成する。ワークごとに供給の組合せリストを作成する場合、複製を含めないワークの数をＮ、組立途中のワーク数をＭとして説明する。
【０１４４】
まず、ステップＳ１０２〜Ｓ１０６で次のような条件式より、複製を含めないワークの数Ｎ、組立途中のワーク数Ｍの関係を判定し、供給の組合せの数Ｌを計算する。
【０１４５】
Ｎ＞Ｍの場合は、組合せの数はＬ＝ＩＮＴ（（Ｎ＋Ｍ）÷Ｎ＋１）とする（Ｓ１０２〜Ｓ１０４）。
【０１４６】
Ｎ≦Ｍ、かつＭでＮが割り切れる場合、組合せの数はＬ＝ＩＮＴ（（Ｎ＋Ｍ）÷Ｎ）とする（Ｓ１０３〜Ｓ１０５）。
【０１４７】
Ｎ≦Ｍ、かつＭでＮが割り切れない場合は、組合せの数はＬ＝ＩＮＴ（（Ｎ＋Ｍ）÷Ｎ＋１）×ＩＮＴ（（Ｎ＋Ｍ）÷Ｎ）とする（Ｓ１０３〜Ｓ１０６）。
【０１４８】
図１５の状態遷移設定データ１０９の場合、ワーク（Ａ）２０６はＮ＞ＭとなるためＬ＝ＩＮＴ（（９＋２）÷９＋１）＝２通りとなる（Ｓ１０４）。ワーク（Ｂ）２０７の場合も、Ｎ＞ＭとなるためＬ＝ＩＮＴ（（６＋２）÷６＋１）＝２通りとなる（Ｓ１０４）。ワーク（Ｃ）４０７の場合も、Ｎ＞ＭとなるためＬ＝ＩＮＴ（（１６＋１）÷１６＋１）＝２通りとなる。
【０１４９】
次に、作成した組合せ数だけ供給の組合せリストを作成する。この組合せリストは、複製していないワークはそのまますべての組合せに用い、複製されたワークは複製した数だけ順番に切り替えることにより作成される。
【０１５０】
例えば、ワーク（Ａ）２０６の場合は、１から７は全ての組合せで使い、８は８と８−１を、９は９と９−１を交互に入れ替える。
【０１５１】
ワーク（Ａ）２０６では、「１，２，３，４，５，６，７，８，９」と「１，２，３，４，５，６，７，８−１，９−１」の順で２通りの組合せが作成できる。
【０１５２】
ワーク（Ｂ）２０７では、「１，２，３，４，５，６」と「１，２，３，４，５−１、６−１」の順で２通りの組合せが作成できる。
【０１５３】
また、ワーク（Ｃ）４０７では、「１，２，３，４…、１４，１５，１６」と「１，２，３，４…、１４，１５，１６−１」の順で２通りの組合せが作成できる。
【０１５４】
次に、ステップＳ１０７で、作成したワークの供給の組合せを用い、組立の組合せリストを作成する。
【０１５５】
組立の組合せは、下記のような計算により作成することができる。まず、供給されるワークの数Ｎと供給の組合せの数Ｌの積を計算し、供給の組合せが１周するまでのワークの総点数を求める。図１５の例では、ワーク（Ａ）２０６は、９個×２通り＝１８個となる。ワーク（Ｂ）２０７は、６個×２通り＝１２個となる。また、ワーク（Ｃ）４０７は、１６個×２通り＝３２個となる。
【０１５６】
次に、計算した各ワークの総点数の最小公倍数を計算する（Ｓ１０８）。最小公倍数の算出方法については、素因数分解法でも良いし、ユークリッドの互除法を用いても良い。本実施形態３では素因数分解法を用いる例を説明する。
【０１５７】
一般に、素因数分解法では、求める２つ以上の数を素因数分解し、素数の共通の指数の積を計算することで最小公倍数を求めることができる。
【０１５８】
図１５の例では、ワーク（Ａ）２０６の総点数を素因数分解すると、１８＝２＾１×３＾２となる。ワーク（Ｂ）２０７の総点数を素因数分解すると、１２＝２＾２×３＾２となる。また、ワーク（Ｃ）４０７の総点数を素因数分解すると、３２＝２＾５となる。この場合、素数の共通の指数の積は、２＾５×３＾２＝２８８となる。
【０１５９】
次に、（Ｎ×Ｌ）の最小公倍数とワークの総点数より、各ワークの供給の組合せ（繰り返し）回数を求める（Ｓ１０９）。図１５の例では、ワーク（Ａ）２０６の組合せ回数は、２８８組÷１８個＝１６回となる。ワーク（Ｂ）２０７の組合せ回数は、２８８組÷１２個＝２４回となる。また、ワーク（Ｃ）４０７の組合せ回数は、２８８組÷３２個＝９回となる。
【０１６０】
次に、組合せ回数分だけ各ワークの供給の組合せリストを複製によって各ワークの供給の組合せ（繰り返し）回数分、作成する（Ｓ１１０）。例えばワーク（Ａ）２０６の場合、「１，２，３，４，５，６，７，８，９、１，２，３，４，５，６，７，８−１，９−１」を１６回繰り返したリストを作成する。ワーク（Ｂ）２０７、ワーク（Ｃ）４０７についても同様に各ワークの供給の組合せ（繰り返し）回数分の供給リストを作成する。最後に、各ワークのリストを順番に結合し、例えば図１７に示すような１つのリストにまとめる。
【０１６１】
図１７は、以上のようにして作成された組立の組合せリストであり、２８８通りの組合せリストを示している。同図の場合、組合せ番号（１７０１）に示されるように２８８通りの組合せ全てが異なる識別番号（１７０２）の組合せとなっている。
【０１６２】
次に、作成した組立の組合せリスト（図１７）と、状態遷移設定データ１０９（図１５）の紐付け処理を行う。この処理は、例えば、図２のステップＳ７、Ｓ８のワークの状態遷移の有無確認で行うことができる。例えば、図１５のＮＯ（１）（１１０１）の場合、組立紐付けの判定では、制御装置Ｃからの信号と状態命令のトリガ信号の状態が一致すると、図１７の組立の組合せリストの組合せ番号（１）の識別番号（１７０２）のワークと、ステップＳ１で読込んだ状態命令リスト（図１５：１１０Ａ）との紐付け処理を行う。
【０１６３】
例えば、図１８（ａ）、（ｂ）は、それぞれ図１７の組合せ番号（１）と（２８８）の組立の組合せリストと、ステップＳ１で読込んだ状態命令リストとを紐付けした後の状態命令リストを示している。図１８（ａ）において、組合せ番号（１）の場合、各ワークの状態命令（１８０２）、トリガ信号（１８０３）は図１５の状態命令リスト（１１０Ａ）のまま、主モデル／ワーク（１８０４）と従ワーク（１８０５）のワーク（Ａ）２０６にはワークＡ＿１が、ワーク（Ｂ）２０７にはワークＢ＿１が、ワーク（Ｃ）４０７にはワークＣ＿１がそれぞれ紐付づけられている。
【０１６４】
また、図１８（ｂ）において、組合せ番号（２８８）の場合、こちらも同様に、各ワークの状態命令（１８０２）、トリガ信号（１８０３）は図１５の状態命令リスト（１１０Ａ）のまま、ワーク（Ａ）２０６にはワークＡ＿９−１が、ワーク（Ｂ）２０７にはワークＢ＿６−１が、ワーク（Ｃ）４０７にはワークＣ＿１６−１がそれぞれ紐付づけられている。図１８（ａ）、（ｂ）に例示したリストは、他の組合せ番号についても、組合せ番号ごとに作成し、記憶部１０５上で管理する。
【０１６５】
以上のように紐付けが完了すると、図１８のように組立の組合せリスト（図１７）と、紐付けた状態遷移設定データ１０９を用いて、状態遷移命令を実行する。状態遷移設定データ１０９の状態命令の組合せのリスト全ての組合せが実行されると、１番目に戻り、繰り返し紐付けを実行する。
【０１６６】
さらに、初期化紐付け手段により、供給の組合せリストと、状態遷移設定データ１０９（図１５：１１０Ｂ）との紐付け処理について説明する。
【０１６７】
供給命令のトリガ信号（図１５：１１０Ｂ：１１０３）が一致すると、ワークの供給の組合せリストを参照し、初期化すべきワークの識別番号を取得することができる。次に、取得した初期化すべきワークの識別番号に紐付いたワークと供給命令リストを紐付けて、供給命令を出力する。
【０１６８】
シミュレータの開始した時に、各ワークは既に供給リストの１番目は供給されている状態である。そのため、最初の供給命令は、供給の組合せリストの２番目を参照して出力する。
【０１６９】
図１９（ａ）〜（ｃ）は、供給命令（図１５：１１０Ｂ）に応じて１回目に実行する供給命令（１９０２）と、トリガ信号（１９０３）、主従のワーク（１９０５、１９０６）の関係を示したリストであり、供給の組合せリストの２番目を参照している。たとえば、ワーク（Ａ）２０６では、「１，２，３，４，５，６，７，８−１，９−１」を参照する（図１９（ｂ））。ワーク（Ｂ）２０７では、「１，２，３，４，５−１、６−１」を参照する（図１９（ａ））。ワーク（Ｃ）４０７では、「１，２，３，４…、１４，１５，１６−１」を参照する（図１９（ｃ））。供給の組合せリスト全ての組合せが実行されると、１番目に戻り、繰り返し供給命令を実行する。また、供給命令が正常に完了すると、ＰＬＣ装置Ｂに当該の供給の完了信号を送信する。
【０１７０】
ここで、図２のステップＳ７、Ｓ８が終了すると、状態命令の実行処理を行うが、その時点で組立途中のワークが存在すると、同じトリガ信号の命令が複数のリストの中に存在することになる。その場合、組合せの番号が小さいリストの命令を優先して実行することで、命令を限定する。
【０１７１】
例えば、図１５において、１０番の状態命令リストで組立中のワークと、１１番の状態命令リストで組立中のワークが存在するとする。１０番目の組立は順序（１２）まで進み、１１番目の組立ワークは順序（３）まで進んでいる状態で、順序（１３）の状態命令を実行するトリガが入力された場合、状態命令は順位（１０）の組立に対して実行する。状態命令を実行すると、実行した状態命令は状態命令リストから削除し、状態命令の重複を防ぐ。供給命令も同様に、実行した供給命令を供給命令リストから削除する。
【０１７２】
以上のようにして、仮想環境設定データ１０８の最低限の点数のワークの定義を用い、パレット構成などに応じて、複数の部品を繰り返し製造する際に必要なワーク構成／供給の組合せリストを含む状態遷移設定データ１０９を自動的に作成できる。従来構成では、このような複数の部品を繰り返し製造する際に必要なワーク構成／供給の組合せリストは、作業者のシミュレータプログラミングにより作成しなければならなかった。そのため、製造する部品の点数が数１０００〜数万個であるとか、シミュレーションすべき工程が数１０時間に及ぶ場合には、シミュレータプログラミングの設定工数が莫大になる問題があった。しかしながら、本実施形態によれば、複数の部品を繰り返し製造する際に必要なワーク構成／供給の組合せリストを含む状態遷移設定データ１０９を自動的に作成できるため、シミュレータプログラミングの設定工数を著しく削減することができる。
【符号の説明】
【０１７３】
Ａ…ラインシミュレータ装置、Ｂ…ＰＬＣ装置、Ｃ…制御装置、Ｄ…表示装置、Ｅ…仮想環境、１０１…表示部、１０２…外部通信部、１０３…データ入出力部、１０４…制御部、１０５…記憶部、１０６…計算部、１０７…状態監視部、１０８…仮想環境設定データ、１０９…状態遷移設定データ、１１０…干渉判断部、２０１、４０１、４０３…ロボット、２０２、４０２、４０４…ハンド、２０３…スライダ、２０４、２０５…パレット、２０６、２０７…ワーク、２０８、４０８…組立ワーク、４０５…組立台、４０６…パレット、４０７…ワーク。
【図１】
2019101757.tif 000003
【図２】
2019101757.tif 000004
【図３】
2019101757.tif 000005
【図４】
2019101757.tif 000006
【図５】
2019101757.tif 000007
【図６】
2019101757.tif 000008
【図７】
2019101757.tif 000009
【図８】
2019101757.tif 000010
【図９】
2019101757.tif 000011
【図１０】
2019101757.tif 000012
【図１１】
2019101757.tif 000013
【図１２】
2019101757.tif 000014
【図１３】
2019101757.tif 000015
【図１４】
2019101757.tif 000016
【図１５】
2019101757.tif 000017
【図１６】
2019101757.tif 000018
【図１７】
2019101757.tif 000019
【図１８】
2019101757.tif 000020
【図１９】
2019101757.tif 000021
【図２０】
2019101757.tif 000022