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

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

「デコード」命令とは、三菱電機製シーケンサFXシリーズにおける数値データの値に応じていずれか1点のビットデバイスをONするラダープログラム命令です。

デコード命令を用いることにより、数値を格納できるワードデバイス(データレジスタ等)の値に応じて、連続したビットデバイス(補助リレーや出力リレー等)のいずれか1点のみONさせることができます。

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

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

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

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

デコード命令とは逆の動作をするエンコード命令と呼ばれるものが存在します。エンコード命令は「ビットデバイスのONしている位置をワードデバイスに格納する」命令です。

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

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

1. デコード命令の指令方法

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

DECO:連続実行形
DECOP:パルス実行形

DECOは、デコード(decode)の略です。

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

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

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

連続実行形のデコード命令は”DECO”と指令します。

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

10_DECO命令

このラダープログラムは、入力条件であるX0がONしている間、データレジスタD0の値”0~255”に応じて、M0~M255(256点)のうちいずれか1ヶがONします。なぜ256点なのか後ほど解説します。

例えば、データレジスタD0の値が”5”であれば補助リレーM5がONします。

10_命令イメージ

もう一つ、データレジスタD0の値が”42”であれば補助リレーM42がONします。

10_命令イメージ2

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

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

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


一度デコード命令を実行すると、入力条件をOFFしてもデコード先のビットデバイスはOFFしません。ビットデバイスをOFFするにはリセット(RST)命令等で”0”を書き込む必要があります。

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

00_【三菱FXシリーズ】セット(SET)・リセット(RST)命令の指令方法とラダープログラム例 【三菱FXシリーズ】セット(SET)・リセット(RST)命令の指令方法とラダープログラム例


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

10_命令挿入

DECOP:パルス実行形

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

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

11_DECOP命令

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

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

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

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

仕様
データレジスタD0の値をデコードして、補助リレーM0~M15のいずれか1点をONする。この処理を常時行う。
※データレジスタD0の値は必ず0~15の範囲とする。

デコード処理を常時行うため、補助リレーM8000を使用します。M8000は三菱電機製シーケンサFXシリーズにおける特殊デバイスで、シーケンサがRUN中は常時ONするデバイスです。

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

GOTの動作イメージ

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

例題①_GOT動作イメージ

補助リレーM0~M15は、ONすると右隣の丸が白塗りになります。

データレジスタD0の値に応じて、補助リレーM0~M15のうちいずれか1点のビットデバイスがONします。

データレジスタD0の値が”0”の場合、補助リレーM0がONします。

ラダープログラム

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

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

デコード処理を常時実行するため、入力条件を特殊デバイスのM8000にして連続実行形のデコード命令を指令します。

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

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

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

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

仕様
データレジスタD0の値をデコードして、補助リレーM0~M15のいずれか1点をONする。この処理をスイッチ(X0)が押された瞬間のみ行う。
※データレジスタD0の値は必ず0~15の範囲とする。

【例題①】ではデコード処理を常時行うために連続実行形を使用していましたが、今回はパルス実行形を使用します。

GOTの動作イメージ

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

例題②_GOT動作イメージ

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

ラダープログラム

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

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

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

4. おわりに

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

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

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

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

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

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

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

4 COMMENTS

りょう

はじめまして
私も仕事柄三菱シーケンスに触れる機会があるのですが
最近FIFWとFIFRの命令に出くわしました
マニュアルやネットで調べてもしっくりくる回答がなく困っています
データテーブルの読み書きなのは分かったのですが
そもそもデータテーブルがよくわかりません
よければサイト内で解説いただけると嬉しいです

返信する
電気設計人

コメントありがとうございます。
三菱Qシリーズの取説で命令を見つけました・・・が
私も勉強不足で「データテーブルって…?」レベルなので
勉強して記事に致します。

直近でご要望に応えることができず恐縮です。

返信する
電気や

こんにちわ

デコードの命令の使い方が分からず困っていたところだったので
おかげで助かりました。
ありがとうございます。

ひとつ質問があるのですが
デコード元にデータレジスタD0、デコード先に補助リレーM0、データ長さにK4を指定することで「データレジスタD0の値をデコードして、補助リレーM0~M15(2の4乗である16点)に結果を格納する」ラダープログラムとなります。
エンコードの命令の使い方は分かったのですが、下記の説明がプログラムの中で実行されている感じがしなくいまいちピンとこないのでご説明をお願いしたいです。

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

返信する
電気設計人

電気や様。
ご覧頂きありがとうございます。
エンコード・デコードとは、ラダープログラム以外にPCや録音機など様々な用途で使用されている表現(処理)です。
具体的な処理内容はハードウェア(もしくはソフトウェア)毎に異なり、一概に「エンコード・デコードはこのような処理です。」と言い難い部分があります。
当記事のご指摘頂いた箇所ですが、広義にエンコード・デコードとはざっくりこのような処理です。と記載した次第です。
ラダープログラムにおいて当てはまる内容ではございません。
少々紛らわしい表現でしたので、改めて記載内容を修正させて頂きます。

返信する

コメントを残す

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