Skip to main content

処理順序

重要

アクションを実装する際は、次の点に注意してください。

アクションは複数のSFCチャートで使用できるため、同じサイクル内でアクションが複数回実行される可能性があります。

例:SFCチャートに2つのIECアクションAとBが含まれており、どちらもSFCでプログラムされ、どちらもIECアクションCを呼び出しています。この場合、Cは2回呼び出されます。

SFCチャートの異なるレベルで同じIECアクションを同時に使用すると、処理時に予期しない結果が生じる可能性があります。このため、CODESYSは対応するエラー メッセージを出力します。このエラー メッセージは、たとえば、旧バージョンの開発システムで作成されたプロジェクトを操作している場合に表示されることがあります。

ヒント

注:暗黙変数を使用して、ステップおよびアクションの処理状態を監視したり、処理を制御したりすることができます。

要素の基本的な動作

  • アクティブなステップ

    アクティブなステップには、現在実行中のアクションが含まれます。オンライン モードでは、CODESYSはアクティブなステップを青色で表示します。

  • 初期ステップ

    SFCのPOUを呼び出した後の最初のサイクルで、初期ステップが自動的にアクティブ化され、ステップ アクションが実行されます。

  • IECアクションは少なくとも2回実行されます。1回目はステップがアクティブ化されたとき、2回目はステップが非アクティブ化されたときです(ただし、次のサイクルになってから)。

  • 代替分岐

    分岐の前のステップがアクティブな場合、代替分岐の最初のトランジションが左から右へ評価されます。トランジションが値TRUEを返すとすぐに、対応する分岐の次のステップがアクティブ化されます。その右側にある分岐のトランジションは評価されなくなります。

  • 並列分岐

    分岐の前のステップがアクティブで、水平の二重線の前のトランジションがTRUEの場合、すべての分岐の最初のステップが同時にアクティブ化されます。その後、分岐は並列に実行されます。分岐に続くステップは、すべての分岐の最後のステップがアクティブで、かつ次のトランジションが値TRUEを返すとすぐにアクティブ化されます。

処理順序

  1. IECアクションのリセット

    修飾子N、R、S、L、D、P、SD、DS、SLを持つアクションの内部制御フラグがリセットされます。これらのフラグはIECアクションを制御します。ただし、アクション内でアクセスされるフラグはリセットされません。

  2. 終了アクションの実行

    次に、各ステップが終了アクションを実行するための条件を満たしているかどうかがチェックされます。チェックの順序はSFCチャートのレイアウトに従い、上から下、左から右へと行われます。

    終了アクションは、ステップが非アクティブ化されたとき、つまり、そのエントリー アクションとステップ アクションが(存在する場合)前のサイクルで実行され、かつ次のステップの条件がTRUEを返したときに実行されます。

  3. エントリー アクションの実行

    次に、各ステップがエントリー アクションを実行するための条件を満たしているかどうかがチェックされます。チェックの順序はSFCチャートのレイアウトに従い、上から下、左から右へと行われます。条件を満たしている場合、すべてのエントリー アクションが実行されます。

    エントリー アクションは、関連するステップがアクティブ化されたときに1回実行されます。その条件は、ステップの前のトランジションが値TRUEを返すことです。

  4. 時間チェック / ステップ アクションの実行

    ステップが許容時間よりも長くアクティブのままになっていないかどうかを検出するためのチェックが行われます。時間チェックは、フロー内のエラーを検出するために使用されます。たとえば、想定されたトランジションが満たされず、そのためにフローがステップ内で停止した場合などです。

  5. IECアクションの実行

    IECアクションはアルファベット順に実行されます。これは、アクションのリストを2回パスすることで行われます。1回目のパスでは、前のサイクルで非アクティブ化されたすべてのステップのIECアクションが実行されます。2回目のパスでは、アクティブなすべてのステップのIECアクションが実行されます。

  6. トランジションのチェック / 次のステップのアクティブ化

    次の条件が満たされると、次のステップがアクティブ化されます。

    • 現在のサイクルでステップがアクティブである。

    • 後続のトランジションが値TRUEを返す。

    • ステップに定義された最小時間が経過している。