三菱PLCのデータレジスタとは?MOV命令を使って数字を格納する方法 | シーケンス制御の部屋

<通知>本ブログ記事には広告が含まれる場合があります

三菱PLCのデータレジスタとは?MOV命令を使って数字を格納する方法

この記事は約6分で読めます。

この記事では

・三菱PLCのデータレジスタがそもそもなんなのか知りたい方
三菱PLCでデータレジスタに数字を格納する方法を知りたい方
・設備の回路内でデータレジスタが使われているが意味がよく分からない方

におすすめです!

Sponsored links

三菱PLCのデータレジスタとは?

ここでは三菱PLCのデータレジスタが一体なんなのかを紹介していきたいと思います。

データレジスタのイメージを掴んでもらうため、小難しい命令は抜きにして、

まずは図を見ながら「あー、なんとなく分かったかも」くらいのレベルまで到達しましょう。

三菱PLCのデータレジスタは数字を入れておく箱のようなもの

三菱PLCでのデータレジスタはデータを入れておく箱のようなものです。

下図はデータレジスタに10という数字を入れる時のイメージ図です。

1つのデータレジスタに数字を格納するイメージ図

三菱PLC内ではそのままの数字を使って制御や演算することは少なく、このデータレジスタに数字を格納してから、例えば足し算や掛け算をしたり、時間や個数の確認をすることが多いです。

鈴さん
鈴さん

データレジスタに数字を入れた方が色々と便利なんだと思っておけばいいんだね!

データの大きさによって箱の大きさを変える必要がある

データレジスタは1つの箱に格納できる数字の大きさが決まっています。

具体的には「‐32768~+32767」の範囲です。

これがなんの数字かというと16ビット(1ワード)で扱うことができる数字の範囲です。

上限よりも大きい数字(+32767より大きい場合)や、下限よりも小さい数字(‐32767より小さい場合)は箱をもう一つ追加する必要が出てきます。

下図では「70000」という数字をデータレジスタに格納している様子を表した図です。

2つのデータレジスタに数字を格納するイメージ図

データレジスタを二つ使うことで、入れられる数字の範囲は-2,147,483,648~+2,147,483,647まで大きく広がります。

鈴さん
鈴さん

2つにしたら急に範囲がめちゃくちゃ広がったね!

Sponsored links

三菱PLCでデータレジスタにMOV命令で数字を格納する方法

三菱PLCでMOV命令というものを使ってデータレジスタに数字を格納してみます。

データレジスタに数字を格納するには3通りの方法がありますので、一つづつ紹介していきますね。

・小さな数字(※)を1つデータレジスタに格納する方法
・大きな数字(※)を2つデータレジスタに格納する方法
・データレジスタAから別のデータレジスタBに格納する方法

※数字:定数K→任意の10進数、定数H→任意の16進数

小さな数字をデータレジスタに格納する方法

三菱PLCでデータレジスタに数字を格納するためにはMOV命令を使用します。

さっきの図でいうところの10を箱に入れるための矢印の部分がちょうどMOV命令となります。

1つのデータレジスタにMOV命令を使って数字を格納するイメージ図

ラダー回路でこれを表現すると下記のようになります。

三菱PLCでデータレジスタに数字を格納する回路例

X1は入力信号です。たとえば押しボタンスイッチでもいいですし、センサーの入力信号でも構いません。

右の方にあるのはMOV命令(正確にはデータ転送命令)というものです。

MOV:転送命令 を表します。

K10:定数(10進数)の10 を表します。

D100:データレジスタの100番 を表します。

シミュレーションモード(またはモニターモード)を起動するとD100の右下に青色の文字で0が表示されます。

三菱PLCでMOV命令によってデータレジスタに数字が転送される前の図(モニターあり)

この0がデータレジスタD100に格納されている数字です。

ここでX1をONにすると、

三菱PLCでデータレジスタに数字が転送されたのが分かる図(モニターあり)

MOV命令によって整数の10(K10)がD100に格納され、D100の右下の数字が0から10になりました。

X0をOFFにしてもD100に格納された数字は10のままです。

これが最も基本的なデータレジスタに数字を格納する方法です。

大きな数字をデータレジスタに格納する方法

三菱PLCでデータレジスタに大きな数字を格納するためにはDMOV命令を使用します。

さっきの図でいうところの70000を箱に入れるための矢印の部分がちょうどDMOV命令となります。

2つのデータレジスタにDMOV命令を使って数字を格納するイメージ図

ラダー回路でこれを表現すると下記のようになります。

X1は入力信号です。押しボタンスイッチでもいいですし、センサーの入力信号でも構いません。

右の方にあるのはDMOV命令(正確にはデータ転送命令)というものです。

DMOV:転送命令 を表します。

K70000:定数(10進数)の70000 を表します。

D100:データレジスタの100番 を表します。

シミュレーションモード(またはモニターモード)を起動するとD100の右下に青色の文字で0が表示されます。

三菱PLCでDMOV命令によってデータレジスタに数字が転送される前の図(モニターあり)

この0がデータレジスタD100に格納されている数字です。

ここでX1をONにすると、

三菱PLCでDMOV命令によってデータレジスタに数字が転送されたのが分かる図(モニターあり)

MOV命令によって整数の10(K10)がD100に格納され、D100の右下の数字が0から70000になりました。

X0をOFFにしてもD100に格納された数字は10のままです。

またデータレジスタD1を使った場合はD2が自動で二つ目のデータレジスタとして使用されます。
(D100だったらD101、D1234だったらD1235が使われます)

回路上ではD2という文字は見えないですが、このDMOV命令によって使用される領域となるので、他の命令等でD2に書き込みをしないよう、注意しましょう。

これが大きな数字をデータレジスタに数字を格納する方法です。

データレジスタレジスタAから他のデータレジスタBに数字を書き込む方法

三菱PLCでデータレジスタから別のデータレジスタに数字を格納するためにはMOVもしくはDMOV命令を使用します。

下図は青色のD100に格納されている10という数字を緑色のD200に転送する時のイメージ図です

データレジスタにAから別のデータレジスタBに数字を書き込むには下記のように回路を構成します。

データレジスタAから別のデータレジスタBにMOV命令を使って数字を転送する前の図

X2の行の部分がデータレジスタA(D100)からデータレジスタB(D200)へデータを書き込む命令になります。

現状は2行目のD100の右下に10と数字が表示されています。D200の右下の数字は0になっていますね?

この状態からX2をONにすると

データレジスタAから別のデータレジスタBにMOV命令を使って数字を転送した後の図

D100に入っていた数字10がD200にも格納されたことが分かるかと思います。

X2をOFFしてもD200の中の数字はそのままになります。

D100の数字をD200にコピーしているイメージのほうが近いかもしれません。

MOV命令を使うときに注意すること

結論からいうとMOV命令は使いずらいのでMOVP命令を使うようにした方が良いです。

MOVもしくはDMOVの後にそのまま”P”を入れると使えます。

理由として、MOV命令は正しくは「連続実行型転送命令」と言って「スキャンの度に命令を実行する」タイプの命令です。

一つのデータレジスタに対して複数個のMOV命令を使用すると、どのタイミングでどちらの命令が動いてその数字が書き込まれたか非常に分かりにくいです。

一方、MOVP命令は「1スキャン実行型転送命令」と言って「1スキャンだけ命令を実行して後は何もしない」命令なんですね。

ここの違いを分かっていないとデバックの際にハマることがあるので注意しましょう。

もちろん、MOV命令が便利なこともありますから、使い分けできるのが一番いいですが。

三菱PLCでデータレジスタに数字を格納するMOV命令の使用方法まとめ

この記事では

方法を紹介しました。

鈴さん
鈴さん

今回も最後までお読みいただきありがとうございました!

コメント

タイトルとURLをコピーしました