Proficloud.io?
Proficloud.ioはPlug and PlayのIOT PlatfromでIT資源が限られてるメーカーに、自分のデバイスを簡単にCloudと接続するServiceを提供しています。
例えば装置のオペレーション状態のMonitoringやTracking、データのLogging、リモート監視など、しかも簡単に設置できるのは大きなメリットです。Cloudでデータ一覧できるのであれば装置のメンテナンス周期はもはや勘で決めるのではなく、数値に沿って計画を構築することができます。
Proficloud.ioはAPIも提供しており、PLCNEXT/Node-RED以外のデバイスにも自分のアカウントからデータをアクセスできます。つまり、Proficloud.ioからとった情報をさらに別Servicesに転送し連携することが可能になります。(しかも始めは無料…!)
今回の記事ではまずProficloud.ioとNode-redの連携を説明します。
Node-RED?
Node-redはIBMが開発したWeb BaseのOpen Sorceプログラムツールで、工業業界ではSiemens・Fujitsu・AT&T ・Phoenix Contactにもある程度導入しています。
Programの作り方は線つなぎのようなイメージでつながってる部品はNodeと言います。Nodeは異なるProtocol間でデータを収集・変換・転送することが可能だし、たくさんのライブラリも提供されて(TCP/UDP/OPCUA/MQTT…Etc)、Programmの工数がかなり減ります。(車輪の再発明は知らないってことですね)
Installation
Raspberry
Ubuntu
PLCNEXT
Configuration
今回の記事では使用するがPLCNEXTではなくRaspberryとNode-Redの組み合わせです。
もちろんNode-RedはWindowsやMACでも稼働できるのでProficloud.ioが一番汎用的な使い方ではないかな?と私は思っています。(みんなもPLCNEXT実機もってるわけではないので)
そして最後はProficloud.ioとBeckhoff Twincat3 TF6100を接続するの手順を説明で終わりたいと考えています。
Register an account
下記のLINKにアクセスしProficloudのアカウントを作成します。
名前やEMAILなどの個人情報を入力しRegisterします。
次はLoginします。
そうするとEmail認証してくださいって言われます。
MailBoxからProficloudのメールが届いてると思いますので、Verify E−Mailのボタンをクリックします。
それで再LoginしDashboardが表示されると思います!
Play Node
では実際Proficloud.ioを触る前、少しWarm-uoしましょう。Flowを作成し、Injection/http-request/debug-Nodeの部品もFlowの中に追加しましょう。いまは青い色ボタンをクリックすればHttp requestを送り、Serverからの返答をDebug画面に表示するようになります。
http requestの部品をクリックし、URLのところをhttps://proficloud.io/を入力>Done。
最後は右上のDeployボタンをクリックします。
timestampのボタンをクリック>msg.payloadをクリック>debug画面見るとProficloud.io Serverの返答が来ました。(内容は気にしないでください)
これでNode-REDがInternet・Proficloud.io にも接続問題なしと確認できました。
Install proficloud
次はNode-redのProficloud Packageをインストールします。Node-redではたくさんのライブラリが存在しすごく面白いシステムです。
Deploy>Manage paletteします。
ライブラリを管理する画面が出てきます。
InstallのTabを開きます。
node-red-contrib-proficloudを検索>Proficloud – IIot-Platform of Phoenix Contactから提供されてるライブラリを確認し>Installします。
Alertが出てき来るが、Installを押して進みます。
しばらく待ちます…
ライブラリを追加しました。
ADD Device
Node-redでProficloud.ioのライブラリを追加しましたが、実際デバイスとProficloud.ioをつなげるにはもうONE STEPが必要で、それはデバイスのVirtual UUIDです。デバイスのVirtual UUIDはProficloud.ioのアカウントから作成できます。
Dashboardを開き>Add Deviceします。
Add DeviceのPopupが出てきます。
This is a virtual device、generate a UUID for meのCheckboxを入れます。
そしてDevice Name/Commentなどの情報を入れ、ADD DEVICE TO PROFICLOUD.IOでデバイスを追加します。
これでOK。
Virtual Device が作成されましたのでUUIDのPOPUPが表示されます。
そのUUIDをメモ帳とかで保存してください。
Device ListでOfflineしてるデバイスが追加されました。
Example1-Establish the connection
まずはNode-RedとProficloud.ioの通信が成立します。左側のNodeで一番したにいくと、先にインストールしたProficloudDevice Nodeがあります。
そのNodeをFlowに追加します。
次はNodeをクリックします。
Properties Setup画面出てきます。
UUIDは先ほど追加したDeviceのIDを入力し、AutoConnectのCheckboxを入れてDoneします。
いまNodeがDevice yourUUIDのように表示が変わります。
Deployします。
暫く待つと、Deviceの状態がConnectedに変わります。
それで接続OKです!
Dashboardにも自分のRaspberryがOnlineに変わりました!
Example2-Set Some Device Information
通信が確立したところで今度はデバイスのMetadataを変更します。
YourDevices>Informationには変更できる情報が3つあります。
それはSerial Number/Hardware Version/Software Versionです。
FlowでDeviceのNodeをクリックします。
PropertiesにはSerial No/FW Version/HW VersionのInput Fieldがあります。
テストだけなので適当な数字にし>Doneします。
もう1度Dashboardからみると、なぜHardware Versionだけが更新され、Serial Numberはできないのだろう…まぁ、大事な話ではないので後回しにします。
Example3-Send Time series value
次は時間列のデータをProficloud.ioに送信します。それらのデータはPLCやSensorから収集するものでもありNode-REDからProficloud.io データをアップします。
まずtimestamp>functionのNodeを作成し、Proficloud.ioのDeviceと繋がります。
Function Nodeをクリックし中身のmsg.payloadを変更します。
次はTimestamp Nodeを修正します。
Repeat>Interval>every 1 secondsに変更>DoneでOK。
DeployでFlowを実行します。
接続できるまで時間が少し必要なので,error in sendTSDのMessageは気にしないでください。
次はDashboardに戻り、ServiceのTab開き>Assign Metricボタンをクリックします。
msg.payloadのflowとtemperatureをCheck入れ、ASSIGN METRICSボタンクリックします。
しばらく待ちます…
完了したら次はGO TO SERVICEボタンをクリックします。
Time seriesのデータが可視化できるようになります。
Example4-Send Status
TrafficLight Messageを使用することによりDeviceの状態をDashboard上のHealth Tabに色と短いメッセージで表示することできます。必要なのはProficoud NodeからTrafficLightが含まれているJson ObjectをProficoudに送信すればOKです。
Flowで新しいTimeStamp/function Nodeを追加し、Proficloud.ioのDeviceと繋がります。
msg.payloadを以下のように追加します。
Healthの表示色はNumberで設定できます。
0=緑、1=オレンジ、2=赤です。
msg FieldはDashboardのHealth Tabで表示する文字になります。
FlowをDeployしテストすると、DeviceのHealth にDevice statusがメッセージが表示され、色も赤くなります。
Example5-Send logging Data
Node-RedからLogging用のデータをProficloud.ioに転送することも可能です。LoggingのデータをProficloud.ioに保存し、必要なときに履歴のような役割ができます。
FlowでTimestamp/Functionを追加し、Proficloud.io Deviceと繋がります。
Function内 msg.payloadを修正します。
- level Fieldは0=Debug、1=Info,2=Warn,3=Error,4=Fatalの意味になります。
- tag FieldはLoggingメッセージ名
- msg Fieldはメッセージの内容になります。
DeloyしDashboardのLogs Tabを開くと、Node-Redから送信したLog Messageを一覧できます。
Example6
最後のExampleはProficloud.ioとTwinCAT3 TF6100を接続する手順を紹介します。
最初はNode-Redと確実に接続できるかを確認するため、まずExmaple6.1はNode−REDとDemo Serverと接続>Node-redとProficloud.ioの接続説明になります。
Example 6.2ではTwinCAT3 TF6100と連携するに注意Pointを説明します。
Example6.1 Play with Demo Server
Reference Link
デモServerとUaExpertを使うので、以下のLinkを参考にしてください。
Install node-red-contrib-opcua Packages
Deploy>Manage plaetteです。
node-red-contrib-opcuaを検索しInstallします。
PopUpが出てきます。Installで進みます。
インストールが完了すると、OpcuaのNodeが追加されました。
Node Disable
Porficloud.ioのNodeを一時Disableします。(接続できるまでずっとエラーメッセージ出るのは少し邪魔なので)
一番したにEnabledのボタンがあります。
クリックするとDisabledになります。
Proficloud.ioと接続してるNodeが点線になります。
Demo Server
テスト用のServerを起動します。
Configure The OPC UA Client
opcua のNode ListからOpcUa-ClientのNodeをFlowに追加します。
Nodeをダブルクリックします。
EndpointをDemo ServerのURLに貼り付けます。
Endpoint Fieldのところの鉛筆ICONをクリックします。
AnonyousをCheckBox入れてUpdateします。
FlowをDeloyするとNodeのStatusがSession activeに変わります。
Configure the Topic
OPC UA Clientが構成され終わったら次はアクセスするNodeを設定します。
まず
msg.topicのFieldでNodeIdを設定します。
では実際そのNodeIdはどこで確認できるでしょうか。
UaExpert ソフトを起動し、Demo Serverと接続します。
今回アクセスするのはDynamic>ScalarのDoubleとInt16、2つのNodeにします。
Nodeをダブルクリックします。
NodeIdは確認できます!
Flow
msg.payloadに繋がり、Messageを確認します。
Check in Node-red
なんか数字だけ表示されても、なにが表示されてるかわかりません。
payload.msgを開くと、msg.payloadのOutput Fieldがありますね。
実はこれがDrop-listで、complete msg object に変更します。
Nodeはmsg.payloadではなくmsgに変わっていますね。
Debug画面をみると、OPC UA Serverからの返答をFull messageを一覧できるようになりました。
もちろん展開しすべての要素をみることもできます。
Add Function
次は実際OPCUA Serverから受信したデータをProficloud.ioと繋がってみます。
Function2つの追加します。
わかりやすいように、Function名を変更します。
Function_GetOpcMsg
実際はNameのFieldで名前変更できます。
先OPCUA Serverから返答したMessageはs=xxxxxの部分がありますね。そのXXXXはNodeの名前です。以下は簡単なJavascriptでそのXXXXの部分を取り出し、Node ObjectのPayloadを作成します。
opcmsg={}; var msgtopic=msg.topic; var NodeName=msgtopic.split(‘s=’)[2]; global.set(NodeName,msg.payload); opcmsg.payload={ Node:{ “Name”:NodeName ,”Value”:msg.payload } } return opcmsg; Function_Convert2Profiio var l=msg.payload.Node.Name; var y=msg.payload.Node.Value; |
Function_Convert2Profiio
Function_GetOpcMsgで出力したPayload MessageはそのFunctionのInputパラメタとし受け取り、Node Nameの比較からTime series Messageを構築しProficloud.io Nodeに渡す。
_msg={}; if (l === ‘Demo.Dynamic.Scalar.Double’){ _msg.payload={ “data”:{ Demo_Dynamic_Scalar_Double:y } } } if (l === ‘Demo.Dynamic.Scalar.Int16’){ _msg.payload={ “data”:{ Demo_Dynamic_Scalar_Int16:y } } } |
Check in Proficloud.io
では実際Proficloud.ioで確認しましょう。
ServicesのTabを開き>Assign Metricをクリックします。
いまは先ほど追加したOPC UA Nodeが見えるはずです。
GO TO SERVICEします。
Demo ServerのNodeの現在値がGraphとして表示されましたね!
毎回クリックするにも面倒なので、TimeStampを周期送信するように変更します。
RepeatにInterval変更し、1sくらいでいいだと思います。
先のProficloud.io DashboardからRefreshのボタンや自動Refreshの時間を設定できます。
データの変化がみえるはずです!
Example 6.2 Play with TwinCAT3
Reference Link
Point1-TwinCAT OPC UA Configurator Tools bar
View>Toolbards>TwinCAT OPCUA ConfiguratorからOPCUA 構築設定できます。
Point2-Node Red EndPoint
Default Portは4840で、IPやHost Nameを入れてください。
Point3-TMC File Enable
PLC>SettingsでTMC Fileを有効してください。
Point4-BadLicenseExpired
もしUaExpertからTwinCAT3のNodeをMonitorするときBadLicenseExpiredエラーが出たら、ライセンスを入れる必要があります。
SYSTEM>Licenseします。
Manage LicensesでTF6100を探し、cpu licenseのCheck boxを入れます。
Order Information(Runtime)のTabで7 Days Trial Licenseでライセンスを生成します。
魔法のコードを入力します。
ライセンス作成成功です!
License画面を閉じ、もう一度開くとライセンスが更新された状態になります。
最後はもう一度Active Configurationしましょう。
UaExpertにはNodeのStatusCodeがGoodに変わるはずです。
Point5-Security
OPCUAのセキュリティはアプリケーションによって変更してください。
Point6-Variable attribute
OPCUA Clientのアクセス許可の変数は以下のAttrbuteを追加してください。
{attribute ‘OPC.UA.DA’ := ‘1’} |
Flow
FlowはExample6.1とあまり変わらないです。
Check in Proficloud.io
もう一度Proficloud.ioでCheckしましょう。
よし、TwinCAT3からの変数もみえました。
GO TO SERVICEでDashboardを見ます。
問題ないようですね。これで終わります!