AGVネットワーク

概要と主要な概念

AGVネットワークは、自動誘導車両(AGV)や他のタスク実行者をシミュレートしながら移動経路を作成するのに役立ちます。

AGVモジュールは、自身のAGVオブジェクトタイプをライブラリに追加しません。代わりに、AGVネットワーク上のコントロールポイントにタスク実行者を接続します。これらのタスク実行者はAGV定義のロジックを使用して移動します。

イベント

AGVネットワークに接続されたタスク実行者には、処理フローの[イベントを待つ]または[イベントトリガーソース]アクティビティでサブスクライブできる追加イベントが与えられます。

  • OnStartTravel - AGVが移動タスクを開始したときに起動します。
  • OnFinishTravel - AGVが移動タスクを終了したときに起動します。
  • OnPreAllocate - AGVが順方向割り当てを試行する直前に起動します。これには1つまたは複数のOnAllocateイベントが続くか、順方向割り当てができなかった場合、そのOnAllocationFailedイベントが続きます。割り当てはコントロールポイントへの到着前に発生するか、累積パスで交点を割り当てようとしたときに発生します。
  • OnAllocate - コントロールポイント、コントロールエリア、または累積パスの交点が割り当てられるときに起動します。
  • OnAllocationFailed - AGVが順方向割り当てに失敗し、停止して待機しなければならないときに起動します。
  • OnDeallocate - AGVがコントロールポイント、コントロールエリア、または累積パスの交点の割り当てを解除するときに起動します。
  • OnAccumulationStop - AGVが累積パスでその近接停止しきい値に到達し、停止しなければならないときに起動します。
  • OnAccumulationResume - AGVが累積パスでその近接再開しきい値に到達し、再開できるときに起動します。
  • OnPreArrival - AGVがコントロールポイントに到着する前(AGVが必要に応じてコントロールポイントで停止するために減速を開始したときなど)に起動します。OnPreArrivalは、AGVが前方に割り当てる前やAGVが最終目的地に向けて減速を開始したときに起動します。
  • OnArrival - コントロールポイントを前方に割り当てることができない場合やコントロールポイントが最終的な目的地である場合に、AGVがコントロールポイントに到着したとき(AGVがコントロールポイントで停止するために減速したときなど)に起動します。

統計

AGVは以下の統計を追跡できます。

  • BatteryLevel - AGVのバッテリーレベルであり、0から100までのパーセンテージで示されます。

[AGVタイプ]タブ

[AGVタイプ]タブには次のプロパティがあります。

パスまたはコントロールポイントを右クリックし、[AGVネットワークプロパティ]を選択すると、[AGVタイプ]ページが表示されます。

パスクラス

ここでは、モデルのパスクラスのセットを追加、削除、並べ替え、名前変更できます。パスクラスは、パスごとにAGV速度を分類するために特に使用されます。パスクラスを追加すると、順方向速度と逆方向速度の両方に関して、そのパスクラスに関連付けられた新しい速度行が各AGVタイプテーブルに追加されます。

ロードタイプ

ここでは、モデルのロードタイプのセットを追加、削除、並べ替え、名前変更できます。ロードタイプは、AGVで運ぶもののカテゴリをユーザーが定義した一覧です。これにより、AGVの現在のロードでAGV速度を分類できます。

移動を初期化

これは各移動オペレーションの始まりで起動するトリガーです。このトリガーの主な目的はAGVの現在のロードタイプを設定することです。

AGVタイプリスト

ここでは、モデルのAGVタイプの一覧を追加、削除、並べ替え、名前変更できます。

AGVタイプ仕様テーブル

AGVタイプ仕様テーブルでは、パスクラス、ロードタイプ、AGV方向、加速、減速、非アイドルバッテリー使用量ごとに最大速度を定義します。

バッテリーレベルと使用方法

各AGVタイプには、バッテリー容量(アンペア時間)、アイドルバッテリー使用量(アンペア)、充電率(アンペア)が定義されています。さらに、各AGVタイプには、非アイドルバッテリー使用量(アンペア)がロードタイプごとに分類されています。各AGVはその最大バッテリー容量でシミュレーションを開始し、シミュレーションの間、バッテリー使用量を追跡します。アイドル状態になると、そのアイドル状態のバッテリー使用量が適用されます。移動オペレーションを行う際のバッテリー使用量は常にその時のロードタイプに基づきます。AGVに充電を設定すると、完全に充電されるか、その次の移動オペレーションが始まるまでその充電率で充電されます。バッテリーレベルを問い合わせる、充電を始める、バッテリーレベルを手動で設定するなどの方法については、agvinfo()コマンドのドキュメントを参照してください。

トレーラーを接続する

ロードされたアイテムをAGVにAGVのトレーラーとして接続することもできます。これにより、ロードされたアイテムは、AGVで運ばれる代わりに、AGVの後ろについてそのパスを進みます。[ロードをトレーラーとして添付]ボックスを選択し、[トレーラーギャップ]を定義します。トレーラーギャップは、AGVの後ろと牽引するアイテムの前までの間のギャップの距離です。

減速と終了速度

通常、宛先まで移動するタスクをAGVに与えるとき、停止のところで完全に減速してその移動タスクを終えることをAGVに求めます。しかしながら、まだ動いている状態で移動タスクを終えることを求める場合もあります。送付をその場で決定する場合などです。その場合、移動タスクにゼロ以外の終了速度を定義できます。これを行うと、実際には、終了時のAGVの位置と同様に、移動タスクの終了時間が早めにシフトされます。言い換えると、動いているうちに宛先のコントロールポイントで終了する代わりに、定義された終了速度でAGVがコントロールポイントに近づいている間に移動タスクが終了します。後続の移動タスクをAGVにすぐに与えない場合、AGVは停止まで減速し、移動タスクが完了してからコントロールポイントに到着します。ただし、新しい移動タスクをAGVにすぐに与える場合、続けて新しいタスクに取りかかります。前のタスクの終了速度から始め、元の宛先のコントロールポイントを通過して移動します。

[ウェイポイント]タブ

[ウェイポイント]タブには次のプロパティがあります。

ウェイポイントは、AGVがコントロールポイントを通過するときに発生するAGVコントロールロジックを定義するために使用されます。しかしながら、今後は、AGVコントロールについてはウェイポイントの代わりに処理フローを使用することをお勧めします。FlexSimはテンプレートAGVコントロール処理フローを提供します。これは、AGVコントロールロジックを定義するための出発点として使用できます。

パスまたはコントロールポイントを右クリックし、[AGVネットワークプロパティ]を選択すると、[ウェイポイント]ページが表示されます。

ウェイポイントリスト

ここでは、各ウェイポイントを追加、削除、並べ替え、名前変更できます。

トリガーポイント

ウェイポイントロジックを起動するタイミングがこれで定義されます。オプションは次のとおりです。

  • 到着前 - ウェイポイントロジックは、AGVが減速を開始し、ウェイポイントで停止するタイミングで起動します。
  • 到着時 - AGVがウェイポイントに到着したときにウェイポイントロジックが起動します。トリガー要件が満たされ、このトリガーポイントが選択されている場合、ウェイポイントがAGVの最終宛先ではない場合でも、AGVは減速してこのウェイポイントで停止し、ウェイポイントを起動します。したがって、AGVを停止まで減速させない場合、[到着前]を使用してください。

トリガー要件

ウェイポイントを起動する場合は1を返し、起動しない場合は0を返すフィールド。

ウェイポイントロジック

ウェイポイントのコード。

ウェイポイントのメンバー

このウェイポイントの一部であるコントロールポイントのリスト。ここでは、メンバーリストを追加、削除、並べ替えできます。

詳細については、「ウェイポイントのトリガーアクション」を参照してください。

[コントロールポイントの接続]タブ

[コントロールポイントの接続]タブには、次のプロパティがあります。

パスまたはコントロールポイントを右クリックし、[AGVネットワークプロパティ]を選択すると、[コントロールポイントの接続]ページが表示されます。

各コントロールポイントの接続に対して、3Dビューで表示するかどうかとその色を定義できます。また、必要に応じて接続を追加、削除、名前変更できます。

リストの使用

接続のリストボックスを選択した場合、モデル内の接続がすべて、パーティション分割されたグローバルリストに追加されます。これにより、処理フローでAGVコントロールロジックを簡単に定義できます。AGVが指定の宛先に到着したとき、AGVの現在のコントロールポイントに関連付けられているさまざまなリストパーティションからプルすることで何をするか決定できます。たとえば、AGVでできる作業が与えられているコントロールポイントを近くで見つけたり、駐車場所を見つけたり、次のポイントに進んで作業を探したりできます。これらのオペレーションは、グローバルリストの現在のコントロールポイントのパーティションからプルすることで実行できます。

接続タイプ

コントロールポイント接続には、次の3つの接続タイプのいずれかが与えられます。

  • コントロールポイント一方向 - この接続タイプは、コントロールポイントから別のコントロールポイントへの一方向接続であることを意味します。言い換えると、コントロールポイントAからコントロールポイントBに一方向接続すると、コントロールポイントBにはコントロールポイントAに戻る接続が与えられません。
  • コントロールポイント双方向 - この接続タイプは、コントロールポイントと別のコントロールポイントの間の双方向接続であることを意味します。言い換えると、コントロールポイントAからコントロールポイントBに双方向接続すると、コントロールポイントBからコントロールポイントAに戻る接続も自動的に構築されます。双方向接続を追加するとき、同じ接続タイプ([自己へ]オプション)を使用するか、新しい接続タイプを使用して逆接続(BからAに戻る)を構築できます。技術的には、双方向接続で一方向を超える機能性が追加されることはありません。一方向接続を双方向で相互に追加することで一方向接続による双方向接続が構築されるためです。ただし、必要に応じて接続を作成するとき、時間を節約できます。
  • オブジェクト双方向 - この接続タイプは、コントロールポイントからモデルオブジェクトへの双方向接続を表します。この接続を追加すると、コントロールポイントはその接続を通ってオブジェクトにアクセスできます。また、オブジェクトは同じ接続を通してコントロールポイントにアクセスできます。

接続を使用する

コントロールポイントは、ウェイポイントのトリガーアクションなど、さまざまなトリガーアクションを介して利用できます。あるいは、cpconnection()コマンドで手動アクセスすることで利用できます。

[累積タイプ]タブ

[累積タイプ]タブには、次のプロパティがあります。

[累積タイプ]を利用すると、累積パス、すなわち、AGVが近接性を検出し、互いの衝突を回避するパスのパラメータを定義できます。

パスまたはコントロールポイントを右クリックし、[AGVネットワークプロパティ]を選択すると、[AGVタイプ]ページが表示されます。

累積タイプはページ上部にあるコンボボックスやボタンで追加、削除、名前変更、並べ替えします。

パスに累積タイプを割り当てるには、パスをクリックし、右にある[クイックプロパティ]で[累積タイプ]ドロップダウンから目的のタイプを選択します。

近接検出

これらのプロパティは、2つのAGVが共通の累積パス上で近接性を検出する仕組みを定義します。

  • フロントAGVから <縁> AGVの背後へ <縁> - これは近接性の判断に使用されるAGVの縁を定義します。通常は[フロントAGVから <後縁> AGVの背後へ <前縁>]がデフォルトになります。これにより、前方AGVの後部から後方のAGVの前部までの距離が求められます。中心から中心までの距離を測る[フロントAGVから <中央> AGVの背後へ <中央>]なども選択できます。
  • 停止しきい値 - この距離になると、AGVは「近接停止」状態に入り、減速して停止します。
  • 目標停止間隔として使用 - これを選択した場合、前方のAGVが停止すると、停止しきい値により目標停止間隔が定義されます。停止したAGVはこの停止間隔で累積します。言い換えると、停止したAGVに近づくAGVは(近接距離としての)停止しきい値を超える前に減速を開始し、停止します。停止しきい値で停止し、前方のAGVの後ろに目標間隔を与えるように減速を開始します。両方のAGVが依然として動いている場合、停止しきい値は通常の近接検出に引き続き使用されます。
  • 再開しきい値 - 「近接停止」状態に入った後、AGVがその移動を再開できる近接距離。再開しきい値は停止しきい値より大きくする必要があります。
  • プラス時間 - 再開しきい値に到達したときに開始する、任意の追加時間。「近接停止」状態から復帰するまでAGVはこの時間だけ待機します。

交点

あるパスに累積タイプを定義すると、AGVネットワークでは、そのパス上の交点が割り当てとして処理されます。AGVがコントロールポイントとコントロールエリアを割り当てる方法と同様に、AGVは、交点を通過する前に、累積パス上で交点を割り当てる必要があります。[累積タイプ]ページで、停止距離を定義できます。これは交点前の距離であり、AGVがそれを割り当てできない場合、AGVは交点前で停止する必要があります。停止距離は間隔でもあり、交点を通過してこの距離だけ空いたら、AGVは交点を解放し、別のAGVに利用させることができます。以上の距離はいずれも、AGVがパスに入るとき、パスから出るとき、パス上にいるときで分類されます。すでにパス上にいるか、パス上に残っている場合、距離はパスの幾何的配置によって分類されます。すなわち、AGVから離れるか、AGVに向かうように交点は分岐します。

交差点の停止地点

ここでは、交点の停止距離を定義します。距離ごとに、距離自体とAGVの端を定義します。これにより、停止距離でAGVのどの部分が停止するべきかが決定されます。通常、停止距離はAGVの前縁に基づきます。特定のフィールド内をクリックすると、定義している距離や端が右側の図に表示され、フィールドが正確に何を定義しているか把握するのに役立ちます。

  • パスエントリ - これで定義される停止距離とAGVの端は、パスに入るときに適用されます。
  • オンパスロング - これで定義される停止距離とAGVの端は、すでにパス上にいるとき、交点に近づくときに適用されます。AGVに向かって分岐するため、合流するAGVのための空間を与える目的で、離れて停止することをAGVに要求する交点に適用されます。そのため「長い」停止距離が取られます。
  • オンパスショート - これで定義される停止距離とAGVの端は、すでにパス上にいるとき、交点に近づくときに適用されます。AGVから離れて分岐するため、AGVは問題を引き起こすことなく近づいて停止できる交点に適用されます。そのため「短い」停止距離が取られます。

交差点クリアポイント

ここでは、交点のクリア距離を定義します。停止距離と同様に、距離自体とAGVの端を定義します。通常、クリア距離はAGVの後縁に基づきます。特定のフィールド内をクリックすると、定義している距離や端が右側の図に表示され、フィールドが正確に何を定義しているか把握するのに役立ちます。

  • オンパスロング - これで定義されるクリア距離とAGVの端は、まだパス上にいるときに(パスから出ていない)、交点を空ける際に適用されます。クリアポイントに向かって分岐するため、クリア前に離れて停止することをAGVに要求する交点に適用されます。そのため「長い」クリア距離が取られます。
  • オンパスショート - これで定義されるクリア距離とAGVの端は、まだパス上にいるときに(パスから出ていない)、交点を空ける際に適用されます。クリアポイントから離れて分岐するため、AGVは問題を引き起こすことなく近づいてクリアできる交点に適用されます。そのため「短い」クリア距離が取られます。
  • パス出口 - これで定義されるクリア距離とAGVの端は、パスから出るときに適用されます。

特別ルール

交点の割り当てに適用される特別な規則がいくつかあります。

  • Pure On-Path Allocations - AGVネットワークは、基本的な近接検出が交差の停止とクリアポイントに優先するように試行します。そのため、パス上AGVの前方に別のAGVがいて、それに対して近接性が検出されても、その交点でパスから出ない場合、AGVには、前方のAGVが交点をクリアする前に交点を割り当てることが許可されます。前方のAGVで近接性がすでに検出されているため、交点を同時に割り当てることに問題はありません。基本的な近接検出で近接エラーか回避されるためです。
  • End-To-End Path Transfers - あるパスの終わりから別のパスの始まりまで転送するとき、ネットワークではそれが2つのパス間の「交差」として処理されます。すなわち、交点の割り当てが必要になります。しかしながら、再度、新しいパスに転送するとき、転送前に検出していた同じAGVとの近接性をAGVが検出するとき、そのAGVは先に進み、両方のAGVで交点を割り当てることを許可します。基本的な近接検出で近接エラーが回避されるためです。これは、同じ累積タイプの2つのパス間の転送にのみ適用されます。累積タイプが異なる場合、それは通常の交点割り当てのように扱われます。

累積の使用に関するガイドラインとベストプラクティス

多くのユーザーは、この累積オプションを自らの課題の完璧な解決策と考えるかもしれません。確かに、累積によって多くのシミュレーションシナリオが容易になるものの、その一方で、新たな複雑さや潜在的な問題が生まれるのも事実です。これは、累積を使用すべきではない、という意味ではありません。発生する大半の問題は、適切なノウハウで簡単に解消できます。むしろ、累積を使用するかどうかを判断する前に、累積の仕組みを十分に理解すべきです。

累積の使用に伴う主な複雑さは、新しい割り当て方式にあります。この方式は、コントロールポイントとコントロールエリアに使用される標準の割り当て方式とは異なりますが、標準の割り当て方式と共に使用されます。そのため、状況によっては、これら2つの割り当て方式が互いに「競合」し、システムのデッドロックを引き起こすことがあります。この問題は特に、交点が接近したエリアで発生する確率が高く、こうしたエリアでは、コントロールエリアを使用して相互にトラフィックが排除されます。

問題となる状況の例を次の図に示します。

この状況では、AGV_7はコントロールエリアのの交点を割り当てたものの、コントロールエリア自体はまだ割り当てていません。この場合、画面下中央のAGV、AGV_9が先にコントロールエリアを割り当てるため、深刻な問題が発生します。AGV_7はAGV_9が所有しているコントロールエリアを割り当てることができず、AGV_9はAGV_7が所有している交点を割り当てることができないため、2台のAGV間でデッドロックが発生します。

前述のように、この状況は、コントロールエリアの割り当てと累積パスの交点の割り当てという2つの異なる割り当て方式が共存するために発生します。AGVは、コントロールエリアの割り当てを、前のコントロールポイントに到着した時点で行います。割り当てはオールオアナッシング方式です。つまり、AGVは、最も近いコントロールポイントまで進んだ後、パス上の次のコントロールポイントだけでなく、そこに至るまでのコントロールエリアもすべて割り当てます。そのため、AGVがコントロールエリアを割り当てるタイミングは、そこに至るまでに存在するコントロールポイントの位置に基づきます。

一方、累積パスの交点の割り当ては、交点の位置と、[AGVネットワークプロパティ]の[累積タイプ]の設定に基づいて決まります。[オンパスロング]設定にデフォルトを使用する場合、上記の状況のAGV_7は、交点を割り当てることができなければ、交点から少なくとも1メートル手前で前縁部を停止できなければなりません。これにより、AGVが交点の割り当てを試みる地点が決まります。

この状況例でAGV_7が先に交点を割り当てるのは、コントロールポイントがコントロールエリアの極めて近くにあることが原因です。AGV_7が交点を割り当てなければならない地点は、コントロールエリアを割り当てなければならない地点より手前に存在します。一方、AGV_9のコントロールポイントは、コントロールエリアから少し離れた位置にあるため、交点の割り当てより前にコントロールエリアを割り当てます。そのため、デッドロックが発生します。

解決策

このような問題に遭遇した場合、主に2つの解決策を試すことができます。第1の解決策は、交点が接近したエリアに特化した累積タイプを作成することです。この累積タイプでは、コントロールエリアを常に交点より手前に割り当てます。まず、[AGVネットワークプロパティ]で新しい累積タイプを作成します。次に、[交差点の停止地点]の基準をAGVの中央に置き、[距離]を0に設定します。これは、交点を割り当てることができないAGVが、交点の手前0メートルの地点で中心部を停止しなければならないことを意味します。この設定を行えば、この狭いエリアでは、すべてのパスがこの累積タイプを使用します。

第2の解決策は、こうした接近したエリアで累積を使用しないことです。交点を通る各パスに対して、累積設定を[累積なし]にするだけです。これにより、コントロールエリアが、エリア内で相互排除を行う唯一の要素となります。正しい割り当て順序を気にする必要はありません。ここで、コントロールエリアの割り当て解除が早すぎないようにしたいと仮定します。コントロールエリアの割り当て解除を行うに、前方にある累積パスの少なくとも最初の交点は割り当てておきたいものです。これは、それほど難しくありません。まだ実行していなければ、コントロールエリアの割り当て解除タイプの割り当て解除距離を長くします。あるいは、コントロールポイントを次の累積パスの開始地点に配置し、コントロールエリアの割り当て解除タイプを[次のコントロールポイントで割り当て解除]に設定します。

一般的な経験則では、累積は、比較的交点が少なく、セクションの長いパスを持つモデルエリアで正しく機能します。一方、多くの交点が接近しているエリアでは、累積をオフにし、コントロールポイントでエリアを取り囲み、コントロールエリアで内部のトラフィックを制限する方が、簡単で、問題も少なくなります。

[割り当て解除タイプ]タブ

[割り当て解除タイプ]タブには、次のプロパティがあります。

パスまたはコントロールポイントを右クリックし、[AGVネットワークプロパティ]を選択すると、[割り当て解除タイプ]ページが表示されます。

割り当て解除タイプリスト

ここでは、各割り当て解除タイプを追加、削除、並べ替え、名前変更できます。

端の定義

これは、AGVのどの「端」で割り当て解除時間を決定するかを定義します。オプションは次のとおりです。

  • 中央 - AGVの中央が所定のポイントを通過すると、割り当て解除がトリガーされます。
  • 後縁 - AGVの後端が所定のポイントを通過すると、割り当て解除がトリガーされます。
  • 前縁 - AGVの前端が所定のポイントを通過すると、割り当て解除がトリガーされます。

移動ポイントの定義

割り当て解除時間を決定するパス上の関連ポイントを定義します。オプションは次のとおりです。

  • 次のコントロールポイントに到達 - AGVに定義された端が次のコントロールポイントに到着すると、割り当てが解除されます。コントロールエリアの場合、これはパスがコントロールエリアを抜けた後の次のコントロールポイントになります。
  • 現在のポイントを通過 - AGVに定義されている端が現在のポイントを通過すると割り当てが解除されます。コントロールポイントの場合、これはコントロールポイント自体になります。コントロールエリアの場合、これはAGVに定義された端がコントロールエリアを抜けるパス上のポイントになります。

プラス距離

オブジェクトの割り当てを解除する前に移動に追加される距離です。

プラス時間

定義された端が「移動ポイント+距離」に到達した後、割り当て解除を遅らせるために追加される時間です。

[ビジュアル]タブ

[ビジュアル]タブには、次のプロパティがあります。

パスまたはコントロールポイントを右クリックし、[AGVネットワークプロパティ]を選択すると、[ビジュアル]ページが表示されます。

パスの色

3Dビューでパスを描画するときの色を定義します。これは特に、CAD描画でモデルをオーバーレイしているとき、モデルとCAD線で構築されたAGVネットワークパス間を線で描くときに便利です。

コントロールポイントの色

3Dビューでコントロールポイントを描画するときの色を定義します。

線幅

基準となる幅をピクセルで定義します。モデル内のパスとコントロールポイントがこの幅で描画されます。

描画スケール

基準となするサイズを定義します。コントロールポイントとパスの方向矢印の描画をこのサイズで縮小拡大します。

パス描画、コントロールポイントの描画、コントロールエリアの描画

モデル内で個々のオブジェクトをどのように操作できるかを定義します。モデルの特定の部分を完了したとき、その中のオブジェクトに関して変更できるところを制限することがあります。オプションは次のとおりです。

  • 完全操作 - 必要に応じてこれらのオブジェクトをクリックし、動かすことができます。
  • クリックのみ可能 - これらのオブジェクトをクリックできますが、動かすことはできません。
  • クリック不可 - 3Dビューでオブジェクトを表示できますが、クリックできません。
  • 描画しない - 3Dビューでオブジェクトを表示できません。

[一般]タブ

[一般]タブには、次のプロパティがあります。

パスまたはコントロールポイントを右クリックし、[AGVネットワークプロパティ]を選択すると、[一般]ページが表示されます。

AGVシミュレーション開始方法

モデルの開始時に各AGVに対して起動するトリガー。通常、これを使用してAGVのOnResourceAvailableを起動し、AGVポーリングを開始します。

デッドロックを確認

チェックボックスをオンにすると、コントロールポイント/コントロールエリアの割り当てロジックはデッドロックサイクルがないか継続的に確認します。見つかった場合は、モデルを停止し、問題を通知します。デッドロック検出には追加の計算が必要であり、シミュレーションが遅くなる可能性があることに注意してください。そのため、デバッグ中にオンにして、デッドロック問題がすべて解決したら、オフに戻してください。

移動終了速度0は最高速度を意味する

チェックボックスをオンにすると、AGVでは、終了速度0の移動タスクが「AGVの最高速度で終了」と解釈されます。この動作は、ネットワークノードを使用する標準的なトラベルネットワークなど、他のFlexSim移動メカニズムではデフォルトです。しかしながら、AGVの場合、これはいつも望ましい動作であるとは限らないため、ここでこの設定を明示的に定義します。

ウェイポイントのトリガーアクション

次のセクションでは、さまざまなウェイポイントのトリガーアクションについて説明します。

検索経由でリダイレクト

「検索経由でリダイレクト」では、AGVが到着するコントロールポイントのコントロールポイント接続を検索することでAGVがリダイレクトされます。

  • 条件 - 条件フィールドにより、このアクションを実行するタイミングが指定されます。デフォルト(真)の場合、アクションが常に実行されます。右にあるドロップダウンボタンを使用し、このフィールドに入力できます。
  • 検索範囲 - ここで検索の範囲を定義します。これには、検索を開始するコントロールポイントである「検索開始ポイント」が含まれます。デフォルトのcurrentCPは、AGVが到着したコントロールポイントです。次に、検索するコントロールポイント接続のセットを定義します。デフォルトのDropoffPointsでは、currentCPのDropoffPoints接続がすべて検索され、検索された各コントロールポイントに送付するかどうかが評価されます。
  • フィルタリング(WHERE) - WHEREフィルタリングは、検索で特定のコントロールポイントに送付するための条件を定義します。デフォルトは次のとおりです。
    1. コントロールポイントが利用できます。すなわち、別のAGVによって要求されていません。
    2. コントロールポイントには何も含まれていません。すなわち、その場所で回収待ちになっているフローアイテムはありません。
  • 優先順位付け(ORDER BY) - ORDER BYパラメータは、複数の一致がある場合、どのコントロールポイントが送付するのが最適かを定義します。デフォルトでは、currentCPに最も近いコントロールポイントに送付されます。
  • 新しい目的地 - 送付先となる新しい目的地。これは通常、一致したコントロールポイント自体、すなわち、目的地になります。
  • リダイレクトタイプ - このパラメータは、AGVのリダイレクト方法を定義します。オプションは次のとおりです。
    • リダイレクト - 最終目的地として - AGVは到着後、移動を完了します(別のウェイポイントにより再びリダイレクトされない限り)。
    • リダイレクト - 続けて待機 - AGVは目的地に移動し、再度リダイレクトされるまで待機します。
    • リダイレクト - 続行 - AGVは目的地まで移動したら、さらに元の目的地を目指します。[到着時]が選択された場合、AGVは減速して中間目的地で停止し、それから続行します。[到着前]が選択された場合、AGVは減速せず、中間目的地を通り過ぎます。
  • リダイレクト時 - 有効なAGVが見つかったときに実行するコード。
  • 目的地が見つかると戻る - このチェックボックスをオンにした場合、リダイレクト先のAGVが見つかった場合、ウェイポイントトリガーは実行を停止します。そのため、このトリガーはあらゆる後続のロジックをスキップします。複数のアクションを数珠繋ぎにして1つのことを実行することがあります。また、することが何も見つからない場合、次に進もうとします。このチェックボックスをオンにした場合、見つかったときに戻ります。つまり、AGVにさせることが見つかった場合は他を探しません。

作業を検索

このアクションは作業を探し、見つかったらそれに取りかかります。

  • 条件 - 作業を探す条件を定義します。[検索経由でリダイレクト]の条件と同じです。
  • 開始点を検索 / それぞれに対し - 検索範囲を定義します。オブジェクト/コントロールポイントのタスクシーケンスキューを検索するという点を除き、「検索経由でリダイレクト」に似ています。デフォルトでは、AGVの現在のコントロールポイントのタスクシーケンスキューのみが検索されます。多くの場合、LookForWorkアクションは、FixedResourceの[輸送を使用]の[アイテムをAGV経由で移動]アクションとの連動で使用します。その場合、タスクシーケンスはコントロールポイント自体に保存されることが多く、コントロールポイントのタスクキューを中心にタスクキューが検索されます。
  • フィルタリング(WHERE) - 特定のタスクシーケンス、すなわち、特定のフローアイテムのロード/アンロードに取りかかる条件を定義します。[検索経由でリダイレクト]フィルタリングに似ていますが、フィルタリングの中心はフローアイテム、具体的には、タスクシーケンスのロード/アンロードフローアイテムにあります。
  • 優先順位付け(ORDER BY) - 優先順位付けを定義します。これも[検索経由でリダイレクト]に似ていますが、中心はフローアイテムです。
  • 追加パラメータ - [検索経由でリダイレクト]に類似する追加パラメータです。

直接参照からリダイレクト

このアクションでは、直接参照により、AGVが別のコントロールポイントにリダイレクトされます。

  • 条件 - [検索経由でリダイレクト]と同じです。
  • 目的地 - リダイレクト先となるコントロールポイント/オブジェクトの参照。
  • 追加パラメータ - [検索経由でリダイレクト]に類似する追加パラメータです。

コントロールポイントが使用可能になるのを待つ

このアクションは、一連のコントロールポイントの1つが使用可能になるまで待機します。利用可能になると、ウェイポイントトリガーのすべてのアクションが再起動します。通常、このアクションは[検索経由でリダイレクト]アクションの後に置きます。リダイレクト先が見つからない、すなわち、コントロールポイントはすべて利用できない場合、コントロールポイントが利用可能になるまで待機できます。

  • 条件 - [検索経由でリダイレクト]と同じです。
  • 開始点 / 接続パス - これらのフィールドにより、利用可能になるまで「リッスンする」一連のコントロールポイントが定義されます。[開始点]は、開始点となるコントロールポイントです。通常、AGVの現在のコントロールポイント(currentCP)になります。接続パスは、開始点から展開されるコントロールポイント接続のうち、待機対象のコントロールポイントを列挙する接続を定義します。デフォルトは「DropoffPoints」です。「DropoffPoints」は、たとえば、荷を積んだAGVがアイテムを降ろすためにスプールする必要があるが、現在、荷降ろし先のスプールに空きがない場合に使用されます。そのため、コントロールポイントが利用可能になるまで、AGVの現在のコントロールポイントに関連付けられている各荷降ろしポイントでリッスンします。接続パスの場合、DropoffPointsのデフォルトである、1つのコントロールポイント接続を定義できます。あるいは、"NextLookForWork > DropoffPoints" など、「連鎖」接続を定義できます。たとえば、開始点で始まり、まず、そのすべてのNextLookForWork接続に展開し、次に、それぞれに対して、すべてのDropoffPoints接続を列挙します。

作業を待つ

このアクションは、定義されている一連のコントロールポイントに作業が到着するのを待ちます。これは[輸送を使用]の[アイテムをAGV経由で移動]アクションとの連動で使用してください。そのアクションが使用されるとき、フローアイテムは回収のためにコントロールポイントに置かれます。この「作業を待つ」アクションは、アイテムがこれらのコントロールポイントに入ってくるのをリッスンし、ウェイポイントのすべてのアクションを再び起動します。通常、作業が見つからないとき、作業が到着するのを待つように、[作業を検索]アクションの後に[作業を待つ]を追加します。

定義された遅延時間を待つ

このアクションは定義されている遅延時間だけ待機し、それからウェイポイントトリガーのアクションを再び起動します。通常、ウェイポイントトリガーの開始位置にこれを配置します。これには、現実世界の意思決定プロセスに関連付けられている遅延を実装できます。すなわち、現実世界のシステムで送付決定の処理に5秒かかるとすれば、最初に5秒待機し、それから決定ロジックを起動します。