1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MELSEC-Q GX Works2のコンパイラの動作を調べる(その1)

Last updated at Posted at 2021-10-16

みなさんMELSEC使ってますか?
MELSEC iQ-Rという新しいPLCがあるのに諸般の事情によりMELSEC-Qばかり使っています。
ということで個人的に調べたマニアックな使い方でも書いて行こうかなと思います。
誰かの役に立つかは謎です。
この記事はMELSEC-Qの場合の仕様でありMELSEC iQ-Rの場合はまた別の挙動になると思います。

構造化プロジェクト使ってますか?

image.png
構造化プロジェクトってやつを使うとラダー以外の言語(ST,FB,FBD)やラベルが使えます。
なんだかカッコイイですね。うまく使うと工数削減やプログラムの標準化が出来て完成度の高いプログラムを作れます。
しかこれがどのように実行されているかはみなさん知ってるでしょうか…

STで書いてみよう

(*Sample1*)
CASE D0 OF
	0:D1:=K0;
	1:D1:=K1;
	2:D1:=K2;
	3:D1:=K3;
END_CASE;	

(*Sample2*)
D2:=FUN1(K1,K2);
(*FUN1*)
FUN1:=Input1+Input2;

image.png

上のようなプログラムを書いてみます。
Sample1はD0の内容によってD1に0~3の値を代入するプログラムです
Sample2はFunctionを使って二つの値を足して出力します。
ラダーで書いたら簡単に書ける内容ですが、STで書いてみました。
さてコンパイルするとどのように出力されるかです。

コンパイルされたプログラムを見てみよう

GX Works2では色々言語が使えますが最終的には昔ながらのラダーに変換されてPLCでは動いています。
ということでどのように変換されたかを見てみましょう。

その1

[表示]→[コンパイル結果表示]
なるほどわからん… ということで別のやり方
image.png

その2

ICメモリーカード書込でパソコンのどこかのフォルダに内容を出力します。
ICメモリーカードはQのUDVシリーズだとSDカードに該当します。
SDカードからBOOT運転ができますがこの機能を使うとPCから直接SDカードにPLCプログラムを書けます。
image.png
このようにPCの任意のフォルダにプログラムを出力できます。
ここまで出来たらとりあえずGX Works2を閉じましょう。
image.png

次にGX Works2を開き新規作成します。CPUタイプは同じにしますが、プロジェクト種別はシンプルプロジェクトにします。(ここがポイント)
image.png

ICメモリーカード読出で先ほどのフォルダを指定します。さあどうなるかな^^
image.png

結果

image.png
という目まいがしそうなプログラムが出てきました。
プログラムも長いしポインタも使ってる。おそろしやおそろしや。

プログラムメモリは無限ではない

Q03UDVCPUの場合ですが定価は12万円です。
ではこいつのプログラムメモリの容量ですが120KByteです
プログラムが120KByteしか書けないのに定価12万円。おそろしやおそろしや。

ユニバーサルモデル高速タイプQCPU Q03UDVCPU

では最新のMELSEC iQ-Rはどうだろう。
R04CPUはプログラムメモリ容量160KByteで定価は12万円です。これも容量のわりに値段が高い。
シーケンサCPUユニット R04CPU

PLCとマイコンを比較するのはおかしいですが例えばSTM32F446REを見てみましょう
Flash:512KByteで約2000円… 
STM32 Nucleo Board STM32F446RE

いかに三菱のPLCのプログラムメモリが少ないかがわかるでしょう。
令和なのになんでこんなに少ないメモリで頑張らないと行けないんだ、世の中は富豪的プログラミングであふれているというのに><
ということで構造化プロジェクトを使う場合は作り方によってはプログラムの容量やポインタを思ったより使用するので気をつけましょう。(どうやって🤔 )

まとめ

ST言語が悪いというわけではないですが、STで組まれたプログラムはコンパイルでテンプレート化されたラダーに置き換わるような挙動をしています。
これはそもそもMELSEC-Qはラダーしか実行できないのにGX Works2で色々言語を使えるように頑張った苦肉の策のような気がします。

MELSEC-Qばかり使ってるのでMELSEC iQ-Rや他社のPLCってST言語使いやすいんですかね。
このへんがよくわからない。TwinCATやPLCnext使ってみたいですね。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?