1

私はオムロン CP1L PLC を使用しており、CX プログラマーでプログラミングしています。ドキュメントから、 「Differential Instructions」が正確に何であるかを理解するのに苦労しています:

微分命令では、実行条件が成立した場合にのみ命令の実行結果が条件フラグに反映され、次のサイクルでは (微分命令の実行結果ではなく) 前のラングの結果が条件フラグに反映されます。したがって、実行結果が使用される微分命令の場合、次のサイクルで条件フラグが何をするかを認識しておく必要があります。

私の理解では、命令は条件が満たされたときに常に実行されます。もちろん、前のラングの命令からオンまたはオフの状態を取得する条件フラグが存在する場合、次のラングの命令が実行されます。そのため、ドキュメントの説明のポイントを完全に把握していません。そして、2つの間に違いはありません:

(A) 微分を使用しない場合

差動なし

(B) 微分の使用
ここに画像の説明を入力

4

1 に答える 1

2

マニュアルで警告されているのは、正しくない場合、命令 A は C が真 (微分命令) になった後に 1 回だけ実行されますが、命令 B の実行は、A で実行された命令の条件フラグの状態に依存するということです。 . A が 1 回だけ実行される場合、条件フラグは現在の PLC スキャンに対してのみ有効です。C が満たされた後続の PLC スキャンは、微分命令 A を実行しませんが、微分命令 B を実行する場合があります。前のラングが比較演算を実行し、グローバル条件フラグを TRUE に設定した場合。

グローバル変数の危険性を理解していれば、これは基本的に同じことです。PLC ロジックの一部のフラグは、特定の命令で使用されるグローバル フラグです。これらは、命令が実行された直後にのみ有効であり、異なるデータに対して実行されるたびに変更されます。誤ったケースでは、保護されていないラングが、実行が保証されていない操作のグローバル条件フラグにぶら下がっています。

正しいケースでは、命令の代わりに実行条件が区別されます。C が真になると [DIFU D] になります。これにより、次の PLC スキャンでのみ D が true になります。C が FALSE から TRUE になるたびに、D は 1 つの PLC スキャンでのみ true になります。これにより、命令 A (条件フラグ値を生成する) が 1 回だけ実行されることが保証され、さらに、命令 B を公開する条件フラグに遭遇するたびに実行されることが保証されます。

編集 : 問題のある実行フロー - 比較操作を実行したばかりでない限り、CF の状態は RANDOM (より正確には、制御されていません!) です。プログラム全体の他のすべての比較操作は、比較命令がプログラム内のどこかで実行されるたびに、その値を変更します!

STATE          C          Instruction A       CF(=)    InstructionB

Scan #1  :    OFF             N/E            RANDOM       N/E
Scan #2  :    ON         EXECUTES > TRUE      TRUE       EXECUTES  //desired
Scan #3  :    ON              N/E            RANDOM(T)    N/E
Scan #4  :    ON              N/E            RANDOM(F)    N/E
Scan #5  :    ON              N/E            RANDOM(T)  *EXECUTES*!! //UNDESIRED

ここで、C がオンのままである限り、命令 B は、プログラムの他の領域での他の比較操作により、CF が FALSE から TRUE に切り替わるたびに実行されます。これは望ましくありません。InstructionA が実行され、CF= が TRUE として返された場合にのみ、InstructionB を実行する必要があります。

于 2012-02-21T10:49:07.173 に答える