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?

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文による分岐処理

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

Sample2: 関数の使用

(*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メモリーカード書込でパソコンの任意のフォルダに内容を出力します。ICメモリーカードはQのUDVシリーズだとSDカードに該当します。

SDカードからBOOT運転ができますが、この機能を使うとPCから直接SDカードにPLCプログラムを書き込めます。

image.png
image.png

このようにPCの任意のフォルダにプログラムを出力できます。ここまでできたら、とりあえずGX Works2を閉じましょう。

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

image.png

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

image.png

結果

image.png

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

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

MELSEC-Qのメモリ容量

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

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

MELSEC iQ-Rとの比較

では、最新の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?