TraceSDWrite
概略
リングバッファからデータを読み出して書込みバッファ(バイト配列)に書込みデータを格納します
書込みデータをセットできたらFileWite命令でSDカードに書込みします
ソース
リングバッファからRingBufGetでデータを取り出し、句切り行(空白)でなければバイト配列WriteBufに書込んでいきます
書込み位置はPosで制御し、構造体のメンバのデータをバイト配列に変換した後に区切り文字のカンマ(0x2C)を挿入します
BOOL型はTrueを"1"(0x31)で、Falseを"0"(0x30)に変換し、数値型はDINT_TO_STRINGなどで数値に変換した後にStringToAryでバイト配列に変換します
実数型はLrealToFormatStringなどで文字列に変換した後にStringToAryでバイト配列に変換します
一行分の変換が終われば改行コードCrLf(0x0d,0x0a)を挿入します
データ型によって命令語を変更してください
リングバッファのカウントが0でなければ再度リングバッファからデータを取り出して同じ処理を行います
もし、書込み位置Posが60000を超えればバッファが一杯になったとして一旦変換処理を抜けてファイル書き出し処理に移行します
1スキャンで変換する行数は最大処理行数RowCntで調整します
大きくするとスキャンタイムが伸びますが一度に書き込むバイト数が増えるため、書込み時間は短くなることが期待できます
定周期タスクで実行する理由はここにあります
定周期タスクのタスク周期と最大処理行数のループ数を調整して最適な処理時間になるように調整してください