ここでは以下のようなデータをトレースしてファイル出力後にSysmacStudioのデータトレースへインポートします
| トレースするデータ | ビットを16個、INT型、DINT型、LINT型、REAL型、LREAL型をそれぞれ1個づつ |
|---|---|
| バッファの要素数 | 10000個 |
| バッファの数 | 2個 |
| トレースする周期 | 2ms |
レコード開始フラグでひとつめのバッファにデータを溜めます
バッファの最後までデータが入ったら2つめのバッファに切り替えてデータを溜めます
バッファが切り替わったタイミングでバッファをFileWriteVar命令でSDに書き出します
トレースしたいデータを入れるsData構造体を作成します
Data構造体をダブルバッファ用の構造体に入れてバッファリングに必要なサイズだけ配列を設定します
この配列の数がバッファサイズになります
| 名称 | データ型 | 内容 | |
|---|---|---|---|
| sData | STRUCT | バッファ | |
| RecTime | DATE_AND_TIME | 時刻 | |
| SamplingNo | UINT | サンプリングNo | |
| Idx | UINT | Index | |
| B | BOOL[16] | BOOL型16個 | |
| INT16 | INT | 整数型16bit | |
| INT32 | DINT | 整数型32bit | |
| INT64 | LINT | 整数型64bit | |
| R | REAL | 実数型 | |
| LR | LREAL | 実数型 倍精度 | |
バッファ用の変数をData0とData1という名前で作成します
それぞれsData構造体の配列で要素数は10,000個で作成します
sDataの単体の変数をRecDataという名前で作っておきます
レコード開始フラグ(Rec)をONするとトレースしたいデータをRecDataにセットして
データをセットしたRecDataはRingBufPutファンクションを使ってバッファに追加します
ここではDummy~~~というグローバル変数をトレースしたいデータとしています
バッファがいっぱいになったらファイル名を作成してバッファをFileWriteVar命令でSDに書き込み指示を出します
同時にバッファを切り替えてファイル書込み中でも切り替えたバッファでレコーディングします
バッファがいっぱいになったら切り替えて書込みを繰り返します
出力したファイルをSSConverterでデータトレース用CSVファイルに変換します