DBを利用したアラームでアラームのフィールドを追加する

<< Click to Display Table of Contents >>

マニュアル > 監視システム構築ガイド > 主要機能の構築 > アラーム > アラームのカスタマイズ > DBを利用したアラーム構築 >

DBを利用したアラームでアラームのフィールドを追加する

概要

アラームサーバーには、アラームメッセージに任意のタグの値を含めて保存する機能が用意されています。

 

ここでは、アラームサーバー(ODBC)を使用して、数値型(整数、浮動小数点)、文字型、ビット型などの、様々なデータ型のタグ値をアラームメッセージに含めてデータベース上に保存する方法について説明します。

 

尚、ここでは例として、SQLServer2017を用いたサンプルをもとに説明します。

 

 

 

 

サンプルのダウンロード

このページで紹介されている作成例には、サンプルが用意されています。

 

サンプルは以下からダウンロードすることができます。

 

尚、上記のサンプルには、各DBMS用のテーブル作成DDL(alarm.sql)が含まれています。サンプルDDLは以下のフォルダに格納されています。

 

(プロジェクトフォルダ)\DDL_sample

\myslq\alarm.sql

\oracle\alarm.sql

\postgresql\alarm.sql

\sqlserver\alarm.sql

 

 

サンプルの説明

■タグの設定

 

サンプルのサーバ設定ファイルには、以下のタグが登録された状態となっています。

 

p_alarm_0287

 

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

 

フォルダ:F01からF06までの6つのフォルダを登録

 

タグ:以下のタグを登録

 

タグ名

デバイス

タイプ

サイズ

内容

U01.F01.M0000~M0007

内部リレー

ビット

1ビット

アラーム発生条件として使用。

U01.F02.T00~T07

データレジスタ

アスキー

10ワード

タグコメントのテスト用として(アスキー20文字)。

U01.F03.T00~T07

データレジスタ

整数バイナリ

1ワード

タグコメントのテスト用として(16ビット整数)。

U01.F04.T00~T07

データレジスタ

倍精度浮動小数点

4ワード

タグコメントのテスト用として(64ビット浮動小数)。

U01.F05.T00~T07

内部リレー

ビット

1ビット

タグコメントのテスト用として(ブール(※タグがビットの場合))。

U01.F06.T00~T07

データレジスタ

整数バイナリ

1ワード

タグコメントのテスト用として(ブール(※タグが数値の場合))。

 

尚、サンプルのPanel Serverの設定では、本サンプルの動作確認を簡単に行えるように、画面下部に「Monitor01」としてタグモニタビューが設定されています。

 

(テスト用タグモニタ)

p_alarm_0295

 

 

■アラームマスタの設定

 

サンプルのアラームマスタファイルには、以下の内容が登録されています。

 

p_alarm_0288

 

U01.F01.M0000からM0007までのタグがアラームの発生条件です。タグコメントとしてCM3:TAGからCM7:TAGを定義し、文字列、整数、浮動小数、ブール(ビットタグ)、ブール(数値タグ)の5種類のデータ型のタグを参照するように設定されしています。

 

 

■アラームデータ用のデータベースの準備

 

本サンプルを動作させるには、アラームデータを格納するためのテーブルをデータベース側に用意する必要があります。

 

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

 

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

 

p_alarm_0285

 

尚、アラームサーバー(ODBC)アクションは、必ずしもアラームデータ用に専用のデータベースを用意する必要はありません。接続先のデータベースは、アラームデータを格納するテーブル以外の他のテーブルが混在する環境であっても特に問題はありません。

 

 

■データベースにアラームデータ用のテーブルを用意する

 

データベースを作成したら、アラームデータを格納するためのテーブルを登録してください。

テーブル名は自由に付与することができますが、今回は例として「ALARM」という名称のテーブルが作成されているものとします。

 

ALARMテーブルには以下のフィールドを作成してください。尚、サンプルに含まれているテーブル作成DDL(alarm.sql)を使用してテーブルを作成することもできます(※以下はSQLServerの例です)。

 

フィールド名

データ型

キー設定

NULL許容

補足

ALARMDATE

datetime

PRIMARY KEY

しない

アラームのレコードが生成された日時です。

SECINDEX

int

PRIMARY KEY

しない

SECINDEXフィールドには、アラームが同一時刻で発生した場合に、同一時刻内にて0からはじまるインデックス番号が割り当てられます。データベースを使用する場合、本フィールドを定義するようにしてください。

ALARMID

varchar(255)

(なし)

しない

アラームIDです。

ALARMTYPE

varchar(7)

(なし)

する

アラームのタイプを表す文字列が格納されます。

ALARMACK

tinyiny

(なし)

する

アラームの確認状況のステータスが格納されます。

ALARMRECOVER

tinyiny

(なし)

する

アラームの復帰状況のステータスが格納されます。

ALARMCONDID

smallint

(なし)

する

アラームの発生復帰状態を表す数値が格納されます。

ALARMSTATE

tinyiny

(なし)

する

アラームの[STATE]フィールドのステータスを保存します。ステータスは以下の0~3の数値です。

0 : 復帰、確認済

1 : 発生、確認済

2 : 復帰、未確認

3 : 発生、未確認

 

ALARMCM3

varchar(255)

(なし)

する

アラームのタグコメント[CM3:TAG]を保存するための、文字型のフィールドを用意します。

このフィールドにはタグコメント3で指定された文字列タグのアスキー文字が格納されます。

ALARMCM4

int

(なし)

する

アラームのタグコメント[CM4:TAG]を保存するための、数値型のフィールドを用意します。

このフィールドにはタグコメント4で指定された数値タグの数値が格納されます。

ALARMCM5

float

(なし)

する

アラームのタグコメント[CM5:TAG]を保存するための、数値型のフィールドを用意します(浮動小数点)。

このフィールドにはタグコメント5で指定された数値タグの浮動小数点の数値が格納されます。

ALARMCM6

varchar(5)

(なし)

する

アラームのタグコメント[CM6:TAG]を保存するための、文字型のフィールドを用意します。

このフィールドには、タグコメント6で指定されたビットタグのブール値として「TRUE」または「FALSE」という文字列が格納される事を想定し、最大5文字の文字型としています。

ALARMCM7

tinyiny

(なし)

する

アラームのタグコメント[CM7:TAG]を保存するための、数値型のフィールドを用意します。

このフィールドには、タグコメント7で指定された数値タグでブールを表す場合の「0」または「1」の値が格納されます。

 

 

以下は、SQLServerで表示した例です。

 

p_alarm_0286

 

 

hint

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

 

hint

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

 

attention

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

 

 

■アラームサーバー(ODBC)アクションの設定

 

Panel Serverに登録されているアラームサーバー(ODBC)アクションは以下のように設定されています。

各設定とも、標準プロジェクトに登録されているアラームサーバーCSVアクションと同等の設定内容となっています。

 

p_alarm_0289

 

左記は基本設定タブです。

 

アクション名は「Alarm」としています。

 

アラームフォルダには以下が設定されています。

 

server_data\alarm

 

 

アラームのメンテナンスを行うにチェックを入れ、日数を指定します。

 

ここでは例として、3650日、10000レコードと設定しています(※保存日数等の設定については、実際の環境にあわせて適切な値を設定してください)。

 

 

 

 

 

p_alarm_0290

 

 

左記はODBC設定タブです。

 

データベースの選択から、接続するDBMSを選択してください。本サンプルでは「SQLServer」が選択されています。

もし、SQLServer以外のDBMSと接続したい場合は、目的のDBMSを選択してください。

 

データソースの設定は、実際にサンプルを動作させる環境にあわせて再度設定してください。尚、データソースの設定手順は、各DBMSとも共通的な操作により行うことができます。ODBC設定については、アクションの共通設定の「ODBC設定」の記述を参照してください。

 

テーブル名には、アラームで使用するテーブルを指定します。ここでは「ALARM」としています。

 

 

 

 

attention

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

 

(PostgreSQLの例)

p_alarm_0273

 

 

 

p_alarm_0291

 

左記はアラームマスタタブです。

 

マスターファイルには以下が設定されています。

 

server\alarm\master.csv

 

 

 

 

 

 

p_alarm_0292

 

左記は保存項目タブです。

 

本サンプルでは、以下の項目が追加されています。

 

DB Field

Alarm

補足

SECINDEX

[SECINDEX]

SECINDEXフィールドには、同一秒に発生したアラームに0から始まる連番が自動的に付与されて格納されます。

ALARMSTATE

[STATE]

アラームののステータスを保存します。ステータスは以下の0~3の数値です。

ALARMCM3

[CM3:TAG]

タグコメント3を保存します。

ALARMCM4

[CM4:TAG]

タグコメント4を保存します。

ALARMCM5

[CM5:TAG]

タグコメント5を保存します。

ALARMCM6

[CM6:TAG]

タグコメント6を保存します。

ALARMCM7

[CM7:TAG]

タグコメント7を保存します。

 

データベース上のテーブルに作成するフィールド名は、本設定の定義と一致している必要があります。具体的には、「DB Field」の列に表示されている名称とテーブルのフィールド名を一致させる必要があります。尚、データベース上のフィールド定義と左記の定義内容の並び順については、特に一致している必要はありません。

 

 

attention

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

 

(PostgreSQLと接続する場合の保存項目の設定例)

p_alarm_0293

 

尚、保存項目の設定では、デフォルトで表示されているフィールド名(グレーの部分)は、ダブルクリックする事で編集可能な状態になります。

 

p_alarm_0294

 

 

 

■アラームサマリ、アラーム履歴画面のレイアウト設定

 

本サンプルのアラームサマリおよびアラーム履歴画面では、アラームの動作を確認しやすいように、AlarmLayoutプロパティに以下のようなレイアウトが設定されています。アラームレイアウトのフィールド名の詳細を知りたい場合は、「フィールド名について」を参照してください。

 

尚、各画面の右側の表示が見切れて表示される場合は、グリッド表示のスクロールバーを左右にずらす事で表示することができます。

 

(アラームサマリ画面)

p_alarm_0296

 

AlarmLayoutプロパティ(アラームサマリ画面)

[ALARMID]

ALARMID, 80, center

 

[ACK]

ACK, 50, center

 

[RECOVER]

RECOVER, 50, center

 

[TYPE]

TYPE, 50, center,T

 

[STATE]

STATE, 50, center,T

 

[DATE]

DATE, 200, center,T

 

[DATESTR]

DATESTR, 150, center,T

 

[ARDATESTR]

ARDATESTR, 150, center

 

[OCCURDATESTR]

OCCURDATESTR, 150, center

 

[ACKDATESTR]

ACKDATESTR, 150, center

 

[RECOVERDATESTR]

RECOVERDATESTR, 150, center

 

[CM0]

CM0, 100, center

 

[CM1]

CM1, 100, center

 

[CM2]

CM2, 100, center

 

[CM3]

CM3, 100, center

 

[CM4]

CM4, 100, center

 

[CM5]

CM5, 100, center

 

[CM6]

CM6, 100, center

 

[CM7]

CM7, 100, center

 

 

 

(アラーム履歴)

p_alarm_0297

 

AlarmLayoutプロパティ(アラームサマリ画面)

[ALARMID]

ALARMID, 80, center

 

[ACK]

ACK, 50, center

 

[RECOVER]

RECOVER, 50, center

 

[TYPE]

TYPE, 50, center

 

[STATE]

STATE, 50, center

 

[DATE]

DATE, 160, center

 

[DATESTR]

DATESTR, 200, center

 

[ARDATESTR]

ARDATESTR, 150, center

 

[OCCURDATESTR]

OCCURDATESTR, 150, center

 

[ACKDATESTR]

ACKDATESTR, 150, center

 

[RECOVERDATESTR]

RECOVERDATESTR, 150, center

 

[CM0]

CM0, 100, center

 

[CM1]

CM1, 100, center

 

[CM2]

CM2, 100, center

 

[CM3]

CM3, 100, center

 

[CM4]

CM4, 100, center

 

[CM5]

CM5, 100, center

 

[CM6]

CM6, 100, center

 

[CM7]

CM7, 100, center

 

 

 

 

動作確認

アラームデータを格納するためのデータベースの準備および、ODBC設定が完了した状態で、Panel Serverの画面上部にあるオンライン(黄矢印)をクリックしてください。

 

続いて、Panel Editorの画面上部にあるブラウザ実行アイコン(緑矢印)をクリックし、Panel Browserを呼び出します。

Panel Browserが起動しました。

 

p_alarm_0298

 

本サンプルのアラームマスタには、以下のようなアラームが設定されています。

 

p_alarm_0288

 

また、Panel Serverの画面の下部には、あらかじめ以下のようなタグモニタ(Monitor01)が登録されています。

 

p_alarm_0299

 

 

上記を踏まえ、タグモニタからタグの値を操作し、アラームを発生させてみましょう。

 

まず、タグモニタから以下のタグの値を変更します(これらのタグはタグコメントとして保存されるタグです)。

 

p_alarm_0300

 

U01.F02.T00 ・・・ABC ※文字を入力する

U01.F03.T00 ・・・123

U01.F04.T00 ・・・150.25

U01.F05.T00 ・・・TRUE

U01.F06.T00 ・・・1

 

続いて、タグモニタから、アラーム発生条件のタグをTRUEに変更します。

 

p_alarm_0301

 

U01.F01.M0000 ・・・TRUE

 

 

すると、アラームが発生し、アラームサマリに以下のようなアラームが表示されます。

 

p_alarm_0302

 

 

アラームサマリ画面のアラームグリッドの右側に、上記で編集した各タグの値がタグコメントとして表示されることを確認してください。尚、表示が見切れている場合はグリッドをスクロールさせてみてください。

 

p_alarm_0303

 

また、データベース側に以下のようなアラームデータ(発生)が保存されていることを確認してください。特に、データベース上のタグコメントのフィールドに、上記で設定したタグの値が格納されている事を確認してください。

 

p_alarm_0305

 

 

続いて、タグモニタから以下のタグの値を変更してください(先ほどの値と異なる値となるようにしてください)。

 

p_alarm_0304

 

変更例:

U01.F02.T00 ・・・DEF

U01.F03.T00 ・・・456

U01.F04.T00 ・・・165.43

U01.F05.T00 ・・・FALSE

U01.F06.T00 ・・・0

 

上記の変更後、タグモニタからアラーム発生条件のタグをFALSEに戻します。

 

p_alarm_0307

 

U01.F01.M0000 ・・・FALSE

 

アラームサマリのM0000のアラームが復帰し、確認待ちの状態になりました。

 

p_alarm_0308

 

また、データベース側に以下のようなアラームデータ(復帰)が保存されていることを確認してください。データベース上のタグコメントのフィールドには、上記で変更したタグの値が格納されています。

 

p_alarm_0309

 

 

続いて、アラームサマリ画面から「一括確認」ボタンをクリックしてください。

 

p_alarm_0311

 

すると、アラームサマリから確認済のアラームが消去されます。

 

データベース側には以下のようなアラームデータ(確認操作)が保存されていることを確認してください。

 

p_alarm_0314

 

アラーム履歴画面を表示すると、以下のような履歴データが表示されます。

 

p_alarm_0312

 

タグコメント部分を見ると、以下のように表示されます。データベース側に保存されている値と一致している事を確認してください。

 

p_alarm_0313