タスク4.2 - 処理フローを使用したAGV
タスクの概要
AGVシミュレーションをさらに簡単にするために、FlexSimにはAGVシミュレーションプロジェクトで使用できる2つの事前に作成されたAGV処理フローテンプレートがあります。これらの処理フローテンプレートには、ほとんどのAGVシステムに必要な基本ロジックがすでに用意されています。次の画像は、AGVテンプレートの縮小版を示しています。
このチュートリアルタスクでは、処理フローテンプレートを設定する方法を学びます。また、ピックアップエリア、ドロップオフエリア、パークポイントの作成方法も学びます。チュートリアルの最後に、システムをより効率的にするためにコントロールポイントの感度を調整する方法を学びます。
AGVテンプレートの機能の詳細を説明することはこのチュートリアルの範囲を超えていますが、この処理フローによってこのAGVシステムのほぼすべてのロジックが制御されるとお考えください。AGV処理フローテンプレートをより詳細に確認し、どのように機能するかを学ぶようにしてください。テンプレートは機能ごとにまとめられており、理解しやすいように自己文書化されます。
作業が完了すると、モデルは次の画像のようになります。
ステップ1 AGV処理フローテンプレートを追加する
このステップでは、AGV処理フローテンプレートを作成し、AGVを処理フローにアタッチします。このステップでわかるように、基本的な設定は非常に簡単です。処理フローテンプレートを作成したら、AGVを処理フローにアタッチする必要があります。次に、搬送タスクをAGVWorkというグローバルリストにプッシュするようにプロセッサを設定します。これは、AGV処理フローを設定したときに自動的に作成されます。AGVが処理フローにアタッチされると、ディスパッチャーオブジェクトは不要になるため、削除できます。
また、処理フローを正しく機能させるために、「次の処理を検索」ループも作成する必要があります。「次の処理を検索」ループは、基本的にはループ内で互いに接続される一連のコントロールポイントです。この経路が設定されると、システム内のAGVはネットワーク上を継続的にループして、処理する搬送タスクを探します。このステップでは、AGVのメインネットワークに「次の処理を検索」システムを設定します。
処理フローを追加してロジックを設定するには:
- メインツールバーで[処理フロー]ボタンをクリックして、メニューを開きます。[タスク実行者処理フローを追加]をポイントし、[AGV]を選択してこの処理フローテンプレートを作成します。
- 新しく作成された処理フローで、何も選択されないように空白の領域をクリックします。[処理フローインスタンス]グループの[クイックプロパティ]で、[添付オブジェクト(インスタンス)]ボックスを見つけます。このボックスの横にある[サンプラー]ボタン をクリックして、サンプリングモードに入ります。
- 3Dモデルで[AGV1]をクリックします。これで[アタッチオブジェクト]ボックスに表示されるようになります。
- 前のステップを繰り返してAGV2も処理フローにアタッチします。
- AGVがプロセスフローにアタッチされたので、3DモデルのAGVDispatcherを削除できます。
- 3Dモデルで、[ステージング1]プロセッサをダブルクリックして、[プロパティ]ウィンドウを開きます。[フロー]タブで、[搬送を使用]ボックスの横にある矢印をクリックしてメニューを開きます。[リストを使用]をポイントし、[アイテムリストにプッシュ](タスクシーケンスなし)を選択して、[ピックリスト]ウィンドウを開きます。
- [リスト]ボックスに現在選択されている「AGVWork」リストが表示されていることを確認します。残りのプロパティはデフォルト設定のままにします。
- [OK]ボタンをクリックして変更を保存し、プロパティウィンドウを閉じます。
- 上記のステップを繰り返して、AGVWorkリストを[ステージング2]プロセッサにも追加します。
- 2台のAGVが同時に[AGVEntryPoint]コントロールポイント上にある場合は、それらをコントロールポイントから遠ざけるようにドラッグし、コントロールポイントが表示されるようにします。
- [AGVEntryPoint]コントロールポイントから[MainDropOffPoint]コントロールポイントに接続(A接続)を作成してメニューを開きます。[NextLookForWork]を選択します。2つのコントロールポイントが接続されていることを示す赤い線が表示されます。
- この処理を繰り返して、残りのコントロールポイント間でループする「次の作業を検索」接続を次の順序で作成します。
- [MainDropOffPoint]コントロールポイントから[MainPickUpPoint]コントロールポイントまで
- [MainPickUpPoint]コントロールポイントから左下のコントロールポイントまで
- 左下のコントロールポイントから右下のコントロールポイントまで
- 右下のコントロールポイントから右下のコントロールポイントまで
- 右下のコントロールポイントから右上のコントロールポイントまで
- 右上のコントロールポイントから[AGVEntryPoint]コントロールポイントまで
シミュレーションモデルをリセットして実行します。
前のチュートリアルタスクの最後にご説明したように、AGV1とAGV2がデッドロックする問題がありました。幸い、この問題は発生しません。実行する必要がある実際の処理があるかどうかにかかわらず、両方のAGVが継続的にシステムを巡回し処理を探すためです。AGV処理フローのテンプレートはこのロジックを自動的に作成します。
ステップ2 ピックアップエリアを追加する
このステップでは、ピックアップエリアを追加し、ピックアップコントロールポイントを位置コントロールポイントに接続する方法を学習します。最大10個のアイテムのAGVによる搬送を待つことができるピックアップステーションを作成します。
このステップが終了すると、3Dモデルは次の画像のようになります。
ピックアップエリアを作成するには:
- AGVネットワークの左下コーナーから延長する、右からへ左に伸びる16単位の長さの水平AGV軌道を作成します。両端に1単位のスペースを残してください。
- 上から下に向かって3単位の長さの垂直AGV軌道を作成します。軌道は前の軌道から1単位左、1単位下にある必要があります。
- 左から右に向かって18単位の長さの水平軌道を作成します。前の軌道から1単位右下にある必要があります。
- 下から上へ向かって3単位の長さの垂直軌道を作成します。前の軌道から1単位右上にある必要があります。
- これらの軌道を結合するには、ライブラリの[軌道を結合]ツールを使用します。メインのAGV軌道を最初と最後に作成した新しい軌道に結合します。結合する軌道が他の軌道と同じ方向に進むようにしてください。
- 上下の軌道に10個のコントロールポイントを追加し、それらを約3単位離します。
- 分かりやすくするために、AGVが通過する順序で新しいコントロールポイントの名前を「PickUp1」、「PickUp2」などに変更します。
- [MainPickUpPoint]コントロールポイントから[PickUp1]コントロールポイントへのコントロールポイント接続(A接続)を作成してメニューを開きます。[PickUpPoints]を選択します。2つのコントロールポイントが接続されていることを示す緑色の線が表示されます。
- 前のステップを繰り返して、MainPickUpPointから10個すべてのピックアップコントロールポイントまでのピックアップコントロールポイントを作成します。
- [DeliverySchedule]処理フローを開きます。
- [ソース:医療品の配送]アクティビティをクリックし選択します。[クイックプロパティ]の[到着]グループで、[数量]列の最初の行にあるセルを見つけます。このセルに「
10
」と入力します。
モデルをリセットして実行します。
フローアイテムがキューに入り、プロセッサがそれらの処理を開始します。次に、プロセッサはそれらを[MainPickUpPoint]コントロールポイントに渡し、そこで[MainPickUpPoint]コントロールポイントはアイテムを10個のピックアップポイントのうちのいずれかに転送します。AGVがMainPickUpPointを通過して処理を探している場合、AGVはそれらをピックアップエリアに転送します。次にAGVはフローアイテムをロードし、それらを目的地に搬送します。
モデルの実行時間を十分に長くしておくと、AGVはすべてのアイテムを搬送します。この状況では、AGVは処理する搬送タスクがそのエリアにないため、ピックアップエリアに入らずに無視します。
ステップ3 ドロップオフエリアを追加する
AGV搬送のピックアップポイントを作成できるのと同じ方法で、固定リソースのドロップオフポイントも作成できます。このステップでは、その方法を説明します。
このステップが終了すると、3Dモデルは次の画像のようになります。
ドロップオフエリアを作成してグローバルリストを使用するには:
- 3Dモデルで、[DropOff]シンクを削除します。
- AGVネットワークの左上コーナーから、右から左に伸びる12単位の水平AGV軌道を作成します。両端に1単位のスペースを残してください。
- 上から下に向かって3単位の長さの垂直AGV軌道を作成します。軌道は前の軌道から1単位左、1単位下にある必要があります。
- 左から右へ12単位の長さの同一の水平軌道を作成します。前の軌道から1単位右下にある必要があります。
- これらの軌道を結合するには、ライブラリの[軌道を結合]ツールを使用します。メインのAGV軌道を最初と最後に作成した新しい軌道に結合します。結合する軌道が他の軌道と同じ方向に進むようにしてください。
- 上下の軌道に4つのコントロールポイントを追加し、軌道に沿って等間隔に配置します。
- 分かりやすくするために、AGVがそれらを通過する順序で新しいコントロールポイントの名前を「DropOff1」、「DropOff2」などに変更します。
- ライブラリから、このエリアにキューを追加します。
- 分かりやすくするために、新しいキューの名前を「LoadingDock」に変更します。
- [LoadingDock]キューから[MainDropOffPoint]コントロールポイントまでの接続(A接続)を作成します。
- [MainDropOffPoint]コントロールポイントから[DropOff1]コントロールポイントまでの接続(A接続)を作成してメニューを開きます。[DropoffPoints]を選択します。水色の線が表示され、位置コントロールポイントがドロップオフコントロールポイントに接続されていることを示します。
- 必要に応じて前のステップを繰り返して、他の3つのドロップオフコントロールポイントに追加のドロップオフコントロールポイントを作成します。
シミュレーションモデルがこのステップの冒頭に表示した画像のようになっていることを確認します。
ステップ4 リストを使用してアイテムの目的地を設定する
このステップでは、アイテムを下流のオブジェクトに搬送するためのさまざまな方法について学びます。ポート接続を使用するのではなく、「ItemsReadyForDelivery」という名前のグローバルアイテムリストからアイテムをプッシュおよびプルします。また、代わりに[Dropoff]シンクをキューに変更します。
リストは、正しく設定するには少し注意を払う必要がありますが、長距離になる可能性があるポート接続をする必要がないため、AGVモデルでのアイテムのルーティングに適しています。リストを使用すると、さまざまな始点とさまざまな目的地を持つモデルで、多対多のポートルーティングを単純化することもできます。
グローバルアイテムリストを作成するには:
- [ツールボックス]で[追加]ボタン をクリックして、メニューを開きます。[Global List]をポイントし、[アイテムリスト]を選択します。
- [リストプロパティ]ウィンドウで、リスト名を「ItemsReadyForDelivery」に変更します。
- [ラベルフィールド]ボックスで、現在のテキストを削除して「
LoadType
」と入力します。 - すべての式フィールドを削除します。
- [OK]ボタンを押して変更を保存し、ウィンドウを閉じます。
- [ステージング1]プロセッサをダブルクリックして、[プロパティ]ウィンドウを開きます。[フロー]タブで、[ポートに送信]ボタンの横にある矢印をクリックしてメニューを開きます。[リストを使用]をポイントし、[アイテムリストにプッシュ]を選択します。
- [リスト]ボックスの横にある矢印をクリックして、メニューを開きます。[ItemsReadyForDelivery]を選択します。
- [OK]ボタンをクリックして変更を保存し、ウィンドウを閉じます。
- [ステージング2]プロセッサについても前の手順を繰り返します。
- [LoadingDock]キューをダブルクリックして、[プロパティ]ウィンドウを開きます。[入力]グループの[フロー]タブで、[プル]チェックボックスをオンにします。
- このボックスの横にある矢印をクリックして、メニューを開きます。[リストを使用]をポイントして、[アイテムリストからプル]を選択します。
- [リスト]ボックスの横にある矢印をクリックして、メニューを開きます。[ItemsReadyForDelivery]を選択します。
- [OK]ボタンをクリックして変更を保存し、ウィンドウを閉じます。
モデルをリセットして実行します。
最初のAGVはDropOff 4でドロップオフし、2番目のAGVはDropOff 3でドロップオフします。
ステップ5 パークポイントを追加する
このステップでは、さらに3台のAGVをモデルに追加して合計5台にします。また、それぞれのAGVにパークポイントを作成します。パークポイントは、シミュレーションモデルが最初に実行を開始するときにAGVが出発する場所です。シミュレーションの実行中にバッテリーが少なくなると、AGVはパークポイントに戻ってバッテリーを充電できます。
このステップが終了すると、3Dモデルは次の画像のようになります。
AGVを追加してパークポイントを作成するには:
- ライブラリから、3つの[TaskExecuter]オブジェクトを3Dモデルに追加します。
- 分かりやすくするために、これらのAGVの名前を「AGV3」、「AGV4」、「AGV5」に変更します。
- [AGV]処理フローを開きます。
- 何も選択されないようにするために、空白の領域をクリックします。[処理フローインスタンス]グループの[クイックプロパティ]で、[添付オブジェクト(インスタンス)]ボックスを見つけます。このボックスの横にある[サンプラー]ボタン をクリックして、サンプリングモードに入ります。
- 3Dモデルで[AGV3]をクリックします。これで[アタッチオブジェクト]ボックスに表示されるようになります。
- 前のステップを繰り返して、他の2つの新しいAGVも処理フローにアタッチします。
- 「AGV1」と「AGV2」を[AGVEntryPoint]コントロールポイントから離すようにドラッグし3Dモデルに表示されるようにします。
- AGV2からAGVEntryPointコントロールポイントへのポート接続(A接続)を作成してメニューを開きます。[トラベラーAGV]を選択します。2番目のAGVが接続されていることを示す赤い線が表示されます。
- 前のステップを繰り返して、残りのAGVをコントロールポイントに接続します。
- コーナーから約4単位離れた左上コーナーに、6単位の垂直AGV軌道を作成します。
- 新しい軌道をクリックして選択します。[クイックプロパティ]で、[双方向]チェックボックスをオンにします。
- Ctrl+Cを押して選択した軌道をコピーします。モデル内に軌道のコピーを貼り付けるには、Ctrl+Vを押します。
- 前の手順を繰り返して5つの軌道を作成します。それらが互いにおよそ4単位離れるように軌道を空けてください。
- ライブラリの[軌道を結合]ツールを使用して、各パーク軌道をメインのAGVネットワークに結合します。
- 作成した新しい結合軌道の1つをクリックして選択します。[クイックプロパティ]で、[双方向]チェックボックスをオンにします。
- 前のステップを繰り返して、すべての新しい結合軌道を双方向軌道に変更します。
- ライブラリから、いずれかのパーク軌道の中央にコントロールポイントを追加します。
- 5つすべてのパーク軌道についてこのステップを繰り返します。
- 分かりやすくするために、これらの新しいコントロールポイントの名前を「ParkPoint1」、「ParkPoint2」などに変更します。
- [AGVEntryPoint]コントロールポイントから[ParkPoint1]コントロールポイントへのポート接続(A接続)を作成してメニューを開きます。[ParkPoints]を選択します。2番目のAGVが接続されていることを示す濃い緑色の線が表示されます。
- 前のステップを繰り返して、[AGVEntryPoint]コントロールポイントを残りのパークポイントに接続します。
シミュレーションモデルをリセットして実行します。
シミュレーションが開始すると、5台すべてのAGVが指定されたパークポイントから出発し、その後ネットワーク全体を移動して搬送タスクを処理します。AGVは一時的に停止しなければならないことがあります。次のステップで、AGVがコントロールポイントで待機する時間を減らす方法を学びます。
モデルの実行時間を十分に長くしておくと、AGVはすべてのアイテムを搬送します。この状況が発生すると、AGVはシステムのまわりをループするのではなく、バッテリーを充電するために最終的にすべてパークポイントに戻ります。
ステップ6 コントロールポイントの感度を変更する
前のステップで、AGVは、その前方の軌道にいるAGVがコントロールポイントから退出するのを待つ間、停止する必要がある場合があることが分かりました。これは、AGVネットワークに、軌道上の次のコントロールポイントが利用可能かどうかを判断することで、クラッシュを回避できる高度な先読みメカニズムがあるためです。次のコントロールポイントを使用できない場合、AGVは現在のコントロールポイントで待機します。
デフォルトでは、コントロールポイントは、それを要求したAGVが次のコントロールポイントに到達するまで解放されません。コントロールポイントの感度を変更して、コントロールポイントが別のAGVにより割り当てられる前に、AGVがコントロールポイント自体をクリアするだけで済むようにできます。このステップで[割り当て解除タイプ]プロパティを変更して、この感度を変更する方法を学習します。
AGVシステムのコントロールポイントの感度を変更するには:
- 3Dモデルに表示されるように、5台のAGVを[AGVEntryPoint]コントロールポイントから離すようにドラッグします。
- [AGVEntryPoint]コントロールポイントをクリックして選択します。[クイックプロパティ]で、[割り当て解除タイプ]メニューをクリックして開きます。[過去の現在の割り当て解除の時期]を選択します。
- メインAGVネットワーク上のすべてのコントロールポイントに対して前のステップを繰り返します。
- ツールボックスで、[AGVネットワーク]をダブルクリックして[ネットワークプロパティ]ウィンドウを開きます。
- [割り当て解除タイプ]タブで、タイプメニューから[過去の現在の割り当て解除の時期]を選択します。
- [割り当て解除時]の見出しの下にある最初のメニューをクリックして開きます。[センター]を選択します。
- [OK]ボタンを押して変更を保存し、ウィンドウを閉じます。
シミュレーションモデルをリセットして実行します。
これにより、AGVはシステム全体を移動するようになるので、より効率的になります。AGVはそれほど頻繁にデッドロックすることはなく、ネットワーク全体に素早く効率的に間隔を空けて配置されます。
結論
ここでは、AGV処理フローテンプレートによって、ピックアップポイント、ドロップオフポイント、パークポイントなど、さらに複雑なAGVの動作を可能にする方法を学びました。また、システムをより効率的にするために必要に応じてコントロールポイントの感度を調整する方法も学びました。次のチュートリアルでは、AGVが必要に応じて複数の階に移動できるように、AGVシステムにエレベーターを追加する方法を学びます。「チュートリアル4.3 - AGVでエレベーターを使用する」に進みます。