以下に添付図面を参照して、この発明にかかる模擬装置、模擬プログラム、および模擬方法の実施の形態を詳細に説明する。本実施の形態では、ワークのストッパによる停止・滞留表現(ワークストッパモデル)を一列搬送にすることで単純化し、制御シーケンスデバッグ向けの仮想メカシミュレータに耐えうる表現を実現する。以下、ワークストッパモデルについて説明する。
<ワークストッパモデルでのワーク滞留表現例>
図1は、ワークストッパモデル例を示す説明図である。(A)は、ワーク搬送状態を示している。Sは搬送路上に設置されたストッパである。ストッパSは、P1に設置されている。P1はストッパSの設置位置であるとともに、ワークが滞留していない状態では、到来するワークの停止位置にもなる。ストッパSは、搬送路上で、ワークの搬送を規制してワークを停止させたり、規制を解除してワークを通過させたりする。W1は、搬送路上を搬送しているワークを示している。ワークW1の搬送方向長はw1である。
(B)は、ワークW1の滞留状態を示している。ワークW1がストッパSで停止させられると、停止位置P1が、ワークW1の搬送方向長w1分手前にオフセットされ、P2に更新される。なお、W2は、ワークW1の後続のワークを示している。ワークW2の搬送方向長はw2である。
(C)は、ワークW1,W2の滞留状態を示している。ワークW2がワークW1に到達すると、ワークW2が停止する。そして、停止位置P2が、ワークW2の搬送方向長w2分手前にオフセットされ、P3に更新される。
このように、ストッパSによりワークW1が滞留している場合に、後続のワークW2がストッパSに到来する場合でも、ストッパSによる停止位置がP1からP2に更新されているため、ワークW2が、ストッパSで滞留しているワークW1の停止位置P2で、ストッパSにより停止させられることとなる。
このように、本実施の形態のワークストッパモデルでは、動的干渉をおこなうことなくワークの滞留状態を表現することができる。また、ストッパSによる停止位置をP1からP2、P2からP3へワークが滞留する都度オフセットしている。したがって、ワークW1,W2同士の位置情報から接触を判断して止めるのに比べて、より少ない演算量でワークの接触を判断し、ワークの滞留状態を模擬することができる。以下、具体例を挙げてワークストッパモデルを説明する。
<ワークストッパモデル例>
図2は、ワークストッパモデルの一例を示す説明図である。図2では、ワークストッパモデルとしてコンベアシステムを採用している。コンベアシステムは、複数のコンベアユニット(以下、単に「コンベア」)が連結された搬送路をモデル化した情報である。コンベアには2種類ある。1つが直線的な搬送をおこなうタイプのコンベア(図2
ではコンベアCU1,CU2,CU4)であり、もう1つが曲線的な搬送をおこなうタイプのコンベア(図2ではCU3)である。また、ユーザ側で作成した制御プログラムにより、コンベアごとに、搬送の開始、停止、搬送速度といった搬送動作や搬送動作のタイミングが設定されているものとする。
各コンベアには、ストッパが設置されている。ストッパには2種類ある。1つが関節ストッパとよばれ、オペレータが、ワークストッパモデルとして搬送路上の任意の位置に設定可能なストッパである。関節ストッパは、コンベア上で、ワークの搬送を規制してワークを停止させたり、規制を解除してワークを通過させたりする。また、ユーザ側で作成した制御プログラムにより、関節ストッパの規制および規制解除といった規制動作や規制動作のタイミングが設定されているものとする。図2では、S11〜S13,S21,S22,S41が関節ストッパである。
また、ストッパの種類には、各コンベアの排出端に設置されている排出ストッパである。排出ストッパは、コンベア間のワークの乗り移りやワークの滞留を表現するストッパであり、ディスプレイには表示されない仮想的なストッパである。排出ストッパは、常時規制解除の状態であるが、コンベア間のワークの乗り移りやワークの滞留を表現する場合に適宜規制状態に変更する。排出ストッパの規制および規制解除といった規制動作や規制動作のタイミングは、本実施の形態のプログラムで実行することとなる。
図3は、図2に示したコンベアシステムの一部の3次元表現を示す説明図である。図3では、コンベアCU1を3次元で表現している。なお、図3において、アーム301は、ワークを取り除いたり、ワークを追加したりするオブジェクトである。また、レール302は、アーム301を搬送路に沿って移動させるオブジェクトである。また、ユーザ側で作成した制御プログラムにより、アーム301の動作や動作タイミング、移動で設定されているものとする。
<データベースの記憶内容>
つぎに、本実施の形態のデータベースの記憶内容について図4〜図11を用いて説明する。ここでは、図2および図3に示したワークストッパモデル(コンベアシステムC1)を例に挙げて説明する。
図4は、コンベアシステムリストを示す説明図である。コンベアシステムリストとは、コンベアシステムごとに、コンベアシステムのシステムID、コンベアリスト、投入可能領域、全ワーク情報リスト、投入リストを記憶するテーブルである。
システムID項目には、コンベアシステムごとに、コンベアシステムを一意に特定するシステムIDが記憶される。たとえば、図2および図3の例では、システムIDとして「C1」が記憶される。コンベアリスト項目には、コンベアシステムごとに、コンベアリストが記憶される。コンベアリストとは、コンベアシステムを構成するコンベアを記憶するテーブルである。たとえば、コンベアシステムC1の場合は、コンベアリストTC1が記憶される。
投入可能領域項目には、コンベアシステムごとに、ワークが投入可能な領域(ワーク投入可能領域)が記憶される。たとえば、図2および図3の例では、ワーク投入可能領域として「A1」が記憶される。全ワーク情報リスト項目には、コンベアシステムごとに、全ワーク情報リストが記憶される。全ワーク情報リストとは、コンベアシステムに投入されたワーク群の各々のワークに関する情報を記憶するテーブルである。たとえば、コンベアシステムC1の場合は、全ワーク情報リストTAW1が記憶される。
投入リスト項目には、コンベアシステムごとに、投入リストへのポインタが記憶される。投入リストとは、投入可能領域に投入されたワークを特定するテーブルである。たとえば、コンベアシステムC1の場合は、投入リストTIW1が記憶される。
図5は、図4に示したコンベアリストの記憶内容の一例を示す説明図である。コンベアリストとは、コンベアシステムを構成するコンベアを記憶するテーブルである。コンベアリストにおいて、コンベアID項目には、コンベアごとに、コンベアを一意に特定するコンベアIDが記憶される。コンベアリストTC1の場合、コンベアIDとして、CU1〜CU4が記憶される。
ユニット種項目には、コンベアの種類が記憶される。コンベアの種類とは、上述した直線的な搬送をおこなうタイプ(ライン)であるか、曲線的な搬送をおこなうタイプ(カーブ)の2種類である。コンベアリストTC1の場合、CU1,CU2,CU4については「ライン」、CU3については「カーブ」が記憶される。
搬送長項目には、コンベアごとに、搬送長が記憶される。コンベアリストTC1の場合、搬送長として、L(CU1)〜L(CU4)が記憶される。半径項目には、コンベア種が「カーブ」であるコンベアの半径が記憶される。コンベアリストTC1の場合、CU3については半径R(図2を参照)が記憶される。
ワーク搬送量項目には、コンベアごとに、単位時間あたりのワーク搬送量が記憶される。ワーク搬送量は、ユーザ側が作成した制御プログラムにより決まる。コンベアリストTC1の場合、ワーク搬送量として、ΔL1〜ΔL4が記憶される。
ストッパリストには、コンベアごとに、ストッパリストが記憶される。ストッパリストとは、コンベアごとに設置されているストッパに関する情報を記憶するテーブルである。コンベアリストTC1の場合、ストッパリストとして、TS1〜TS4が記憶される。ストッパリストTS1〜TS4については、図6〜図9で説明する。
搬送ワークリスト項目には、コンベアごとに、搬送ワークリストが記憶される。搬送ワークリストとは、コンベアごとに、コンベア上のワークIDを記憶するテーブルである。たとえば、ワークが投入されたり、前段のコンベアからワークが乗り移ったりすると、そのワークIDが追加される。一方、ワークが離脱したり、次段のコンベアに排出されると、そのワークIDは削除される。
図6〜図9は、図5に示したストッパリストの記憶内容の一例を示す説明図である。図6はストッパリストTS1、図7はストッパリストTS2、図8はストッパリストTS3、図9はストッパリストTS4を示している。
ストッパID項目には、ストッパごとに、ストッパを一意に特定する識別情報が記憶される。図6のストッパID項目を例に挙げると、ストッパIDとして、S10〜S13が記憶される。
ストッパ種項目には、ストッパごとに、ストッパの種類(関節または排出)を一意に特定する識別情報が記憶される。図6のストッパ種項目を例に挙げると、ストッパ種として、S10については「排出」、S11〜S13については「関節」が記憶される。
位置項目には、ストッパごとに、ストッパの位置が記憶される。ストッパの位置は、コンベアの排出端からの距離で規定される。したがって、排出ストッパの位置は「0」となる。図6の位置項目を例に挙げると、ストッパS10〜S13の位置として、d10(=0),d11〜d13(>0)が記憶される。
遮蔽範囲項目には、関節ストッパごとに、遮蔽範囲が記憶される。遮蔽範囲とは、関節ストッパが搬送路上で遮蔽している範囲を示しており、遮蔽範囲に抵触するワークは通過できず、停止することとなる。遮蔽範囲は、ワークストッパモデルの3次元座標系の座標値で範囲指定される。ワークは一列搬送であるため、ワークの搬送方向への投影面を特定することで、ワークが遮蔽範囲に抵触するか否かがわかる。遮蔽範囲は、ユーザ側で作成した制御プログラムにより設定され、シミュレーション中に変動する。図6の遮蔽範囲項目を例に挙げると、遮蔽範囲B11〜B13が記憶される。
有効フラグ項目には、排出ストッパの有効(TRUE)または無効(FALSE)を示すフラグが記憶される。有効(TRUE)の場合、排出ストッパによりワークの搬送が規制される。無効(FALSE)の場合、ワークの搬送が規制されず、ワークが通過する。デフォルトでは、無効(FALSE)に設定されており、後述する判定処理により、有効(TRUE)に変化したり、有効(TRUE)からさらに無効(FALSE)に変化することとなる。図6の有効フラグ項目を例に挙げると、無効(FALSE)に設定されている。
滞留ワークリスト項目には、ストッパごとに、滞留ワークリストが記憶される。滞留ワークリストとは、ストッパごとに、ストッパで滞留しているワークに関する情報を保持するテーブルである。たとえば、ワークを一意に特定するワークIDが滞留順に記憶されている。図6の滞留ワークリスト項目を例に挙げると、滞留ワークリストTK10〜TK13が記憶される。
滞留オフセット量項目には、ストッパごとに、滞留オフセット量が記憶される。滞留オフセット量とは、滞留ワークリストに保持されている滞留中のワークの搬送方向長の合計値である。滞留しているワークがない場合は、滞留オフセット量は0である。図6の滞留オフセット量項目を例に挙げると、滞留オフセット量Δd10〜Δd13(≧0)が記憶される。
図10は、図4に示した全ワーク情報リストの記憶内容の一例を示す説明図である。図10では、コンベアシステムC1での全ワーク情報リストTAW1の記憶内容の一例について示している。これにより、どのワークがどのコンベアでどのくらいの位置にいて、どんな状態であるかがわかることとなる。
図10において、ワークID項目には、ワークごとに、ワークを一意に特定するワークIDが記憶される。図2および図3の状態を例に挙げると、図10の全ワーク情報リストTAW1において、ワークW1〜W3が記憶されている。
コンベアID項目には、ワークごとに、当該ワークが存在しているコンベアのコンベアIDが記憶される。図2および図3の状態を例に挙げると、ワークW1〜W3はコンベアCU1に存在する。したがって、図10の全ワーク情報リストTAW1において、ワークW1〜W3のそれぞれのレコードにおいて「CU1」が記憶されている。
搬送残量項目には、ワークごとに、搬送残量が記憶される。搬送残量とは、ワークが存在しているコンベアでの現在位置から当該コンベアの排出端までの距離である。ワークが搬送中である場合、搬送残量は徐々に減少する。図10の全ワーク情報リストTAW1の例では、搬送残量として、r1〜r3が記憶される。
搬送方向長項目には、ワークごとに、ワークの搬送方向長が記憶される。搬送方向長とは、ワークの搬送方向の長さである。搬送方向長は、ワークごとに固定長にしてもよく、ワークの姿勢に応じて変動する長さとしてもよい。ワークの姿勢については、既存技術で検出可能であるため、ここでは詳細は説明しないが、ワーク搬送量分移動する都度、または次段のコンベアに乗り移る際に、ワークの姿勢を検出し、検出されたワークの姿勢に応じて搬送方向長を計算してもよい。なお、ワークの形状は、たとえ複雑であっても、ワークを内接する外形ボックス情報(立方体)に変換されるものとする。
状態項目には、ワークの状態が記憶される。ワークの状態とは、「投入」、「搬送中」、「停止」、「離脱」の4種類である。「投入」とは、投入可能領域に投入され、また、搬送されていない状態である。「搬送中」とは、ワークが存在しているコンベアが駆動することでワークが移動している状態である。「停止」とは、ワークが停止している状態である。
「停止」には2種類ある。1つは、コンベアの駆動停止に伴ってワークも停止する場合と、コンベアの駆動中にストッパまたはストッパに滞留しているワークに到達することで停止する場合がある。「停止」には、これら2つの状態が含まれる。「離脱」はコンベアから取り出された状態を示す。「離脱」には2種類ある。1つは、アームにより取り出される場合と、最後尾のコンベア(図2ではコンベアCU4)から排出された場合である。「離脱」には、これら2つの状態が含まれる。
なお、図2および図3の状態を例に挙げると、ワークW1〜W3は投入運可能領域に存在する。したがって、図10の全ワーク情報リストTAW1において、ワークW1〜W3について、「投入」が記憶されている。
図11は、図4に示した投入リストの記憶内容の一例を示す説明図である。図11では、コンベアシステムC1での投入リストTIW1の記憶内容の一例を示している。投入リストは、搬送残量の昇順にワークIDを保持している。
ワークを追加する場合は、全ワーク情報リストに追加されるが、投入可能領域内での追加位置、すなわち、搬送残量が異なるため、投入リストにおいて搬送残量の昇順にソートすることで、搬送残量の少ない順に搬送可能となる。図2および図3では、r1<r2<r3となるため、図11の投入リストTIW1では、ワークW1,W2,W3の順に記憶される。
<ストッパ判定の表現例>
つぎに、ストッパ判定の表現例について具体的に説明する。ここでは、まず、関節ストッパによるストッパ判定の表現例について説明する。
図12は、関節ストッパによるストッパ判定の表現例を示す説明図である。図12では、関節ストッパS13を例に挙げる。なお、コンベアCU1は駆動中であり、ワークW1,W2は、関節ストッパS13で停止させられているものとする。
(A)は、後続のワークW3が、コンベアCU1で搬送中の場合を示している。この状態から次の搬送量ΔL1分、搬送方向にワークW3が移動したときに、下記式(1)を満たす場合は、次状態でも、ワークW3が滞留ワーク列の最後尾となるワークW2の後端に到達していないこととなる。
r3−w3/2−ΔL1>d13+Δd13・・・(1)
(B)一方、上記式(1)が最初に満たさない次状態で、ワークW3が滞留ワーク列の最後尾となるワークW2の後端に到達することとなる。この場合、ワークW3の状態は、「搬送中」から「停止」に変更される。
(C)このあと、ストッパS13の滞留オフセット量Δd13が、(B)でのΔd13=w1+w2から、Δd13=w1+w2+w3に更新される。また、滞留ワークリストTK13も、(B)でのTK13={W1,W2}(滞留順)から、TK13={W1,W2,W3}に更新される。
図13は、図12の(A),(B)の状態での全ワーク情報リストTAW1とストッパリストTS1と滞留ワークリストTK13の記憶内容を示す説明図である。ストッパリストTS1については便宜上、ストッパS13のレコードのみ示している。
図14は、図12の(C)の状態での全ワーク情報リストTAW1とストッパリストTS1と滞留ワークリストTK13の記憶内容を示す説明図である。図12の(B)の状態から更新された箇所にはハッチングが施されている。このように滞留状態を表現することで、演算負荷が低減され、シミュレーションで要求されるレスポンス性能を満たすことができる。
<ワークの解放状態の表現例>
つぎに、ワークの解放状態の表現例について具体的に説明する。解放状態では、滞留ワーク列のあるワークがアーム301によりコンベアシステムC1から離脱される状態である。
図15は、ワークの解放状態の表現例を示す説明図である。図15では、関節ストッパS13を例に挙げる。なお、コンベアCU1は駆動中であり、ワークW1〜W5は、関節ストッパS13で停止させられている滞留ワーク列とする。
(A)では、ワークW1〜W5のストッパS13による滞留状態を示している。このとき、ワークW2がアーム301につかまれたとする。
(B)ワークW2は、アーム301につかまれて、滞留ワーク列から取り出される。この場合、ワークW2の状態は、「停止」から「離脱」に変更される。また、ワークW2の後続のワークW3〜W5の状態は、「停止」から「搬送中」に変更される。また、滞留ワークリストTK13は、ワークW1のみとなる。これにより、ワークW1がストッパS13で停止させられたままであり、ワークW3〜W5が搬送状態となる。
(C)ワークW3について、上記式(1)が最初に満たさない次状態で、ワークW3が滞留ワーク列の最後尾となるワークW2に到達することとなる。この場合、ワークW3の状態は、「搬送中」から「停止」に変更される。ワークW4,W5についても同様である。なお、ワークW4の場合、上記式(1)の「r3」を「r4」に、「w3」を「w4」にする。ワークW5の場合、上記式(1)の「r3」を「r5」に、「w3」を「w5」にする。
そして、ワークW4の状態も、「停止」状態のワークW3に到達することで「搬送中」から「停止」に変更される。ワークW5の状態も、「停止」状態のワークW4に到達することで「搬送中」から「停止」に変更される。また、滞留ワークリストTK13は、(B)の{W1}から{W1,W3,W4,W5}に更新される。
図16は、図15の(A)の状態での全ワーク情報リストTAW1とストッパリストTS1と滞留ワークリストTK13の記憶内容を示す説明図である。ストッパリストTS1については便宜上、ストッパS13のレコードのみ示している。
図17は、図15の(B)の状態での全ワーク情報リストTAW1とストッパリストTS1と滞留ワークリストTK13の記憶内容を示す説明図である。ストッパリストTS1については便宜上、ストッパS13のレコードのみ示している。図15の(A)の状態から更新された箇所にはハッチングが施されている。
図17では、図15の(A)の状態からワークW2が離脱したため、全ワーク情報リストTAW1において、ワークW2のコンベアID、搬送残量、搬送方向長がリセットされている。また、状態も「離脱」に変更される。これにともない、後続のワークW3〜W5の状態も「停止」から「搬送中」に変更される。また、ストッパリストTS1の滞留オフセット量もΔd13=w1に更新される。また、滞留ワークリストTK13からワークW2〜W5が削除される。
図18は、図15の(C)の状態での全ワーク情報リストTAW1とストッパリストTS1と滞留ワークリストTK13の記憶内容を示す説明図である。ストッパリストTS1については便宜上、ストッパS13のレコードのみ示している。図15の(B)の状態から更新された箇所にはハッチングが施されている。
図18では、図15の(B)でのワークW3〜W5の状態が「搬送中」から「停止」に変更される。これにともない、全ワーク情報リストTAW1においてワークW3〜W5の搬送残量r3〜r5は0になり、ストッパリストTS1の滞留オフセット量もΔd13=w1+w3+w4+w5に更新される。また、滞留ワークリストTK13にワークW3〜W5が追加される。このように解放状態を表現することで、演算負荷が低減され、シミュレーションで要求されるレスポンス性能を満たすことができる。
<対象ストッパの特定例>
つぎに、対象ストッパの特定例について説明する。対象ストッパとは、搬送中のワークごとに次に到来する規制状態のストッパであり、ストッパの種類(関節、排出)を問わない。関節ストッパの場合、関節ストッパの状態が、ワークと抵触する遮蔽範囲である場合に、規制状態となる。また、排出ストッパの場合、有効フラグが「TRUE」の場合に、規制状態となる。
図19は、対象ストッパの検索例を示す説明図である。図19では、コンベアCU1を例に挙げて説明する。(A)は、ストッパS12で滞留しているワークW1を示している。(A)では搬送中のワークが存在しないため、対象ストッパも特定されない。
(B)は、コンベアCU1で搬送中のワークW1を示している。対象ストッパを検索する場合は、排出端から最も離れているストッパ、すなわち、ストッパリストでの位置の値が最も大きいストッパから順次判断される。図19の場合、d13>d12>d11であるため、ストッパS13から判断される。
対象ストッパの特定は、候補となるストッパの位置の値とワークの搬送残量(から搬送方向長の半分を引いた量)との比較でおこなわれる。たとえば、ストッパS13の場合は、下記式(2)を満たすか否かで判断される。
d13<r1−w1/2・・・(2)
ストッパS13では上記式(2)が不成立であるため、つぎに位置の値d12が大きいストッパS12について判断される。ストッパS12の場合は、上記式(2)の「d13」を「d12」に変えるだけでよい。すなわち、ストッパS12の場合は、下記式(3)を満たすか否かで判断される。
d12<r1−w1/2・・・(3)
図19の場合は上記式(3)が成立するため、ワークW1の次に到来する規制状態のストッパはストッパS12となる。対象ストッパが特定されると、それ以降のストッパS11については検索されない。
図20は、図19の(A)の状態での全ワーク情報リストTAW1とストッパリストTS1と滞留ワークリストTK12の記憶内容を示す説明図である。全ワーク情報リストTAW1において、ワークW1の状態が「停止」であるため、対象ストッパの検索はおこなわれない。
図21は、図19の(B)の状態での全ワーク情報リストTAW1とストッパリストTS1の記憶内容を示す説明図である。全ワーク情報リストTAW1において、ワークW1の状態が「搬送中」であるため、対象ストッパの検索はおこなわれる。この場合、ストッパS10〜S13のうち、規制状態のストッパS11〜S13が検索対象となる。
このように、対象ストッパをワークごとに特定することで、図12に示したストッパ判定を対象ストッパで実行することができる。したがって、非対称ストッパとのストッパ判定を実行しないことになるため、演算負荷の低減化を図ることができる。
<溢れ判定>
つぎに、溢れ判定について説明する。溢れ判定とは、ワークが現在搬送中のコンベアから次段のコンベアに乗り移ることができるか否か、そして、乗り移ることができる/できない場合は、どのストッパで滞留させるべきか、を判定する処理である。
図22は、溢れ判定の第1の例を示す説明図である。図22では、コンベアCU1からコンベアCU2へ乗り移る際の溢れ判定を示している。(A1)では、ワークW1,W2は、コンベアCU2の関節ストッパS22で滞留している「停止」状態のワークであり、ワークW3は、コンベアCU1で「搬送中」のワークである。ストッパS22は、コンベアCU2において、コンベアCU2の排出端から最も離れた位置に設置された関節ストッパである。また、ストッパS22は、ワークW3の対象ストッパでもある。
また、Fは、コンベアCU1,CU2の境界から、コンベアCU2の排出端から最も離れた位置に設置された関節ストッパに滞留する滞留ワーク列の最後尾までの距離である。滞留ワーク列がない場合は、関節ストッパまでの距離である。(A1)の場合は、ストッパS22にワークW1,W2が滞留しているため、下記式(4)であらわされる。
F=(d22+Δd22)−LC2・・・(4)
そして、Fの絶対値がワークW3の搬送方向長w3の1/2以上である場合は、ワークW3は、コンベアCU2にあきスペースがあるため、コンベアCU2に乗り移ることができる。なお、搬送方向長w3の1/2としたのは、搬送方向長w3の半分となる部分でも、Fの絶対値以上であれば乗り移ることができるからである。なお、1/2に限らず、0よりも大きく1以下の値であればよい。なお、以降の説明では、1/2で重み付けした例を説明することとする。
(A2)は、コンベアCU2への乗り移り後の状態を示している。ワークW3はコンベアCU2に乗り移ると、滞留ワーク列{W1,W2}の最後尾のワークW2に到達する。この場合、図12に示したストッパ判定により、ワークW3が滞留ワーク列に含まれることとなる。
図23は、図22の(A1)の状態での全ワーク情報リストTAW1とストッパリストTS1,TS2と滞留ワークリストTK22の記憶内容を示す説明図である。ストッパリストTS1については便宜上、ストッパS10のレコードのみ示している。ストッパリストTS2については便宜上、ストッパS22のレコードのみ示している。
図24は、図22の(A2)の状態での全ワーク情報リストTAW1とストッパリストTS1,TS2と滞留ワークリストTK22の記憶内容を示す説明図である。図22の(A1)の状態から更新された箇所にはハッチングが施されている。全ワーク情報リストTAW1では、ワークW3が、コンベアCU2に乗り移っているため、ワークW3のコンベアIDが「CU1」から「CU2」に変更されている。また、状態もワークW2への到達により「停止」に変更されている。これにともない、ストッパリストTS2では、ストッパS22の滞留オフセット量Δd22が更新され、滞留ワークリストTK22にもワークW3が追加される。これにより、コンベアの乗り移りを単純な計算でリアルに再現することができる。
図25は、溢れ判定の第2の例を示す説明図である。図25では、図22の(A2)の状態から、あらたに、コンベアCU1からワークW4が搬送されてくる例を示している。ストッパS22は、ワークW4の対象ストッパとなる。
(B1)においても、図22の(A1)と同様、Fの絶対値がワークW4の搬送方向長w4の1/2以上である場合は、ワークW4は、コンベアCU2にあきスペースがあるため、コンベアCU2に乗り移ることができる。
(B2)は、コンベアCU2への乗り移り後の状態を示している。ワークW4はコンベアCU2に乗り移ると、滞留ワーク列{W1,W2,W3}の最後尾のワークW3に到達する。この場合、図12に示したストッパ判定により、ワークW4が滞留ワーク列に含まれることとなる。なお、(B2)では、ワークW4は、コンベアCU1,CU2の境界で滞留している。
図26は、図25の(B1)の状態での全ワーク情報リストTAW1とストッパリストTS1,TS2と滞留ワークリストTK22の記憶内容を示す説明図である。ストッパリストTS1については便宜上、ストッパS10のレコードのみ示している。ストッパリストTS2については便宜上、ストッパS22のレコードのみ示している。
図27は、図25の(B2)の状態での全ワーク情報リストTAW1とストッパリストTS1,TS2と滞留ワークリストTK22の記憶内容を示す説明図である。図25の(B1)の状態から更新された箇所にはハッチングが施されている。全ワーク情報リストTAW1では、ワークW4が、コンベアCU2に乗り移っているため、ワークW4のコンベアIDが「CU1」から「CU2」に変更されている。また、状態もワークW3への到達により「停止」に変更されている。これにともない、ストッパリストTS2では、ストッパS22の滞留オフセット量Δd22が更新され、滞留ワークリストTK22にもワークW4が追加される。これにより、コンベア間でまたがるような乗り移りを単純な計算でリアルに再現することができる。
図28は、溢れ判定の第3の例を示す説明図である。図28では、図25の(B2)の状態から、あらたに、コンベアCU1からワークW5が搬送されてくる例を示している。ストッパS22は、ワークW5の対象ストッパとなる。
(B3)では、ワークW4がコンベアCU1,CU2の境界で滞留しているため、Fの値がF>0となる。この場合、対象ストッパは、ストッパS22からストッパS10に変更される。
(B4)では、排出ストッパS10は規制状態(有効フラグ:「TRUE」)となるが、排出ストッパS10の設置位置で規制状態とすると、ワークW5が排出ストッパS10に到達した場合に、ワークW4とワークW5とが重なってしまうことになる。したがって、F>0で排出ストッパS10が対象ストッパになった場合には、排出ストッパS10の位置を滞留ワーク列{W1,W2,W3,W4}の最後尾であるワークW4の後端までシフトする。
(B4)において、点線のストッパは、シフト前の排出ストッパS10である。ワークW5は、シフト後の規制状態の排出ストッパS10の位置で停止させられる。したがって、ワークW5は、ストッパS22の滞留ワークリストTK22ではなく、排出ストッパS10の滞留ワークリストTK10に登録されることとなる。排出ストッパS10は描画されないため、ユーザから見れば、ワークW5はあたかも滞留ワーク列{W1,W2,W3,W4}により滞留させられたかのように見える。
図29は、図27の(B3)の状態での全ワーク情報リストTAW1とストッパリストTS1,TS2と滞留ワークリストTK10,TK22の記憶内容を示す説明図である。ストッパリストTS1については便宜上、ストッパS10のレコードのみ示している。ストッパリストTS2については便宜上、ストッパS22のレコードのみ示している。
図30は、図27の(B4)の状態での全ワーク情報リストTAW1とストッパリストTS1,TS2と滞留ワークリストTK10,TK22の記憶内容を示す説明図である。図27の(B3)の状態から更新された箇所にはハッチングが施されている。全ワーク情報リストTAW1では、ワークW5が、コンベアCU2に乗り移らないため、ワークW4のコンベアIDは「CU1」のままである。
しかし、ワークW5は、排出ストッパS10で停止させられるため、状態は「搬送中」から「停止」に変更される。また、ストッパリストTS1の排出ストッパS10についても、位置d10がd10=0からd10=F(>0)に更新される。また、有効フラグも「TRUE」に更新される。そして、滞留ワークリストTK10に、ワークW5が追加される。これにより、コンベア間でまたがるような乗り移りを単純な計算でリアルに再現することができる。
なお、このあと、ストッパS22が非規制状態となってワークW1〜W4が搬送されると、Fの値がF≦0となるため、排出ストッパS10も非規制状態(有効フラグ:FALSE)となり、図22の(A1)と同様、ワークW5は、搬送されてコンベアCU2に乗り移ることとなる。この場合、排出ストッパS10は元の位置(コンベアCU1,CU2の境界。d10=0)に戻る。
図31は、溢れ判定の第4の例を示す説明図である。図31では、図22の(A2)の状態から、あらたに、コンベアCU1からワークW4が搬送されてくる例を示している。ストッパS22は、ワークW4の対象ストッパとなる。
(C1)においても、図22の(A1)と同様、Fの絶対値がワークW4の搬送方向長w4の1/2以上である場合は、ワークW4は、コンベアCU2にあきスペースがあるため、コンベアCU2に乗り移ることができるが、本例では、w4/2>|F|となり、乗り移り不可とする。
ワークW4はコンベアCU2への乗り移り不可と判断されたため、排出ストッパS10を規制状態にして停止させる必要がある。しかし、排出ストッパS10で停止させると、ワークW3とワークW4との間にスペースができてしまう。排出ストッパS10は描画されないため、ストッパがないのにワークW4がワークW3に到達していないと、不自然なシミュレーションとなる。したがって、このような場合は、排出ストッパS10の位置を滞留ワーク列{W1,W2,W3}の最後尾であるワークW3の後端までシフトする。
(C2)において、点線のストッパは、シフト前の排出ストッパS10である。ワークW4は、シフト後の規制状態の排出ストッパS10の位置で停止させられる。したがって、ワークW4は、ストッパS22の滞留ワークリストTK22ではなく、排出ストッパS10の滞留ワークリストTK10に登録されることとなる。排出ストッパS10は描画されないため、ユーザから見れば、ワークW4はあたかも滞留ワーク列{W1,W2,W3}により滞留させられたかのように見える。
図32は、図31の(C1)の状態での全ワーク情報リストTAW1とストッパリストTS1,TS2と滞留ワークリストTK10,TK22の記憶内容を示す説明図である。ストッパリストTS1については便宜上、ストッパS10のレコードのみ示している。ストッパリストTS2については便宜上、ストッパS22のレコードのみ示している。
図33は、図31の(C2)の状態での全ワーク情報リストTAW1とストッパリストTS1,TS2と滞留ワークリストTK10,TK22の記憶内容を示す説明図である。図31の(C1)の状態から更新された箇所にはハッチングが施されている。全ワーク情報リストTAW1では、ワークW4が、コンベアCU2に乗り移らないため、ワークW4のコンベアIDは「CU1」のままである。
しかし、ワークW4は、排出ストッパS10で停止させられるため、状態は「搬送中」から「停止」に変更される。また、ストッパリストTS1の排出ストッパS10についても、位置d10がd10=0からd10=F(≦0)に更新される。また、有効フラグも「TRUE」に更新される。そして、滞留ワークリストTK10に、ワークW4が追加される。これにより、コンベア間でまたがるような乗り移りについて、乗り移り不可と判定された場合であっても、単純な計算でリアルに再現することができる。
図34は、溢れ判定の第5の例を示す説明図である。図34では、図31の(C2)の状態から、あらたに、コンベアCU1からワークW5が搬送されてくる例を示している。本例では、排出ストッパS10がワークW5の対象ストッパとなる。
(C3)では、図12に示したようなストッパ判定が実行される。(C3)の状態から次の搬送量ΔL1分、搬送方向にワークW5が移動したときに、下記式(5)を満たす場合は、次状態でも、ワークW5が、排出ストッパS10の滞留ワーク列{W4}の最後尾となるワークW4の後端に到達していないこととなる。
r5−w5/2−ΔL1>d10+Δd10・・・(5)
(C4)一方、上記式(5)が最初に満たさない次状態で、ワークW5が、排出ストッパS10の滞留ワーク列{W4}の最後尾となるワークW4の後端に到達することとなる。この場合、ワークW5の状態は、「搬送中」から「停止」に変更される。
このあと、排出ストッパS10の滞留オフセット量Δd10が、(C3)でのΔd10=w4から、Δd10=w4+w5に更新される。また、滞留ワークリストTK10も、(C3)でのTK10={W4}(滞留順)から、TK10={W4,W5}に更新される。
図35は、図34の(C3)の状態での全ワーク情報リストTAW1とストッパリストTS1,TS2と滞留ワークリストTK10,TK22の記憶内容を示す説明図である。ストッパリストTS1については便宜上、ストッパS10のレコードのみ示している。
図36は、図34の(C4)の状態での全ワーク情報リストTAW1とストッパリストTS1,TS2と滞留ワークリストTK10,TK22の記憶内容を示す説明図である。図34の(B3)の状態から更新された箇所にはハッチングが施されている。全ワーク情報リストTAW1において、ワークW5は、排出ストッパS10の滞留ワーク列{W4}で停止させられるため、状態は「搬送中」から「停止」に変更される。また、滞留ワークリストTK10に、ワークW5が追加され、滞留オフセット量Δd10もΔd10=w4からΔd10=w4+w5に更新される。これにより、コンベア間でまたがるような乗り移りについて、乗り移り不可と判定されたときに後続のワークが到来した場合であっても、単純な計算でリアルに再現することができる。
(模擬装置のハードウェア構成例)
図37は、実施の形態にかかる模擬装置のハードウェア構成例を示すブロック図である。図37において、模擬装置は、CPU(Central Processing Unit)3701と、ROM(Read Only Memory)3702と、RAM(Random Access Memory)3703と、磁気ディスクドライブ3704と、磁気ディスク3705と、光ディスクドライブ3706と、光ディスク3707と、ディスプレイ3708と、I/F(Interface)3709と、キーボード3710と、マウス3711と、スキャナ3712と、プリンタ3713と、を備えている。また、各構成部はバス3700によってそれぞれ接続されている。
ここで、CPU3701は、模擬装置の全体の制御を司る。ROM3702は、ブートプログラムなどのプログラムを記憶している。RAM3703は、CPU3701のワークエリアとして使用される。磁気ディスクドライブ3704は、CPU3701の制御にしたがって磁気ディスク3705に対するデータのリード/ライトを制御する。磁気ディスク3705は、磁気ディスクドライブ3704の制御で書き込まれたデータを記憶する。
光ディスクドライブ3706は、CPU3701の制御にしたがって光ディスク3707に対するデータのリード/ライトを制御する。光ディスク3707は、光ディスクドライブ3706の制御で書き込まれたデータを記憶したり、光ディスク3707に記憶されたデータをコンピュータに読み取らせたりする。
ディスプレイ3708は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ3708は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
インターフェース(以下、「I/F」と略する。)3709は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク3714に接続され、このネットワーク3714を介して他の装置に接続される。そして、I/F3709は、ネットワーク3714と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F3709には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード3710は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス3711は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ3712は、画像を光学的に読み取り、模擬装置内に画像データを取り込む。なお、スキャナ3712は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ3713は、画像データや文書データを印刷する。プリンタ3713には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
(模擬装置の機能的構成例)
図38は、実施の形態にかかる模擬装置の機能的構成例を示すブロック図である。模擬装置3800は、データベース(DB)3801と、表示部3802と、制御部3803と、特定部3804と、検出部3805と、設定部3806と、更新部3807と、取得部3809と、算出部3810と、を備えている。制御部3803〜算出部3810は、具体的には、たとえば、図37に示したROM3702、RAM3703、磁気ディスク3705、光ディスク3707などの記憶装置に記憶されたプログラムをCPU3701に実行させることにより、または、I/F3709により、その機能を実現する。
DB3801は、図2および図3に示したワークストッパモデルや図4〜図11に示した各種テーブルを記憶する。DB3801は、具体的には、たとえば、図37に示したROM3702、RAM3703、磁気ディスク3705、光ディスク3707などの記憶装置により、その機能を実現する。
表示部3802は、図2および図3に示したワークストッパモデルや、ワークストッパモデルのシミュレーション内容を表示する。表示部3802は、具体的には、たとえば、図37に示したディスプレイ3808により、その機能を実現する。
制御部3803は、図2および図3に示したワークストッパモデルの設定やシミュレーションを実行する機能を有する。具体的には、たとえば、上述した、ユーザ側で作成した制御プログラムをCPU3701に実行させることにより、その機能を実現する。
特定部3804は、ストッパ群のうち、ワーク群内の搬送状態の対象ワークが到来する規制状態の対象ストッパを特定する。具体的には、たとえば、図19〜図21に示したように、特定部3804は、対象となるワークについて、当該対象ワークが存在するコンベアに設置されている規制状態のストッパ群を順次検索することで対象ストッパを特定する。このように、次に到来する対象ストッパを絞り込むことで、通過したストッパやまだ到来しないストッパについてのストッパ判定を実行する必要がなく、演算負荷の低減化を図ることができる。
検出部3805は、特定部3804によって特定された対象ストッパの位置に基づく停止位置に、対象ワークが到達したことを検出する。対象ストッパの位置に基づく停止位置とは、対象ストッパに滞留ワーク列がない場合は、対象ストッパの設置位置となる。また、滞留ワーク列がある場合は、滞留ワーク列の最後尾のワークの後端となる。また、対象ストッパが排出ストッパの場合は、図28や図32に示したように、シフト後の排出ストッパの位置となる。また、シフト後の排出ストッパに滞留ワーク列が存在する場合は、図34に示したように、滞留ワーク列の最後尾のワークの後端となる。
また、検出部3805は、具体的には、たとえば、図12〜図14に示したストッパ判定や図15〜図18に示したワーク解放処理において、上記式(1)〜(3)のような計算式の計算結果により、対象ワークが到達したことを検出する。このような検出により演算負荷の低減化を図ることができ、シミュレーションで要求されるレスポンス性能を満たすことができる。
設定部3806は、検出部3805によって停止位置への到達が検出された対象ワークの状態を、搬送状態から停止状態に変更し、かつ、対象ワークを対象ストッパによる滞留ワーク列として記憶部に追加する。具体的には、たとえば、設定部3806は、DB3801にアクセスして、全ワーク情報リストの対象ワークのレコードの状態項目を、「搬送中」から「停止」に変更する。また、設定部3806は、DB3801にアクセスして、対象ストッパの滞留ワークリストに対象ワークのワークIDを滞留順に追加する。
また、設定部3806は、図15に示したように、制御部3803が滞留ワーク列の中から任意のワークを離脱させた場合、DB3801にアクセスして、全ワーク情報リストの離脱させたワークのレコードの状態項目を、「停止」から「離脱」に変更する。また、この場合、設定部3806は、離脱させたワークの後続滞留ワーク列の各々のワークのレコードの状態項目を、「停止」から「搬送中」に変更する。これにより、ワークが離脱したときの搬送状態を、単純な状態変化でリアルに再現することができる。
更新部3807は、設定部3806によって停止状態に変更された場合、停止位置を、ストッパの位置から設定部3806での設定後における滞留ワーク列の搬送方向長分手前の位置に更新する。具体的には、たとえば、更新部3807は、ワークが滞留する都度、ワークの搬送方向長分、滞留オフセット量を更新する。たとえば、ストッパS13の滞留オフセット量Δd13は、初期状態では滞留ワーク列がないため、Δd13=0となる。したがって、ストッパS13の位置d13の値がそのまま停止位置となる。そして、ワークW1がストッパS13に滞留すると、滞留オフセット量Δd13は、Δd13=w1となり、停止位置もd13+Δd13=d13+w1となる。
また、ワークW2がワークW1の後端に到達すると、滞留オフセット量Δd13は、Δd13=w1+w2となり、停止位置もd13+Δd13=d13+w1+w2となる。さらに、図12に示したように、ワークW3がワークW2の後端に到達すると、滞留オフセット量Δd13は、Δd13=w1+w2+w3となり、停止位置もd13+Δd13=d13+w1+w2+w3となる。
逆に、制御部3803により、滞留ワーク列から任意のワークが離脱させられると、更新部3807は、離脱させたワークの先行滞留ワーク列の最後尾のワークの後端を停止位置として更新する。たとえば、図15において、滞留ワーク列{W1,W2,W3,W4,W5}からワークW2が離脱させられると、更新部3807は、停止位置を、ワークW2離脱前の滞留ワーク列{W1,W2,W3,W4,W5}の最後尾のワークW5の後端から、ワークW2離脱後の滞留ワーク列{W1}の最後尾のワークW1の後端に更新する。このように、更新部3807は、滞留ワーク列の有無や滞留ワーク列内のワークの搬送方向長に応じて停止位置を動的に変化させる。これにより、簡単な演算で動的に変化する滞留状態を表現することができる。
判断部3808は、対象ワークの搬送方向長と、対象ワークと対象ストッパの間に対象ワークが位置する第1の搬送装置と対象ストッパが位置する第2の搬送装置との間の境界から停止位置までの距離と、に基づいて、対象ワークが第1の搬送装置から第2の搬送装置へ乗り移り可能か否かを判断する。第1の搬送装置とは、対象ワークが存在するコンベアであり、第2の搬送装置とは、対象ワークが存在するコンベアの次段のコンベアである。判断部3808では、図22、図25、図28、図31に示したような乗り移りの判断を実行する。
乗り移り可能と判断された場合は、検出部3805が、停止位置に対象ワークが到達したことを検出することとなる。
一方、乗り移り不可と判断された場合は、設定部3806は、両コンベアの境界に位置する排出ストッパを規制状態にする。また、更新部3807は、設定部3806によって規制状態に設定された特定のストッパの位置を、境界から対象ストッパに滞留している滞留ワーク列の最後尾に更新する。具体的には、たとえば、更新部3807は、規制状態にした排出ストッパの位置を、境界から対象ストッパに滞留している滞留ワーク列の最後尾のワークの後端にシフトする。より具体的には、図28の(B4)の状態や図31の(C2)の状態に更新する。
そして、設定部3806は、シフト後の排出ストッパの停止位置に対象ワークが到達したときに、対象ワークの状態を「搬送中」から「停止」に変更することになる。これにより、図28に示したように、次段のコンベアに乗り移れない場合であっても、単純な計算でリアルに再現することができる。また、図31に示したように、コンベア間でまたがるような乗り移りについて、乗り移り不可と判定された場合であっても、単純な計算でリアルに再現することができる。
取得部3809は、対象ワークの姿勢を取得する。対象ワークの姿勢は、既存技術により一定周期で制御部3803から取得する。なお取得タイミングは、コンベアの乗り移り時にするなどして、演算負荷の増大を抑制することとしてもよい。
算出部3810は、取得部3809によって取得された対象ワークの姿勢に応じて、対象ワークの搬送方向長を算出する。ここで算出例について説明する。
図39は、ワークWの一例を示す説明図である。ここで、ワークはローカル座標系で形状情報を有する。図39では、ワークWの形状情報として、ローカル座標系のx方向長をa、y方向長をb、z方向長をcとする。
図40〜図42は、ワークWをローカル座標系からグローバル座標系に置いた場合の姿勢を示す説明図である。グローバル座標系とは、ワークストッパモデルの座標系である。図40は、ローカル座標系のx軸とグローバル座標系のX軸、ローカル座標系のy軸とグローバル座標系のY軸、ローカル座標系のz軸とグローバル座標系のZ軸が一致したときの例である。図40の場合は、搬送方向長wはw=aとなる。
図41は、ローカル座標系のx軸とグローバル座標系のZ軸、ローカル座標系のy軸とグローバル座標系のY軸、ローカル座標系のz軸とグローバル座標系のX軸が一致したときの例である。図41の場合は、搬送方向長wはw=cとなる。
図42は、ローカル座標系のy軸とグローバル座標系のY軸が一致したときの例である。図42の場合は、搬送方向長wはw=√(a2+c2)となる。いずれにしても算出された搬送方向長は、算出部3810により全ワーク情報リストに反映される。なお、算出部3810を用いずに、搬送方向長を固定長にしてもよい。
<シミュレーション処理手順>
つぎに、実施の形態にかかる模擬装置によるシミュレーション処理手順について説明する。
図43は、実施の形態にかかる模擬装置によるワーク情報作成処理手順を示すフローチャートである。まず、模擬装置は、ワーク情報が作成されたか否かを判断する(ステップS4301)。ワーク情報とは、全ワーク情報リストの各項目に対応する情報である。作成されていない場合(ステップS4301:No)、ワーク情報作成処理を終了する。一方、ワーク情報が作成された場合(ステップS4301:Yes)、模擬装置は、作成されたワーク情報を、全ワーク情報リストに追加する(ステップS4302)。このとき、追加されたワークの状態は「投入」となる。
また、模擬装置は、「投入」状態のワーク群を搬送残量の昇順でソートする(ステップS4303)。そして、模擬装置は、ソートされた「投入」状態のワーク群を、ソート後の配列で投入リストに追加する(ステップS4304)。その後、ステップS4301に戻る。これにより、コンベアの排出端に近いワークから搬送することができる。
図44は、実施の形態にかかる模擬装置によるワーク投入処理手順を示すフローチャートである。まず、模擬装置は、投入リストにワークIDがあるか否かを判断する(ステップS4401)。ワークIDがない場合(ステップS4401:No)、ワーク投入処理を終了する。一方、ワークIDがある場合(ステップS4401:Yes)、模擬装置は、搬送残量の昇順で最上位のワークを選択する(ステップS4402)。このとき、選択されたワークIDは、投入リストから削除される。
つぎに、模擬装置は、全ワーク情報リストでの選択ワークの状態を「投入」から「搬送中」に更新する(ステップS4403)。そして、投入先のコンベアの搬送ワークリストに選択ワークのワークIDを追加する(ステップS4404)。そして、模擬装置は、投入先コンベアでの搬送を開始する(ステップS4405)。その後、ステップS4401に戻る。これにより、投入されたワークを順次搬送するシミュレーションを実行することができる。
図45は、実施の形態にかかる模擬装置による搬送処理手順を示すフローチャートである。まず、模擬装置は、全ワーク情報リストのインデックス番号iをi=1とし(ステップS4501)、i>nであるか否かを判断する(ステップS4502)。nは、ワークの総数である。
i>nでない場合(ステップS4502:No)、模擬装置は、ワークWiの状態が「投入」であるか否かを判断する(ステップS4503)。「投入」でない場合(ステップS4503:No)、「離脱」であるか否かを判断する(ステップS4504)。「離脱」でもない場合(ステップS4504:No)、ワーク搬送処理を実行し(ステップS4505)、実行後にステップS4506に移行する。
また、ステップS4503において「投入」である場合(ステップS4503:Yes)、または、ステップS4504において「離脱」である場合(ステップS4504:Yes)、ワーク搬送処理(ステップS4505)を実行することなく、ステップS4506に移行する。ステップS4506では、模擬装置は、インデックス番号iをインクリメントして(ステップS4506)、ステップS4502に戻る。ステップS4502において、i>nの場合(ステップS4502:Yes)、搬送処理を終了する。
これにより、ワークの状態が「搬送中」または「停止」となっているワークについてワーク搬送処理(ステップS4505)を実行することができる。
図46は、図45に示したワーク搬送処理(ステップS4505)の詳細な処理手順を示すフローチャート(その1)である。まず、模擬装置は、全ワーク情報リストTAW1を参照することで、ワークWiの現在のコンベアCUxを特定する(ステップS4601)。つぎに、模擬装置は、特定されたコンベアCUxが最終端のコンベア(図2の場合はコンベアCU4)であるか否かを判断する(ステップS4602)。最終端である場合(ステップS4602:Yes)、図47のステップS4701に移行する。
一方、最終端でない場合(ステップS4602:No)、模擬装置は、全ワーク情報リストTAW1を参照することで、ワークWiがコンベアCUxで先頭であるか否かを判断する(ステップS4603)。先頭である場合(ステップS4603:Yes)、模擬装置は、ワークWiの状態が「搬送中」であるか否かを判断する(ステップS4604)。「搬送中」である場合(ステップS4604:Yes)、模擬装置は、排出ストッパの状態更新処理を実行して(ステップS4605)、図47のステップS4701に移行する。一方、ステップS4603で先頭でない場合(ステップS4603:No)、または、ステップS4604で「搬送中」でない場合(ステップS4604:No)、排出ストッパの状態更新処理(ステップS4605)を実行することなく、図47のステップS4701に移行する。
図47は、図45に示したワーク搬送処理(ステップS4505)の詳細な処理手順を示すフローチャート(その2)である。模擬装置は、ワークWiの状態が「搬送中」であるか「停止」であるかを判断する(ステップS4604)。「停止」の場合(ステップS4701:停止)、図48のステップS4801に移行する。一方、「搬送中」の場合(ステップS4701:搬送中)、ワークWiが存在するコンベアCUx以降のストッパのインデックス番号jをj=1とする(ステップS4702)。インデックス番号jは、コンベアの排出端から最も離れたストッパから割り振られる。模擬装置は、ワークWiがストッパSjを通過したか否かを判断する(ステップS4703)。
ストッパSjを通過している場合(ステップS4703:Yes)、模擬装置は、jをインクリメントして(ステップS4704)、j>mか否かを判断する(ステップS4705)。mは、コンベアCUx以降のストッパの総数である。j>mでない場合(ステップS:No)、ステップS4703に戻る。一方、j>mである場合(ステップS4705:Yes)、ステップS4506に移行する。
また、ステップS4703において、ストッパSjを通過していない場合(ステップS4703:No)、模擬装置は、ストッパSjが作動条件が成立しているか否かを判断する(ステップS4706)。作動条件とは、関節ストッパであればワークWiと遮蔽範囲とが抵触することである。また、排出ストッパであれば有効フラグ:TRUEの場合である。すなわち、規制状態か否かを判断する。
作動条件不成立の場合(ステップS4706:No)、ステップS4704に移行する。一方、作動条件成立の場合(ステップS4706:Yes)、模擬装置は、到達条件が成立しているか否かを判断する(ステップS4707)。到達条件とは、上記式(1)〜(3)に示したようなワークWiとストッパSjとで決まる条件式である。到達条件不成立の場合(ステップS4707:No)、まだ到達しないこととなり、ステップS4506に移行する。
一方、到達条件成立の場合(ステップS4707:Yes)、模擬装置は、ストッパSjでの停止設定処理を実行する(ステップS4708)。そして、模擬装置は、搬送残量riをワーク搬送量ΔL分減算し(ステップS4709)、ワークWiの状態を、「搬送中」から「停止」に更新する(ステップS4710)。そして、ステップS4506に移行する。
図48は、図45に示したワーク搬送処理(ステップS4505)の詳細な処理手順を示すフローチャート(その3)である。模擬装置は、離脱指示があるか否かを判断する(ステップS4801)。離脱指示がない場合(ステップS4801:No)、ワークWiを停止させているストッパSjを特定する(ステップS4802)。そして、模擬装置は、ステップS4706と同様、ストッパSiの作動条件が成立するか否かを判断する(ステップS4803)。作動条件成立の場合(ステップS4803:Yes)、停止状態が維持されるため、ステップS4506に移行する。
一方、作動条件不成立の場合(ステップS4803:No)、ストッパSjの解除処理を実行する(ステップS4804)。ストッパSjの解除処理(ステップS4804)、ストッパSjの規制が解除されるため、模擬装置は、ワークWiの状態を、「停止」から「搬送中」に更新する(ステップS4805)。このあと、ステップS4506に移行する。
また、ステップS4801において、離脱指示があった場合(ステップS4801:Yes)、模擬装置は、ストッパSjの解除処理を実行する(ステップS4806)。そして、模擬装置は、コンベアCUxの搬送ワークリストからワークWiを削除する(ステップS4807)。つぎに、模擬装置は、ワークWiの状態を、「停止」から「離脱」に更新する(ステップS4808)。
そして、模擬装置は、離脱させたワークWiがストッパSjによる滞留ワーク列にあったワークであるか否かを判断する(ステップS4809)。滞留ワーク列にあった場合(ステップS4809:Yes)、模擬装置は、滞留ワーク列内のワークWi以降の後続滞留ワーク列の各ワークの状態を、「停止」から「搬送中」に更新する(ステップS4810)。そして、ステップS4506に移行する。一方、滞留ワーク列になかった場合(ステップS4809:No)、ステップS4506に移行する。
図49は、図46に示した排出ストッパの状態更新処理(ステップS4605)の詳細な処理手順を示すフローチャートである。まず、模擬装置は、次段のコンベアCUyの最大溢れ量Fを算出する(ステップS4901)。そして、模擬装置は、F>0であるか否かを判断する。F>0である場合(ステップS4902:Yes)、模擬装置は、排出ストッパの有効フラグを有効設定(TRUE)にする(ステップS4903)。そして、模擬装置は、排出ストッパの位置を、ストッパSjによる滞留ワーク列の最後尾のワークの後端に設定する(ステップS4904)。そして、ステップS4606に移行する。
一方、ステップS4902において、F>0でない場合(ステップS4902:No)、模擬装置は、コンベアの乗り移り条件を満たすか否かを判断する(ステップS4905)。乗り移り条件を満たさない場合(ステップS4905:No)、ステップS4903に移行する。一方、乗り移り条件を満たす場合(ステップS4905:Yes)、模擬装置は、排出ストッパを無効設定する(ステップS4906)。すなわち、有効フラグを「FALSE」に設定する。そして、排出ストッパの滞留ワークリストを解放する(ステップS4907)。すなわち、排出ストッパの滞留ワークリストを空にする。そして、ステップS4606に移行する。
図50は、図47に示したストッパSjでの停止設定処理(ステップS4708)の詳細な処理手順を示すフローチャートである。まず、模擬装置は、ストッパSjの滞留オフセット量ΔdにワークWiの搬送方向長wiを加算する(ステップS5001)。つぎに、模擬装置は、ストッパSjの滞留ワークリストにワークWiを追加する(ステップS5002)。そして、ステップS4709に移行する。
図51は、図48に示したストッパSjの解除処理(ステップS4804、S4806)の詳細な処理手順を示すフローチャートである。まず、模擬装置は、ストッパSjの滞留オフセット量ΔdからワークWiの搬送方向長wiを減算する(ステップS5101)。つぎに、模擬装置は、ストッパSjの滞留ワークリストからワークWiのワークIDを削除する(ステップS5102)。そして、ステップS4805(またはS4807)に移行する。
このように、本実施の形態によれば、単純な状態更新によりワークが順次滞留していく状態を表現することができるため、演算負荷の低減化を図りつつ、ワーク搬送の再現性の向上を図ることができる。また、特定部3804により、対象ストッパを絞り込むことにより、未通過の最寄のストッパについて演算処理をおこなえばよいため、演算負荷の低減化を図ることができる。
ワークが滞留ワーク列から離脱する場合も、離脱ワークの後続の滞留ワーク列の状態を更新することで、特殊な搬送状態を再現できるため、演算負荷の低減化を図りつつ、ワーク搬送の再現性の向上を図ることができる。
また、コンベア間を乗り移る場合、次段のコンベアでの滞留ワーク列の長さを考慮して乗り移ることができるか否かを判断することができる。したがって、乗り移ることができた場合は、滞留ワーク列の最後尾で停止させて滞留状態を表現することができる。また、乗り移ることができない場合、排出ストッパの位置をシフトすることで、滞留ワーク列との重畳状態や離間状態を防止することができる。
したがって、不自然なシミュレーションを防止することができ、コンベア間でのワーク搬送の再現性の向上を図ることができる。この排出ストッパは、関節ストッパとは異なり、ユーザが意図していないストッパであり、描画されないため、ユーザは違和感なく、シミュレーションの状態を確認することができる。以上のことから、本実施の形態によれば、演算負荷を低下させつつシミュレーションによる模擬精度の向上を図ることができる。