本文將說明如何在 NX8MM-35 上執行 Modbus RTU 範例程式。
本技巧採用 libmodbus 函式庫,透過雙 RS485 介面(同一 SBC 上配置 1 個 Modbus 主機與 1 個 Modbus 客戶端)在 Yocto 系統的 NX8MM-35 上實現 Modbus 功能。
Modbus 的主要特點:
- 主從(客戶端-伺服器)架構: 主設備(客戶端)發起通訊,從設備(伺服器端)則負責回應。
- 簡單開放協議: 易於實施且在工業系統中獲得廣泛支援。
- 多種通訊模式:
- Modbus RTU(遠端終端機):採用二進位資料格式透過串列通訊(RS-232、RS-485)進行傳輸。
- Modbus ASCII:採用人類可讀的ASCII字元進行串列通訊。
- Modbus TCP/IP:透過乙太網路運行,實現更快速且更靈活的網路連接。
Modbus 的常見用途:
- 工業設備的監測與控制。
- SCADA(監控與數據採集)系統。
- 能源計量器、溫度感測器及其他現場裝置
您需要的工具:
- i.MX 系列產品如 NX8MM-35 / PN8M-090T / EBOX-IMX8MM
- 在本篇技巧中,我們以 NX8MM-35 為例進行說明。
- 搭載 libmodbus 的 Yocto Linux 4.0 範例映像檔: 映像檔 / 指南
- 在預設配方中,您需要在編譯自訂映像檔前,於 local.conf 檔案的 IMAGE_INSTALL:append 區段中加入「libmodbus-dev」。
- Modbus測試工具範例程式碼檔案: 下載連結
- NX8MM-35 搭配測試治具連接 2xRS485

1. 開機啟動開發板並編譯 Modbus 測試工具
首先,啟動開發板,並插入存有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 通訊,在兩個埠之間執行點對點的 Modbus RTU 測試。
(請務必將J39短接,以將通訊埠切換至RS485模式。)

2. 開始對 NX8MM-35 執行 Modbus RTU 測試
1. 開啟另一個終端機並輸入以下指令,將 COM4 設定為伺服器模式:
./modbus_test_v2 -s -r 9 /dev/ttymxc3

2.使用現有終端機將COM1設定為客戶端模式,並將訊號傳送至伺服器端(COM4)
./modbus_test_v2 -c -r 128 /dev/ttymxc0

執行上述指令後,伺服器端(COM4)成功接收來自客戶端(COM1)的Modbus RTU訊號,標誌著測試已完成。

主要特點 NX8MM-35:
- i.MX 8M Mini 四核心 ARM Cortex-A53,最高可達 1.6/1.8GHz
- 記憶體:最高支援 4GB LPDDR4
- 儲存空間:最高 64GB eMMC
- 顯示介面:LVDS/HDMI介面
- 相機:MIPI-CSI 介面
- 連接埠:GLAN x2、USB x4、COM x4、I²C、SPI、GPIO、觸控介面、MiniPCIe(含SIM卡座)及高解析度音訊。
- 溫度範圍:-20°C 至 +70°C 或 -40°C 至 +80°C(可選)
如需更多資訊與樣品申請,請聯絡 info@icop.com.tw,或致電離您最近的 ICOP 分公司,或聯繫我們的 全球授權經銷商.






