Skip to main content

変数:PERSISTENT

永続変数は宣言セクションで宣言されます VAR_GLOBAL RETAIN PERSISTENT 永続グローバル変数リスト内。でマークされている変数の場合 PERSISTENT 永続性エディターの外部のキーワードでは、インスタンスパスがそこに追加されます。

ヒント

現在 CODESYS V3.3.0.1、変数宣言 PERSISTENT RETAIN と同じ効果があります RETAIN PERSISTENT また PERSISTENT

グローバル永続変数リストの宣言の構文 PersistentVars

VAR_GLOBAL PERSISTENT RETAIN
    <identifier> : <data type> (:= <initialization>)?;
 <instance path to POU variable>
END_VAR

POUでの宣言の構文

<scope> PERSISTENT RETAIN
    <identifier> : <data type> ( := <initialization> )?; // ( ... )? : Optional
END_VAR
<scope> : VAR | VAR_INPUT | VAR_OUTPUT | VAR_IN_OUT | VAR_STAT | VAR_GLOBAL

入力、出力、またはメモリアドレスの割り当て AT キーワードは許可されていません。

ヒント

絶対に使用しないでください POINTER TO 永続変数リストのデータ型。アプリケーションを再度ダウンロードすると、アドレスが変わる可能性があります。対応するコンパイラの警告がメッセージウィンドウに表示されます。

ヒント

残留変数の名前またはデータ型を頻繁に変更する場合は、それらを保持変数として宣言することをお勧めします。 RETAIN キーワードのみ。

重要

この場合、2倍のメモリが使用され、サイクルタイムが長くなる可能性があるため、インスタンスパスの挿入は避けてください。代わりに、永続変数のリストで変数を宣言してください。

96.

の宣言 PersistentVars 永続変数リスト

{attribute 'qualified_only'}
VAR_GLOBAL PERSISTENT RETAIN
        g_iCounter : INT;
        // Generated instance path of persistent variable
        PLC_PRG.fb_A.iPersistentCounter_A: INT;
END_VAR

の宣言 FB_A ファンクションブロック

FUNCTION_BLOCK FB_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR PERSISTENT
        iPersistentCounter_A : INT;
END_VAR

の宣言 PLC_PRG プログラム

VAR
        fb_A1 : FB_A;
END_VAR


可能な宣言場所

説明

永続グローバル変数リストに直接

変数は永続的であり、保護されたメモリ領域にあります。

永続変数リストにインスタンスパスがあるプログラムでローカルに

永続変数リストにインスタンスパスがある関数ブロックでローカルに

変数は永続的であり、保護されたメモリ領域とメモリに配置されます(二重割り当て)。

プログラム内でのみローカル

機能ブロック内でのみローカル

変数は永続的ではありません。メッセージウィンドウに警告が表示されます。

ヒント

クリック 宣言→すべてのインスタンスパスを追加 変数を永続変数リストにインポートします。

関数内でローカルに

この種の宣言は効果がありません。変数は永続的ではありません。

ヒント

永続性エディターで、をクリックします 宣言→すべてのインスタンスパスを追加 ローカル変数がとしてマークされている場合 PERSISTENT

ヒント

可能な限り、変数を次のようにマークすることは避けてください PERSISTENT これらは機能ブロックで宣言されています。これは、関数ブロックインスタンスが、マークされた変数だけでなく、完全に残留メモリに格納されているためです。