目次
1. ラベルの使い方-FBDで工学値変換
こんにちは。SMATEXエンジニアリングです。
今回はMELSEC iQ-Rのラベルの使い方(ファンクションブロック)で取り扱ったプログラムをFBD(ファンクションブロックダイアグラム)で作成します。
FBにIOが多すぎて、可読性が悪いという問題がありました。
その点に関しても構造体ラベルを使用して、すっきりさせようと思います。
2. FBD(ファンクションブロックダイアグラム)について
2.1. FBD(ファンクションブロックダイアグラム)とは
プログラムを論理回路図のように作成することができます。
下図が実際にFBDのプログラムとなります。システム仕様書の多くがフローチャートもしくは論理回路図(ロジック図)で作成されるので、仕様書がロジック図の場合は、そのまま同じように作成することができるメリットがあります。ラダー図よりも可読性が良い点もあります。
個人的なデメリットとしては、FBDだとステップ制御の部分はラダー図より追いかけづらいところです。
それとラダー図より作成するのに時間がかかるというのが本音です。

2.2. 構造体ラベルとは
構造体ラベルとは複数のラベルを一つの名称で管理することができるものです。
今回は構造体(EV_CONV)を作成し、工学値変換の入力パラメータを一つのラベルで管理します。FBD上では一つのラベルを入力パラメータとしているように見えますが、複数のパラメータを入力することができ、見た目がすっきりします。
構造体のなかのラベルは、構造体名称.ラベル名で呼び出すことができます。
例えば、EV_CONVの中のSCALEラベルはEV_CONV.SCALEとなります。
3. 使ってみよう(FBD編)
3.1. 設定
それでは作成していきます。
まずは、ナビゲーションウィンドウの「FB/FUN」を右クリックして、「データ新規作成」をクリック。
ファイル名はなんでも良いので、今回は「工学値変換_改造」とします。

記事4のプログラムとラベルをそのままコピー&ペーストして下さい。
続いて構造体を作成します。
ナビゲーションウィンドウの「ラベル」→「構造体」を右クリックし、「データ新規作成」をクリック。構造体名称は「EV_CONV」とします。
作成した構造体データをクリックして、下記のようにラベル登録してください。

これは記事4.のFB/FUNのVAR_INPUTに登録していたラベルになります。
構造体では、クラス宣言が不要です。
続いてFB/FUNの「工学値変換_改造」プログラムのローカルラベルをクリック。
ローカルラベルの「DIGITAL_VALUE」以外のVAR_INPUTのラベルを削除。
ラベル名「EV_CONV」として、データ型の隣にある「…」をクリック。
型分類の「構造体(T)」をクリック。
そうするとデータ型に「EV_CONV」があるので、選択して「OK」をクリック。

ラベルとしては下図のようになります。

3.2 プログラム作成
続いて、スキャンプログラムにプログラムを新規作成します。
ここでは、「工学値変換_FBD」とします。
「工学値変換_FBD」のローカルラベルに下図を登録します。
※ここでも構造体を登録します。構造体名称は「TE001_PV」としておきます。
温度センサ(TE001)の工学値変換変換をする想定です。

回路としては下記のようになります。

ラベルはツールバーの「VAR」をクリック。
もしくは、シート上をクリックしてENTERすればラベル名称を入力することができます。
今回もアナログユニットの入力値を工学値変換する形ですが、記事4.と大きく違うのは入力端子が9個→2個だけになりました。
これが構造化タグのメリットの一つです。
記事4.で作成したFBもFBD上で使用することができます。

ラダー図のFBよりはまだ見やすいですね。
さて、構造化タグに初期値を書かないとすべて0になってしまうので、構造化タグに初期値を記入します。
構造化タグ名称が「TE001_VALUE」なので、「TE001_VALUE.(ドット)」と入力すると構造化タグの中のラベルが予測変換で出てきます。

下図のように作成してみてください。

3.3 テスト
それではプログラムを書き込みます。

記事4.と同じように動きましたか?
さらっと進めてしまいましたが、FBDでは、ラベル同士を接続したとき、左→右にデータが代入されます。ここは特に不思議じゃないかと。
ただし、数値代入が整数型、単精度浮動小数の区分を自動でやってくれます。
100と入力しても「TE001_VALUE.RH」が100.00000と表示されています。
100.0と入力しても100と入力しても問題ありません。
ただし整数型の「TE001_VALUE.SCALE」に32000.0と入力するとエラーになるので、ご注意ください
筆者が考える構造体のメリットとしては下記の内容があると思います。
①可読性が良くなる(複数のデータが一つになる)
②後からデータ追加が簡単(FBDを例にすると、構造体をいじるだけなので、IOが増えない。「FB/FUNの更新」も不要)
③データのMOVが簡単(FBDとSTに限ってくる。ラダーだと専用命令が出てくる)
何でも構造体でやればいいやってなってしまうんですけど、思わぬ落とし穴で同じデータは断然配列のほうが楽ですね。
配列データならラダーの通常のMOV命令で送れる手軽さがあるので、時計データなどは配列といった使い分けが必要です。
今回はFBDについてご紹介しました。
今回でラベルを作成したプログラム作成は一通りご紹介したことになります。
ここまでの内容を理解すれば、一通りラベルについてマスターしたことになります。
ラベルの配列がありますが、これはまたの機会にご紹介いたします。
不明点はコメントに投稿お願いいたします。
この記事を見て、SMATEX エンジニアリングに仕事をお願いしてみたいと思った方はお問い合わせよりご連絡ください。
次回からはiQ-R プロセスCPUの「R08P」を使ったプログラム作成をご紹介していきます。
次回もぜひご一読ください。
SMATEXエンジニアリングでは、MELSEC iQ-Rを用いたPLC計装、制御盤設計、既設設備改造、SCADA連携のご相談を承っています。
アナログ入力、工学値変換、PID制御、GOT画面、GX Works3でのラベル設計など、現場で使える制御設計を前提にご提案します。








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