オムロンCJシリーズにおける「ビット反転」命令とは、CHデータを反転するラダープログラム命令です。
ビット反転命令を用いることにより、CHデータの各ビットのON/OFF(1 or 0)を反転させることができます。
この記事では、オムロンCJシリーズにおけるビット反転命令の指令方法とラダープログラム例について解説します。
オムロンCJシリーズにはCHデータを反転させた結果を他のCHに転送する「否定転送」命令があります。否定転送(MVN)命令については以下のページで解説しております。
目次
1. ビット反転命令の指令方法
ビット反転命令には、動作オプションを含めると4種類の指令方法があります。
| 命令文 | 内容 | 動作オプション |
|---|---|---|
| COM | 1ワード長のビット反転命令 | – |
| @COM | 1ワード長のビット反転命令 | 微分 |
| COML | 2ワード長のビット倍長反転命令 | – |
| @COML | 2ワード長のビット倍長反転命令 | 微分 |
COM:1ワード長のビット反転命令(動作オプション無し)
1ワード長のビット反転命令(動作オプション無し)は”COM”と指令します。
こちらがCOM命令を使用したラダープログラム例です。

このラダープログラムは、0.00がONしている間、データメモリD0の各ビットを反転します。
例えば、D0に16進数”AAAA”が格納されている状態で0.00がONすると、D0には各ビットの反転した”5555”になります。
↓は16進数”AAAA”を反転したときのデータメモリD0の内容です。

D0に16進数”FFFF”が格納されている状態で0.00がONすると、D0には各ビットの反転した”0000”になります。
↓は16進数”FFFF”を反転したときのデータメモリD0の内容です。

オプション無しのビット反転(COM)命令を用いた場合、1サイクル毎にD0が反転し続けます。D0の各ビットを反転させる場合「入力条件を微分化」または「微分オプションの反転(@COM)命令」を使用する必要があります。

「入力条件を微分化する」手法として、立上り微分(DIFU)命令があります。立上り微分(DIFU)命令については以下のページで解説しております。
「微分オプションの反転(@COM)命令」については、次項で解説します。
先ほどのラダープログラムはCX-Programmerの回路上で COM D0 と入力してEnterキーを押すと命令が挿入されます。 ※スマートインプットモードの場合

@COM:1ワード長のビット反転命令(微分オプション)
1ワード長のビット反転命令(微分オプション)は”@COM”と指令します。
こちらが@COM命令を使用したラダープログラム例です。

微分オプションのビット反転(@COM)命令は「入力条件の立ち上がり(OFF→ON)時に1サイクルのみ命令が実行される」ことです。
立ち上がり時に1回のみCHデータが反転するため、入力条件がONし続けたとしても1サイクル毎にD0が反転し続けることはありません。

COML・@COML:2ワード長のビット倍長反転命令
2ワード長のビット倍長反転命令(動作オプション無し)は”COML”と指令します。
2ワード長のビット倍長反転命令(微分オプション)は”@COML”と指令します。
こちらがCOML・@COML命令のラダープログラム例です。


2ワード長のビット倍長反転命令の場合、各CHは指定したCHを下位とする2ワードとして扱われます。
2.【例題①】1ワード長の反転結果を求める
下記仕様のラダープログラムをビット反転命令を用いて解説します。
反転させる対象のデータメモリはD0のみのため、1ワード長のビット反転命令を使用します。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。

スイッチ(0.00)を押すと、データメモリD0の各ビットの状態が反転します。
ラダープログラム
ラダープログラムは以下のようになります。

0.00を入力条件とする1ワード長のビット反転命令(微分オプション)の@COM命令を使用して、D0の各ビットの状態を反転します。
オプション無しのビット反転(COM)命令を用いると、1サイクル毎にD0が反転し続けるため、@COM命令を使用しています。(入力条件を微分化してCOM命令を用いてもOKです。)
3.【例題②】2ワード長の反転結果を求める
下記仕様のラダープログラムをビット倍長反転命令を用いて解説します。
データメモリはD0を下位とする2ワード(32ビット)長として扱う。
データメモリを2ワード長として扱うため、2ワード長のビット倍長反転命令を使用します。
タッチパネルの動作イメージ
タッチパネルの動作イメージは以下のようになります。

スイッチ(0.00)を押すと、データメモリD0,D1の各ビットの状態が反転します。
ラダープログラム
ラダープログラムは以下のようになります。

0.00を入力条件とする2ワード長のビット倍長反転命令(微分オプション)の@COML命令を使用して、D0,D1の各ビットの状態を反転します。
4. おわりに
オムロンCJシリーズにおけるビット反転命令について解説しました。


