AGVネットワークロジックの構築
AGVネットワークロジックの概要
次の画像に、AGVパス上のコントロールポイントの例を示します。
AGV処理フローテンプレートに加えて、AGVコントロールポイントはAGVネットワークのロジックと機能を作成するための重要な鍵となります。
- AGVネットワークに出入りするには、AGVをコントロールポイントに接続する必要があります。
- AGVがコントロールポイントを通過するとき、そのコントロールポイントは、どのコントロールポイントがその次の目的地になるかに関する指示をAGVに与えられます(ピックアップポイント、ドロップポイント、AGVが作業を探す別のコントロールポイントなど)。
- AGVネットワークを介してアイテムを輸送するには、固定リソースをコントロールポイントに接続する必要があります。
- コントロールポイントはトラフィックコントロールに影響を与え、潜在的な衝突やデッドロックを防ぐのに役立ちます。
- AGVを複数のフロアに輸送するためにエレベーターを使用する場合は、そのロジックを処理するためにコントロールポイントを組み合わせる必要があります
パスにコントロールポイントを追加する
パスにコントロールポイントを追加するには:
- ライブラリの[AGV]グループで、[コントロールポイント]をモデルにドラッグします。
- AGVパス上になるようにコントロールポイントを配置します。次の画像に示すように、AGVパスに接続すると、コントロールポイントは十字線付きのひし形のようになります。
AGVネットワークに固定リソースを接続する
固定リソース内のアイテムをAGVネットワーク経由で輸送する必要がある場合は、その固定リソースをネットワーク上の特定のコントロールポイントに関連付け、AGVがネットワーク上の固定リソースへの移動方法を認識できるようにする必要があります。
固定リソースをコントロールポイントに接続するには、次のようにします。
- Aキーを長押しして接続モードに入ります。接続モードに入ると、マウスポインターが、チェーンリンクシンボルが横に付いたプラス記号()に変わります。
- コントロールポイントに接続したい固定リソースをクリックします。マウスを動かすと、クリックしたオブジェクトとカーソルの間に黄色の線が表示されます。
- ハイライト表示されるように、コントロールポイントの上にカーソルを置きます。コントロールポイントをクリックしてメニューを開きます。[場所]を選択します。固定リソースがコントロールポイントに接続されたことを示す青い線が表示されます。
- 固定リソースをクリックして、右側でプロパティを開きます。[出力]セクションで、適切な目的地にアイテムを送るように[ポートに送信]プロパティを設定します。
- ポート接続を使用して、アイテムを目的地に送ることができます。上流の固定リソースが下流の固定リソースに入出力ポート接続(A接続)で接続されていることを確認してください。次に、ビジネスシステムに必要なフローロジックを使用するようにポート接続を設定します。詳細については、「3Dオブジェクトフローの概要」を参照してください。
- アイテムをリストにプッシュできます。下流の固定リソースが同様にリストからアイテムをプルするように設定されていることを確認してください。
- また、[出力]セクションで、[輸送を使用]ボックスをオンにします。このチェックボックスの隣にあるボックスで、このプロパティを設定してAGVを割り当て、アイテムを目的地に輸送します。
- AGV処理フローテンプレートを使用している場合は、[リストを使用]を選択し、AGV処理フローテンプレートを使用したときに自動で生成されるAGVWorkリストを選択する必要があります。
- 1台のAGVでシンプルなAGVネットワークシステムを使用している場合は、センターポート接続(S接続)を使用して固定リソースをAGVに接続します。
- 複数のAGVを使用している場合は、センターポート接続(S接続)を使用して固定リソースをディスパッチャーに接続します。次に、入出力接続(A接続)を使用して、ディスパッチャーをシステム内のすべてのAGVに接続します。
シミュレーションが実行されると、AGVが接続されているコントロールポイントに到達するまで固定リソースがそのアイテムを保持します。アイテムが転送されるとすぐにAGVに表示されます。
AGVをAGVネットワークに接続する
AGVがAGVパスネットワーク上を移動するためには、AGVを移動者AGVとしてAGVネットワーク上のコントロールポイントに接続する必要があります。メインのAGVネットワーク上にあるコントロールポイントを選択します。コントロールポイントはAGVに入ってほしいエリアの近くにある必要があります。
AGVをコントロールポイントに接続するには:
- Aキーを長押しして接続モードに入ります。接続モードに入ると、マウスポインターが、チェーンリンクシンボルが横に付いたプラス記号()に変わります。
- AGVをクリックします。マウスを動かすと、クリックしたオブジェクトとカーソルの間に黄色の線が表示されます。
- ハイライト表示されるように、コントロールポイントの上にカーソルを置きます。コントロールポイントをクリックしてメニューを開きます。[トラベラーAGV]を選択します。AGVがコントロールポイントに接続されたことを示す赤い線が表示されます。モデルをリセットすると、AGVはこのコントロールポイントから移動し始めます。
- 前の手順を繰り返して、複数のAGVをコントロールポイントに接続します。
シミュレーションモデルをリセットすると、このコントロールポイントに接続されているすべてのAGVがそのポイントに表示されます。複数のAGVがそのポイントに接続されている場合、そのコントロールポイントで重なり合う可能性があります。
コントロールポイントの接続
コントロールポイントはAGVネットワークの基本的な構成要素です。これらは、移動の「エンドポイント」でもあり、AGV先読み割り当ての「足掛かり」でもあります。加えて、コントロールポイントは、コントロールポイント接続を通して、論理的に相互に関連付けることができます。コントロールポイント接続は、AGVモデルのロジックの高速化を容易にする非常に強力な機能です。
その最も基本的なレベルでは、コントロールポイント接続は、あるコントロールポイントから別のオブジェクトまたはコントロールポイントへの名前付き接続にすぎません。接続は一方向にも双方向にもできます。また、コントロールポイントは同じ名前の複数の接続を有することができます。たとえば、コントロールポイントCP1にそれぞれコントロールポイントのCP2とCP3へのDropoffPoints接続が2つあるとします。
コントロールポイント接続それ自体は、固有の決め打ちされた意味合いを持っていません。つまり、前述のCP1からCP2とCP3へのDropoffPoints接続を作成しても、AGVシステムの特殊な内部ロジックがトリガーされることはありません。これらの接続を作成しただけでは、モデルの挙動は何も変わりません。
ただし、AGV処理フローテンプレートやAGVエレベーター処理フローなどの処理フローを使用することにした場合またはAGVオフセット移動を追加することにした場合は、さまざまなコントロールポイント接続に意味合いを持たせることになります。たとえば、AGV処理フローでは、Location、PickupPoints、DropoffPoints、ParkPoints、WorkForwarding、およびNextWorkPoint接続の特定の意味合いを定義します。AGVエレベーター処理フローでは、ElevatorFloorCP、ElevatorRedirectCP、およびElevatorEntryCP接続の特定の意味合いを定義します。
3Dビューでコントロールポイント接続を作成する
コントロールポイント接続を作成するには:
- Aキーを長押しして接続モードに入ります。接続モードに入ると、マウスポインターが、チェーンリンクシンボルが横に付いたプラス記号()に変わります。
- 接続の始点になるコントロールポイントをクリックします。マウスを動かすと、クリックしたオブジェクトとカーソルの間に黄色の線が表示されます。
- 接続の終点になるコントロールポイントの上にカーソルを置いて、強調表示します。コントロールポイントをクリックしてメニューを開きます。作成するコントロールポイント接続の名前を選択します。
プロパティでコントロールポイント接続を作成する
コントロールポイントが地理的に離れているために、3Dビューでは接続を作成しにくい場合があります。この場合は、コントロールポイントの[プロパティ]ペインを介してコントロールポイント接続を作成することもできます。
- 接続の始点になるコントロールポイントをクリックします。
- [プロパティ]の[接続]で、ドロップダウンを押して、追加する接続の名前(PickupPointsなど)を選択します。
- [追加]ボタンを押すと、ポップアップが表示されます。
- ビューで接続する必要のあるコントロールポイントに移動するか、検索/絞り込みコントロールにコントロールポイントの名前を入力します。ターゲットコントロールポイントを見つけたら、それをクリックまたは選択して青色で強調表示します。
- [選択]を押します。
コントロールポイント接続を削除する
コントロールポイント接続を削除するには:
- コントロールポイントをクリックして選択します。
- [プロパティ]で、[接続]メニューを探して、削除する接続のタイプを選択します。
- このメニューの下のボックスで、接続を削除したいオブジェクトの名前をクリックします。
- [削除]ボタン をクリックして、接続を削除します。
AGV設定を変更する
AGVネットワークの基本的なロジックを設定した後に、AGVの動作を変更したいと思う場合があります。AGVの移動速度、ロード容量、バッテリーの寿命、アイテムのロードとアンロードにかかる時間などをカスタマイズできます。このセクションでは、コントロールできるさまざまなプロパティとそれらの設定を調整する場所について説明します。
AGVネットワークプロパティ
AGVネットワークのプロパティにアクセスするには、ツールボックス([AGVネットワーク]として表示)からアクセスするか、AGVパスを右クリックして[AGVネットワークプロパティ]を選択することによってアクセスします。
AGVネットワークのプロパティウィンドウを使用して、AGVネットワーク上のすべてのAGVのグローバル速度、バッテリー容量と充電率、集積動作、割り当て解除動作、一般的なビジュアル設定を設定できます。以下に、AGVネットワークのプロパティウィンドウにある2つの便利なタブを示します。
これらのプロパティの詳細については、参照セクションの「AGVネットワーク」を参照してください。
TaskExecuterのプロパティ
AGV(厳密に言えばTaskExecuterオブジェクト)をクリックすると、それが開いて、その容量などの編集可能なプロパティが表示されます。AGVネットワークロジックは、個別のカスタマイズされた速度設定を優先して、タスク実行者の最大速度、加速度、および減速度のプロパティを無視することに注意してください。
これらのプロパティの詳細については、参照セクションの「タスク実行者タブ」を参照してください。
割り当ての動作と用語を理解する
AGVネットワークは、クラッシュを回避し、高度なトラフィックコントロールを提供できる強力な先読みメカニズムを備えています。FlexSimには、これらの動作を構成するためのメカニズムがいくつか用意されています。
コントロールポイントは、AGVパス上の「足掛かり」として機能します。AGVは、コントロールポイント(CP1)に到着する前に、次のコントロールポイント(CP2)の割り当てを試みます。CP2を割り当てられない場合は、減速してCP1で停止し、先に進む前にCP2を割り当てられるまで待機します。これは、ネットワーク上でCP2がCP1からどれだけ離れていても関係ありません。つまり、デフォルト設定が使用される場合、コントロールポイントは、ネットワーク上でAGVが停止できる唯一の場所となります。次のコントロールポイントがどれだけ遠くにあろうとも、割り当てが完了するまでは、現在のコントロールポイントから次のコントロールポイントに進むことはありません。そのため、次のコントロールポイントを割り当てるときには、AGVが移動パスのかなり先の方に見える可能性があります。
衝突とデッドロックを防止する
FlexSimでは、AGVどうしの衝突を回避するデフォルトのメカニズムとして、コントロールポイントのシンプルな割り当て/割り当て解除を採用しています。この方法をデフォルトの動作として使用する理由は、「衝突回避の保証」に基づきます。
衝突回避の保証
一連のルールに従うことで、モデル内でAGVの衝突が決して起こらないことが保証されます。これらのルールを以下に示します。
ルール | 従う方法 | |
---|---|---|
ルール1 | AGVは、コントロールポイントに向かう前に、そのコントロールポイントを割り当てなければならない | 内部のAGVロジックによって自動的に保証される |
ルール2 | 1度に1つのAGVしか、特定のコントロールポイントを割り当てることはできない | 各コントロールポイントの最大割り当てプロパティを1のままにする |
ルール3 | AGVは、コントロールポイントを完全に通過するまで、そのコントロールポイントを割り当て解除しない | [割り当て解除タイプ]でデフォルト値の[次のコントロールポイントで割り当て解除]を使用し、ルール4に従う |
ルール4 | コントロールポイントどうしの間隔をAGV 1台分より長くする | モデル内でコントロールポイントを正しく配置する |
ルール5 | AGVパスどうしの間隔を十分に確保し、あるパス上で移動中のAGVが、まったく別のパス上で移動中のAGVと決して衝突しないようにする | モデル内でパスを正しく配置する |
ルール6 | AGVはコントロールポイントでしか停止できない | 動作として、集積、プリエンプト、またはカスタマイズしたAGV移動を使用しない |
これらすべてのルールに従うことができる状況であれば、特に何もしなくても衝突回避が可能です。コントロールポイント、パスネットワーク、AGV、ディスパッチングロジックを作成し、モデルを実行すれば、衝突回避が自動的に行われます。
ルールを緩和する
とはいえ実際には、必要な動作を可能にしたり、モデル構築を簡単にしたりするために、一部のルールを緩和しなければならない場合があります。たとえば、モデル内に長いパスセクションがあるとします。こうしたパス上でコントロールポイントどうしが非常に離れている場合、FlexSimのデフォルトの割り当てアルゴリズム(ルール1と2)ではスループットが低下します。それは、AGVがかなり前の時点で割り当てを行う必要があり、AGVが存在しない大きな隙間が生じるためです。これを修正するには:
- パスに沿ってコントロールポイントを追加します。この方法では、引き続き上記のすべてのルールに従うことができますが、多くのコントロールポイントを作成する必要があるため、作業が増えます。
- 代わりに、上記のルール2を緩和するために、長いパスセクション上のコントロールポイントを割り当てることができるAGVの数を増やします。そして代わりに集積を使用して、パス上にあるAGVどうしが重ならないようにします。
さらに、交差点はそれ自体、本質的にルール5に違反するため、コントロールエリアや集積を使用して交差点での衝突を防ぐ必要があります。また、ルール6を破る機能を実際に使用したい場合もあります。最後に、ルール1~6に従っても、デッドロックを回避できる保証はありません。そのため、デッドロックを回避する手段は引き続き必要です。
モデルを構築する際、これらのルールは最初の検討事項として適しているものの、結局は指針に過ぎず、おそらく、ルール1~6に厳密に従わない戦略の実装が必要になります。とはいえ、理解しておかなければならないのは、これらのルールの1つ以上を緩和することで、衝突回避の保証が無効になるということです。その結果、こうした状況では、衝突を回避するために別のメカニズムを用意する必要があります。FlexSimにはそのためのメカニズムが数多く存在します。たとえば、コントロールエリア、集積、処理フローを使用する相互排除、エージェントモジュールによる近接検出です。さらに、複数の戦略を組み合わせることもできます。たとえば、モデルのあるエリアではすべてのルールに従って衝突回避を自動的に確立し、別のエリアではいくつかのルールを緩和し、補足の衝突回避メカニズムを実装することができます。
ここでは、デッドロックと衝突回避に関するさまざまな問題を修正するための戦略について説明します。
コントロールポイントをさらに追加する
前述のように、ネットワークにコントロールポイントを追加できます。この方法は全体的なスループットを高めるだけでなく、デッドロック回避にも役立ちます。コントロールポイントが増えると、AGVが目的地にたどり着くまでに経由する「足がかり」が増えることになります。その結果、デッドロックの原因となる割り当てサイクルの形成を防ぐことができます。
割り当て解除タイプを変更する
デフォルトでは、AGVが次のコントロールポイントに到達したときにコントロールポイントの割り当てが解除されるように設定されています。コントロールポイントの割り当て解除タイプを変更して、より早いタイミングで割り当てが解除されるようにすると、より多くのコントロールポイントを再割り当てのために解放できます。
- コントロールポイントをクリックして選択します。
- [プロパティ]で、[割り当て解除タイプ]メニューをクリックし、[現ポイント通過時に割り当て解除]を選択します。
コントロールエリアを追加する
コントロールエリアは、デッドロックの回避に役立ちます。あるいは、ルール2~6の1つ以上を緩和するものの衝突を回避しなければならない場合にも役立ちます。コントロールエリアを追加するには:
- ライブラリの[AGV]グループで、[コントロールエリア]をクリックしてコントロールエリア構築モードに入ります。
- AGVネットワークのコントロールエリアを追加する部分の右上隅の外側にカーソルを置きます。クリックしてコントロールエリアボックスの描画を開始します。AGVネットワークの制限したい部分の周りにコントロールエリアボックスを描画します。
- Escを押してコントロールエリア構築モードを終了します。
- コントロールエリアのサイズを変更する必要がある場合は、コントロールエリアをクリックし、サイズ調整矢印を使用します。
- 新しく追加したコントロールエリアが選択されている間は、必要に応じて[プロパティ]パネルでそのプロパティを編集できます。
双方向パスを管理する
システムに双方向パスが含まれる場合、AGVどうしがパス上を同時に反対方向に移動しないようにする方法を見つける必要があります。同じパス上で2台のAGVが同時に反対方向に進むと、ほぼ確実にデッドロック状態が発生します。ここでコントロールエリアを使用すると、こうした制限を実装できます。