データの永続性
変数とそのデータの有効期間は、変数が作成されてから削除され、メモリスペースが再び解放されるまで延長されます。変数の作成、初期化、またはインスタンス化のタイミングは、宣言されたスコープによって異なります。通常、メモリ解放の時間も。たとえば、グローバル変数のメモリは、アプリケーションの終了時に解放されます。
通常よりも長くデータを保持できます。の次のメカニズム CODESYS この目的のために提供されます。
データ保存メカニズム
(A): 永続的なグローバル変数リスト
キーワードで
PERSISTENT RETAIN
永続変数は、アプリケーションがリロードされたときにその値を保持します。値は、ダウンロード、ウォームスタート、またはコールドスタート後にも復元されます。
(B): 変数を保持する キーワードで
RETAIN
保持変数は、ウォームスタート後も値を保持しますが、アプリケーションが再度ロードされたとき、ダウンロードまたはコールドスタートしたときは保持しません。
(C): 永続性マネージャー変数 の CODESYS Application Composer
PersistenceManager変数は外部ファイルに保存されます。
(D): レシピ変数
レシピ変数とその値はレシピファイルに保存されます。
比較のメカニズム
どのメカニズムがどのアプリケーションに適していますか?この表では、いくつかの一般的な使用例を検討しています。具体的な例は、ハウスコントロールを参照しています。
使用事例 | (A)永続変数 | (B)変数を保持する | (c)永続性マネージャーの変数 | (D)レシピ変数 | |
---|---|---|---|---|---|
1 | アプリケーションはデバイス設定を受信する必要があります。 例:停電後、ハウスコントロールには、ブラインドを上げる必要がある時間に関する情報が必要です。 | 適切1 推奨されるユースケース この場合、永続変数の代わりに保持変数を使用することもできます。これは、宣言が頻繁に変更される変数に有利です。 | 適切 推奨されるユースケース 保持変数は、宣言が頻繁に変更される場合に有利です。 | 適切2 ハードウェアをサポートしていないコントローラーに有利 これは、ダブルファイルバッファリングなどの特別な機能によって可能になります。 | 可能ですが、非常に面倒なのでお勧めしません |
2 | アプリケーションは、プログラムの変更または拡張後に値を受け取る必要もあります。 | ||||
2a:まれな拡張 例:アプリケーションプログラマーは、プログラムに新しいスイッチを追加し、新しいライトをインストールします。その場合、ハウスコントロールには、その時点までに保存された値がまだ含まれている必要があります。 | 適切1 推奨されるユースケース | 適切 | 適切2 | 可能ですが面倒です | |
2b:変数のデータ型の削除または変更を含む、より自由な変更 ハウスコントロールは実行され、永続化されています。アプリケーションプログラマーが新しい機能でコントロールを拡張し、したがって関数ブロックにさらに永続的な変数を追加する場合、その時点までに保存された値を保持する必要があります。たとえば、プログラムは、特定の時間の後に以前は制御されていなかったランプの自動スイッチオフを制御する変数によってFBで展開されます。拡張後、ハウスコントロールはすべての制御されたランプの時間を利用可能にする必要があります。 | 適切ではありません | 適切 保持変数からのデータは、オンライン変更後も可能な限り保持されます。 | 適切、可能な限り 2 推奨されるユースケース | テキストの場合は可能ですが、扱いにくい | |
2c:アプリケーションはダウンロード後に値を受け取る必要があります。 | 適切 | 適切ではありません | 適切 | 適切 | |
3 | アプリケーションは、さまざまな値セットを使用できる必要があります。 例:夏、冬、休暇の操作設定を保存し、必要に応じて再度インポートする必要があります。 | 適切ではありません | 適切ではありません | 適切ではありません | 適切 推奨されるユースケース |
4 | アプリケーションは、別のシステムの設定を使用できる必要があります。 同様の変数を使用する別のシステムに設定を転送できる必要があります。 | 適切ではありません | 適切ではありません | 適切2 | 適切3 |
5 | アプリケーションは、人間が読める形式のデータを提供する必要があります。 ユーザーは、データの読み取り、比較、および編集ができる必要があります。 | 適切ではありません | 適切ではありません | 適切2 | 適切3 |
1 短所:ランタイムシステムがこのメカニズムをサポートし、NVRamメモリまたはUPSが使用可能な場合にのみ可能です。利点:速度;推奨される使用例:1および2a
2 短所:変数の数が多い場合(> 10000)、初期化とシャットダウンに長い待機時間が予想されます。利点:特別なメモリ機器は必要ありません。値の保持は、変更、拡張、または削除にも適用されます。
3 利点:外部で編集可能、転送可能。短所:厄介
オンラインコマンドが呼び出されたときの変数の有効期間
メニューへのユーザー入力 オンライン | 通常の寿命で可変 ない |
|
|
---|---|---|---|
指図 オンライン変更 | x | x | x |
指図 ウォームリセット | i | x | x |
指図 コールドリセット | i | i | x |
指図 ロード | i | i | バツ 1 |
指図 原点をリセット | i | i | i |
x:変数はその値を保持します。
i:変数が初期化されます。
1 注:永続データの構造については、「ダウンロードメカニズム」の情報に注意してください。
ブート アプリケーションをロードするときの変数の寿命
通常の変数の値は値を失い、再初期化されます。
永続変数の値は保護されています
メモリ内の永続変数の構造が永続データ リスト内の構造と一致する場合。
永続データが拡張されただけの場合。この場合、最近追加された変数のみがデフォルト値で設定されます。
保持変数の値は保護されています
メモリ内の保持変数の構造が永続データ リスト内の構造と一致する場合。
保持変数がアプリケーションと一致する場合 (GUID が一致する必要があります)。
アプリケーションの起動時に保持変数と永続変数の値を復元するための要件が満たされていない場合、「保持の不一致」が発生します。この不一致に対する反応は、ハードウェアメーカーのドキュメントに記載されています。
詳細については、次を参照してください。 永続変数でデータを保存する