<< Click to Display Table of Contents >> マニュアル > 監視システム構築ガイド > 主要機能の構築 > ロギング/トレンドグラフ > ロガーアクションの利用 > ログデータをDBに書き出す(ロガーODBC) |
概要
ロガーアクションを使用してデータベースにロギングを行う手順について解説します。
尚、ここでは例として、SQLServer2017を用いたサンプルをもとに説明します。
サンプルのダウンロード
このページで紹介されている作成例には、サンプルが用意されています。
サンプルは以下からダウンロードすることができます。
尚、上記のサンプルには、各DBMS用のテーブル作成DDL(logtable.sql)が含まれています。サンプルDDLは以下のフォルダに格納されています。
(サンプルフォルダ)\table_DDL
\myslq\logtable.sql
\oracle\logtable.sql
\postgresql\logtable.sql
\sqlserver\logtable.sql
対応可能なデータベースの種類、バージョンなどの最新情報については、弊社ホームページのFAQ「対応しているデータベース製品は何ですか?」にも掲載されています。 |
設定手順
■データベースの準備
本サンプルを動作させるには、ロギングを行うためのテーブルをデータベース側に用意する必要があります。
まず、データベースを1つ用意してください。データベースの名称は自由に付与することができます。
以下は、SQLServer Management Studioのオブジェクトエクスプローラーで表示した例です。以下の例では「LOGGERDB」という名称のデータベースが作成されている状態です。
尚、ロガー(ODBC)アクションは、必ずしもロギング用に専用のデータベースを用意する必要はありません。接続先のデータベース上に他のテーブルが混在する環境であっても特に問題はありません。
■データベースにロギング用のテーブルを用意する
データベースを作成したら、ロガーアクションがログデータを格納するためのテーブルを登録してください。
テーブル名は自由に付与することができますが、今回は例として「LOGTABLE」という名称のテーブルが作成されているものとします。
続いて、上記のデータベースに、ログデータを格納するためのテーブルを用意してください。テーブル名は自由に付与することができますが、今回は例として、LOGGERDBデータベースに「LOGTABLE」という名称のテーブルが作成されているものとします。
LOGTABLEテーブルには以下のフィールドを作成してください。サンプルに含まれているテーブル作成DDL(logtable.sql)を使用してテーブルを作成することもできます(※以下はSQLServerの例です)。
尚、以下のデータ型は一例です。ロギングするタグの型に応じて適切なデータ型を選択するようにしてください。
フィールド名 |
データ型 |
キー設定 |
NULL許容 |
補足 |
F01 |
datetime |
(なし) |
しない |
レコードが生成された日時です。 |
SD0008 |
int |
(なし) |
する |
数値タグを格納するための数値型のフィールドを用意します。 |
SD0009 |
int |
(なし) |
する |
同上 |
SD0010 |
int |
(なし) |
する |
同上 |
SD0011 |
int |
(なし) |
する |
同上 |
SD0012 |
int |
(なし) |
する |
同上 |
SD0013 |
int |
(なし) |
する |
同上 |
SD0014 |
int |
(なし) |
する |
同上 |
SD0015 |
int |
(なし) |
する |
同上 |
以下は、SQLServerで表示した例です。
本サンプルには、SQLServer以外のDBMS用のテーブル作成DDL(logtable.sql)が含まれています。実際に使用するDBMSでテーブル定義を行う際の参考としてください。 |
データベース側のテーブルで定義するフィールドのデータ型の名称(例えば「INT」「INTEGER」「NUMBER」「FLOAT」「DOUBLE」など)は、DBMSの種類により差があります。アラームサーバー(ODBC)のようにあらかじめテーブルを手動で作成しておく必要のあるアクションでは、接続するDBMS側で適切なテーブル定義を行う必要があります。接続可能なDBMS毎の推奨データ型については、Appendixの「データベースとの接続設定」を参照してください。 |
PLC等との通信でエラーが発生した際にデータベースのレコードにNULLを保存したい場合は、タグフィールドの値を保存するためのデータベース側のフィールドの設定でNULLの書き込みを許可するようにしてください。 |
PostgreSQLを使用したデータベースに接続する場合、データベース側に用意するテーブルでは、テーブル名、フィールド名ともに全て小文字で定義する必要があります。 |
■タグの設定
1.データ収集のためのタグを登録する。
ここでは例として、仮想デバイスのSDタグとしてU01.F01.SD0008からU01.F01.SD0015までの8点のタグが登録されているものとします。
ユニット:仮想デバイス「U01」
フォルダ:「F01」を作成
タグ:「SD0008」~「SD0015」を登録
■アクションの設定
1.ロガー(ODBC)アクションを追加する
Panel Serverの左ツリーからActionを右クリックしてメニューを表示し、「追加」「アクション」を選択してください。
アクションの追加ダイアログが表示されるので、「ロガー(ODBC)」を選択してOKボタンをクリックします。
Actionの下に、「A01」としてロガー(ODBC)アクションが新たに追加されました。この名称は変更することも可能ですが、今回の例ではこのまま使用します。
2.ロガー(ODBC)アクションの設定
ロガー(ODBC)アクション「A01」のプロパティを設定します。
|
左記は「ODBC設定」タブです。
データベースの選択から、接続するDBMSを選択してください。今回の例では「SQLServer」を選択します。
データソースには、あらかじめ用意しておいたデータベース「LOGGERDB」に接続するためのODBCデータソースを設定してください。尚、データソースの設定手順は、各DBMSとも共通的な操作により行うことができます。ODBC設定については、アクションの共通設定の「ODBC設定」の記述を参照してください。
テーブル名には、ロギングを行うテーブルを指定します。ここでは「LOGTABLE」としています。
|
PostgreSQLを使用したデータベースに接続する場合、データベース側に用意するテーブルでは、テーブル名、フィールド名ともに全て小文字で定義する必要があります。従って、以下で指定するテーブル名は小文字で指定するようにしてください。
(PostgreSQLの例)
|
|
ログ詳細タブでは、古いログデータの自動削除のための設定や、エラー時の処理、PCの時計が戻った場合の処理などの詳細な設定を行うことができます。
ここではデフォルト設定のまま、「OK」ボタンをクリックして設定を保存してください。
|
3.ロガー(ODBC)のフィールドを定義する
続いて、ロガー(ODBC)アクションに対して、フィールドの定義を行います。尚、ここで追加する各フィールドの名称は、先に準備したデータベース上のテーブルのフィールド名と完全に一致させてください。
左ツリーから「A01」を右クリックし、「追加」「時刻フィールド」を選択してください。
A01に「F01」というフィールドが追加されました。
続いて、タグの値を保存するためのフィールドを定義します。
タグフィールドを定義する方法はいくつか用意されていますが、対象のタグをドラッグ&ドロップする事により簡単にフィールドの登録を行うことができます。
まず、「A01」アクションが表示されている状態で、タグのU01ユニットのF01フォルダを選択し、マルチビューにタグが表示された状態にします。
そして、ロギングを行いたいタグを複数選択し、「A01」にドラッグ&ドロップしてください。
すると、タグフィールド連続追加ダイアログが表示されます。
今回の例ではデフォルト設定のまま、「次へ」をクリックします。
|
ここでは、フィールド名の作成方法として以下を指定します。
•「連番で作成する」を選択。 •ヘッダに「SD」を指定。 •連番時設定の開始番号に「8」、桁数に「4」を指定
上記の条件を設定し、「完了」ボタンをクリックしてください。
|
PostgreSQLを使用したデータベースに接続する場合、データベース側に用意するテーブルでは、テーブル名、フィールド名ともに全て小文字で定義する必要があります。従って、アクションに定義する各フィールド名についても小文字で指定するようにしてください。
例) f01 sd0008 sd0009 sd0010 sd0011 sd0012 sd0013 sd0014 sd0015
|
A01アクションの内容をマルチビューで表示すると、以下のようなフィールドが登録されていることを確認できます。
上記により、生成されるログデータのCSVファイルのフォーマットは、1列目に日時、2列目以降にSD0008からSD0015までのタグの値が格納される動作となります。
4.定周期イベントを定義する
続いて、上記で追加したロガーアクションを呼び出す定周期イベントを追加します。このイベントからの呼び出し周期が、ログデータのロギング周期となります。
Panel Serverの左ツリーからイベントを右クリックし、「追加」「定周期イベント」を選択してください。
すると、E01という定周期イベントが追加されました。この名称は変更することもできますが、今回の例ではこのまま使用します。
E01のプロパティを開き、設定を行います。
定周期イベントのタブでは、イベントを発生させる周期を設定することができます。
ここではデフォルト設定の1秒周期のままとしておきます。
|
実行アクションのタブを開き、アクション名のコンボボックスから「A01」を選択し、「追加」ボタンをクリックしてください。
下部のリストにA01が表示された事を確認し、「OK」ボタンで閉じてください。
|
動作確認
それでは、動作を確認してみましょう。
Panel Serverの画面上部にあるオンライン(黄矢印)をクリックしてください。
Panel Serverの左ツリーからActionを選択すると、マルチビューに「A01」が表示されます。完了と要求の件数がカウントアップしていることを確認します。
SDタグの内容がデータベースにロギングされていることを確認してください。以下は、SQLServer Management StudioでLOGTABLEの内容を表示した例です。
尚、標準フレームワークを利用して生成された標準プロジェクトにロガーアクションを追加した場合、トレンドグラフのペン設定画面などから表示されるデータソース選択ダイアログから、ロガーアクションのフィールドを選択できるようになります。従って、通常のペン設定と同様の手順でペン登録を行うことで、サマリアクションのログデータと全く同じようにトレンドグラフに表示することができます。
(トレンドグラフのデータソース選択ダイアログ)