PCプラットフォームによる PCプラットフォームによる 産業用ソリューションプロバイダー 産業用ソリューションプロバイダー


採用情報


お問合せ

JapaneseEnglish

  • PP264
ホーム > RT-edge > コンテナ仕様 外部通信 MQTT通信
外部通信コンテナ MQTT通信
最終更新日:2023/12/20 
 概要
MQTT (Message Queuing Telemetry Transport)は、IoTに特化した軽量なデータ配信用プロトコルで、主にクラウドを介したデータ参照を提供するために利用されます。通信量が削減された、必要なデータでメッセージを構成するPub/Sub(出版-購読型)モデルに特化しています。

MQTTコンテナはRT-edge上位通信I/Fコンテナの一種で、RT-edgeの扱うデータタグを、リモート機器から参照できるようにするMQTTプロトコル通信クライアント機能にあたります。
外部通信コンテナ MQTT通信 イメージ
 特長
ローカルエリアからクラウドまで対応
MQTTはTCP/IPを使用したプロトコルで、サーバにあたる「MQTTブローカ」との接続によって、データの読みと書きを実現します。MQTTブローカは、無償ソフトウェア、市販有償ソフトウェア、クラウドベースなどの各種形態が提供されていて、これらに接続できます。
接続設定のしやすさ
MQTTコンテナの動作設定はxmlに定義します。接続先ブローカのIPアドレス、ポート番号、接続ユーザ情報を指定します。
データ共有のしやすさ
データ共有もxmlに定義します。MQTTトピック名とRT-Edgeタグ名を指定して、公開する場合はパブリッシュ対象タグの定義、外部参照する場合はサブスクライブ対象タグを定義することになります。
 仕様
動作プラットフォーム 工業用PC、内蔵LANポート一基が必要
基本ソフト Windows 10 Enterprise 64ビット
基本ソフト .Net Framework 4.6
基本ソフト RT-edge バージョン 3.4.0以降
使用可能タグ数 最大10,000個
対応プロトコル MQTT/TCPに対応
ブローカ接続数 同時接続数1
対応ブローカ mosquittoブローカで動作確認済
MQTTトピック名 半角英数字と記号(スラッシュ,@)が利用可能
トピック名の最大48文字
パブリッシュデータ更新タイミング パブリッシュ対象のRT-Edgeタグ更新時。データ送出周期を10ミリ秒~で指定可能。
デフォルト300ミリ秒
※Windowsの負荷状態などによりこの時間は正確ではありません
サブスクライブデータ更新タイミング MQTTブローカからプッシュされるメッセージの受信で即座にRT-Edgeタグに反映されます
※Windowsの負荷状態などによりデータ更新が遅れる場合もあります
Edgeタグ機能
TagsブロックのTagアイテムに列挙されたEdgeタグは、MQTTコンテナの起動と連動して用意されます。
Edgeタグは1つのデータの容れ物にあたります。
Edgeタグ機能
パブリッシュ機能
TagRef_OUTブロックのTagRefアイテムに列挙されたEdgeタグが、MQTTブローカに発行/パブリッシュされるトピック名となります。これによりRT-edge内のデータが外部に公開されます。
パブリッシュ機能
対象Edgeタグの値の変化が検出されるとMQTTブローカへメッセージ通知されます。
サブスクライブ機能
TagRef_INブロックのTagRefアイテムで列挙されたEdgeタグが、MQTTブローカから購読/サブスクライブしたい対象トピック名となります。これにより外部のデータがRT-edgeに取り込まれます。
サブスクライブ機能
MQTTブローカから、指定したトピック名でメッセージ通知が届き次第、Edgeタグの値が更新されます。
 サンプルシステム
MQTTコンテナを用いる、以下のような仕様のサンプルEdgeシステムを想定して、一連の動作確認フローを解説します。
  1. RT-edgeが入力したセンサデータをブローカに公開(パブリッシュ)します。
  2. ローカルエリアネットワーク内にブローカ(サーバ)を設置し、LAN接続します。
  3. 購読(サブスクライブ)データは、ブローカからMQTTメッセージで届き、Edgeタグが更新されるので、HMI表示に利用します。
MQTTブローカサーバの構築
LAN接続された外部コンピュータに、MQTTブローカを構築します。
■ ダウンロード
この解説では、オープンソースのMQTTブローカ「msquitto」をダウンロード、インストールします。
https://mosquitto.org/download/
■ MQTTブローカサーバの起動
Windowsコマンドプロンプト(cmd.exe)を起動して、次のようにコマンドをタイプしてブローカを起動・常駐させます。
MQTTブローカサーバの起動
MQTTコンテナ設定(ブローカ接続設定)
RT-Edgeコンピュータでは、接続先のMQTTブローカを定義します。
設定例を以下に示します。 MQTTコンテナ設定(ブローカ接続設定)
MQTTコンテナ設定(データ設定)
パブリッシュ対象となるEdgeタグと、サブスクリプション対象となるEdgeタグを設定、登録します。 MQTTコンテナ設定(データ設定)
外部からEdgeタグを参照する
オープンソースのデータ参照ツール「MQTT explorer (http://mqtt-explorer.com/)」などを用いてブローカに接続すれば、Edgeタグを外部からのサブスクライブ動作を確認できます。
外部からEdgeタグを参照する
■ RT-edge で取り込んだセンサ値が外部公開される
RT-edgeで使われているすべてのEdgeタグは、パブリッシュ対象にすることが可能で、これにより外部コンピュータは値参照できるようになります。

RT-edge I-I/Oコンテナが入力したセンサデータ値のEdgeタグを、パブリッシュ対象 TagRef_OUTに指定すれば、更新されたタイミングでメッセージが自動発行されます。
■ RT-edge APIでEdgeタグをアップデートしてみる
RT-edge ユーザアプリケーションは、APIを使ってEdgeタグの値更新できますが、パブリッシュ対象 TagRef_OUTに指定すれば、更新したタイミングでメッセージが自動発行されます。 RT-edge APIでEdgeタグをアップデートしてみる
外部データをEdgeタグで参照する
外部からサブスクライブしたデータは、RT-Edge標準のタグブラウザツールを用いると変化を参照できます。 外部データをEdgeタグで参照する
■ 手動で外部コンピュータからパブリッシュしてサブスクライブ動作をみる
外部コンピュータからWindowsコマンドプロンプト(cmd.exe)を起動して、次のようにコマンドタイプしてパブリッシュしてみます。
サブスクライブ対象に指定されたEdgeタグ”ESP32/02/temp”の値が、200に変化することがわかります。
RT-edge APIでEdgeタグをアップデートしてみる 1
同様に下記のコマンドでは、Edgeタグ”ESP32/03/temp”の値が300に変化することがわかります。
RT-edge APIでEdgeタグをアップデートしてみる 2
MQTTを用いたHMIアプリケーション
RT-edgeシステムのリモート対応HMIを開発しやすいのもMQTTコンテナの利点です。
RT-Edgeタグ名を使ってプログラミングできるようになります。
例では、オープンソースのC#実装である「MQTTnet (https://github.com/dotnet/MQTTnet)」を使って、HMIを開発しています。
MQTTを用いたHMIアプリケーション
HOME