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介面,這自...