當前位置: 妍妍網 > 碼農

大解密 !!! 用人話讀懂Modbus RTU

2024-12-05碼農

讀懂Modbus RTU報文,首先需要了解Modbus RTU協定的基本概念和報文結構。Modbus RTU是一種序列通訊協定,廣泛套用於工業自動化領域,允授權編程邏輯控制器(PLC)和電腦之間進行數據交換。它采用主/從架構,主站發起通訊請求,從站響應請求。

Modbus RTU報文由以下幾個部份組成:地址、功能碼、數據和CRC校驗。地址欄位標識從站裝置,功能碼指定了要執行的操作,數據欄位包含了具體的運算元據,而CRC校驗用於確保數據傳輸的準確性。下面我們用模擬對話的形式說清楚Modbus RTU。

情景模擬

假設你的工廠裏有一個溫度傳感器(我們把它叫作小溫),它負責監測某個房間的溫度,並且把資訊傳遞給一台電腦(我們叫它大智)。當大智想要知道當前的溫度時,它就會向小溫發送一條訊息,問:「嘿,現在溫度是多少啊?」然後,小溫會回答說:「目前是25度。」

讀懂對話

  1. 地址域 :首先,大智得確定它是在跟誰說話。每個裝置都有一個獨一無二的地址,就像電話號碼一樣。假設小溫的地址是01,那麽大智發出的訊息開頭就會是這個地址,表示它是找小溫聊天的。

  2. 功能碼 :接下來,大智要說清楚它想幹什麽。這裏使用的是功能碼03,意思是「我想讀取你保存的數據」。所以,大智在訊息中加入03,告訴小溫:「我要看看你記錄的溫度數據」。

  3. 數據區 :大智還需要告訴小溫具體要讀哪個數據。比如,它可能指定讀取寄存器40001中的值,這就像是問小溫:「你放在第一個盒子(寄存器)裏的溫度是多少?」

  4. 校驗碼 :最後,為了確保資訊準確無誤地傳達到位,大智還會加上一個特殊的數位——校驗碼。這是根據前面所有內容計算出來的,用來檢查訊息是否完整正確。

小溫的回應

收到大智的訊息後,小溫會按照同樣的格式回話。它先用自己的地址01開始,接著是功能碼03(表示它理解了請求),然後給出實際的溫度數據,比如說19(十六進制),代表25攝氏度。最後,它也會附上自己的校驗碼。

實際報文

如果把這些都轉換成電腦能理解的十六進制數,整個過程可能是這樣的:

  • 大智發給小溫的請求報文: 01 03 00 00 00 01 B8 0A

  • 小溫回復給大智的響應報文: 01 03 02 19 C6 7B

  • 在這裏:

  • 01 是小溫的地址。

  • 03 是功能碼,表示讀取保持寄存器。

  • 00 00 00 01 分別指定了起始寄存器地址(40001)和讀取數量(1個)。

  • B8 0A 是請求報文的CRC校驗碼。

  • 響應中的 02 表示後面跟著2個字節的數據。

  • 19 是實際的溫度值(25度)。

  • C6 7B 是響應報文的CRC校驗碼。

  • 透過這種方式,即使不懂技術術語的人也能大致明白Modbus RTU報文中發生了什麽。只要你掌握了這個邏輯,解讀類似的機器對話就變得簡單多了。希望這個案例能幫助你更好地理解Modbus RTU的工作原理!

    近期熱文: