スクリプトVer2で履歴データ取得

<< Click to Display Table of Contents >>

マニュアル > サーバ作成ガイド > アクション編 > アクションの応用 > スクリプトVer2 >

スクリプトVer2で履歴データ取得

概要

SC2構文はHistoricalDataコントロールを使用することで、ヒストリカルデータサーバから時系列データを取得することができます。

 

この機能のサンプルは、以下からご利用頂けます。

 

hint

サンプルで使用している各イベントやメソッドの詳細については、コントロールリファレンスを参照してください。

 

設定手順

本サンプルではロガーアクションを使用しロギングを行います。そのロギングされたデータを、ロガーアクションが持っているヒストリカルデータサーバ機能を利用して、SC2構文から取得を行います。

 

アクション設定

1.スクリプトVer2アクション「A01」及びロガーアクション(CSV)「A02」を設定します。
c_action_0088

2.追加したアクション「A01」のプロパティを開き、スクリプトファイルを選択します。スクリプトファイルの記述方法は、後述の解説を参考にして下さい。
 
c_action_0083

 

 


イベント設定

1.定周期イベントを追加し、A01とA02を順に処理するように登録を行います。
c_action_0089
 

 

解説

ここでは、ヒストリカルデータからのデータ取得方法を説明します。

 

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.取得したデータを、取得データ数、取得データの日付、取得データの順にログ出力します。

 

 

hint

「future」、「past」は基準時刻の指定です。「future」は未来を表し、「past」は過去を表します。

 

 

動作確認

アプリケーションをオンラインにしてください(黄色矢印)。オンライン後、OutPutLogにスクリプトの動作結果がログとして出力されます。

 

c_action_0090