三菱電機製シーケンサには、エッジリレーと呼ばれる内部レジスタ領域が存在します。あまり使用機会のないデバイスです。
エッジリレーは構造化命令「FOR〰NEXT」構文の中やサブルーチンプログラムにて、インデックス修飾用のZレジスタを使用した接点の演算結果をパルス化するための使用します。
取説・マニュアルを読んでもなかなかイメージしずらいと思いますので、解説してみます。
ラダープログラムの作成はGX Works2 にて行い、PCタイプをユニバーサルタイプQCPUであるものとして、解説を進めさせていただきます。
MELSEC-Fシリーズではエッジリレーを使用することができません。
詳細はMELSEC-Fシリーズ プログラミングマニュアル を参照願います。
エッジリレーとは
エッジリレーが何者であるのかは、取扱説明書やマニュアルに記載があるはずです。まずはマニュアルにどのように記載されているのか確認を行いましょう。
Qシリーズの場合、デバイスの特徴や用途については、QnUCPUユーザーズマニュアル(機能解説・プログラム基礎編)中にて解説されています。
エッジリレー(V)の用途については「第3部デバイスと定数」→「内部ユーザデバイス」→「エッジリレー」の章にて、以下のように説明されています。
回路ブロックの先頭からの接点の ON/OFF 情報を記憶するデバイスです。接点でのみ使用できます。(コイルとしての使用はできません。)
QnUCPUユーザーズマニュアル(機能解説・プログラム基礎編)より
エッジリレーは,インデックス修飾を使用したプログラムで,立上り(OFF→ON)検出を行って実行させる場合に使用します。
QnUCPUユーザーズマニュアル(機能解説・プログラム基礎編)より
なかなかイメージがわきづらいと思います。
エッジリレー演算結果パルス化【EGP】【EGF】
MELSEC-Q/L プログラミングマニュアル(共通命令編)のシーケンス命令の結合命令の 「第2章命令一覧」→「5..シーケンス命令」→「5.2結合命令」→「エッジリレー演算パルス化」の章にて解説されております。
エッジリレーは必ず、EGP命令とインデックス修飾レジスタとセットで使用されます。
実際のエッジリレーの使用例として、サブルーチンプログラム中での使用方法が解説されています。
エッジリレー(EGP)命令の使用方法
FOR-NEXT構文中にて使用します。
エッジリレー(EGP)命令の命令入力方法
まずは通常通りGX Works2ショートカットキー[F5] A接点入力により接点入力準備を行います。「F8」応用命令 にて入力するのではなく、A接点です。
続けて、エッジリレー演算結果パルス化命令入力のために「EGP V0Z1」と入力します。V0がエッジリレー。Z1がインデックスレジスタです。
エッジリレーインデックス修飾が必要です。
「OK」もしくはエンターキーで接点命令の入力確定を行います。なおエッジリレーV0についてはインデックス修飾されているため、デバイスコメントを入力できません。
(どうしてもデバイスコメントを入力する必要がある場合は、グローバルデバイスコメントから入力しましょう。)
以下のようになります。
自分が初めてエッジリレーを使用したときは、入力方法で苦労した覚えがあります。
FOR〰NEXT命令とエッジリレーのサンプルプログラム
具体的にエッジリレーを使用してみます。
例としてFOR-NEXT命令を使用して、M100〰M109のデバイスの累積立ち上がり回数をカウントし、累積ON時間を計測するプログラムを作成してみます。
FOR-NEXT命令中で立ち上がり回数をカウントするために、エッジリレーを使用します。また、累積ON時間を計測するために定期クロックで動作する特殊リレーとインクリメンタル命令を使用します。
サイクルタイムを計測するラダープログラムを作成する際と同様の方法で時間計測を行います。
FOR-NEXT命令中ではインクリメンタル命令をパルス化できませんし、接点をパルス化することもできません。そこで、エッジリレーを使用する必要が出てくるわけです。
デバイスマップ
デバイスマップは以下のようになります。
監視 デバイス値 | 累積 立ち上がり回数 | 累積 ON時間(秒) | |
1 | M100 | R0 | R500 |
2 | M101 | R1 | R502 |
3 | M102 | R2 | R504 |
4 | M103 | R3 | R506 |
5 | M104 | R4 | R508 |
6 | M105 | R5 | R510 |
7 | M106 | R6 | R512 |
8 | M107 | R7 | R514 |
9 | M108 | R8 | R516 |
10 | M109 | R9 | R518 |
立ち上がり回数の格納領域は2バイト(16Bit)、累積ON時間の格納領域は、4バイト(32bit)ととしています。そこで、FOR〰NEXT文中では、累積回数格納レジスタ用のインデックス修飾レジスタは1づつ、累積時間格納レジスタ用のインデックス修飾レジスタは2づつ加算しながらFOR〰NEXT構文内でループ計算を行わせる必要があります。
サンプルプログラム
以下のようになります。
特殊リレーSM400は「常時ON」、SM412は1秒周期でON/OFFを繰り返す特殊リレーです。
エッジリレーを正しく用しない場合等のNG例
FOR〰NEXT文中で立ち上がり回数をカウントするために、インデックス修飾したエッジリレーを使用してみました。
正しく動作しないパターンとしては以下の例が考えられます。注意しましょう。
出力命令側のパルス化
FOR〰NEXT文中では、出力側もパルス化することができないため、この方法ではうまく動作しません。
接点のパルス化 (Shift + F7)
FOR〰NEXT文中では、接点をパルス化することができないため、この方法ではうまく動作しません。
演算結果パルス化命令 (Shift + F5)
FOR〰NEXT文中では、演算結果パルス化命令MEPを使用することができないため、この方法ではうまく動作しません。
エッジリレーをインデックス修飾しない場合
エッジリレーを使用したとしても、インデックス修飾(VOZ1)を忘れてしまうとやはり、うまく動作しません。
コメントを投稿するにはログインしてください。