2

ラダープログラミングで「 @ 」記号はどういう意味ですか?ドキュメントでは、@がバイナリモードで間接DMアドレスを指定していると説明しています...メモリ領域をオフセットします:それは実際にはどういう意味ですか?

ドキュメントから次の画像を検討してください。

ここに画像の説明を入力してください

アドレスの内容(16ビットまたは10進数の32767)をワードアドレスにするにはどうすればよいですか?たとえば、住所CIO 0のコンテンツが000000001000000の場合、 @記号を追加すると、 CIO 0は000000001000000に変更されますか?上記の指示で正確に何が動いていますか?

4

2 に答える 2

3

これはDM(データメモリ)でのみ機能します。オムロンPLCには多くのメモリ領域があります。CIOは通常、入力/出力ビットにのみ使用されます。W(作業)は作業メモリビットを格納するために使用され(RAMを考えてください)、H(ホールド)は電力が失われた場合に値を保持する必要があるビットを格納するために使用されます(ハードドライブ、ビットデータを考えてください)。DMとEMは、主にWORDデータを保持するために使用され、電源が失われた場合にも保存されます。もちろん、これに関する厳格なルールはありません。多くの状況では、たとえば、必要に応じて、Wビットの代わりにCIOビットを使用できますが、それぞれに、それらを差別化し、より多くのものにする特定の固有の機能があります。特定の目的に適しています。

この場合、@記号はポインタのように機能します。命令[MOV#1 D300]を使用した場合、16進データ[x0001]をメモリ位置D300に移動します。明確にするために、#1(2番目の引数)は値x0001の16進(シンボル#)定数です。上記の例のように、D300に値[x0100](= 10進数で256)が含まれていて、命令[MOV#1 @ D300]を使用した場合、値[x0001]をD300に移動しませんが、 D300に含まれるアドレス(この場合はD256)。

@記号は、2進数または16進数形式のポインターに使用されることに注意してください。D300 = [x0100]の場合、@ D300へのMOV命令は、データをD256(hex 0100)に移動します。*修飾子を使用して[MOV#1 * D300]を実行することもできます。これにより、D300に格納されている0100がBCD値として扱われます。つまり、D256を指す代わりに、D100を指します。

ポインタを使用すると、たとえば、さまざまな条件で一連のさまざまな場所に値を送信する場合などに、MOV命令を変更する必要がなくなります。メモリの移動を別のアドレスにリダイレクトする場合は、D300に保存されているアドレス値を更新するだけです。

@記号は、ニーモニックで他のことを意味する場合があることに注意してください。たとえば、@ LDは、差動UP接点を意味します。

于 2012-02-17T12:21:30.687 に答える
1

オムロンPLCの機能の@記号は、リーディングエッジでのみ動作することを意味します。たとえば、古いPLCでは@INC、新しいPLCでは@ ++は、リーディングエッジでチャネルを1つインクリメントすることを意味します。新しいPLCの++関数はバイナリですが、古いPLCのINC関数はBCDです。

于 2012-07-10T08:10:15.890 に答える