概要
本頁では、ODBCデータベースへのロギングについて解説します。
構築例として、Microsoft SQL Server2008のデータベースへのロギングを行います。
考え方:
•ODBCデータベースへのロギングを行う場合「サマリアクション(ODBC)」を使用します。
•データベース側のテーブルは自動的に生成されます。
尚、ここでの説明では、ロギングを行うサマリアクションを「A01」、サマリアクションを定期的に呼び出すイベントを「E01」として記述します。
また、以降の説明を簡潔にする意味で、ロギング対象とするタグは仮想デバイスを使用し、ロギング対象を設定するタグフィールドマスタは必要最低限の設定のみとします。
設定例
データベースの設定
ここでは、Microsoft SQL Server Management Studioを使用した例を紹介します。
オブジェクトエクスプローラーから「データベース」を右クリックし、「新しいデータベース」を選択し「TESTDB」というデータベースを作成します(※実際のデータベースの名前は実運用にあわせて作成してください)。
SQL Server側の準備は以上で完了です(※サマリアクションは実行時に必要なテーブルやフィールドを自動作成します)。
タグ設定
ロギング対象のタグとして、ここではPLCデバイスのかわりに仮想デバイスを使用します(実際にロギングするタグは実運用にあわせて定義してください)。
仮想デバイスユニットとして「U01」を作成し、その配下に、「U01.F01.SD0000」から「U01.F01.SD0999」の、連続した1000点のタグを作成します。
アクション設定
■サマリアクションのマスタ登録
サマリアクション(ODBC)として「A01」を追加し、タグフィールドマスターファイルにタグ(「SD0000」~「SD0999」)及びフィールド名(「T000」~「T999」)を登録します。尚、サマリアクションを開始すると、ここで指定したフィールド名がデータベース上のテーブルのフィールド名となります(※データベース側のテーブルおよびフィールドは自動的に生成されます)。
タグフィールドマスタに関する詳細は「タグフィールドマスタ」を参照してください。
(Excelでのタグフィールドマスタの編集例)
また、サマリマスタファイルに以下の記述を行ってください。
(サマリマスタの定義例)
[COMMON] DaysOfHoldingData=365 OdbcDatabaseType=SQLSERVER
[TEST] TagFieldMaster=summary_fieldmaster_tag.csv TagFieldIndex=DB\summary_index_tag.txt OdbcTable=TESTTABLE OdbcMaxFields=250
|
サマリマスタに関する詳細は「サマリマスタ」を参照してください。
フィールド名やテーブル名にSQLの予約語(「DATE」など)を使用することはできません。上定義の「OdbcDateTimeFieldName」に設定するフィールド名についても、SQLの予約語に該当しない名称を指定してください。 |
■サマリアクションのODBC設定
先ほど作成したデータベースに接続するための「ODBC設定」を行います。
以下の画面設定例を参考にしてください。
1) |
2) |
3) |
4) |
5) |
6) |
※上画像は一例です。 |
|
7) |
8) |
※ここでは「SUMMARYSAMPLE」と指定しています。 |
|
9) |
10) |
※「TESTDB」を選択します。 |
|
11) |
12) |
※必要に応じてデータベースへログインするためのユーザーとパスワードを指定します。 |
設定が完了し、データソースが選択されました。 |
イベント設定
サマリアクション「A01」を呼び出すための定周期イベント「E01」を作成してください。
ここでは、周期を10秒とし、実行アクションに「A01」を指定します
解説
サマリアクションを実行すると以下のテーブルやフィールド名が自動的に作成された後、ロギングが開始されます。既にテーブルやフィールドが作成されている場合は即座にロギングが開始されます。
テーブル名 |
フィールド |
TESTTABLE1 |
T000~T249 |
TESTTABLE2 |
T250~T499 |
TESTTABLE3 |
T500~T749 |
TESTTABLE4 |
T750~T999 |
サマリマスタで指定した最大フィールド数(OdbcMaxFields=250)に従い、自動的にテーブルが分割されて生成されます。分割の際には、「OdbcTable=TESTTABLE」で指定したテーブル名の後に連番が自動的に付加されます。自動分割を行わない場合は「OdbcMaxFields=250」の行を削除して下さい(その場合、全てのデータが1つのテーブルに格納され、テーブル名に連番は付加されません)。