タスク4.1 - 標準3Dロジックを使用したAGV
タスクの概要
このチュートリアルを完了すると、最終的に病院全体のAGVネットワークを構築できます。AGVは、病院の積み荷エリアとそれ以外の場所間で医薬品、リネン類、廃棄物を搬送します。
この最初のチュートリアルタスクでは、標準の3Dロジックのみを使用して非常に基本的なAGVネットワークを作成することに焦点を当てます。AGV軌道を作成し、それらの軌道に沿って3Dオブジェクトをコントロールポイントに接続する方法を学習します。また、モデルに複数のAGVを追加する方法も学びます。
作業が完了すると、モデルは次の画像のようになります。
ステップ1 AGV軌道を追加および接続する
このステップでは、AGV軌道を追加および接続してメインのAGVネットワークを作成します。このネットワークは、AGVが処理するタスクを継続的に検索しながら巡回する循環経路になります。作業が完了すると、3Dモデルは次の画像のようになります。
ほとんどの場合、AGVの軌道は他の3Dオブジェクトに使用するのと同じ方法で追加、移動、サイズ変更などができます。ただし重要な違いは、AGVの軌道には2つの端点があることです。それぞれ始点と終点と呼ばれます。
始点はAGVが軌道に入る場所であり、終点はAGVが軌道から出る場所です。この2つの端点は繋がっていますが、個別に動かすことができます。カーブの軌道には、軌道の曲線を制御するために使用できる半径、開始角度、およびスイープ角度もあります。
この3DモデルのAGV軌道レイアウトを作成するには:
- ライブラリで、[AGV]グループの横にある展開ボタン をクリックして、AGVオブジェクトを表示します。
- [直線軌道]をクリックして軌道構築モードに入ります。軌道構築モードに入ると、次の画像に示すようにマウスポインターがプラス記号に変わり、その横に[直線軌道]アイコンが表示されます。
- 構築モードに入ったら、3DモデルでAGV軌道の始点を配置する位置を見つけます。モデル内のその位置をクリックしてマウスポインターを左から右に動かすと、AGV軌道の作成が開始することがわかります。
- 軌道が始点から28単位離れたところまでマウスポインターを移動します。最終的には、AGVのメインループ軌道は、X軸に沿って25単位、Y軸に沿って30単位の大きさになりますが、両端に1単位のスペースを残します。
- 軌道構築モードのままになっていることを確認し、さらに3つの軌道を作成します。次の画像に示すように、コーナーの軌道を繋がずに、約25x30単位の長さの正方形の軌道を構築します。
- Escキーを押して軌道構築モードを終了します。
- これらの軌道を結合する前に、軌道が反時計方向に移動するよう配置されていることを確認してください。各軌道上の方向矢印は、AGVがこの軌道上を移動する方向を示します。
- 上側の軌道は左から右に移動
- 右側の軌道は下から上に移動
- 下側の軌道は右から左に移動
- 左側の軌道は上から下に移動
- 次に、軌道を結合します。ライブラリの[AGV]グループで、[結合軌道]オブジェクトをクリックして、軌道結合モードに入ります。軌道結合モードに入ると、次の画像に示すようにマウスポインターがプラス記号に変わり、[結合軌道]アイコンが横に表示されます。
- 結合モードの状態で、軌道が強調表示されているかのように黄色に変わるまで、一方の軌道の端点にマウスを置きます。軌道をクリックし、最も近い軌道の端点にマウスポインターを移動します。その軌道が強調表示されているかのように黄色に変わったら、軌道をクリックします。軌道が結合されます。
- 閉経路になるように残りの軌道をすべて結合します。
- Escキーを押して軌道結合モードを終了します。
この時点でシミュレーションモデルを保存することをおすすめします。
ステップ2 ネットワークに3Dオブジェクトを追加、接続する
このステップでは、モデルに次のようなさまざまな3Dオブジェクトを追加します。
- 病院のアンロードドックとして機能し、最終的に医療品や清潔なリネン類の積み荷を受け取るキュー
- ロードステーションでAGVが集荷するために、積み荷をステージングするのにかかる時間を表す2つのプロセッサ
- TaskExecuterオブジェクト(これらのオブジェクトはデフォルトではAGVのように見えるため)
- 積み荷を降ろすときに一時的にAGVの目的地として機能するシンク
おそらく最も重要なことは、このステップでコントロールポイントと呼ばれるAGVオブジェクトを使用して3DオブジェクトをAGVネットワークに接続する方法を学ぶことです。コントロールポイントは、固定リソースおよびタスク実行者がAGVネットワークとやり取りできるアクセスポイントです。固定リソースをコントロールポイントに接続することで、固定リソースは搬送を呼び出したり受け取ったりできます。また、タスク実行者をコントロールポインに接続することで、タスク実行者はAGVネットワークに入って移動できます。
AGVネットワークは基本的にフローアイテムをある3Dオブジェクトから別の3Dオブジェクトに搬送するためのより洗練された方法ですが、基本的な搬送ロジックはタスク実行者を使用してフローアイテムを搬送する標準的な方法に非常に似ています。そのため、すべてのオブジェクトがポート接続で接続されていることを確認する必要があります。
作業が完了すると、3Dモデルは次の画像のようになります。
これらのオブジェクトを追加して接続するには:
- AGVグループのライブラリで、7つのコントロールポイントをドラッグして、上部の直線軌道を除く各直線軌道に2つのコントロールポイントを配置します。次の画像に示すように、各コントロールポイントを軌道の辺から約5単位離して配置します。
- 分かりやすくするために、いくつかの新しいコントロールポイントの名前を次のように変更します。
- 次の3Dオブジェクトをライブラリから3Dモデルに追加します。
- 1つのキュー(MainPickUpPointの近く)
- 2つのプロセッサ(MainPickUpPointの近く)
- 1つのシンク(MainDropOffPointの近く)
- 1つのTaskExecuter(AGVEntryPointの近く)
- 分かりやすくするために、オブジェクトの名前を次のように変更します。
- AGV1からAGVEntryPointコントロールポイントへの接続(A接続)を作成してメニューを開きます。[トラベラーAGV]を選択します。AGVが接続されていることを示す赤い線が表示されます。
- 以下のオブジェクトに対して接続(A接続)を作成します。
- [ステージング1]プロセッサから[MainPickUpPoint]コントロールポイントへ
- [ステージング2]プロセッサから[MainPickUpPoint]コントロールポイントへ
- [DropOff]シンクから[MainDropOffPoint]コントロールポイントへ
- [UnloadingDock]キューから[ステージング1]プロセッサへ
- [UnloadingDock]キューから[ステージング2]プロセッサへ
- [ステージング1プロセッサから[DropOff]キューへ
- [ステージング2]プロセッサから[DropOff]キューへ
- [ステージング1]プロセッサからAGV1へのセンターポート接続(S接続)を作成します。
- 前の手順を繰り返して、[ステージング2]プロセッサをAGV1にも接続します。
オブジェクト | 新しい名前 |
---|---|
右上コーナーにあるコントロールポイント | AGVEntryPoint |
左上コーナーにあるコントロールポイント | MainDropOffPoint |
左下コーナーにあるコントロールポイント | MainPickUpPoint |
オブジェクト | 新しい名前 |
---|---|
キュー | UnloadingDock |
Processor1 | ステージング1 |
Processor2 | ステージング2 |
シンク | ドロップオフ |
TaskExecuter | AGV1 |
作業が完了すると、モデルはこのステップの冒頭に表示した画像のようになります。
ステップ3 搬送ロジックの設定
このステップでは、ステージングプロセッサが使用する基本的な搬送ロジックを作成し、AGVネットワークを使用してドロップオフシンクにアイテムを搬送します。ここでは、AGVを標準の3Dオブジェクトロジックに統合する方法を学びます。その後のステップで、それを処理フローと統合する方法を学びます。
このステップの最後に、アンロードドックに到着するアイテムのスケジュールを処理する簡単な処理フローも設定します。ここでは、2つのステージングプロセッサによってただちに処理される2つのフローアイテムのみを配送するようにスケジュールを設定します。将来的には、この到着スケジュールはもっと複雑になります。このステップの主な目的は、基本的な搬送ロジックが機能していることをテストすることです。
作業が終了すると、処理フローは次の画像のようになります。
各アクティビティの機能の概要を次に示します。
アクティビティ | 説明 |
---|---|
ソース:医療品の配送 | [ソースをスケジュール]は、シミュレーションモデル中の特定の時間にトークンを作成するアクティビティです。ここでは、シミュレーションモデルの開始時にこのアクティビティを設定して2つのトークンを作成します。 |
オブジェクトを作成:アンロードドックのアイテム | このアクティビティはボックスのフローアイテムを作成し、それを[UnloadingDock]キュー内に置きます。 |
シンク:作成したアイテム | このアクティビティは、処理フローからトークンを削除します。デフォルト設定を使用します。 |
搬送ロジックを設定するには:
- [ステージング1]プロセッサをダブルクリックして、[プロパティ]ウィンドウを開きます。[フロー]タブで[輸送を使用]チェックボックスをオンにします。
- [OK]ボタンをクリックして変更を保存し、プロパティウィンドウを閉じます。
- [ステージング2]プロセッサについても前の手順を繰り返します。
- メインツールバーで[処理フロー]ボタンをクリックして、メニューを開きます。新しい処理フローを作成するには、[一般処理フローを追加]を選択します。
- [クイックプロパティ]で、この新しいプロセスフローの名前をDeliveryScheduleに変更します。
- [フローチャート]グループのライブラリから、[処理]図形を追加します。
- 分かりやすくするために、図形を「医療品」という名前に変更します。
- 次のアクティビティを処理フローに追加して、積み上げブロックを作成します。
- [スケジュールソース]([トークン作成]で)
- [オブジェクトを作成]([オブジェクト]で)
- シンク(ベーシックの下)
- 分かりやすくするために、新しいアクティビティの名前を次のように変更します。
- [ソース:医療品の配送]アクティビティをクリックし選択します。[クイックプロパティ]の[到着]テーブルで、[数量]列の最初の行にあるセルを見つけます。このセルに「
2
」と入力します。 - [オブジェクト作成:アンロードドックのアイテム]アクティビティを選択しクリックします。[クイックプロパティ]で、[作成場所]オプションが選択されていることを確認します。このオプションの下にあるボックスの横にある[サンプラー]ボタン をクリックして、サンプリングモードに入ります。
- 3Dモデルで、[UnloadingDock]キューをクリックしてメニューを開きます。サンプリングするには、[UnloadingDock]を選択します。
オブジェクト | 新しい名前 |
---|---|
ソース | ソース:医療品の配送 |
オブジェクトを作成 | オブジェクトを作成:アンロードドックのアイテム |
シンク | シンク:作成したアイテム |
モデルをリセットして実行し、基本的なAGV搬送ロジックが機能していることをテストします。
モデルを適切に設定すれば、2つのプロセッサが2つのフローアイテムを処理します。処理が終了すると、AGVは1つのフローアイテムをピックアップして、それをシンクに搬送します。その後、再びループバックして別のフローアイテムを取得します。
モデルが期待通りに動作しない場合は、前に戻ってチュートリアルの以前のステップが正しく完了したことを確認してください。
ステップ4 2台目のAGVを追加する
このステップでは、AGVネットワークにさらにAGVを追加する方法を学習します。AGVを制御するために標準ロジックを使用している場合、複数のAGVの使用を開始すると、ディスパッチャーを使用するように切り替える必要があります。
作業が完了すると、3Dモデルは次の画像のようになります。
2番目のAGVを追加するには:
- AGV1を[ステージング1]と[ステージング2]プロセッサに接続しているセンターポート接続を取り外します。(接続された2つのオブジェクトをクリックしながら、Wキーを長押しします)。
- ライブラリから次のオブジェクトをモデルに追加します。
- ディスパッチャー
- TaskExecuter
- 分かりやすくするために、オブジェクトの名前を次のように変更します。
- ステージング1プロセッサからAGVDispatcherへのセンターポート接続(S接続)を作成します。
- 前の手順を繰り返して、ステージング2プロセッサをAGVDispatcherにも接続します。
- AGVDispatcherから両方のAGVへのポート接続(A接続)を作成します。
- AGV1をAGVEntryPointから離すようにドラッグして、コントロールポイントが3Dモデルに表示されるようにします。
- AGV2からAGVEntryPointコントロールポイントへのポート接続(A接続)を作成してメニューを開きます。[トラベラーAGV]を選択します。2番目のAGVが接続されていることを示す赤い線が表示されます。
オブジェクト | 新しい名前 |
---|---|
ディスパッチャー1 | AGVDispatcher |
TaskExecuter | AGV2 |
モデルをリセットして実行します。
AGV1がドロップオフポイントに留まり動かないために、AGV2はフローアイテムが配送可能になるまでデッドロック状態になります。AGV1が動かないのは、処理するアンロードタスクがもうないためです。その結果、AGV1は処理する新しいタスクが割り当てられるまで現在の位置に留まります。現在のモデルでは、2つのフローアイテムがアンロードドックに到着するようにスケジュールするだけなので、新しいタスクが発生することはありません。
2つのAGVが処理する継続的な作業量を確保することで、この問題は解決できます。異なるAGVがそれぞれ競合することなく積み荷をシンクに配送できるように、シンクに複数のドロップオフポイントを追加することもできます。ただし、AGV処理フローテンプレートを使用する場合は、パークポイントを追加する方が簡単です。これについては、次のチュートリアルタスクで説明します。
結論
ここでは標準の3Dオブジェクトと標準の3Dロジックのみを使用して非常に基本的なAGVモデルを作成しました。次にこの基本モデルをもう少し複雑にします。次のチュートリアルタスクでは、AGV処理フローテンプレートの使用方法を学習し、ピックアップポイントとパーキングポイントをモデルに追加します。「チュートリアルタスク4.2 - 処理フローを使用したAGV」に進みます。