帶你認識物聯網 Modbus 通訊協議 -- 補完計畫(二)

更新於 發佈於 閱讀時間約 4 分鐘
Modbus Protocol

Modbus Protocol

在上一次的物聯網 Modbus 補完計畫(一)中,我們提到了 RTU 與 ASCII 兩種傳輸模式差異之處。接下來我們要繼續看第二個部分關於 Modbus TCP 的確認機制。

通訊就是不可靠

Line 通訊軟體有個神奇的「已讀」功能,代表傳送出去的訊息已經「順利送達」給對方且「已被讀取」,安全抵達與可被確認就是達成可靠通訊的要素。其他不具備「已讀」功能的通訊軟體,訊息送出後就會讓人在心裡一直產生「不知道對方有沒有收到」的不確定性,這種不確定性就是「很不可靠的感覺」。按照我們現在的 Serial 或是網路通訊架構來看,就會了解到通訊的不可靠不只是一種感覺而是一種必然會發生的現象,因為目前的通訊底層都是透過傳輸線的電位變化或是利用無線電磁波來傳遞訊號,這些乘載資訊的物理訊號非常脆弱,很容易遭受各種訊號干擾導致要傳輸資料內容損壞或通訊失效。

Modbus 是比 Ethernet (區域網路) 更簡單的通訊架構,走的是 Master-Slave 模式。協議有規定所有通訊活動只能靠 Master 作為溝通橋樑。而 Master 處理方式就是不斷輪詢對底下的 Slave 裝置來取得資訊,這種「連環 call 」的方法也叫做 Polling by poll。另一方面也是因為協議規定 Slave 裝置們都不可以主動回應,所以 Slave 們在通訊過程中遇到看不懂的、壞掉的資料封包,能做的處理方式就是直接丟掉,從外面看 Slave 裝置的行為就跟「已讀不回」一樣毫無反應。我們能做的也只能等 Master 啟動下一輪輪詢才有機會確認結果(還是有可能已讀不回直到 Timeout),因此 Master 反而成為 Modbus 的通訊的瓶頸,所有的 Slave 裝置們都讓人感覺很不可靠。

TCP 是可靠通訊關鍵

通訊不可靠還包含 Ethernet,Ethernet 就是我們熟知的區域網路。區域網路的設計是會盡力幫我們把資料封包往目的地送,但不保證一定能送到對方手上。而且網路的資料封包也會受各種訊號干擾,頻寬塞滿傳不出去,網路設備超載被丟包甚在網路上資料碰撞導致損毀的狀況,在雙向多工的網路通訊下,上述的各種不可靠的狀況隨時都在發生。既然網路通訊表現這麼糟糕,為什麼我們還是可以收到完整的檔案或圖片呢?這就得歸功於 TCP,Transmission Control Protocol 傳輸控制協定。TCP 是一個坐落在 OSI 網路七層架構的第四層的重要通訊協定,它的超能力是把不可靠網路通訊通訊變成絕對可靠。 (關於網路 OSI 7 層架構後續再找時間跟大家分享)。

由於 TCP 具備把通訊變可靠的超能力,只要是架構在 TCP 之上的通訊服務就都能享受到這個機制,當然也包含了 Modbus (over) TCP 。Modbus 既然要享受 TCP 帶來的好處,當然就要按照 TCP 的規矩來,把要傳輸的資料 PDU 封裝成 Modbus TCP 版本的 ADU (= MBAP + PDU) 的格式。

Modbus ADU

Modbus ADU

當 Client 端走 Modbus TCP 協議發送指令給 Server 端時候,就會觸發 Server 端的 TCP 的檢查機制,TCP 會把 MBAP header 裡的關鍵欄位全部檢查一遍,包含用來識別一收一送的 Transaction id , 代表 Modbus 通訊協議的 Protocol id 以及對接 Serial 的時候所需要的 Unit id,Unit id 也是 Slave 裝置 id。檢查的重點放在資料格式,確認格式沒有問題後就會把封包收下來並且傳回一個 ACK 訊號給 Client 端,被檢查出有問題後也會主動傳回一個 NACK 回去給 Client 端。反過來也一樣,當 Server 端處理完 Client 的需求後,要回覆給 Client 端訊息後也會觸發檢查機制,因此原本已讀不回的 Modbus 通訊模式變成了有問必答 Modbus TCP,從而保證了 Client 與 Server 兩邊資料的格式正確性。

Confirmation, Indication

Confirmation, Indication

另外,TCP 的保證機制並不能解決網路封包碰撞損毀、被丟包等問題,撞毀的資料一樣會被丟棄,TCP 要求重送直到收到正確的資料為止。

小結論

以上就是我這次要跟你分享的 Modbus TCP 確認機制。Modbus TCP 的出現改善了原本的 Master-Slave 這種低效率的通訊模式,升級成為 Client-Server 雙向多工的機制,有了 TCP 加持資料傳輸也變得非常可靠,上層使用者再也不用擔心資料會有收錯或收不到的問題了。可以說有了 Modbus TCP 的物聯網,才是真.物聯網的 Modbus。

留言
avatar-img
留言分享你的想法!
avatar-img
Warren Lo的沙龍
21會員
65內容數
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
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
Modbus 是比 Ethernet 更簡單的通訊架構,走的是 Master-Slave 模式。協議規定 Slave 裝置們都不可以主動回應,所以 Slave 們在通訊過程中遇到看不懂的、壞掉的資料封包,能做的處理方式就是直接丟掉,從外面看 Slave 裝置的行為就跟「已讀不回」一樣毫無反應
Thumbnail
Modbus 是比 Ethernet 更簡單的通訊架構,走的是 Master-Slave 模式。協議規定 Slave 裝置們都不可以主動回應,所以 Slave 們在通訊過程中遇到看不懂的、壞掉的資料封包,能做的處理方式就是直接丟掉,從外面看 Slave 裝置的行為就跟「已讀不回」一樣毫無反應
Thumbnail
這裡說的續傳軟體不是那種下載電影、或不知名的檔案,所用的軟體哦 ! 那種病毒很多的,又會有不知放了什麼東西(放了個餌)想竊取你電腦的資料,又或者是把你的電腦也當成串流的一個中繼站。 不知道你是否有想過,當你在下載的很開心時,這些來源點是怎麼串接的 ? 是否合法,是否你也變成了共犯呢 ? (這是題外話
Thumbnail
這裡說的續傳軟體不是那種下載電影、或不知名的檔案,所用的軟體哦 ! 那種病毒很多的,又會有不知放了什麼東西(放了個餌)想竊取你電腦的資料,又或者是把你的電腦也當成串流的一個中繼站。 不知道你是否有想過,當你在下載的很開心時,這些來源點是怎麼串接的 ? 是否合法,是否你也變成了共犯呢 ? (這是題外話
Thumbnail
我們前一篇介紹了「【Web系列】訂閱技術的基石,RSS Feed是什麼?」,相信也對於訂閱的機制具備一定的認識了,雖然RSS已經能夠滿足我們訂閱的一些基本需求,但由於主要的訂閱端還是定期去檢查更新資訊,因此假設我們想要在最短時間內掌握最新資訊時,仍會有一些延遲,再者也非常浪費頻寬。 我們為什麼不能改
Thumbnail
我們前一篇介紹了「【Web系列】訂閱技術的基石,RSS Feed是什麼?」,相信也對於訂閱的機制具備一定的認識了,雖然RSS已經能夠滿足我們訂閱的一些基本需求,但由於主要的訂閱端還是定期去檢查更新資訊,因此假設我們想要在最短時間內掌握最新資訊時,仍會有一些延遲,再者也非常浪費頻寬。 我們為什麼不能改
Thumbnail
** 3C機構設計爸版權所有 ** EMC/ESD測試的"祖譜"中,最上階的學術名稱叫做 "Regulatory",不管是任何所謂的電磁波相關的測試都被包含在 Regulatory 內。其中EMC 和 Safety 就是Regulatory 的主要項目。 Safety
Thumbnail
** 3C機構設計爸版權所有 ** EMC/ESD測試的"祖譜"中,最上階的學術名稱叫做 "Regulatory",不管是任何所謂的電磁波相關的測試都被包含在 Regulatory 內。其中EMC 和 Safety 就是Regulatory 的主要項目。 Safety
Thumbnail
如果你還是決定繼續使用NAS,在不花錢請專業資安人員的前提下,自己多花一點時間學習如何設定是必要的。天下沒有白吃的午餐,任何解決方案都是有利有弊。 在這個離不開電子資料的年代,提升自己的資安知識,我想已經是每個人無可迴避的義務。
Thumbnail
如果你還是決定繼續使用NAS,在不花錢請專業資安人員的前提下,自己多花一點時間學習如何設定是必要的。天下沒有白吃的午餐,任何解決方案都是有利有弊。 在這個離不開電子資料的年代,提升自己的資安知識,我想已經是每個人無可迴避的義務。
Thumbnail
在資訊安全越來越受重視的現在,就算用白紙黑字的合約說會保護使用者隱私,對資訊從業人員來說仍然不夠。到底要怎麼做,我們才能做到極致的隱私保護呢? 縮圖來源:https://www.pexels.com
Thumbnail
在資訊安全越來越受重視的現在,就算用白紙黑字的合約說會保護使用者隱私,對資訊從業人員來說仍然不夠。到底要怎麼做,我們才能做到極致的隱私保護呢? 縮圖來源:https://www.pexels.com
Thumbnail
有鑑於接觸到的許多資訊從業人員對密碼學的認識不足,太低估密碼學,或太高估它的效果。這讓小弟有感而發,想做一些實務上的介紹。希望未來台灣或整個大中華區的資訊從業人員都不會對密碼學有奇怪的見解。 縮圖來源:https://www.pexels.com/zh-tw/photo/53207/
Thumbnail
有鑑於接觸到的許多資訊從業人員對密碼學的認識不足,太低估密碼學,或太高估它的效果。這讓小弟有感而發,想做一些實務上的介紹。希望未來台灣或整個大中華區的資訊從業人員都不會對密碼學有奇怪的見解。 縮圖來源:https://www.pexels.com/zh-tw/photo/53207/
Thumbnail
何謂「通訊協定(Communication Protocol)」? 電腦之間進行互相通訊所遵守的通訊方法,這個方法是由大家協議出來的通訊方法就稱為「通訊協定」。 情境: 【人類彼此溝通時,A使用中文,B也同樣也要使用中文。】 通訊協定的實際應用
Thumbnail
何謂「通訊協定(Communication Protocol)」? 電腦之間進行互相通訊所遵守的通訊方法,這個方法是由大家協議出來的通訊方法就稱為「通訊協定」。 情境: 【人類彼此溝通時,A使用中文,B也同樣也要使用中文。】 通訊協定的實際應用
Thumbnail
在學習網際網路技術中,不管是有線技術(e.g. 802.3 ethernet)或是無線技術(e.g. 802.11 wireless nertwork)都必須要了解「網路設備是如何把訊息傳送到實體媒介上」的觀念,而這也就是CSMA/CA與CSMA/CD存在的意義。
Thumbnail
在學習網際網路技術中,不管是有線技術(e.g. 802.3 ethernet)或是無線技術(e.g. 802.11 wireless nertwork)都必須要了解「網路設備是如何把訊息傳送到實體媒介上」的觀念,而這也就是CSMA/CA與CSMA/CD存在的意義。
Thumbnail
最近談起資安相關的話題時,發現其他人有些觀念可能有待澄清。筆者因為過去的經歷,在這方面也算是有點心得;所以這裡就來探討幾點大家可能比較有興趣、但觀念上可能跟一般研發經驗不一樣的地方。
Thumbnail
最近談起資安相關的話題時,發現其他人有些觀念可能有待澄清。筆者因為過去的經歷,在這方面也算是有點心得;所以這裡就來探討幾點大家可能比較有興趣、但觀念上可能跟一般研發經驗不一樣的地方。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News