PLC のデータ型

PLC のデータには「ビット」と「ワード」があります。

もう少し正確な書き方をすると、PLC の内部メモリには「ビットアドレス」と「ワードアドレス」という2種類のアドレスがあります。

ワードアドレス

PLC の世界で「1ワード」といえば 16bit のことです。
ワードアドレスのメモリは、コンピューターのプログラムで言うと short 相当です。

ビット処理の多い PLC の世界では、「1ワード」のサイズが変わるのは破壊的な変化となります。そのため、CPU の性能が向上して 32bit 演算が普通に使える今になっても、1ワード 16bit の文化が引き継がれています。

ビットアドレス

PLC は元々、ボタンやランプなどの I/O 操作を、電気回路から論理回路に置き換える目的で作られています。そのため PLC には「ビットアドレス」という概念があります。
ビットアドレスのメモリは、コンピューターのプログラムで言うと bool 相当です。

ビットアドレスの表現方法は製品によって様々です。「0, 1, 2...」というように、ビット毎のアドレスが用意されている場合もあれば、「0.00, 0.01, 0.02...」というように、ワードアドレスにの後ろにビット番号を付け加える場合もあります。

内部の演算に使えるデータ型

PLC のアドレスは「ビットアドレス」と「ワードアドレス」しかありませんが、データの扱いはもう少し柔軟です。演算命令を使い分けることによって、例えば三菱電機の MELSEC-Q シリーズの場合は、メモリの内容を以下のデータ型とみなして演算処理をすることができます。

  • 16bit 整数
  • 32bit 整数
  • BCD 4桁
  • BCD 8桁
  • 32bit 浮動小数
  • 64bit 浮動小数

「BCD (Binary Coded Decimal)」は PLC の特徴的なデータ型だと思います。

16進数表記 整数 BCD ビットの状態
0x0101 257 101 0000 0001 0000 0001
0x0065 101 65 0000 0000 0110 0101

BCD は、10進数の桁の位置とビットの位置関係を固定にできるのが利点です。16進数表記の値をそのまま10進数の値として扱うことで、10進数の 1桁 は常に 4bit になります。

データを表示する

PLC から読み出したデータは 16bit 単位のバイナリデータです。これを表示するため、表示側は PLC の内部処理に合わせて処理する必要があります。

ビットとワードの変換、エンディアンの変換、BCD変換、文字列変換など…PLC のメーカーや機種によって必要な処理が異なるので面倒ではありますが、技術的に難しいことはありません。記事も長くなってきたので、具体的な処理方法については割愛します。

次回は同じく表示側ですが、JavaScript ではなく、表示に使うアプリについて書いてみたいと思います。

この記事の投稿者

崎 洋佑
崎 洋佑プログラマーもどき
さきラボの代表取締役。自称プログラマーもどき。
開発でよく使う言語は日本語。
IT技術よりも人が好きな、天然物のエンジニアです。