【三菱FXシリーズ】エンコード(ENCO)命令の指令方法とラダープログラム例

00_【三菱FXシリーズ】エンコード(ENCO)命令の指令方法とラダープログラム例

「エンコード」命令とは、三菱電機製シーケンサFXシリーズにおける指定した範囲のビットデバイスのONしている位置を求めるラダープログラム命令です。

エンコード命令を用いることにより、連続したビットデバイス(補助リレーや入力リレー等)のONしている位置を求め、ワードデバイス(データレジスタ等)に数値として格納することができます。

この記事では、三菱電機製シーケンサFXシリーズにおけるエンコード命令の指令方法ラダープログラム例について解説します。

注意
この記事中のラダープログラムはGX Works2で作成しており、PCタイプはFX3G/FX3GCに設定してあります。

三菱電機製シーケンサFXシリーズにおいて、エンコード命令は以下のシーケンサ・バージョンで使用することが可能です。

FX3S:Ver1.00以降
FX3G:Ver1.00以降
FX3GC:Ver1.40以降
FX3U:Ver2.20以降
FX3UC:Ver1.00以降

エンコード命令とは逆の動作をするデコード命令と呼ばれるものが存在します。デコード命令は「数値データに応じていずれか1点のビットデバイスをONする」命令です。

三菱電機製シーケンサFXシリーズにおけるデコード(DECO)命令は以下のページで解説しておりますので、宜しければご覧ください。

00_【三菱FXシリーズ】デコード(DECO)命令の指令方法とラダープログラム例 【三菱FXシリーズ】デコード(DECO)命令の指令方法とラダープログラム例

1. エンコード命令の指令方法

エンコード命令には、2種類の指令方法があります。

ENCO:連続実行形
ENCOP:パルス実行形

ENCOは、エンコード(encode)の略です。

情報を一定の規則に基づき符号化(デジタル化)することをエンコードと呼び、エンコードされたデータを元に戻すことをデコードと呼びます。

メモ
連続実行形は、入力条件がONしている間、毎スキャン実行される命令です。
パルス実行形は、入力条件がONしたときの1スキャンのみ実行される命令です。

ENCO:連続実行形(基本の形)

連続実行形のエンコード命令は”ENCO”と指令します。

こちらがENCO命令を使用したラダープログラム例です。

10_ENCO命令

このラダープログラムは、入力条件であるX0がONしている間、補助リレーM0~M255(256点)のONしている位置を求め、データレジスタD0に数値”0~255”を格納します。なぜ256点なのか後ほど解説します。

例えば、補助リレーM99がONしている場合、データレジスタD0には数値”99”が格納されます。

10_デバイスモニタ1

エンコード命令は対象とするデータ長さを指定する必要があり、↑のラダープログラムではK8と指定しています。

データ長さをK8と指定することにより、エンコード元のビットデバイスは2の8乗(256点)を対象とします。仮にK4と指定すると2の4乗である16点が対象となります。

エンコード元のビットデバイスは指定した番号を先頭に、データ長さを対象とするので、↑のラダープログラムでは補助リレーM0を先頭にM255までがエンコード元の対象となります。


一度エンコード命令を実行すると、入力条件がOFFしてもエンコード先のワードデバイス(上のラダープログラムでいうDO)は”0”になりません。ワードデバイスを”0”にするには転送(MOV)命令等で”0”を書き込む必要があります。

三菱電機製シーケンサFXシリーズにおける転送(MOV)命令は以下のページで解説しておりますので、宜しければご覧ください。

00_【三菱FXシリーズ】転送(MOV)命令の指令方法とラダープログラム例 【三菱FXシリーズ】転送(MOV)命令の指令方法とラダープログラム例


先ほどのラダープログラムはGX Works2の回路上で ENCO M0 D0 K8 と入力してEnterキーを押すと命令が挿入されます。(小文字でもOKです。)

10_命令挿入

ENCOP:パルス実行形

パルス実行形のエンコード命令は”ENCOP”と指令します。

こちらがENCOP命令を使用したラダープログラム例です。

11_ENCOP命令

連続実行形(ENCO命令)との違いは、入力条件X0がON中にエンコード元(M0~M255)の状態が変化しても、D0の値は追従して変化しないことです。

メモ
入力条件がOFF→ONしたときにエンコード命令を1スキャンだけ実行します。

2.【例題①】エンコード結果を求める(連続実行形)

下記仕様のラダープログラムをエンコード命令を用いて解説します。

仕様
補助リレーM0~M15のONしている位置を、データレジスタD0に格納する。
この処理をスイッチ(X0)が押されている間に行う。

スイッチ(X0)が押されている間にエンコード処理を行うため、連続実行形を使用します。(後述する【例題②】は押された瞬間のみ実行する)

エンコード元はM0~M15の16ビットであるため、データ長さをK4と指定します。(2の4乗が16のため)

GOTの動作イメージ

GOTの動作イメージは以下のようになります。

例題①_GOT動作イメージ

補助リレーM0~M15を各々ONさせるスイッチ(水色)を使用します。

補助リレーM0~M15のいずれか1点のビットデバイスがONすると、その位置をエンコード先のデータレジスタD0に格納します。

ラダープログラム

ラダープログラムは以下のようになります。

例題①_ラダープログラム

エンコード元に補助リレーM0、エンコード先にデータレジスタD0、データ長さにK4を指定することで「補助リレーM0~M15(16点)の値をエンコードして、データレジスタD0に格納する」ラダープログラムとなります。

連続実行形を用いることにより、補助リレーM0~M15の状態が変化するとエンコード先のデータレジスタD0の値も追従して変化します。


エンコード元である補助リレーM0~M15が複数ONした場合を考えます。

その場合上位側のビットデバイスの位置を優先して、エンコード先にエンコード結果を格納します。下位側のビット情報は無視します。

例題①_解説

↑では、M12~M5を順々にONしていますが、エンコード先のデータレジスタD0には、その時ONしている一番上位の位置をエンコードした結果が格納されます。

3.【例題②】エンコード結果を求める(パルス実行形)

下記仕様のラダープログラムをエンコード命令を用いて解説します。

仕様
補助リレーM0~M15のONしている位置を、データレジスタD0に格納する。
この処理をスイッチ(X0)が押された瞬間のみ行う。

【例題①】ではエンコード処理をスイッチ(X0)が押されている間は常時行うために連続実行形を使用していましたが、今回はスイッチ(X0)が押された瞬間のみ実行するためにパルス実行形を使用します。

GOTの動作イメージ

GOTの動作イメージは以下のようになります。

例題②_GOT動作イメージ

スイッチ(X0)が押された瞬間のみエンコード処理が行われます。スイッチ(X0)が押されている間にエンコード元のM0~M15の状態が変化しても、データレジスタD0の値は変化しません。

ラダープログラム

ラダープログラムは以下のようになります。

例題②_ラダープログラム

スイッチ(X0)を押された瞬間のみエンコード処理を行うために、パルス実行形のエンコード命令を使用します。

4. おわりに

三菱電機製シーケンサFXシリーズにおけるエンコード命令について解説しました。

以下の参考書はラダープログラムの色々な「定石」が記載されており、実務で使用できるノウハウが多く解説されています。私がラダープログラムの参考書として自信をもってオススメできるものです。

ただし、ラダープログラムやPLCといった電気・制御設計は参考書やWebサイトのみでの学習には必ずどこかで限界が来ます。

各メーカが販売しているPLCやプログラム作成のアプリケーションを揃えるには安くても十万円以上の大きな費用が掛かり、独学は現実的ではありません。

ラダープログラムの一番現実的な学習方法は「実務で経験を積む」ことです。電気・制御設計者はこれから更に必要な人材になり続けますので、思い切って転職する選択肢もあります。

doda』といった大手求人(転職)サイトには電気・制御設計の求人が数多く紹介されています。※登録は無料です。

「スキルこそ今後のキャリアを安定させる最も大切な材料」と考える私にとって電気・制御設計はとても良い職業だと思います。キャリアの参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です