# 在樹莓派3上如何測試Modbus RTU通信
## 前言
Modbus是工業領域廣泛應用的通信協議,其中RTU模式因其高效性在串行通信中尤為常見。本文將詳細介紹如何在樹莓派3上搭建Modbus RTU測試環境,包括硬件連接、軟件配置和實際測試步驟。
---
## 一、硬件準備
### 1. 所需設備清單
- 樹莓派3開發板(含電源)
- USB轉RS485轉換器(推薦FTDI芯片方案)
- Modbus RTU從站設備(如PLC、傳感器等)
- 雙絞線或屏蔽電纜
- 終端電阻(120Ω,可選)
### 2. 接線示意圖
```plaintext
樹莓派3 USB口 ? USB-RS485轉換器 ? RS485-A/B線 ? 從站設備
注意: - A線(通常標記為D+/黃色)接從站A端 - B線(通常標記為D-/藍色)接從站B端 - 長距離通信時需在總線兩端加終端電阻
確保樹莓派系統已更新:
sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip minicom libmodbus-dev -y
pip3 install pymodbus
插入USB-RS485轉換器后執行:
ls /dev/ttyUSB*
正常應顯示類似/dev/ttyUSB0的設備節點。
sudo minicom -D /dev/ttyUSB0 -b 9600 -8 -o
01 03 00 00 00 01 84 0A
from pymodbus.client.sync import ModbusSerialClient
# 創建Modbus RTU客戶端
client = ModbusSerialClient(
method='rtu',
port='/dev/ttyUSB0',
baudrate=9600,
timeout=1,
parity='N',
stopbits=1
)
# 連接測試
connection = client.connect()
print("連接狀態:", connection)
# 讀取保持寄存器示例(從站地址1,起始地址0,數量1)
try:
response = client.read_holding_registers(address=0, count=1, unit=1)
if not response.isError():
print("讀取結果:", response.registers)
else:
print("Modbus錯誤:", response)
except Exception as e:
print("通信異常:", str(e))
finally:
client.close()
sudo apt install modbus-cli
modbus read -a 1 -t 4 -s 1 /dev/ttyUSB0 0 1
參數說明:
-a 1:從站地址-t 4:功能碼04(讀輸入寄存器)-s 1:停止位0 1:起始地址和寄存器數量若出現Permission denied錯誤,需添加用戶組:
sudo usermod -aG dialout $USER
sudo chmod 666 /dev/ttyUSB0
修改Python腳本實現輪詢多個從站:
for slave_id in range(1,5):
response = client.read_holding_registers(0, 1, unit=slave_id)
print(f"從站{slave_id}響應:", response.registers if not response.isError() else "無響應")
結合Matplotlib實現實時數據展示:
import matplotlib.pyplot as plt
plt.plot([response.registers[0] for _ in range(10)])
plt.title('Modbus實時數據')
plt.show()
通過本文介紹的三種測試方法,您可以在樹莓派3上快速驗證Modbus RTU通信功能。建議從Python方案入手,逐步擴展到更復雜的工業應用場景。實際部署時請注意電氣隔離和信號質量優化。
附錄:
Modbus協議規范文檔
樹莓派GPIO擴展方案 “`
注:本文實際約1100字,可根據需要增減Python代碼示例或硬件細節部分調整字數。關鍵要點已用粗體和代碼塊突出顯示,便于讀者快速抓取重點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。