帶你認識物聯網 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
留言分享你的想法!
avatar-img
Warren Lo的沙龍
21會員
62內容數
WarrenLo's 軟體設計武功祕笈
Warren Lo的沙龍的其他內容
2024/09/25
當我們從事軟體開發工作一段時間後,有些人會開始接觸軟體架構設計。由於每個軟體架構設計者的對問題的理解與知識經驗差異會導出不同的設計架構。近期與同事的軟體設計案例經驗交流後,就很希望自己剛開始學習軟體架構設計的時候就有人能用實際的軟體架構設計經驗來帶我入門...
Thumbnail
2024/09/25
當我們從事軟體開發工作一段時間後,有些人會開始接觸軟體架構設計。由於每個軟體架構設計者的對問題的理解與知識經驗差異會導出不同的設計架構。近期與同事的軟體設計案例經驗交流後,就很希望自己剛開始學習軟體架構設計的時候就有人能用實際的軟體架構設計經驗來帶我入門...
Thumbnail
2024/07/02
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
2024/07/02
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
2024/04/08
經過這麼多年的觀察與實踐,一個成熟的軟體工程師還需要第四個要素,它是讓決定你通往熟手的重要關鍵沒有之一。
Thumbnail
2024/04/08
經過這麼多年的觀察與實踐,一個成熟的軟體工程師還需要第四個要素,它是讓決定你通往熟手的重要關鍵沒有之一。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
問題來了,如果在一組 Master-Slave 在通訊過程中出現其他的裝置「插嘴」的狀況會怎麼樣?因為迴路只有一條,所以只要在同一個通訊迴路上同時有兩台裝置發出訊號,結果就是兩個資料封包互相對撞雙雙損毀…
Thumbnail
問題來了,如果在一組 Master-Slave 在通訊過程中出現其他的裝置「插嘴」的狀況會怎麼樣?因為迴路只有一條,所以只要在同一個通訊迴路上同時有兩台裝置發出訊號,結果就是兩個資料封包互相對撞雙雙損毀…
Thumbnail
物聯網裝置跟電腦一樣處理資料過程仰賴記憶體,不同類型的資料必須放在不同的記憶體空間。RD 會按照功能需求去規劃這些數據儲存空間,就像設計師規劃客廳、廚房、衛浴與臥室等居住空間一樣。各個空間的規劃原則上不會允許重疊,如此才能確保不同資料間不會發生互相覆蓋導致記憶體錯誤發生。
Thumbnail
物聯網裝置跟電腦一樣處理資料過程仰賴記憶體,不同類型的資料必須放在不同的記憶體空間。RD 會按照功能需求去規劃這些數據儲存空間,就像設計師規劃客廳、廚房、衛浴與臥室等居住空間一樣。各個空間的規劃原則上不會允許重疊,如此才能確保不同資料間不會發生互相覆蓋導致記憶體錯誤發生。
Thumbnail
當 Modbus 通訊模式可以選 RTU 或 ASCII 這兩種傳輸模式,不過因為兩者的運作機制不一樣,所以通訊時只能選擇其中一種來使用且傳輸端與接收端都必須使用相同的傳輸模式,才不會發生數據解讀錯誤變成一堆亂碼、兩邊雞同鴨講的狀況。關於這兩種傳輸模式的差異之處,主要有三點
Thumbnail
當 Modbus 通訊模式可以選 RTU 或 ASCII 這兩種傳輸模式,不過因為兩者的運作機制不一樣,所以通訊時只能選擇其中一種來使用且傳輸端與接收端都必須使用相同的傳輸模式,才不會發生數據解讀錯誤變成一堆亂碼、兩邊雞同鴨講的狀況。關於這兩種傳輸模式的差異之處,主要有三點
Thumbnail
Modbus TCP 可視為一種 Modbus 分支,是跑在實體通訊介面 TCP/IP 上的 Modbus 通訊協議,TCP/IP 就是我們熟悉的網路。現代的網路讓我們的電腦、手機與其他可以上網等裝置連上互聯網,每一個網路上的裝置都被分配一個不同的 IP 位址,這是網路上用來識別每一台裝置的機制
Thumbnail
Modbus TCP 可視為一種 Modbus 分支,是跑在實體通訊介面 TCP/IP 上的 Modbus 通訊協議,TCP/IP 就是我們熟悉的網路。現代的網路讓我們的電腦、手機與其他可以上網等裝置連上互聯網,每一個網路上的裝置都被分配一個不同的 IP 位址,這是網路上用來識別每一台裝置的機制
Thumbnail
建立Modbus IO Server
Thumbnail
建立Modbus IO Server
Thumbnail
因專案需求需要同時間控制兩台以上不同設備 這些設備都是使用Modbus RTU的方式進行通訊 這裡記錄一下怎麼對兩台以上設備讀取的程式
Thumbnail
因專案需求需要同時間控制兩台以上不同設備 這些設備都是使用Modbus RTU的方式進行通訊 這裡記錄一下怎麼對兩台以上設備讀取的程式
Thumbnail
這篇文章主要介紹 TCP 可靠性傳輸服務、連接管理、流量控制及擁塞控制等...
Thumbnail
這篇文章主要介紹 TCP 可靠性傳輸服務、連接管理、流量控制及擁塞控制等...
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News