この記事ではPLCでラダーを書く前に理解しておきたい、2進数の扱いについて解説します。
目次
なぜ 2進数を扱うのか
結論から言うと、エラーを起こしにくい高い信頼性を持ったシステムを構築することが可能になるからです。
普段の生活で私たちが生活で使っている数えかたは10進数と言って、桁上がりが0,1,2,・・・・9、9の次は10(ジュウ)となりますね。2進数では0,1、1の次は10となります。つまり2進数で扱う数字は0と1のみです。
PLCソフトにおいてはビットとワードというもので構成されています。「ビット」はデバイスのON/OFF状態を表現し、「ワード」はデータを表現します。どちらも基本的には2進数で構成されています。
例えば押しボタンスイッチがあります。入力ユニットへ接続してソフトをモニタするとa接点なら押していない状態でOFF、押すとONします。この押していないOFFの状態が「0」、押しているONの状態を「1」とされます。PLCソフトで使用する入力や出力、補助リレーなどで使うものをビットと呼んでおり、ON/OFFの組み合わせ「1か0」で成り立っています。
このON/OFFの組み合わせというシンプルな理論で構成される事により、エラーを起こしにくい信頼性の高いシステムを構築できるものになっています。
それではもう少し具体的に2進数とはどのような物なのか、なぜデータを表現するのに適しているかを解説していきます。
2進数とは
2進数では0,1、1の次は10です。この10は「ジュウ」ではなく「イチゼロ」と読みます。
それでは10進数と2進数の関係はどうなっているのかを説明します。
10進数のデータを2進数で表示すると、このようになります。例えば10進数で「9」に対応する2進数は「1001」となります。
ラダーでイメージした場合、XやY, M, Lを使用しますがこれらはビットデバイスと呼ばれ、ON/OFFを表現するためのデバイスです。この「ON/OFF」が「1/0」となります。
それでは、データを表現したいときはどうするか、そんな時はデータレジスタと呼ばれるものを使用します。命令では”D”を使用します。
ラダーをモニターすると10進数で表示されていますが、これも実は2進数で成り立っており、データレジスタの基本形は2進数の16ビットで形成されています。この単位を1ワードと言います。
2進数の16ビットとは0と1の組み合わせ16個を使って表現するものです。それでは、例としてどのように10進数へ変換するかを見て行きます。
2進数で「1100」と表されている物を10進数で表現した場合、「2の3乗(=8)」と「2の2乗(=4)」のエリアが1なので8+4=12となります。
このようにPLCでは演算において、この2進数を用いて処理しています。
整数・負数の表現
16ビットのデータ長で表現できるのは2の16乗、つまり65536通りの情報です。
そのまま正の数に割り当てた場合は0~65535まで使用できますが、負の数字を扱う場合は-32768~+32767までの数を扱うことができます。+32767までしか使えない理由は0の割り当て分が含まれているからです。
それではどのようにして正負の扱いを決めるのかを見て行きましょう。
内部では"0"か"1"のデータしかないので、直接"+"や"-"といった符号が扱えません。そのため最上位ビットを使用して表現します。
注意
①命令により「0~65535」で使用できるのか、「-32768~+32767」で使用できるのかはそれぞれで異なります。使うときは確認が必要です。
②16ビットでの表現を超える数に関しては、32ビット、64ビットに拡張して使用します。32ビットの場合は”4,294,967,296”通りの情報を扱う事が出来ます。
③1ワードが16ビットですので、32ビットは2ワード、64ビットは4ワード分連続したデバイスを占有します。
この部分は基礎中の基礎です
この仕組みは必ず理解するようにして下さい。この部分が理解できていないと応用命令の意味がさっぱり分からなくなりますので注意しましょう。
実際にPLC歴2年程度の中途採用の方で、「XとかYはONするもの、Dレジスタは数字を入れるもの。」という感じで理解していた方がおられました。
以前、応用関数(デコード命令など)の扱いをレクチャーしていたのですが、「全く内容が入ってきません・・・」と言うので、「私の説明、どこか悪いところあったのかな?」と思い、どの部分が分からなかったか聞くと、「"D"って10進数で数字が入ってる入れ物なのに、なぜ命令した時に数字がそのように変わるかがわかりません」という答えが返ってきたのでした。
ということで今回の記事のように2進数の扱いの基礎を最初からレクチャーさせて頂きました。すると、その方は「基礎の部分をきちんと勉強していればよかった・・・」と話しながらも、結果的に無事理解いただいた。というエピソードがあります。
まとめ
今回の記事を要約するとこんな感じです。
ポイント要約
①2進数の「1と0」は ビットの「ONとOFF」
②データレジスタなどの数字表現には基本的に2進数の16ビットが使用されている。この単位を1ワードと言う
③16ビットで表現できる数字にも限界があるので、16ビットを超える場合には32ビット(2ワード)や64ビット(4ワード)などに拡張して表現する場合もある