Opto22#Groov EPIC ControllerでMQTTを使ってみよう

今回はOPTO22第3話になります。前回はOPTO22 EPIC ControllerでModbus TCP経由からIOをアクセスし紹介しましたが、次はOPTO22をMQTT Protocol使用する方法を紹介しようと思います。

さ、はじめよう!

Reference Link

Opto22#Groov EPIC ControllerにCodesysを入れよう

MQTT?

groov EPICおよびgroov RIOには、通信効率の向上とITへの依存の軽減を図るためのMQTT通信が含まれています。MQTTは、そのアーキテクチャのために、多くのIIoTアプリケーションに適したパブサブ(パブリッシュ-サブスクライブ)プロトコルです。

パブサブアーキテクチャでは、ブローカーと呼ばれる中央サーバーがすべてのデータを処理します。MQTTクライアントは、データをブローカーにパブリッシュしたり、データを取得するためにサブスクライブしたり(または両方)することができます。データをパブリッシュするクライアントは、データが変更されたときにのみ送信します。データをサブスクライブするクライアントは、データが変更されたときにのみ、ブローカーから自動的に受け取ります。

これに対して、リクエスト-レスポンス(またはポーリング-レスポンス)アーキテクチャでは、クライアントとサーバーが直接接続されている必要があります。クライアントはデータの変更を知らないため、定期的な間隔でデータを要求する必要があります。

MQTTのパブサブは、IIoTアプリケーションに対してリクエスト-レスポンスに比べて3つの主な利点があります:

  • ネットワークトラフィックが全体的に削減されます。データは定期的な間隔ではなく、変更があったときにのみパブリッシュおよび送信されるためです。
  • ブローカーがデータの中央ソースとなるため、サーバーは複数のクライアントに対して負荷をかける必要がありません。また、不安定な接続や低帯域幅のリモートデバイスでもデータをパブリッシュまたはサブスクライブすることができます。

groov EPICおよびgroov RIOでは、MQTTをgroov ManageからまたはIgnition/Ignition Edgeを介して使用することができます(GRV-EPIC-PR1、GRV-EPIC-PR2、およびGRV-R7-MM2001-10で利用可能)。

Exmaple

groov EPICおよびgroov RIOを介して提供される文字列ペイロードまたはSparkplug-Bペイロードを使用したMQTTトランスミッションは、オンプレミスおよびリモートのデータ通信において利点を提供します。

図では、産業地域のgroov EPICシステムが独自のI/Oおよび他のPAC、PLC、RTUを介してセンサーとアクチュエータに接続し、MQTTブローカーを通じてデータをパブリッシュおよびサブスクライブしています。

メインサイトでは、Ignition Edgeとgroov EPICもブローカーを介してデータをパブリッシュおよびサブスクライブし、データベース接続とシステムの可視化を提供しています。

MQTT Advantages

  • Designed for industrial systems
  • デバイスから発信される通信
  • ブローカーでの集中セキュリティ管理
  • データは変更時のみ例外的に報告
  • 軽量データ通信
  • 少ない通信リンク
  • ネットワーク上のトラフィックが大幅に減少
  • 断続的な接続に最適
  • ブローカーはオンサイトでもオフサイトでも可能
  • VPNやファイアウォールのポート開放が不要
  • IT部門への依存度が低い

Getting Started with MQTT in groov Products!

Opto22のgroov EPIC®エッジプログラマブル産業用コントローラとgroov RIO®エッジI/Oは、groov Manage、Node-RED、またはInductive Automation®のIgnition Edgeを介して、MQTTデータ通信を使用する多くの方法を提供します。

Implemenation

groovMANAGE画面を開き>Data Serviceをクリックします。

Data Servicesの設定画面が表示され、その中にMQTTだけではなくOPC UA Server設定も含まれています。OPC UA Serverに関してはまた次回の記事で紹介します。

MQTT Configuration

MQTT Brokerの接続設定を変更するため、MQTT>MQTT String Configurationを開きます。

MQTT Stringの設定画面が表示されます。

Enable

最初はConfiguration>EnableにあるSlide ButtonでMQTT機能を有効します。

Group Topic

MQTT Base TopicはMyOpto22に設定しましたが、更に細かくデータを切り分けたいのであればMQTT Group Topic/MQTT Subgroup Topicを設定してください。

(こちらの設定はOptionalでEmptyでも問題ありません、いまの設定だとMyOptio22/XXX/XXXのようなTopicをBrokerに送信します)

こちらはTopicの設定Formatになります。

<Base Topic>/<Group Topic>/<Subgroup Topic>/<Device Topic>/<Tag>

<Base Topic>/<Group Topic>/<Subgroup Topic>/<Device Topic>/#

Topic paths and wildcards

次のSessionに進む前にまずTopicなどについて話しましょう。

公開したいデータを公開すると、購読者が受信するデータを形成するために、MQTTトピックパスにワイルドカードを含めることができます。ワイルドカードは文字列とSparkplugの両方で同じように機能します。利用可能なワイルドカードは、

  • マルチレベルのナンバーサイン(#)
  • シングルレベルのプラスサイン(+)

の2があります。

ではパブリッシャーから利用可能なトピックパスと各レベルのデータが下記があるようにします。

  • opto22/manufacturing/line1
  • opto22/manufacturing/line2
  • opto22/shipping/line1
  • opto22/shipping/line2

購読者が必要なデータを取得する方法は次のとおりです。

  • 購読者はその正確なトピックパスを使用し、トピック opto22/manufacturing/line2 のデータを購読するには、購読者はその正確なトピックパスを使用します。
  • マルチレベルワイルドカード # を使用しトピック内の任意のレベルのデータを購読します。たとえば、パス opto22/manufacturing/# は opto22/manufacturing、opto22/manufacturing/line1、および opto22/manufacturing/line2を購読します。
  • シングルレベルワイルドカード + を使用し、1つのトピックレベルのデータを購読できます。たとえば、パス opto22/+ は opto22/manufacturing および opto22/shipping に購読しますが、opto22/、opto22/manufacturing/line1、opto22/shipping/line1 などには購読しません。このワイルドカードはトピックパスの中間でも使用できます。たとえば、opto22/+/line1 は opto22/manufacturing/line1 および opto22/shipping/line1 に購読します。

Add MQTT Broker

次はOpto22に接続するMQTT Brokerを追加します。Brokers>Add MQTT Brokerをクリックします。

MQTT Brokerの接続設定画面が表示されます。

Broker Address

Broker AddressにMQTT BrokerのIPアドレス:Port番号を入力してください。

User name

User nameやPasswordなしで接続可能な場合もありますが、Opto22はDefaultUsernameが必ず設定しないといけないので、もし接続先のBrokerがUsername/Passwordなしの場合は適当な文字列を入力してください。

Done!Brokersが追加されました。

Save

右上にあるSaveボタンで設定を保存しましょう。

Scanned Devices

MQTT関連の設定が終わったら次はScanned Devicesを設定します。Scanned Devicesはgroov CPUにインストールされているモジュールやPAC ControllerのデバイスをMQTT/OPC UA経由で公開する設定になります。

TutorialではPAC Controller関連はまだやっていませんので、まずgroov CPUにインストールされているIO モジュールから設定したいと思います。

Scanned Devices>Add Local I/O Systemをクリックしましょう。

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

DeviceID

DeviceIDを設定する必要があり、そのIDはMQTTとOPC UAのNode IDになります。

Save

最後はSave Buttonで設定を保存しましょう。

Scanned Devicesにmyidが追加されました。

Configure

I/O Channel

次はmyid のLocal I/O Systemの設定を行います。

groovMANAGE画面からいまgroovCPUにインストールしたモジュールを一覧できます。Slot0の隣りにある”DI”ボタンをクリックしましょう。(ちなみにDI=デジタル入力、DO=デジタル出力、AI=アナログ入力)

デジタル入力モジュールの各チャンネルの状態を確認できますし、該当するChannelの名前も個別で設定できます。例としてDI0、つまりChannel0を設定するためにクリックしましょう。

該当するチャンネルの現在詳しい状態を確認でき、Configureで進みます。

Channel0の設定画面が表示されます。

Name

Name Fieldはチャンネルの名前になります。

State

Public Access>State(Read)でChannel0の状態をMQTT/OPC UA経由で公開できるかを設定できます。

State(Read)のSlide ボタンをONにすると、CounterなどChannel0の詳しい情報も設定によって公開できます。今回のTutorialではStateのみです。

Save

右上にあるSaveボタンで設定を保存します。

Done!いまDI0の名前はswitch1に変わりました。

Info

実はModule画面ではInfoのTabからチャンネルの配線図も確認できます。

Enable

Data Servicesの設定画面に戻り、Data Service Runtime>EnableボタンをクリックしData Serviceを有効にしましょう。

少々お待ち下さい…

Done!いまData ServiceのStatusはRunningに変わりました。

View the Log

もしEnableできないもしくはBrokerの接続状態を確認したいなら、Data Servie Logをクリックしてください。

Done!Brokerと繋がりました。

Result

最後はMQTT ExploerでBrokerを接続すれば、Opto22からのMQTT Messageが受信できるとわかります。

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

シェアする

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

フォローする