今回は【MWRIT】で生成したCSVファイルに各項目タイトルをつける方法を紹介します。
前回では、【MWRIT】(ストレージ書込み命令)でCSVファイルに数値を保存していきました(下図参照)。しかし、数値や結果文字だと、データを閲覧する方は何の値であるかを把握できません。
今回は、CSVファイル生成時に1行目にだけ項目タイトルを追加する方法を紹介します(下図参照)。
過去に【MWRIT】やCSVファイルの生成方法を紹介してます。
ラダー図の紹介
過去紹介した【MWRIT】でCSVファイルを生成した時のラダー図を流用して製作していますので、過去の内容が知りたい方は下記リンクを参照して下さい。
下図が今回のフローとなります。今回は③~⑤の部分が、記事の内容になります。
③ファイル日付(名称)の比較
では、フロー③のファイル日付の比較について紹介します。(下図参照)
この回路では、項目やデータを書き込む前の段階にあります。ここでは、現在の日付と前回の日付ファイル名称を比較して項目を書き込む必要性を判断しています。
下図は実際の動作です。(6月14日⇒6月21日になった挙動を撮像)
- 【SCMP】(文字列比較命令)で文字列が一致or不一致を判定
- 一致の場合は、項目を書き込む必要がない、不一致の場合は書き込む必要がある
過去に【SCMP】について紹介しています。
④各項目が書込み実施の有無
では、フロー④の各項目が書込みされているかについて紹介します。
③で日付が前回と異なる場合に、この回路は起動します。【MREADL】(ストレージ1行目読出し命令)を用いて対象のファイルの1行目、つまり、項目内容を確認します。(※:【MREADL】について別記事で上げる予定です。更新後、この記事にもリンク貼付します。)
上記で読出し内容が一致or不一致しているかをここで判断します。
- 一致の場合:データの書き込み回路へ
- 不一致の場合:項目を書き込む回路へ
ここで判定している理由としては下記の通りです。
- 日付が正常に増加した場合 ex:22/4/1 ➡ 22/4/2
- PCが何らかの異常で、再び正常になった場合 ex:00/1/1 ➡ 22/4/2
③で説明した【SCMP】による比較のみだと、日付が再び正常になった時、再度項目を書き込んでしまうため、【MREADL】で確認をしています。
⑤各項目の書き込み
では、フロー⑤の各項目が書込みについて紹介します。
この回路では、CSVファイルに項目を書き込む回路です。動作が開始されると、【LEN】(文字列長検出命令)で文字列数をカウントします。次に【MWRIT】(ストレージ書込み命令)でCSVに書き込んでいきます。
過去に【LEN】について紹介しています。
項目が全て書き終えたら、【MWRIT】の各通知ビットをリセットにして、ファイル名称を更新して完了となります。
CSVの様子
実際に生成したCSVを紹介します。(下図参照)
さいごに
今回は、過去に紹介した【MWRIT】を用いて、CSVファイルにタイトル(項目)をつけてみました。
【MWRIT】の仕様を上手に扱えば、今回紹介した例のように、タイトルや数値をSDカードに書き込むことが出来ます。
過去紹介した記事です。