Instant Engineering

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

Plant Simulation:コンベア上で移動するパーツを停止する方法-Stopping a conveyor-

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

www.plm.automation.siemens.com

 

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

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

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

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

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

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

 

◆サンプルモデル

 マテリアルフロー ⇒ Conveyor ⇒ Stopping a conveyor

 

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

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

曲線状のLineオブジェクトがあり、荷物のようなMUが左側から供給され、ぐるっと1周回ってまた左側へと出ていく。途中に3箇所Stationが配置され何かの仕事をしている。StationはLineオブジェクトとモデル上では直接接続されていない。MUの種類は1つで、Sourceからの供給間隔も一定のようだ。

シミュレーションの動きから把握できるざっくりした概要は以上だ。

 

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

各オブジェクトの設定項目について順にみていく。

 f:id:yuinomi:20210718094357p:plain

まずは「Source」オブジェクトから属性タブを確認する。

f:id:yuinomi:20210718094724p:plain

作成の時間は「間隔時間による調整」で開始/停止時間が0で、間隔が1:00と入力されている。なので、シミュレーション実行中は1分おきにMUを生成し続ける。(終了の定義が個数と停止時間どちらも設定されていないので、シミュレーションを終了するまで生成をエンドレスで続ける)

MU選択は「選択を固定」で、クラスライブラリのEntityという名称のMUが定義されている。

 

次にLineオブジェクトを確認する。属性タブを下記に示す。「属性」タブには特に注目すべきところはない。

f:id:yuinomi:20210718102435p:plain

Lineオブジェクトのダイアログウィンドウのタブには、他のオブジェクトにはあまりないタブがあって、それが「カーブ」タブだ。(カーブタブは、長さ指向オブジェクトで使用される。Line以外では、Track、FootPathなどで設定することがある)

f:id:yuinomi:20210718111554p:plain

カーブタブで左上の「有効化」にチェックが付いている。どのようなカーブにするかの定義は右下の「セグメント」を開く。

f:id:yuinomi:20210718111602p:plain

例えば索引2行目は長さ2m、カーブの角度指定なし(0°)なのでこれはLineオブジェクト始点から2mのストレート部がまずあることがわかる。次に半径2mで-90°までカーブする定義になっている。ストレート部としたいところだけ「長さ」の列を記入すると覚えておけば良さそうだ。また、角度の正負については時計回りが正(+)になっている。

また、カーブタブで「MUの回転」にチェックが付いているが、これの選択による差は以下の例が分かりやすい。

MUの回転:有効

f:id:yuinomi:20210718112805p:plain

MUの回転:無効

f:id:yuinomi:20210718112811p:plain

MUがカーブを曲がる時に、それをマテリアルフローの移動方向に向けるかどうかになる。

 

また、他のタブも確認したところ、目立たないので見落としそうだが、コントロールタブの左下に「センサー」の設定を見つけた。

f:id:yuinomi:20210718102448p:plain

センサーの設定は、プラントシミュレーションの記事6回目で初めて扱うので基礎から理解していきたい。「センサー(3)」をクリックすると以下のウィンドウが開く。

f:id:yuinomi:20210718102519p:plain

指定した位置に計3箇所のセンサーが設定されていることがわかる。パスとして例えばセンサーID"1"では「Station. PartArrived」が定義されている。センサーID"1"を選択して編集をクリックすると以下のようになっている。

f:id:yuinomi:20210718102528p:plain

位置として「長さ」が指定されていて、且つ、フロントにチェックが入っているので、この場合はLine(コンベア)の始点から11.5mの位置にセンサー機能を配置するという意味になる。

ちなみに先ほどの表「センサーのリスト」で前・末端・ブッキングポイントの3つがあったが、これはセンサ設定位置のフロント・リア・ブッキングポイントにそれぞれ対応している。(日本語化が微妙にズレているのが分かりづらい)

 

また、位置については「長さ」を選択した場合は絶対値としての定量できる値を入れて、もうひとつの「相対」を選択した場合はLineオブジェクト全長に対しての%比率(0~1)として定義する。

 

センサについてPlant Simulationヘルプでは次のように説明されている。

入口と出口コントロールに加えて、長さ指向オブジェクトLine、Turntable、Track、2レーントラックおよびトランスポーターに対して、センサーを定義することができます。センサーは、長さ指向オブジェクトの任意の点に配置できます。Plant Simulation は、MU がセンサーを通過するとすぐにコントロールメソッド を呼出します。

 

ここで改めてモデルを見ると、Lineのグラフィック上にも定義したセンサが表示されているのが分かる。

f:id:yuinomi:20210718113423p:plain

赤線が定義したセンサで、センサの設置場所を変えると赤線の位置も自動で変わる。センサの設定を開くには、Altを押しながら赤線をダブルクリックする。

 

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

f:id:yuinomi:20210718115637p:plain

クリックすると、新しいウィンドウが開かれ、下記のようなモデルが表示された。

f:id:yuinomi:20210718115644p:plain

これはStationではなく、Frameを使っているようだ。

f:id:yuinomi:20210718120023p:plain

FrameはPlantSimulationヘルプで以下のように説明されている。

クラスライブラリ のModelsフォルダにあるFrame 内に、シミュレーションモデルを作成します。Frame は、オブジェクトのグループ化のために、また組込みオブジェクトまたは設計する任意のオブジェクトのいずれかを挿入することによる階層構造モデルの構築ために機能します。Frame はプラント全体を表します、一方、プラントのサブセクションをサブセクション自身のFrame 内でモデル化することができます。これらのサブセクションを、プラント全体を表すFrame に挿入します。

 

「Station」Frame内のオブジェクトも順に見ていく。まずはメソッドオブジェクト「PartArrived」から。

f:id:yuinomi:20210801102108p:plain

中には以下のように記述されている。 

var Dummy : object


@.stopped := true

Dummy := .Models.StoponLine.Entity.create(creation)

Dummy.name := "dummy"

Dummy.createAttr ("ActsAs","object")

Dummy.ActsAs := @

 

『PartArrived』メソッドの2行目、

@.stopped := true

でLine上を流れてきたMU(Entity)の動きを停止している。センサを使って何かしらの処理をする場合、処理中はパーツの流れを止めるというのはよくあることなので基本の使い方は習得しておきたい。短いプログラムだが、この一文が今回のサンプルモデルの主役である。サンプルモデルのタイトルが、Stopping a conveyorのため。

 

続く3行目、

Dummy := .Models.StoponLine.Entity.create(creation)

で『creation』オブジェクトに『Entity』というMUを作成している。Entityの前はMUが定義されているクラスライブラリの階層だ。

 

続いてはStationオブジェクトの「Creation」を確認する。

f:id:yuinomi:20210801102939p:plain

「Creation」は特に設定された項目はなく、デフォルトのStationオブジェクトのままのようだ。

f:id:yuinomi:20210801103835p:plain

プロセス時間が0秒にしてあるので、ここに入ってきたものを即座に次の接続先にパスする中継のようだ。故障や入口・出口コントロールの設定も特になし。

 

次は隣に接続されたStationオブジェクト「Workplace」を確認する。

f:id:yuinomi:20210801102958p:plain

プロセス時間は50秒として定義されている。前工程の「Creation」から受け取ったMUを50秒で加工し排出する。

f:id:yuinomi:20210801104513p:plain

コントロールタブにて、出口コントロールとして「ProcessEnd」が設定されている。

f:id:yuinomi:20210801104517p:plain

「ProcessEnd」はFrame内の右にあるメソッドオブジェクトだ。

 

中を確認すると以下のように記述されている。

@.actsas.stopped := false
@.delete

 

ここまででサンプルモデルの各オブジェクトの概要を確認してきた。イマイチ何をするためのモデルなのか分かりにくいが、Line上に配置されたセンサ上にMU(Entity)が到着した時、StationというFrame内では、PartArrivedメソッドオブジェクトにより「dummy」という名のMUが作成される。dummyはCreationオブジェクトで作成され、Workplaceで一定時間加工した後、削除される。

本流のLine上ではFrame内で処理を実行している間、MU(Entity)は止まっていて、Frame内で仕事が完了するとまた動き始めるが、Frame内の仕事が本流に反映される訳ではなく、ただ一定時間止めているだけなのでそこが分かりづらい。センサという機能を使ってはみたが、あまり有効的な、というか実際的な使い方ではないのでイメージがしづらかった。

 

ちなみに、今回のサンプルモデルでメソッドオブジェクトのプログラムを編集しようとすると以下のメッセージが表示された。

f:id:yuinomi:20210807085717p:plain

「継承」アイコンの周りが薄い緑になって有効化された状態になっているためで、ここをクリックして解除することによってメソッドの編集ができる。

f:id:yuinomi:20210807085724p:plain

また、StationというFrameを開くとき、Stationを選択した状態でホームタブの「派生元を開く」でFrameを開けば継承を無効化しなくともメソッドの編集は可能だ。

f:id:yuinomi:20210807085730p:plain

 

以上でサンプルモデル『Stopping a conveyor』の確認は以上だ。