この記事では、ラダー回路によく出てくるバイナリーとBCDの考え方を分かりやすく説明しています。
今回は、分かりやすく1ワード(16ビット)で考えます。
例えば、1ワードに2進数「0001 0010 0011 0100」が入力されているとします。
それを、バイナリーというメガネをかけて見ると、
「0001 0010 0011 0100」=「4660」となります。
BCDというメガネをかけて見るとと、「1234」 となります。
「(0001) (0010) (0011) (0100)」=「(1)(2)(3)(4)」
となり、バイナリーでは、1ワード=4660となり、それ以上もそれ以下もありません。
例えば、バイナリー「4660」を数値だけ入れ替えても、そこに規則性は生まれません。
「0001 0010 0011 0100」=「4660」
「0001 0111 1001 1110」=「6046」
「0001 1001 0000 0110」=「6406」
1ワード単体が1つの数値群を表しますので、一桁目がここで、二桁目がこれでという事も無いです。
では、BCDはどうかいうと、
「(①0001) (②0010) (③0011) (④0100)」=「(1)(2)(3)(4)」 こうなります。
1桁ごとに、4つのビットデータに分かれており、規則性が生まれます。
数値ごとに決まっているので、以下のように並び替えることも容易です。
「(③0011) (②0001) (③0010) (④0010)」=「(3)(1)(2)(4)」
要は、1ワードに4つの数値が入り、0(0000)~9(1001)の4つのグループの組み合わせという事になります。
PLCやラダーツール、電気機器では、計算や表示などがほとんどバイナリーとなっています。
じゃあ、なぜ電気制御でBCDという考え方が必要なのか?
それは、主に次の2点です。
1.バイナリー数値の下二桁目など、任意の桁数だけ別のレジスタに転送したい
バイナリーですと、1ワードのここが一桁目、二桁目と決まっているわけではないので、
任意の桁数を指定して取り出すことが難しくなっています。
ただし、下記の記事でバイナリーの任意の桁数をあるレジスタに転送する方法を説明しています。
2.外部接続機器がBCDの入力・出力表記となっている
この理由がほとんどだと思います。
たとえば、4桁をBCD表示する表示器があったとします。
しかし、それは他社メーカーの既製品である場合、BCDをバイナリー表示は変える事が出来ません。
そのような時に、「1300」を表示させたい場合、
バイナリーで「0000 0101 0001 0100」=「1300」を出力したとしても、
表示器はBCDのメガネをかけている為、
「0000 0101 0001 0100」⇒「0514」が表示されてしまうわけです。
なので、三菱であれば、BCD 命令を使って
バイナリー「1300」=「0000 0101 0001 0100」を、BCDに変換し、
BCD「1300」=「0001 0011 0000 0000」を出力することによって、
ただしく表示させる事が出来ます。