サイトのタイトル

OSD

SSレコーダの作り方 (2/4)

レコードの設定

ここでは以下のようなデータをトレースしてファイル出力後にSysmacStudioのデータトレースへインポートします
トレースするデータ ビットを16個、INT型、DINT型、LINT型、REAL型、LREAL型をそれぞれ1個づつ
リングバッファの容量 65535個
トレースする周期 2ms

レコード開始フラグでリングバッファにデータを溜めます
そのまま放置でリングバッファに最新データが随時上書きされていきます
任意のタイミングでレコード書き込みフラグをONにして溜めたデータをファイルに書き出すようにします

手順1:リングバッファの作成

  • 1-1. リングバッファ用構造体の作成

    画像クリックで大きくなります

  • トレースしたいデータを入れるsData構造体を作成します
    Data構造体をリングバッファ用の構造体に入れてバッファリングに必要なサイズだけ配列を設定します
    この配列の数がバッファサイズになります

    名称 データ型 内容
    sRingBuffer

    Top

    UINT 追加位置

    Bottom

    UINT 読出し位置

    Count

    UINT 格納数

    Data

    sData[65535] バッファ

    RecTime

    DATE_AND_TIME

    SamplingNo

    UINT

    Idx

    UINT

    B

    BOOL[16]

    INT16

    INT

    INT32

    DINT

    INT64

    LINT

    R

    REAL

    LR

    LREAL

  • 1-2. サンプルからファンクションをコピー

  • ファンクションにRingBufPutファンクションとRingbufGetファンクションをリングバッファのサンプルからコピーしておきます

手順2:リングバッファへ格納

  • 2-1. プログラム作成

  • レコード開始フラグ(Rec)をONするとトレースしたいデータをRecDataというsData構造体にセットします
    データをセットしたRecDataはRingButPutファンクションを使ってリングバッファに追加します
    ここではDummy~~~というグローバル変数をトレースしたいデータとしています

  • 2-2. エラーが出たら

  • 'SRINGBUFFERからST_STRING_LITERALに変換できません。'のようなエラーが出る場合はファンクションの変数テーブルを開いて入出力タブのRingBufのデータ型を一度削除してからもう一度sRingBuffer型を設定し直してください

次のページは

リングバッファに溜まっているトレースデータをファイルに出力します