Modbus協議在串行鏈路上的實現指南

1. 概述

    Modbus串行鏈路協議是一個主/從協議。該協議位於OSI模型的第二層。

    一個主從類型的系統有一個向向某個“子”節點發出顯式命令並處理響應的節點(主節點)。典型的子節點在沒有收到主節點的請求時並不主動發送數據,也不與其它子節點通信。

    在物理層,Modbus串行鏈路系統可以使用不同的物理接口(RS485、RS232)。最常用的是RS485兩線制接口。作爲附加的選項,也可以實現RS485四線制接口。當只需要短距離的點到點通信時,RS232串行接口也可以使用。

                                   

位於OSI模型第7層的Modbus應用層報文傳輸協議,提供了連接與總線或網絡的設備之間的客戶機/服務器通信。在Modbus串行鏈路上客戶機的功能由主節點提供而服務器功能由自己節點。

2. Modbus數據鏈路層

① Modbus主站/從站協議原理

    Modbus串行鏈路協議是一個主--從協議。在同一時刻,只有一個主節點連接與總線,一個或多個子節點(最大編號爲247)連接於同一個串行總線。Modbus通信總是有主節點發起。子節點在沒有收到來自主節點的請求時,從不會發送數據。子節點之間從不互相通信。主節點在同一時刻只會發起一個Modbus事務處理。

主節點以兩種模式對子節點發出Modbus請求:

① 在單播模式,主節點以特定地址訪問某個子節點,子節點接到並處理完請求後,子節點向主節點返回一個報文(一個應答)

    在這種模式下,一個Modbus事務處理包含2個報文:一個來自主節點的請求,一個來自子節點的應答。

    每個子節點必須有唯一的地址(1到247)這樣才能區別於其他節點被獨立的尋址。

②在廣播模式,主節點向所有的子節點發送請求。

    對於主節點廣播的請求沒有應答返回。廣播請求一般用於寫命令。所有設備必須接受廣播模式的寫功能。地址0是專門用於表示廣播數據的。

單播和廣播模式的區別在一個多點的結構下(RS485)更加易於理解。

② Modbus幀描述

    Modbus應用協議Ⅰ定義了簡單的獨立於其下面通信層的協議數據單元PDU

                                

在不同總線或網絡的Modbus協議映射在協議數據單元之外引入了一些附加的域。發起Modbus事務處理的客戶端構造Modbus PDU,然後添加附加的域以構造適當的通信PDU

                     

    在Modbus串行鏈路,地址域只含有子節點地址。

合法的子節點地址爲十進制的0-247.每個子設備被賦予1-247範圍中的地址。主節點通過將子節點的地址放到報文的地址域對子節點尋址。當子節點放回應答時,它將自己的地址放到應答報文的地址域以讓主節點知道那個子節點在回答。

功能碼指明服務器要執行的動作。功能碼後面可跟有表示含有請求和響應參數的數據域。

錯誤檢測域是對報文內容執行“冗餘校驗”的計算結果。根據不同的傳輸模式(RTU or ASCII)使用兩種不同的計算方法。

3.主站/從站狀態圖

Modbus由兩個不同的子層組成:

    主/從協議

    傳輸模式(RTU和ASCII模式)

① 主站狀態圖

                          

Ⅰ 狀態“空閒” =無等待的請求。這是電源上電後的初始狀態,只有在“空閒”狀態請求才能被髮送。發送一個請求後,主節點離開“空閒”狀態,而且不能同時發送第二個請求。

Ⅱ 當單播請求發送到一個子節點,主節點將進入“等待應答”狀態,同時一個臨界超時定時啓動。這個超時稱爲“響應超時”。它避免主節點永遠處於“等待應答”狀態。響應超時的時間依賴具體應用

Ⅲ 當收到一個應答時,主節點在處理數據之前檢驗應答。在某些情況下,檢驗的結構可能爲錯誤。如收到來自非期望的子節點的應答,或接收的幀錯誤。在收到來自非期望子節點的應答時,響應超時繼續計時;當檢測到鎮錯誤時,可以執行一個重試。

Ⅳ 響應超時但沒有收到應答時,則產生一個錯誤。那麼主節點進入“空閒”狀態,併發出一個重試請求。重試的最大次數取決於主節點的設置。

Ⅴ當廣播請求發送到串行總線上,沒有響應從子節點返回。然而主節點需要進行延遲以便使子節點在發送新的請求處理完當前請求。該延遲被稱作“轉換延遲”。因此,主節點會在返回能夠發送另一個請求的“空閒”狀態之前,到“等待轉換延遲”狀態。

Ⅵ 在單播方式,響應超時必須設置到足夠的長度以使任何子節點都能處理完請求並返回響應。而廣播轉換延遲必須有足夠的長度以使任何子節點都能只處理完請求而可以接收新的請求。因此,轉換延遲應該比響應超時要短。典型的響應超時在9600bps時從1s到幾秒。而轉換延遲從100ms到200ms

Ⅶ 鎮錯誤包括:  對每個字符的奇偶校驗  ;  對整個幀的冗餘校驗

② 從站狀態圖

                     

Ⅰ 狀態“空閒” = 沒有等待的請求。這是電源上電後的初始狀態

Ⅱ 當收到一個請求時,子節點在處理請求中要求的動作前檢驗報文包。不同的錯誤可以發生於:請求的合適錯,非法動作,當檢測到錯誤時,必須想主節點發送應答

Ⅲ 當要求的動作完成後,單播報文要求必須格式化一個應答併發往主節點。

Ⅳ 如果子節點在接受到的幀中間的錯誤,則沒有響應返回到主節點

Ⅴ 任何子節點均應該定義並管理Modbus診斷計數器以提供診斷 信息。通常使用Modbus診斷功能碼,可以得到這些計數值。

③ 主站/從站通信時序圖

                           

Ⅰ 請求、應答,廣播階段的持續時間依賴於通信特徵(幀長度和吞吐量)

Ⅱ  等待和處理階段的持續時間取決於子節點應用的請求處理時間




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章