ホーム ソリューション ホストと Smart Display 間の Modbus 通信 (スイッチ/Indicator 制御)

ホストと Smart Display 間の Modbus 通信 (スイッチ/Indicator 制御)

October 26,2023

イントロダクション

ホストと Smart Display 間の Modbus 通信

WINSTAR Smart Display をよりスムーズに導入いただけるよう、さまざまな用途を想定した実践的なデモプロジェクトを紹介しています。本記事では、Modbus 通信の基本的な仕組みを理解するためのデモ例を紹介します。

Modbus は、各種機器やセンサーとの通信・制御に広く使用されている産業用通信プロトコルです。本アプリケーションでは、Arduino ボードをホストコントローラとして使用します。Arduino は各種センサーや Toggle Button と連携し、Modbus を介して Smart Display の Gauge(ゲージ)や Indicator(インジケーター)、LED を制御します。本デモでは、Arduino Mega 2560 と RS485 Shield を使用して Smart Display と Modbus 通信を行います。

このプログラムでは、Modbus レジスタを使用してセンサー値を読み取り、表示ページを切り替えるほか、センサーの値に応じて LED を制御する方法を紹介します。

システム構成図
システム構成図

 

本デモで使用する機器・ソフトウェア

  1. Modbus 対応 7 インチ Smart Display
  2. Arduino Mega 2560
  3. Arduino Mega 2560 用 RS485 Modbus Shield
  4. Arduino IDE v2.0.4
  5. Modbus RS485 Dongle
  6. 物理ボタン
  7. 可変抵抗(ロータリーアングル)センサー
  8. LED
  9. GUI Builder v0.4.2 以降
 

本デモは、以下の3つの手順で進めます。

  1. GUI Builder でデモプロジェクトを作成する。
  2. プロジェクトをビルドしてアップロードする。
  3. Arduino ホストをプログラムする。
 

GUI Builder でデモプロジェクトを作成する

まず、GUI Builder を起動して新しいプロジェクトを作成します。プロジェクト名を入力し、デフォルトで自動選択されているプロジェクトフォルダを確認します。次にデバイスタイプを選択します。本デモでは 7 インチを選択します。続いて通信プロトコルを選択し、表示方向はデフォルトの横向き(Landscape)のままにします。UI Template で Blank を選択し、最後に Create ボタンをクリックして新しいプロジェクトを作成します。

GUI Builder でデモプロジェクトを作成する - 1

 

プロジェクトを作成すると、以下の画面が表示されます。

GUI Builder でデモプロジェクトを作成する - 2

 

本デモでは、もう1ページ追加する必要があります。Page ボタンをクリックし、続いて「+」ボタンをクリックしてページを追加します。

GUI Builder でデモプロジェクトを作成する - 3

 

Resource パネルでは、カスタマイズした背景を選択できます。

GUI Builder でデモプロジェクトを作成する - 4

 

背景は Page セクションから選択することもできます。

GUI Builder でデモプロジェクトを作成する - 5

 

次に、最初のページに戻り、Controls セクションを開きます。本デモでは Toggle Button を選択し、ページのレイアウト領域にドラッグ&ドロップします。Gauge と Indicator も同じ手順で配置します。

GUI Builder でデモプロジェクトを作成する - 6

 

プロジェクトをビルドしてアップロードする

ここまでの手順で2つのページを作成し、最初のページに Toggle Button、Gauge、Indicator の各 Widget を配置したら、プロジェクトをビルドしてアップロードします。Page Info セクションを開き、Device をクリックして Device Properties を選択します。Protocol の設定を確認した後、COM ポートを選択してボーレートを設定します。次に、Connect to device ボタンをクリックしてデバイスに接続します。最後に Upload ボタンをクリックしてプロジェクトをアップロードし、完了するまで待ちます。

プロジェクトをビルドしてアップロードする - 1

 

プロジェクトのアップロードが完了したら、OK ボタンをクリックします。

プロジェクトをビルドしてアップロードする - 2

 

アップロードが完了すると、以下のスタート画面が表示されます。

プロジェクトをビルドしてアップロードする - 3

 

スタート画面の後、最初のページが表示されます。以上で、GUI Builder でのプロジェクトのビルドとアップロードは完了です。

プロジェクトをビルドしてアップロードする - 4

 

Arduino ホストをプログラムする

以下の図に示すように、本デモで使用するレジスタアドレスは Arduino IDE のプログラム内で定義されています。プログラムでは、物理ボタンセンサー、可変抵抗センサー、LED の各ピンを定義した後、ModbusMaster ライブラリを使用して Modbus 通信を初期化します。また、表示ページ、Indicator、Gauge、Toggle Button を制御するための Modbus レジスタアドレスも設定します。

Arduino ホストをプログラムする - 1

 

ホストデバイスと Smart Display が Modbus RS485 を介してどのように通信するかを確認するには、GUI Builder の通信ログにある Test Device または Simulator セクションを参照してください。

以下の図は、Toggle Button のログメッセージデータを示しています。このデータから、Smart Display 上の Toggle Button のデータにアクセスする方法を確認できます。Data Byte の2番目のバイトは 00 06 の16進値で、Toggle Button のアドレスを表します。10進数に変換すると 6 となり、このアドレスを使用して Toggle Button にデータを書き込むことができます。ただし、本デモでは Toggle Button から Smart Display のデータを読み取るため、レジスタアドレス「7」を使用して Toggle Button のデータを読み出します。

Arduino ホストをプログラムする - 2

 

では、なぜ Toggle Button のデータを読み取る際にレジスタアドレス「7」を使用するのでしょうか。詳細については、Smart Display の Modbus 仕様書を参照してください。以下は仕様書の一部で、1番目のオブジェクト(Widget)である Toggle Button に使用されるアドレスを示しています。

Arduino ホストをプログラムする - 3

 

以下の図は、Gauge のログメッセージデータを示しています。このデータから Gauge のアドレスにアクセスする方法を確認できます。Data Byte の2番目のバイトは 00 6A の16進値で、Gauge のアドレスを表します。10進数に変換すると 106 となり、このアドレスを使用して Gauge Widget にデータを書き込むことができます。

Arduino ホストをプログラムする - 4

 

以下の図は、Indicator のログメッセージデータを示しています。このデータから Indicator のアドレスにアクセスする方法を確認できます。Data Byte の2番目のバイトは 00 CE の16進値で、Indicator のアドレスを表します。10進数に変換すると 206 となり、このアドレスを使用して Indicator Widget にデータを書き込むことができます。

Arduino ホストをプログラムする - 5

 

ADC_REF は 5V に設定され、ADC(Analog-to-Digital Converter)の基準電圧を示します。また、物理ボタンユニットの感度調整に使用されます。GROVE_VCC は 5 に設定され、回路で使用する Grove インターフェースの VCC 電圧を示します。FULL_ANGLE は 300 に設定され、回路で使用する回転角度の最大値を表します。コード内のコメントでは、この値が度単位であることが示されています。

Arduino ホストをプログラムする - 6

 

ここでは、プログラムで使用する各種変数とデータ型を宣言し、初期値を 0 に設定します。

Arduino ホストをプログラムする - 7

 

物理ボタンや LED などの外部デバイスに使用する各ピンのモードを設定します。また、以下の図に示すように、シリアル通信のボーレートも設定します。

Arduino ホストをプログラムする - 8

 

以下の図は ChangePageFunction の定義を示しています。データの書き込みには writeSingleRegister 関数を使用します。

Arduino ホストをプログラムする - 9

 

以下の図は、Arduino ホストが可変抵抗(Rotary Angle)センサーの値の変化を読み取った際、その値を Modbus 通信で Smart Display に送信し、Gauge の値を更新する処理を示しています。Gauge の値が 120 未満の場合、13 番ピンの LED は OFF、Indicator は緑色になります。Gauge の値が 120 以上になると、LED が点灯し、Indicator は赤色に変わります。

Arduino ホストをプログラムする - 10

 

以下の図は、Arduino ホストが物理ボタンセンサーの値の変化を読み取った際、その値を Modbus 通信で Smart Display に送信し、表示ページを切り替える処理を示しています。

Arduino ホストをプログラムする - 11

 

以下の図は、Arduino ホストが Modbus 通信を介して Smart Display から Toggle Button の値の変化を受信し、その値に応じて 12 番ピンの LED を点灯させる処理を示しています。

Arduino ホストをプログラムする - 12

 

ここは重要なポイントです。Smart Display へのデータ書き込みには writeSingleRegister 関数を使用し、Smart Display からのデータ読み出しには readHoldingRegisters 関数を使用します。また、Gauge などの動的な Widget と通信する際は、delay 関数の設定にも注意が必要です。Modbus では、データを送信して応答を受信した後に次のデータを送信します。そのため、Modbus でデータを送受信する際には、適切な遅延を設ける必要があります。

Arduino ホストをプログラムする - 13

 

Arduino IDE でプログラムの検証とアップロードが完了すると、デモ動作を確認できます。Toggle Button が OFF の場合、12 番ピンに接続された外部 LED も消灯します。Toggle Button を ON にすると、外部 LED がすぐに点灯します。

Arduino ホストをプログラムする - 14

 

本デモでは、Gauge を可変抵抗(Rotary Angle)センサーで制御します。Gauge の値が 0~120 の場合、Indicator は緑色で表示され、13 番ピンの LED は消灯します。Gauge の値が 120 を超えると、Indicator は赤色に変わり、13 番ピンの LED が点灯します。

Arduino ホストをプログラムする - 15

 

本デモでは、物理ボタンを使用して表示ページを切り替えることができます。物理ボタンセンサーを押すと2ページ目に切り替わり、もう一度押すと1ページ目に戻ります。

Arduino ホストをプログラムする - 16

 

以上で、7 インチ Smart Display を使用したデモプロジェクトは完了です。本デモでは、各種センサーや LED を使用し、物理ボタンによる表示ページの切り替えや、Gauge、Indicator、外部 LED の制御を行います。プログラムのダウンロードおよび本デモの詳細については、GitHub のサンプルプログラムをご参照ください。

本デモで使用している Modbus RS485 Shield の詳細については、Modbus RS485 Shield の技術資料をご参照ください。実際のハードウェア構成を以下に示します。

Arduino ホストをプログラムする - 17

 

まとめ

本デモでは、Arduino ボードと Modbus プロトコルを使用して、センサーや Indicator を制御する方法を紹介しました。Modbus レジスタを使用してセンサー値を読み取り、表示ページを切り替えるほか、センサーの読み取り値に応じて LED を制御する一連の動作を確認できます。Modbus プロトコルの基本や、Smart Display の制御への活用方法を理解したい初心者から経験豊富な開発者まで、実装の参考としてご活用いただけます。

ディスプレイ ソリューションについてのご質問はあるのでしょうか。 お問合わせ!

配信申し込み

Winstar からの最新情報を受け取ります。

お問合わせ

価格/データシート/一般的なお問合せ

技術的なサポート

技術情報についてはお問合せください。

go top
お問合わせ
close

私たちはあなたのプライバシーを大切にします

「すべてのクッキーを許可」をクリックすると、サイトのナビゲーションを向上させ、サイト使用状況を分析し、マーケティングおよびパフォーマンスの取り組みを支援するために、クッキーをデバイスに保存することに同意したことになります。この件に関する詳細情報は、ポリシーをご覧ください。プライバシーポリシー

私たちはあなたのプライバシーを大切にします

Winstarおよび特定の第三者は、www.winstar.com.twでクッキーを使用しています。クッキーの種類、目的、および関与する第三者に関する詳細は、以下および当社のクッキーポリシーに記載されています。「すべて許可」をクリックして、当社のクッキー使用に同意し、ウェブサイトでの最良の体験を得てください。また、設定を変更するか、必要なクッキーを除きクッキーを拒否することもできます。

同意設定の管理

常にアクティブ
必須なクッキー

これらのクッキーは、ウェブサイト内を移動したり、プライバシーの設定、ログイン、フォームの記入などの機能を使用できるようにするために不可欠です。

分析用クッキー

「統計クッキー」とも呼ばれるこれらのクッキーは、ウェブサイトの使用方法に関する情報を収集します。たとえば、どのページを訪れ、どのリンクをクリックしたかなどです。詳細を確認してください。