首頁 解決方案 主機與 Smart Display 的 Modbus 通訊 (開關與指示燈控制)

主機與 Smart Display 的 Modbus 通訊 (開關與指示燈控制)

October 26,2023

介紹

主機與 Smart Display 之間的 Modbus 通訊

為協助開發人員快速上手 WINSTAR Smart Display,並進一步了解不同應用情境下的操作方式,我們持續提供各種控制與通訊情境的實作範例。本文將介紹另一個 Modbus 示範範例,協助初學者與有經驗的開發人員掌握主機與 Smart Display 通訊的基本原理。

Modbus 通訊協定廣泛應用於工業自動化,可用於各種設備與感測器的通訊與控制。在此應用中,Arduino 開發板可作為系統整合與主機控制的平台。透過 Modbus 通訊協定,Arduino 可搭配各種感測器與切換按鈕,與 Smart Display、Gauge(儀表)、指示燈及 LED 進行互動與控制。此範例使用 Arduino Mega 2560 搭配 RS485 擴充板,透過 Modbus 與 WINSTAR Smart Display 進行通訊。

此示範程式說明如何透過 Modbus 暫存器讀取感測器數值、切換顯示頁面,並根據感測器讀值控制 LED。對於希望進一步了解 Modbus 通訊協定,以及其在主機與 Smart Display 控制應用的初學者與有經驗的開發人員而言,可作為實作參考。

系統方塊圖
系統方塊圖

 

本應用需要以下元件:

  1. Smart Display Modbus 7”
  2. ARDUINO Mega 2560
  3. ARDUINO Mega 2560的RS485 Modbus載板
  4. Arduino 開發環境 v2.0.4
  5. Modbus RS485 連接器
  6. 實體按鈕
  7. 旋鈕
  8. LED
  9. GUI-Builder v0.4.2 或更高的版本
 

這個示範分為三個部分:

  1. 在GUI Builder中設計專案
  2. 建立和上傳專案
  3. 編譯Arduino主機
 

以GUI builder設計專案

首先,建立一個新專案,輸入專案名稱,然後選擇裝置類別,此應用選擇7吋的裝置。通訊協議選擇Modbus,顯示方向為橫向。接著在UI範本中選擇空白模板,最後點選Create按鈕,如圖所示。

以GUI builder設計專案 - 1

 

完成上述設定後,會得到一個空白的設計模板。

以GUI builder設計專案 - 2

 

根據應用情境,需要新增第二個頁面。因此,點擊page按鈕,然後點擊+號按鈕。

以GUI builder設計專案 - 3

 

可以在Resource選單中更改背景樣式。

以GUI builder設計專案 - 4

 

在Page區域可以選擇背景樣式。

以GUI builder設計專案 - 5

 

現在回到第一個頁面的工作區。根據示範場景,選擇切換按鈕,將其拖放到頁面設計區域。對於時速表和指示燈也是相同的操作。

以GUI builder設計專案 - 6

 

建立並上傳專案

完成上述步驟並建立兩個不同的頁面後,現在就可以開始設定專案了。切換到“Page info”頁面。點選“Device”,選擇“Device Property”。然後選擇COM埠,設定與裝置相同的鮑率,最後,點擊Upload project將此專案上傳。

建立並上傳專案 -1

 

當專案上傳完成後,點擊“OK”:

建立並上傳專案 -2

 

上傳完成後,您將在SmartDisplay上看到開機畫面。

建立並上傳專案 -3

 

啟動畫面後,將會顯示第一頁。

建立並上傳專案 -4

 

編譯Arduino主機

此範例所需要的寄存器地址都在Arduino IDE程式中被定義,如下圖所示:

程式首先定義實體按鈕傳感器、可變電阻傳感器和LED的腳位。然後使用ModbusMaster庫初始化Modbus通訊。程序為控制顯示頁面、指示燈、時速表和切換按鈕設置了Modbus寄存器地址。

編譯Arduino主機 - 1

 

如果您想瞭解主機和SmartDisplay之間如何透過 RS485 進行通訊,請參考 GUI BUILDER中的通訊紀錄。下圖是“切換按鈕”的數據,使用者可以藉此參考如何對SmartDisplay下命令來切換按紐。數據字節的第二個字節是00 06十六進制值。它代表切換按鈕的位址,將此值轉換為十進制值後,它將是6。可以使用它來寫入或插入數據到按鈕中。但是,在這種情況下,切換按鈕被用作讀取或從SmartDisplay中檢索數據的函數。在這裡,我們使用註冊位址“7”來從切換按鈕讀取數據。

編譯Arduino主機- 2

 

現在,問題來了,為什麼我們要使用註冊位址“7”來從切換按鈕接收數據呢?建議您查閱SmartDisplay Modbus的規格書以獲得更詳細的訊息。下圖是規格書的部分截圖,其中顯示了第一個對象(物件)切換按鈕使用的位址。

編譯Arduino主機 - 3

 

下圖顯示了“時速表”的訊號數據。該數據告訴我們如何訪問時速表的位址。數據字節的第二個字節是00 6A十六進制值。它代表時速表的位址,將此值轉換為十進制值後,它將是106。可以使用它來將數據寫入或插入到時速表物件中。

編譯Arduino主機 - 4

 

下圖顯示了“指示燈”的程式數據。此數據告訴我們如何訪問指示燈的位址。數據字節的第二個字節是00 CE十六進制值。它代表指示燈的地址,將此值轉換為十進制值後,它將是206。可以使用它來將數據寫入或插入到指示燈物件中。

編譯Arduino主機 - 5

 

ADC_REF:常量設置為5V,表示ADC(模數轉換器)的參考電壓,用於調整實體按鈕的靈敏度。GROVE_VCC:常量設置為5,表示電路中使用的Grove接口的VCC電壓。FULL_ANGLE:常量設置為300,表示電路中使用的旋轉角度的全值。該注釋表明,該值以度為單位進行測量。

編譯Arduino主機 - 6

 

在這裡,設置了許多必要的變量,聲明了數據類型並初始化為零。

編譯Arduino主機 - 7

 

定義所有腳位模式和外部組件(如實體按鈕和LED)的設置。同時在串行通信中設置波特率,如下圖所示:

編譯Arduino主機 - 8

 

下圖顯示了“ChangePageFunction”的定義。使用“writeSingleRegister”函數寫入數據。

編譯Arduino主機 - 9

 

下圖顯示了當Arduino主機讀取變量電阻(旋轉角度)傳感器的值變化時,它會通過Modbus將值發送到SmartDisplay來更改時速表的值。當值小於120時,腳位13上的LED處於關閉狀態,指示燈為綠色。當值等於或大於120時,LED亮起,指示燈顏色變為紅色。

編譯Arduino主機 - 10

 

下圖顯示了當Arduino主機讀取實體按鈕傳感器的值變化時,它會透過Modbus將值發送到SmartDisplay來更改頁面。

編譯Arduino主機 - 11

 

下圖顯示了Arduino主機透過Modbus從SmartDisplay接收切換按鈕的值變化,以打開腳位12上的LED。

編譯Arduino主機 - 12

 

這是非常重要的部分,我們在這裡使用“writeSingleRegister”函數來寫入或插入數據,以與SmartDisplay進行通訊,並使用“readHoldingRegisters”函數從SmartDisplay讀取或接收數據。在這裡特別需要注意延遲函數,以與像時速表這樣的活動小物件進行通訊。在Modbus中,一旦我們發送數據並得到確認,就可以再次發送數據。因此,在使用Modbus協議進行數據傳輸和接收時,使用延遲函數變得非常必要。

編譯Arduino主機 - 13

 

成功透過Arduino IDE驗證和上傳該程式後,就可以執行演示專案了。當切換按鈕處於關閉狀態時,腳位12上的LED也處於關閉位置。當切換按鈕處於ON模式時,LED立即打開,如下圖所示:

編譯Arduino主機 - 14

 

根據演示範例,時速錶由變量寄存器感測器控制。當表盤值介於0和120之間時,指示燈顯示為綠色,腳位13上的LED則關閉。但是,當表盤值超過120時,指示燈變為紅色,腳位13上的LED亮起,如下圖所示:

編譯Arduino主機 - 15

 

在此專案中,可以利用實體按鈕在不同頁面之間切換。當按下實體按鈕傳感器時,顯示器會切換到第二個頁面,再次按下時,它會切換回第一個頁面,如下圖所示。

編譯Arduino主機 - 16

 

恭喜,在SmartDisplay 7吋上完成了實作範例! 相關程式及更多詳情可參考 GitHub (https://bit.ly/3oT0o5M)。

有關此專案中使用的Modbus RS485 Shield請參考此連結 (https://media.digikey.com/pdf/Data%20Sheets/DFRobot%20PDFs/DFR0259_Web.pdf) 。 以下是實際的硬體設置圖:

編譯Arduino主機 - 17

 

結語

本文的目的是展示如何使用Arduino開發板和Modbus協議來控制傳感器和指示燈,讓使用者瞭解如何通過使用RS485來設計自己的主機控制器,且學習如何透過主機端接收和發送命令,對SmartDisplay進行全面的控制。

對顯示器解決方案有疑問?您想做的,由我們實現。 聯絡我們!

訂閱

接收最新顯示器技術知識與新品消息

聯絡我們

價格/規格書/一般查詢

技術支援

聯繫我們詢問技術內容

go top
聯絡我們
close

我們重視您的隱私

通過點擊「允許所有 Cookie」,代表您同意在您的設備上存儲 Cookie 以增強網站瀏覽體驗、分析網站使用情況並協助我們的行銷和網站效能優化工作。您可以在我們的隱私權政策中找到有關於此的更多資訊。

我們重視您的隱私

Winstar 及部分第三方在 www.winstar.com.tw 上使用 cookies。關於 cookie 的種類、用途及相關第三方的詳細資訊,請參見下文及我們的《Cookie 政策》。請點擊「允許全部」來同意我們使用 cookies,以確保您在我們網站上獲得最佳體驗。您也可以設置您的偏好或拒絕 cookies(必要的 cookies 除外)。

管理同意聲明

永久啟用
必要的 Cookie

這些 Cookie 是必不可少的,以便讓您在瀏覽網站並使用其功能上有更好地體驗,例如設置您的隱私偏好、登錄或填寫表單。

分析 Cookie

這些也被稱為「統計cookie」,用於收集您使用網站的資訊,例如您訪問了哪些頁面以及點擊了哪些連結。查看詳細資訊