AGV処理フローテンプレートの使用
概要と概念
AGVシミュレーションを簡単にするために、FlexSimにはAGVシミュレーションプロジェクトで使用可能な事前に構築されたAGV処理フローテンプレートがあります。この処理フローテンプレートには、ほとんどではないが多くのAGVシステムのシミュレーションを比較的容易にする、事前に構築された高度なロジックが含まれています。
このトピックでは、タスクシーケンスロジックの構築に関連付けられたさまざまな概念を取り上げます。そのため、このトピックを先に進める前に、タスクシーケンスロジックに関する主要な概念を確認しておくことをお勧めします。
AGV処理フローテンプレートを設定する
必要に応じて、標準ロジックのみを使用してAGVネットワークを設定して使用できます。ただし、より複雑なAGVシミュレーションプロジェクトでは、AGV処理フローテンプレートを使用すると利点が得られます。
AGV処理フローテンプレートを設定するには:
- ツールバーで、[処理フロー]ボタンをクリックして、メニューを開きます。[タスク実行者処理フローを追加]をポイントし、[AGV]を選択して新しい処理フローテンプレートを作成します。
- 新しく作成された処理フローで、何も選択されないように空白の領域をクリックします。[クイックプロパティ]の[処理フローインスタンス]グループで、[エンティティの追加 (インスタンス)]ボックスを見つけます。このボックスの横にある[サンプラー]ボタン
をクリックして、サンプリングモードに入ります。
- 3DモデルでAGVをサンプリングします。これで[エンティティの追加]ボックスに表示されるようになります。
- 必要に応じて前の手順を繰り返し、さらにAGVを追加します。
処理フローを設定したら、いくつかの追加の手順を実行する必要があります。これらは、AGV処理フローテンプレート自体に記載されているため、その手順に従うことができます。
AGV処理フローテンプレートの大部分が、説明されているロジックの横に自己文書化されています。この目的は、読者が処理フローの実際の働きをアクティビティ単位で深く理解し、必要に応じて、処理フローを変更できるようにすることです。
AGV処理フローテンプレートでAGV動作を駆動する方法
AGVは、本質的に、AGVパスネットワークに接続されたタスク実行者です。したがって、すべての移動タスクがAGV移動ネットワークを介して実行されます。前に説明したタスクロジックのトピックに関連して、タスク実行者をAGVネットワークに接続する場合は、その動作の輸送または移動の側面を定義することになります。
AGVネットワークへのタスク実行者の接続
輸送または移動 | タスク実行者をどのように移動させるか? AGVネットワークを介して。 |
---|
または、AGV処理フローテンプレートをAGVに追加する場合は、AGVのタスクシーケンス生成とジョブディスパッチングの両方の動作を定義することになります。
AGV処理フローテンプレートへのタスク実行者の接続
タスクシーケンス生成 | タスクシーケンスをどのように定義するか? AGV処理フローがタスクシーケンスを生成します。 |
---|
ジョブディスパッチング | 誰がまたは何がどんなジョブを実行するか? AGV処理フローがディスパッチングを処理します。 |
---|
AGV処理フローテンプレートを使用している場合は、タスク実行者ロジックのアイテムフローとルーティングの側面のほとんどがユーザーに任されます。この側面は、別の処理フローを使用したりすることによって、固定リソースの接続を通して定義できます。
アイテムフローとルーティング | アイテムをどこに移動させる必要があるか? ほとんどがユーザーに任されます。 |
---|
タスクシーケンス生成
タスクシーケンス生成 | タスクシーケンスをどのように定義するか? AGV処理フローがタスクシーケンスを生成します。 |
---|
AGV処理フローテンプレートは、追加されたAGVのすべてのタスクシーケンス生成を処理します。
パーキングと有効化
シミュレーションが開始すると、AGVがリセットコントロールポイントに接続されている駐車場に自動的に送られます。その後は、「有効化」されるまで待機します。有効化は、新しいジョブ(輸送する必要のあるアイテムなど)が到着したときに発生します。
作業を検索ループ
有効化されると、AGVは「作業を検索」ポイントのループの周りに送られます。これは、ループ内でまとめて"NextLookForWork"コントロールポイント接続に接続されるコントロールポイントのセットです。作業ポイントのそれぞれが、AGVがその場所でピックアップする必要のあるアイテムが存在するかどうかを確認しに行く場所です。ピックアップするアイテムが存在しない場合は、AGVが次の作業を検索ポイントに進みます。
ジョブディスパッチング
ジョブディスパッチング | 誰がまたは何がどんなジョブを実行するか? AGV処理フローがディスパッチングを処理します。 |
---|
AGV処理フローテンプレートを使用している場合は、ジョブディスパッチングロジックが、コントロールポイント、AGV処理フローテンプレート、およびAGVWorkという名前のグローバルリストの組み合わせによって処理されます(このグローバルリストは、AGV処理フローテンプレートが使用されるたびに自動的に作成されます)。固定リソースがフローアイテムのAGV輸送をリクエストする必要がある場合は、それがアイテムをAGVWorkグローバルリストにプッシュします。ここでは、リスト上にプッシュされるアイテムを「ジョブ」と表現します。処理フローテンプレートは、すぐにリストからジョブをプルして、そのアイテムの位置を割り出し、それを作業を検索場所で分割された別の内部リストにプッシュします。こうして、AGVがこれらの場所に到着すると、その場所のパーティションからプルしてどの作業が存在するかを確認します。
留意すべき重要な点として、ジョブディスパッチングは3Dシミュレーションモデル内のAGVの位置によってほぼ決定されます。AGVはコントロールポイントを通過する際に、ロードするアイテムなど利用可能なタスクがあるかを確認します。作業するタスクがあれば作業を開始し、適切なコントロールポイントへと移動して、フローアイテムをロードまたはアンロードします。
ディスパッチング決定 | |
---|---|
リソース選択 | AGV処理フローテンプレートは、即時リソース選択を行いません。つまり、新しいジョブが到着する(アイテムがAGVWorkリストにプッシュされる)と、そのジョブはすぐにはリソースに割り当てられません。代わりに、AGVがその場所に到着するまで待機します。こうして、リソース選択が最初にピックアップ場所に到着したAGVによって決定されます。これは、一般的に、ジョブがそれに最も近いAGVによってピックアップされることを意味します。 この遅延リソース選択は、ジョブの場所に近いアイテムをドロップオフするAGVが存在する可能性があるが、ジョブが到着した後であるため、メリットがあります。ロジックに即時実行リソース選択が含まれている場合は、AGVがその時間にビジーで、ジョブを最適ではないAGVにディスパッチしたことになります。 |
ジョブ選択 | ジョブ選択は、AGVが作業を検索場所に到着したときに実行されます。そこでは、その場所で実施すべき作業が存在するかどうかを確認しようとします。これは、その場所に関連付けられた内部リストのパーティションからプルすることによって行われます。AGV処理フローの[ここにロードするアイテムはあるか?]アクティビティのプルクエリをカスタマイズすることによって優先順位付けやフィルタリングなどを定義できます。 ピックアップポイントのどこにもロード可能なアイテムが存在しない場合は、AGVが次の作業を検索場所に移動するだけです。 |
いずれのピックアップポイントでもロードできるアイテムがなかった場合、AGVはピックアップエリアに入らず、次のエリアに移動します。
アイテムフローとルーティング
アイテムフローとルーティング | アイテムをどこに移動させる必要があるか? ほとんどがユーザーに任されます。 |
---|
アイテムフローとルーティングは、主に、ユーザーが処理します。固定リソースをいつものように使用することも、独自の処理フロー経由のルーティングを定義することもできます。つまり、標準のシミュレーションモデルで3Dオブジェクトフローを接続するときに使用されるものと同じ方法が、AGV処理フローテンプレートの使用時にも適用されます詳細については、「3Dオブジェクトフローを接続する」を参照してください。
標準ルーティングとの唯一の違いは、フローアイテムの移動先を決定したら、そのアイテムをAGVWorkリストにプッシュする必要があることです。加えて、目標目的地を参照しているアイテムに対して「目的地」というラベルを設定する必要があります。これは、[輸送を使用]フィールドの[アイテムリストにプッシュ(タスクシーケンスなし)]オプションを使用して行うことができます。
AGVネットワークに固定リソースを接続する
AGV処理フローテンプレートを使用する場合は、通常、AGVネットワークを使用する場合と同様に固定リソースをネットワークに接続します。唯一の違いは、接続されたら、接続先のコントロールポイントを次の作業を検索ループに含める必要があります。
コントロールポイントの接続
AGV処理フローテンプレートは、次のように、非常に特殊な方法でコントロールポイント接続を中断します。
タイプ | 説明 | 外観 |
---|---|---|
場所 | 位置コントロールポイントは、固定リソースをAGVネットワークに接続するためのものです。固定リソースが場所コントロールポイントに接続されると、コントロールポイントを介してフローアイテムを送受信できます。 | ![]() |
ピックアップポイント | ピックアップポイントを場所ポイントに接続して、AGVがフローアイテムをロードできる特定のポイントを作成できます。位置コントロールポイントは、上流の固定リソースからそれらを受け取ると、それらのポイントにフローアイテムをルーティングします。 詳細については、「ピックアップポイントを作成する」を参照してください。 |
![]() |
ドロップオフポイント | ドロップポイントを場所ポイントに接続して、AGVがフローアイテムをアンロードできる特定のポイントを作成できます。場所コントロールポイントは、ポイントの1つでアイテムをドロップするようにAGVをルーティングしてから、それを下流の固定リソースに送ります。 詳細については、「ドロップオフポイントを作成する」を参照してください。 |
![]() |
パークポイント | パークポイントは、AGVのエントリポイントとして設定されているコントロールポイントに接続できます。シミュレーションモデルが開始されると、AGVがこのパークポイントに送られ、AGVはこのポイントでネットワークに入ります。加えて、パークポイントを次の作業を検索ループ内のポイントに追加できます。AGVは、バッテリーの残量が少なくなったときにパークポイントでバッテリーを充電することもできます。 AGV処理フローテンプレートでは、負荷分散発見法を使用してAGVをパークすべきかどうかが判断されます。AGVがパークポイントを伴うポイントに到着すると、アクティブなAGVの数とアクティブなジョブの数を比較します。アクティブなAGVの方が多かった場合は、AGVがパークして再び有効化されるまで待機します。この発見法は、特に、AGVが一度に複数のアイテムをロードできる場合やパークするAGVをうまく分散させたい場合に単純になりすぎる傾向があります。とはいえ、処理フロー全体を編集できるため、必要に応じてこの発見法を調整できます。 詳細については、「パークポイントを作成する」を参照してください。 |
![]() |
次の作業を検索 | AGVがシステムの周りをループして作業を探すシステムを作成する場合は、AGVネットワーク内に一連の「次の作業を検索」接続が必要です。これらの接続は、AGVが作業を探している場合に次の目的地がどこになるかを伝えます。AGVが上流のコントロールポイントに到達すると、そのコントロールポイントで作業を確認します。利用可能な作業がない場合は、下流のコントロールポイントに移動します。 詳細については、「次の作業を検索ループを作成する」を参照してください。 |
![]() |
作業を検索 | 単純なシナリオでは必要ありませんが、これらの接続はより高度なケースで役に立つ可能性があります。これらを使用すれば、AGVを実際にその場所に移動させなくても、特定の場所を次の作業を検索ループに「フック」することができます。つまり、LookForWork接続は、ジョブをアイテムが存在する場所からAGVが次の作業を検索ループの一部として移動する場所に転送します。わざわざ、AGVをそのジョブを探すためにアイテムの場所まで移動させたくない場合は、アイテムの場所のコントロールポイントからAGVの次の作業を検索ループ内のコントロールポイントへのLookForWork接続を追加できます。これにより、AGVは、わざわざ、アイテムの場所まで移動しなくても、そのループ内のそのポイントに到達したジョブを認識できます。 ディスパッチングロジックの観点で分析する場合は、LookForWork接続を使用して、遅延リソース選択のデフォルトのディスパッチングロジックとより実用的な早期リソース選択ロジックのバランスを取ることができます。スペクトルの一方の端(デフォルト)では、NextLookForWork接続のみを使用します。これは、AGVがジョブを選択するために可能性のあるすべてのピックアップ場所に移動する必要があることを意味します。このデフォルトは、距離に優先順位を付け、作業を見つけるために長いポーリングループでAGVを送信するという代償を払って、常にピックアップ場所に最も近いAGVを選択します。スペクトルのもう一方の端では、チェックポイントがほとんどない非常に小さな次の作業を検索ループを使用できます。ほぼすべてのピックアップ場所でジョブが数少ないチェックポイントに転送されるため、各チェックポイントで、AGVは大量のアクティブなジョブの中からピックすることができます。AGVは、より近いAGVがより後で使用可能になるという代償を払って、早い段階でこれらのジョブに割り当てられます。 |
![]() |
ピックアップポイントを作成する
ピックアップまで固定リソースに留めるのではなく、フローアイテムを1つ以上のピックアップポイントに配置するように固定リソースを設定できます。
1つ以上のピックアップポイントを作成するには:
- ピックアップポイントエリアへのAGVパスを作成します。必要に応じて、ピックアップポイントエリアはメインAGVネットワークループから分離されたループ上か、メインAGVネットワークループからの小さな分岐点にできます。
- AGVがフローアイテムをピックアップするAGVパスにコントロールポイントを追加します。
- Aキーを長押しして接続モードに入ります。接続モードに入ると、マウスポインターが、チェーンリンクシンボルが横に付いたプラス記号(
)に変わります。
- 固定リソースに接続されているコントロールポイントをクリックします。マウスを動かすと、クリックしたオブジェクトとカーソルの間に黄色の線が表示されます。
- ハイライト表示されるように、ピックアップポイントになるコントロールポイントの上にカーソルを置きます。コントロールポイントをクリックしてメニューを開きます。[PickupPoints]を選択します。位置コントロールポイントがピックアップコントロールポイントに接続されていることを示す緑色の線が表示されます。
- 必要に応じて前の手順を繰り返し、追加のピックアップコントロールポイントを作成します。
シミュレーションが実行されると、固定リソースはそのアイテムをピックアップポイントに転送し、そこでAGVによる輸送を待ちます。
ピックアップポイント用に別のループパスを作成した場合、AGVは場所コントロールポイントを通過して利用可能な作業が見つかった場合にのみそこを移動します。ピックアップポイントが空の場合は、別のピックアップポイントパスに移動せず、代わりに次の作業を検索ポイントに進みます。
ドロップオフポイントを作成する
AGV輸送のピックアップポイントを作成するのと同じ方法で、固定リソースのドロップオフポイントも作成できます。
ドロップオフポイントを作成するには:
- ドロップオフポイントエリアへのAGVパスを作成します。必要に応じて、ドロップオフポイントエリアはメインAGVネットワークループから分離されたループ上か、メインAGVネットワークループからの小さな分岐点にできます。
- AGVがフローアイテムをドロップオフするAGVパスにコントロールポイントを追加します。
- Aキーを長押しして接続モードに入ります。接続モードに入ると、マウスポインターが、チェーンリンクシンボルが横に付いたプラス記号(
)に変わります。
- 固定リソースに接続されているコントロールポイントをクリックします。マウスを動かすと、クリックしたオブジェクトとカーソルの間に黄色の線が表示されます。
- ハイライト表示されるように、ドロップオフポイントになるコントロールポイントの上にカーソルを置きます。コントロールポイントをクリックしてメニューを開きます。[DropoffPoints]を選択します。水色の線が表示され、位置コントロールポイントがドロップオフコントロールポイントに接続されていることを示します。
- 必要に応じて前の手順を繰り返し、追加のドロップオフコントロールポイントを作成します。
シミュレーションが実行されると、AGVはアイテムをドロップオフポイントに輸送し、その後すぐに固定リソースに表示されます。
パークポイントを作成する
パークポイントは、シミュレーションモデルが最初に実行を開始するときにAGVが出発する場所です。シミュレーションの実行中、AGVは、バッテリーの残量が少なくなった場合にパークポイントに戻ってバッテリーを充電できます。
- パークポイントを作成する前に、まずAGVを移動者AGVとしてメインAGVネットワークのコントロールポイントに接続する必要があります(手順については前のセクションを参照してください)。
- パークポイントへのAGVパスを作成します。通常、パークポイントパスはメインAGVネットワークループからの小さな分岐点です。
- 新しく作成したパスの1つをクリックして選択します。[クイックプロパティ]で、[双方向]チェックボックスをオンにして、AGVがこのパークポイントで双方向に移動できるようにします。
- 前のステップを繰り返して、すべてのパークポイントパスと、それらをメインAGVネットワークに結合するパスが双方向パスであることを確認します。
- AGVがパークするべきAGVパスにコントロールポイントを追加します。
- Aキーを長押しして接続モードに入ります。接続モードに入ると、マウスポインターが、チェーンリンクシンボルが横に付いたプラス記号(
)に変わります。
- メインのAGVネットワークでAGVに接続されているコントロールポイントをクリックします。マウスを動かすと、クリックしたオブジェクトとカーソルの間に黄色の線が表示されます。
- ハイライト表示されるように、パークポイントになるコントロールポイントの上にカーソルを置きます。コントロールポイントをクリックしてメニューを開きます。[ParkPoints]を選択します。位置コントロールポイントがパークコントロールポイントに接続されていることを示す濃い緑色の線が表示されます。
- 必要に応じて前の手順を繰り返し、追加のパークコントロールポイントを作成します。シミュレーションモデルの各AGVにパークポイントがあることを確認してください。
シミュレーションモデルをリセットすると、AGVは最初に、AGVが接続されているメインAGVネットワークのコントロールポイントに表示されます。ただし、シミュレーションモデルの実行が開始すると、AGVはただちにパークポイントに移動します。
「次の作業を検索」ループを作成する
AGV処理フローテンプレートを使用して、AGVは、施設の周りをループで移動しながら、作業する輸送タスクを探します。このようなロジックを作成するには、AGVネットワークに「次の作業を検索」ループを作成する必要があります。「次の作業を検索」ループは、基本的にはループ内で互いに接続される一連のコントロールポイントです。
AGVがループ内のコントロールポイントの1つを通過する際に、その場所で利用可能な輸送タスクをチェックします。輸送するアイテムが見つかると、そのアイテムをロードして、アイテムの指定目的地までの最短距離を取ります。その場所で輸送するアイテムが見つからない場合は、「次の作業を検索」ループの次のコントロールポイントに移動し、そのポイントで作業を確認します。AGVは接続されているすべてのコントロールポイントをループして作業を探します。
「次の作業を検索」ループを作成するには:
- Aキーを長押しして接続モードに入ります。接続モードに入ると、マウスポインターが、チェーンリンクシンボルが横に付いたプラス記号(
)に変わります。
- AGVが「次の作業を検索」ループで通過する最初の上流コントロールポイントをクリックします。マウスを動かすと、クリックしたオブジェクトとカーソルの間に黄色の線が表示されます。
- それがハイライト表示されるように、接続する2番目のコントロールポイントの上にカーソルを置きます。コントロールポイントをクリックしてメニューを開きます。[NextLookForWork]を選択します。コントロールポイントが接続されたことを示す赤い線が表示されます。
- このプロセスを繰り返し、ループにさらにコントロールポイントを追加します。最後のコントロールポイントが最初のコントロールポイントに接続され、ループを作成していることを確認してください。
シミュレーションモデルを実行すると、輸送タスクが利用可能になり次第すぐにAGVがシステムに入ります。その後、それらはAGVネットワークを巡回し、「次の作業を検索」ループ内の各コントロールポイントに移動します。
AGV処理フローテンプレート変数
AGV処理フロー上のいくつかの処理フロー変数の値を入力できます。
- AGV処理フローテンプレートを開いた状態で、処理フローの空白スペースをクリックして、何も選択されていないことを確認します。
- [クイックプロパティ]の[処理フロー変数]グループで、次の3つの処理フロー変数の設定を入力します。
- BatteryRechargeThreshold - AGVがこれ以上作業を実行しなくなり、ただちにパークして再充電するバッテリーの割合レベルを入力します。バッテリーの消耗/再充電をシミュレーションしない場合は、この変数に「
-1
」と入力してください。 - BatteryResumeThreshold - AGVがパーク後に再開できるバッテリーの割合レベルを入力します。消耗/再充電をシミュレーションしない場合は、この変数に「
-1
」と入力してください。 - DropoffRetrievalTime - AGVネットワークにドロップオフポイントを追加した場合は、AGVが移動してドロップオフポイントでアンロードします。ドロップオフポイントでアンロードした後、AGVはアイテムを最終目的地に移動させる前にこのドロップオフポイントに留まります。AGVがドロップオフポイントに留まる時間の長さは、この変数に対して指定した時間の長さに基づきます。この時間遅延は、人が来てドロップポイントから荷物を回収するのにかかる時間をシミュレーションします。
開始点
AGV処理フローテンプレートには、最初から非常に高度なディスパッチングメカニズムを提供する大量の事前に構築されたロジックが含まれていますが、処理フローはディスパッチング実装の終点ではなく、出発点として位置付けられています。必要に応じて、処理フローのすべての部分を再設定、再構築、または削除することができます。変更を加えて実験したり、必要な場合は、この処理フローを使用して得た知見に基づいて独自のフローを構築したりするためには、処理フローの仕組みをもっと深く理解することをお勧めします。