ログデータをDBに書き出す(ロガーODBC)

<< 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

 

 

hint

対応可能なデータベースの種類、バージョンなどの最新情報については、弊社ホームページのFAQ「対応しているデータベース製品は何ですか?」にも掲載されています。

 

 

設定手順

■データベースの準備

 

本サンプルを動作させるには、ロギングを行うためのテーブルをデータベース側に用意する必要があります。

 

まず、データベースを1つ用意してください。データベースの名称は自由に付与することができます。

 

以下は、SQLServer Management Studioのオブジェクトエクスプローラーで表示した例です。以下の例では「LOGGERDB」という名称のデータベースが作成されている状態です。

 

p_logger_0026

 

尚、ロガー(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で表示した例です。

 

p_logger_0027

 

 

hint

本サンプルには、SQLServer以外のDBMS用のテーブル作成DDL(logtable.sql)が含まれています。実際に使用するDBMSでテーブル定義を行う際の参考としてください。

 

hint

データベース側のテーブルで定義するフィールドのデータ型の名称(例えば「INT」「INTEGER」「NUMBER」「FLOAT」「DOUBLE」など)は、DBMSの種類により差があります。アラームサーバー(ODBC)のようにあらかじめテーブルを手動で作成しておく必要のあるアクションでは、接続するDBMS側で適切なテーブル定義を行う必要があります。接続可能なDBMS毎の推奨データ型については、Appendixの「データベースとの接続設定」を参照してください。

 

hint

PLC等との通信でエラーが発生した際にデータベースのレコードにNULLを保存したい場合は、タグフィールドの値を保存するためのデータベース側のフィールドの設定でNULLの書き込みを許可するようにしてください。

 

attention

PostgreSQLを使用したデータベースに接続する場合、データベース側に用意するテーブルでは、テーブル名、フィールド名ともに全て小文字で定義する必要があります。

 

 

■タグの設定

 

1.データ収集のためのタグを登録する。

 

ここでは例として、仮想デバイスのSDタグとしてU01.F01.SD0008からU01.F01.SD0015までの8点のタグが登録されているものとします。

 

p_logger_0024

 

ユニット:仮想デバイス「U01」

フォルダ:「F01」を作成

タグ:「SD0008」~「SD0015」を登録

 

 

■アクションの設定

 

1.ロガー(ODBC)アクションを追加する

 

FA-Serverの左ツリーからActionを右クリックしてメニューを表示し、「追加」「アクション」を選択してください。

 

p_logger_0002

 

アクションの追加ダイアログが表示されるので、「ロガー(ODBC)」を選択してOKボタンをクリックします。

 

p_logger_0025

 

Actionの下に、「A01」としてロガー(ODBC)アクションが新たに追加されました。この名称は変更することも可能ですが、今回の例ではこのまま使用します。

 

p_logger_0004

 

 

2.ロガー(ODBC)アクションの設定

 

ロガー(ODBC)アクション「A01」のプロパティを設定します。

 

p_logger_0028

 

左記は「ODBC設定」タブです。

 

データベースの選択から、接続するDBMSを選択してください。今回の例では「SQLServer」を選択します。

 

データソースには、あらかじめ用意しておいたデータベース「LOGGERDB」に接続するためのODBCデータソースを設定してください。尚、データソースの設定手順は、各DBMSとも共通的な操作により行うことができます。ODBC設定については、アクションの共通設定の「ODBC設定」の記述を参照してください。

 

テーブル名には、ロギングを行うテーブルを指定します。ここでは「LOGTABLE」としています。

 

 

 

 

attention

PostgreSQLを使用したデータベースに接続する場合、データベース側に用意するテーブルでは、テーブル名、フィールド名ともに全て小文字で定義する必要があります。従って、以下で指定するテーブル名は小文字で指定するようにしてください。

 

(PostgreSQLの例)

p_logger_0029

 

 

 

p_logger_0030

 

 

ログ詳細タブでは、古いログデータの自動削除のための設定や、エラー時の処理、PCの時計が戻った場合の処理などの詳細な設定を行うことができます。

 

ここではデフォルト設定のまま、「OK」ボタンをクリックして設定を保存してください。

 

 

 

 

 

 

3.ロガー(ODBC)のフィールドを定義する

 

続いて、ロガー(ODBC)アクションに対して、フィールドの定義を行います。尚、ここで追加する各フィールドの名称は、先に準備したデータベース上のテーブルのフィールド名と完全に一致させてください。

 

左ツリーから「A01」を右クリックし、「追加」「時刻フィールド」を選択してください。

 

p_logger_0008

 

A01に「F01」というフィールドが追加されました。

 

p_logger_0009

 

 

続いて、タグの値を保存するためのフィールドを定義します。

 

タグフィールドを定義する方法はいくつか用意されていますが、対象のタグをドラッグ&ドロップする事により簡単にフィールドの登録を行うことができます。

 

まず、「A01」アクションが表示されている状態で、タグのU01ユニットのF01フォルダを選択し、マルチビューにタグが表示された状態にします。

そして、ロギングを行いたいタグを複数選択し、「A01」にドラッグ&ドロップしてください。

 

p_logger_0011

 

すると、タグフィールド連続追加ダイアログが表示されます。

 

p_logger_0031

 

今回の例ではデフォルト設定のまま、「次へ」をクリックします。

 

 

p_logger_0033

 

 

ここでは、フィールド名の作成方法として以下を指定します。

 

「連番で作成する」を選択。

ヘッダに「SD」を指定。

連番時設定の開始番号に「8」、桁数に「4」を指定

 

上記の条件を設定し、「完了」ボタンをクリックしてください。

 

 

 

 

attention

PostgreSQLを使用したデータベースに接続する場合、データベース側に用意するテーブルでは、テーブル名、フィールド名ともに全て小文字で定義する必要があります。従って、アクションに定義する各フィールド名についても小文字で指定するようにしてください。

 

例)

f01

sd0008

sd0009

sd0010

sd0011

sd0012

sd0013

sd0014

sd0015

 

 

 

A01アクションの内容をマルチビューで表示すると、以下のようなフィールドが登録されていることを確認できます。

 

p_logger_0034

 

上記により、生成されるログデータのCSVファイルのフォーマットは、1列目に日時、2列目以降にSD0008からSD0015までのタグの値が格納される動作となります。

 

 

4.定周期イベントを定義する

 

続いて、上記で追加したロガーアクションを呼び出す定周期イベントを追加します。このイベントからの呼び出し周期が、ログデータのロギング周期となります。

 

FA-Serverの左ツリーからイベントを右クリックし、「追加」「定周期イベント」を選択してください。

 

p_logger_0015

 

すると、E01という定周期イベントが追加されました。この名称は変更することもできますが、今回の例ではこのまま使用します。

 

p_logger_0016

 

E01のプロパティを開き、設定を行います。

 

p_logger_0017

 

定周期イベントのタブでは、イベントを発生させる周期を設定することができます。

 

ここではデフォルト設定の1秒周期のままとしておきます。

 

 

p_logger_0018

 

 

実行アクションのタブを開き、アクション名のコンボボックスから「A01」を選択し、「追加」ボタンをクリックしてください。

 

下部のリストにA01が表示された事を確認し、「OK」ボタンで閉じてください。

 

 

 

動作確認

それでは、動作を確認してみましょう。

 

FA-Serverの画面上部にあるオンライン(黄矢印)をクリックしてください。

 

p_logger_0019

 

FA-Serverの左ツリーからActionを選択すると、マルチビューに「A01」が表示されます。完了と要求の件数がカウントアップしていることを確認します。

 

p_logger_0020

 

 

SDタグの内容がデータベースにロギングされていることを確認してください。以下は、SQLServer Management StudioでLOGTABLEの内容を表示した例です。

 

p_logger_0035