# 代表アラームをモニタリングする

マニュアル > カスタマイズガイド > アラーム > # 代表アラームをモニタリングする |

概要

FA-Panelのアラーム機能には、アラームの発生状況をモニタする機能が用意されています。発生状況のモニタリング条件は自由に設定することが可能となっており、全体で１件でも発生しているとき以外にも、ある特定のグループ毎に（警報レベルなど）警報が発生中か否かなどを信号として生成することができます。

そして、アラームの発生状況は、任意のタグにリンクさせることができます。これらのタグを画面上の部品にバインドすることで、代表警報のランプ表示などを行うことができるようになります。このタグのことを、ここでは「代表アラームタグ」と呼びます。また、代表アラームの状況はタグへのリンクのみではなく、イベントとして受け取ることもできます。

代表アラームをモニタリングすることにより、以下のような要件を実現することができます。

•未確認のアラームや未復帰のアラームが存在するときランプを点滅させる（代表アラームタグを介して）。

•グループ毎に未確認のアラームが存在するとき、グループ毎にランプを点滅させる（同上）。

•警報レベルが2以上の未確認のアラームが発生したとき、スクリプトで個別の処理を実行する（代表アラームをイベントで受け取る）。

：　：　：

代表アラームをモニタリングする方法としては下記の2つの方法があります。

１）クライアント側での代表アラームのモニタリング

２）サーバー側での代表アラームのモニタリング

どちらの方法でも同等の要件を実現することができますが、状況により最適な方法を選択してください。尚、代表アラームタグを作成する場合、どうしてもクライアント側で処理を行う必要があるような特別な要件でなければ、通常はサーバー側で代表アラームタグを作成します。

•サーバー側で代表アラームの状況を把握したい場合（代表アラームが発生したときにサーバー側でスクリプトを実行したいなど）はサーバー側で代表アラームタグを作成してください。

•クライアント側で独自の処理を行いたい場合は、クライアント側でアラームタグを作成します。

•複数のクライアントが存在する場合に、サーバ側のタグに代表アラームをリンクしたい場合（※各クライアントからサーバ上の同じタグに代表アラーム状況を書き込ませる事は避ける）。

クライアント側での代表アラームのモニタリング

この方法は、リモートアラームグリッドコントロールのAlarmStateMonitorプロパティを利用します。

当プロパティの設定によって、代表アラームの状況を特定の$M0などの内部タグにリンクさせたり、OnAlarmStateChangedイベントを発生させてアラームの状態変化に応じた処理を行ったりすることが可能になります。

リンクさせるタグは内部タグ（$M0など）以外にも、サーバー側で定義されたタグ（U01.F01.T01など）を設定することもできますが、アラームの発生頻度が高い場合などはタグへの書き込みのための処理負荷が重くなる懸念があります。よって、そのような場合は、「サーバー側での代表アラームのモニタリング」での構築を検討してください。又は、AlarmStateMonitorから直接サーバのタグを指定するのではなく、一旦内部タグ（$M0など）に受けてから、サーバ上のタグへの書き込み処理をTimerイベントなどである程度まとめて行う等の手法を考慮してください。

AlarmStateMonitorプロパティは下記の書式で設定します。改行して複数の設定を行うこともできます。

[タグ名] , [状態名] , [監視対象アラーム（notack or notrecover or notack_or_notrecover）], [グループ条件] [タグ名] , [状態名] , [監視対象アラーム（notack or notrecover or notack_or_notrecover）], [グループ条件] ：　：　：

項目 | 解説
[タグ名] | ここでタグを指定すると、設定したアラーム評価の結果がタグにリンクされます。タグの指定は任意です（省略も可能です）。
[状態名] | OnAlarmStateChangedイベントで状態を通知したい場合、状態名を指定します。状態が変化するとOnAlarmStateChangedが発生し、第一引数の「StateName」にここで指定した名前が渡されます。指定は任意です（省略も可能です）。
[監視対象アラーム] | 「notack」「notrecover」もしくは「notack_or_notrecover」を指定します。notackを指定すると、未確認のアラームが１つでも存在する場合に状態がTRUEになり、１つも存在しない場合はFALSEになります。notrecoverを指定すると未復帰のアラームが１つでも存在する場合にTRUEになります。notack_or_notrecoverを指定すると、未確認もしくは未復帰のアラームが１つでも存在する場合にTRUEになります。
[グループ条件] | 監視対象アラームにグループ条件を指定する場合に使用します。たとえば、グループ1のアラームのみを監視する、重要度が５以上のアラームのみを監視する等です。何も指定しないと、すべてのアラームが監視対象となります。使用できるフィールド名については「フィールド名について」を参照して下さい。

例１）

$M0, ,notack, $M1, ,notrecover, $M2, ,notack,[CM2] == 1 $M3, ,notack,[CM2] == 2 $M4, ,notack,[CM2] == 3

上記例では未確認のアラームが1つでも存在するとき、内部タグ$M0がTRUEになります。また、未復帰のアラームが１つでも存在するとき、内部タグ$M1がTRUEになります。$M2～$M4については、グループ条件が定義されています。たとえばCM2がグループ番号を示すコメントだったとき、グループ1の未復帰のアラームが1つでも存在するとき、$M2がTRUEになります。同様に、グループ2の未復帰のアラームが存在するとき、$M3がTRUEになります。これらの内部タグをバインドで用いて、他のコントロールの色を点滅させたりすることができます。

例２）

, ackstate , notack, , recoverstate , notrecover, , group1 , notack , [CM2] == 1 , group2 , notack , [CM2] == 2 , group3 , notack , [CM2] == 3

上記例では未確認のアラームが1つでも存在するとき、「OnAlarmStateChanged("ackstate", TRUE) 」イベントが発生します。逆に未確認のアラームが１つも存在しなくなると「OnAlarmStateChanged("ackstate ", FALSE) 」が発生します。同様に、未復帰のアラームが存在するとき「OnAlarmStateChanged("recoverstate", TRUE) 」、存在しないとき「OnAlarmStateChanged("recoverstate", FALSE) 」が発生します。" group1"から" group3"についても同様です。これらのイベントを利用して、アラームステータスの変化に対する何らかの処理をスクリプトで行うことができます。

尚、上記の例ではタグへのリンクは行いません。

例３）

$M0, ackstate , notack, $M1, recoverstate , notrecover, $M2, group1 , notack , [CM2] == 1 $M3, group2 , notack , [CM2] == 2 $M4, group3 , notack , [CM2] == 3

上記例は、[タグ名]と[状態名]を両方とも指定しています。よって、例1で設定したタグへの反映、例2で設定したイベントの発生の両方とも実行されます。

| リモートアラームグリッドコントロール（又は、リモートアラームクライアントコントロール）のAlarmStateMonitorプロパティを利用する場合は、サマリタイプのアラーム（SubscribeSummaryメソッド）にする必要があります。

| どのフォームを開いていても、未確認や未復帰のアラームが発生したことをオペレータに伝えたい場合は、バックグラウンドフォームにリモートアラームクライアントコントロール貼り付けてAlarmStateMonitorを設定してアラームタグを作成する方法があります。バックグラウンドフォームはルートのHiddenFormプロパティで設定します。 又は、サーバー側で代表アラームタグを作成して、各フォームから参照するような構成としてください。

サーバー側での代表アラームのモニタリング

この方法は、アラームサーバーアクションでアラームステートモニタを利用します。アラームサーバーアクションの「状態監視」タブから、クライアントのアラームステートモニタと同等の設定を行うことができます（※但し、両者では指定可能なフィールド名に違いがある等、仕様の差がありますので、注意してください）。

この設定を行うことによって、アラームの発生状況を任意のタグ（U01.F01.T01など）にリンクさせることができます。尚、リンク先のタグはPLCとの通信対象のタグを指定することも可能ですが、アラームが頻繁に発生した場合などにタグへの書き込み処理（すなわち、PLCへの書き込み）が多発することで処理負荷が高まる懸念があるため、通常はメモリデバイスタグを作成してリンクするようにしてください（※PLCのタグにリンクしたい場合は、代表アラームを一旦メモリデバイスタグで受けて、スクリプトVer2アクションでサーバ側で処理するスクリプトを記述し、OnValueChangedイベントやOnTimerイベントなどからPLCのタグに値を書き込むような手法を推奨します）。

「状態監視」タブは下記の書式で設定します。改行して複数の設定を行うこともできます。

[タグ名] , [状態名] , [監視対象アラーム（notack or notrecover or notack_or_notrecover）], [グループ条件] [タグ名] , [状態名] , [監視対象アラーム（notack or notrecover or notack_or_notrecover）], [グループ条件] ：　：　：

項目 | 解説
[タグ名] | 設定したアラーム評価の結果がタグにリンクされます。
[状態名] | 現在は使用していません。省略も可能です。
[監視対象アラーム] | 「notack」「notrecover」もしくは「notack_or_notrecover」を指定します。notackを指定すると、未確認のアラームが１つでも存在する場合に状態がTRUEになり、１つも存在しない場合はFALSEになります。notrecoverを指定すると未復帰のアラームが１つでも存在する場合にTRUEになります。notack_or_notrecoverを指定すると、未確認もしくは未復帰のアラームが１つでも存在する場合にTRUEになります。
[グループ条件] | 監視対象アラームにグループ条件を指定する場合に使用します。たとえば、グループ1のアラームのみを監視する、重要度が５以上のアラームのみを監視する等です。何も指定しないと、すべてのアラームが監視対象となります。使用できるフィールド名についてAlarmStateMonitorプロパティで指定可能なフィールド名と異なりますので注意して下さい。使用できるフィールド名については「フィールド名について」を参照して下さい。

例１）

U01.F01.T00, ,notack, U01.F01.T01, ,notrecover, U01.F01.T02, ,notack,[CM2] == 1 U01.F01.T03, ,notack,[CM2] == 2 U01.F01.T04, ,notack,[CM2] == 3

上記例では未確認のアラームが1つでも存在するとき、タグU01.F01.T00がTRUEになります。また、未復帰のアラームが１つでも存在するとき、タグU01.F01.T01がTRUEになります。U01.F01.T02～U01.F01.T04については、グループ条件が定義されています。たとえばCM2がグループ番号を示すコメントだったとき、グループ1の未復帰のアラームが1つでも存在するとき、U01.F01.T02がTRUEになります。同様に、グループ2の未復帰のアラームが存在するとき、U01.F01.T03がTRUEになります。