Edge IOとNode-REDによるマシン状態と部品数の管理
  • 04 Nov 2023
  • 1 読む分
  • 寄稿者

Edge IOとNode-REDによるマシン状態と部品数の管理


記事の要約

Edge IOとNode-REDによる機械の状態と部品数の管理

Edge IOでマシン可視化Node-REDフローを使用する方法を学ぶ

この記事では、ブレークビームセンサと電流センサをEdge IOに接続して、Tulipで状態を管理し、部品数をカウントするワークフローについて説明します。これは、顧客のエッジデバイスにインポート可能なTulip Node-REDライブラリフローを利用します。

この記事の終わりまでに、接続されたセンサーからTulip内のマシンにデータを送信するための、Node-RED内の以下のフローができるようになります。

以下のステップを完了する必要があります:

  1. ハードウェアのセットアップエッジIOの配線
  2. マシンのセットアップ:Tulipでマシンを作成
  3. Node-REDのセットアップ:TulipライブラリからのNode-REDフローのインポート、編集、デプロイ

必要なもの

  • Tulipアカウントに登録されたEdge IO

  • 現在のセンサーCR3111-3000または同様の電流トランス

    • CR3111-3000の場合は100Ωが推奨されます(サイズについてはハードウェアのセットアップを参照してください)。
    • ブレークビーム
    • 3.5mmマイナスドライバー

1.ハードウェアのセットアップ - エッジIOの配線

このワークフローでは、Edge IO に接続された変流器とブレークビームを使用することを想定しています。

負荷抵抗のサイズを計算するCR3111-3000 を使用する場合は、100Ω の抵抗を推奨します。別の電流クランプを使用する場合は、実効巻数比(T_e)と測定する最大電流(I_max)から、最大許容抵抗サイズ(R_burden)を以下のように計算できます:R_burden = 3.12 * T_e / I_max。抵抗器は、許容される最大抵抗サイズよりも小さくすることができますが、そうするとセンサーの分解能が低下します。

電流クランプ(CR3111-3000)とブレークビームを次のようにEdge IOに配線します:

  • 電流クランプ

    • 電源ケーブルを通して AC 電流を測定します。
    • 図のように、2 本の電流クランプワイヤの間に抵抗を取り付けます。
    • 1 つのワイヤーを差動 ADC [+] 端子に、1 つのワイヤーを差動 ADC [-] 端子に接続します。
    • ブレイクビーム
    • キャプチャ部作成
    • 茶色のワイヤー(+24V)を SAR ADC の +24V 端子に接続する。
    • 青線(gnd)をデジタル入力バンクのグランド端子に取り付ける
    • 黒線(out)をデジタル入力バンクのピン1に接続する。

さらに、デバイスに電源が供給され、WAN ポートにイーサネット・ケーブルを接続することで、デバイスがネットワークに接続されていることを確認します。

2.マシンのセットアップ - Tulipでマシンを作成する

ブレークビームと電流センサーのデータをTulipに送信するために、まずTulip APIをデータソースとして使用するマシンをセットアップします。詳細な概要については、「How to Use the Machine Attributes API」記事の「Setting up a new Machine」セクションを参照してください。

この例では、2つの属性を持つマシンを作成した:

  1. Current (float) - センサーから返される電流を表す。
  2. Part Count (int) - 部品の完了を示すブレークビームからの信号。

Node-REDフローに渡すattributeIdと machineIdの値をメモしておきます。

現在のセンサーを使用してマシンの状態を変更したり、センサー出力に基づいてカウントを実行したりする場合は、マシンに割り当てるマシンタイプを設定することもできます。興味のある方は、マシンタイプの設定方法を参照してください。

3.Node-RED セットアップ

ブレークビームと電流センサに接続された Edge IO で、Edge Device Portal を開きます。以下の認証情報を使用して Node-RED エディタを起動します:

  • ユーザー名:admin
  • パスワード: Edge IO のパスワード

Edge IO で Node-RED を使い始めるには、こちらを参照してください。

3a.ライブラリフローのインポート

ライブラリフローをインポートするには、「Importing Tulip Node-RED Flows」の手順に従ってください。インポートするフローはmachine_visibility.jsonで、インポートするとエディタにMachine Visibility with Current Clamp and Breakbeamタブが作成されます。

3b.フローの概要

このフローは、2つの個別のワークストリームで構成されています:

部品カウンター

最初の経路は、ブレークビームセンサーによる部品カウントの監視です。このフローは4つの機能ノードで構成される:

  1. モニターピン

    • 目的:有効ピンプロパティでモニタするエッジIO上のGPIOピンを定義する。
    • ピンアップのフィルタ
    • 目的:メッセージペイロードから、モニタされたピンのイベントが真かどうかを判断する。
    • パートカウントのインクリメント
    • 目的: ピンイベント true のフロー変数パートカウントをインクリメントする。
    • チューリップマシン属性:パートカウント
    • 目的: API経由でペイロード(partCount)をチューリップに送信する。

実効電流のモニター

2番目のパスは、ADC(アナログ・デジタル・コンバータ)入力に接続された電流センサを監視することです。このフローは6つの機能ノードで構成されます。

  1. 差動 ADC 読み取り

    • 目的:ADC 入力にアナログ構成プロファイルを割り当てる。
    • 1/5 測定値のフィルタリング
    • 目的:5 番目(5 秒)ごとの測定値を抽出して Tulip に渡す。
    • メッセージを渡す
    • 目的:Tulipにメッセージを渡す:目的: 5 番目のメッセージごとに読み取り値のカウントをゼロに戻します。
    • メッセージの削除とインクリメント
    • 目的:他のすべての読み取り値について、読み取り値のカウントを 1 ずつ増やします。
    • CR-3111スケーリング
    • 目的:センサーの測定値をメーカーの仕様に基づいてスケーリングする。
    • チューリップ・マシン属性:RMS 電流
    • 目的:API 経由で Tulip にペイロード(partCount)を送信する。

また、デフォルトでは無効になっているが、有効にすることでNode-REDによって決定されるマシン状態を持つことができる4つのオプションノードがある。Tulip内でマシントリガーを使用して、これと同じロジックを実行することも可能です。

  1. 電流 > 100mA?

    • 目的:電流値が100mAより大きいかどうかをチェックする。
    • 状態 = ON
    • 目的:電流値が100mAより大きい場合、ペイロードをONに設定する。
    • 状態 = OFF
    • 目的:電流値が 100mA 以下の場合、ペイロードを OFF に設定する。
    • チューリップ・マシン属性状態
    • 目的:API経由でペイロード(状態)をチューリップに送信する。

3c.フローの編集

このフローの設定を完了するには、Tulip Machine Attributeのデバイス情報を編集します:Part Countと Tulip Machine Attribute:RMS電流]ノードに、先に設定したマシンのattributeId フィールドとmachineIdfフィールドを含める必要があります。

使用するセンサーによっては、CR-3111 Scalingノードを編集して、現在のトランスの巻数比を反映させることもできます。

3d.フローの展開

Node-REDフローを構築し、必要なパラメータを追加したら、フローをデプロイして、ブレークビームと電流センサからTulipに出力されるデータを確認します。

Node-REDエディタの右側にあるデバッグメッセージオプションを選択すると、Tulip APIからのレスポンスと対応するステータスコードが表示されます。

ステータスコードの詳細については、TulipインスタンスのAPIドキュメント(例:.tulip.co/apidocs)を参照してください。特に、POST /attributes/reportエンドポイントのドキュメントを参照してください。

これで、マシンの設定タブに移動することで、Tulipでもデータを確認できるようになります。

Node-REDフローの技術的詳細

以下は、machine_visibility.jsonファイルとともにインポートされたノードとそのデフォルト構成パラメータの詳細な概要です。

パートカウンタ

  1. モニタピン

    • 目的:有効ピンプロパティを介してモニタするエッジ IO 上の GPIO ピンを定義する。

    • ノードタイプ:デジタル入力

    • デフォルトのプロパティ

      • 実行モード -連続
      • リフレッシュレート -1秒
      • 有効なピン -1
      • pinUp 用フィルタ
    • 目的メッセージのペイロードから、監視しているピンのイベントが true かどうかを判断する。

    • ノード・タイプ:スイッチ

    • デフォルトのプロパティ:

      • プロパティ -msg.payload
      • ルール -true
      • パート・カウントのインクリメント
    • 目的:ピン・イベントtrue時にフロー変数のパート・カウントをインクリメントする。

    • ノード・タイプ:変更

    • デフォルトのプロパティ:

      • ルール

        • flow.partCountを式$flowContext('partCount') + 1に設定する。
        • msg.payloadを flow.partCountに設定する
        • チューリップ・マシン属性:パート・カウント
    • 目的:API 経由で Tulip にペイロード(partCount)を送信する。

    • ノード・タイプ:マシン属性

    • デフォルトのプロパティ:

      • デバイス情報* -{"attributeId":"", "machineId":""}.
      • 属性ソース -msg.payload

RMS 電流のモニタ

  1. 差動 ADC 読み取り値

    • 目的:ADC 入力にアナログ構成プロファイルを割り当てる。

    • ノード・タイプ:高速アナログ

    • デフォルト・プロパティ

      • アナログ構成 - 差動ADC RMS @ 1kHZ

        • 構成するADCを選択 -差動ADC
        • 有効出力 -RMS
        • バッファ・サイズ -1000
        • サンプリング周波数(Hz) -1000+ データ・タイプ -RMS+ 出力モード -連続+ リフレッシュ・レート(秒) -1
        • 1/5読み取り値のフィルタリング
    • 目的:5番目の測定値(5秒)ごとに抽出してTulipに渡す。

    • ノードタイプ:スイッチ

    • デフォルトのプロパティ:

      • プロパティ -flow.numReadings

      • ルール

        • == 4
        • そうでなければ
        • メッセージを渡す
    • 目的5番目のメッセージごとの読み取りカウントをゼロに戻す。

    • ノードのタイプ:変更

    • デフォルトのプロパティ

      • ルール

        • flow.numReadingsを 0に設定
        • メッセージの削除とインクリメント
    • 目的他のすべての読み取り値に対して、読み取り値のカウントを1インクリメントする。

    • ノードタイプ:変更

    • デフォルトのプロパティ:

      • ルール:

        • flow.numReadingsを式$flowContext('numReadings') + 1に設定します。
        • CR-3111 スケーリング
    • 目的: 製造元の仕様に基づいてセンサーの測定値をスケーリングする。

    • ノードタイプ:サブフローテンプレート

    • デフォルトのプロパティ:

      • プロパティ -データ
      • スケール* -3000
      • オフセット -0
      • チューリップ・マシン属性:RMS電流
    • 目的:API経由でペイロード(partCount)をチューリップに送信する。

    • ノードタイプ:マシン属性

    • デフォルトのプロパティ:

      • デバイス情報* -{"attributeId":"", "machineId":""}.
      • 属性ソース -msg.data[0]

マシン状態を計算するサブフロー

  1. 電流 > 100mA?

    • 目的: 電流値が 100mA より大きいかどうかをチェックする。

    • ノード・タイプ:スイッチ

    • デフォルト・プロパティ:

      • プロパティ:msg.data[0]

      • ルール

        • > 0.1
        • それ以外の場合
        • 状態 = ON
    • 目的: 電流が 100mA より大きい場合、ペイロードを ON に設定する。

    • ノードタイプ:変更

    • デフォルトのプロパティ:

      • ルール

        • msg.payloadONに設定する。
        • 状態 = OFF
    • 目的:電流が 100mA 以下の場合、ペイロードをオフに設定する。

    • ノードタイプ:変更

    • デフォルトのプロパティ:

      • ルール

        • msg.payloadオフに設定する。
        • チューリップ・マシン属性ステート
    • 目的:API経由でTulipにペイロード(状態)を送信する。

    • ノードタイプ:マシン属性

    • デフォルトのプロパティ:

      • デバイス情報* -{"attributeId":"", "machineId":""}.
      • 属性ソース -msg.payload

* フローが適切に機能するためには、パラメータを更新する必要がある。フローが適切に動作するためには、パラメータを更新する必要があります。

参考文献


お探しのものは見つかりましたか?

community.tulip.coで質問を投稿したり、他の人が同じような質問に直面していないか確認することもできます!


この記事は役に立ちましたか?