処理フロー変数
処理フロー変数とは
コンピュータプログラミングにおいて、変数とは異なる条件に応じて変化する可能性のある値をいいます。処理フロー変数も同様に機能します。処理フローに変数を作成すると、さまざまな条件下で定期的に変化する可能性のあるシミュレーションモデルの各側面をより詳細にコントロールできます。
処理フロー変数は以下の目的で使用できます。
- 頻繁に変更するシミュレーションモデル内の要素を集中管理する場所として使用できます。ダッシュボードと同様に、処理フロー変数は、あるシミュレーション実行から別のシミュレーション実行に頻繁に変更する必要のある処理フロー設定をすばやく更新できるグローバルリポジトリを提供できます。多くの処理フローテンプレートで、この目的のために処理フロー変数を使用します。
- 処理フローに複数のオブジェクトをアタッチしたときに、モデルのスケールを調整するのに役立ちます。複数の異なるオブジェクトを処理フローにアタッチする場合(処理フローの複数の異なるインスタンスを実行している場合)、処理フロー変数を使用して、処理フロー内のオブジェクトごとに変化しうる変数をすばやく設定できます。
処理フロー変数はやや抽象的な概念であるため、これが役立つ例をいくつか説明します。
処理フローをコントロールパネルとして使用する
処理フロー内のさまざまなアクティビティの複数のプロパティで、特定の設定を参照しなければならない場合があります。その場合、これらのプロパティすべての共通参照ポイントとして処理フロー変数を使用すると便利です。処理フロー変数を使用すると、一元化された場所で設定の値を編集でき、一度に複数のプロパティを更新する必要がなくなります。
たとえば、AGVテンプレート処理フローを使用して、無人搬送車(AGV)を使用するシミュレーションモデルをコントロールするとします。AGVのブランドまたはモデルによって、バッテリー寿命が異なる可能性があります。AGVがフローアイテムを降ろすまたは取得する時間は、特定のモデルに固有の要因によって変わる可能性があります。そのため、AGVテンプレートでは、処理フローに接続されているすべてのAGVのこうした設定を簡単にコントロールできるよう、3つの異なる処理フロー変数を使用できます。
複数インスタンスで処理フロー変数を使用する
複数のプロセッサを使用するシミュレーションを作成し、すべてが同じオブジェクトの処理フローから、同じ基本ロジックを実行すると想定します。ただし、各プロセッサにはそのプロセッサ専用の単一オペレーターが必要であり、モデル内の他のプロセッサと共有することはできません。また、各プロセッサに独自の処理時間が必要であるとします。
オブジェクトの処理フローに、処理時間を計算し各プロセッサに割り当てる特定のオペレーターを指定する、ローカル処理フロー変数を追加できます。
各プロセッサをオブジェクトの処理フローにアタッチした後、プロセッサの[クイックプロパティ]でこれらの変数のデフォルト値を設定できます。たとえば溶接ステーションを、処理時間を60とし、タスク実行者が必要とされるときに溶接オペレーターを使用するよう設定できます。
組み立てステーションには、同じ処理フロー変数に対して異なる設定ができます。
最後に、関連する処理フローアクティビティが処理時間変数を参照するよう設定すると、任意のタスクシーケンスがオペレーター変数に割り当てられます。シミュレーションモデルが実行されると、アタッチされた各プロセッサはその処理フローの別のインスタンスとして実行されます。各プロセッサは、[クイックプロパティ]で処理フロー変数の値を参照します。
変数を処理フローに追加する
処理フロー変数は、一般処理フローを含むあらゆるタイプの処理フローに追加できます。処理フロー変数を追加するには、次のようにします。
- 処理フローを開き、処理フロー内で何も選択されていないことを確認します。
- [クイックプロパティ]で[その他のプロパティ]ボタンをクリックします。
- [変数]タブで[追加]ボタン をクリックします。新しい変数がタブに表示されます。
- [名前]ボックスに、この変数のわかりやすい名前を入力します。シミュレーションモデルの文脈で理解しやすい、直感的な名前を選ぶようにしてください。
- [タイプ]メニューで、変数のデータタイプを選択します。たとえば、変数が3Dモデル内のオブジェクトを参照する場合は、[オブジェクト]を選択します。変数が処理時間などの数値を返す必要がある場合は、[数値]を選択します。
- デフォルトでは[ユーザーアクセス可能]チェックボックスがオンになっています。シミュレーションモデルを表示しているユーザーが変数を編集しないようにするには、このチェックボックスをオフにします。
- [定義]メニューから、変数をグローバルまたはローカルのどちらにするかを決定します。このメニューでの選択は、変数の値の設定場所と設定方法に影響します。変数がグローバルの場合、その変数を処理フロー自体の絶対値に設定します。変数がローカルの場合、処理フローにアタッチされている各オブジェクトで定義されている相対値に変数を設定します。
- 必要に応じて、[デフォルト値]ボックスに変数のデフォルト値を入力または選択します。
- [OK]を押して変更を保存し、ウィンドウを閉じます。
- 変数の設定を変更する必要がある場合は、処理フローのクイックプロパティの[その他のプロパティ]ボタンをクリックし、[変数]タブで必要な変更を加えます。
作業が終了すると、[クイックプロパティ]で、処理フローの一般的なプロパティの処理フロー変数グループに新しい変数が表示されます。通常、クイックプロパティペインの下部(ラベルグループの後)にあります。たとえば、デフォルト値15の[MyProcessTime]という処理フロー変数を作成すると、次の画像のようになります。
処理フローアクティビティを変数にリンクする
処理フロー変数を処理フローに追加した後で、その変数を処理フローアクティビティの任意のプロパティにリンクできます。シミュレーション実行中にそのプロパティの処理フロー変数の値を使用します。たとえば、処理フロー変数の値を使用して遅延時間を設定するように[遅延]アクティビティを設定できます。
処理フローアクティビティを変数にリンクするには、次のようにします。
- 処理フローアクティビティをクリックして選択します。
- [クイックプロパティ]で、処理フロー変数にリンクするプロパティを検索します。
- 処理フローの横にある矢印をクリックしてメニューを開きます。[ProcessFlow変数]をポイントして、使用可能な変数のリストを開きます。適切な変数を選択します。
作業が終了すると、次の例のように、アクティビティに処理フロー変数の名前が表示されます。
変数の値を設定する
変数の値を設定は、その変数がグローバルに定義されているかローカルに定義されているかによって異なります。(詳細については、「変数を処理フローに追加する」のステップ7を参照してください)。
グローバルに定義された変数を設定する
グローバルに定義された変数を変更するには、次のようにします。
- 処理フローを開き、処理フロー内で何も選択されていないことを確認します。
- [クイックプロパティ]の[処理フロー変数]で、設定する特定の変数を選びます。
- 変数を編集して、必要な値に設定します。変数のデータタイプによって、使用できる値の種類と関連するピックリストのオプションが決まります。
ローカルに定義された変数を設定する
ローカルに定義された変数を変更するには、次のようにします。
- 処理フローを開き、処理フロー内で何も選択されていないことを確認します。
- [処理フローインスタンス]グループの[クイックプロパティ]で、変数を定義するオブジェクトが処理フローにアタッチされていることを確認します。アタッチされていない場合は、[サンプラー]ボタン を使用して、オブジェクトを処理フローに追加します。
- 3Dモデルで、アタッチされたオブジェクトの1つをクリックして選択します。
- [クイックプロパティ]で[処理フロー変数]グループを探します。通常これは最後のグループであり、ペインの下部にあります。
- 必要に応じて処理フロー変数を編集します。
- 処理フローにアタッチされている各オブジェクトに対して、前のステップを繰り返します。