タスク4.1 - 3Dモデルと処理フローを構築する
タスクの概要
このタスクの目標は、ステッカーマシンが製品ラインに沿ってステッカーを製品に貼り付けるワークステーションをシミュレーションする3Dモデルと処理フローを構築することです(このシミュレーションモデルの詳細については、チュートリアルの概要を参照してください)。
このタスクでは、ステッカーシステムの3Dモデルの最初の段階を構築し、処理フローツールを使用して3Dモデルをコントロールするベーシックロジックを作成します。
ステップ1 3Dモデルを構築する
このステップでは、3Dシミュレーションモデルで生産ラインを表す基本オブジェクトを追加します。次に、従業員がステッカーマシンのステッカーロールを交換する場合にツールの変更をシミュレーションするために必要なオブジェクトを追加します。作業が完了すると、モデルは次のようになります。
このモデルを作成するには:
- まず、ビジネスシステムの主要生産ラインを作成します。ライブラリを開いた状態で、次のオブジェクトをこの順序で3Dモデルにドラッグします。
- [ソース]
- [キュー]
- [プロセッサ]
- [シンク]
- 各オブジェクトの間に、モデルに追加した順序でポート接続(A接続)を作成します。
- 次に、ステッカーロール用のストレージエリアとして機能するキューを追加します。モデルでプロセッサのそばにキューを配置します。
- モデルにオペレーターを追加します。オペレーターは、消耗したステッカーロールを新しいロールに交換します。オペレーターをプロセッサとキューの間に配置します。
- 分かりやすくするために、次のオブジェクトの名前を変更します。
![](Images/ProductionLine.png)
オブジェクト | 新しい名前 |
---|---|
プロセッサ | StickerMachine |
キュー(2番目のキュー) | RollStorage |
オペレーター | RollOperator |
このステップの冒頭に表示したモデルの画像のようにモデルがなっていることを確認します。
ステップ2 ロール再充填処理フローにアクティビティを追加する
このステップでは、ステッカーロール充填処理フローのロジックをコントロールするアクティビティを追加します。また、処理フローにリスト(共有アセット)を追加します。
ここでは、アクティビティの追加、名前の変更、それらのアクティビティ間の接続の作成のみを行います。アクティビティのプロパティ設定の変更は後で行います。
作業が完了すると、処理フローは次のようになります。
この処理フローを作成するには:
- メインツールバーの[処理フロー]をクリックし、[ 一般的な処理フローを追加]を選択します。
- 処理フローライブラリで、[コンテナ]形状([表示]の下)を処理フローにドラッグします。
- この形状の名前を「ステッカーロール再充填」とします。
- 新しい形状内に、次のアクティビティをこの順序で追加します(スタックブロックを連結したり、作成したりする必要はありません)。
- [スケジュールソース]([トークンの作成]の下)
- [リストにプッシュ]([共有アセット]の下)
- [タスクシーケンスを作成]([タスクシーケンス]の下)
- 2つの[移動]アクティビティ([タスクシーケンス]の下)
- [タスクシーケンスを終了]([タスクシーケンス]の下)
- [リスト]アセット([共有アセット]の下)を[ステッカーロール再充填]形状の下に追加します(このリストは処理フローの複数のアクティビティで使用されるため、形状の外側になります)。
- 次のアクティビティとアセットの名前を変更します。
- 必要に応じて、アクティビティのサイズを変更してフルネームを表示します。
- [TSを作成:新しいロールを取得]アクティビティと2つの[移動]アクティビティをスタックブロックにまとめます。
- [ソース]から[リストにプッシュ]への接続を作成し、[リストにプッシュ]から[移動]アクティビティのスタックブロックへの別の接続を作成します。
- スタックブロックから[リストにプッシュ]アクティビティへの接続を作成します。
オブジェクト | 新しい名前 |
---|---|
ソース | ソース:2つのロールを開始 |
リストにプッシュ | リストにプッシュ:ステッカーロール |
TSを作成 | TSを作成:新しいロールを取得 |
移動(1つ目) | 移動:ロールを選択 |
移動(2つ目) | 移動:新しいロールをインストール |
リスト | リスト:使用中のステッカーロール |
シミュレーションモデルを保存することをおすすめします。
ステップ3 ロール再充填ロジックを構築する
このステップでは、前のステップで追加したアクティビティのプロパティを編集します。ステッカーロール再充填処理フローのアクティビティが機能する方法の概要を、次のテーブルに示します。
アクティビティ | 説明 |
---|---|
スケジュールソース:2つのロールを開始 | シミュレーションモデルが開始すると、このアクティビティでは、3Dモデルのステッカーマシンで最初の2つのステッカーロールを表すトークンが作成されます。スケジュールソースが2つのトークンを作成すると、ステッカーロールが最初にマシンにインストールされたときのステッカーの数を表す「rollQuantity」というラベルが追加されます。rollQuantityラベルは、ステッカーの初期値「20」で始まります。 |
リストにプッシュ:ステッカーロール | 新しいロールがステッカーマシンにインストールされると、そのロールが[リスト:使用中のステッカーロール]に追加されます。ロールが空の場合(rollQuantityが0になったため)、トークンは[移動:新しいロールを取得]アクティビティに移行します。 |
TSを作成:新しいロールを取得 | ステッカーロールが空の場合、このアクティビティでは新しいタスクシーケンスが作成されます。これは、RollOperatorに割り当てられる一連のタスクです。この新しいタスクシーケンスは「getRoll」と呼ばれます。ステッカーのロールが空になるたびに新しいgetRollタスクシーケンスを作成することによって、新しいステッカーロールを選択してインストールしているときに、RollOperatorが中断されたり、他のタスクで動作したりするのを防ぐことができます。 |
移動:ロールを選択 | このアクティビティでは、移動タスクがgetRollタスクシーケンスに追加されます。このタスクシーケンスでは、RollOperatorがRollStorageキューに移動し、新しいステッカーロールを取得します。 |
移動:新しいロールをインストール | このアクティビティでは、getRollタスクシーケンスに2つ目の移動タスクが追加されます。RollOperatorがRollStorageキューに移動すると、ステッカーマシンに戻り、新しいステッカーロールをインストールします。トークンは[リストにプッシュ]アクティビティにループバックし、サイクルは無制限で繰り返されます。 |
TSを終了 | このアクティビティは、タスクシーケンスの終了を宣言します。 |
リスト:使用中のステッカーロール | このリストには、rollQuantityラベルを追跡し、更新するフィールドが追加されます。3Dモデルのステッカーマシンによってフローアイテムが処理されるたびに、リストの[rollQuantity]が1つずつ減少します。このリストは、ロール再充填処理フローとロール使用処理フローの両方と同時に相互作用することに注意してください。 |
この機能を作成するには:
- [スケジュールソース]をクリックして選択します。[プロパティ]で次の操作を実行します。
- [到着]で、[量]列のセルをダブルクリックし、「
2
」と入力します。 - [作成されたトークンにラベルを割り当て]で[追加]ボタン
をクリックして、新しいラベルを追加します。
- [名前]ボックスに、「
rollQuantity
」と入力します。 - [値]ボックスに「
20.00
」と入力します。
- [到着]で、[量]列のセルをダブルクリックし、「
- [リストにプッシュ]アクティビティをクリックして選択します。次に、[リンクなし]アイコン
をクリックしてサンプリングモードに入ります。[リスト:使用中のステッカーロール]をクリックし、まとめてリンクします。
- [タスクシーケンス]アクティビティのスタックブロックをクリックして選択します。[プロパティ]の[TSを作成:新しいロールを取得]で次の操作を実行します。
- [実行者/タスクシーケンス]ボックスを見つけます。このボックスの横にある[サンプラー]ボタン
をクリックして、サンプリングモードに入ります。3Dモデルの[RollOperator]をクリックしてメニューを開きます。[RollOperator]を選択し、このオペレーターにタスクシーケンスを割り当てます。
- 次に、タスクシーケンスを含むラベルの名前を変更します。[割り当て先]オプションの下にあるボックスの中をクリックし、「
Label: getRoll
」と入力します。
- [実行者/タスクシーケンス]ボックスを見つけます。このボックスの横にある[サンプラー]ボタン
- [プロパティ]の[移動:ロールを選択]で次の操作を実行します。
- [実行者/タスクシーケンス]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントし、[getRoll]を選択します。
- [目的地]ボックスを検索します。このボックスの横にある[サンプラー]ボタン
をクリックして、サンプリングモードに入ります。3Dモデルの[RollStorage]キューをクリックして、メニューを開きます。[RollStorage]を選択して、移動先としてキューを選択します。
- [プロパティ]の[移動:新しいロールをインストール]で次の操作を実行します。
- [実行者/タスクシーケンス]ボックスの横にある矢印をクリックして、メニューを開きます。[トークンラベル]をポイントし、[getRoll]を選択します。
- [目的地]ボックスを検索します。[サンプラー]ボタン
をクリックして、サンプリングモードに入ります。3Dモデルの[StickerMachine]プロセッサをクリックしてメニューを開きます。[StickerMachine]を選択し、移動先としてマシンを選択します。
- [プロパティ]の[TSを終了]で次の操作を実行します。
- [タスクシーケンス]の下のボックスをクリックし、「token.getRoll」と入力します。
- 最後に、リストのプロパティを設定します。[使用中のステッカーロール]リストをクリックして選択します。[プロパティ]で次の操作を実行します。
- [詳細]ボタンをクリックして、詳細リストのプロパティを開きます。
- rollQuantityラベルを参照および更新するフィールドをこのリストに追加します。[フィールド]タブを開いた状態で[追加]ボタン
をクリックして、メニューを開きます。[ラベル]を選択します。
- [ラベルフィールド]ボックスに「
rollQuantity
」と入力します。 - [動的]チェックボックスがオフになっていることを確認し、[OK]をクリックして変更を保存します。
シミュレーションモデルを保存することをおすすめします。
ステップ4 ロール使用処理フローにアクティビティを追加する
このステップでは、ステッカーロール使用処理フローのロジックをコントロールするアクティビティを追加します。ここでは、アクティビティの追加、名前の変更、それらのアクティビティ間の接続の作成のみを行います。アクティビティのプロパティ設定の変更は後で行います。
作業が完了すると、処理フローは次のようになります。
この処理フローを作成するには:
- 処理フローライブラリで、[コンテナ]形状([表示]の下)を処理フローにドラッグします。
- この形状の名前を「ステッカーロール使用」に変更します。
- 次のようにスタックブロックを作成します。
- [イベントトリガーソース]([トークンの作成]の下)
- [リストからプル]([共有アセット]の下)
- 最初のスタックブロックの下に、以下を使用して別のスタックブロックを作成します。
- [カスタムコード]([ベーシック]の下)
- 別の[リストからプル]
- 別の[カスタムコード]
- 2つ目のスタックブロックの下に[シンク]アクティビティを追加します。
- 次のアクティビティの名前を変更します。
- 最初のスタックブロックから[シンク]アクティビティへの接続を作成します。
- 作成した接続をクリックして選択します。[プロパティ]の[名前]ボックスに「Succeed」と入力します。
- 最初のスタックブロックから直下のスタックブロックへの接続を作成します。
- 作成した接続をクリックして選択します。[プロパティ]の[名前]ボックスに「Fail」と入力します。
- 2番目のスタックブロックから[シンク]アクティビティへの接続を作成します。
オブジェクト | 新しい名前 |
---|---|
ソース | ソース:フローアイテムの入口 |
リストからプル | リストからプル:ステッカーロール |
カスタムコード | カスタム:マシンを停止 |
リストからプル | リストからプル:ステッカーロール |
カスタムコード | カスタム:マシンを再開 |
シンク | シンク:フローアイテムの出口 |
シミュレーションモデルを保存することをおすすめします。
ステップ5 ロール使用ロジックを構築する
このステップでは、前のステップで追加したアクティビティのプロパティを編集します。ステッカーロール使用処理フローのアクティビティが機能する方法の概要を次に示します。
アクティビティ | 説明 |
---|---|
イベントトリガーソース:フローアイテムの入口 | このアクティビティでは、3Dモデルのステッカーマシンをリッスンします。フローアイテムがステッカーマシンに入るたびに、その特定のフローアイテムを表し、追跡するための新しいトークンが作成されます。 |
リストからプル:ステッカーロール | このアクティビティがプルするのは[リスト:使用中のステッカーロール]です。その際、リストではrollQuantityラベルの数量が1減ります(このラベルは、ロール再充填処理フローの2つのラベルロールを表すトークンにあります)。[rollQuantity]が0の場合(ロールが空で、交換用ロールがまだインストールされていないため)、トークンは失敗し、[カスタムコード:マシンを停止]アクティビティに送られます。rollQuantityが0でない場合は成功となり(ステッカーマシンがステッカーをフローアイテムに正常に貼り付けていることをシミュレートションする)、トークンは[シンク]アクティビティに送られます。 |
リスト:使用中のステッカーロール | 3Dモデルのステッカーマシンによってフローアイテムが処理されるたびに、リストの[rollQuantity]が1つずつ減少します。rollQuantityが0になると、ロール再充填処理フローで移動タスクシーケンスが同時にトリガーされることに注意してください。つまり、ロールが空になると、RollOperatorはRollStorageキューに移動し、別のロールを選択します。 |
カスタムコード:マシンを停止 | このアクティビティでは、両方のステッカーロールが空の場合にステッカーマシンを停止します。トークンは、このシーケンスで次のアクティビティに移動します。 |
リストからプル:ステッカーロール | トークンがこのアクティビティにある間、[リスト:使用中のステッカーロール]から継続的なプルを試みます。失敗した場合は、このアクティビティに残り、再試行します。RollOperatorがステッカーマシンに新しいロールをインストールし、rollQuantityラベルが20に戻るまで成功にはなりません。このトークンは、ステッカーをリストから正常にプルした後、シーケンスの次のアクティビティに移動します。 |
カスタムコード:マシンを再開 | このアクティビティでは、RollOperatorがマシンに新しいステッカーロールをインストールした後にステッカーマシンを再起動します。 |
シンク:フローアイテムの出口 | このアクティビティでは、フローアイテムがステッカーマシンから出たら、処理フローからトークンを削除します。 |
この機能を作成するには:
- [ステッカーロール使用]形状の最初のスタックブロックをクリックして選択します。
- [ソース:フローアイテムの入口]の横にある[リンクなし]アイコン
をクリックしてサンプリングモードに入ります。3Dモデルの[StickerMachine]をクリックして、メニューを開きます。[StickerMachine:エントリ時]を選択します。[プロパティ]で、次のプロパティが自動で更新されることに注意してください。
- 最初のスタックブロックを選択したままの状態で[リンクなし]アイコン
([リストからプル:ステッカーロール]アクティビティの横)をクリックしてサンプリングを開始します。[リスト:使用中のステッカーロール]をクリックし、まとめてリンクします。
- [リスト:使用中のステッカーロール]の[クイックプロパティ]で[詳細]を押して、リストの全プロパティのウィンドウを開きます。[一般]タブに移動します。[SELECT値をプラーラベルに割り当て]チェックボックスをオフにし、[最初のSELECT値を数量詞として使用]チェックボックスをオンにします。[OK]をクリックして変更を適用し、プロパティウィンドウを閉じます。
- [リストからプル:ステッカーロール]アクティビティの[クイックプロパティ]で次の操作を実行します。
- [クエリ]ボックスの横にある矢印をクリックして、メニューを開きます。[SELECT]をポイントし、[rollQuantity]を選択します。
- [最大待機タイマーの使用]チェックボックスをオンにします。このボックスをクリックすると、このチェックボックスの下にプロパティの追加セットが表示されます。
- [OnWaitTimerFired]ボックスの横にある[プロパティを編集]ボタン
をクリックし、トークンが失敗したときに実行されるアクションを編集します。
- [トークンをリリース]アクションの横にある矢印をクリックしてプロパティを展開します。
- [目的地]ボックスに「
"Fail"
」と入力します。注:これは2位のコネクターなので、目的地として「2
」と入力すると同じ効果があります。
- [ステッカーロール使用]形状の2番目のスタックブロックをクリックして選択します。
- [プロパティ]の[カスタムコード:マシンを停止]で次の操作を実行します。
- [カスタムコード]ボックスの横にある[追加]ボタン
をクリックして、メニューを開きます。[コントロール]をポイントし、[オブジェクトを停止]を選択します。[オブジェクトを停止]のプロパティが開きます。
- [オブジェクト]ボックスの横にある[サンプラー]ボタン
をクリックして、サンプリングモードに入ります。3Dモデルの[StickerMachine]をクリックします。
- [カスタムコード]ボックスの横にある[追加]ボタン
- 2つ目のスタックブロックを選択したままの状態で[リンクなし]アイコン
([リストからプル:ステッカーロール]アクティビティの横)をクリックしてサンプリングを開始します。[リスト:使用中のステッカーロール]をクリックし、まとめてリンクします。
- [プロパティ]の[リストからプル:ステッカーロール]で、[クエリ]ボックスの横にある矢印をクリックしてメニューを開きます。[SELECT]をポイントし、[rollQuantity]を選択します。
- [プロパティ]の[カスタムコード:マシンを再開]で次の操作を実行します。
- [カスタムコード]ボックスの横にある[追加]ボタン
をクリックして、メニューを開きます。[コントロール]をポイントし、[オブジェクトを再開]を選択します。
- [オブジェクト]ボックスの横にある[サンプラー]ボタン
をクリックして、サンプリングモードに入ります。3Dモデルの[StickerMachine]をクリックします。
- [カスタムコード]ボックスの横にある[追加]ボタン
シミュレーションモデルを保存することをおすすめします。
ステップ6 シミュレーションモデルを実行する
次に、モデルが正しく動作していることをテストして確認します。モデルを実行する前に、実際のリストが確認できるように、[使用中のステッカーロール]リストのエントリを開きます。
- [リスト:使用中のステッカーロール]をクリックして選択します。
- [プロパティ]で、[エントリを表示]ボタンをクリックしてリストのエントリを開きます。モデルを実行する前は空白になります。
リセットしてモデルを実行し、実際の様子を見てみましょう。
モデルを実行すると:
- 2つのステッカーロールがステッカーロール再充填処理フローに表示されます。
- 各フローアイテムがステッカーマシンに入ると、rollQuantityが1ずつ減少します。
- 1つのロールが0になるとリストから消え、RollOperatorは別のロールを取得するためRollStorageキューに移動します。
- RollOperatorが移動している間、ステッカーマシンは2つ目のステッカーロールからステッカーを使用し始めます。
- RollOperatorがステッカーマシンにロールをインストールすると、それはリストに再び表示され、処理が繰り返されます。
RollStorageキューはステッカーマシンにかなり近いため、RollOperatorは2つ目のロールがなくなる前に常に新しいロールを正常にインストールできますが、ステッカーがなくなったときにステッカーマシンを停止する場合は、RollStorageキューをステッカーマシンから遠くに離すか、ロールのステッカー数を減らしてみてください([スケジュールソース]のrollQuantityラベルで開始番号を減らします)。
結論
ステッカーシステムでベーシックな3Dモデルと処理フローを構築しました。次はステッカーシステムのクローンを作成してみましょう。このチュートリアルの次の2つのタスクでは、3Dモデルと処理フローのクローンを作成するさまざまな方法を比較します。これらのタスクを完了すると、処理フローインスタンスを使用してクローンを作成する方が効果的な理由がさらに理解できるようになります。「チュートリアルタスク4.2 - コピーと貼り付けを使ってクローンを作成する」に進みます。