GX Works2で2つのビットデバイスの論理演算を行うファンクションブロックを作成したので公開します。
ここでいう論理演算とは、以下のものを指します。
- OR(論理和)
- AND(論理積)
- NOR(否定論理和)
- NAND(否定論理積)
- XOR(排他的論理和)
アイキャッチ画像に「作:電気設計人」とありますが、許可が必要な訳ではありませんので、ご自由に使用してください。(作ったぜアピールしたいだけです。)
ファンクションブロックの作り方と使い方は以下の記事で解説していますので、宜しければそちらもご覧ください。


この記事中のラダープログラムはFXCPU用の作成したものになります。
目次
1. 作成するファンクションブロックの仕様
論理回路のファンクションブロックを作成する前に、完成したらどのようなことができるか明確にします。
今回は以下のような2つのビットデバイスの論理演算結果が出力できるものを作成します。
Y0:OR(論理和)
Y1:AND(論理積)
Y2:NOR(否定論理和)
Y3:NAND(否定論理積)
Y4:XOR(排他的論理和)
通常のラダープログラムは以下のようになります。

ラダープログラムは作る人により異なる場合がありますので「上のラダープログラム以外は間違っている」わけではありません。
イメージしやすいように簡単なGOTを作成しました。動作は以下のようになります。

それぞれの論理回路については以下のページで解説しておりますので、宜しければご覧ください。





また、今回はXOR(否定論理和)とNAND(否定論理積)にインバース命令を使用しました。(斜線のような記号のものです。)
インバース命令については以下のページで解説しておりますので、宜しければご覧ください。

2. デバイスをラベルに置き換え
上記のラダープログラムのデバイスをファンクションブロック内で使用するローカルラベルに置き換えます。
デバイス | ラベル(置き換え後) |
X0 | i_Bit1 |
X1 | i_Bit2 |
Y0 | o_Or |
Y1 | o_And |
Y2 | o_Nor |
Y3 | o_Nand |
Y4 | o_Xor |
このラベルを最初の仕様のデバイスに置き換えると、以下のような仕様になります。
o_Or:OR(論理和)
o_And:AND(論理積)
o_Nor:NOR(否定論理和)
o_Nand:NAND(否定論理積)
o_Xor:XOR(排他的論理和)
このファンクションブロックを作成することで、ラダープログラム内で何回でも上記の論理回路を使用することができます。
3. 作成した論理回路のファンクションブロック
それでは論理回路のファンクションブロックを作成します。
ファンクションブロックの名前は「Logic-circuit」とします。
Logic-circuitのファンクションブロック内のラダープログラムは以下のようになります。
<ファンクションブロック内部>

各デバイスをラベルに置き換えています。
このファンクションブロック「Logic-circuit」をラダープログラム上で使用すると以下のようになります。
<Logic-circuit使用例>

このラダープログラムを使用すると、以下のような仕様になります。
Y0:OR(論理和)
Y1:AND(論理積)
Y2:NOR(否定論理和)
Y3:NAND(否定論理積)
Y4:XOR(排他的論理和)
これは最初の仕様と同じものです。ラダープログラム上でファンクションブロック「Logic-circuit」は別の場所で別のアドレスで何回でも使用することができます。