シーケンス制御講座

データレジスタのビットを使う

シーケンス制御講座 中級編 データレジスタのビットを使う

データレジスタレジスタは16個のビットによって構成されています。このそれぞれのビットを個別にON/OFFさせることや、接点として使うことができます。普段数値を保存する場所として使っている方がほとんどだと思いますが、今回解説するような使い方もできます。(この方法は三菱のQCPUを対象に解説しています。)

作成日:2023年04月01日
更新日:2023年04月01日


データレジスタの構成

データレジスタの中身は16個のビットで構成されています。このビットのON/OFFの組み合わせで数値を表現しています。

こんな感じで16個のビットがデータレジスタの中にあります。このデータレジスタ内のビットの3(右から4番目)と4(右から5番目)がオンすると、このビットの塊は”24”という数値を表します。

つまりデータレジスタ「D0」の内部のビットが上記のようにオンしていると、「D0」は”24”ということになります。これがデータレジスタの構造について簡単な解説です。

ビットでの指定方法

データレジスタの構造を簡単に解説しましたが、普段データレジスタを使う時は、MOV命令などで外部からデータレジスタに対して何かの数値データを転送していと思います。この転送される値に対してデータレジスタの内部ビットはオンして、数値として扱えます。

今回は逆にこのデータレジスタ内のビットを直接オン・オフして見ようと思います。直接オン・オフするにはデータレジスタ内部のビットを指定する必要があります。例えばデータレジスタ「D0」内の一番右側の小さいビット(0ビット目)を指定する場合、次のように書きます。

D0.0

このように指定したデータレジスタを書いてその後ろに続けて.(ドット)をかいて、指定したいビット番号を書きます。ビット番号は0~Fまでの16進数で指定します。

ビットの3と4を直接オンする場合は次のように書きます。

ただし上記のようにコイルで記述するときは気を付けてください。「X0」がオンの時は「D0」の3と4ビット目はオンしますが、「X0」がオフの時はあたりまえですが「D0」の3と4ビット目はオフします。これは「D0」に対してMOV命令などで数値を転送している場合、「X0」がオンの場合は「D0」の値に影響がでますが、「X0」がオフの場合も影響がでます。「X0」がオフだからといって「D0」の値に影響がないわけではありません。例えば「X0」がオフの状態で「D0」に対して”8”という値をMOV命令で転送しても、「D0」の値は”8”にはなりません。これは転送した瞬間は”8”になるのですが、「X0」の接点がオフなので「D0」の3ビット目がオフされてしまうので、”8”という値が表現できないのです。

このようにコイルとして書いてしまうと、オンでもオフでも影響が出てしまいます。MOV命令などと一緒に使うのは難しいと思います。「X0」がオンの時だけ「D0」内のビットを操作したい、オフの時は何もしたくない場合はSET命令を使います。

このようにSET命令を使えば「X0」がオンの時だけ「D0」内のビットを操作できます。

次に接点としての使い方ですが、先ほどのコイルと同じように指定できます。

これでデータレジスタのビットを接点として使うことができます。

実際の使い方

使い方としてはいろいろあります。これはプログラムを設計する段階で変わってきます。なのでここではちょっと便利な使い方を解説します。

外部機器などに数値データを出力することがあると思います。この時相手ききが5ビットで受け付ける場合があります。この時通常のMOV命令などで直接出力すると8ビット分出力されてしまうので、出力3点が無駄になります。そのため一旦内部リレーなどに出力して、内部リレーで出力をオンさせる方法がよく使われます。ですがデータレジスタのビットを接点として使えば、内部リレーに出力する必要はなくなります。

このように直接出力を書けば5ビット分出力できます。ただしこれは5ビットや3ビットなどの中途半端なビット数の場合です。4ビットや8ビットであればMOV命令で指定してほうがシンプルです。



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

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