MELSEC iQ-Rのラベルの使い方

 

1.    ラベルの使い方について

こんにちは。SMATEX エンジニアリングです。
今日は MELSEC iQ-Rラベルの使い方について解説します。
プロセスCPU(R08PCPU、R16PCPU、 R32PCPU、R120PCPUと末尾に「P」がついてます)だと、ラベルを使ってプログラムを作成するのが一般的です。
ファンクションブロックを使うと、どうしてもラベルでアドレス定義が避けられず、ラベルの知見が必要になってしまいます。

いきなりラベルといわれても・・・という方へ解説します。

筆者もラベルは使うまでは「えー」という気持ちがありましたが、やってみたら超簡単です。
ラダーでラベルを使用する大きなメリットを得るにはラベル名のつけ方にコツがあるのですが、
ST言語ではラベルの使用が必須であることと、グローバルラベルの編集でプログラムにも編集をかけてくれる優れものです。
つまり、最初は「temp1」みたいな仮の名前で付けても、後から意味に即した名称へ変更が容易なんですね。
ちなみにラベルはiQ-Rの通常のCPUやQシリーズでも使えます。さらに言うと、オムロンのCS、CJ1、CJ2、キーエンスでも同じように使えます。
オムロンはCSシリーズだと、数値処理命令の一部に制約があるので、工学値変換(アナログ信号を物理量に換算)をST言語で行った方が断然便利な場合があります。
ST言語の命令文はIEC-61131-3準拠で共通言語なので、私のように三菱電機の使用がほとんどで、たまにオムロン、キーエンスを突発的に触る人間はメーカー機種ごとの癖をうまく乗り越える術にもなってきます。
でも私はオムロンのあの癖がある感じが好きなので、是非仕事ください。上級者しか扱えないようなピーキーさが良いですね。
逆にキーエンスは、三菱電機、オムロンユーザどちらでも入りやすいようにショートカットキーの変更やアドレスを三菱電機に合わせて変換できてすぐラダーが書けるようになるのは助かります。余談ですね。

2.    ラベルとは

ラベルとは,入出力データや内部処理に任意の文字列を指定した変数です。
ラベルを使用すると,デバイスやバッファメモリサイズを意識することなくプログラムを作成できます。
そのため,ラベルを使用したプログラムはユニット構成が異なるシステムでも簡単に再利用できます。

三菱電機_スクールテキスト_応用:MELSEC iQ-Rプログラミング (GX Works3版)より引用

ソフト設計しているときに「MOV」「DMOV」「EMOV」の命令をつかうと1ワード占有と2ワード占有を意識してデータレジスタのアドレスを使わないといけません。
計装システムって数値演算がめちゃくちゃ多いんですよね。そうするとデータレジスタが1ワード占有と2ワード占有が混ざるんですよね。
私はこれが嫌でしょうがなかったです。でもラベルを使うと、ワード占有を気にせず、使えてしまうというメリットがあるので、すごく便利です。

2.1.    ラベルの種類

  • グローバルラベル

プロジェクト上の全てで使用できます。
Java、C#、VBAなどのプログラム言語で言うとpublicのアクセス修飾子にあたります。
グローバルラベル名の重複はできません。
X,Yの入出力アドレス、タッチパネルやSCADAなどの外部通信でデータレジスタを固定アドレスで宣言したいときに使います。

  • ローカルラベル

プログラムファイル上でのみ使用するラベル。
下図で言うと、SAMPLE1プログラムとSAMPLE2プログラムになります。
宣言したプログラム上でしか使われないので、SAMPLE1とSAMPLE2で同じラベル名にしても大丈夫です。
(ここ重要です。なぜなら同じラベルにすることで利便性が生まれてくるケースがあります)

Javaなどのプログラム言語で言うとprivateのアクセス修飾子にあたります。
ローカルラベル、グローバルラベルとの重複は設定を変更すると可能になります。
ただし、warning扱いになるので、基本的には避けましょう。

  • ユニットラベル

SM400などの特殊リレーやアナログユニットのCH1のディジタル出力値などのユニットバッファメモリがユニットラベルとして登録されています。
グローバルラベルでの宣言が不要です。

2.2.    ラベル属性

ラベル属性には下記のものがあります。

(三菱電機_スクールテキスト_応用:MELSEC iQ-Rプログラミング (GX Works3版)より引用)

補足として、

  • 「_CONSTANT」には、タイマー命令[t100 k10]のような直接数字を入力するケースで使用します。
  • 「_RETAIN」は、ラッチとなるので、割付デバイスに「L1」や「ZR1000」などのデータ保持のラッチデバイスが割り付けられます。「_RETAIN」で割付デバイスに「M1」、「D1000」などのデータレジスタを割り付けるとエラーが出ます。

「VAR」、「VAR_INPUT」、「VAR_OUTPUT」はST言語、FBDでよく使うので、次回紹介します。

2.3.    データ型

データ型には下記のものがあります。

(三菱電機_スクールテキスト_応用:MELSEC iQ-Rプログラミング (GX Works3版)より引用)

3.    使ってみよう(ラダー編)

一回やってみましょう。
GX WORKS3を立ち上げます。新規作成画面です。
機種選択します。今回はR04にします。

例えば、こんな回路があるとします。(遅延タイマーがないとか突っ込みどころはありますが)

この回路のI/OがY0からY10に変更になった場合、ラダーを変更する必要があります。改造時によくあるのが、内部デバイスを連番で使いたかったのに使用されていて使えないことがあると思います。その際にラベルは大活躍です。
ここから本題のラベル作成していきます。
ラベル動作の確認用に追加でプログラムファイルを足します。

追加名称はLABEL_DRAWINGにします。

ナビゲーションウィンドウの「ラベル」をクリック。
「グローバルラベル」をクリック。
「Global」をクリック。

こんな感じで登録します。「b_」はビット、「t_」はタイマーを意味しています。
このまま変換をかけるとエラーが出ます。

クラスの設定項目なんてないと思ったら「詳細表示」というボタンがあります。

「詳細表示」押すと「クラス」、「割付デバイス」列が出てくるので、さっきのプログラムと同様に割付けていきます。
空いているアドレスを使用するので、内部ビットは割付け不要です。これがラベルの便利なところですね。
設計変更が起きても「割付デバイス」のアドレスを変えればプログラム上すべてに反映されます。ラベル名も変更したら、ラダー上に自動で反映されます。

ラベルを登録後、ラダープログラム上でラベル名を打つと、候補のラベルが出てきます。

X0と打ったほうが圧倒的に早い。。。ストレスが。。。
予測変換を使いながら進めます。

最初のプログラムをラベルで作成してみました。最後に変換して完了です。

動作確認して問題ないことを確認できましたか?

今回はラベルでプログラムを作る流れをご紹介しました。
ただ、私の感覚ではラダー図だけで使用する場合はラベルの活用でそこまで利便性を感じたことがありません。
理由として、簡単なラダー図だと、ラベル登録するのに時間がかかる。
私の場合、英語が弱いので、ラベル名を考えるのに時間がかかる。
(今回はこんな感じでしたが、ラベルのネーミングセンス編を別で紹介します。これでラダーでもだいぶ改善されます)
ラダーで書けば5分くらいでできそうですが、GX Works3上でラベルを使うと入力する手間が増えて20分くらいかかります。
最初からラベル名を決めておけばよいですが、なかなかそういうことはないですよね。

次回はラベルを使ったST言語を紹介します。ST言語ではラベルが大活躍します。
面倒な数値処理が簡単に書けて、可読性も抜群に上がります。
ラベルが本領発揮です。

不明点はコメントに投稿お願いいたします。
この記事を見て、SMATEX エンジニアリングに仕事お願いしてみたいと思った方はお問い合わせよりご連絡ください。
次回もぜひ読んで下さい!


SMATEXエンジニアリングでは、MELSEC iQ-Rを用いたPLC計装、制御盤設計、既設設備改造、SCADA連携のご相談を承っています。

アナログ入力、工学値変換、PID制御、GOT画面、GX Works3でのラベル設計など、現場で使える制御設計を前提にご提案します。

PLC計装で構築する高信頼な生産システム / お問い合わせ

関連記事

  1. MELSEC iQ-RプロセスCPUの使い方_PLC計装

  2. MELSEC iQ-Rのラベルの使い方(ファンクションブロック)

  3. MELSEC iQ-Rのラベルの使い方(ファンクションブロックダイアグ…

  4. MELSEC iQ-RプロセスCPUの使い方_ユーザ定義FB

  5. MELSEC iQ-Rのラベルの使い方(小ワザ編)

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

目次