輸送列のシミュレーション

概要と概念

高忠実度の無人車両システムをシミュレートする能力に加えて、FlexSimのAGVモジュールにはトレーラーをAGVにアタッチする機能も含まれています。アタッチされたトレーラーは、ドライバーAGVの後ろ(または前)を移動し、その運動は移動のパス上で連結されます。

このトレーラーアタッチ動作を使用すれば、操車場や輸送列移動ネットワークなどをモデリングするために必要な連結運動を表現できます。輸送列シミュレーションの観点では、AGVという表現はあまり適切ではありませんが、AGVシステムは高度な輸送列シミュレーションモデルを構築するために必要なすべての動作を提供します。

下のアニメーションは、トレーラーにアタッチして、トレーラーをネットワーク上の別の場所に移動してから、そのトレーラーからデタッチするAGVの非常に単純な例を示しています。

このトピックでは、輸送列シミュレーションモデルの構築を始めるにあたって知っておくべきAGVシステムの必須要素を紹介します。

ドライバーとトレーラー

AGVモジュールでは、パス上を移動可能なすべてのオブジェクトがドライバートレーラーに分けられます。ドライバーAGVは、AGVのパス上の位置、そこまでにたどったパスの数、およびアタッチされているトレーラーの数に関するすべての情報を所有するオブジェクトです。「トレーラー」は、AGVドライバーの後ろまたは前にアタッチされたオブジェクトです。各トレーラーは、アタッチされたAGVの運動を追跡します。つまり、AGVドライバーがそのすべてのトレーラーの運動を駆動します。

AGVドライバーは、通常、それ自体がタスク実行者です。言い換えれば、タスクシーケンスを渡したりすることにより、AGVドライバーをタスク実行者のように扱うことができます。ただし、AGVドライバーはそのまま他のAGVドライバーのトレーラーになることもできます。AGVが他のAGVドライバーにアタッチされたトレーラーになると、タスクシーケンスを実行できなくなります。代わりに、タスクシーケンスはそのドライバーに渡されます。

非タスク実行者トレーラーは、ドライバーに昇格させることもできますが、ここでは、所有者という表現の方が適切です。この状態は、1つ以上のトレーラーがドライバーAGVから連結解除されたときに発生し、連結解除されたトレーラーはタスク実行者ではありません。ドライバーがタスク実行者でない場合は、タスクシーケンスを渡すことができません。代わりに、ドライバーは、パスシステム上の位置とアタッチされているトレーラーに関する情報を所有するだけです。非タスク実行者ドライバー/所有者を移動させるには、それをタスク実行者である別のAGVドライバーにアタッチして、そのドライバーにタスクシーケンスを渡す必要があります。

AGVドライバーにコントロールポイントに移動するように伝えるタスクシーケンスを渡すと、AGVドライバーはデフォルトでその中心がコントロールポイントに到達するように移動します。AGVの前のトレーラーは、コントロールポイントを通り過ぎ、AGVの後ろのトレーラーはコントロールポイントの手前で停止します。

アタッチ、デタッチ、連結、連結解除

AGV輸送列の編成を制御する4種類の方法があります。すなわち、アタッチ、デタッチ、連結、および連結解除です。これらの方法の完全な説明は、AGV APIリファレンスに記載されています。このトピックでは、これらの方法の概要を示すだけです。

これらの機能のそれぞれを簡単に処理フローに追加できます。以下に例を示します。

  1. カスタムコードアクティビティを処理フローに追加します。
  2. カスタムコードアクティビティのクイックプロパティで、[追加]ボタンを押します。ドロップダウンで、メニュー[コントロール]>[AGV]に移動します。
  3. 目的の機能を選択します。

トレーラーのアタッチ

トレーラーのアタッチでは、個別のトレーラーがAGVドライバーにアタッチされます。これは、主に、オフネットワークオブジェクト(AGVネットワークに認識されていなかったフローアイテムなどのオブジェクト)をアタッチするために使用されます。ほとんどの場合、オブジェクトをドライバーAGVの前と後ろのどちらにアタッチするかと、オブジェクトと次に最も近いトレーラー/ドライバーの間に必要なギャップを指定します。

詳細については、AGV.attachTrailer()を参照してください。

トレーラーのデタッチ

トレーラーのデタッチでは、個別のトレーラーがAGVドライバーからデタッチされます。デタッチされたオブジェクトは、「オフネットワーク」オブジェクトになります。つまり、AGVネットワークはそのオブジェクトのネットワーク上の位置を追跡しなくなります。

オブジェクトを破壊しそうになった場合にトレーラーをデタッチします(輸送列の連結解除とは対照的)。

詳細については、AGV.detachTrailer()を参照してください。

輸送列の連結

輸送列の連結は、トレーラーのアタッチに似ていますが、いくつかの重要な違いはあります。輸送列の連結は、ユーザーができるだけ簡単に使えるように設計されています。大量の複雑な作業がバックグラウンドで処理されます。この機能は、連結するトレーラーという1つのパラメータを取ります。

トレーラーが「オフネットワーク」オブジェクト(別のドライバーAGVでもAGVトレーラーでもない)の場合は、この機能がトレーラーのアタッチに進みますが、AGVの現在の輸送列に相対するオブジェクトの位置に基づいて、ギャップと後ろか前かの状況を自動的に計算します。

トレーラーが他のAGVドライバーまたはトレーラーの場合は、coupleTrain()が輸送列のネットワーク上の位置を算出し、輸送列全体(AGVドライバーとそのすべてのトレーラー)をそのAGVドライバーのトレーラーのセットにアタッチします。再度、前か後ろかとギャップの変数が、現在のAGVのパス上の位置に相対するトレーラーのパス上の位置に基づいて、決定されます。

詳細については、AGV.coupleTrain()を参照してください。

輸送列の連結解除

輸送列の連結解除は、トレーラーのデタッチに似ていますが、いくつかの重要な違いはあります。この機能は、主に、1つのトレーラーを対象にします。そのトレーラーが、AGV輸送列を連結解除すべき「スプリットポイント」になります。そのトレーラーから始まってAGVドライバーオブジェクトから離れて進むトレーラーの新しいAGV輸送列が作成されます。この輸送列が独自のAGVドライバーになります。トレーラーのデタッチとは違って、ここでは、AGVネットワークが新しい輸送列のネットワーク上の位置を追跡し続けることに注意してください。トレーラーは独自のドライバーAGVになります。このドライバーがタスク実行者であれば、新しいドライバーにネットワーク上を移動するためのタスクシーケンスを渡すことができます。

新しい「ドライバー」AGVをデタッチポイントになっているトレーラー以外のオブジェクトにしたい場合は、そのオブジェクトをオプションの[新規ドライバー]パラメータで渡します。

詳細については、AGV.uncoupleTrain()を参照してください。

オーバーフロー

AGVドライバー」セクションで説明したように、AGVがコントロールポイント目的地に送られた場合は、その前にトレーラーがあれば、それらのトレーラーが目的地を通り過ぎます。押されるトレーラーが現在のパスの終わりを通り過ぎたときにどうするかを定義しなければならない場合があります。これは、AGV.overflowCPプロパティを使用して定義できます。輸送列をその目的地に送る前に、このプロパティを目的地コントロールポイントを通り過ぎたコントロールポイントに設定します。押されるトレーラーは目的地コントロールポイントを通り過ぎると、このコントロールポイントに経路変更されます。

カスタム目的地

デフォルトで、AGVは、その中心が目標目的地コントロールポイントに到達するように移動します。ただし、この動作は必要に応じてカスタマイズすることができます。AGVを目的地パスに沿って特定のオフセットに送ることも、AGVのトレーラーのいずれかを目的地に送ることもできます。この他にもさまざまな設定が考えられます。

詳細については、「AGV移動タスクのカスタマイズ」を参照してください。