本文由網友投稿,歡迎更多的朋友來分享。
作者:Diego
倉庫地址:https://gitee.com/diego2098/ThingsGateway
原文連結:https://www.cnblogs.com/ThingsGateway/articles/17557709.html
Gitee 原始碼倉庫:https://gitee.com/diego2098/ThingsGateway
GitHub 原始碼倉庫:https://github.com/kimdiego2098/ThingsGateway
使用文件:https://diego2098.gitee.io/thingsgateway-docs/
一. 前言
ThingsGateway 是國內新生開源專案,歸屬工業數據採集閘道器,經過近四個月的洗禮,已經趨於穩定。
這篇文章將實測 ThingsGateway 採集 ModbusTcp 協定設備,透過動圖演示,方便理解。
二. 準備測試環境
ModbusSlave
執行 ThingsGateway 的方法請查看源文件。
三. 通訊測試
3.1. 建立採集設備

建立採集設備,選擇 ModbusTcp 外掛,查看設備擴充屬性,可以看到 ModbusTcp 的可配置項。
目前測試我們使用的是本機的 502 埠,所以預設不做修改。
3.2 建立變數

建立變數,填寫變數名稱與變數位址、資料型別。
變數位址為 40001,是 Modbus 協定中的保持暫存器 0,詳細位址規則請查看源文件。
3.3. 重新啟動採集執行緒

透過執行狀態 - 右上角的浮標,重新啟動全部執行緒,重新啟動完成後可以看到設備資訊。
圖中顯示設備離線,並提示最後一次錯誤訊息,明顯我還沒有啟動 ModbusSlave 進行測試。
3.4. 啟動 Modbus 服務端

啟動 ModbusSlave,選擇 ModbusTcp 協定、埠 502。
啟動後可以看到閘道器顯示設備在線,並倒序顯示讀寫封包。
3.5. 查看即時數據

透過執行狀態 - 採集設備 - 相關變數跳轉,或者直接點選功能表的即時數據頁面,可以看到相關的變數即時數據。
透過 ModbusSlave 的自增模擬功能,可以看到閘道器採集的數據變化效果(閘道器顯示頁面為 1 秒重新整理頻率)。
至此,簡單的通訊測試已經結束了。
四. 進階玩法
4.1. 數據轉換
試想一下應用場景,當氣體儀表通訊值規定是 實際值*100 或者其他的複雜轉換,透過閘道器將完美解決複雜的運算式轉換。

編輯變數的讀取運算式為 raw/100.0 ,重新啟動執行緒後可以看到即時值和原始值的區別。
4.2. 多個變數分包解析
當一個 ModbusTcp 有幾萬個變數時,如果是逐個讀取的效率實在太低,透過閘道器的分包限制將非常簡單地解決問題。

比如現測試的 ModbusTcp 外掛,只需要修改最大打包長度(預設 100),或者直接預設。
可以看到實際通訊封包,在讀取時只需要分送一次請求。
4.3. 採集冗餘

冗餘的概念大家應該熟悉,閘道器的採集冗餘也是如此。
設定冗餘設備後,當採集設備出現離線 3 次以上的情況,將切換至備用設備。
五. 關於 .NET
下圖截自 .NET 官網:https://dotnet.microsoft.com/zh-tw/,核心思想:.NET 免費、開源、快速和跨平台、新式和高效:

5.1. .NET 免費、開源
.NET 是一個免費的開放原始碼專案,它在 GitHub 上開發和維護,而 GitHub 是數百萬希望一起創造出色內容的開發者的家園。
5.2. .NET 快速和跨平台
根據 TechEmpower,.NET 的執行速度快於任何其他常用框架。可以在多個平台(包括 Windows、Linux 和 macOS)上編寫、執行和建置。
5.3. .NET 新式和高效
.NET 可幫助你建置適用於 Web、行動、桌面、雲端等應用程式。.NET 具有強大的支援生態系統和強大的工具,對於開發者而言是最高效的平台。