コンテンツにスキップ

10.6 チュートリアル

本節では、i-Triggerの簡単な利用手順について、チュートリアル形式で解説します。

10.6.1 想定するユースケース#

本チュートリアルでは、次のようなユースケースで、異常検知を行います。

PLCからの収集データで異常を検知したら、その前後の動画および収集したデータをビューワで確認する (※ここでは、PLCコレクタに見立てたカスタムコンポーネントを使用します)

コンポーネント構成

  1. PLCから次のデータを収集する

    • 異常検知フラグ
    • 圧力

  2. 1台のネットワークカメラで映像を記録する

  3. 異常検知フラグが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で使うための設定を行います。

  1. 「サーバー設定アイコン」の「カスタム(Python)」をクリックします。 サーバー設定

  2. カスタムコンポーネントの「追加」をクリックします。 カスタムコンポーネント

  3. 先ほど保存した「dummy_plc.py」を選択します。 カスタム選択

  4. カスタムコンポーネントが表示されることを確認します。
    「dummpy_plc.py」が表示されていたら、ダイアログの「閉じる」をクリックします。 カスタムクローズ

  5. 再起動を促されるので、「はい」をクリックします。 確認

  6. フローエディタの左部の「Custom」の「PLCコレクタ(ダミー)」をエディタ中央部へドラッグ&ドロップします。 カスタム登録

  7. 名称を「PLCダミー」へ設定して、「保存」をクリックします。 カスタム登録

  8. カスタムコンポーネントの準備は完了です。 カスタム配置

10.6.3 コンポーネントの配置・設定#

i-Triggerを使うための各種コンポーネントを設定していきます。

10.6.3.1 VIDEOコレクタの設定#

動画を記録するため、VIDEOコレクタを設定します。
利用できるネットワークカメラがない場合は、この設定は省略しても構いません。

  1. フローエディタの左部の「Collector」の「Camera1」をエディタ中央部へドラッグ&ドロップします。
    Video登録

  2. 名称を「Camera1」へ設定して、「RTSP URL」は、カメラの指定URLを入力します。そして、「保存」をクリックします。
    Video設定

  3. Videoコレクタ「Camera1」の準備は完了です。 Video配置

10.6.3.2 イベントトリガの設定#

イベントトリガで、異常検知時の条件を行います。

  1. イベントトリガの設定前に、「PLCダミー」と「Camera1」は起動します。パネル右上の「起動」をクリックします。 起動

  2. フローエディタの左部の「Logic」の「イベントトリガ」をエディタ中央部へドラッグ&ドロップします。
    イベントトリガ登録

  3. 入力ポートへ接続するコンポーネントは、「PLCダミー」にチェックして「接続」をクリックします。
    イベントトリガ接続

  4. 名称を「異常検知」とします。その他項目は、下記を参考に入力して、「保存」をクリックします。
    イベントトリガ設定

    項目 補足
    同一イベントを無視する時間(秒) 0 今回は無視する設定不要のため0とする
    基本記録時間(分) 1
    開始イベント - -
    コンポーネント PLCダミー
    データ名 異常検知フラグ
    トリガ名 ON
    条件種別 Raise
    条件式 $VALUE = 1 フラグがtrueとなる立ち上がり条件とする
    終了イベント - -
    コンポーネント PLCダミー
    データ名 異常検知フラグ
    トリガ名 OFF
    条件種別 Raise
    条件式 $VALUE = 0 フラグがfalseとなる立ち下がり条件とする
  5. イベントトリガ「異常検知」の設定は完了です。 イベントトリガ

10.6.3.3 Event Recorderの設定#

最後にEvent Recorderの設定を行います。異常発生時の記録区間などの設定もここで行います。

  1. イベントトリガ「異常検知」を起動しておきます。「起動アイコン」をクリックします。 イベントトリガ

  2. フローエディタの左部の「Serializer」の「Event Recorder」をエディタ中央部へドラッグ&ドロップします。
    EventRecorder登録

  3. 名称を「異常検知記録」へ設定とします。「分類」は、「警告」を選択します。そして、「保存」をクリックします。
    EventRecorder設定

  4. 「異常検知記録」へ、「PLCダミー」、「Camera1」、「異常検知」のフローリンクを接続します。
    EventRecorderフローリンク

  5. 「異常検知記録」の入力ポートの設定を開きます。 EventRecorder入力ポート

  6. 入力ポートを設定して、「保存」をクリックします。入力値は下記を参考にしてください。 EventRecorder入力ポート詳細

    項目 補足
    イベントを使用する チェックON この設定がないと、Event Recorderでイベント発生範囲が記録されない。
    イベント 異常検知 この設定がないと、Event Recorderでイベント発生範囲が記録されない。
    イベント発生前の取得時間(秒) 5
    イベント終了後の取得時間(秒) 5
  7. イベントの記録のすべての設定は完了です。

10.6.4 動作確認#

ここまでに設定したデータフローを動作させます。

  1. 設定したコンポーネントを起動します。 起動

  2. 配置したコンポーネントが正常に起動することを確認します。コンポーネントのランプに異常があれば設定を見直してください。
    コンポーネント状態

  3. 数分以上稼働させたら、ビューワを確認します。「ビューワアイコン」をクリックします。 ビューワアイコン

  4. ビューワ左部で、「イベント録画」をクリックします。「異常検知記録」の一覧が表示されているか確認します。
    イベント録画一覧

  5. 任意の「異常検知記録」をクリックして、ビューワ全体の表示を確認します。 イベント録画詳細

  6. 「再生アイコン」をクリックして、イベント録画を再生します。約10~11秒の記録と合わせて、異常検知が1になったタイミングで、圧力も100となっていることが確認できれば正常に動作しています。 イベント録画チャート

  7. チュートリアルは以上となります。