【オムロンCJ】転送(MOV)命令の指令方法とラダープログラム例

00_【オムロンCJ】転送MOV命令の指令方法とラダープログラム例

オムロンCJシリーズにおける「転送」命令とは、CHデータまたは定数値を指定したCHに転送するラダープログラム命令です。

転送命令を用いることにより「データメモリ(D)に定数を格納する回路」や「タイマ(T)やカウンタ(C)の現在値を他のCHに転送する回路」等を作ることができます。

ラダープログラムでデータメモリ(D)や拡張データメモリ(E)を用いる場合、頻繁に使用する重要なラダープログラム命令です。

この記事では、オムロンCJシリーズにおける転送命令の指令方法ラダープログラム例について解説します。

注意
この記事のラダープログラムはCX-Programmer Ver. 9.63で作成しており、PLC機種はCJ2Mに設定してあります。
注意
オムロンCJシリーズにおいて転送命令は、CJ2H-CPU6□-EIP、CJ2H-CPU6□、CJ2M-CPU□□、CJ1□-CPU□□□-□で使用可能です。その他の機種についてはマニュアルを参照してください。

1. 転送命令の指令方法

転送命令には、動作オプションを含めると6種類の指令方法があります。

命令文内容動作オプション
MOV1ワード長の転送命令
@MOV1ワード長の転送命令微分
!MOV1ワード長の転送命令都度リフレッシュ
!@MOV1ワード長の転送命令微分、都度リフレッシュ
MOVL2ワード長の倍長転送命令
@MOVL2ワード長の倍長転送命令微分

MOVは、動かす・移す(Move)の略です。

メモ
動作オプションの「微分」とは微分オプションと呼ばれ、命令の入力条件の立ち上がり(OFF→ON)時に、1サイクルのみ命令が実行されるものです。
メモ
都度リフレッシュの動作オプションとは都度リフレッシュオプションと呼ばれ、命令内で指定された入出力エリアのデータを、命令実行時にI/Oリフレッシュするものです。

MOV:1ワード長の転送命令(動作オプション無し)

1ワード長の転送命令(動作オプション無し)は”MOV”と指令します。

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

10_MOV命令

このラダープログラムは、0.00がONするとデータメモリD0に定数”20”が転送され、0.01がONするとD0に定数”0”が転送されます。

10_命令解説

今回はD0に対して転送(MOV)命令を2ヶ使用しています。このように転送命令は同じデバイスに何度でも使用することが可能です。

ただし、転送命令の入力条件が同時にONした場合「ラダープログラム下側に指令した命令が優先」されます。


先ほどのラダープログラムはCX-Programmerの回路上で MOV +20 D0 と入力してEnterキーを押すと命令が挿入されます。 ※スマートインプットモードの場合

10_命令挿入

@MOV:1ワード長の転送命令(微分オプション)

1ワード長の転送命令(微分オプション)は”@MOV”と指令します。

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

11_@MOV命令

微分オプションの転送(@MOV)命令は「入力条件の立ち上がり(OFF→ON)時に1サイクルのみ命令が実行される」ことです。

↑のラダープログラムの場合、0.00と0.01が双方ONした場合、後にONした方が優先されます。

メモ
入力条件がOFF→ONしたとき転送命令が1サイクルだけ実行されます。

!MOV:1ワード長の転送命令(都度リフレッシュオプション)

1ワード長の転送命令(都度リフレッシュオプション)は”!MOV”と指令します。

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

12_!MOV命令

都度リフレッシュオプションの転送(!MOV)命令は「第1オペランドに入力リレーエリアを指定することにより、命令実行時にINリフレッシュをしてから第2オペランドにその値を転送する」ことができます。

12_!MOV命令IN

また「第2オペランドに出力リレーエリアを指定することにより、命令実行時に第1オペランドの値を転送してから即時OUTリフレッシュをする」ことができます。

12_!MOV命令OUT

ラダープログラムのサイクル途中でI/Oリフレッシュを行う必要が無い場合、都度リフレッシュオプションを使用する必要はありません。

MOVL・@MOVL:2ワード長の倍長転送命令

2ワード長の倍長転送命令(動作オプション無し)は”MOVL”と指令します。

2ワード長の倍長転送命令(微分オプション)は”@MOVL”と指令します。

こちらがMOVL・@MOVL命令のラダープログラム例です。

13_MOVL命令
13_@MOVL命令

2ワード長の倍長転送命令の場合、各CHは指定したCHを下位とする2ワードとして扱われます。

CHに転送する値が大きく、1ワード(16ビット)ではオーバフローする場合に倍長転送命令を使用します。

注意
上のラダープログラム例では、D1を上位CHとして使用されるため、他の用途で使用できなくなります。

2.【例題①】1ワード長のデバイス値を転送する

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

仕様
スイッチ(0.00)を押すと、データメモリD0に定数5を転送する。
スイッチ(0.01)を押すと、データメモリD0に定数0を転送する。
スイッチ(0.00)と(0.01)が双方ONした場合、後にONした方を優先する。
スイッチ(0.02)を押すと、データメモリD0の値をD2に転送する。
データメモリはすべて1ワード長として扱う。

各データメモリは1ワード長として扱うため、1ワード長の転送命令を使用します。

タッチパネルの動作イメージ

タッチパネルの動作イメージは以下のようになります。

例題①_タッチパネル

スイッチ(0.00)を押すとデータメモリD0に定数5を転送して、スイッチ(0.01)を押すとD0に定数0を転送します。

スイッチ(0.00)と(0.01)が押された場合、後に押された方を優先します。

スイッチ(0.02)を押すと、その時のデータメモリD0の値をD2に転送します。

ラダープログラム

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

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

0.00と0.01を入力条件とする1ワード長の転送命令(微分オプション)の@MOV命令を使用して、D0に定数を転送します。

この部分をオプション無しの転送(MOV)命令を使用すると、0.00と0.01の双方がONしたとき、ラダープログラム下側にある定数0の転送が優先されてしまいます。

微分オプションの転送(@MOV)命令は入力条件がOFF→ONになった瞬間の1サイクルだけ実行されるため、後から押されたスイッチの処理が優先されます。

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

3.【例題②】2ワード長のデバイス値を転送する

下記仕様のラダープログラムを倍長転送命令を用いて解説します。

仕様
スイッチ(0.00)を押すと、データメモリD0,D1に定数100,000を転送する。
スイッチ(0.01)を押すと、データメモリD0,D1の値をD2,D3に転送する。
データメモリはD0,D2を下位とする2ワード(32ビット)長として扱う。

データメモリを2ワード長として扱うため、2ワード長の倍長転送命令を使用します。

タッチパネルの動作イメージ

タッチパネルの動作イメージは以下のようになります。

例題②_タッチパネル

スイッチ(0.00)を押すと、データメモリD0,D1に定数100,000を転送します。

スイッチ(0.01)を押すと、データメモリD0,D1の値をD2,D3に転送します。

ラダープログラム

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

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

データメモリ1点(16ビット)では、-32,768~32,767の数値を扱うことができますが、今回の例題は100,000を転送するため1点(16ビット)では足りません。

データメモリ2点(32ビット)では、-2,147,483,648~2,147,483,647の数値を扱うことができるため100,000でも問題なく転送することができます。

データメモリを2点(32ビット)として扱うために、2ワード長の倍長転送命令であるMOVL命令を使用します。

4. おわりに

オムロンCJシリーズにおける転送命令について解説しました。

転送命令はデータメモリやCHデータを扱う際は使用頻度が高くなる命令ですので、使いこなせるようになって頂ければと思います。

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

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

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

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

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

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

コメントを残す

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