# ロガー

マニュアル > サーバ作成ガイド > アクション編 > アクションの機能解説 > # ロガー |

本アクションの特長

ロガーアクションは、PLCから収集したデータをCSVやODBCデータベースへ履歴データとして保存するためのアクションです。また、ロガーアクションはヒストリカルデータサーバ機能も含んでおり、本アクション経由で保存したロギングデータを取得できます。ヒストリカルデータサーバ機能については、ヒストリカルデータサーバアクションを参照して下さい。

ロガーアクションによるロギング処理は、トリガとなるイベントから実行される事によって行われます。

このイベントの発生条件をどのような設定にするのかによって（定周期的なロギングを行うのか、タグ値がある条件を満たす時のみイベントログを出力したいのか等）、ロギングに関する様々な要件を満たすことができます。

下図は、ロギング処理のフローです。

①イベント発生

ロガーアクションはイベントの発生をトリガとして実行されます。ロガーアクション１回の実行で、１レコードがDBへ保存されます。イベントには「定周期イベント」「定刻イベント」「タグイベント」の３種類があります。各イベントとロガーアクションの関係は以下となります。

定周期イベント | オンライン開始から、指定周期でロギングを行います。
定刻イベント | 決まった時刻にロギングを行います。毎分や毎正時などの時刻でロギングが可能です。
タグイベント | タグ値の評価によってロギングを行います。

②データ収集

ロガーアクションがイベントにより実行されると、必要なデータを収集します。デバイス値によるロギング、又はタグキャッシュ値によるロギングのいずれかを選択できます。設定はタグフィールドの設定で切り替えます。

③ログデータのキャシュへの保存

データ収集で集められたログデータは、DBへ保存する前に一旦メモリ上のキャシュに保存されます。その後、随時DBへ保存されます。

この仕組みにより、DBの負荷に影響されない安定したロギングが可能となります。例えば、イベント型のログをとる場合、大量のデータが同時に変化すると一時的にログの負荷が増えますが、そのような場合でもキャシュを介した仕組みにより安定したロギングが行われます。設定はロガーアクションのログ詳細で設定します。

④DBへの保存

キャッシュ値をDBに保存します。CSVファイルへのロギングの場合、１件毎にディスクに書き出す以外にも、ハードディスクへの負荷を軽減する目的で複数レコード分まとめてハードディスクに書き出す機能（フラッシュ設定）が用意されています。

サマリアクションとの違い

ロガーアクションはVer4以前のバージョンで開発された機能であり、ロギング処理のみに特化した機能です。一方、サマリアクションはVer5から新たに追加された機能であり、ロギング機能と集計処理、レポート作成機能が統合された機能構成となっております。

もし、タグの値をロギングする処理のみを構築したい場合は、ロガーアクション、サマリアクションのどちらを使用してもロギングを実現することができますが、両者にはそれぞれ以下のような特徴があります。どちらのアクションを選択するべきかは、それぞれの仕様と用途により選択してください。

ロガーアクションとの比較

| ロガーアクション | サマリアクション
ログ機能の高速性 | ミリ秒単位でのロギングが可能です。 例えばCSVファイルへの保存の場合、HDDの書き込み速度やPLCとの通信速度等に異存しますが、数十ミリ秒程度でのロギングが行えます。 | 最速で1秒周期のロギングが行えます。ミリ秒周期のロギングには対応していません。
ロギング対象タグの設定方法 | Panel Serverの画面上で、目的のタグをドラックアンドドロップする等の操作により設定することができます。 尚、１つのアクションにつき１つのデータベース（CSVの場合１ファイル、ODBCの場合１テーブル）に対応します。複数のCSVファイルやテーブルに保存したい場合は、複数のアクションを並列して定義する必要があります。 | サマリアクションの設定ファイル「タグフィールドマスタ」（テキストファイル）に、ロギング対象のタグパスを設定します。 タグフィールドマスタは、Excelやメモ帳などを用いて手動で設定します。 尚、あらかじめデータベースの最大列数を定義しておく事で、実行時に自動的に複数のデータベース（CSVの場合複数ファイル、ODBCの場合複数テーブル）に分割して生成されます。
ログ形式 | 時系列の一般型ログの他、イベント型ログの生成も可能。 | 時系列の一般型ログにのみ対応。
集計機能 | 無し。 本アクションはロギングのみ行えます。また、本アクションで生成されたヒストリカルデータをサマリアクションで集計することはできません。 | 有り。 サマリアクション自身が生成したヒストリカルデータ（ロギングデータ）をもとに、合計、平均、最大、最小などの各種統計方法での集計処理を自動的に行います。 又、各フィールドの集計データ同士で演算を行い、演算結果を集計データとして保存する事などができます。
レポート機能 | 無し。 本アクションはロギングのみ行えます。また、本アクションで生成されたヒストリカルデータをサマリアクションで集計することはできません。 | 有り。 レポート作成機能を内蔵。サマリアクション自身が集計した集計データをもとに、レポート作成を行います。
ヒストリカルデータサーバ機能 | 有り。 クライアントとなるPanel Browserから、ヒストリカルグラフコントロールやヒストリカルデータコントロールを介してヒストリカルデータへのアクセスを受け付けます。 | 有り。 （同左）

| ミリ秒単位などの高速周期でロギングを行いたい場合や、単にロギングのみを行いたい場合はロガーアクションを用います。一方、ロギング周期が１秒以上でOKでかつ日報集計などを行う必要がある場合は、サマリアクションを使用します（※日報集計を行う必要がある場合はサマリアクションを選択する必要があります）。サマリアクションに関する詳細は、「サマリ」を参照して下さい。

ログデータの保存形式

ログデータの保存形式には、大きく分けて「一般型ログ」と「イベント型ログ」の２つの形式があります。一般型ログは一定周期、あるいは定刻にログデータをフィールド毎に保存していく方法です。イベント型ログはタグ値の変化や、タグ値がリミット値を超えた時などをトリガとしてログデータを保存していく方法です。また、上記の２つの形式を混在させて出力することもできます。この方式のことを「混在型ログ」と呼びます。

1.一般型ログ

時刻 | ms | 温度１ | 温度２ | 温度３ | 圧力 | バルブ１ | バルブ２
2003/1/1 10:12:00 | 10 | 10.5 | 32.8 | 40.7 | 5.5 | TRUE | FALSE
2003/1/1 10:12:10 | 10 | 10.7 | 32.6 | 40.6 | 5.4 | FALSE | TRUE
2003/1/1 10:12:20 | 10 | 10.8 | 32.4 | 40.8 | 5.3 | TRUE | FALSE
・・・ | ・・・ | ・・・ | ・・・ | ・・・ | ・・・ | ・・・ | ・・・

2.イベント型ログ

時刻 | タグ | 値 | コメント
2003/1/1 15:11:12 | 温度１ | 15.1 | 上限値を超えました。装置をチェックして下さい。
2003/1/1 15:21:18 | 圧力 | 5 | 正常値に戻りました。
2003/1/1 15:23:25 | バルブ１ | 1 | バルブＯＰＥＮ。
2003/1/1 15:28:12 | 温度１ | 15 | 正常値に戻りました。
・・・ | ・・・ | ・・・ | ・・・

3.混在型ログ

時刻 | タグ | 値 | コメント | バルブ１ | バルブ２
2003/1/1 15:11:12 | 温度１ | 15.1 | 上限値を超えました。装置をチェックして下さい。 | FALSE | FALSE
2003/1/1 15:21:18 | 圧力 | 5 | 正常値に戻りました。 | FALSE | FALSE
2003/1/1 15:23:25 | バルブ１ | 1 | バルブＯＰＥＮ。 | TRUE | FALSE
2003/1/1 15:28:12 | 温度１ | 15 | 正常値に戻りました。 | TRUE | FALSE
・・・ | ・・・ | ・・・ | ・・・ | ・・・ | ・・・

ロガーアクションの利用手順

以下は、ロガーアクションを利用するための基本的な手順です。

1)タグ設定
PLCのどのエリアと通信するのかを定義します。また、必要に応じてPLCとのハンドシェイク用のタグや計算用のタグを作成します。

2)アクション設定
ロガーアクションの設定を行います。データベース（CSVファイルによるファイル保存か、ODBC経由によるDB保存）の基本設定及びフィールドのレイアウトを定義します。フィールドのレイアウトは、ロガーアクションにロガーフィールドを登録することでレイアウトの作成ができます。

3)イベント設定
ロガーアクションを実行するトリガとなるイベントを設定します。

4)オンライン
オンラインにするとロギングが開始されます。ログの開始、終了、ログの周期設定などの制御も可能です。

5)オフライン
オフラインにするとロギングが終了します。

実際の設定例としましては、以下を参照して下さい。

•一般型ログの設定例（定周期ログ）

•イベント型ログの設定例

ロガーアクションを使ったサンプル

以下の機能を持ったサンプルを提供しています。アプリケーションを作成する際の参考としてご活用ください。

タグイベントによるロギング | グイベントをトリガとしてロギングを行うための設定方法について解説します。
ログの開始/停止を制御する | タグイベントによってロギングの開始と停止を制御する設定方法について解説します。
計算結果をロギングする | PLCから読み込んだデバイス値を演算によって加工してロギングする方法について解説します。
大量データのロギング | 配列タグを使って大量データのロギングを行う方法について解説します。
アラームコメントを出力 | イベント型ログの利用により、アラームコメントなどの付属情報をログに出力する方法について解説します。
ODBCデータベースへのログ | ODBCデータベースへのロギングについて解説します。
ロギング要求をPLCから受け取る | イベントログのトリガを上記のハンドシェイク用ビットタグによって発生させる方法について解説します。
イベント型ログフォーマットで定周期にログをとる | イベント型ログフォーマットで定周期にロギングを行うための方法について解説します。
CSVログのファイル名を動的に変更する | ランタイム中にログファイルのファイル名を動的に変更する方法について解説します。

設定仕様

アクション仕様
パラメータ | アクションのパラメータは、イベントの実行アクション登録時に指定します。以下のパラメータ文字列を入力して下さい。
パラメータ文字 | 動作
何も指定しない | ロギングを実行します。
SETFILENAME | ファイル名を設定するときに使用します。 ※通常のロギングではパラメータは指定しません。使い方は、「CSVログのファイル名を動的に変更する」を参照下さい。 ※本パラメータを指定して実行した際には、ロギングは実行しません。
MAINTENANCE | ロガーのメンテナンスを行います。 ※ログファイルの自動削除を任意のタイミングで行います。詳しくは「DBのメンテナンス（自動削除）」を参照下さい。 ※本パラメータを指定して実行した際には、ロギングは実行しません。
ダイアログ | ■テキスト設定<ロガー（CSV）の場合> ▪ファイル名 ログを保存するファイル名を指定します。 ▪拡張 ログ保存ファイル名の拡張設定です。
項目 | 動作
なし | ファイル名で指定したそのままの名前で保存します。
ファイル名に日付・時刻を付加する | ファイル名の後ろに「日付書式」で指定した日付を付加します。%Y%m%dと指定すると１日毎にファイルが作成されます（例DB20050101.csv）。 また%Y%mと指定すると月ごとに、%Y%m%d%hと指定すると1時間ごとにファイルが作成されます。
ファイル名にタグ値を付加する | ファイル名にタグの値を付加します。詳しくはロガーアクション詳細マニュアルを参照下さい。
▪見出しを書き出す ファイルの1行目に必ずファイルの見出しを書き出します。見出しに使われる文字列は、フィールド毎に設定したフィールド名です。 ▪データを""で括る データをダブルクォーテーションで括ります。 ▪同名ファイル存在時 追加する：同名ファイルに追加書き込みします。通常はこちらの設定にします。 上書きする：古いファイルを削除し、新しいファイルを作成し新規に保存します。 ▪フラッシュ設定 この設定は、複数のレコードをまとめてハードディスクに書き出すための機能で、長期運用の際などにハードディスクへの負担をできるだけ軽減したいというニーズに対しても有効な機能です。 １レコード毎に書き出しを行いたい場合、フラッシュ設定に「１」を指定します。この設定により、何らかの原因によって不意にPCの電源が切れた場合でも直前のデータまで確実に保存されます。また、ログファイルが外部から参照されるような場合でも、即座に最新のログが反映されます。ただし、１レコード毎にハードディスクへの書き込みが行われるため、ハードディスクへの負担が増えます。ハードディスクへの負担を軽減したい場合には、フラッシュの設定値を多めに設定してください。
| ■ログ詳細 ▪データベースのメンテナンスを行う 詳しくは「DBのメンテナンス（自動削除）」を参照してください。 ▪ログデータのキャッシュ ログデータの最大キャッシュ数。キャッシュを利用することにより、正確なタイムスタンプのログが得られます。 データ収集で集められたログデータは、DBへ保存する前に一旦メモリ上のキャシュに保存されます。その後、随時DBへ保存されます。この仕組みにより、DBの負荷に影響されない安定したロギングが可能となります。 何らかの理由によりキャシュを利用したくない場合には、０を設定して下さい。なお、キャッシュ上に保存されている件数が設定値を超えた場合には、キャッシュのデータがDBに保存されるまで（キャッシュのデータ件数が設定値以下になるまで）待機します。 ▪通信エラー発生時 通信エラーが発生したときのログの処理方法です。詳しくは「通信エラー発生時の設定」を参照してください。 ▪定刻イベントの場合、スケジュールされた時刻を時刻フィールドに保存する 定刻イベントでデータログを行う場合、（たとえタイミングがずれたとしても）必ず定刻イベントのスケジュールと同じ時刻で時刻フィールドに対しログを行いたい場合、チェックを入れてください。 ▪ＰＣの時刻が戻った時の処理（最終保存時刻より古いデータ保存要求があった時） ＰＣの時刻合わせ等で時刻が戻された場合の処理です。詳細は「ＰＣの時刻が戻った時の処理」を参照してください。
| ■ヒストリカルデータサーバ ロガーアクションはヒストリカルデータサーバ機能を持っています。「ヒストリカルデータサーバ」タブで設定する項目は自動的に判別されるため、通常は指定する必要はありません。この設定は、データ項目に「日付・時刻フィールド」が２つ以上含まれる場合に、どちらのフィールドを時系列として使用するのかを明示したい場合のみ指定して下さい。また、MSフィールドは、データベースにミリ秒のフィールドが存在するときのみ指定して下さい。MSフィールドを含めると、ヒストリカルトレンドグラフ上にミリ秒単位でグラフ表示が行えます。
| ■詳細設定 ロガーアクションの「処理が成功した時」と「処理が失敗した時」とは、ログデータがデータベースに正しく書き込まれたか否かを表すものです。この動作は、ログデータのキャッシュの設定内容によって以下のような動作となります。 •キャッシュの指定が0の時 データベースへのロギングが失敗した場合、「処理が失敗した時」のスクリプトが実行されます。 •キャッシュの指定が1以上の時 ログデータはキャッシュに保存されるため、この場合の処理は必ず成功になります（「処理が成功した時」のスクリプトが実行されます）。
| ■ODBC設定<ロガー(ODBC)の場合> ▪データソース・テーブル名 共通設定「ODBC設定」を参照ください。 ▪ODBCエラー時 ログを続行したい場合は、通常「データベースと再接続し、ログを続行する」を選択してください。 ▪ODBCタイムアウト ODBCとのタイムアウト待ち時間を指定します。

ロガーフィールド仕様
タグフィールド | タグの値を保存したいとき、タグフィールドを選択します。 ▪タグ ロギングを行いたいタグ名（例 U01.F01.T01）です。 ▪キャッシュ値でログをとる タグの値は、別途指定された「更新周期」でPLCから定期的に実デバイス値を読み込む事によって定期的に更新が行われます。この更新周期はロガーアクションの設定とは別のものです。 本項目にチェックを入れると、キャッシュ値によるロギングとなります。キャッシュ値のロギングでは、実デバイスの値ではなく、アクション実行時点のタグ値がロギングに使用されます。そのため、データ収集のための処理時間は非常に高速です。また、PLCとの通信はアクション実行の都度発生しないため、複数のロガーアクションを並列的に実行した場合でも安定したロギングが行えます。ただし、ログデータのタイムスタンプはタグの更新周期の範囲で過去のデータになります。 本項目のチェックを外すと、デバイス値によるロギングとなります。デバイス値によるロギングでは、ロガーアクションが実行される都度、PLCとの通信によってデータの収集を行います。その為、最もタイムスタンプが確実なデータを取得できます。単純にロガーアクション１つだけの処理しか行わない場合にはこの選択がベストです。 しかしながら、複数のロガーアクションで並列的にデバイス値を利用すると、処理タイミングによっては通信要求がバッティングしてしまい、後続の通信要求が待たされる場合があります。例えば、一定周期でログをとっていた場合などは、通信待ちにより定周期性が乱れる可能性があります。特別な理由がない限りは、キャッシュ値によるロギングを推奨します。 ▪通信エラー時の処理 詳細は「通信エラー発生時の設定」を参照してください。
時刻フィールド | 時刻の情報を保存したいとき、時刻フィールドを選択します。 ▪コントロールパネルの設定を使用 OSの標準設定に従い時刻を作成します。0秒のとき秒が省略されます。0秒の時でも省略したくない時は、「フォーマットを指定する」を選択して「%Y%m%d %H%M%S」としてください。 ▪フォーマットを指定する 時刻のフォーマットを指定します。 ▪システムタイマーを使用する 1ms単位で増加するシステムタイマーの値（0～4294967295の値）です。4294967295を超えると0に戻ります。 ▪「ms」を使用する ms単位で時刻を取得したい場合に選択します。値は0～999でログされます。 通常の秒単位の時刻フィールドとmsのフィールド（計２つのフィールド）を組み合わせて使用すると、トレンドグラフにms単位で表示できます。 ▪秒インデックスを保存する 同一秒内で記録されたデータにインデックスを付加する機能です。
定数フィールド | 指定した値や空文字を保存したいとき、定数フィールドを選択します。 ▪NULLを書き込む 何も書き込みません。 ▪指定値を書き込む 指定された文字を書き込みます。
イベントフィールド | 発生したイベントの情報を保存したいときイベントフィールドを選択します。 ▪フィールドタイプ
イベント名 | イベント名。　例）E01
タグ名 | タグ名。　例）U01.F01.T01
タグコメント | タグコメント。タグのプロパティ「基本設定」タブで設定します。
メッセージ | メッセージ。イベントのプロパティ「イベント属性」タブで設定します。
値 | タグイベントの場合イベントが発生した時のタグ値。
値（数値型のみ保存） | タグイベントの場合イベントが発生した時のタグ値。数値型のタグのみ保存します。
値（文字型のみ保存） | タグイベントの場合イベントが発生した時のタグ値。文字列型のタグのみ保存します。
値品質 | タグイベントの場合イベントが発生した時のタグの値の品質。通常は「GOOD」です。PLCと通信ができないと「BAD」になります。まだ１度も通信が行われていない状態だと「UNCERTAIN」になります。データベース（ODBC）での保存では、数値型のDB フィールドに対して保存をする場合、数値（0-BAD 1-GOOD 2-UNCERTAIN）で保存されます。
カテゴリ | メッセージ。イベントのプロパティ「イベント属性」タブで設定します。
条件名 | 条件名。イベントのプロパティ「タグイベント」タブで設定します。
サブ条件名 | サブ条件名。イベントのプロパティ「タグイベント」タブで設定します。
重要度 | 重要度。イベントのプロパティ「イベント属性」タブで設定します。