SFCフラグ
SFCフラグは、SFCチャートを制御および診断するための機能を提供する、定義済みの名前を持つ暗黙的に作成される変数です。これらのフラグを使用すると、トランジションを目的に応じてトリガーできます。
例:
タイムアウトの検出
ステップ チェーンのリセット
ティップ モードの有効化
これらの変数にアクセスするには、対応するフラグを宣言して有効にする必要があります。
名前 | データ型 | 説明 |
|---|---|---|
|
|
|
|
|
これに対し、初期化後も初期ステップは引き続き実行されます。たとえば、初期ステップ内で |
|
| SFCチャートでタイムアウトが発生すると 最初のタイムアウトの後にプログラム内で別のタイムアウトが発生した場合、そのタイムアウトは、変数 タイミングを監視するための他のフラグ変数( |
|
|
この変数を宣言してアクティブ化した場合(SFC設定)、
|
|
|
名前は、登録されたステップ エラーが
|
|
| タイムアウトが発生した場合、
|
|
| このブール変数が
|
|
| この変数が |
|
| トランジションが切り替わると |
|
| 時間チェックに関係なく、現在アクティブなステップの名前を表示します 並列分岐の場合は、常に一番右にある分岐のステップの名前が格納されます。 |
|
|
|
|
これが機能するには、 このために、 解析の詳細な構成については、以下も参照してください。SFC | |
|
これが機能するには、 このために、 解析の詳細な構成については、以下も参照してください。SFC |
SFCフラグの暗黙的な生成
対応するオプションを有効にすると、SFCフラグは自動的に宣言されます。このオプションは、個々のPOUについてはSFC 設定プロパティ ダイアログで、プロジェクト内のすべてのSFC POUについてはSFCプロジェクト設定ダイアログで設定できます。
ヒント
個々のPOUのSFCフラグのSFC設定は、デフォルトを使用オプションを有効にしていない場合にのみ有効です。このオプションを有効にしている場合は、プロジェクト設定で定義された設定が適用されます。
ヒント
SFC設定ダイアログで宣言したSFCフラグは、SFC POUのオンライン ビューでのみ表示されます。
ヒント
SFC要素のプロパティでは、フラグのシンボル定義をシンボル構成にエクスポートするかどうかを定義できます。
SFCフラグの明示的な生成
以前のCoDeSys V2.3で必要だった手動での宣言は、別のPOUからフラグへの書き込みアクセスが必要な場合にのみ、引き続き必要です。その場合は、次の点に注意してください。
重要
フラグをグローバル変数リストで宣言した場合は、SFC設定ダイアログで宣言設定を無効にする必要があります。そうしないと、ローカルのSFCフラグも暗黙的に作成されます。その場合、グローバル変数の代わりにこのフラグが使用されます。
SFCErrorの適用例
ステップs1を含む、sfc1という名前のSFC POUを作成しました。ステップのプロパティで時間制限を定義しました。
ステップs1のアクティブ時間が時間プロパティで定義された制限を超えると、フラグSFCErrorがセットされます。アプリケーションはこのフラグを評価して、タイムアウトに対応できます。
このアクセスを可能にするには、SFC設定でフラグを有効にして宣言する必要があります。宣言のみを行った場合、SFCフラグはsfc1のオンライン ビューの宣言部に表示されますが、機能しません。

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

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

sfc1内でタイムアウトが発生するとすぐに、SFCErrorはTRUEになります。
タイムアウトの原因を分析するには、AnalyzationライブラリのSFCErrorAnalyzationフラグとSFCErrorAnalyzationTableフラグを使用できます。これらのフラグを使用すると、SFCErrorが値TRUEになる原因となった式の個々の構成要素を特定できます。
フラグへのアクセス
アクセスの構文
POU内では、フラグを直接割り当てます:<variable name> := <sfc flag>
checkerror := SFCError;名前を指定して別のPOUから:<variable name> := <pou name>.<sfc flag>
checkerror := SFC_prog.SFCError;
別のPOUからの書き込みアクセスが必要な場合は、SFC POU内でSFCフラグをVAR_INPUT変数として明示的に宣言するか、GVLでグローバルに宣言する必要もあります。
ローカル宣言
PROGRAM SFC_prog
VAR_INPUT
SFCInit : BOOL;
END_VARまたはグローバル変数リストでのグローバル宣言
VAR_GLOBAL
SFCInit : BOOL;
END_VARPROGRAM PLC_PRG
VAR
SetInit : BOOL;
END_VAR
SFC_prog.SFCInit := SetInit; //Write access to SFCInit in SFC_prog