APIドキュメント#

個々のイベントエントリをPLCで扱うためのFB_Alarmファンクションブロックと、アラームエントリを集計するFB_AlarmCalculatorファンクションブロックを実装します。

また、FB_AlarmCalculatorでは、アラーム発生、消滅のイベントを監視し、I_EventExporterを実装したファンクションブロックによりさまざまなメディアにイベント通知を送ることができます。

本ライブラリにはTF6420を通じてInfluxDBへエクスポートするファンクションブロックが内包されています。インターフェース仕様に応じて独自のエクスポート機能を実装することも可能です。

クラス図#

API#

FB_Alarm#

FB_TcAlarmを継承した本フレームワーク独自のファンクションブロックです。次の追加プロパティを備えています。

入力変数
bEvt: BOOL

アラーム発生要因を制御します。

module_name :STRING

アラームのモジュール名を設定します。

bConfirm : BOOL

アラームを確認済みを通知するため、一瞬だけTrueにします。

bLatch : BOOL

TrueにするとbEvtがFalseとなってもアラームの発生状態を保持します。Falseの場合はbConfirmedにより確認済みとなったあとはbEvtに同期して自動解除となります。

bReset : BOOL

bLatchがTrueの場合、このフラグを一瞬Trueにすることでアラームは解除されます。

calculator FB_init コンストラクタ引数

アラーム集計を移譲するFBAlarmCalculatorのインスタンスを指定します。

get_alarm_text メソッド :BOOL

ADSを介してアラームデータベースにアクセスし、指定した言語コードのアラームテキストを収集します。PLCのサイクルとは非同期です。テキストの取得が完了したら戻り値がTrueとなります。

alarm_text プロパティ : STRING

get_alarm_textで取得したテキストが取得できます。

last_raise_time プロパティ :ULINT

前回アラームが有効になったシステム時刻(F_GetSystemTime()で取得した100ns精度の時刻 )を返します。

last_reset_time プロパティ :ULINT

前回アラームが消滅したシステム時刻(F_GetSystemTime()で取得した100ns精度の時刻 )を返します。

sequence_number プロパティ :ULINT

アラームが発生してから、消滅するまでを単位シーケンスとしたカウンタ値を参照します。bLatchがTRUEに設定されたFB_Alarmについてカウンタはすでにアクティブな状態においてbEvtが何度もTrue/Falseを繰り返してもシーケンス番号は繰り上がりません。

FB_AlarmCalculator#

登録されたFB_Alarmを走査し、発生中アラーム、また、新規(未確認)アラームの有無を集計することができます。また、最大10個までのI_Observerを実装したリスナオブジェクトを登録する事で、アラームの発生、解除時に該当するFB_Alarmを受け取って任意の処理を行うことができます。

lang_code プロパティ

add_listenerを通じて登録したリスナオブジェクトにアラームを通知する際に参照するアラームテキストの言語コードを設定します。アラームテキストは引数を伴うものが存在し、状態によりテキスト内容が変化します。従って、アラームが発生したタイミングでの本プロパティで指定した言語コードのアラームテキストを参照し、オブザーバメソッドに渡します。

is_active メソッド

指定したレベル以上のアラームイベントにおいて、一つでもFB_AlarmbEvt入力変数がTrueのアラームが有る場合にTrueが返ります。

is_raised メソッド

指定したレベル以上のアラームイベントにおいて、一つでもFB_AlarmのRaisedステータスの場合にTrueが返ります。Raisedステータスでは、bLatchedがTrueとなっているFB_Alarmにおいて、bEvtがFalseになった後もTrueが保持されます。bConfirm,bResetを順番に立てないとFalse(解除状態)になりません。

is_unconfirmed メソッド

指定したレベル以上のアラームイベントにおいて、一つでもFB_AlarmのスタータスがWaitForConfirmation状態にあるものが見つかると、Trueを返します。

add_listener メソッド

引数で指定したI_Observer実装ファンクションブロックを登録します。10個までオブザーバは登録できます。正常に登録できると、1以上の整数値(オブザーバへのリファレンスを登録した配列アドレス)を返します。戻り値が0の場合は登録数が上限に達しており、登録に失敗したことを示します。

rm_listener メソッド

引数で指定したI_Observer実装ファンクションブロックを登録します。

clear_listeners メソッド

全てのリスナへのリファレンスを削除します。

I_Observer#

FB_AlarmCalculatorにより監視されたアラームの発生、消滅の際の通知機構を定義したインターフェースです。

send_signal メソッド

アラームの発生・解除時にFB_AlarmCalcutatorにより呼び出されます。

引数
pAlarm : POINTER TO FB_Alarm

該当するFB_Alarmオブジェクトへのポインタを受け取ります。

FB_AlarmSimpleListener#

組み込みのI_Observerを実装ファンクションブロックです。AlarmMessage構造体型の変数へアラームメッセージをマッピングするシンプルなメッセージ通知機構です。ADSを通じて各種外部クライアントにデータを通知する場合に便利です。

デバイスのデータ変更をトリガにADSを通じてメッセージを受け取るためのメソッド、AddDeviceNotificationを通じて上記構造体変数を登録しておくことでアラームイベントの外部への通知が可能です。

FB_AlarmDBListener#

組み込みのI_Observerを実装ファンクションブロックです。InfluxDBにアラームの発生、解除イベントを記録するエクスポートロジックを実装しています。詳細はデータベース連携をご覧ください。