ファイルをメモリとして使う
概略
-
大量のデータを保持したいときに、SDカードのファイルを保持メモリの代わりとして使う方法です
ファイルをメモリとして使う方法と特徴について調べます
処理内容
- ファイルをメモリとして使う
-
SDに任意のサイズのファイルを作り、そのファイルの物理的なアドレスに値を直接書き込みます
物理的なアドレスとは、ファイルの先頭からのバイト数がアドレスになります
注意が必要なのは、書込み用のバッファを使って変数をファイルに書き込むため時間がかかります
読み出しをするときには書込みが終わるのを待ってから読み出すことになります
このことから、値が頻繁に変化する変数はこの処理には不向きです - 書込み用リングバッファ
-
書込み変数の最大サイズ : 4096byte
バッファ数 : 100
- 書込みファンクション
-
書込みデータとアドレスを指定して書込みバッファに追加します
書込み用ファンクション一覧 MemWriteSINT MemWriteUSINT MemWriteBYTE MemWriteINT MemWriteUINT MemWriteWORD MemWriteDINT MemWriteUDINT MemWriteDWORD MemWriteLINT MemWriteULINT MemWriteLWORD MemWriteREAL MemWriteLREAL MemWriteTIME MemWriteDATE MemWriteTOD MemWriteDT MemWriteSTRING
例)
-
入力/出力 変数 データ型 説明 入出力 Ringbuf sRingBuff 書込み用リングバッファ 入出力 Data ARRAY[*] OF ?? 書込みデータ 入力 Address DINT 書込みバイト位置 - ファイル書込みFB
-
書込み用バッファからファイルに書込みします
-
入力/出力 変数 データ型 説明 入出力 Ringbuf sRingBuff 書込み用リングバッファ 入力 Enable BOOL 有効 入力 FileName STRING[66] ファイル名 出力 Enabled BOOL 有効中 出力 WriteBusy BOOL 書込み中 - ファイル読出しFB
-
TriggerをONで指定したアドレスから値を読出し
-
入力/出力 変数 データ型 説明 入力 Execute BOOL 起動 入力 FileName STRING[66] ファイル名 入力 Address DINT 読出し開始バイト位置 出力 ReadData ARRAY[*] OF BYTE 有効中
使い方
-
書込みファンクション(MemWrite???)で書き込みたい値を書込み用リングバッファに追加します

蓄えられたリングバッファのデータはファイル書込みFB(MemControl)でファイルに書き込みます
このファイル書込みFB(MemControl)はプログラムの最後で常時1つだけ実行しておくことでリングバッファのデータを順番にファイルに書き込みます
