10.6 チュートリアル
本節では、i-Triggerの簡単な利用手順について、チュートリアル形式で解説します。
10.6.1 想定するユースケース#
本チュートリアルでは、次のようなユースケースで、異常検知を行います。
PLCからの収集データで異常を検知したら、その前後の動画および収集したデータをビューワで確認する (※ここでは、PLCコレクタに見立てたカスタムコンポーネントを使用します)
-
PLCから次のデータを収集する
- 異常検知フラグ
- 圧力
-
1台のネットワークカメラで映像を記録する
- 異常検知フラグがONになったらイベントの記録を開始
- 異常検知フラグ検知前5秒、異常検知フラグOFFから後ろ5秒を記録する
- ビューワで表示するデータは、PLCから取得した異常検知フラグ、圧力とその区間の映像
10.6.2 カスタムコンポーネントの設定(疑似PLCコレクタ)#
最初に、異常検知および圧力のデータを収集するためのカスタムコンポーネントを設定します。
10.6.2.1 カスタムコンポーネントのコード#
次のコードをコピーして、メモ帳などのテキストエディアへ貼り付け、PC内に「plc_dummy.py」というファイル名で保存してください。文字コードは「UTF-8」を指定します。
from speedbeesynapse.component.base import HiveComponentBase, HiveComponentInfo, DataType
import time
import json
@HiveComponentInfo(uuid='12318c73-fe45-fded-150a-b95c894f3692', name='PLCコレクタ(ダミー)', inports=0, outports=1)
class HiveComponent(HiveComponentBase):
def __init__(self):
# called at creating component instance
pass
def __del__(self):
# called at deleting component instance
pass
def premain(self, param):
# called before main()
# 疑似データを登録するカラムを作成する
self.data = self.out_port1.Column('圧力', DataType.INT16)
self.flag = self.out_port1.Column('異常検知フラグ', DataType.BOOLEAN)
def postmain(self, param):
# called after main() finished
pass
def main(self, param):
value = False
count = 0
while self.is_runnable():
ts = self.get_timestamp()
pressure = 50
count += 1
# count30回毎に異常データを登録する
if (count % 30) == 0:
value = True
pressure = 100
else:
value = False
# 疑似データを登録する
self.flag.insert(value, ts)
self.data.insert(pressure, ts)
time.sleep(1.0)
def notify_stop(self):
# called before the component received stop request from system
pass
上記のコードは、次の処理を行います。
- 約30秒間隔で、異常検知のフラグをTrueにしてデータ登録
- 圧力は正常時は50で登録
- 異常時は圧力の値を100で登録
10.6.2.2 カスタムコンポーネントの登録#
保存したPythonのソースコードをSpeeDBee Synapseで使うための設定を行います。
-
「サーバー設定アイコン」の「カスタム(Python)」をクリックします。
-
カスタムコンポーネントの「追加」をクリックします。
-
先ほど保存した「dummy_plc.py」を選択します。
-
カスタムコンポーネントが表示されることを確認します。
「dummpy_plc.py」が表示されていたら、ダイアログの「閉じる」をクリックします。 -
再起動を促されるので、「はい」をクリックします。
-
フローエディタの左部の「Custom」の「PLCコレクタ(ダミー)」をエディタ中央部へドラッグ&ドロップします。
-
名称を「PLCダミー」へ設定して、「保存」をクリックします。
-
カスタムコンポーネントの準備は完了です。
10.6.3 コンポーネントの配置・設定#
i-Triggerを使うための各種コンポーネントを設定していきます。
10.6.3.1 VIDEOコレクタの設定#
動画を記録するため、VIDEOコレクタを設定します。
利用できるネットワークカメラがない場合は、この設定は省略しても構いません。
-
フローエディタの左部の「Collector」の「Camera1」をエディタ中央部へドラッグ&ドロップします。
-
名称を「Camera1」へ設定して、「RTSP URL」は、カメラの指定URLを入力します。そして、「保存」をクリックします。
-
Videoコレクタ「Camera1」の準備は完了です。
10.6.3.2 イベントトリガの設定#
イベントトリガで、異常検知時の条件を行います。
-
イベントトリガの設定前に、「PLCダミー」と「Camera1」は起動します。パネル右上の「起動」をクリックします。
-
フローエディタの左部の「Logic」の「イベントトリガ」をエディタ中央部へドラッグ&ドロップします。
-
入力ポートへ接続するコンポーネントは、「PLCダミー」にチェックして「接続」をクリックします。
-
名称を「異常検知」とします。その他項目は、下記を参考に入力して、「保存」をクリックします。
項目 値 補足 同一イベントを無視する時間(秒) 0 今回は無視する設定不要のため0とする 基本記録時間(分) 1 開始イベント - - コンポーネント PLCダミー データ名 異常検知フラグ トリガ名 ON 条件種別 Raise 条件式 $VALUE = 1 フラグがtrueとなる立ち上がり条件とする 終了イベント - - コンポーネント PLCダミー データ名 異常検知フラグ トリガ名 OFF 条件種別 Raise 条件式 $VALUE = 0 フラグがfalseとなる立ち下がり条件とする -
イベントトリガ「異常検知」の設定は完了です。
10.6.3.3 Event Recorderの設定#
最後にEvent Recorderの設定を行います。異常発生時の記録区間などの設定もここで行います。
-
イベントトリガ「異常検知」を起動しておきます。「起動アイコン」をクリックします。
-
フローエディタの左部の「Serializer」の「Event Recorder」をエディタ中央部へドラッグ&ドロップします。
-
名称を「異常検知記録」へ設定とします。「分類」は、「警告」を選択します。そして、「保存」をクリックします。
-
「異常検知記録」へ、「PLCダミー」、「Camera1」、「異常検知」のフローリンクを接続します。
-
「異常検知記録」の入力ポートの設定を開きます。
-
入力ポートを設定して、「保存」をクリックします。入力値は下記を参考にしてください。
項目 値 補足 イベントを使用する チェックON この設定がないと、Event Recorderでイベント発生範囲が記録されない。 イベント 異常検知 この設定がないと、Event Recorderでイベント発生範囲が記録されない。 イベント発生前の取得時間(秒) 5 イベント終了後の取得時間(秒) 5 -
イベントの記録のすべての設定は完了です。
10.6.4 動作確認#
ここまでに設定したデータフローを動作させます。
-
設定したコンポーネントを起動します。
-
配置したコンポーネントが正常に起動することを確認します。コンポーネントのランプに異常があれば設定を見直してください。
-
数分以上稼働させたら、ビューワを確認します。「ビューワアイコン」をクリックします。
-
ビューワ左部で、「イベント録画」をクリックします。「異常検知記録」の一覧が表示されているか確認します。
-
任意の「異常検知記録」をクリックして、ビューワ全体の表示を確認します。
-
「再生アイコン」をクリックして、イベント録画を再生します。約10~11秒の記録と合わせて、異常検知が1になったタイミングで、圧力も100となっていることが確認できれば正常に動作しています。
-
チュートリアルは以上となります。