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

閱讀時間約 8 分鐘
The Modbus Protocol

The Modbus Protocol

在上一篇文章裡,我們在聊智慧工廠的四個迷思的時候,有聊到了SCADA 這個數據搜集與監看系統,現代的工廠也因為有了 SCADA 這套系統加持所以可以很快把底層數據跟上層的資訊系統勾串在一起,瞬間把各種遠端的生產設備、感測器等數據訊息搜集到電子看板上。那麼 SCADA 系統究竟是怎麼做到同時跟這麼多不同類型的裝置通訊的呢?此時就不得不提 Modbus 通訊協議。

Modbus 是一種定義在通訊應用層的協議,會根據資料跑在不同的實體介面上而有不同的「版本」,例如:應用在 RS232/RS485 串列埠介面的就是 Modbus RTU/ASCII,應用在 TCP/IP 的就是 Modbus TCP 也 SCADA 的主要應用協議。我們從 Modbus 發展的時序來看的話, RTU/ASCII 版本是早於 TCP 版本的,接下來我們就來聊聊跟 Modbus 通訊協議的幾個相關主題,盡量用平易近人的方式來介紹這套通訊協議給大家,暫定需要兩到三篇,第一篇會先談三個部分,包含:

  1. 機器通訊的原理,簡單說明機器通訊是如何運用實體線路通訊的具體方式
  2. 機器語言會用到的資料表示方法,包含二進位跟十六進位表示法
  3. 介紹主從式 Master-Slave 的通訊架構

機器的通訊原理

在無線網路還沒被發明出來前,電腦們都是透過網路卡加網路線來交換資料的。網路卡就是通訊介面,網路線就是通訊線。現在工廠裡大部分的機器設備也都有類似網路孔的通訊介面。而最簡單的通訊架構,例如 I2C 就只要兩條電線就能進行通訊了。在通訊介面上會定義 RX/TX 兩個端口,R 就是 Receive 接收的意思,T 就是 Transmission 傳送的意思,所以接線的時候要把發送端 TX 與接收端 RX 互相連接起來,兩台裝置就可以互相通訊了。 換句話說,假設有 AB 兩台裝置,就把 A 裝置的 RX 接到 B 裝置的 TX,同時把 A 裝置的 TX 接到 B 裝置的 RX。

RX / TX 要對接才會通,圖片參考出處

RX / TX 要對接才會通,圖片參考出處

設備裝置是透過電子訊號來溝通的,就像我們的聲音是透過空氣振動傳播聲音一樣,實體線路是用來傳輸電子訊號的媒介,機器裝置透過控制訊號線上的電壓變化來通訊,例如 RS232 就是利用產生 5V 或 0V 的訊號變化來通訊,我們可以在訊號線的發送跟接收兩端掛一台示波器來監看,當訊號在傳輸的時候,我們就會看到一個由 5V 跟 0V 交替出現隨時間變化的方波訊號。只要是利用實體線路通訊的裝置,基本上都是利用不同的電壓差來通訊,方法類似。關於硬體的底層通訊原理你只要記得,裝置靠的就是控制電壓差的方式來通訊就可以了。

方波訊號示意圖,圖片參考出處

方波訊號示意圖,圖片參考出處

認識簡單的計算機結構

自從馮紐曼定義了計算機的架構就是 0 與 1 後,從此就規定計算機的未來不管怎麼發展,內部狀態永遠只有 0 跟 1。所以如果想要在計算機裡面的儲存資訊的話,不管內容簡單或複雜,最後都必須被編碼變成 1 跟 0 的排列組合,機器才會看得懂。由於機器們的自然語言就只能用 0 跟 1 兩個字母來表達,所以只用 0,1 表達的方式就叫做「二進位」表示法。

當裝置 A 要需要跟裝置 B 通訊的時候,A 就會把訊息編碼成類似 010010011101 的樣子再傳給 B, B 的回應也必須是二進位表示。由於能控制電壓的訊號變化通訊線只有一條,單位時間內就只能有 A 或 B 可以發送訊息。訊息由多個 0,1 組成,每次就只能傳送一個 bit 0 或 1,傳輸動作開始後會持續到所有內容全部傳輸完畢為止。為了區分好每一個 bit 是 0 或 1,電壓訊號發出後會持續一小段時間,每個 bit 間也需要固定的時間間隔。我們假設訊號發出的持續時間 2ms 與 bit 時間間隔 1ms,那麼要傳遞 1101 這 4 個 bit 的訊號就會是: 5V(2ms), 0V(1ms), 5V(2ms), 0V(1ms), 0V(2ms), 0V(1ms), 5V(2ms), 0V(1ms)。用二進位方式通訊的 Modbus 就叫做 Modbus RTU,RTU 是 Remote Terminal Unit 就是遠端端終端裝置。

二進位 Binary 轉十六進位的 ASCII

二進位表示法對機器來說是最有效的溝通方式。當然,使用二進位表示法的缺點也很明顯,就是對人來說很不友善。當我們想要一次傳很多資訊的時候,使用二進位表示法結果就是資訊長度爆表,要用人眼判讀非常困難,溝通效率就會變得很差。於是就有了把四個二進位 bit 合起來看的十六進位的表示的做法。

十六進位跟十進位很像,當記數到 16 的時候,就會往左進 1 位。採用十六進位記數除了沿用十進位的 0-9,還要加上 A-F 六個英文字母用來替代 10-15 這幾個數字。舉個例子:一個十進位的數字 58 用二進位表示是 111010 需要用 6 個 bit (8 bits = 1 byte),如果我們前面先補上兩個 0 變成 00111010 再每 4 個一組分成兩組 0011, 1010 就可以用十六進位改寫為 3A,是不是就精簡好讀很多呢?十六進位能夠用少的符號來表示更多的資訊。而用十六進位方式通訊的 Modbus 就叫做 Modbus ASCII,ASCII 是 American Standard Code for Information Interchange 也就是美國標準資訊交換碼。

Master-Slave,主從式架構

通訊的目的都是為了裝置間的資料交換,我們可以預設在一個通訊迴路上至少有兩台以上的裝置。一條跑 Modbus RTU/ASCII 的 RS485 的迴路按規定可以接 32 台裝置,迴路上的每一個裝置都會設定好 ID 做為識別,RTU/ASCII 走的是 Master-Slave 的通訊架構,什麼是 Master-Slave 架構呢?再次以 RS485 為例,不管通訊迴路上接了多少台裝置,一定要把其中一台設定為 Master,其餘的裝置設定為 Slave。只有 Master 裝置會主動發訊息,其餘的 Slave 裝置都不會主動發話,只會默默的等 Master 裝置來訪問它。

一個 Master-Slave 架構,圖片參考出處

一個 Master-Slave 架構,圖片參考出處

Master 跟 Slave 的對話模式是採取 request and response 也就是一問一答的形式,當通訊開始的時候 Master 裝置準備好要給某個 Slave 裝置的訊息,然後把訊息丟入迴路上開始傳遞,等對應 ID 的 Slave 接收到 Master 發來的訊息後,確認資料沒有問題後就會開始進行資料封包解析。Slave 完成任務後,會隨後再按照 Master 的指令內打包資料回傳給 Master。同理,等 Master 收到訊息確認無誤後,就完整了這一次的通訊。

一般來說,Master 會反覆從第一個 Slave 問到最後一個 Slave 不斷循環的問答過程就叫做輪詢。Master 用輪詢的方式會有個明顯的缺點,輪詢的時間會隨著 Slave 裝置增加而增加,比如說,在 RS485 的 32 個裝置全部接滿的狀況下,就有 31 個 Slave 裝置,假設每次問答一個 Slave 來回需要 200ms 的話,要完成一次輪詢最快也要 6.2 秒。只有一種情況會稍微好一點,就是所有的 Slave 都是相同類型的裝置,此時有實作廣播指令的 Master 裝置就可以一次發話給所有 Slave,來稍微減少一下通訊時間。

要照顧多個 Slaves 的 Master,圖片參考出處

要照顧多個 Slaves 的 Master,圖片參考出處

結語

看到這裡你可能會想,咦!這裡講了一堆硬知識,有電訊號如何傳輸、有計算機體底層,如何進制轉換跟接線架構是有什麼特別用途嗎?別急,說這些硬知識都是為了鋪「梗」,為了幫助我們先在腦中產生具體的畫面,接下來才能更好理解後面要講的通訊協議。相信我,只要有這些畫面很快你也能在生活中找到用來類比案例,這樣學習起來會更有效率。那我們就下一篇見。

avatar-img
14會員
61內容數
WarrenLo's 軟體設計武功祕笈
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Warren Lo的沙龍 的其他內容
每個人都在心裡有了自己對智慧工廠的想像(陰影?),不少人也開始結合自己的經驗得出自己的見解,直接把智慧工廠直接跟某個特定主題直接劃上等號,這種化繁為簡的總結能力對人類學習很有用處,人類是不斷的學習總結來擴展知識能力。但是使用不當或過度簡化也會走歪掉形成「偏見」,而強烈固執的偏見就會升級為「迷思」
只要關鍵字谷歌一下,瞬間一堆資源在眼前,這讓我深刻感覺到,找到學習資源已經沒有困難可言了。可是當我看到 IPQC 被客戶震撼教育的時候,我才發現看似唾手可得的知識也不是每人人都能了解。
RealTime SPC,Real Time 就是即時的意思。習慣用語當然是「越快越好」,那麼到底多快才叫做即時並沒有一定的答案,從數據發生到進入 SPC 系統完成判定是需要花費幾秒到幾分鐘的時間才能完成這個主流程,包含:資料進點處理 ETL、監控規則判定、異常告警觸發、管制圖確認
第一篇聊到了 SPC 的運作原理是基於隨機資料與常態分佈的理論基礎;第二篇談到了實際應用的工具「管制圖」,認識了代表客戶的規格線、品管內部控制的管制界線、ABC 區、八大監控法則還有選擇管制圖的分類。實際應用上還需要回答一個關鍵問題「到底做的好不好?」,有沒有量化的指標來幫助我們判斷製程能力好壞?
能不能用最簡單的言語來總結?所以現在再問我一次這個問題,我的回答是:「SPC 就是管制圖」,所有你在 SPC 需要知道的事情在一張管制圖上都可以看到。
在一場每週都要與客戶殊死的會議裡,看到了負責報告的 IPQC 在一道 SPC 監控的議題上應答失格,品保主管被 Call 出來救援結果也沒交代清楚,想當然耳就被客戶徹底電爆了。其實客戶生氣是有道理的,SPC 是 IPQC 的專業領域,怎麼會說不出製程要監控哪些 SPC 參數?
每個人都在心裡有了自己對智慧工廠的想像(陰影?),不少人也開始結合自己的經驗得出自己的見解,直接把智慧工廠直接跟某個特定主題直接劃上等號,這種化繁為簡的總結能力對人類學習很有用處,人類是不斷的學習總結來擴展知識能力。但是使用不當或過度簡化也會走歪掉形成「偏見」,而強烈固執的偏見就會升級為「迷思」
只要關鍵字谷歌一下,瞬間一堆資源在眼前,這讓我深刻感覺到,找到學習資源已經沒有困難可言了。可是當我看到 IPQC 被客戶震撼教育的時候,我才發現看似唾手可得的知識也不是每人人都能了解。
RealTime SPC,Real Time 就是即時的意思。習慣用語當然是「越快越好」,那麼到底多快才叫做即時並沒有一定的答案,從數據發生到進入 SPC 系統完成判定是需要花費幾秒到幾分鐘的時間才能完成這個主流程,包含:資料進點處理 ETL、監控規則判定、異常告警觸發、管制圖確認
第一篇聊到了 SPC 的運作原理是基於隨機資料與常態分佈的理論基礎;第二篇談到了實際應用的工具「管制圖」,認識了代表客戶的規格線、品管內部控制的管制界線、ABC 區、八大監控法則還有選擇管制圖的分類。實際應用上還需要回答一個關鍵問題「到底做的好不好?」,有沒有量化的指標來幫助我們判斷製程能力好壞?
能不能用最簡單的言語來總結?所以現在再問我一次這個問題,我的回答是:「SPC 就是管制圖」,所有你在 SPC 需要知道的事情在一張管制圖上都可以看到。
在一場每週都要與客戶殊死的會議裡,看到了負責報告的 IPQC 在一道 SPC 監控的議題上應答失格,品保主管被 Call 出來救援結果也沒交代清楚,想當然耳就被客戶徹底電爆了。其實客戶生氣是有道理的,SPC 是 IPQC 的專業領域,怎麼會說不出製程要監控哪些 SPC 參數?
你可能也想看
Google News 追蹤
Thumbnail
這篇文章分享如何操作檯達CTA計時器,使用MODBUS RTU通訊模式進行讀取與寫入資料的完整過程。從硬體連接、通訊設定到ISPSoft的軟體配置,詳細介紹每一步驟,並提供實際的程式碼範例。適合希望瞭解CTA通訊設定以及MODBUS應用的技術人員或工程師。
Thumbnail
訊號產生器在電子工程領域中扮演不可或缺的重要角色,瞭解其原理和用途對於各種產業而言都至關重要。本篇將透過認識原理、瞭解常見類型、以及推薦品牌等內容,來深入探討訊號產生器的使用範疇。
Thumbnail
在科學和工程領域中,「示波器」是一種無可替代的工具。「示波器」是一種電子測量儀器,能夠將電壓變化為數位資訊,使我們能夠觀察到訊號波形。這使得示波器成為了電子工程師的重要工具,因為「示波器」可以用來分析和測試電子系統的性能。此外,示波器的功能並不僅僅限於電子領域,在其他眾多領域中,「示波器」也都有著廣
Thumbnail
數位IC裡我們關注的都是0或1, 大家都知道電腦是0101在做二進位的運算, 在晶片裡又是怎麼做到的? 實際上我們在設計晶片時,會給他一個VDD跟GND, VDD-GND給的是預期的Driving volatge, 像是5V或9V 以5V為例 0或1物理上就是目前的電壓靠近0V或5
Thumbnail
※ 什麼是路由? 當我們說「路由」時,可能是在談論路由器(實體設備),也可能是在談論路由(選擇路徑的過程),或者是在談論路徑(資料封包的傳輸路徑)。 路由器 (Router):這是一種實體設備,負責將資料封包 (Packet) 從一個網路傳送到另一個網路。它的工作方式類似於交通指揮,確保資料封包
Thumbnail
這篇文章介紹了路由器 (Router) 在網絡硬體中的功能與運作概念,包括路由器的工作原理、運作流程和與其他硬體設備的區別。文章也提及了路由器運作的基本概念,例如路由表的建立方式和路由協定的基礎知識。
※ 介面是什麼: 介面:人跟電腦互相溝通的管道。 使用者與電腦互相溝通的方式稱為使用者的介面。 ※ 使用者的介面類型: 文字使用者介面:CUI。使用純鍵盤來下指令溝通,對象是伺服器(SERVER)。 圖型使用者介面:GUI。使用圖像去做點擊或拖拉的方式。 ※ 命令列(Command li
Thumbnail
半導體設計領域中,EDA供應商和代工業者之間的合作日益深化。。ASRA作為汽車用先進SoC技術研究組織,旨在研究開發和標準化汽車SoC。當前的EDA行業,圍繞AI應用和Chiplet的發展,正在逐漸向Synopsys和Cadence這兩家公司集中。
你是否曾對那些支撐著我們日常生活、工作與娛樂的網路系統背後的運作原理感到好奇?想知道是什麼力量讓我們能夠順暢地上網購物、交友、瀏覽資訊嗎?就現在,就讓我們一起探索伺服器(Server)的秘密,從定義到種類,從現狀到趨勢,一篇文章帶你全面探索伺服器的世界!
Thumbnail
這篇文章分享如何操作檯達CTA計時器,使用MODBUS RTU通訊模式進行讀取與寫入資料的完整過程。從硬體連接、通訊設定到ISPSoft的軟體配置,詳細介紹每一步驟,並提供實際的程式碼範例。適合希望瞭解CTA通訊設定以及MODBUS應用的技術人員或工程師。
Thumbnail
訊號產生器在電子工程領域中扮演不可或缺的重要角色,瞭解其原理和用途對於各種產業而言都至關重要。本篇將透過認識原理、瞭解常見類型、以及推薦品牌等內容,來深入探討訊號產生器的使用範疇。
Thumbnail
在科學和工程領域中,「示波器」是一種無可替代的工具。「示波器」是一種電子測量儀器,能夠將電壓變化為數位資訊,使我們能夠觀察到訊號波形。這使得示波器成為了電子工程師的重要工具,因為「示波器」可以用來分析和測試電子系統的性能。此外,示波器的功能並不僅僅限於電子領域,在其他眾多領域中,「示波器」也都有著廣
Thumbnail
數位IC裡我們關注的都是0或1, 大家都知道電腦是0101在做二進位的運算, 在晶片裡又是怎麼做到的? 實際上我們在設計晶片時,會給他一個VDD跟GND, VDD-GND給的是預期的Driving volatge, 像是5V或9V 以5V為例 0或1物理上就是目前的電壓靠近0V或5
Thumbnail
※ 什麼是路由? 當我們說「路由」時,可能是在談論路由器(實體設備),也可能是在談論路由(選擇路徑的過程),或者是在談論路徑(資料封包的傳輸路徑)。 路由器 (Router):這是一種實體設備,負責將資料封包 (Packet) 從一個網路傳送到另一個網路。它的工作方式類似於交通指揮,確保資料封包
Thumbnail
這篇文章介紹了路由器 (Router) 在網絡硬體中的功能與運作概念,包括路由器的工作原理、運作流程和與其他硬體設備的區別。文章也提及了路由器運作的基本概念,例如路由表的建立方式和路由協定的基礎知識。
※ 介面是什麼: 介面:人跟電腦互相溝通的管道。 使用者與電腦互相溝通的方式稱為使用者的介面。 ※ 使用者的介面類型: 文字使用者介面:CUI。使用純鍵盤來下指令溝通,對象是伺服器(SERVER)。 圖型使用者介面:GUI。使用圖像去做點擊或拖拉的方式。 ※ 命令列(Command li
Thumbnail
半導體設計領域中,EDA供應商和代工業者之間的合作日益深化。。ASRA作為汽車用先進SoC技術研究組織,旨在研究開發和標準化汽車SoC。當前的EDA行業,圍繞AI應用和Chiplet的發展,正在逐漸向Synopsys和Cadence這兩家公司集中。
你是否曾對那些支撐著我們日常生活、工作與娛樂的網路系統背後的運作原理感到好奇?想知道是什麼力量讓我們能夠順暢地上網購物、交友、瀏覽資訊嗎?就現在,就讓我們一起探索伺服器(Server)的秘密,從定義到種類,從現狀到趨勢,一篇文章帶你全面探索伺服器的世界!