S71200とS71500は最適化データ保存できます。最適化されたBlocksではすべてのTagsは移動的それらのデータタイプにソードされる。そのソードはデータとデータの間にあるGapsを最小化するためで、最適化されたTagsはProcessにもっと高速的・効率的にアクセスするができます。
S7-1200の場合
最適化されたBlockには変数と変数の間にGapがなく、Blocksのサイズは最小化になります。そのときシンボリックアクセスしかできません。
S7-1500の場合
Point1から:S7-1500の場合は変数はすべて分けられてます。
Point2から:不揮発性メモリと別々で分けられてます、そしてCPUが電源落ちても変数値がそのままCPUの中に保存されます。”MRES”のButtonはその値をリセットしそれらの変数を”Start values”に戻る機能なんです。
まず、Figure2-6には同じのBlockなのに最初のMemory Gapsがなくなりました。そしてその最適化されたメモリ保存はS71500のProcessorは一つのマシンコマンドで直接に書き込む・読み込むアクセスすることができます。Bool tagsはすべてByte単位として保存はされます。CPUはそれによって、ANDなどのコマンド使って変数をマスクしてからアクセスする手間もなくなります。さらに、不揮発性メモリと分けて保存することによってBlocksダンロードするときも一部の変数は初期化せずに済む。
Processorにとって
S7-300とS7-400は”Big Endian”のByte Orderで変数を保存する。
Standard blockの場合は、変数は”Big Endian”のByte Orderです。そしてOptimized blockの場合は変数は”Little Endian”のByte Orderです。
例えば:
Big Endianで−12がメモリ上は…
000000: F4
000001: FF
Little Endianで−12がメモリは…
000000: FF
000001: F4
Point1からみると、CPUが実数のTagsをアクセスの場合、
Standard blockなら一回Bigー>Little Endianに変換しないといけません。Optimized blockならその”Big->Little Endian”の変換ないです。
Point2からみると、CPUがBoolのTagsをアクセスの場合、Standard blockならBoolをアクセスするためにByteをマスクしないといけません。Optimized blockならBoolがByte単位保存されているのでマスクの実行いりません。
あと、Stand blockは最大64KB、Optimized blockは16MBです。