変数: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倍のメモリが使用され、サイクルタイムが長くなる可能性があるため、インスタンスパスの挿入は避けてください。代わりに、永続変数のリストで変数を宣言してください。
の宣言 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
これらは機能ブロックで宣言されています。これは、関数ブロックインスタンスが、マークされた変数だけでなく、完全に残留メモリに格納されているためです。