イベント方式でCSV保存するメリット

  • 変化したデータのみ保存できる
  • ファイルサイズを小さくできる
  • Excelでそのまま開ける
  • 上位アプリ不要で内容を確認できる
  • トラブル解析が容易になる

CSV保存とバイナリ保存の違い

項目CSVバイナリ
可読性高い低い
ファイルサイズ大きい小さい
速度遅い速い
解析容易専用ツール必要

イベントログ保存の仕組み

メモリの値が変化したらデータを残します
SDカードへ書込む方法は「リングバッファとバイト配列でロギング」と同じです

イベントログ記録システム構成図

シンボル

EventLogSDWriteCSV
処理内容はTraceSDWriteとほぼ同じ
CSV保存用ファンクションブロック

イベントログ用構造体

イベントログ保存用構造体

プライマリタスクの処理

イベント検出処理ラダー

定周期タスク

CSV書込み処理ラダー

EventLogSDWriteCSVの動作

プライマリタスクでは監視しているメモリの値が変化したときにRingFilePutで時刻と変数と値をバッファに追加します
値の変化はビット情報ではXOR命令で前回値と比較してOFF→ON、ON→OFFを監視します
数値では前回値から今回の値を引いて変化の範囲(rangeDInt)を超ているかを監視します

定周期タスクではリングバッファから読み出してSDカードに書き込みをします
バイト配列に変換してSDカードに書き込むEventLogSDWriteCSVFBの処理に時間がかかるため10ms~のタスク周期で調整します
リングバッファにデータがあればEventLogSDWriteCSVを実行してSDカードに書込みます

よくある質問

CSVファイルはExcelで開けますか?

はい。保存したCSVファイルはExcelやテキストエディタで確認できます。

イベントログと定周期ログの違いは何ですか?

イベントログは値が変化した時のみ保存するためデータ量を削減できます。

CSV保存はバイナリ保存より遅いですか?

文字列変換処理が必要なため一般的にCSV保存の方が処理負荷は高くなります。

リングバッファを使用する理由は何ですか?

イベントが短時間に集中した場合でもデータ欠落を防ぐためです。

ダウンロード

この記事へのコメント