帶你認識物聯網 Modbus 通訊協議(三)

閱讀時間約 6 分鐘
Modbus Protocol

Modbus Protocol

第一篇文章裡,我們花了些時間說明了硬體裝置是如何通訊的基礎知識以及 Modbus 串列埠 (RTU/ASCII) 的 Master-Slave 的通訊架構。第二篇正式介紹 Modbus 通訊協議以及如何組合通訊封包 PDU 跟 ADU 的概念。這兩篇都是物聯網與後面要談的 Modbus TCP 的基礎,還沒看過的建議可以先回頭了解一下。接下來,對於物聯網所應用的 SCADA 數據搜集與監視的系統,我們需要交代 Modbus TCP 這個 Trubo 版的 Modbus 通訊協議,會包含三個部分:

  1. 認識開掛的 Modbus TCP 與 Modbus 串列埠的主要差異
  2. 了解 Gateway 如何把傳統 Modbus 與 Turbo 的 Modbus TCP 完美融合
  3. 發揮一下想像力,一起想想 SCADA 除了工廠,還能用在哪裡?

開外掛的 Modbus TCP

顧名思義,Modbus TCP 可視為一種 Modbus 分支,意思就是跑在實體通訊介面 TCP/IP 上的 Modbus 通訊協議,TCP/IP 就是我們熟悉的網路。現代的網路讓我們的電腦、手機與其他可以上網等裝置連上互聯網,每一個網路上的裝置都被分配一個 IP 位址(自動抓取或者指派),每一台設備的 IP 位址都不同,這是網路上用來識別每一台裝置的機制。

第二篇我們講 Modbus 通訊協議的時候有特別指出 Modbus 是一種應用層與底層無關的通訊協議,因此 Modbus.org 定義好的 69 個功能碼、組成 PDU 的邏輯規則在 Modbus TCP 完全適用。還記得郵局跟宅急便的例子嗎?為了想要把 Modbus 跑在 TCP/IP 這個網路傳輸介面上,就需要定義適合用在 TCP/IP 的 ADU 格式。在 Modbus TCP 的 ADU = MBAP Header + PDU,原本用在串列埠的 Slave 裝置 ID 已經被 IP Address 取代掉,整個改用 MBAP (ModBus Application Protocol) 表頭替代,表頭內已經包含了必要的檢核機制,所以 Modbus TCP 通訊的 ADU 是不需要加入 CRC 的。

Modbus TCP ADU = MBAP Header + PDU

Modbus TCP ADU = MBAP Header + PDU

Modbus TCP 沒有串列埠的 Master-slave 的觀念,改用 Client-Server。那是因為在網路上的每一個裝置節點彼此都是身份對等的,每一個應用 Modbus TCP 的裝置都是可以像電腦一樣做到即時雙向溝通,同時可以發話跟收話不再有 Master-Slave 之分。不過我們還是可以按訊息的傳輸方向與生命週期,區分為出誰是 Server 或 Client,總之,你只要記得負責提需求的裝置就是 Client 而負責提供服務的就是 Server 就可以了。

Modbus TCP 是 Client 與 Server

Modbus TCP 是 Client 與 Server

Modbus TCP 本身還有其他優勢。例如跟 RS485 的 Modbus RTU/ASCII 可連接 32 個裝置相比,Modbus TCP 串接更多的裝置,在一個 C class 的子網域裡面就可以連接 254 個裝置。透過網路路由器 (Router) 就能把網路封包的活動從區域網路升級到全域(全球)網路,就算我們要控制裝置遠在天邊,有了網路監控也是不費吹灰之力,藉由網路升級為 Modbus TCP 後影響範圍可謂無遠弗屆啊。也難怪 SCADA 獲得此神技加持後被智能工廠解決方案們深深的寵愛,在各種數據搜集與監控應用的大雅之堂,大放異彩了。

Gateway 就是翻譯機

看到這裡的你或許會想問一個問題,Modbus 是不是就像電腦作業系統一樣,新版總是可以兼容舊版,既然 Modbus TCP 可視為 Modbus RTU/ASCII 的升級版,是不是代表兩者之間是相容互通的呢?這句話對也不對,之所以對是因為前面我們有提到兩者都是基於 Modbus.org 定義的 Modbus 標準通訊協議,所以它們在 PDU 通訊資料格式會是一樣;不對的地方我們上一節也有提到在於通訊底層介面不同,造成兩者的 ADU 格式無法直接互通。因此,兩者 ADU 要兼容的話還必須再經過一道轉換程序才行,有一個專們負責 ADU 轉譯的裝置就叫做 Gateway,中文名稱叫做匣道器。

匣道器是同時連接網路跟串列埠的裝置,意思是它有一邊連接 Modbus RTU/ASCII,另一邊連接 Modbus TCP,它能同時解讀跟打包兩種不同類型的 ADU ,身份就像是一個即時翻譯。所以當它面對 Modbus RTU/ASCII 時就會變身 Master 對底下的所屬裝置們發號施令;當它轉身扮演 Modbus TCP 的角色時候,就會變身網路上的 Client 或 Server 跟其他節點互動。匣道器就在這個中間狀態下,不斷地把拆解跟合成兩邊所需的 ADU,不斷地翻譯成兩邊所需要的語言。也因為有了匣道器,原本使用傳統的 Modbus RTU/ASCII 通訊的裝置們就能透過匣道器這個新來的老大升格變成 Modbus TCP 的一部分,升級成本不高效果卻很顯著,因此深深受到智慧工廠改造者們的喜愛。

一個實際的改裝案例

一個實際的改裝案例

發揮你的想像力

以前做系統的時候要開發這種底層通訊的工作真的很辛苦,每次都是 Case by Case,光是處理各種通訊協議與 code 都寫不完。自從有了 Modbus TCP 跟 Gateway 這種神器加持後,SCADA 通訊架構與數據搜集與監看系統瞬間因為網路的頻寬與速度變得更完善且強大,數據覆蓋層面延伸到各種終端裝置,做到了萬物皆可連網、真正的即時監控效果,未來隨著網路技術的發展,數據流動只會更快,轉眼間就能把遠在地球另一端的工廠生產數據即時呈現在戰情室電子看板上面,這結果絕對是所有高階管理者最想要的了。

任何需要即時數據搜集監看的應用的場合都能借助 SCADA 物聯網架構來展開。例如:搜集太陽能電廠數據來提高安全性與發電效率、結合行動應用成為懶人福音的智能家庭、監看交通流量結合自動燈號控制演算來管理改善車流,也可以醫療結合在幼兒或銀髮居家照護都能有很好的應用,對於物聯網未來的發展真是令人充滿想像。不知道你有沒有感受到物聯網與 Modbus 通訊協議威力了呢?不知道你有沒有想到更新奇好玩的 SCADA 應用呢?

avatar-img
14會員
61內容數
WarrenLo's 軟體設計武功祕笈
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Warren Lo的沙龍 的其他內容
以前當 RD 在開發系統產品的時候需要控制很多硬體設備,韌體工程師有說硬體控制可以走自定義的通訊格式,需要搭配一張指令對照表,按表組成命令下給終端設備,設備們接收到正確的指令後才會做出正確的回應(對於不認識的指令,設備會只會已讀不回!)
Modbus 是一種定義在通訊應用層的協議,會根據資料跑在不同的實體介面上而有不同的「版本」,例如:應用在 RS232/RS485 串列埠介面的就是 Modbus RTU/ASCII,應用在 TCP/IP 的就是 Modbus TCP 也 SCADA 的主要應用協議。
每個人都在心裡有了自己對智慧工廠的想像(陰影?),不少人也開始結合自己的經驗得出自己的見解,直接把智慧工廠直接跟某個特定主題直接劃上等號,這種化繁為簡的總結能力對人類學習很有用處,人類是不斷的學習總結來擴展知識能力。但是使用不當或過度簡化也會走歪掉形成「偏見」,而強烈固執的偏見就會升級為「迷思」
只要關鍵字谷歌一下,瞬間一堆資源在眼前,這讓我深刻感覺到,找到學習資源已經沒有困難可言了。可是當我看到 IPQC 被客戶震撼教育的時候,我才發現看似唾手可得的知識也不是每人人都能了解。
RealTime SPC,Real Time 就是即時的意思。習慣用語當然是「越快越好」,那麼到底多快才叫做即時並沒有一定的答案,從數據發生到進入 SPC 系統完成判定是需要花費幾秒到幾分鐘的時間才能完成這個主流程,包含:資料進點處理 ETL、監控規則判定、異常告警觸發、管制圖確認
第一篇聊到了 SPC 的運作原理是基於隨機資料與常態分佈的理論基礎;第二篇談到了實際應用的工具「管制圖」,認識了代表客戶的規格線、品管內部控制的管制界線、ABC 區、八大監控法則還有選擇管制圖的分類。實際應用上還需要回答一個關鍵問題「到底做的好不好?」,有沒有量化的指標來幫助我們判斷製程能力好壞?
以前當 RD 在開發系統產品的時候需要控制很多硬體設備,韌體工程師有說硬體控制可以走自定義的通訊格式,需要搭配一張指令對照表,按表組成命令下給終端設備,設備們接收到正確的指令後才會做出正確的回應(對於不認識的指令,設備會只會已讀不回!)
Modbus 是一種定義在通訊應用層的協議,會根據資料跑在不同的實體介面上而有不同的「版本」,例如:應用在 RS232/RS485 串列埠介面的就是 Modbus RTU/ASCII,應用在 TCP/IP 的就是 Modbus TCP 也 SCADA 的主要應用協議。
每個人都在心裡有了自己對智慧工廠的想像(陰影?),不少人也開始結合自己的經驗得出自己的見解,直接把智慧工廠直接跟某個特定主題直接劃上等號,這種化繁為簡的總結能力對人類學習很有用處,人類是不斷的學習總結來擴展知識能力。但是使用不當或過度簡化也會走歪掉形成「偏見」,而強烈固執的偏見就會升級為「迷思」
只要關鍵字谷歌一下,瞬間一堆資源在眼前,這讓我深刻感覺到,找到學習資源已經沒有困難可言了。可是當我看到 IPQC 被客戶震撼教育的時候,我才發現看似唾手可得的知識也不是每人人都能了解。
RealTime SPC,Real Time 就是即時的意思。習慣用語當然是「越快越好」,那麼到底多快才叫做即時並沒有一定的答案,從數據發生到進入 SPC 系統完成判定是需要花費幾秒到幾分鐘的時間才能完成這個主流程,包含:資料進點處理 ETL、監控規則判定、異常告警觸發、管制圖確認
第一篇聊到了 SPC 的運作原理是基於隨機資料與常態分佈的理論基礎;第二篇談到了實際應用的工具「管制圖」,認識了代表客戶的規格線、品管內部控制的管制界線、ABC 區、八大監控法則還有選擇管制圖的分類。實際應用上還需要回答一個關鍵問題「到底做的好不好?」,有沒有量化的指標來幫助我們判斷製程能力好壞?
你可能也想看
Google News 追蹤
Thumbnail
這篇文章分享如何操作檯達CTA計時器,使用MODBUS RTU通訊模式進行讀取與寫入資料的完整過程。從硬體連接、通訊設定到ISPSoft的軟體配置,詳細介紹每一步驟,並提供實際的程式碼範例。適合希望瞭解CTA通訊設定以及MODBUS應用的技術人員或工程師。
Thumbnail
※ 什麼是路由? 當我們說「路由」時,可能是在談論路由器(實體設備),也可能是在談論路由(選擇路徑的過程),或者是在談論路徑(資料封包的傳輸路徑)。 路由器 (Router):這是一種實體設備,負責將資料封包 (Packet) 從一個網路傳送到另一個網路。它的工作方式類似於交通指揮,確保資料封包
Thumbnail
這篇文章介紹了路由器 (Router) 在網絡硬體中的功能與運作概念,包括路由器的工作原理、運作流程和與其他硬體設備的區別。文章也提及了路由器運作的基本概念,例如路由表的建立方式和路由協定的基礎知識。
Thumbnail
GOB Go官方有提供net/rpc的RPC套件。此套件提供GOB的編/解碼,且支援TCP或HTTP傳輸方式。它可以在伺服器端註冊多個不同類型物件。 遠端存取的要求條件 方法的類型可輸出 方法的本體可輸出 方法必須要有兩個參數是輸出或內建 方法的第二個參數是指標型 方法的返回類型為
※ 介面是什麼: 介面:人跟電腦互相溝通的管道。 使用者與電腦互相溝通的方式稱為使用者的介面。 ※ 使用者的介面類型: 文字使用者介面:CUI。使用純鍵盤來下指令溝通,對象是伺服器(SERVER)。 圖型使用者介面:GUI。使用圖像去做點擊或拖拉的方式。 ※ 命令列(Command li
你是否曾對那些支撐著我們日常生活、工作與娛樂的網路系統背後的運作原理感到好奇?想知道是什麼力量讓我們能夠順暢地上網購物、交友、瀏覽資訊嗎?就現在,就讓我們一起探索伺服器(Server)的秘密,從定義到種類,從現狀到趨勢,一篇文章帶你全面探索伺服器的世界!
Networking 網路類 Get the IP address of all interfaces(顯示網路資訊): networkctl status Display all IP addresses of the host(顯示主機名稱相關): hostname -I Enable/d
Thumbnail
** 3C機構設計爸版權所有 ** USB 是我們每天生活上所使用的device中最常有的I/O port,舉凡TV、cash machine、PC、Server、phone、……等等,數不完的device都有USB 接口,當然也存在著不同種類的USB接口,在下次的分享中,3C機構設計爸會做一個U
Thumbnail
ServeMux ServeMux是一個包含映射的結構,映射會將URL映射到對應的伺服器。 DefaultServeMux DefaultServeMux是net/HTTP中預設的多工器,是ServeMux的實例。多工器要根據URL的請求導向到不同的伺服器。DefaultServeMux是
Thumbnail
這篇文章分享如何操作檯達CTA計時器,使用MODBUS RTU通訊模式進行讀取與寫入資料的完整過程。從硬體連接、通訊設定到ISPSoft的軟體配置,詳細介紹每一步驟,並提供實際的程式碼範例。適合希望瞭解CTA通訊設定以及MODBUS應用的技術人員或工程師。
Thumbnail
※ 什麼是路由? 當我們說「路由」時,可能是在談論路由器(實體設備),也可能是在談論路由(選擇路徑的過程),或者是在談論路徑(資料封包的傳輸路徑)。 路由器 (Router):這是一種實體設備,負責將資料封包 (Packet) 從一個網路傳送到另一個網路。它的工作方式類似於交通指揮,確保資料封包
Thumbnail
這篇文章介紹了路由器 (Router) 在網絡硬體中的功能與運作概念,包括路由器的工作原理、運作流程和與其他硬體設備的區別。文章也提及了路由器運作的基本概念,例如路由表的建立方式和路由協定的基礎知識。
Thumbnail
GOB Go官方有提供net/rpc的RPC套件。此套件提供GOB的編/解碼,且支援TCP或HTTP傳輸方式。它可以在伺服器端註冊多個不同類型物件。 遠端存取的要求條件 方法的類型可輸出 方法的本體可輸出 方法必須要有兩個參數是輸出或內建 方法的第二個參數是指標型 方法的返回類型為
※ 介面是什麼: 介面:人跟電腦互相溝通的管道。 使用者與電腦互相溝通的方式稱為使用者的介面。 ※ 使用者的介面類型: 文字使用者介面:CUI。使用純鍵盤來下指令溝通,對象是伺服器(SERVER)。 圖型使用者介面:GUI。使用圖像去做點擊或拖拉的方式。 ※ 命令列(Command li
你是否曾對那些支撐著我們日常生活、工作與娛樂的網路系統背後的運作原理感到好奇?想知道是什麼力量讓我們能夠順暢地上網購物、交友、瀏覽資訊嗎?就現在,就讓我們一起探索伺服器(Server)的秘密,從定義到種類,從現狀到趨勢,一篇文章帶你全面探索伺服器的世界!
Networking 網路類 Get the IP address of all interfaces(顯示網路資訊): networkctl status Display all IP addresses of the host(顯示主機名稱相關): hostname -I Enable/d
Thumbnail
** 3C機構設計爸版權所有 ** USB 是我們每天生活上所使用的device中最常有的I/O port,舉凡TV、cash machine、PC、Server、phone、……等等,數不完的device都有USB 接口,當然也存在著不同種類的USB接口,在下次的分享中,3C機構設計爸會做一個U
Thumbnail
ServeMux ServeMux是一個包含映射的結構,映射會將URL映射到對應的伺服器。 DefaultServeMux DefaultServeMux是net/HTTP中預設的多工器,是ServeMux的實例。多工器要根據URL的請求導向到不同的伺服器。DefaultServeMux是