Instant Engineering

エンジニアの仕事効率を上げる知識をシェアするWeb記事/QC統計手法/公差設計・解析/TPS(トヨタ生産方式)

Plant Simulation:フローコントロールによる分配と合流-Flow Control-

DX時代:【第14回】シーメンス製の生産シミュレータ「プラントシミュレーション」の使い方を習得

www.plm.automation.siemens.com

 

Plant Simulation 15に収録されているサンプルモデルを使って基本操作を習得する。

第14回はカテゴリ「マテリアルフロー」、トピック「Exit strategies」、サンプル「Flow Control」を使っていく。サンプルモデルからの学び方は、以下の手順で行う。

STEP1:サンプルモデルを開き、どのような仕事内容をシミュレーションするものかを把握する。

STEP2:それぞれのオブジェクトの設定項目を参照し、定義の仕方を確認する。

STEP3:概要を理解したところで、設定の一部を変更して、意図した通りにシミュレーションの結果に反映されるかを確認する。

サンプルモデルの難易度によって、多少の変更はあるかもしれないが、流れとしては概ね上記のような進め方で習得していく。

 

◆サンプルモデル

 マテリアルフロー ⇒ Exit strategies ⇒ Flow Control

 

STEP1:どのようなサンプルモデルか?

どのようなサンプルか把握するためにまずはイベントコントローラを実行してみる。シミュレーション動画を以下に示す(Vimeo)

複数のFlowControlがモデル内で配置されており、2つのSourceオブジェクト「Screws」と「Shafts」で作成されたパーツを加工、検査等しながら後工程に分配している。何らかの条件によって分岐していくが、最終的には合流している。スターフォックスのステージ設定のような感じだ。最後のFlowControl「Assembly」で組立を行ったのか、その後の「Dispatch」時点ではパーツのアイコンが違っている。アイコン見た目からの判断では、Shaftが1個につき、Screwが2個必要そうだ。

シミュレーションの動きから推測できるざっくりしたモデルの概要は以上だ。

 

STEP2:オブジェクトの設定項目を確認

それでは各オブジェクトの設定項目を順に確認していく。まずはモデル左側から。

f:id:yuinomi:20210813180748p:plain

Sourceオブジェクト「Screws」の属性タブを確認する。

f:id:yuinomi:20210813181106p:plain

作成の時間は「間隔時間による調整」で間隔/開始/停止がいずれも0になっているので、このオブジェクトは後工程が受け入れ可であれば即座に新しいパーツを作成する。MUは「選択を固定」で、「Screw」という名称のMU(パーツ)が定義されている。

クラスライブラリのツリーから該当のパスを辿ってScrewを確認する。右クリック→アイコンの編集で、下記の定義されたアイコンを確認できる。

f:id:yuinomi:20210813181509p:plain

(余談だが、『カレント』にチェックを付けることで、編集したアイコンをオブジェクトの現在のアイコンとして使用できる)

次はSourceオブジェクト「Shafts」を確認する。

f:id:yuinomi:20210814084606p:plain

作成の時間は「間隔時間による調整」で、間隔7:00で、開始/停止は0設定になっているので、このオブジェクトはシミュレーション実行後、7:00間隔でパーツを作成する。MUは「Shaft」が定義されている。

クラスライブラリのツリーを辿ってMUs→Shaftのアイコンを確認すると以下のような感じだ。

f:id:yuinomi:20210814084610p:plain

続いては「Disribute」という名称のFlowControlオブジェクトについて確認する。このオブジェクトから見た上流側はScrewsが1、Shaftsが2である。

f:id:yuinomi:20210814085121p:plain

FlowControlはPlant Simulationヘルプで以下のように説明される。

FlowControl を使用すると、プラント内のマテリアルのフローを分割および1つにまとめるための共通のストラテジーをモデル化することができます。FlowControl はMUの処理は行わず、シミュレーションモデル内のステーションのシーケンス内で後に続くオブジェクト間で、MUを配布するだけです。

「Disribute」の「出口ストラテジー」タブを確認する。

f:id:yuinomi:20210814085440p:plain

出口、つまり後工程への排出の選択方式は「メソッド」が設定され、外部参照先のメソッドオブジェクトとして「DistributeParts」が定義されている。「ブロッキング」が有効化されているので、メソッドの指示通りに分配できない時は待機することになる。

「入口ストラテジー」タブは「最初に来たものを最初に提供」が指定されている。

f:id:yuinomi:20210814085508p:plain

「DistributeParts」メソッドオブジェクトを確認する。以下のプログラムが記述されている。

 

param r : integer -> integer

 

-- @ is the movable unit

-- if the part is a shaft, the result is successor number 1

-- if the part is a screw, the result is successor number 2

 

if @.name = "Shaft"

  result := 1

else

  result := 2

end

 

メソッドの内容としてはシンプルで、パーツ名がShaftであれば下流1、違っていれば下流2へ分配するというだけである。今回は対象となるMU(パーツ)が2種類なのでScrewが来たら下流2へと流すことになる。あまりメソッドを使って定義する必要もないが、使い方の一例として参考にする程度で良さそうだ。

(ちなみに上流や下流の番号は、表示オプションで表示/非表示が選択できるので私は確認したい時に都度表示させるようにしている。)

 

続いては、モデル中央部の上側を確認していく。「Distibute」から見て下流1側の経路から。

f:id:yuinomi:20210814091210p:plain

「ProShaft」Stationオブジェクトの時間設定タブを確認する。

f:id:yuinomi:20210814091325p:plain

プロセス時間は5:00固定で、その他タブはデフォルト通りなので特に注目するところはなかった。

次は「ShaftReady」FlowControlオブジェクトを確認する。

f:id:yuinomi:20210814091824p:plain

ストラテジは「割当て」が選択されている。割当ての場合、FlowControlはパーツを唯一の下流側に移動させる時、パーツの属性の値を変更することができる。パーツが下流側に移動すると「setParam」メソッドを呼び出し、実行する。

(後工程への分配をするオブジェクトであるFlowControlで、後工程側に1個の工程しかない場合は、そもそも分配の必要がなく、こういった割当てのような機能を使うと覚えておく)

「setParam」メソッドには、以下のプログラムが記述されている。

 

-- change the icon of the shaft

@.currIcon :="Shaft"

 

内容はシンプルで、MUのアイコンを「Shaft」に書き換えるというだけだ。

ここで改めてMU「Shaft」のアイコンを確認してみる。名前「Shaft」で「カレント」にはチェックが付いていない。

f:id:yuinomi:20210814094004p:plain

一方で < > ボタンを押して他のアイコンを見ると、名前「ShaftNew」には「カレント」にチェックが付いていた。

f:id:yuinomi:20210814084610p:plain

先頭のSourceオブジェクト「Shafts」では作成するMUとしてShaftが定義されていたが、後でアイコンを書き換えることを睨んであえて他のアイコン(ShaftNer)をカレント有効化にして使っていたようだ。

 

続いては「WaitShaft」ParallelProcオブジェクトを確認する。

ParallelProcオブジェクトは、Plant Simulationヘルプで以下のように説明される。

ParallelProc には、同時並行にモバイルオブジェクト(MU )を処理するためのいくつかのステーションがあります。ParallelProc のビルトインプロパティはSingleProcと同じものです。異なる点は、SingleProc の単一プロセッシングステーションとは対照的にParallelProc にはいくつかのプロセッシングステーションがあることのみです。

今回の例では、X,Yサイズがともに2なので、2x2で容量4を持つオブジェクトだ。

f:id:yuinomi:20210814102215p:plain

時間設定タブでは、プロセス時間が0:00で、その他タブはデフォルト通りの設定のようだ。ここから排出されたパーツは上流番号1として「Assembly」という名称のFlowControlへと接続されている。

f:id:yuinomi:20210814102219p:plain

 

さて、次はモデル中央の下側について順に見ていく。

f:id:yuinomi:20210814102813p:plain

まずは「ProScrew」Stationオブジェクトから。時間設定タブを確認すると、プロセス時間が0:20で定義されている。その他タブはデフォルト通りだったので省略。

f:id:yuinomi:20210814102857p:plain

その隣の「DistrScrews」FlowControlを確認する。出口ストラテジータブは以下の設定になっている。

f:id:yuinomi:20210814103322p:plain

ストラテジは「割合(%)で選択」が指定されている。「リストを開く」と割合の内訳を確認できる。今回は下流1側に30%、下流2側に70%の割合で分配するようだ。さらに、「ブロッキング」がクリアされているのでストラテジで指示された排出側が受け取れない時、他方の受け取れる工程へ代わりに排出することを許可することになる。

「入口ストラテジー」タブは、デフォルト通りで「最初に来たものを最初に提供」が選択されている。

 

次は「WaitScrew1」Stationオブジェクトを確認する。こちらは「DistrScreews」FlowControlの下流1側である。

f:id:yuinomi:20210814103859p:plain

属性タブではX,Yサイズともに2なので2x2=4個の容量を持つ。時間設定でプロセスは0で、その他タブもデフォルト通りだったので省略する。また、モデルで下側に配置された「WaitScrew2」についてもこちらとすべて同じ設定だったので割愛する。

 

さて、最後はモデル右側部分を確認していく。まずは「Assembly」FlowControlから。このオブジェクトにはIN側に3つのコネクタがあり、上流番号は上から順に1,2,3となる。

f:id:yuinomi:20210814105004p:plain

「入口ストラテジー」タブでは、ストラテジとして「リストの順番に巡回して送出」が選択されており、「ブロッキング」も有効化されているので、これは必ずリストで指示された順序通りにパーツを受け取ることを意味する。リストは1,2,3という順番のようだ。

f:id:yuinomi:20210814105945p:plain

「出口ストラテジー」タブでは、ストラテジとして「順番に巡回して送出」が選択されているが、今回のモデルではこのオブジェクトのOUT側は工程が1個なので、あまり意味はない。

続いて「Dispatch」ParalllelProcの属性タブを確認する。X,Yサイズともに2で、合計4個の容量を持つ。

f:id:yuinomi:20210814110706p:plain

時間設定タブからプロセス時間は1:00固定で、その他タブはデフォルト通りであった。

f:id:yuinomi:20210814110709p:plain

最後の「SendAway」Drainオブジェクトもデフォルト通りだったので省略する。

これで、モデルの各オブジェクトの設定項目を一通り確認できた。

改めてシミュレーションの動きを見てみると、今回のモデルでは、中央上部を流れるShaftの供給間隔が遅く、中央下部を流れるScrewの供給間隔が早い。

f:id:yuinomi:20210814111151p:plain

「Assembly」FlowControl工程を基準で見た時、最も早く欲しいShaftがなく、上流2と3のScrewがある状態だ。常にShaftが律速(ボトルネック)となっていて、Shaftが供給されたら続けざまに上流2,3のScrewもDispatchへと供給される。

Assemblyという名称になっているが、組立をしている訳ではなく、別々のパーツを同時に流しているだけのようだ。Assembly工程は容量4だが、Dispatchのプロセス(加工等)時間より、Shaftの供給が遅いので、結果的にShaft1個に対し、Screw2個の3個セットで流れているが、これはたまたまである。

 

STEP3:一部を変更してシミュレーション結果の確認

「Assembly」FlowControlオブジェクトの入口ストラテジータブの「ブロッキング」をクリアする。

f:id:yuinomi:20210814111920p:plain

 こうすることでAssemblyの前工程からパーツ受け入れがリスト順の1,2,3に必ずしも従わず、用意ができたものを優先的に受け取るのでShaft待ちにはならなくなる。また、Dispatch工程の容量4個分のパーツを供給することも確認できた。

f:id:yuinomi:20210814112433p:plain

今回のサンプルモデル『Flow Control』の確認は以上だ。