スポンサーリンク
PLC

PLC内部での数値表現方法:データの種類と形式データ形式とデータ範囲について


シーケンス回路で使用するリレーと、PLC回路で使用するラダー言語には違いがありますが、PLCの良い点の一つは数値や文字列などのデータを扱えることです。

PLCにおいてデータを扱うためには、内部メモリと呼ばれるデバイスを使用します。このデバイスは、PLC内部の記憶領域であり、数値データやON/OFF状態を表す信号の格納場所(アドレス)を示すものです。

デバイスはワードデバイスとビットデバイスの2種類に分類されます。ワードデバイスは数値データを表現するために使用され、一方ビットデバイスはON/OFF状態を表現するために使用されます。

デバイスの詳細な仕様はPLCのメーカーや機種によって異なりますが、デバイス記号とデバイス番号によって表現されます。例えば、三菱電機製のシーケンサの場合、M00は「補助リレー」というビットビットデバイスであり、「00」という番号が割り付けられたビットデバイスを表します。

その他の三菱シーケンサの代表的なデバイスは以下の通りですが、もちろんこれ以外にも多くの種類のデバイスが用意されています。

デバイス種類デバイス記号デバイス名
ビットデバイスX入力デバイス
ビットデバイスY出力デバイス
ビットデバイスM内部リレー
ビットデバイスFアナンシエータ
ビットデバイスLラッチリレー
ワードデバイスDデータレジスタ
ワードデバイスR拡張データレジスタ

ワードデバイスの「ワード」とは「16ビット」のことです。
1ワード分のワードレジスタは連続した16個のビットデータを使用して数値データを表しています。
ビットデータとは「ON」と「OFF」すなわち「1」と「0」の情報です。
これを利用してワードデータは数値を表現することができます。

PLCにおいて、数値を表現するためには16ビットのワードデータ、または32ビットのダブルワードデータを使用します。ワードデータは2の16乗(65,536)通り、ダブルワードデータは2の32乗(4,294,967,296)通りのパターンを表現できます。ただし、表現可能な数値の範囲や負の値を表現できるかどうかは、「データ形式」によって異なります。この点に留意してください

データ形式データ長最小値最大値
符号なし16bitバイナリー値
unsigned short
16ビット
=2byte
=1ワード
065,535
符号付16bitバイナリー値
signed short
16ビット
=2byte
=1ワード
-32,76832,767
符号なし32bitバイナリー値
unsigned long
32ビット
=4byte
=2ワード
04,294,967,295
符号付32bitバイナリー値
signed long
32ビット
=4byte
=2ワード
-2,147,483,6482,147,483,647


最上位ビットのことをMSB(most significant bit)と呼ぶことがあります。

最上位ビットとは、データの二進数表現において、最も桁の大きなビットのことを指します。例えば、8ビットのデータであれば、最上位ビットは左から数えて8番目のビットです。最上位ビットをMSB(most significant bit)と呼ぶことがあります。このように呼ぶのは、最上位ビットがデータの桁数や大きさを決定する上で最も重要なビットだからです。たとえば、符号付きの数値を表す場合、最上位ビットは符号を表し、その値が0か1であるかで正負が決まります。最上位ビットが1であれば負数、0であれば正数を表します。このように、最上位ビットはデータの表現において非常に重要な役割を持っています。

スポンサーリンク

数値データを取り扱うコツ

少数値の取扱

上記の4つのデータ形式は、すべて整数型のデータ形式であり、小数点以下の数値を表現することができません。しかし、例えば位置決めなど、小数点以下の精度が必要なデータを扱う場合には、これらの整数型データを工夫することで小数点以下の数値を表現することができます。この場合、例えば位置決めデータの単位が0.1μmであれば、デバイスのコメント内に単位を記載しておくことで、そのデバイスの内容がわかりやすくなります。

デバイスの割り付け

PLCのデバイス値は、各ビットが独立した2進数で表されます。符号なしの16ビット整数の場合、下位ビットが0から15までの番号でアドレス化されます。同様に、32ビットの場合は0から31までの番号でアドレス化されます。

ダブルワードデータの場合、32ビットのデータであるため、2つの16ビットのデータに分割することができます。PLC内部では、2つのデータが連続して格納され、それぞれ偶数番号と奇数番号のデバイス値が割り当てられます。例えば、偶数番号がD0、D2、D4…、奇数番号がD1、D3、D5…となります。

ただし、偶数デバイス値を使用することが必須というわけではありません。偶数デバイス値を使うことで、データの配置がわかりやすくなり、メンテナンス性が向上するというメリットがあるため、多くの場合において偶数デバイス値が採用されています。

ちなみに、三菱シーケンサにおいて、ダブルワードデータの場合、デバイス「D0」に格納されるデータの順序は、上位16ビットがD1、下位16ビットがD0になります。このようなデータの格納方法を「リトルエンディアン形式」と呼びます。リトルエンディアン形式では、指定アドレスが下位ワードとなり、指定アドレス+1が上位ワードとなるため、注意が必要です。

トルエンディアン形式は、Intelプロセッサなどでも採用されているバイトオーダーの一つであり、下位バイトから順番に格納されるため、扱いやすくなる場合があるとされています。

16bitバイナリー値(16 bit binary)のカンスト

符号付16ビットバイナリー値で表現可能な最大値は32,767です。例えば、1時間に1インクリメントする数値データをカウントする場合、カンストするまでの時間を計算してみます。
1時間に1回カウントアップするので、1日で24回、1年で24×365=8,640回です。
32,767÷8,640=約3.79年でカンストしてしまいます。

次に、符号付32ビットバイナリー値にて、同様にカウントした場合を考えます。
表現可能な最大値は2,147,483,647ですので、2,147,483,647÷8,640=約248,551年となります。

FA装置の寿命を考慮すると、1時間に1回カウントアップするような用途であれば、
符号付32ビットのダブルワード形式のデータを使用する方が良いと思います。

まとめ

  • PLCは、内部メモリを使用してデータを扱う。
  • 内部メモリには、ワードデバイスとビットデバイスの2種類があり、それぞれ数値データとON/OFF状態を表現する。
  • ワードデバイスは16ビットで、ワードレジスタは連続した16個のビットデータを使用して数値データを表す。
  • PLCにおいて、数値を表現するためには16ビットのワードデータ、または32ビットのダブルワードデータを使用する。ただし、表現可能な数値の範囲や負の値を表現できるかどうかは、データ形式によって異なる。
  • 最上位ビットとは、データの二進数表現において、最も桁の大きなビットのことを指す。最上位ビットをMSB(most significant bit)と呼ぶことがある。