Skip to main content

データ フロー順

テキストベースおよびネットワークベースのエディタでは、POU内の実行順序は一意に決定されます。しかし、CFCエディタでは要素を自由に配置できるため、実行順序は最初から一意ではありません。このため、CODESYS実行順序はデータフローに基づいて決定され、複数のネットワークが存在する場合は、要素の位相的な位置に基づいて決定されます。最上位の要素とネットワークは、上から下、左から右へとソートされます。これにより、実行順序は一意となり、POUが時間とサイクルに基づいて最適化された状態で処理されることが保証されます。

現在の実行順序をチャートに一時的に表示できます。フィードバック付きのネットワークをプログラミングする場合、フィードバックループの開始点となる要素を定義できます。

CFCオブジェクトの処理順序を明示的に編集することもできます。これを行うには、自動データフローモード CFCオブジェクトのプロパティ明示的な実行順序モードこのモードでは、メニュー コマンドを使用して実行順序を編集することができます。

前にCODESYS V3.5 SP15では、各POUの実行順序を明示的に定義する必要がありました。モード切り替え機能はありませんでした。

データフロー

データフローは、どのデータが書き込まれるか、または読み込まれるか、いつ、どのように実行されるか、そしてどのプログラミングオブジェクトで実行されるかを時系列で記述します。POUは任意の数のデータフローを処理でき、それらは互いに独立して実行することもできます。

実行順序の表示

デフォルトでは、CFCオブジェクトの実行順序は自動的に決定されます。自動データフローモードプロパティが選択されている場合、自動的に決定された実行順序をCFCエディターで一時的に表示できます。

  1. 新しいプロジェクトを作成するには、標準プロジェクトテンプレートと名前を指定するMinimal例えば。

  2. ファンクションブロックでアプリケーションを拡張するFB_DOItの中でST次のような入力と出力を持つ実装言語。

    FUNCTION_BLOCK FB_DoIt
    VAR_INPUT
        iAlfa : INT;
        iBravo: INT;
        sCharlie : STRING := 'Charlie';
        xItem : BOOL;
    END_VAR
    VAR_OUTPUT
        iResult : INT;
        sResult : STRING;
        xResult : BOOL;
    END_VAR
    VAR
    END_VAR
    iResult := iAlfa + iBravo;
    IF xItem = TRUE THEN
        xResult := TRUE;
    END_IF
  3. 関数ブロックを作成するExecuteCFCの中でCFC実装言語は以下のとおりです。

    PROGRAM ExecuteCFC
    VAR
        fb_DoIt_0: FB_DoIt;
        fb_DoIt_1: FB_DoIt;
        iFinal_1: INT;
        iFinal_0: INT;
        xFinal: BOOL;
    END_VAR

    CFCで最近作成されたプログラミングオブジェクトでは、自動データフローモードが選択されています。プログラミングオブジェクトの実行順序は内部的に最適に定義されています。

    cfc_img_fb_executecfc.png
  4. クリックCFC → 実行順序 → 実行順序の表示

    オブジェクトの実行順序が表示されます。ボックスと入力にはそれに応じた番号が付けられ、時系列の処理順序を反映します。CFCエディタで再度クリックすると、番号は非表示になります。

    cfc_img_displaying_execution_order.png

フィードバックネットワークにおける実行順序の決定

  1. フィードバック付きの CFC プログラムを作成します。

    POU PrgPositiveFeedbackカウントします。

    PROGRAM PrgPositiveFeedback
    VAR
        iResult: INT;
    END_VAR
    cfc_img_prg_positive_feedback.png
  2. フィードバック内の要素を選択します。

    選択された要素は赤で強調表示されます。

  3. クリックCFC → 実行順序 →フィードバックの始点を設定

    cfc_img_prg_positive_feedback_with_start.png

    実行時には、このPOUが最初に処理されます。フィードバックの開始POUは定義され、cfc_icon_start_of_feedback.pngシンボル。実行順序が並べ替えられ、選択された要素には番号0が付けられます。(これはフィードバックの最小番号です。)

  4. 開始 POU を再度選択します。

  5. クリックCFC → 実行順序 →フィードバックの始点を設定

    ボックスが開始ボックスとして選択されていません。

    cfc_img_prg_positive_feedback.png

    実行順序は内部的に定義されます。

  6. クリックCFC → 実行順序 → 実行順序の表示

    cfc_img_positive_feedback_numbered.png

    データフローによる実行順序が表示されます。

実行順序を明示的に定義する

CFCオブジェクトの自動的に定義された実行順序を明示的に変更するには、明示的な実行順序モードオブジェクトのオプション。

  1. の中でデバイスまたはPOU表示するには、CFCオブジェクトのコンテキストメニューを開いてクリックします。プロパティプロパティダイアログで、 CFC執行命令タブ。

    その実行順序リストボックスには現在選択されているモードが表示されます。

  2. の中で実行順序リストボックス、選択明示的な実行順序モードクリックわかりましたダイアログを確認します。

    「明示的な実行順序モード」が選択されています。ネットワークはCFCエディタで番号付けされ、以下のコマンドが提供されています。 CFC → 執行命令実行順序を編集するためのメニュー。

  3. CFC オブジェクトを開きます。

  4. 番号付き要素を選択してクリックCFC → 実行順序 →先頭に送る

    実行順序が並べ替えられ、選択された要素の番号は 0 になります。

ヒント

データフローに基づいて自動的に定義される実行順序により、POUの実行時間は最適化され、サイクルも最適化されます。開発プロセスにおいては、内部的に管理される実行順序に関する情報は必要ありません。

明示的な実行順序モード実行順序を調整し、結果と影響を評価するのはあなたの責任です。これが、実行順序が常に表示されるもう一つの理由です。