本記事では、Yocto環境のNX8MM-35上でlibmodbusを使用し、Modbus RTUのサンプルを実行する方法を説明します。NX8MM-35に搭載された2つのRS485ポートを使用し、同一のSBC上で1台をModbusサーバー、もう1台をModbusクライアントとして設定して、Modbus機能を利用します。
Modbusの主な特長:
- マスター・スレーブ(クライアント・サーバー)アーキテクチャ: マスター(クライアント)デバイスが通信を開始し、スレーブ(サーバー)デバイスが応答します。
- シンプルでオープンなプロトコル: 実装が容易で、産業用システムで広く採用されています。
- 複数の通信モード:
- Modbus RTU(Remote Terminal Unit):シリアル通信(RS-232、RS-485)を介してバイナリ形式のデータを使用します。
- Modbus ASCII: シリアル通信で、人間が読み取りやすいASCII文字を使用します。
- Modbus TCP/IP: イーサネット上で動作し、より高速で柔軟なネットワーク通信を可能にします。
Modbusの主な用途:
- 産業用機器の監視および制御
- SCADA(監視制御およびデータ収集)システム
- 電力量計、温度センサー、その他のフィールドデバイス
必要なツール:
- i.MX series products like NX8MM-35 / PN8M-090T / EBOX-IMX8MM
- In this tips, we use NX8MM-35 as an example.
- libmodbusを含むYocto Linux 4.0サンプルイメージ: Image / Guide
- デフォルトのレシピを使用する場合は、独自のイメージをビルドする前に、local.confの「IMAGE_INSTALL」に「libmodbus-dev」を追加してください。
- Modbusテストツールのサンプルコードファイル: Download link
- 2つのRS485ポートを接続したテスト治具付きNX8MM-35

1. Boot up the board and compile the modbus test tool
まずボードを起動し、Modbusテストツールのサンプルコードが保存されたUSBメモリを接続して、ターミナルを開く。
1. USBメモリにアクセスし、以下のコマンドを入力
$ gcc modbus_test_v2.c -o modbus_test_v2 -lmodbus

2. コンパイルしたアプリケーションを指定したディレクトリに移動し、そのディレクトリにアクセス(ここでは「modbustest」というディレクトリを作成)
$ mv modbus_test_v2 /modbustest
$ cd /modbustest

以下のコマンドを使用して、機能の説明を確認
$ /.modbus_test_v2
Usage: ./modbus_test_v2 [-s|-c] [-r gpio_index] serial_port
-s : server
-c : client
-r : rts-gpios : dm446c rts-gpios numbers: ttymxc0=128, ttymxc3=9
NX8MM-35のCOM1(ttymxc0/GPIO128)およびCOM4(ttymxc3/GPIO9)をRS-485通信に使用し、2つのポート間でポイントツーポイントのModbus RTU通信テストを実施します。
(J39をショートして、COMポートをRS-485モードに切り替えてください。)

2. NX8MM-35でModbus RTUテストを開始
1. Open another terminal and input command below to set COM4 to server mode:
./modbus_test_v2 -s -r 9 /dev/ttymxc3

2. 既存のターミナルを使用してCOM1をクライアントモードに設定し、サーバー(COM4)に信号を送信
./modbus_test_v2 -c -r 128 /dev/ttymxc0

上記のコマンドを実行すると、サーバー(COM4)がクライアント(COM1)からのModbus RTU信号を正常に受信し、テストが完了します。

Main Features of NX8MM-35:
- i.MX 8M Mini クアッドコア ARM Cortex-A53、最大1.6/1.8GHz
- メモリ:最大4GB LPDDR4
- ストレージ:最大64GB eMMC
- ディスプレイ:LVDS/HDMIインターフェース
- カメラ:MIPI-CSIインターフェース
- 接続性:GLAN×2、USB×4、COM×4、I²C、SPI、GPIO、タッチ、SIMカードホルダー付きMini PCIe、HDオーディオ
- 動作温度:-20~+70℃/-40~+80℃(オプション)
詳細情報およびサンプルのご依頼については、以下までお問い合わせください。 info@icop.com.twお近くの ICOP支店にお電話いただくか、 世界公式代理店.






