シーケンス制御講座

データレジスタ

PLCで数値を扱えるデータレジスタ、データメモリについて、実際にモニタしながら詳しく解説します。データレジスタについてさらに深く学ぶことができます。

作成日:2019年05月10日
更新日:2022年12月28日


データレジスタとは

前項の「数値を使ってみる」では実際にデータレジスタを使い、値を入力したり計算できることを確認しました。ではそもそもデータレジスタとはどのようなものなのでしょうか?データレジスタとは簡単に言うと数値を保存できる箱です。最初のうちは「そのようなもの」として使っても大丈夫です。ただし数値を扱えるといっても限界があります。
1つのデータレジスタに対して、値が「-32768~32767」の範囲でしか使えません。詳しくはデータレジスタでも説明していますので参考にしてください。もちろんこの項でもちゃんと説明します。

データレジスタは16個のビットで構成されています。もっと簡単に説明すると16個のコイルで構成されています。つまり内部リレー「M」を16個使えば1つのデータレジスタを作ることも可能です。(通常はそんなめんどくさいことはしませんが)動きを見ながら確認してみましょう。モニタモードにして「オンライン」→「デバイス/バッファメモリー一括モニタ」をクリックします。前項で使ったデバイス内容を確認できるウィンドウが表示されます。

とりあえずデバイス名を「D0」にしてエンターキーを押します。すると「D0」の内容が表示されると思います。

右端に数値(値)が表示されていますが、数値の左側に16個”0”が並んでいます。これがビットです。(コイルみたいなものです)「D0」というデータレジスタの中には16個のビットがあり、ON・OFFの組合せで数値を表示しています。ビットはONかOFFしかできません。よく「コンピューターは0と1の集まり」という言葉を聞くと思いますが、このように深いところまでいくと最終的に0か1の組合せになります。皆様が今見ているこの講座の文字も最終的には0と1の組合せです。
話を戻します。このビットの組合せで表示する方法を2進数と呼びます。2進数は”2”で桁上がりする数値です。

0000=10進数で0
0001=10進数で1
0010=10進数で2

こんな感じで2進数では”2”を表現できないので(ONかOFFしかない。ONが”1”でOFFが”0”。)2になった瞬間桁上がりして”0010”になります。

何かややこしい説明をしていますが、実際にプログラムを作成するときはこのようなことを考える必要はありません。普通に10進数で扱えるので考える必要はありません。ただし基本として4桁の2進数を10進数(普通の数値)に変換するくらいはできるようになっておいてください。

ビットを右端から”1”、”2”、”4”、”8”と仮定し、ONしているビットの数値を足し算するだけです。信号の送受信の話で「1248で送ります」という言い方を使う方もいます。これは4個のビットの組合せで信号を送るという意味です。「バイナリで送ります」という言い方もあります。

ビットが4つで0~15の16パターンの数値が表現できます。ビットが4個ということで4ビットと呼びます。
データレジスタは16ビットで構成されているので普通に使うと16ビットとなります。そのためデータレジスタ1個で「-32768~32767」までの数値が扱えます。

ダブルワード

データレジスタ1個では扱える範囲に限りがあるため自由度が少ないと思います。そのときはデータレジスタを2個同時に使います。すると32個のビットが使えるので-2147483648~2147483647の範囲が使用できます。

使い方も簡単で、[MOV K100000 D0]では数値がオーバーするので
[DMOV K100000 D0]と命令の最初に「D」をつけるだけです。32ビットで使うということはデータレジスタを2個使います。これを「ダブルワード」と呼びます。そのため命令の先頭に頭文字の「D」をつければデータレジスタを連番で2個使います。「D0」と「D1」と使うことになります。ほとんどの命令はダブルワード指定ができます。

入力範囲を超えた数値は入力できません。

このように命令の先頭に”D”をつけるだけで32ビット指定にできます。

シングルワードからダブルワードへ、ダブルワードからシングルワードへの変換命令もありますので、計算の途中で切替えることも可能です。ひとつ注意点として、シングルワードとダブルワードでは符号の指定ビットに位置が変わるということです。データレジスタを勉強している今は特に気にすることはありませんが、このようなことがあると頭の片隅に入れておいてください。シングルワードでの「D0」の符号の位置は「D0」の15ビット(一番左)です。ダブルワードでの「D0」の符号の位置は「D1」の15ビット(一番左)です。


あたりまえのことですが、使っているうちに「カウントの数値がおかしい?」などの問題が発生した場合、シングルワードやダブルワードの辺りを確認すると解決するかもしれません。よくあるのはGOTの表示器のカウンターの設定をダブルワード(符号付32ビット)などに設定して、PLC側はシングルワードとして計算。その逆もあります。この場合一定の数値を超えるとカウントの値ががおかしくなります。

16ビットと32ビット(シングルワードとダブルワード)はデータレジスタの使い方だけのことです。例えば「D0」に32ビットで値を転送したらそのときは32ビットとして扱われますが、他の命令で32ビット指定をしないと16ビットで扱われます。つまり32ビットで扱うときは、「そのデータレジスタは32ビットで使います」と決めておき、そのデータレジスタに対しては32ビット指定で命令をするようにしておくといいと思います。データレジスタに分かりやすいコメントをつけるという方法もあります。
32ビット指定の命令をしたからといって、データレジスタが勝手に結合され32ビット仕様になるわけではありません。32ビットで使うときは命令を行うたびに、毎回32ビット指定をしないといけません。この辺りの説明は言葉だけで行うのは難しいので、後の講座で実際に使いながら説明していきます。



データレジスタを使う

さらに詳しく、より実践的に学習したい方は「実践!ラダー学習キット」という有料講座も準備しています。


図解入門 よくわかる最新 シーケンス制御と回路図の基本はKindle版(電子書籍)です。単行本ご希望の方は、フォーマットで単行本を選択してください。または、トップページよりご購入ください。

Copyright (C) 2010 シーケンス制御講座, All rights reserved.