クラウドエンジニアブログ

Azure IoT EdgeのModbusモジュールのご紹介

中平 頼孝

はじめに

前回の Azure IoT Edge の紹介に引き続き、Azure IoT Edge の Modbusモジュールの紹介になります。

Azure IoT Edge の内部は、様々なモジュールで構成されています。
モジュールは、Pub/Sub メッセージングモデルで構成されており、各モジュールは Broker を介してメッセージのやり取りを行い処理するため、他のモジュールに直接影響しない(依存しない)作りになっています。

Pub/Sub メッセージングモデル

  • Publisher メッセージを送信する
  • Subscriber メッセージを受信する
  • Broker publisher から送信されたメッセージを適切な subscriber に送信
Azure IoT Edge

これにより、システムに合わせて適切なモジュールを組み込み、組み換えることで、様々なデバイスとの通信を可能にします。

Modbus モジュール動作確認

今回は、Modbus モジュールを利用した Device to Cloud(D2C) と、Cloud to Device(C2D)のデータやり取り動作についてまとめます。

今回利用した主なモジュールは、以下の通りです。

モジュール名 説明
iothub Azuer IoT Hub とのデータ連携を行うためのモジュール。
Azuer IoT Hub の接続情報と接続プロトコルを指定することが可能。
modbus_read Modbus とのデータ連携を行うためのモジュール。
Modbus の接続先とデータを読み取る場所とインターバルの設定が可能。
mapping
(identity_map)
Azure IoT Hub で管理している device 情報と Modbus の Mac アドレス情報との変換を行うモジュール。

Device to Cloud(D2C)

Modbus 対応デバイスの情報を、クラウド上の Azure IoT Hub へ送信する場合の順序を以下に記します。

Azure IoT Edge
  1. device 情報の取得
    modbus_read モジュールが、指定した Modbus の情報を取得します。
    modbus_read モジュールが起点となり、指定したインターバル間隔で Modbus の情報を取得します。
  2. Publish
    device 情報と Modbus の Mac アドレスを Broker へ Publish します。
  3. デバイス識別子変換
    Modbus の Mac アドレスを Azure IoT Hub で管理されているデバイス識別子に変換します。
    元の device 情報メッセージに変換した情報を付与し、新しいメッセージとして Broker へ発行します。
  4. Subscribe
    iothub モジュールがデバイス識別子を含んだメッセージを受け取ります。
  5. Azure IoT Hub へデータ送信
    受け取ったメッセージを Azure IoT Hub へ送信します。
    Azure IoT Hub への送信プロトコルは、MQTT, AMQP, HTTP の中から選択することが可能です。

Cloud to Device(C2D)

クラウド上の Azure IoT Hub から、Modbus 対応デバイスを制御するためのメッセージを送信する場合の順序を以下に記します。

Cloud to Device(C2D)
  1. device 制御命令
    Azure IoT Hub へ、device 制御命令のメッセージを送信します。
  2. iothub モジュールへ
    iothub モジュールへ device 制御命令のメッセージが渡りますが、設定している接続プロトコルによって情報の渡し方が異なります。
    • MQTT / AMQP の場合
      Azure IoT Hub が起点となって、iothub モジュールへメッセージを送信しているように見えますが、この通信経路は先に iothub モジュール側から Azure IoT Hub に対して確立したコネクションを利用します。WEB サービスに携わっている方であれば、Websoket による双方向通信と同等のものが iothub モジュールと Azure IoT Hub 間で確立していると言った方がイメージ付きやすいかもしれません。
    • HTTPの場合
      iothub モジュールが起点となり、Azure IoT Hub へ定期的にポーリングを行うことで、メッセージを取得します。
      メッセージのポーリングは25分間隔で行われます。
      (頻繁に device 制御を行う必要の無い場合は、HTTP でも対応できると思われます。)
  3. Publish
    取得した device 制御命令を、Broker へ Publish します。
  4. デバイス識別子変換
    送り先となる Modbus の Mac アドレスに変換し、元の device 制御命令と合わせ、新しいメッセージとして Broker へ発行します。
  5. Subscribe
    modbus_read モジュールが Mac アドレス情報を含んだメッセージを受け取ります。
    Azure IoT Hub への送信プロトコルは、MQTT, AMQP, HTTP の中から選択することが可能です。
  6. device 制御
    受け取った device 制御命令のメッセージを解釈し、device へ適切な命令を実行します。

以上、Azure IoT Edge の Modbus モジュールの動作についての紹介でした。


次回予告


【総合】お問い合わせ

ソリューションに関する全般的なお問い合わせはお気軽にご相談ください。

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録