タスク2.1 - ベーシックなタスクシーケンスを構築する

タスクの概要

このチュートリアルのタスクでは、処理フローで非常にベーシックなタスクシーケンスを作成する方法を学習します。この処理フローを3Dモデルにリンクして、モデルでタスク実行者をコントロールする方法を学習します。またこのチュートリアルタスクでは、処理フローインスタンスの概念についても紹介します。

3Dモデルで2名のオペレーターが使用するフローアイテムのロードとアンロードを行うための、簡単なタスクシーケンスを作成します。このタスクを完了すると、3Dモデルは次のようになります。

ラベルを使用して3Dモデルに接続する

このモデルでは、ラベルを広範に使用して処理フローのトークンを3Dモデル内のオブジェクトにリンクします。処理フローは、モデルの3Dオブジェクトへの参照を含むラベルを使用して、3Dモデルのロジックをコントロールできます。トークンが処理フローのアクティビティを移動すると、この参照を使用して、アクティビティのロジックを3Dモデルのオブジェクトに適用できます。処理フローでラベルを操作する方法をより深く理解するには、「ラベルについての主要な概念」を参照してください。

このモデルでは、次の目的でラベルを使用します。

  • トークンを3Dモデル内のフローアイテムにリンクする - 「item」と呼ばれるラベルを作成して、処理フローのトークンを3Dモデルで輸送する必要があるフローアイテムにリンクさせます。
  • 動的にフローアイテムの目的地を設定する - フローアイテムのdestinationラベルは、フローアイテムをどのプロセッサに輸送するかを追跡します。処理フローは、輸送タスクシーケンスでこのラベルを参照します。

ステップ1 3Dモデルを構築する

このステップでは、3Dシミュレーションモデルで生産ラインを表す基本オブジェクトを追加します。また、形状オブジェクトのプロパティを変更して、クリーニングサプライのクローゼットのように見せます。より高度なタスクシーケンスを作成する場合は、チュートリアルの次のタスクまでクローゼットは使用されないことに注意してください。作業が完了すると、モデルは次のようになります。

このモデルを作成するには:

  1. 新しいモデルで、ライブラリから次の3Dオブジェクトを追加します。
    • 1つの[ソース
    • 2つの[プロセッサ
    • 1つの[シンク
    • 2つの[オペレーター
    • 1つの[形状]([ビジュアル]グループの下)
  2. 分かりやすくするために、3Dオブジェクトの名前を次のように変更します。
  3. オブジェクト 新しい名前
    ソース ソース(任意の数字は削除)
    シンク シンク(任意の数字は削除)
    最初のプロセッサ プロセッサ A
    2つ目のプロセッサ プロセッサ B
    最初のオペレーター オペレーター A
    2番目のオペレーター オペレーター B
    形状 サプライクローゼット
  4. 次のオブジェクト間でポート接続(A接続)を作成します。
    • ソース]から[プロセッサ A]へ
    • プロセッサ A]から[プロセッサ B]へ
    • プロセッサ B]から[シンク]へ
  5. 次のオブジェクト間でセンターポート接続(S接続)を作成します。
    • プロセッサ A]から[オペレーター A]へ
    • プロセッサ B]から[オペレーター B]へ
  6. サプライクローゼット形状をクリックして、右側でそのプロパティを表示します。
  7. ビジュアルツール]セクションで、[ビジュアル表示]メニューを開き、[立方体]を選択します。
  8. ビジュアル]セクションで、[]ボックスの横にある矢印をクリックし、濃い茶色を選択します。
  9. 位置、回転、サイズ]グループの[サイズ ボックスに次の数値を入力します。
    • Xサイズ:1.50
    • Yサイズ:0.75
    • Zサイズ:3.00

3Dモデルが、このステップの最初に表示した画像のようになっていることを確認します。

ステップ2 タスクシーケンスのサブフローを作成する

2名のオペレーターがフローアイテムのロードやアンロードを行う必要がある際に使用できる、シンプルなタスクシーケンスを作成します。処理フローでは、サブフローを使用するとタスク実行者にタスクシーケンスを簡単に割り当てることができるため、サブフローを作成します。

このステップでは、オペレーターがサブフローを実行するたびに別のインスタンスを実行するように処理フローを設定します。つまり、各オペレーターには同じサブフローを使用してタスクシーケンスのベーシックテンプレートが提供されますが、各オペレーターは独自の処理フローのインスタンスを実行します。これは独自の処理フローのコピーを実行するようなものです。この方法の利点の1つは、オペレーターが使用する共有アセットが2名のオペレーターにとってローカルであることです。詳細については、「サブ処理フロー」と「処理フローインスタンス」を参照してください。

このステップでは、処理フローにアクティビティのみを追加します。後のステップでプロパティを編集してロジックを作成します。作業が完了すると、処理フローは次のようになります。

この処理フローを構築するには:

  1. メインツールバーで[処理フロー]ボタンをクリックして、メニューを開きます。[サブフローを追加]を選択して、新しい処理フローを開きます。
  2. [プロパティ]の[処理フローの名前]ボックスで、現在のテキストを削除し、「TransportItems」と入力します。
  3. 処理フローインスタンス]グループで、[インスタンスの作成]メニューを開き、[インスタンスごと]を選択します。
  4. ライブラリから、次のアクティビティを処理フローに追加し、スタックブロックでこの順序で配置します。
    • 開始]アクティビティ([サブフロー]グループの下)
    • ロード]アクティビティ([タスクシーケンス]グループの下)
    • アンロード]アクティビティ([タスクシーケンス]グループの下)
    • 終了]アクティビティ([サブフロー]グループの下)
  5. 分かりやすくするために、アクティビティの名前を次のように変更します。
  6. アクティビティ 新しい名前
    開始 サブフローを開始
    ロード アイテムをロード
    アンロード アイテムをアンロード
    終了 サブフローを終了

処理フローが、このステップの冒頭に表示した画像のようになることを確認してください。

ステップ3 処理フローに3Dオブジェクトを添付する

このサブフローをオブジェクトシミュレーションモデルにリンクします。プロセッサでは、プロセッサがオペレーターを使用してフローアイテムを輸送するたびに、タスクシーケンスを動的に実行できる「タスクシーケンスのサブフローを使用」と呼ばれる特別なピックリストオプションを使用します。ピックリストオプションを設定し、プロセッサがセンターポートに接続されたオペレーターにタスクを割り当てるようにします。

3Dオブジェクトを添付するには:

  1. 3Dモデルで、[プロセッサA]をクリックして、右側でそのプロパティを表示します。
  2. 出力]セクションで、[輸送を使用]チェックボックスをオンにします。
  3. 輸送を使用]ボックスの横にある矢印をクリックして、メニューを開きます。[カスタマイズされたロジック]を選択してから、[処理フロー:タスクシーケンスのサブフローを使用]をメニューから選択し、このピックリストのオプションを開きます。
  4. 所有者オブジェクト]ボックスの横にある矢印をクリックして、メニューを開きます。メニューから「current.centerObjects[1]」を選択します。
  5. サブフロー]ボックスで選択したサブフローが「TransportItems」であることを確認します。これは、前のチュートリアルのステップで作成したサブフローです。
  6. アクティビティ]ボックスの横にある矢印をクリックして、メニューを開きます。[開始]を選択します。
  7. ピックリストのデフォルトのラベルを使用します。
  8. プロセッサ B]に対して前のステップを繰り返します。

シミュレーションモデルを保存することをおすすめします。

ステップ4 サブフローに動的参照を追加する

この処理フローのアクティビティが機能する方法の概要を、次のテーブルに示します。

アクティビティ 説明
サブフローを開始 プロセッサで生成されるすべての新しいタスクはトークンを作成し、処理フローのここから開始されます。
アイテムをロード プロセッサのセンターポートに接続されたオペレーターは、フローアイテムをロードします。
アイテムをアンロード オペレーターは、フローアイテムをプロセッサの出力ポートに接続された下流の固定リソースに移動します。
終了 サブフローが完了すると、トークンはこのアクティビティに入って破棄され、タスクが完了したことを示します。

このステップでは、サブフローのアクティビティを動的に編集します。つまり、サブフローに添付される各インスタンス(各プロセッサとオペレーター)に固有の条件に基づいて変更されます。オペレーターがプロセッサからフローアイテムをピックアップし、その目的地に輸送するたびに、サブフローの別のインスタンスとして機能することに注意してください。

currentキーワードを使用して、サブフローに添付されるオブジェクトインスタンスを参照します。この場合はタスクシーケンスを作成したプロセッサに応じて、オペレーター Aまたはオペレーター Bのいずれかになります。currentキーワードを使用すると、両方のオペレーターが同じタスクシーケンスの個別のコピー(インスタンス)を実行できるようになります。各オペレーターに1つのタスクシーケンスを作成するのではなく、タスクシーケンスを1回作成するだけでよいので、インスタンスを実行する方が効率的です。

また、トークンのラベルへの参照も追加します。プロセッサがこのタスクシーケンスのサブフローを呼び出すと、完了する必要のあるタスクを表すトークンが作成されます。前のチュートリアルのステップで、このトークンに割り当てられるラベルを設定したことを思い出してください。itemラベルには、輸送が必要なフローアイテムへの動的参照が含まれ、toObjectラベルには、フローアイテムを受け取る下流オブジェクトへの動的参照が含まれます。

処理フローでこれらのプロパティを編集するには:

  1. 処理フローを開いた状態で、スタックブロックをクリックして選択します。
  2. [プロパティ]のアイテムをロードアクティビティで、[実行者/タスクシーケンス]ボックスの横にある矢印をクリックして、メニューを開きます。[current(インスタンスオブジェクト)]を選択します。
  3. また、[アイテムをアンロード]アクティビティに対してもこのステップを繰り返します。
  4. アイテムをロード]アクティビティと[アイテムをアンロード]アクティビティの両方の[アイテム]ボックスに「token.item」がリストされていることを確認します。
  5. アイテムをアンロード]アクティビティの[ステーション]ボックスで、既存のテキストを削除し、「token.toObject」と入力します。

作業が完了すると、[プロパティ]は次の画像のようになります。

ステップ5 シミュレーション実行中にインスタンスを表示する

このステップでは、シミュレーション実行中に処理フローインスタンスを表示できるように、処理フローインスタンスを開く方法を学習します。

  1. シミュレーションモデルをリセットして実行します。両方のオペレーターがタスクシーケンスのロード作業を開始できるようにシミュレーションを実行します。
  2. 処理フローの空白スペースをクリックして、何も選択されていないことを確認します。
  3. [プロパティ]の[処理フローインスタンス]グループで、2名のオペレーターが[エンティティの追加 (インスタンス)]リストに表示されていることを確認します。リストで[オペレーター A]をクリックして選択します。
  4. PFビューを開く]ボタンをクリックします。処理フローの新しいタブが開き、オペレーター Aの処理フローインスタンスが表示されます。
  5. 元の処理フローに戻り、前のステップを繰り返して、オペレーター Bの処理フローインスタンスを開きます。
  6. 必要に応じて、3つの処理フローをすべて同時に表示できるようにペインを分割できます。詳細については、「ウィンドウとタブを並べ替える」を参照してください。
  7. シミュレーションモデルを一時停止した場合は、モデルの実行を再開してください。

シミュレーションが実行されると、3Dモデルのフローアイテムのロードとアンロードを行うオペレーターが表示されます。TransportItems処理フローでは、オペレーターがフローアイテムのロードとアンロードを行うたびに、1つまたは2つのトークンが処理フローを移動します。オペレーターの2つの処理フローインスタンスのそれぞれが、3DモデルのオペレーターとTransportItems処理フローに関連していることに注意してください。

結論

この段階では、処理フローは非常にベーシックなものであり、固定リソースの[輸送を使用]プロパティで利用可能な事前プログラミングされた標準ロジックと大差ありませんが、次のチュートリアルタスクでは、処理フローによって複雑なタスクシーケンスを簡単にタスク実行者に割り当てることができる、カスタムタスクが追加できるようになります。「チュートリアルタスク2.2 - タスクシーケンスをカスタマイズする」に進みます。