工業級樹莓派可做為工控機使用,型號和功能齊全,除控制器核心外,還包括各類工業協定網關以及IO擴展模塊等。
工業級樹莓派具有高度工業適用性,工作溫度範圍達到-40 ~55 °C ,靜電保護達到4 kV / 8 kV ,且浪湧/爆裂測試以及EMI測試都達到了EN61131-2和IEC 61000-6-2標準的要求。支援Node-RED、Python、或純C等多種編程語言;支援通用的工業物聯網(IIoT )協議,如MQTT和OPC UA;含兩個以太網接口,其中一個可以透過Modbus TCP協議連接工業現場網路,另一個可以連接上級的IT系統或是雲端服務器。
Modbus RTU 從站
本例適用於Jessie Image。但並不適用於Wheezy。
在以下示例中,我們提供了一個Modbus RTU主站,它採集RevPi Core的CPU溫度訊息。我們使用的RevPi Core被視為從站。
提醒!在此示例中,我們使用Windows 計算機中的“qModMaster”軟體來模擬Modbus主站。可以在https://sourceforge.net/projects/qmodmaster下載此軟體。
▍正式操作
- 透過RJ45連接器將RevPi Core連接到主站網路。
- 將RevPi Core連接到電源。
- 首先啟用Modbus-RTU 從站功能。
- 打開網頁瀏覽器。
- 在瀏覽器的地址欄中輸入RevPi Core的IP地址。
之後將進入登錄界面。
- 使用用戶名“admin”登錄。
- 輸入密碼。你可以在RevPi Core側面的標籤上找到它。
- 點擊“LOGIN”。
現在你可以看到RevPi Core的當前設備狀態。
- 點擊“SERVICES”標籤。
- 點擊“Enable/Disable ModbusSlave” 行中的“Enabled”。
- 點擊“SAVE ALL”按鈕。
- 點擊“APPS”標籤。
- 點擊“PiCtory”後面的開始按鈕。
進入PiCtory界面。
▍下面進行Modbus RTU從站配置。
- 打開設備目錄中的“Virtual Devices”文件夾。
- 選擇Modbus RTU Slave。
- 按住滑鼠左鍵並將Modbus RTU從站拖到RevPiCore旁。Modbus RTU從站現在將出現在配置面板的最右側。
在“Device Data”窗口中設置該設備的基本設置。此設置是可選的。如果你使用大量設備並希望稍後在另一個程序中處理數據,則此輸入可能非常有用。
在“Value Editor”中,我們進行有關RTU連接的設置。在本示例中的設置是:
device_path: /dev/ttyUSB0。
baud_rate: 19200。
parity: none。
data_bits: 8。
stop_bits: 1。
modbus_address: 1。
下面保存PiCtory配置。
點擊“File>Save”以保存文件。
點擊“Tools>Reset Driver”。這將激活設備的更改。
下面說明如何查詢CPU溫度。
你可以在命令行中使用以下命令查詢RevPi Core的CPU溫度:
/usr/bin/vcgencmd measure_temp
可以得到當前的溫度輸出:
為了在Modbus上處理這個值,需要轉換此輸出量。溫度需要x10即去掉小數點之後再用作輸出量:
/usr/bin/vcgencmd measure_temp | awk ‘ { printsubstr($0,6,2) substr($0,9,1) } ‘
現在使用piTest將數據寫入Modbus寄存器:
piTest -w Output_1, $(/usr/bin/vcgencmdmeasure_temp | awk ‘ { print substr($0,6,2) substr($0,9,1) } ‘)
為確保溫度不僅一次寫入寄存器,而是連續寫入,整個過程必須循環運行:
while true; do piTest -wOutput_1,$(/usr/bin/vcgencmd measure_temp | awk ‘ { print substr($0,6,2)substr($0,9,1) } ‘); sleep 1; done &
如果要退出該循環,則必須鍵入“fg”,然後鍵入CTRL+ C。
▍下面進行Modbus RTU主站配置。
在本示例中使用工具“qModMaster”來查詢值。
針對本示例進行以下設置:
- 透過Modbus RTU連接進行通訊:
Modbus模式:RTU
- 與設備地址為1的從站通訊:
SlaveAddr:1
- 以1000毫秒的周期提取數據:
掃描速率(毫秒):1000
- 數據應作為一個完整的Modbus寄存器被讀取:
功能碼:Read Input Registers (0x04)
- 數據應以十進制形式輸出:
DataFormat:Dec
- 應從Modbus寄存器地址0開始讀取數據:
起始地址:1
- 要讀取完整的寄存器:
寄存器數量:1
- 點擊“選項”,然後選擇“Modbus RTU”。
在此處進行串行接口的設置。對於本示例,它的設置如下圖所示:
提醒!如果你正在使用qModMaster並使用其他端口,則可能需要使用如下輸入:“.COM10”。
點擊“連接”。這將從站連接到Modbus主站。
點擊“讀/寫”。這將透過Modbus提取值。
現在可以看到值505。這說明RevPiCore的CPU溫度為50.5°C
下面來看看Modbus功能。
▍Modbus從站模塊為你提供以下Modbus功能:
- 讀保持寄存器(0x03)
讀輸入
- 讀輸入寄存器(0x04)
讀輸出
- 寫單寄存器(0x06)
寫入一個輸入寄存器
- 寫多個寄存器(0x10)
寫入多個輸入寄存器
一個Modbus RTU從站有32個輸入寄存器和32個輸出寄存器可供使用。如果你需要更多,也可以在PiCtory裡配置多個ModbusRTU從站。