以下に添付図面を参照して、この発明にかかるシミュレーション装置、シミュレーション方法、およびシミュレーションプログラムの実施の形態を詳細に説明する。まず、搬送システムの3次元CADデータについて説明する。シミュレーション対象である搬送システムの3次元CADデータは、搬送コンベアと、搬送アームと、ストッパと、を含む。この他にも、搬送システムの3次元CADデータは、各種部品データにより構築されるが、ここでは、代表的な部品データとして、搬送コンベア、搬送アーム、およびストッパを例に挙げて説明する。
搬送コンベアは、搬送コンベア上のワークを搬送する部品データである。搬送コンベアによる搬送の開始、停止、および搬送速度は、図示しない制御プログラムにより制御される。搬送アームは、ワークを把持する部品データである。搬送アームの移動、停止、ワークの把持、および把持の解除は、制御プログラムにより制御される。
ストッパは、搬送コンベア上を搬送されるワークを停止させる部品データである。ストッパは、上下に進退する。ストッパが搬送コンベアの搬送路を塞ぐと、搬送コンベアが駆動中であってもストッパに当接したワークは停止させられる。ストッパの進退は、制御プログラムにより制御される。制御プログラムは、搬送システムの3次元CADデータの搬送動作を実現するプログラムである。制御プログラムによる搬送動作は、表示画面に表示される。
<ワーク搬送のシミュレーション例>
本実施の形態では、上述した搬送システムによりワークの搬送をシミュレーションする。ワークとは、搬送システム上で搬送される製品や部品、食料品、商品などの搬送物を示すワークデータである。トレイとは、ワークを積載するワークデータである。すなわち、トレイもワークデータの一種である。
図1は、ワーク搬送のシミュレーション例(1)を示す説明図である。(A)は、搬送システムの3次元CADデータSにおいて、搬送コンベアC1が一時停止している状態を示す。搬送コンベアC1には、複数(例として3個)のトレイw1a〜w1cが搭載されている。トレイw1aにはワークw2aが積載されており、トレイw1bにはワークw2bが積載されている。搬送アームA1は、ワークw2cを把持して搬送している。
(B)は、(A)の次状態を示す。搬送アームA1は、ワークw2cを把持したまま降下し、ワークw2cをトレイw1cに載置する。(C)は、(B)の次状態を示す。搬送アームA1は、ワークw2cをトレイw1cに載置したあと、ワークw2cの把持を解除して上昇する。このあと、搬送コンベアC1の一時停止が解除され、トレイw1a〜w1cが搬送される。ワークw2a〜w2cは、トレイw1a〜w1cに積載されたまま搬送される。
先頭のトレイw1aがストッパSTに当接すると、トレイw1aがストッパSTの位置で停止させられる。トレイw1aに積載されているワークw2aもトレイw1aの積載位置で停止させられる。後続のトレイw1bは先行するトレイw1aに当接すると、トレイw1aの後端の位置で停止させられる。トレイw1bに積載されているワークw2bもトレイw1bの積載位置で停止させられる。
後続のトレイw1cは先行するトレイw1bに当接すると、トレイw1bの後端の位置で停止させられる。トレイw1cに積載されているワークw2cもトレイw1cの積載位置で停止させられる。これにより、トレイw1a〜w1cの滞留を表現できるとともに、滞留したトレイw1a〜w1c上のワークw2a〜w2cの滞留も表現することができる。
図2は、部品データおよびワークデータのツリー構造データ例(1)を示す説明図である。ツリー構造データTは、部品データとワークデータとの構造を階層化したデータ構造である。ツリー構造データTは、部品ツリーT1とワークツリーT2とを有する。部品ツリーT1は、搬送システムを構成するツリー構造データであり、ワークツリーT2は、搬送システム上にないワークを保持するツリー構造データである。
部品ツリーT1は、第1階層を部品トップPTというルートノードとし、第2階層に搬送アームA1と搬送コンベアC1とストッパSTとを有する。ワークデータが搬送アームA1に把持されると、搬送アームA1の下位階層である第3階層に、把持されたワークデータが関連付けられる。また、搬送コンベアC1にワークデータが搭載されると、搬送コンベアC1の下位階層である第3階層に、搭載されたワークデータが関連付けられる。
また、ワークデータに他のワークデータが搭載されると、搭載元のワークデータの下位階層である第4階層に、搭載されたワークデータが関連付けられる。このように、ワークデータに他のワークデータが搭載されると、下位階層に関連付けられていく。ワークツリーT2は、第1階層をワークトップWTというルートノードとし、第2階層に、搬送システムの3次元CADデータSに移行させていないワークデータが関連付けられる。以下、図2の(A)〜(C)について順次説明する。
(A)は、図1の(A)の状態でのツリー構造データTを示す。搬送アームA1はワークw2cを把持しているため、搬送アームA1の下位階層にはワークw2cが関連付けられる。また、搬送コンベアC1上にはトレイw1a〜w1cが搭載されているため、搬送コンベアC1の下位階層にはトレイw1a〜w1cが関連付けられる。また、トレイw1aにはワークw2aが積載されており、トレイw1bにはワークw2bが積載されているため、トレイw1a,w1bの下位階層にはワークw2a,w2bが関連付けられる。
(B)は、図1の(B)の状態でのツリー構造データTを示す。搬送アームA1に把持されたワークw2cがトレイw1cにも積載されたため、トレイw1cの下位階層にはワークw2cが関連付けられる。
(C)は、図1の(C)の状態でのツリー構造データTを示す。搬送アームA1は、ワークw2cをトレイw1cに載置したあと、ワークw2cの把持を解除したため、搬送アームA1の下位階層に関連付けられたワークw2cが削除される。このように、シミュレーション装置は、ワークデータの一種であるトレイへのワークの積載を、部品ツリーT1上で管理することができる。したがって、ユーザによる設定作業が不要となり、シミュレーションの効率化を図ることができる。
図3は、ワーク搬送のシミュレーション例(2)を示す説明図である。(D)は、図1の(C)の次状態を示す。(D)では、ストッパSTによりトレイw1a〜w1cが滞留している。また、トレイw1a〜w1c上のワークw2a〜w2cも滞留している。この状態で、搬送アームA1がトレイw1a上のワークw2aを把持する。
(E)は、(D)の次状態を示す。(E)では、搬送アームA1が、ワークw2aを把持した状態で上昇する。(F)は、(E)の次状態を示す。(F)では、搬送アームA1がワークw2aを把持した状態で移動し、3次元CAD空間内の搬送システム外にワークw2aを置いて、把持を解除する。
図4は、部品データおよびワークデータのツリー構造データ例(2)を示す説明図である。(D)は、図3の(D)の状態でのツリー構造データTを示す。搬送アームA1はワークw2aを把持しているため、搬送アームA1の下位階層にはワークw2aが関連付けられる。また、搬送コンベアC1上にはトレイw1a〜w1cが搭載されているため、搬送コンベアC1の下位階層にはトレイw1a〜w1cが関連付けられる。また、トレイw1a〜w1cにはワークw2a〜w2cが積載されているため、トレイw1a〜w1cの下位階層にはワークw2a〜w2cが関連付けられる。
(E)は、図3の(E)の状態でのツリー構造データTを示す。搬送アームA1に把持されたワークw2aがトレイw1aから離脱したため、トレイw1aの下位階層に関連付けられたワークw2aが削除される。(F)は、図3の(F)の状態でのツリー構造データTを示す。搬送アームA1は、ワークw2aを把持した状態で移動し、3次元CAD空間内の搬送システム外にワークw2aを置く。これにより、ワークw2aは、ワークツリーT2のワークトップWTの下位階層に関連付けられる。また、搬送アームA1は、ワークw2aの把持を解除したため、搬送アームA1の下位階層に関連付けられたワークw2aが削除される。このように、シミュレーション装置は、ワークデータの一種であるトレイからのワークの離脱を、部品ツリーT1上で管理することができる。したがって、ユーザによる設定作業が不要となり、シミュレーションの効率化を図ることができる。
図5は、ワーク搬送のシミュレーション例(3)を示す説明図である。(G)は、図3の(F)の次状態を示す。(G)では、搬送アームA1が、3次元CAD空間内の搬送システム外のワークw2aを再び把持し、搬送する。(H)は、(G)の次状態を示す。(H)では、搬送アームA1が、ワークw2aを把持した状態で下降し、トレイw1b上のワークw2bにワークw2aを積載する。(I)は、(H)の次状態を示す。(I)では、搬送アームA1が、ワークw2aの把持を解除し、上昇する。これにより、ワークw2bの上にワークw2aが積載された状態を表現することができる。
図6は、部品データおよびワークデータのツリー構造データ例(3)を示す説明図である。(G)は、図5の(G)の状態でのツリー構造データTを示す。搬送アームA1はワークw2aを把持しているため、搬送アームA1の下位階層にはワークw2aが関連付けられる。また、搬送コンベアC1上にはトレイw1a〜w1cが搭載されているため、搬送コンベアC1の下位階層にはトレイw1a〜w1cが関連付けられる。また、トレイw1b,w1cにはワークw2b,w2cが積載されているため、トレイw1b,w1cの下位階層にはワークw2b,w2cが関連付けられる。
(H)は、図5の(H)の状態でのツリー構造データTを示す。搬送アームA1に把持されたワークw2aがワークw2bに積載されたため、ワークw2bの下位階層にはw2aが関連付けられる。(I)は、図5の(I)の状態でのツリー構造データTを示す。搬送アームA1は、ワークw2aをワークw2bに載置したあと、ワークw2aの把持を解除したため、搬送アームA1の下位階層に関連付けられたワークw2aが削除される。このように、シミュレーション装置は、ワークへの他のワークの積載を、部品ツリーT1上で管理することができる。したがって、ユーザによる設定作業が不要となり、シミュレーションの効率化を図ることができる。
<部品モデルと部品データ>
部品モデルは、たとえば、クラス表現される。また、部品データは、たとえば、クラス表現である部品モデルから生成されたインスタンスとして表現される。まず、部品モデルについて説明する。
図7は、部品モデルのデータ構造例を示す説明図である。部品モデルのデータ構造700は、モデルID項目と、モデル種項目と、組付先モデルID項目と、形状項目と、接触可能範囲項目と、を有する。モデルID項目には、モデルIDが格納される。モデルIDとは、部品モデルを一意に特定する識別情報である。モデル種項目には、モデル種が格納される。モデル種とは、部品モデルの種類を示す情報である。たとえば、「搬送アーム」や「搬送コンベア」である。本例では、モデル種が「搬送アーム」の部品モデルのモデルIDを「PM1」とし、モデル種が「搬送コンベア」の部品モデルのモデルIDを「PM2」とする。以下、搬送アームの部品モデルを「部品モデルPM1」とし、搬送コンベアの部品モデルを「部品モデルPM2」とする。
組付先モデルID項目には、組付先モデルIDが格納される。組付先モデルIDとは、モデルIDで示される部品モデルの組付先となる部品モデルを一意に特定する識別情報である。部品モデルの場合、搬送システムがあらかじめ構築されているため、組付先は固定される。たとえば、搬送アームA1の部品モデルPM1の組付先モデルは、搬送アームA1を搬送するレールの部品モデルである。
形状項目には、形状データが格納される。形状データとは、モデルIDで示される部品モデルの形状を特定するデータである。接触可能範囲項目には、接触可能範囲が格納される。接触可能範囲とは、モデルIDで示される部品モデルからインスタンスされた部品データが、ワークデータを組付けることができる範囲を示す情報である。接触可能範囲内に位置するワークデータは組付先となる。
図8は、部品データのデータ構造例を示す説明図である。部品データのデータ構造800は、部品ID項目と、モデルID項目と、組付先ID項目と、位置情報項目と、状態項目と、を有する。部品ID項目には、部品IDが格納される。部品IDとは、部品データを一意に特定する識別情報である。本例では、搬送アームA1や搬送コンベアC1の符号A1,C1を部品IDとする。
モデルID項目には、モデルIDが格納される。モデルIDとは、部品データの元となる部品モデルを一意に特定する識別情報である。組付先ID項目には、組付先IDが格納される。組付先IDとは、部品IDで特定される部品データの組付先となる部品データを一意に特定する識別情報である。部品データの場合、搬送システムがあらかじめ構築されているため、組付先は固定される。たとえば、搬送アームA1の組付先は、搬送アームA1を搬送するレールである。
位置情報項目には、位置情報が格納される。位置情報とは、3次元CAD空間において、部品IDで特定される部品データの位置を示す情報である。部品データが、搬送アームA1のようにそれ自体が移動可能な部品データである場合、位置情報は、制御プログラムにより部品データの移動に従って更新される。一方、搬送コンベアC1のように固定される部品データについては、位置情報は固定である。
状態項目には、状態情報が格納される。状態情報とは、部品IDで特定される部品データがどのような状態であるかを特定する情報である。状態情報は、部品データの部品モデルに依存する。たとえば、部品データが搬送アームA1である場合、状態情報には、たとえば、「移動中」、「搬送中」、「停止」がある。「移動中」とは、ワークデータを把持していない状態での移動を示す。「搬送中」とは、ワークデータを把持している状態での移動を示す。「停止」とは、ワークデータの把持にかかわらず、搬送アームA1が停止している状態を示す。また、部品データが搬送コンベアC1である場合、状態情報には、たとえば、「駆動中」、「停止」がある。「駆動中」とは、搬送コンベアC1が駆動している状態を示す。搬送速度は、制御プログラムの制御に依存する。「停止」とは、搬送コンベアC1の駆動が停止した状態を示す。
図9は、部品データである搬送アームA1の一例を示す説明図である。搬送アームA1は、図7に示した形状データPS1に従って構成される。また、搬送アームA1は、図7に示した接触可能範囲PR1を有する。接触可能範囲PR1にワークデータが入ると、部品ツリーT1での搬送アームA1の下位階層にワークデータが関連付けられる。これにより、搬送アームA1は、ワークデータを把持した状態となる。
図10は、部品データである搬送コンベアC1の一例を示す説明図である。搬送コンベアC1は、図7に示した形状データPS2に従って構成される。また、搬送コンベアC1は、図7に示した接触可能範囲PR2を有する。接触可能範囲PR2にワークデータが入ると、部品ツリーT1での搬送コンベアC1の下位階層にワークデータが関連付けられる。これにより、搬送コンベアC1は、ワークデータを載置した状態となる。
<ワークモデルとワークデータ>
ワークモデルは、部品モデルと同様、たとえば、クラス表現される。また、ワークデータは、たとえば、クラス表現であるワークモデルから生成されたインスタンスとして表現される。まず、ワークモデルについて説明する。
図11は、ワークモデルのデータ構造例を示す説明図である。ワークモデルのデータ構造1100も、部品モデルのデータ構造700と同様、モデルID項目と、モデル種項目と、組付先モデルID項目と、形状項目と、接触可能範囲項目と、を有する。モデルID項目には、モデルIDが格納される。モデルIDとは、ワークモデルを一意に特定する識別情報である。モデル種項目には、モデル種が格納される。モデル種とは、ワークモデルの種類を示す情報である。たとえば、「トレイ」や「ワーク」である。本例では、モデル種が「トレイ」のワークモデルのモデルIDを「WM1」とし、モデル種が「ワーク」のワークモデルのモデルIDを「WM2」とする。以下、トレイのワークモデルを「ワークモデルWM1」とし、ワークのワークモデルを「ワークモデルWM2」とする。
組付先モデルID項目には、組付先モデルIDが格納される。組付先モデルIDとは、モデルIDで示されるワークモデルの組付先となるモデルを一意に特定する識別情報である。組付先となるモデルは、部品モデルまたはワークモデルである。なお、図11ではモデルIDがWM1(トレイ)及びWM2(ワーク)の場合、組付先モデルIDにそれぞれPM1(アーム)、PM2(コンベア)を記載しているが、トレイがアームにより搬送されない場合やワークがコンベアに直接搭載されて搬送されない場合は、組付先モデルIDからそれぞれPM1(アーム)、PM2(コンベア)を削除してもよい。
形状項目には、形状データが格納される。形状データとは、モデルIDで示されるワークモデルの形状を特定するデータである。接触可能範囲項目には、接触可能範囲が格納される。接触可能範囲とは、モデルIDで示されるワークモデルのワークデータが、他のワークデータを組付けることができる範囲を示す情報である。接触可能範囲内に位置するワークデータは組付先となる。
このように、組付先モデルとしてワークモデルも設定可能である、したがって、シミュレーション中に、組付先ワークモデルのワークデータ群のいずれかのワークデータの接触可能範囲に入れば、組付先のワークデータを指定して関連付ける設定作業をユーザがしなくてもよい。このため、搬送シミュレーションの効率化を図ることができる。
図12は、ワークデータのデータ構造例を示す説明図である。ワークデータのデータ構造1200は、ワークID項目と、モデルID項目と、組付先ID項目と、位置情報項目と、状態項目と、を有する。ワークID項目には、ワークIDが格納される。ワークIDとは、ワークデータを一意に特定する識別情報である。モデルID項目には、モデルIDが格納される。モデルIDとは、ワークデータの元となるワークモデルを一意に特定する識別情報である。組付先ID項目には、組付先IDが格納される。組付先IDとは、ワークIDで特定されるワークデータの組付先となる部品データまたはワークデータを一意に特定する識別情報である。
位置情報項目には、位置情報が格納される。位置情報とは、ワークIDで特定されるワークデータの位置を示す情報である。ワークデータは、部品データや他のワークデータに組み付いて移動するため、位置情報は、組付先の部品データまたはワークデータの位置情報を反映することになる。たとえば、組付先が搬送アームA1またはワークデータである場合、搬送アームA1またはワークデータの位置情報がコピーされる。
一方、組付先が搬送コンベアC1である場合、搬送コンベアC1の搬送速度および搬送時間に応じて制御プログラムにより算出される移動量が、現在の位置情報に加算されることで更新される。状態項目には、状態情報が格納される。状態情報とは、ワークIDで特定されるワークデータがどのような状態であるかを特定する情報である。ワークデータは、部品データや他のワークデータに組み付いて移動するため、状態情報は、組付先の部品データまたはワークデータの状態情報を反映することになる。
図13は、ワークデータであるトレイの一例を示す説明図である。図13では、トレイw1aを例に挙げて説明する。トレイw1aは、図11に示した形状データWS1に従って構成される。また、トレイw1aは、図11に示した接触可能範囲WR1を有する。接触可能範囲WR1にワークデータが入ると、部品ツリーT1でのトレイw1aの下位階層にワークデータが関連付けられる。これにより、トレイw1aは、ワークデータを積載した状態となる。
図14は、ワークデータであるワークの一例を示す説明図である。図14では、ワークw2aを例に挙げて説明する。ワークw2aは、図11に示した形状データWS2に従って構成される。また、ワークw2aは、図11に示した接触可能範囲WR2を有する。接触可能範囲WR2にワークデータが入ると、部品ツリーT1でのワークw2aの下位階層にワークデータが関連付けられる。これにより、ワークw2aは、ワークデータを積載した状態となる。
<シミュレーション装置のハードウェア構成例>
図15は、シミュレーション装置のハードウェア構成例を示すブロック図である。図15において、シミュレーション装置1500は、プロセッサ1501、記憶装置1502、入力装置1503、出力装置1504、および通信装置1505が、バス1506に接続されて構成されるコンピュータである。
プロセッサ1501は、シミュレーション装置1500の全体の制御を司る。また、プロセッサ1501は、記憶装置1502に記憶されている各種プログラム(OS(Operating System)や本実施の形態のシミュレーションプログラム、制御プログラム)を実行することで、記憶装置1502内のデータを読み出したり、実行結果となるデータを記憶装置1502に書き込んだりする。
記憶装置1502は、ROM(Read Only Memory)、RAM(Random Access Memory)、フラッシュメモリ、磁気ディスクドライブなどで構成され、プロセッサ1501のワークエリアになったり、各種プログラム(OSや本実施の形態のシミュレーションプログラム)や各種データ(各プログラムの実行により得られたデータを含む)を記憶したりする。また、記憶装置1502には、上述した搬送システムの3次元CADデータSのほか、部品モデルのデータ構造700、部品データのデータ構造800、ワークモデルのデータ構造1100、ワークデータのデータ構造1200も記憶される。
入力装置1503は、キーボード、マウス、タッチパネルなどユーザの操作により、各種データの入力をおこなうインターフェースである。出力装置1504は、プロセッサ1501の指示により、データを出力するインターフェースである。出力装置1504には、ディスプレイやプリンタが挙げられる。通信装置1505は、ネットワークを介して外部からデータを受信したり、外部にデータを送信したりするインターフェースである。
(シミュレーション装置1500の機能的構成例)
つぎに、シミュレーション装置1500の機能的構成例について説明する。図16は、シミュレーション装置1500の機能的構成例を示すブロック図である。シミュレーション装置1500は、指定部1601と、検出部1602と、関連付け部1603と、設定部1604と、更新部1605と、を有する。指定部1601、検出部1602、関連付け部1603、設定部1604、および更新部1605は、具体的には、たとえば、図15に示した記憶装置1502に記憶されたプログラムをプロセッサ1501に実行させることによりその機能を実現する。
指定部1601は、所定のワークモデルに対する組付先のワークモデルを指定する。具体的には、指定部1601は、第1のワークデータのワークモデルを指定する。たとえば、指定部1601は、搬送シミュレーション前において、入力装置1503の操作により、あるワークモデルに対する組付先のワークモデルを指定する。たとえば、指定部1601は、モデル種がワークであるワークモデルWM2に対する組付先のワークモデルとして、モデル種がトレイであるワークモデルWM1を指定する。これにより、ワークモデルのデータ構造1100において、ワークモデルWM2の組付先モデルID項目に、「WM1」が追加される。
したがって、シミュレーション中に、ワークモデルWM2のインスタンスであるワークが、ワークモデルWM1のインスタンスであるトレイ群のいずれかのトレイの接触可能範囲WR1に入ると、そのトレイが組付先となる。したがって、後述する関連付け部1603により、部品ツリーT1における組付先のトレイの下位階層に、接触可能範囲WR2に入ったワークが関連付けられることになる。
このように、あらかじめ、組付先のワークモデルを指定しておくことにより、シミュレーション中に、組付先ワークモデルのワークデータ群のいずれかのワークデータの接触可能範囲に入れば、組付先のワークデータを指定して関連付ける設定作業をユーザがしなくてもよい。このため、シミュレーションの効率化を図ることができる。
また、指定部1601により組付先として指定されるワークモデルは、異なるワークモデルとして説明したが、組付元のワークモデルと同一のワークモデルでもよい。これにより、たとえば、いずれかのワーク上にワークw1aを積載することができる。
検出部1602は、接触検出部1621と、移動検出部1622と、離脱検出部1623と、を有する。接触検出部1621は、第1のワークデータに設定された第1のワークデータへの搭載を許容する接触可能範囲に第2のワークデータが入ったことを検出する。たとえば、第1のワークデータがトレイw1aであり、第2のワークデータがワークw2aである場合、接触検出部1621は、トレイw1aの接触可能範囲WR1にワークw2aが入ったことを検出する。具体的には、たとえば、接触検出部1621は、トレイw1aの接触可能範囲WR1にワークw2aの質量中心が入ったことを検出する。
また、指定部1601により、ワークのワークモデルWM2の組付先モデルとしてトレイのワークモデルWM1が指定されている場合、接触検出部1621は、ワークw2aが、ワークモデルWM1をインスタンスしたいずれかのトレイの接触可能範囲に進入したかを検出する。これにより、シミュレーション中に、組付先のワークデータを指定して関連付ける設定作業をユーザがしなくてもよい。このため、シミュレーションの効率化を図ることができる。
移動検出部1622は、第1のワークデータの移動を検出する。ワークデータは、搬送アームA1や搬送コンベアC1により直接または間接的に移動する。たとえば、第1のワークデータがトレイw1aである場合、トレイw1aは、搬送アームA1により搬送される場合もあり、搬送コンベアC1により搬送されることもある。また、第1のワークデータがワークw2aである場合、搬送アームA1により搬送される場合もあり、搬送コンベアC1により搬送されることもある。また、トレイw1aに積載された状態で搬送コンベアC1により搬送されることもある。いずれにしても、移動検出部1622は、ワークデータの位置情報の変化と状態情報を参照することにより、ワークデータの移動を検出することができる。
離脱検出部1623は、シミュレーション対象を構成する部品データにより第1のワークデータの接触可能範囲から第2のワークデータが離脱したことを検出する。たとえば、部品データが搬送アームA1であり、第1のワークデータがトレイw1aであり、第2のワークデータがワークw2aであるとする。搬送アームA1がワークw2aを把持して上昇することにより、ワークw2aは、トレイw1aの接触可能範囲WR1から外れる。たとえば、ワークw2aの質量中心が、トレイw1aの接触可能範囲WR1から外れる。離脱検出部1623は、この離脱を検出することになる。
関連付け部1603は、接触検出部1621によって検出された第2のワークデータを第1のワークデータに関連付ける。たとえば、第1のワークデータがトレイw1aであり、第2のワークデータがワークw2aである場合、関連付け部1603は、部品ツリーT1のトレイw1aの下位階層にワークw2aを関連付ける。
また、関連付け部1603は、離脱検出部1623によって第1のワークデータとの離脱が検出された第2のワークデータとの関連付けを解除するとともに、第2のワークデータを部品データに関連付ける。たとえば、部品データが搬送アームA1であり、第1のワークデータがトレイw1aであり、第2のワークデータがワークw2aであるとする。離脱が検出されると、関連付け部1603は、部品ツリーT1においてトレイw1aの下位階層に関連付けられたワークw2aを削除することにより、トレイw1aとの関連付けを解除する。また、関連付け部1603は、ワークw2aを把持してトレイw1aから離脱された搬送アームA1の下位階層にワークw2aを関連付ける。
更新部1605は、移動検出部1622によって第1のワークデータの移動が検出された場合、第1のワークデータの移動方向への移動量により第2のワークデータの位置情報を更新する。たとえば、第1のワークデータがトレイw1aである場合、トレイw1aが搬送コンベアC1により搬送方向にある移動量分移動したとする。この場合、トレイw1aの位置情報は、搬送コンベアC1による移動量分加算された位置情報に更新される。トレイw1a上のワークw2aは、トレイw1aの移動に追従するため、ワークw2aの位置情報についても移動量分加算されて更新される。
設定部1604は、関連付け部1603によって関連付けされた第1および第2のワークデータを表示対象に設定する。具体的には、たとえば、設定部1604は、接触検出部1621により、第1および第2のワークデータの接触が検出された場合、接触検出時の位置情報により第1および第2のワークデータを表示対象に設定する。制御プログラムは、表示対象に設定された第1および第2のワークデータを表示画面に表示する。
また、設定部1604は、組付状態の第1および第2のワークデータの移動が検出されると、移動検出時の位置情報により第1および第2のワークデータを表示対象に設定する。制御プログラムは、表示対象に設定された第1および第2のワークデータを表示画面に表示する。
また、設定部1604は、組付状態の第1および第2のワークデータから第2のワークデータの離脱が検出されると、離脱検出時の位置情報により第1および第2のワークデータを表示対象に設定する。制御プログラムは、表示対象に設定された第1および第2のワークデータを表示画面に表示する。
<シミュレーション処理手順>
図17は、本実施の形態にかかるシミュレーション装置1500によるシミュレーション処理手順例を示すフローチャート(その1)である。シミュレーション装置1500は、まず、未選択ワークデータがあるか否かを判断する(ステップS1701)。判断のタイミングは、たとえば、所定時間間隔とする。未選択ワークデータがない場合(ステップS1701:No)、一連の処理を終了する。一方、未選択ワークデータがある場合(ステップS1701:Yes)、シミュレーション装置1500は、未選択ワークデータを1つ選択する(ステップS1702)。そして、シミュレーション装置1500は、未選択搬送アームがあるか否かを判断する(ステップS1703)。未選択搬送アームがない場合(ステップS1703:No)、図18のステップS1801に移行する。一方、未選択搬送アームがある場合(ステップS1703:Yes)、シミュレーション装置1500は、未選択搬送アームを1つ選択する(ステップS1704)。
そして、シミュレーション装置1500は、選択搬送アームが特定のモデルであるか否かを判断する(ステップS1705)。具体的には、シミュレーション装置1500は、選択搬送アームの部品モデルが、選択ワークデータの組付先モデルIDとして登録されているか否かを判断する。特定のモデルでない場合(ステップS1705:No)、ステップS1703に戻り、シミュレーション装置1500は、未選択搬送アームを選択しなおす。
一方、特定のモデルである場合(ステップS1705:Yes)、シミュレーション装置1500は、選択ワークデータが選択搬送アームの接触可能範囲にすでに入っているか否かを判断する(ステップS1706)。すでに入っている場合(ステップS1706:Yes)、選択ワークデータは選択搬送アームに把持されていることになるため、ステップS1701に移行し、ワークデータを選択しなおす。一方、選択ワークデータが選択搬送アームの接触可能範囲に進入済みでない場合(ステップS1706:No)、シミュレーション装置1500は、接触可能範囲に進入したか否かを判断する(ステップS1707)。
接触可能範囲に進入した場合(ステップS1707:Yes)、シミュレーション装置1500は、選択ワークデータの組付先に選択搬送アームを追加する(ステップS1708)。具体的には、シミュレーション装置1500は、ワークデータのデータ構造1200において、選択ワークの組付先ID項目に、選択搬送アームの部品IDを追加する。これにより、部品ツリーT1の選択搬送アームの下位階層に選択ワークデータが関連付けられる。このあと、ステップS1701に移行し、ワークデータを選択しなおす。
また、ステップS1707において、接触可能範囲への進入が検出されなかった場合(ステップS1707:No)、シミュレーション装置1500は、選択ワークデータが選択搬送アームの接触可能範囲から離脱したか否かを判断する(ステップS1709)。離脱が検出されなかった場合(ステップS1709:No)、ステップS1701に移行し、ワークデータを選択しなおす。
一方、離脱した場合(ステップS1709:Yes)、シミュレーション装置1500は、選択ワークデータの組付先から選択搬送アームを削除する(ステップS1710)。具体的には、シミュレーション装置1500は、ワークデータのデータ構造1200において、選択ワークの組付先ID項目から、選択搬送アームの部品IDを削除する。これにより、部品ツリーT1の選択搬送アームの下位階層から選択ワークデータが削除される。このあと、ステップS1701に移行し、ワークデータを選択しなおす。
図18は、本実施の形態にかかるシミュレーション装置1500によるシミュレーション処理手順例を示すフローチャート(その2)である。シミュレーション装置1500は、図17のステップS1703において、未選択搬送アームがない場合(ステップS1703:No)、未選択搬送コンベアがあるか否かを判断する(ステップS1801)。未選択搬送コンベアがない場合(ステップS1801:No)、図19のステップS1901に移行する。一方、未選択搬送コンベアがある場合(ステップS1801:Yes)、シミュレーション装置1500は、未選択搬送コンベアを1つ選択する(ステップS1802)。
そして、シミュレーション装置1500は、選択搬送コンベアが特定のモデルであるか否かを判断する(ステップS1803)。具体的には、シミュレーション装置1500は、選択搬送コンベアの部品モデルが、選択ワークデータの組付先モデルIDとして登録されているか否かを判断する。特定のモデルでない場合(ステップS1803:No)、ステップS1801に戻り、シミュレーション装置1500は、未選択搬送コンベアを選択しなおす。
一方、特定のモデルである場合(ステップS1803:Yes)、シミュレーション装置1500は、選択ワークデータが選択搬送コンベアの接触可能範囲にすでに入っているか否かを判断する(ステップS1804)。すでに入っている場合(ステップS1804:Yes)、選択ワークデータは選択搬送コンベアに積載されていることになるため、図17のステップS1701に移行し、ワークデータを選択しなおす。一方、選択ワークデータが選択搬送コンベアの接触可能範囲に進入済みでない場合(ステップS1804:No)、シミュレーション装置1500は、接触可能範囲に進入したか否かを判断する(ステップS1805)。
接触可能範囲に進入した場合(ステップS1805:Yes)、シミュレーション装置1500は、選択ワークデータの組付先に選択搬送コンベアを追加する(ステップS1806)。具体的には、シミュレーション装置1500は、ワークデータのデータ構造1200において、選択ワークの組付先ID項目に、選択搬送コンベアの部品IDを追加する。これにより、部品ツリーT1の選択搬送コンベアの下位階層に選択ワークデータが関連付けられる。このあと、図17のステップS1701に移行し、ワークデータを選択しなおす。
また、ステップS1805において、接触可能範囲への進入が検出されなかった場合(ステップS1805:No)、シミュレーション装置1500は、選択ワークデータが選択搬送コンベアの接触可能範囲から離脱したか否かを判断する(ステップS1807)。離脱が検出されなかった場合(ステップS1807:No)、図17のステップS1701に移行し、ワークデータを選択しなおす。
一方、離脱した場合(ステップS1807:Yes)、シミュレーション装置1500は、選択ワークデータの組付先から選択搬送コンベアを削除する(ステップS1808)。具体的には、シミュレーション装置1500は、ワークデータのデータ構造1200において、選択ワークの組付先ID項目から、選択搬送コンベアの部品IDを削除する。これにより、部品ツリーT1の選択搬送コンベアの下位階層から選択ワークデータが削除される。このあと、図17のステップS1701に移行し、ワークデータを選択しなおす。
図19は、本実施の形態にかかるシミュレーション装置1500によるシミュレーション処理手順例を示すフローチャート(その3)である。シミュレーション装置1500は、図18のステップS1801において、未選択搬送コンベアがない場合(ステップS1801:No)、未選択の組付先ワークデータ候補があるか否かを判断する(ステップS1901)。未選択の組付先ワークデータ候補がない場合(ステップS1901:No)、図17のステップS1701に移行する。一方、未選択の組付先ワークデータ候補がある場合(ステップS1901:Yes)、シミュレーション装置1500は、未選択の組付先ワークデータ候補を1つ選択する(ステップS1902)。
そして、シミュレーション装置1500は、選択組付先ワークデータ候補が特定のモデルであるか否かを判断する(ステップS1903)。具体的には、シミュレーション装置1500は、選択組付先ワークデータ候補のワークモデルが、選択ワークデータの組付先モデルIDとして登録されているか否かを判断する。特定のモデルでない場合(ステップS1903:No)、ステップS1901に戻り、シミュレーション装置1500は、未選択の組付先ワークデータ候補を選択しなおす。
一方、特定のモデルである場合(ステップS1903:Yes)、シミュレーション装置1500は、選択ワークデータが選択組付先ワークデータ候補の接触可能範囲にすでに入っているか否かを判断する(ステップS1904)。すでに入っている場合(ステップS1904:Yes)、選択ワークデータは選択組付先ワークデータ候補に積載されていることになるため、図17のステップS1701に移行し、ワークデータを選択しなおす。一方、選択ワークデータが選択組付先ワークデータ候補の接触可能範囲に進入済みでない場合(ステップS1904:No)、シミュレーション装置1500は、接触可能範囲に進入したか否かを判断する(ステップS1905)。
接触可能範囲に進入した場合(ステップS1905:Yes)、シミュレーション装置1500は、選択ワークデータの組付先に選択組付先ワークデータ候補を追加する(ステップS1906)。具体的には、シミュレーション装置1500は、ワークデータのデータ構造1200において、選択ワークの組付先ID項目に、選択組付先ワークデータ候補のワークIDを追加する。これにより、部品ツリーT1の選択組付先ワークデータ候補の下位階層に選択ワークデータが関連付けられる。このあと、図17のステップS1701に移行し、ワークデータを選択しなおす。
また、ステップS1905において、接触可能範囲への進入が検出されなかった場合(ステップS1905:No)、シミュレーション装置1500は、選択ワークデータが選択組付先ワークデータ候補の接触可能範囲から離脱したか否かを判断する(ステップS1907)。離脱が検出されなかった場合(ステップS1907:No)、図17のステップS1701に移行し、ワークデータを選択しなおす。
一方、離脱した場合(ステップS1907:Yes)、シミュレーション装置1500は、選択ワークデータの組付先から選択組付先ワークデータ候補を削除する(ステップS1908)。具体的には、シミュレーション装置1500は、ワークデータのデータ構造1200において、選択ワークの組付先ID項目から、選択組付先ワークデータ候補のワークIDを削除する。これにより、部品ツリーT1の選択組付先ワークデータ候補の下位階層から選択ワークデータが削除される。このあと、図17のステップS1701に移行し、ワークデータを選択しなおす。
<情報更新処理>
図20は、ワークデータの情報更新処理例を示すフローチャートである。まず、シミュレーション装置1500は、未選択ワークデータがあるか否か判断する(ステップS2001)。判断のタイミングは、たとえば、所定時間間隔とする。また、図17のステップS1701と同期してもよい。
ステップS2001において、シミュレーション装置1500は、未選択ワークデータがある場合(ステップS2001:Yes)、未選択ワークデータを1つ選択する(ステップS2002)。そして、シミュレーション装置1500は、選択ワークデータに対し組付先があるか否かを判断する(ステップS2003)。具体的には、シミュレーション装置1500は、ワークデータのデータ構造1200を参照して、選択ワークデータの組付先ID項目に組付先IDがあるか否かを判断する。
組付先がない場合(ステップS2003:No)、ステップS2001に戻る。一方、組付先がある場合(ステップS2003:Yes)、シミュレーション装置1500は、組付先が搬送アームA1であるか搬送コンベアC1であるかワークデータであるかを判断する(ステップS2004)。
搬送アームA1である場合(ステップS2004:搬送アーム)、シミュレーション装置1500は、搬送アームA1が移動中であるか否かを判断する(ステップS2005)。移動中でない場合(ステップS2005:No)、ステップS2011に移行する。一方、移動中である場合(ステップS2005:Yes)、選択ワークデータを把持して搬送していることになるため、シミュレーション装置1500は、組付先の搬送アームA1の移動に追従して、選択ワークデータの位置情報を更新し(ステップS2006)、ステップS2011に移行する。
また、ステップS2004において、搬送コンベアC1である場合(ステップS2004:搬送コンベア)、シミュレーション装置1500は、搬送コンベアC1が駆動中であるか否かを判断する(ステップS2007)。駆動中でない場合(ステップS2007:No)、ステップS2011に移行する。一方、駆動中である場合(ステップS2007:Yes)、シミュレーション装置1500は、搬送コンベアC1の駆動に応じて、選択ワークデータの位置情報を更新する(ステップS2008)。なお、ストッパSTにより滞留している場合には、位置情報に変更はないことになる。このあと、ステップS2011に移行する。
また、ステップS2004において、ワークデータである場合(ステップS2004:ワークデータ)、シミュレーション装置1500は、組付先のワークデータが移動中であるか否かを判断する(ステップS2009)。移動中でない場合(ステップS2009:No)、ステップS2011に移行する。一方、移動中である場合(ステップS2009:Yes)、シミュレーション装置1500は、組付先のワークデータの移動に追従して、選択ワークデータの位置情報を更新する(ステップS2010)。このあと、ステップS2011に移行する。
ステップS2011では、シミュレーション装置1500は、組付先の状態情報を参照して、選択ワークデータの状態情報を更新する(ステップS2011)。たとえば、シミュレーション装置1500は、組付先の搬送アームA1や搬送コンベアC1、ワークデータの状態をコピーする。ただし、搬送コンベアC1で搬送中であってもストッパSTにより滞留している場合は、「搬送中」ではなく「停止」となる。このあと、ステップS2001に戻る。ステップS2001において、未選択のワークデータがない場合(ステップS2001:No)、一連の処理を終了する。
このように、上述した実施の形態によれば、あるワークデータが他のワークデータの接触可能範囲に進入したことにより、あるワークデータを他のワークデータに組み付けた状態を高精度にシミュレーションすることができる。また、この場合、他のワークデータの移動に追従してあるワークデータが移動することになるため、ワークデータに積載されたワークデータの動きを高精度にシミュレーションすることができる。
また、この場合、ワークデータに積載されたワークデータの離脱を検出することにより、組付の解除についても高精度に搬送シミュレーションすることができる。また、ワークデータ同士の組付や組付の解除を、部品ツリーT1上で管理することにより、ワークデータを部品データであるかのように管理することができる。したがって、ワークデータ同士の組付や組付解除といった設定作業を、ユーザはおこなう必要がなく、搬送シミュレーションの効率化を図ることができる。
また、ワークデータのワークモデルの組付先モデルとして同一または他のワークモデルを指定することにより、ワークデータが、組付先ワークモデルをインスタンスしたいずれかのワークデータの接触可能範囲に進入したかを検出することができる。これにより、搬送シミュレーション中に、組付先のワークデータを指定して関連付ける設定作業をユーザがしなくてもよい。このため、搬送シミュレーションの効率化を図ることができる。
以上説明したように、シミュレーション装置、シミュレーション方法、およびシミュレーションプログラムによれば、高精度の搬送シミュレーションを効率的に実行することができるという効果を奏する。