5

命令シーケンスの処理中に入力X1を変更できますか?

例えば

LD X1
AND X2
OUT Y1

LD X1 // Can X1 loaded here differ from the previous one?
AND X3
OUT Y1

ありがとう

4

4 に答える 4

7

すべてではありませんが、多くのPLCがIOイメージで動作します。入力が読み取られ、レジスタに格納されます。処理中は、IOイメージを操作しています。画像はサイクルの最後に更新されます。このように、入力は処理中に変更できませんが、サイクル間でのみ変更できます。

于 2010-06-21T11:54:22.843 に答える
3

ジムCの答えに加えて、多くの(ほとんど?)PLCでは、連絡先/リレー/入力などのステータスを直接読み取る特別な「即時」タイプの命令を使用できることにも注意してください(対照的に) CPUスキャンがその特定のラングに達したとき)IOイメージからの読み取りに)。これは通常、IOイメージを更新しません。つまり、CPUスキャンの残りの部分でのその連絡先の他のすべての通常の読み取りは、それらも「即時」タイプでない限り、レジスタ内の古い値を読み取ります。

例 :

//Start of Program
// Here the CPU scan starts with X1 closed, X2 closed in the IO image    

LD X1  //(X1 = closed)
AND X2 //(X2 = closed)
OUT Y1  //(Y1 will be set high/closed)

//  **suddenly X1 opens**
//(using LDI here to denote "immediate")

LDI X1 //(open - reading true status)
AND X2 //(closed)
OUT Y1  //(Y1 will now open)

LD X1 //(reading from image = closed, still)
AND X2 //(closed)
OUT Y1 //(Y1 will close again)

END of Program

次に、次のCPUスキャンで、イメージが新しい値(X1 = open)で更新され、3つのラングすべてがY1openを返します。

もちろん、PLCは画像から読み取るのではなく、接点の現在の値を探すために余分な時間を費やす必要があるため、即時の指示には通常、時間のペナルティが伴います。ただし、プログラムの動作方法によっては便利な場合があります。ただし、これらの命令は明示的に使用する必要があり、ジムが指摘したように、通常の操作はIOイメージから読み取ることです。

ps:ここでは「LDI」を使用して即時命令を示していますが、すべてのPLCは異なる構文を使用します。たとえば、Koyosは、LDおよびSTRI(即時ストア)の代わりにSTR(ストア)を使用します。

于 2010-06-21T21:17:24.370 に答える
1

一般的な手法は、IOレジスタのコピーを内部メモリアドレスに作成して、プログラマが命令間でIOが変更されないことを保証できるようにすることです。スキャンの開始時に入力をコピーし、スキャンの終了時に出力にコピーします。

于 2010-09-03T05:28:34.563 に答える
0

はい、もちろん可能です-おそらくこの間隔での変化は非常に低いので、これら2つの値が決して異ならないことを想定しているバグがある場合は、しばらく表示されない可能性があります。

于 2010-06-21T11:38:43.910 に答える