<< Click to Display Table of Contents >> マニュアル > サーバ作成ガイド > アクション編 > アクションの応用 > スクリプトVer2 > スクリプトVer2で履歴データ取得 |
概要
SC2構文はHistoricalDataコントロールを使用することで、ヒストリカルデータサーバから時系列データを取得することができます。
この機能のサンプルは、以下からご利用頂けます。
サンプルで使用している各イベントやメソッドの詳細については、コントロールリファレンスを参照してください。 |
設定手順
本サンプルではロガーアクションを使用しロギングを行います。そのロギングされたデータを、ロガーアクションが持っているヒストリカルデータサーバ機能を利用して、SC2構文から取得を行います。
アクション設定
1.スクリプトVer2アクション「A01」及びロガーアクション(CSV)「A02」を設定します。
2.追加したアクション「A01」のプロパティを開き、スクリプトファイルを選択します。スクリプトファイルの記述方法は、後述の解説を参考にして下さい。
イベント設定
1.定周期イベントを追加し、A01とA02を順に処理するように登録を行います。
解説
ここでは、ヒストリカルデータからのデータ取得方法を説明します。
1)初期処理
初期処理はOnInitializeイベントで行います。初期処理としてNew演算子を使用して、HistoricalDataコントロールオブジェクトの生成を行います。
スクリプト例
event OnInitialize() { ::SvsDump("OnInitialize:" + ::SvsGetActionName()); objHistData = new HistoricalData; objHistData.HDSRequestType = "RAWDATA"; objHistData.AddField(c("A02.U01_F01_SD0000","A02.U01_F01_SD0001", "A02.U01_F01_SD0002","A02.U01_F01_SD0003","A02.U01_F01_SD0004")); this.SetTimer(0, 5000, -1); }
処理内容
i.New演算子を使用し、HistoricalDataコントロールのオブジェクトを生成します。
ii.HDSRequestTypeプロパティに「RAWDATA」を指定します。「RAWDATA」とすることで、各行のデータの時刻がすべて同じ生データを取得することができるようになります。
iii.AddFieldメソッドで取得したいフィールドを指定します。ここではロガーアクションが持つヒストリカルデータサーバから時系列データを取得するため、ロガーアクションに定義されているフィールドを指定します。
iv.SetTimerでタイマーのセットを行います。セットしたタイマーのタイムアップ時にOnTimerイベントが発生します。ここでは、無制限で5秒周期のタイマーをセットします。
2)ヒストリカルデータ取得処理
ヒストリカルデータの取得はOnTimerイベント内で行います。まず、HistoricalDataコントロールを使用し、時系列データを取得し、OutPutLogへ出力します。
スクリプト例
event OnTimer(timerid,counter) { ::SvsDump("OnTimer Id:" + ::CStr(timerid) + " counter:" + ::CStr(counter)); var vCount, vDateTime, vData; if(!objHistData.ReadHistoricalData("future", T, "past", T, 10, vCount, vDateTime, vData)){ ::SvsDump("Fail to read historical data. Msg:" + objHistData.GetLastError()); return; } ::SvsDump("Count:" + ::CStr(vCount)); ::SvsDump("DateTime:" + ::CScript(vDateTime)); ::SvsDump("Data:" + ::CScript(vData)); }
処理内容
i.ReadHistoricalDataメソッドで時系列データの取得を行います。メソッドの引数で取得したいデータの範囲を指定します。ここでは「future」~「past」と指定し、全データの検索を行います。ただし、最大レコード数を10としているため、取得できるデータは10件となります。また、データ取得に失敗した場合は、GetLastErrorメソッドを使用して、エラー内容をログ出力します。
ii.取得したデータを、取得データ数、取得データの日付、取得データの順にログ出力します。
「future」、「past」は基準時刻の指定です。「future」は未来を表し、「past」は過去を表します。 |
動作確認
アプリケーションをオンラインにしてください(黄色矢印)。オンライン後、OutPutLogにスクリプトの動作結果がログとして出力されます。