【三菱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)命令は以下のページで解説しておりますので、宜しければご覧ください。
【三菱FXシリーズ】デコード(DECO)命令の指令方法とラダープログラム例 当サイトは現場の技術者を応援するスポンサー様のご支援により運営されています。 スポンサー様一覧ページはこちら>>目次
1. エンコード命令の指令方法
エンコード命令には、2種類の指令方法があります。
ENCO:連続実行形ENCOP:パルス実行形ENCOは、エンコード(encode)の略です。
情報を一定の規則に基づき符号化(デジタル化)することをエンコードと呼び、エンコードされたデータを元に戻すことをデコードと呼びます。
メモ 連続実行形は、入力条件がONしている間、毎スキャン実行される命令です。 パルス実行形は、入力条件がONしたときの1スキャンのみ実行される命令です。 ENCO:連続実行形(基本の形)連続実行形のエンコード命令は”ENCO”と指令します。
こちらがENCO命令を使用したラダープログラム例です。
このラダープログラムは、入力条件であるX0がONしている間、補助リレーM0~M255(256点)のONしている位置を求め、データレジスタD0に数値”0~255”を格納します。なぜ256点なのか後ほど解説します。
例えば、補助リレーM99がONしている場合、データレジスタD0には数値”99”が格納されます。
エンコード命令は対象とするデータ長さを指定する必要があり、↑のラダープログラムではK8と指定しています。
データ長さをK8と指定することにより、エンコード元のビットデバイスは2の8乗(256点)を対象とします。仮にK4と指定すると2の4乗である16点が対象となります。
エンコード元のビットデバイスは指定した番号を先頭に、データ長さを対象とするので、↑のラダープログラムでは補助リレーM0を先頭にM255までがエンコード元の対象となります。
一度エンコード命令を実行すると、入力条件がOFFしてもエンコード先のワードデバイス(上のラダープログラムでいうDO)は”0”になりません。ワードデバイスを”0”にするには転送(MOV)命令等で”0”を書き込む必要があります。
三菱電機製シーケンサFXシリーズにおける転送(MOV)命令は以下のページで解説しておりますので、宜しければご覧ください。
【三菱FXシリーズ】転送(MOV)命令の指令方法とラダープログラム例先ほどのラダープログラムはGX Works2の回路上で ENCO M0 D0 K8 と入力してEnterキーを押すと命令が挿入されます。(小文字でもOKです。)
ENCOP:パルス実行形パルス実行形のエンコード命令は”ENCOP”と指令します。
こちらが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の動作イメージは以下のようになります。
補助リレー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の動作イメージは以下のようになります。
スイッチ(X0)が押された瞬間のみエンコード処理が行われます。スイッチ(X0)が押されている間にエンコード元のM0~M15の状態が変化しても、データレジスタD0の値は変化しません。
ラダープログラムラダープログラムは以下のようになります。
スイッチ(X0)を押された瞬間のみエンコード処理を行うために、パルス実行形のエンコード命令を使用します。
4. おわりに
三菱電機製シーケンサFXシリーズにおけるエンコード命令について解説しました。
電気ハード設計、PLC/タッチパネルソフト設計、ロボットティーチング、制御盤製作などの外注業務をご検討中の方は、ぜひ永工舎(エイコウシャ)にご相談ください。確かな技術と柔軟な対応で、現場の課題解決をサポートいたします。
当サイト「電気設計人.com」は個人事業主として永工舎を運営する永井が執筆しています。電気設計・制御設計に関する業務依頼やお見積もりも承っておりますので、お気軽にお問い合わせください。
シーケンス制御やラダープログラムの基礎から実務レベルまで、体系的に学べる良書をいくつか紹介します。どれも私自身が現場で役立ったと感じた参考書で、自信をもっておすすめできる内容です。
リンク リンク リンク リンク リンク リンクスポンサードリンク