modbus


Modbus基礎

1簡述,modbus是一種工業用的多設備之間的主從通信協議。只要兩臺設備之間,是採用modbus協議的主從關係,並連接到相同網絡,即可互相通信。因爲Modbus只是協議,而且只規定了數據幀,底層連接,可以是232,485或者以太網。設備一般採用232和485進行通信,因爲成本低。當然要是考慮遠距離傳輸和多賣錢的話,也會採用以太網,不過應該就會相應複雜一些了。

2模式,modbus有兩種模式,一種叫RTU模式,另一種叫acsii模式,RTU模式是純二進制的,而acsii模式,一個信息中的每8位字節作爲2個ascii字符傳輸的,這種模式的主要優點時允許字符之間的時間間隔長達1秒,也不會出現錯誤。而較acsii模式,RTU模式的優點是用最少的字節,表達更多的內容。但同時也要求設備必須連續傳輸。

3通訊,modbus屬於主從通訊,可以是一主一從或者一主多從。通訊的方式爲主機向從機發送命令(或者叫請求)從機向主機發送響應。主機不發送,從機不返回,一發,一收,不發不收。而且一個時間,只有一個機器發送請求或者響應,否則的話,則會出錯。

4信息幀RTU幀,開始時,必須要有3.5個靜止的時間,也就是時間間隔,用來區分上一幀和下一幀,如果沒有時間間隔的話,則會分辨不出哪裏是幀開始,哪裏是幀結束了。3.5個時間間隔依據波特率不同而不同。同樣,結束時也需要時間。除了時間以外,還有地址,功能碼,數據,crc校驗四個部分,每個部分的字節數不同,地址功能碼各1個字節,crc是2個字節其完整表達如下:

      

開始

地址

功能

數據

校驗

結束

3.5t 

1字節 8b

1字節 8b

n字節 n*8b

2字節16b

3.5t 

 

4.1、地址:主要用於區分從機,在下位機程序中,的宏定義中設置不同的從機地址。

       #defineModbus_addr 0x01

設備響應時,第一位也是本機地址。地址的範圍是從0-247,地址0爲廣播地址,所有機器均可以識別。

  4.2、功能碼:表示主機要命令這個設備的什麼功能,執行什麼程序。我看了一下正規的modbus的功能碼多達24個,不同廠家生產的不同型號的設備,可能會支持不同的功能碼,所以買之前需要注意一下。具體功能如下:

      

01讀線圈狀態 

02讀輸入狀態 

03讀保持寄存器

04讀輸入寄存器 

05強制單個線圈

06 預置單個寄存器

07讀不正常狀態

08診斷

09程序484

10查詢484

11通訊事件控制

12通訊事件記錄

13程序控制器

14查詢控制器

15強制多個寄存器

16 預置多個寄存器

17報告從機id

18程序884/M84

19通訊鏈路復位

20讀通用參考值

21 寫通用參考值

22 Mask Write 4X Register

23 Read/Write 4X Registers

24 Read FIFO 隊列

常用01 02 03 04 05 06 15 和16功能碼。

4.3、數據區,根據功能碼的不同數據的長度是不同的。

4.4、crc校驗 包含兩個字節,發送端發送時,一幀的所有數據統一計算出一個crc校驗碼,然後加在一幀的最後兩位中,然後等到發送到接收端時接收端重新計算一次除最後兩位的一幀所有數據,然後根據兩個數據的對比,來判斷接收到的數據是否正確。

 

MODBUS報文模型



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