シミュレーション機能をさらに活用しよう

皆さんこんにちは、Emulate3Dの技術担当の小嶋です。

気温も下がってきたと思ったら、今度はまた暑くなったりと寒暖差が激しいです。外出したら、30度近くまで上昇して暑く、そして家に帰ったら筋肉痛で翌日も1日ぐったり・・・事前にシミュレーションをしておけば、こういうことも回避できるかもしれません。

さて、皆さんはEmulate3D(Sim3D)のシミュレーション機能、活用しているでしょうか。

Emulate3D Simulationリボン Experiments

シミュレーション実行中に、作ったモデルが超高速で動いているのを見ているだけで楽しいですよね。

条件を変えてのシミュレーション結果の比較が容易で、超高速で正確なシミュレーションを行える一方でこんな悩みはないでしょうか。

「ワークを1000個搬送するのにかかる時間は何時間何分だろう?」

計算して求められるのですが、Scriptを活用するとこのような条件でのシミュレーションを行えます。早速試してみましょう。

目次

■モデルを用意する

■Messageイベントを設定する

■Scriptでシミュレーションを行う

■おわりに

モデルを用意する

今回はScriptを入力する用のBox(以下親Boxと表記)を用意し、
「搬送先の2つのコンベヤに合計1000回搬送したらシミュレーションが終了する」というモデルを作成することにします。

以下のようなモデルを用意します。

Emulate3D 作成するモデルイメージ

通常のシミュレーションと同様のモデルです。出力したい情報に合わせ、適切なカタログを配置するようにします。

Messageイベントを設定する

次に、搬送先のコンベヤ(上記画像では右側の2つのコンベヤ)から「ワークが搬送完了しました」という情報を、親Boxに伝える必要があります。
情報を伝えるには、Emulate3Dの「Messageイベント」を用います。Messageイベントについてはこちらの記事で解説しています。

搬送先の2つのコンベヤ(下記画像の紫色枠で囲ったコンベヤ)から親BoxにMessageイベントが送信されるように設定します。

Emulate3D Messageイベント設定

搬送先の2つのコンベヤのMessages>MessageListenersにどちらも親Boxの名前が表示されているのを確認します。

Emulate3D コンベヤ プロパティウインドウ

Tips
MessageイベントをScriptで設定する場合、Messageイベントの補足説明で使用したScriptをそのまま用いても、ListeningToの参照先を変更するたびに前参照先のMessageイベントが消えてしまうため、複数のMessageイベントを設定できません。
Scriptで設定する場合は、下記画像のように入力します。

Messageイベント 設定 C# Script

Scriptでシミュレーションを行う

いよいよ、シミュレーション処理を行うScriptを入力します。今回の例では、下記の4点が必要です。
・モデルを再生したときにシミュレーションが開始される。
・モデルをリセットすると、ワーク搬送数のカウントを0にリセットする。
・コンベヤから「ワークが搬送完了」というメッセージを受け取ると、ワーク搬送数をカウントアップする。
・ワーク搬送数のカウントが1000に達したらシミュレーションを停止する。

親Boxに、以下のScriptを入力します。

// ワークが搬送された数をカウントするカスタムプロパティ
[Auto] CustomPropertyValue PalletCount;

[Auto]
void OnReset(Visual sender)
{
  // モデルのリセット時にカウントをリセットする
  PalletCount.Value = 0;
}
[Auto]
void OnInitialize(Visual sender)
{
  // シミュレーションを開始する
  document.Experiments.StartExperimentNow();
}
// ワークの搬送が完了した後にOnTxTransferCompleteイベントが発生する
// コンベヤからのOnTxTransferCompleteメッセージを受け取ってこのメソッドが実行される
[Message(“OnTxTransferComplete”)]
void OnTxTransferComplete(Visual sender, ScriptingObject message)
{
  // カウントアップする
  PalletCount.Value++;
  // 1000回搬送したらシミュレーション終了
  if (PalletCount.Value == 1000)
  {
    document.Experiments.StopExperimentNow();
  }
}

Scriptを入力後、通常のシミュレーションと同じようにSimulation>Experimentsからシミュレーション開始画面を開きます。フォークリフトの台数などシミュレーション条件を入力後、Fixed Timeのチェックを外し、Run Selectedをクリックしてシミュレーションを開始します。

Tips
Fixed Timeのチェックを外さないと、Start TimeとRun Durationを使用する通常のシミュレーションを実行するため、Scriptでのシミュレーションが行えません。

Emulate3D シミュレーション実施

Scriptの入力通り、ワーク1000個を搬送したところでシミュレーションが終了しました。複数のシミュレーション条件を設定している場合、連続してシミュレーションが行われます。
シミュレーションが終了すると、シミュレーション結果が表計算ソフトに通常通り出力されます。

シミュレーション結果 Excel

おわりに

Scriptの活用で、時間経過以外のシミュレーション条件を設定できるようになり、よりシミュレーションの幅が広がります。

サポートサイトには、Scriptだけではなく、便利なEmulate3Dの使い方も掲載しています。こちらも併せてご活用ください。