<< Click to Display Table of Contents >> マニュアル > 監視システム構築ガイド > 主要機能の構築 > アラーム > 画面ライブラリを利用しない独自アラーム画面の作成 > 独自のアラーム履歴画面の作成 |
概要
ここでは、Panel Server側で以下の設定が行われているものとして、「リアルタイムアラーム画面」を独自に作成する手順について説明します。
タグの設定
ユニット名: U01 ・・・仮想デバイス
フォルダ名: F01
タグ: M0000~M0004までの5点の連番のタグ(内部リレー)
アクションの定義
アラームサーバー(CSV)アクション:Alarm
アラームマスタの定義
[ALARMID],[RECOVER],[ACK],[ONCONDITION],[CM0],[CM1]
CM0・・アラームメッセージ
CM1・・グループを表す文字列(軽故障、中故障、重故障など)
(定義例)
アラームID,発生復帰,確認,発生条件,コメント0,コメント1 [ALARMID],[RECOVER],[ACK],[ONCONDITION],[CM0],[CM1] 0,y,y,U01.F01.M0000,M0アラーム,軽故障 1,y,y,U01.F01.M0001, M1アラーム,中故障 2,y,y,U01.F01.M0002, M2アラーム,中故障 3,y,y,U01.F01.M0003, M3アラーム,重故障 4,y,y,U01.F01.M0004, M4アラーム,重故障 |
サンプルのダウンロード
このページで紹介されている作成例には、サンプルが用意されています。
サンプルは以下からダウンロードすることができます。
作業手順
1.Panel Editorからアラーム履歴用のフォームを作成します。
フォームを1つ追加し、名前を「AlarmHist」に変更してください。
2.タイトルラベルを張り付ける
画面のタイトルとして、フォームの左上隅あたりにラベルコントロールを張り付けます。ここでは例として、Textを「アラーム履歴画面」とし、フォントの大きさや色などは任意に設定してください。
3.リモートアラームグリッドコントロールを張り付ける
フォームにリモートアラームグリッドコントロールを張り付けます。コントロールビューからリモートアラームグリッドコントロールを選択します。
以下は、リモートアラームグリッドを張り付けた状態です。
4.リモートアラームグリッドのプロパティ設定
リモートアラームグリッドのプロパティページから、以下のプロパティの設定を変更します。
プロパティ |
設定内容 |
|
Name |
“Alarm” |
|
AlarmServer |
“Alarm” (※Panel Server側に定義されているアラームサーバアクション名) |
|
AlarmClientType |
“HISTORICAL1” |
|
AlarmLayout |
アラーム履歴のレイアウトを記述します。ここでは以下のとおり記述してください。
|
|
AlarmTextColor |
アラームの表示色を指定します。ここでは、白色を表示します。
|
5.リモートアラームグリッドの初期化スクリプト
リモートアラームグリッドのOnInitializeイベントに、アラームサーバとの接続 及び アラーム履歴情報取得を行う処理を記述します。
event OnInitialize() { this.Connect(); this.SubscribeHistorical("", 500, "future", "past"); } |
SubscribeHistoricalメソッドの第二引数には、一覧表示するアラームの最大件数を指定します。ここでは500を指定しているので、最新の500件が表示されます。 第三、第四引数には、範囲指定の開始・終了を日付で指定しますが、この引数に、“future”、“past”と指定すると、全件検索が行われます。従って、この設定の場合では、初期表示の際に最大500件までの最新情報が取得されます。 |
6.検索範囲指定用のエディットボックスと検索ボタンを張り付けます。
以下のイメージを参考に、画面の上部あたりに履歴検索用のエディットボックスとボタンを配置します。
ここで、開始日付入力用のエディットボックスのNameプロパティを「FromDate」、終了日付用のエディットボックスを「ToDate」に設定してください。
検索ボタンは範囲指定用に使用し、最新表示ボタンは履歴の最新情報を表示します。
7.検索処理を実装します。
検索ボタンの処理を実装します。ボタンのスクリプトに、以下の処理を記述します。
event OnMouseUp(button) { parent.Alarm.CancelSubscribe(); parent.Alarm.SubscribeHistorical("", 500, parent.FromDate.Text, parent.ToDate.Text ); } |
この例ではSubscribeHistoricalメソッドに渡す最大件数として500を指定しています。もし、要件的に500件では不足する場合には、この数値の設定値を上げて下さい。または、画面上にエディットボックスを配置し、そこから入力された数値を最大件数として引数に渡すのも一つの方法です。 |
8.最新表示ボタンの処理を実装します。
ボタンのスクリプトに、以下の処理を記述します。
event OnMouseUp(button) { parent.FromDate.Text = ""; parent.ToDate.Text = ""; parent.Alarm.CancelSubscribe(); parent.Alarm.SubscribeHistorical("", 500, "future", "past"); } |
この処理により、最新500件のアラームログを再表示します。また、FromDateとToDateのTextの初期化も行います。
9.画面切り替えボタン
ここで、画面の下部あたりに、「独自のアラームサマリ画面の作成」及び「独自のリアルタイムアラーム画面の作成」で作成した各画面に表示を切り替えるためのボタンを実装してください。ここでは例として、部品ライブラリの画面表示呼び出しボタンを使用します。
以上でアラーム履歴画面の作成は完了です。
動作確認
それでは、動作を確認してみましょう。
Panel Serverの画面上部にあるオンライン(黄矢印)をクリックしてください。
続いて、Panel Editorの画面上部にあるブラウザ実行アイコン(緑矢印)をクリックし、Panel Browserを呼び出します。
Panel Browserが起動しました。
From、Toそれぞれのエディットボックスに、検索の範囲としたい開始と終了の日時を入力し、検索ボタンをクリックしてください。
すると、アラーム履歴の表示が指定した範囲のデータで更新されます。
続いて、最新表示ボタンをクリックしてください。すると、日付検索の条件がクリアされ、一覧が最新のアラーム履歴で更新されます。
日付に指定できる書式は年月日時分秒まで入力可能です。ここで、“2017/1/1”のように年月日のみを入力した場合、内部的には“2017/1/1 00:00:00”として扱われます。従って、2017/1/1の履歴のみを表示したい場合には、Fromに“2017/1/1”、Toに“2017/1/2”と入力します。 |
補足説明
■リモートアラームグリッドの履歴表示様式
リモートアラームグリッドの表示様式は、AlarmClientTypeプロパティで指定します。履歴表示を行う場合、 “HISTORICAL1”、“HISTORICAL2”、“HISTORICAL3”の3種類の中からいずれかの様式を指定することができます。
プロパティ値 |
仕様 |
HISTORICAL1 |
本頁で使用した様式です。 この様式は、アラームに対する発生・復帰・確認を、それぞれ別のレコードとして表示します。
|
HISTORICAL2 |
HISTORICAL1との違いは、1つのアラームに対する発生・復帰・確認を、1つのレコードとして表示する点です。つまり、1行に発生日付、復帰日付、確認日付を並べて表示することができます。この様式では、1つのアラームが繰り返し発生したときには以下のような動作順序となります。 1新規にアラームが発生した 2確認無しの状態で復帰した 3確認無しの状態でもう一度アラームが発生した 4確認が行われた
※両方のアラームの確認日付には、④の日時がセットされる。
|
HISTORICAL3 |
HISTORICAL2と同様に、1つのアラームに対する発生・復帰・確認を、1つのレコードとして表示します。HISTORICAL2との違いは、確認の表示の仕方が少し異なる点です。 1新規にアラームが発生した 2確認無しの状態で復帰した 3確認無しの状態でもう一度アラームが発生した 4確認が行われた
※古い方のアラームの確認日付には、“---”がセットされる。
|
■アラームのフィルタ機能
アラームサマリ、リアルタイム、履歴ともに、リモートアラームグリッドに表示するアラーム情報にはフィルタ(検索条件)を指定することができます。フィルタ条件は、SubscribeSummary()、SubscribeRealtime()、SubscribeHistorical()の各メソッドの第一引数に文字列で指定します。この引数に何も指定しないと(つまり「""」を指定すると)、フィルタ条件無しとして扱われます。フィルタ条件には、アラームフィールドに対する比較式で表現します。
例えば、コメント1が"軽故障"のアラームのみを表示したい場合には、以下のように指定します。
(フィルタを指定した例)
var filler;
filter = "[CM1]==" + ::Chr(34) + "軽故障"+ ::Chr(34); this.Connect(); this.SubscribeSummary(filter);
|
ここで、rootメソッドの「Chr(34)」は、ダブルクォーテーションを返してくれます。「軽故障」という文字列を表すには引用符「""」で囲む必要がありますが、例えば以下のような記述ではスクリプトエラーとなるため注意が必要です。
(エラーの例)
filter= "[CM1]=="軽故障""; //ダブルクォーテーションはそのまま記述できない |