Skip to main content

SFCフラグ

SFCフラグは、SFCチャートを制御および診断するための機能を提供する、定義済みの名前を持つ暗黙的に作成される変数です。これらのフラグを使用すると、トランジションを目的に応じてトリガーできます。

例:

  • タイムアウトの検出

  • ステップ チェーンのリセット

  • ティップ モードの有効化

これらの変数にアクセスするには、対応するフラグを宣言して有効にする必要があります。

名前

データ型

説明

SFCInit

BOOL

TRUE:フローを初期ステップにリセットします。他のSFCフラグもリセットされます(初期化)。変数がTRUEである限り、初期ステップはセットされた(アクティブな)ままですが、実行はされません。SFCInitをFALSEに戻した後で初めて、POUは通常どおり処理されます。

SFCReset

BOOL

SFCInitと同様に動作します

これに対し、初期化後も初期ステップは引き続き実行されます。たとえば、初期ステップ内でSFCResetフラグをすぐにFALSEに戻すことができます。

SFCError

BOOL

SFCチャートでタイムアウトが発生するとTRUEになります。

最初のタイムアウトの後にプログラム内で別のタイムアウトが発生した場合、そのタイムアウトは、変数SFCErrorが事前にリセットされている場合にのみ検出されます。それ以外の場合、フラグはセットされたままになり、追加のタイムアウトは登録されません。

タイミングを監視するための他のフラグ変数(SFCErrorStep、SFCErrorPOU、SFCQuitError)が機能するには、SFCErrorの宣言が必要です。

SFCEnableLimit

BOOL

SFCErrorによるステップのタイムアウト制御を目的に応じて有効化(TRUE)および無効化(FALSE)するために使用します

この変数を宣言してアクティブ化した場合(SFC設定)、SFCErrorが機能するには、この変数をTRUEに設定する必要もあります。そうしないと、タイムアウトはすべて無視されます。これは、たとえば試運転時や手動運転時に役立ちます。この変数を宣言しない場合、SFCErrorは自動的に機能します。

SFCErrorの宣言が前提条件です。

SFCErrorStep

STRING

SFCErrorによって登録されたタイムアウトの原因となったステップの名前を格納します

名前は、登録されたステップ エラーがSFCQuitError(FALSE -> TRUE)によってリセットされるまで保持されます。

SFCErrorの宣言が前提条件です。

SFCErrorPOU

STRING

タイムアウトが発生した場合、SFCErrorによって登録されたタイムアウトが発生したPOUの名前を格納します。名前は、タイムアウトがSFCQuitErrorによってリセットされるまで格納されます。

SFCErrorの宣言が前提条件です。

SFCQuitError

BOOL

このブール変数がTRUEである限り、SFCチャートの処理は停止されます。その際、変数SFCErrorに格納されているタイムアウトはリセットされます。変数をFALSEに戻すと、アクティブなステップのそれまでの時間はすべてリセットされます。

SFCErrorの宣言が前提条件です。

SFCPause

BOOL

この変数がTRUEである限り、SFCチャートの処理は停止されます。

SFCTrans

BOOL

トランジションが切り替わるとTRUEになります。

SFCCurrentStep

STRING

時間チェックに関係なく、現在アクティブなステップの名前を表示します

並列分岐の場合は、常に一番右にある分岐のステップの名前が格納されます。

SFCTip

SFCTipMode

BOOL

TRUE:SFC POUのティップ モードを有効にします

SFCTipMode := TRUEを設定してティップ モードを有効にした場合、次のステップに進むにはSFCTipをTRUEに設定する必要があります。SFCTipModeをFALSEに設定している限り、トランジションを介して次のステップに切り替えることもできます。

SFCErrorAnalyzation

SFCErrorの合計値TRUE(1つのステップでのタイムアウト)に寄与しているすべての変数の文字列を含みます

これが機能するには、SFCErrorが有効になっている必要があります。

このために、SFCErrorAnalyzationはAnalyzationライブラリのAnalyzeExpression POUの機能を暗黙的に使用します。

解析の詳細な構成については、以下も参照してください。SFC

SFCErrorAnalyzationTable

SFCErrorの合計値TRUE(1つのステップでのタイムアウト)に寄与している変数のテーブルを含みます

これが機能するには、SFCErrorが有効になっている必要があります。

このために、SFCErrorAnalyzationTableはAnalyzationライブラリのAnalyzeExpressionTable POUの機能を暗黙的に使用します。

解析の詳細な構成については、以下も参照してください。SFC

SFCフラグの暗黙的な生成

対応するオプションを有効にすると、SFCフラグは自動的に宣言されます。このオプションは、個々のPOUについてはSFC 設定プロパティ ダイアログで、プロジェクト内のすべてのSFC POUについてはSFCプロジェクト設定ダイアログで設定できます。

ヒント

個々のPOUのSFCフラグのSFC設定は、デフォルトを使用オプションを有効にしていない場合にのみ有効です。このオプションを有効にしている場合は、プロジェクト設定で定義された設定が適用されます。

ヒント

SFC設定ダイアログで宣言したSFCフラグは、SFC POUのオンライン ビューでのみ表示されます。

ヒント

SFC要素のプロパティでは、フラグのシンボル定義をシンボル構成にエクスポートするかどうかを定義できます。

SFCフラグの明示的な生成

以前のCoDeSys V2.3で必要だった手動での宣言は、別のPOUからフラグへの書き込みアクセスが必要な場合にのみ、引き続き必要です。その場合は、次の点に注意してください。

重要

フラグをグローバル変数リストで宣言した場合は、SFC設定ダイアログで宣言設定を無効にする必要があります。そうしないと、ローカルのSFCフラグも暗黙的に作成されます。その場合、グローバル変数の代わりにこのフラグが使用されます。

SFCErrorの適用例

例 1. 例

ステップs1を含む、sfc1という名前のSFC POUを作成しました。ステップのプロパティで時間制限を定義しました。

ステップs1のアクティブ時間が時間プロパティで定義された制限を超えると、フラグSFCErrorがセットされます。アプリケーションはこのフラグを評価して、タイムアウトに対応できます。

このアクセスを可能にするには、SFC設定でフラグを有効にして宣言する必要があります。宣言のみを行った場合、SFCフラグはsfc1のオンライン ビューの宣言部に表示されますが、機能しません。

_cds_img_sfc_sfc_flags.png

これで、POU内(たとえばアクション内(2))から、またはPOUの外部(1)から、SFCフラグにアクセスできます。

_cds_img_sfc_sfcerror_example.png

SFC POUsfc1のオンライン ビュー:

_cds_img_sfc_sfcerror_example_online.png

sfc1内でタイムアウトが発生するとすぐに、SFCErrorはTRUEになります。

タイムアウトの原因を分析するには、AnalyzationライブラリのSFCErrorAnalyzationフラグとSFCErrorAnalyzationTableフラグを使用できます。これらのフラグを使用すると、SFCErrorが値TRUEになる原因となった式の個々の構成要素を特定できます。



フラグへのアクセス

アクセスの構文

POU内では、フラグを直接割り当てます:<variable name> := <sfc flag>

例 2. 例
checkerror := SFCError;


名前を指定して別のPOUから:<variable name> := <pou name>.<sfc flag>

例 3. 例:
checkerror := SFC_prog.SFCError;


別のPOUからの書き込みアクセスが必要な場合は、SFC POU内でSFCフラグをVAR_INPUT変数として明示的に宣言するか、GVLでグローバルに宣言する必要もあります。

例 4. 例

ローカル宣言

PROGRAM SFC_prog
VAR_INPUT
    SFCInit : BOOL;
END_VAR

またはグローバル変数リストでのグローバル宣言

VAR_GLOBAL
    SFCInit : BOOL;
END_VAR
PROGRAM PLC_PRG
VAR
    SetInit : BOOL;
END_VAR
SFC_prog.SFCInit := SetInit;  //Write access to SFCInit in SFC_prog