シーケンス制御講座「インデックス修飾」
基礎からはじめるシーケンス制御講座
上級:インデックス修飾
インデックス修飾について簡単に説明します。
マニュアルには「インデックス修飾は、インデックスレジスタを使用した間接設定です」と記載されています。
難しく書いていますが、実際に使ってみれば簡単に使用できます。データを扱うことが多い場合に使用するといいでしょう。
データレジスタの値を変更することは簡単です。ではデータレジスタのデバイス番号(アドレス)を変更することは可能でしょうか? 例えばプログラム上では「D0」と指定していますが、この「D0」を「D3」や「D100」のように色々なアドレスに変更することができるのです。
これを可能にするのがインデックス修飾で、これに使うものがインデックスレジスタとなります。
データレジスタは「D」ですが、インデックスレジスタは「Z」を使用します。
値はデータレジスタのように使用でき、MOVで書込みができます。 使い方も簡単で、まず[MOVP K3 Z1]として「Z1」のインデックスレジスタに3を書き込みます。
そして「D0Z1」の用に対象のデータレジスタの後ろに続けてインデックスレジスタを書けば、「D0Z1」=「D3」のことになります。
[MOVP K1 D0Z1]と書き、「Z1」の値をあらかじめ設定して、書き込めば条件によっていろいろなアドレスに変更すれば、書込み先のデータレジスタのアドレスを変更できます。
またデータレジスタだけでなく、内部リレーに対しても使用可能です。「M0Z1」等のように書けばいいのです。「Z1」の値が100なら「M100」を指定したことと同じになります。
「M1Z0」=「M1」のアドレス部分、つまり1+「Z0」の値となります。「Z0」の値が10であれば「M11」となります。「Z」も0〜始まってCPUによって上限がありますが、複数あります。機種によっては「V」も使用できます。
これだけの説明では実際必要ないように見えます。単純なプログラムではまず使うことはありません。
しかしデータ処理などを行う場合は使用しないと、とんでもなく長いプログラムになってしまいます。簡単な使用例を載せておきます。
上の回路図はネジ締め機を操作する回路の一部です。
制御するネジ締め機は、シーケンサーからスタート信号を入れると10箇所ネジを順番に締めていくとします。 現在何番目のネジを締めているかという情報は「D0」に入ってくるとします。
BCDで変換するなどして、とにかく「D0」に番号が入ります。そしてネジ締め機が動作している間は「X10」が入ります。各ポイントのネジを締め終わったら、ネジ締めが正常に完了した場合「X11」に信号が、ネジ締め不良となった場合「X12」に信号が0.5秒程度入ってくるとします。
「D0」と「X11」と「X12」の情報で、現在何番目のネジを締めて、そのネジが正常に締め付けられたがどうかが分かります。これをデータレジスタに保存してみましょう。
まず、現在のネジ締めポイントは常に「Z0」に書き込みます。そしてネジ締めOKのときは1を、NGのときは2を書き込みます。上記の回路のようにしてください。
すると1番目のネジ締め情報は「D11」にはいり、2番目のネジ締め情報は「D12」にはいります。インデックスレジスタをつけているため、順番に振り分けてくれます。
これがインデックスレジスタの簡単な使用方法です。次の項目では、もう少し詳細に説明してみます。
参考書
秀和システム
売り上げランキング: 70,884
秀和システム
売り上げランキング: 31,176