# 内部計算値のロギング

トレーニング > 応用編 > ロギング機能 > # 内部計算値のロギング |

内部計算値ロギングの作成

ここでは、PLCから収集したタグ値に基づいた内部演算を行い、収集値と演算結果をロギングします。イベント設定は定周期イベントを利用し、１秒周期でCSVファイルにログ出力します。

PLCから収集したタグ値を用いてHMI側で内部演算を行う場面としては、例えば、HMI側でロギングしたい情報がPLC上に存在しておらず、PLCから収集した他の信号を使って算出して求める場合などが挙げられます。具体的には以下のような場合です。

今回は、上記の例と全く同じ処理を実現してみます。但し、ここではPLCデバイスの代わりに仮想デバイスの「特殊レジスタ」（SD）を参照します。上図の仮想デバイス部分には、「データレジスタ」（D）を使用します。

ログファイルのフォーマットは以下のようなイメージになります。

時刻 | 数量A | 数量B | 合計 | 平均
2016/9/11 17:50:00 | 10 | 2 | 12 | 6
2016/9/11 17:50:01 | 20 | 34 | 54 | 27
2016/9/11 17:50:02 | 4 | 0 | 4 | 2
・・・ | ・・・ | ・・・ | ・・・ | ・・・

数量A、数量Bはデバイスから収集した生データです。合計、平均は、収集した２点のアナログ値に基づいて内部演算した値です。

準備作業（タグ登録）

まずは、Panel Serverで設定ファイルを新規作成し、ロギング対象とするタグを登録して下さい。

1.Panel Serverにタグを登録します。
Panel Serverを起動し、以下のような仮想デバイスとタグを追加してください。
ユニット名： “U01”　・・・仮想デバイス
フォルダ名： “F01”
登録するタグ：

タグ | デバイス種別 | 備考
“SM0008”、”0009” | SD(特殊レジスタ) | 2点のタグを作成する。
"D0000"、"D0001" | D(内部レジスタ) | 2点のタグを作成する。

2.設定ファイルを保存します。
タグの登録が終わったら、サーバ側の設定ファイルを一旦保存します。以降の作業でも、引き続きこの設定ファイルを使って作業を行います。

ロガーアクションの設定

タグを登録したら、ロガーアクションの設定を行います。

1.ロガーアクションを追加する
Panel Serverのツリーから、Actionを右クリックしてメニューを表示し、追加／アクションを選択します。
アクションの追加ダイアログが表示されるので、「ロガー（CSV）」を選択してOKボタンをクリックします。
A01というアクションが追加されました

2.ロガーアクションのプロパティを設定します。
ツリーから“A01”を右クリックしてメニューを表示し、プロパティダイアログを表示します。テキスト設定タブを開き、ファイルのパスとファイル名を指定してください（ここでは、“log1-3.csv”としています）。ここでは、サーバ設定ファイルの保存んフォルダ内にDBというフォルダを作成し、そのフォルダにCSVデータをロギングするように指定しています。

3.時刻フィールドを追加する
ツリーからA01を右クリックしてメニューを表示し、追加／時刻フィールドを選択します。

4.タグフィールドを追加する
ログに含めるタグをフィールドとして追加します（ドラッグ＆ドロップ）。まず、Multiviewにタグを表示し、フィールド追加したいタグを選択状態にします（この例では、全てのタグを選択）。次に、A01にドラッグ＆ドロップします。
ドロップすると、タグフィールド連続追加のダイアログが表示されます。このままの設定で「次へ」をクリックします。
フィールド名の作成方法を指定します。ここでは、このままの設定で「完了」をクリックします。

5.アクションにスクリプトを定義する
ロギング前の内部演算は、アクションのスクリプト実行機能によって実装します。スクリプトの記述はアクションのプロパティダイアログから行うことができます。
ツリーから“A01”を右クリックしてプロパティを表示してください。詳細設定タブを表示し、スクリプト実行の「処理を開始する前」にチェックを入れて、「...」ボタンをクリックします。すると、スクリプトエディタが表示されます。
これがスクリプトエディタです。ここに、ロギング前の内部処理を記述します。

| スクリプトの実行タイミングは、処理の開始前、処理の終了後など、目的に応じて細かく選択することができます。開始前、終了後などを併用することも可能です。

6.アクションにスクリプトを定義する
スクリプトエディタから、以下の内容を記述します。

U01.F01.D0000 = U01.F01.SD0008 + U01.F01.SD0009 U01.F01.D0001 = (U01.F01.SD0008 + U01.F01.SD0009) / 2

上記は、SD0008とSD0009の合計値をD0000に求め、平均値をD0001に求めています。
OKボタンでスクリプトエディタを閉じ、プロパティダイアログもOKボタンで閉じて下さい。

| PLCから収集したアナログ値を工学値変換してロギングしたい場合には（例：0-4096を0-100℃に変換など）、ログアクションのスクリプトではなく、タグのフィルタ機能によって変換してください。タグのフィルタ機能は、PLCから取得したデータをタグにセットする時点で自動的に工学値変換が行われるため、画面表示やロギングなど、タグの値を利用するアプリケーション側は工学値変換済みの値を使用することができます。

イベントの設定

次に、イベントの設定を行います。一秒ごとに発生する定周期イベントを作成し、先ほど設定したロガーアクションの呼び出しを定義します。

1.定周期イベントを追加する
Panel ServerのツリーからEventを右クリックしてメニューを表示し、追加／定周期イベントを選択します。
新たに“E01”というイベントが追加されました

| イベントの詳細については、「イベント編」を参照してください。

2.イベントのプロパティを設定します。
Multiviewから“E01”を右クリックしてメニューを表示し、プロパティを表示します。
定周期イベントタブを開き、設定が１秒になっていることを確認します（デフォルトが１秒です）。
実行アクションタブを開き、アクション名のコンボボックスから先ほど設定した“A01”アクションを選び、追加ボタンをクリックします。
追加ボタンをクリックすると、リストに登録されます。
これで、“E01”というイベントが１秒周期で発生する度に、“A01”というロガーアクションが実行されます。
OKボタンをクリックしてプロパティ画面を閉じ、設定ファイルを保存してください。
以上で設定は完了です。

動作確認

1.Panel Serverをオンライン状態にします（黄色矢印）。
Multiviewにアクションを表示してみて下さい。「完了／要求」の値が１秒周期でカウントアップされていれば、定周期イベントに応じてアクションが正しく実行されています。

2.次に、ロギングによってCSVファイルが生成されていることを確認します。
前述のとおり、ファイル名には年月日が含まれています（“log1-320160911.csv”など）。ファイルが存在していれば、メモ帳などで内容を表示してみてください。以下のようなイメージで時系列毎にアナログ値が書き出されていればOKです。合計、平均が正しく算出されていることを確認してください。
CSV出力例：

3.動作確認が終わったら、Panel Serverをオフラインに戻します。