RS485 MODBUS協議總結

2021-10-20 07:52:44 字數 1077 閱讀 3342

modbus是一種序列通訊協議,是modicon公司(現施耐德電氣)於2023年發表的。

目前modbus已經成為工業領域通訊協議的業界標準,並且是工業電子裝置之間常用的連線方式。

modbus協議的通訊機制是主從模式,在一條鏈路上可以掛載多個裝置,其中有且只有乙個主裝置,其餘裝置均為從裝置。

在通訊過程中,所有命令均由主裝置發起,從機裝置只能被動接收並響應主裝置發起的命令。

modbus協議的資料幀格式有兩種型別:

一種是ascii型別,資料型別使用字串輸出。

一種是rtu型別,資料型別使用二進位制輸出。

目前常用的是rtu型別,二進位制方式通訊資料量更小,更緊湊。

modbus協議並沒有對鏈路層提出要求,它可以是rs485,也可以是rs232甚至是tcp/ip。

目前最常用的是rs485,因為rs485通訊距離遠,抗干擾能力強,成本低。

rtu資料幀格式

子位址功能碼

資料報校驗字

1位元組1位元組

n位元組2位元組

示例資料:0x11

0x01

0x00 0x00 0x00 0x06

0xbe 0x98

1.從幀格式可以看出來,沒有固定幀頭,也沒有幀長欄位,那麼接收程式怎麼判定幀起始和結束?

協議規定兩個位元組之間的傳輸間隔大於傳輸4個位元組所需的時長,則認為當前幀結束。

注意:由於接收端需要用位元組間隔時間來判斷幀層,因此在傳送資料時,最好關閉mcu中斷,或者使用硬體dma傳送,避免傳送中過程中被其它任務打斷。

傳輸時的波特率越高,間隔時長則越短。

2.接收到完整資料後要怎麼驗證完整性?

驗證crc16校驗值,crc16(子位址+功能碼+資料報),計算結果與最後2個位元組進行對比,如果相同則認為資料報完整,進行下一步處理。

否則資料報有誤,應該丟棄這包資料。

unsigned int modbus_crc16(unsigned char *buff, unsigned int len)

else

}} return crc;

}

RS485通訊和Modbus通訊協議彙總

rs 485上的軟體層協議modbus主要依賴於主從模式。主從模式是指在半雙工通訊方式上,2個或者2個以上的裝置組成的通訊系統中 特別提醒,rs 485硬體協議決定,對於每乙個位元組資料的傳輸是先發高位,再發地位,所以假設陣列u8型陣列revarr 2 存放著接收到的資料,那麼接收端解析資料應該是u...

RS485 MODBUS RTU通訊協議

1 rs485介面標準 rs485由rs232和rs422發展而來,彌補了抗干擾能力差 通訊距離短 速率低的缺點,增加了多點 雙向通訊能力,即允許多個傳送器連線在同一條主線上,同時增加了傳送器的驅動能力和衝突保護特性,擴充套件了匯流排共模範圍。rs485可以採用二線和四線兩種方式,二線制可以實現真正...

RS485匯流排除錯總結

原文 rs485匯流排除錯總結 這裡把這三天來除錯rs485匯流排所遇到的問題和經驗教訓總結一下,備忘。這兩天主要做的是把keller 30x系列工業用壓力變送器的rs485介面和stm32微控制器聯通,並將資料通過usb口 到pc上。我首先直接使用keller 30x連線電腦的rs485介面,這自...