- 印刷する
Edge IOとNode-REDでマシンの状態と部品数を管理する
Edge IOでマシン可視化Node-REDフローを利用する方法をご紹介します。
この記事では、ブレークビームセンサーと電流センサーをEdge IOに接続し、Tulipで状態管理と部品カウントを行うワークフローを紹介します。これは、顧客のエッジデバイスにインポート可能なTulip Node-REDライブラリフローを利用します。
この記事の終わりまでに、接続されたセンサーからTulip内のMachineにデータを送信するためのNode-RED内の以下のフローを取得することができます。
以下のステップを完了する必要があります。
- ハードウェアのセットアップエッジIOの配線
- Machineのセットアップ。TulipでMachineを作成する
- Node-REDのセットアップ。TulipライブラリからNode-REDフローをインポート、編集、デプロイする
必要なものは
Tulipのアカウントに登録されたEdge IO
現在のセンサーCR3111-3000または同様の電流変換器
- カレントトランス用の正しいサイズの負担抵抗(CR3111-3000の場合は100Ω推奨)(サイズについてはハードウェアのセットアップを参照
- ブレークビーム
- 3.5mm マイナスドライバ
1.ハードウェアのセットアップ - Edge 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本の線の間に、図のように抵抗を取り付けます。
- 差動ADC [+] 端子に1本、差動ADC [-] 端子に1本接続します。
- ブレークビーム
- キャプチャー部作成
- 茶色のワイヤー(+24V)をSAR ADCの+24V端子に接続する
- 青線(gnd)をデジタル入力バンクのグランド端子に接続する
- 黒線(out)をデジタル入力バンクのピン1へ接続します。
さらに、デバイスに電源を入れ、WANポートにイーサネットケーブルを差し込んで、デバイスをネットワークに接続したことを確認します。
2.マシンのセットアップ - Tulipでマシンを作成する
ブレークビームと電流センサーのデータをTulipに送信するために、まずTulip APIをデータソースとするMachineをセットアップしましょう。詳細な概要については、How to Use the Machine Attributes APIの記事のSetting up a new Machineのセクションを参照してください。
この例では、2つの属性を持つMachineを作成した。
- Current (float) - センサーによって返される電流を表します。
- Part Count (int) - パーツの完成を示すブレークビームからの信号。
Node-RED フローに渡すattributeId と
machineId
の値をメモしておくとよいでしょう。
また、マシンの状態などを変更するために電流センサーを使用したり、センサー出力に基づいたカウントを実行する予定であれば、マシンに割り当てるマシンタイプをセットアップすることができます。この点については、「マシンタイプの設定方法」を参照してください。
3.Node-REDのセットアップ
ブレークビームと電流センサに接続されたEdge IOでEdge Device Portalを起動します。以下の認証情報を使用して Node-RED Editor を起動します。
- ユーザー名:admin
- パスワード:Edge IO のパスワード
Edge IO で Node-RED を使い始めるには、こちらの情報を参照してください。
3a.ライブラリフローのインポート
ライブラリフローをインポートするには、「Tulip Node-RED Flowsのインポート」のドキュメントに記載されている手順に従います。インポートするフローはmachine_visibility.jsonで、インポートするとエディタにMachine Visibility with Current Clamp and Breakbeamタブが作成されます。
3b.フローの概要
このフローは、2つの別々のワークストリームで構成されています。
部品カウンター
最初の経路は、ブレークビームセンサーによる部品カウントの監視である。このフローは、4つの機能ノードで構成されている。
モニタピン
- 目的: Edge IOのGPIOピンを定義し、enabled pinプロパティで監視する。
- ピンアップのフィルタリング
- 目的目的: メッセージのペイロードから、モニタされたピンのイベントが真であるかどうかを判断する。
- パートカウントのインクリメント
- 目的: ピンイベント TRUE でフロー変数パートカウントを増加させる。
- チューリップマシンアトリビュート。パートカウント
- 目的: ペイロード(partCount)を API 経由で Tulip に送信します。
RMS電流をモニターする
2つ目の経路は、ADC(アナログ・デジタル・コンバータ)入力に接続された電流センサを監視することです。このフローは、6つの機能ノードで構成されています。
差動ADC読み取り
- 目的: ADC入力にアナログ構成プロファイルを割り当てる。
- フィルタ1/5測定値
- 目的: 5番目の測定値(5秒)ごとに抽出し、Tulipに渡します。
- メッセージを渡す
- 目的: 読み取りのカウントをリセットします。5番目のメッセージごとの読み取りカウントをゼロに戻す。
- メッセージの削除とインクリメント
- 目的:メッセージの削除とインクリメント。他のすべての読み取りに対して、読み取りカウントを1つインクリメントする。
- CR-3111のスケーリング
- 目的:センサーの測定値をメーカーの仕様に基づきスケーリングします。
- チューリップ・マシン・アトリビュートRMS 電流
- 目的:ペイロード(partCount)を API 経由で Tulip に送信します。
また、デフォルトでは無効になっているが、有効にすることでNode-REDによって機械の状態が決定されるオプションノードが4つ存在する。なお、これと同じロジックを実行するために、Tulip内でマシントリガーを使用することも可能です。
Is Current > 100mA?
- 目的: 電流値が100mA以上であるかどうかを確認する。
- ステート=オン
- 目的: 電流値が100mA以上であれば、ペイロードをONに設定する。
- ステート = オフ
- 目的: 電流が 100mA 以下の場合、ペイロードを OFF に設定する。
- チューリップ・マシン属性。状態(State
- 目的:API 経由でチューリップにペイロード(状態)を送信する。
3c.フローの編集
このフローのセットアップを完了するには、Tulip Machine Attribute.のデバイス情報を編集します。Part CountおよびTulip Machine Attributeのデバイス情報。RMS Currentノードは、先に設定したマシンのattributeIdと
machineIdfフィールドと
一緒に含める必要があります。
使用するセンサーによっては、CR-3111 Scalingノードを追加編集して、電流トランスの巻数比を反映させることができます。
3d.フローを展開する
Node-REDフローを構築し、必要なパラメータを追加したら、フローをデプロイして、ブレークビームと電流センサからTulipに出力されるデータを確認することができます。
Node-RED Editorの右側にあるDebug messageオプションを選択すると、Tulip APIからのレスポンスとそれに対応するステータスコードを確認することができるはずです。
ステータスコードの詳細については、TulipインスタンスのAPIドキュメント(例:.tulip.co/apidocs)にアクセスしてください。具体的には、POST /attributes/report
エンドポイントのドキュメントを参照してください。
これで、Machineの設定タブに移動して、Tulipでもデータを見ることができるようになります。
Node-REDフローの技術的な詳細
以下は、machine_visibility.jsonファイルでインポートされたノードとそのデフォルト設定パラメータの詳細な概要です。
部品カウンタ
モニターピン
目的: Edge IO上のGPIOピン(複数可)を定義し、enabledピンプロパティを介して監視します。
ノードのタイプデジタル入力
デフォルトのプロパティ
- 実行モード -
連続
- リフレッシュレート -
1秒
- 有効なピン -
1
- pinUp 用フィルタ
- 実行モード -
目的メッセージのペイロードから、モニタされたピンのイベントが真であるかどうかを判断する。
ノードの種類スイッチ
デフォルトのプロパティ。
- プロパティ -
msg.payload
- ルール -
true
- パーツカウントのインクリメント
- プロパティ -
目的: ピンイベントtrueでフロー変数パートカウントを増加させる。
ノードタイプ。変更
デフォルトのプロパティ。
ルール
flow.partCountを
式$flowContext('partCount') + 1に
設定する。msg.payload
をflow.partCount
に設定します。- チューリップマシン属性。パートカウント
目的:API経由でTulipにペイロード(partCount)を送信する。
ノードの種類マシン属性
デフォルトのプロパティ。
- デバイス情報* -
{"attributeId":", "machineId":""}
. - アトリビュートソース -
msg.payload
- デバイス情報* -
RMS電流をモニタする
差動ADC読み取り値
目的: ADC入力にアナログ構成プロファイルを割り当てる。
ノードタイプ。高速アナログ
デフォルトのプロパティ。
アナログ・コンフィギュレーション - 差
動ADC RMS @ 1kHZ
- コンフィグレーションするADCを選択 - 差
動ADC
- 有効な出力 -
RMS
- バッファサイズ -
1000
- サンプリング周波数(Hz) -
1000
+ データタイプ -RMS
+ 出力モード -連続
+ リフレッシュレート(秒) -1
- 1/5測定値のフィルタリング
- コンフィグレーションするADCを選択 - 差
目的: 5回目の測定(5秒)ごとに抽出し、Tulipに渡す。
ノードの種類スイッチ
デフォルトのプロパティ
プロパティ -
flow.numReadings
ルール
== 4
それ以外
- メッセージを渡す
目的5番目のメッセージごとの読み取りカウントを0に戻す。
ノードの種類変更
デフォルトのプロパティです。
ルール
flow.numReadingsを
0に
設定- メッセージの削除とインクリメント
目的他のすべての読み取りに対して、読み取りカウントを1だけインクリメントする。
ノードの種類変更
デフォルトのプロパティです。
ルール
フロー.numReadingsを
式に設定する$flowContext('numReadings') + 1
- CR-3111 スケーリング
目的: 製造元の仕様に基づき、センサーの測定値をスケーリングする。
ノードタイプ。サブフローテンプレート
デフォルトのプロパティ
- プロパティ -
データ
- スケール* -
3000
- オフセット -
0
- チューリップマシン属性。RMS電流
- プロパティ -
目的:API経由でペイロード(partCount)をTulipに送信する。
ノードタイプ。マシン属性
デフォルトのプロパティ。
- デバイス情報* -
{"attributeId":", "machineId":""}
. - 属性のソース -
msg.data[0]
- デバイス情報* -
機械状態を計算するサブフロー
電流は100mA以上か?
目的:電流値が100mAより大きいかどうかを確認する。
ノードの種類スイッチ
デフォルトのプロパティ
プロパティ -
msg.data[0]
ルール
> 0.1
それ以外
- 状態 = ON
目的: 電流が 100mA より大きい場合、ペイロードを ON に設定する。
ノードタイプ。変更
デフォルトのプロパティです。
ルール
msg.payloadを
ONに
設定する- 状態 = OFF
目的: 電流が 100mA 以下の場合、ペイロードを OFF に設定する。
ノードタイプ。変更
デフォルトのプロパティです。
ルール
msg.payloadを
OFFに
設定する- チューリップのマシン属性状態
目的:API経由でチューリップにペイロード(状態)を送信する。
ノードの種類マシン属性
デフォルトのプロパティ。
- デバイス情報* -
{"attributeId":", "machineId":""}
. - アトリビュートソース -
msg.payload
- デバイス情報* -
* フローが適切に動作するためには、パラメータを更新する必要があります。現在のセンサーのスケール値は、製造元の推奨値に従って変更する必要があります。
参考文献
お探しのものは見つかりましたか?
また、community.tulip.coに質問を投稿したり、他の人が同じような質問に直面していないかどうかを確認することができます。