Wago#Let’s Start with WAGOCloud!

WAGO CloudはPFC Controllerを使用し複数の装置からデータを収集・分析できるCloud Platformで、なおかつPFC ControllerをリモートMonitor・管理も可能です。自分も少し使いましたが、画面はすごくUser に優しい、接続もそこまで難しくない。ですが、ドキュメントは少ないので、この記事シリーズから色々を補完していきたいと考えています。

ちなみに、30日のTrial期間でWAGO Cloudを試すことが可能です。

Thanks!

この記事が出来上がるのはワゴジャパン株式会社さまから機材を貸してくださったおかけです。誠にありがとうございます。

ワゴジャパン株式会社

PFC Controller750-8215はワゴジャパン株式会社さまが貸してくださったものです。WAGO は 1951 年に設立され、いままで端子台の技術で世界中の産業にずっと貢献してるドイツ企業、PUSH WIREやCAGE CLAMPの技術などで現場を支えてきました。他にWAGOさまにもPLC LINEUPがあり、オープン性と柔軟性に重点を置いた自動化ソリューションを提供しています。

ワゴジャパン株式会社は 東京都江東区に本社があります。

https://www.wago.co.jp/

Reference Link

WAGO Cloudを使用するにはE!COCKPITの操作も必要です。

以下は参考記事です。

Wago#e!COCKPIT Installation
Wago#Using E!COCKPIT to update the CPU Firmware
Wago#e!COCKPIT Your First Program!

Big Concept

こちらはWAGO CloudだけではなくPFC ControllerがIOT Servicesを使用するときの大まかなコンセプトになります。

  • E!COCKPITから専用のIEC 61131-3 ライブラリが提供されており、PLC RuntimeでCloud Platformに送信するデータなどを直接Programmingできます。
  • Linux ApplicationがPFC Controllerの裏に走り、PLC RuntimeのデータをCloud Platfromに送信や受信します。
  • Linux Applicationから各Cloud PlatformにMQTTを使用します。
  • 最後はCloud Platformからデータ監視・アラームなどのことをやります。

Data Protocol

Cloud接続ではPFCのPLCプログラム(今回使用するのは750-8215)から複数のProtocolでCloudを転送できます。つまり、PFC CPUがPLC プログラムでIEC ライブラリを使用し、Linuxアプリケーション経由>MQTTで各Cloudアプリケーションにデータを送信します。

注意するのは1つのConnectionで複数のData Protocolに同時にアクセスできないことです。

WAGO Protocol

Wago ProtocolはPLCプログラムからデータを簡単にCloudアプリケーションに送信することができます。そのWago ProtocolはWago Cloudだけではなく様々なCloud Platfromにも対応可能です。例えば、

  • WAGO Cloud
  • Azure
  • AWS
  • IBM Cloud
  • MQTT For AnyCloud

Native MQTT

PFC CPUにもMQTT Clientを立ち上げMQTT BrokerにデータをPublish/Subscribleすることできます。例えば、

  • AWS
  • SAP IoT Services
  • IBM Cloud
  • MQTT For AnyCloud

Sparkplug

Sparkplug(Sparkplug Payload B)がSupportできることになり、PFC CPUがlgnitionのようなSCADAシステムにデータを送信することできます。

IEC Libraries

WagoAppCloudはICE 61131ライブラリでE!COCKPITからPLCプログラムを作成しデータをCloud Platfromに送信できます。

  • FbCollectionLogger
  • FbCollectionLogger_2
  • FbCommandConfigurator
  • FbCommandConfigurator_2
  • FbCommandListener
  • FbCommandListener_2
  • FbStatus_WagoProtocol
  • FbStatus_WagoProtocol_2

Linux Application

PFCの裏でLinux アプリケーションが動いており、PLCとCloudアプリケーション間のデータやりとりの処理を行い、そしてPLCプログラムでIECライブラリ(WagoAppCloud)で実装します。PFCとCloudアプリケーション間はMQTT Protocolを使用し、TLS(Transport Layer Security)で暗号化します。Linux Applicationでは以下の情報を提供します。

  • Device Information
    Linux ApplicationはCloud Applicationに接続するときのPFC指定情報。
  • Device Status
    Linux ApplicationはCloud ApplicationにおけるPFCの状態遷移。

そしてWago Protocl CachingはWBM(Web Based Management)からRAMか、SD Cardに設定することできます。

IEC Application

Telemetryはデータを収集し、監視と分析のためにそれを他のアプリケーションに送信するプロセスで、E!COCKPITはFunction Block ”FbCollectionLogger”で実装します。そのFunction Blockは2つの方法からCloudにデータを送信できます。

  • Cyclicallyで送信
    データをサイクル的にCloudアプリケーションに送信する。
    Sample IntervalはCyclicallyデータ送信するときに使用するパラメータ。
  • Event Base
    データをなにかの状態Triggerによりデータを送信する
    Sampling Data Mode・Collection Trigger・Variable TriggerはEvent Baseでデータ送信するときに使用するパラメータです。

Be Careful!

PLCプログラム内でデータを収集するとき、変数の構造や変数名やデータをPublishする周期を明確する必要があります。特にPublish周期は各データの収集周期はしっかり考えましょう。そして収集とPublish周期の時間はRETAINで定義してください。

Limit

RAMの場合、最速100msでSample収集できます。

SD-CARDの場合、最速1sでSample収集できます。

Publish周期は最速1sです。

Ports

前も書きましたが、PFC ControllerはMQTTを使用しデータをCloudアプリケーションに送信しますので、Port1883(暗号化されてないデータ)と8883・443(暗号化されたデータ)を使います。PFC ControllerをCloudアプリケーションと接続する前にFirewallの設定でData TrafficeがBlockされてないかを再確認しましょう。

Cache Mode?

先程データ収集やCloudアプリケーションにデータ送信するときCache Modeにより制限が異なると書きましたが、Cache Modeはなにかを少し説明します。Linux ApplicationはPLCプログラムから受け取ったデータをCacheに書き込み、そしてCloudアプリケーションに送信するのが普通の流れです。

もしデータをCache からCloud正常に送信したらそのデータがCache内に削除されます。逆にネットワークの問題で送信に失敗したらデータがCacheにたまり、つまりデータがネットワーク障害発生しても失うことなく、ネットワークが復旧したらまた再送信する仕組みになっています。

ですが、ネットワーク障害が長くなり、CacheのMax Sizeに到達するとPFCのLinux ApplicationはFirst In First Outのルールで古いデータから順次データを削除します。それでデータがなくなります。

RAM Mode

RAM MOではDefaultでCache Modeで最大Sizeは3 MBで、電源が損失するとすべてのデータが失われます。WagoのManualによるとPLCプログラムはまだ開発の段階でCache ModeはRAM Modeを強く勧められます。

SD Card Mode

逆にCloudに送信すべきデータはネットワーク障害によりデータ損失にならないようにするのが大事で、SD Card Modeは電源供給を失ったとしてもデータがKeepされます。

Be Careful!

The Lifetime of SD Card

SD Cardは寿命があり、読み書きの回数によりその寿命が減ります。WAGOのManualからWago専用のSD CardやMico SD Cardを使用するのが勧められます。SD Cardを選定するときメーカーのData Sheetを確認しましょう。

Class

最低限はClass 10のSD Cardを使用しましょう。Cache データが溜まってるPFC CPUが起動するとき想定外の時間がかかります。

Speed

SD Cardの読み書き速度はRAMより遅いので、WAGOのManaulにより最低限1000msの収集周期が勧められ、周期が短すぎるとデータが損失することが発生します。

Requirements

Web Browser

Controller

  • PFC100 Controller>Firmware v11
  • PFC200 Controller>Firmware v11
  • PFC XTR Controller>Firmware v11

Other

  • Ethernet やWireless SIM CardのInternet Connection
  • E!COCKPITツール

Function Block

FbCollectionLogger

このFunction Blockを利用することで変数の現在値をCloudに送信することできます。プログラムを作成するときCloudに送信したい変数を”Collection”の配列にまとめる必要があり、配列のMemory addressをFbCollectionLoggerに渡します。

注意するのは、FbCollectionLoggerはBackgroud TaskをCyclicallyに呼び出す必要があります。 (task priority 15).

gMAX_COLLECTIONSで最大Collections数を10個でリミットされ、parameter list ‘Param’から変更できます。

VAR_INPUT

VariableTypeDescription
pCollectionsPOINTER TO ARRAY [0..(gMAX_COLLECTIONS – 1)] OF typCollectioncollection list変数のPointer・Memory Address
dwCollectionsCountDWORDcollectionの数

VAR_OUTPUT

VariableTypeDescription
oStatusWagoSysErrorBase.FbResultFBの実行結果

typCollection (STRUCT)

VariableTypeDescription
dwCollectionIdDWORDCollection独自のID
sNameSTRING(80)Collection名
pVariableDescriptionsPOINTER TO ARRAY [0..(gMAX_VARIABLES – 1)] OF typVariableDescriptiontypVariableDescriptionの配列アドレス、変数の情報が格納されています。
dwVariablesCountDWORDpVariableDescriptionsに含まれている変数の数
eSamplingDataModeeSamplingMode
Default=eSamplingMode.LIBRARY_DEFAULT_AUTOMATIC
pPublishIntervalPOINTER TO TIMEDataをPublishする時間間隔<1sに設定されても1sになります。(Sampling Mode = LIBRARY_DEFAULT_AUTOMATICの場合)
pSampleIntervalPOINTER TO TIMEDataを収集する時間間隔RAM Mode=最小100msSD Card Mode=最小1000ms
xCollectionTriggerBOOLEvent Base使用するとき、すべでの変数をCollectionに送信するTrigger
ltTimeStampUTCLTIME LTIME#0nsオプションで、UTC Timestampになります。SetされてないならRuntimeが自動生成されます。
typStatetypLoggingState内部変数・Collectionの状態を示す
typContexttypInternalContext内部変数

typVariableDescription (STRUCT)

VariableTypeDescription
dwTypeIdDWORD変数のカタログ
eValueTypeeVariableValueType変数のData Typeとサイズ
pAddressPOINTER TO DWORD変数のアドレス
sTagSTRING(80)Iot Plaformに表示するTag 名
sUnitSTRING(5)Iot Plaformに表示する単位
xVariableTriggerBOOLEvent Baseで使用する、True=データを送信

.

Create An Account!

まずWagoのHPからWago Cloudアカウントを作成します。

https://www.wago.com/global/open-automation/cloud-automation/automation-wago-cloud

初めての方はRegister nowをクリックしWago Cloudアカウントを申し込みましょう。

メールアドレスを入力し、”Send Verification Code”ボタンで認証コードをもらいます。

そうするとVerification Codeの待ち画面になります。

メールをCheckし、WagoのメールからCodeをCopyし貼り付けましょう。

Verify Codeで進みます。

User 情報を入力、規約に同意してRegisterボタンでUser登録します。

Done!アカウントが登録成功しWago CloudのHome Pageに変わりました。

Configure WorkSpace

WorkspaceはWago Cloudに接続するデバイスを管理するエアリアで、他のWago Cloud Userと共有できます。注意するのは1つのデバイスは1つだけのWorkspaceにしか紐付けられません。そしてWorkspaceに2つの権限Levelがあります。

  • Workspace Administrator
    Workspaceの管理や設定などができます。
  • Workspace User
    Default Userで、Workspaceに設定変更なども権限がありません。
    Workspaceを見るしかできない

最初にアカウント作成されたとき、すでに”My workspace”があります。

Add Devices

Device Managmentをクリックします。

Device Managment画面が表示されます。

Workspaceが新規作成されました。

New>Devicesで新しいデバイスを追加します。

OKで進みます。

Device名を入力>Createします。

Done!次はそのDeviceの情報をPFC Controllerに合わせて設定する必要があります。

Controller Side

Configure Wago Controller

Check IP

もしWago ControllerのIPがわからないならAdvnced IP ScannerやWiresharkなどのSoftwareでIPを確認しましょう。

Cloud Connectivity Setup

PFC ControllerのWBMをアクセスし(Https://yourPFCControllerIP)からCloud Connectivityの項目があります。StatusではいまPFC ControllerとCloud Applicationの接続状態を一覧できます。

Connection1をクリックし、PFC ControllerとCloudの接続設定を行います。

Enabled

まずはEnabledのCheckboxを入れます。

HostName

Device ID

Activiation Key

Reboot

最後はSubmitボタンで設定を適用し、PFC ControllerをRebootすればOKです。

NTP Client

次はNTP Clientの設定です。PFCの時刻情報は大事で、もし時刻情報が正しくなければCloud Applicationと接続するときCertificate認証エラーになります。PFCの時刻を設定するか、NTP Clientを有効にしましょう。

Ports and Services>NTP Clientをクリックします。

Service enabledのCheckboxを入れ、Time server1を216.239.35.8に設定します。

216.239.35.8はGoogleのNTP Serverです。

Interface Setup

PCF ControllerはInternetと接続することによりCloud Servicesの連携やTime server同期ができます。今回使用する750-8215はX11,X12はProfinet InterfaceなのでPN Controllerから設定を上書きされる可能性があり、X11,X12をIOT Portとして使用するのは控えましょう。

Configuration>Networking>TCP/IP Configurationをクリックします。

今回私はX1を使用しますので、X1をDHCP Modeに設定変え、家のRounterとつなげばOKです。

Check

WAGO Cloudから先に追加されたControllerのStateはConnectedに変わりましたね。

PFC Controller>Cloud Connectiveity>StatusでConnection1のCloud connectionもConnectedに変わりました。それでOK!

E!COCKPIT

Add WagoCloudApp

E!COCKPITからLibrary Manager>Add Libraryします。

WagoAppCloudを検索し追加しましょう。

PROGRAM

変数の初期化とデータのCollectionにGroupする簡単なプログラムです。

PROGRAM PLC_PRG
VAR
Counter :INT;
Var1:WagoAppCloud.typVariableDescription;
Trigger:BOOL;

Logger :WagoAppCloud.FbCollectionLogger;
Status:WagoSysErrorBase.FbResult;
END_VAR

VAR RETAIN
tSampleInvTime :TIME:=T#1S;
tPublishInvTime :TIME:=T#5S;

END_VAR

VAR
MyCollections:WagoAppCloud.typCollection;
END_VAR

Counter:=Counter+1;
Var1.sUnit:=’mm’;
Var1.pAddress:=ADR(Counter);
Var1.eValueType:=WagoAppCloud.VVT_INT;
Var1.sTag:=’Counter’;
Var1.dwTypeId:=1;


MyCollections.dwCollectionId:=1;
MyCollections.dwVariablesCount:=1;
MyCollections.sName:=’MyCollections’;
MyCollections.pPublishInterval:=ADR(tPublishInvTime);
MyCollections.pSampleInterval:=ADR(tSampleInvTime);
MyCollections.pVariableDescriptions:=ADR(Var1);

Logger(
pCollections:=ADR(MyCollections)
,dwCollectionsCount:=1
,oStatus=>Status
);

Download

DownloadするときはBoot Application Downlaodも忘れずに。

Update Firmware

もしLibraryがImportエラーになったり、CPUにDownloadできなかったら、PFC ControllerのFimwareやCodesys Compilerを最新にUpdateしましょう。

Result

From Workspace

まずWAGO CloudからConnectionsがOnlineになりました。

Workspaceからも先程プログラムで追加された”MyCollections”、そして変数の”Counter”がありました。

Counter変数の最後の更新値も確認できました。

Dashboard

Add New Dashbaord

今度はDashboardを作成してみます。

Dashboard画面に変わり、+ボタン>Addします。

TypeをDashboardを選び>Okします。

Dashboardが作成されました!

Add new Panel

Add new Panelで進みます。

Panelの作成画面に変わります。

Change Title

まず右側にでTPanelのTitleとDescriptionを変更します。

Add Query

DefaultでPanelはもうすでにQuery一つが作成され、一番下にScrollしてください。

Data TypeをTelemetry選択し、MyCollectionsを展開すればCounter変数があり、CheckBoxに入れ、Run QueryボタンでRequestを送ります。

もちろんTime seriesだけではなく、Bar Chartなど様々な表示を変更もできます。

例えばTable表示を選んでみます。

そうすると時間の列とCounter値がTable Formatで一覧できます。

>のところをクリックするとQueryを収めます。

鉛筆ICONでQuery 名の変更も可能です。

先程”A”のQueryはCounter に変わりました。

Add more Query

+QueryでもうひとつのQueryを追加します。

今回はPFC Controllerの状態を取りたいので、Data TypeをDevice dataにします。

中にFirmware Versionなどを含む複数の項目を選びます。

Table Viewに切り替えます。

いまデータがTable表示になりました。

下のDrop listをCounterから先程追加したQueryに変わります。

Done!

Check it!

最後、Panelを保存しDashboardからも確認しましょう。

問題ありませんね!

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする