找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3039|回復: 0
收起左側

ModbusRTU模式和結束符

[復制鏈接]
ID:104126 發(fā)表于 2016-1-23 03:04 | 顯示全部樓層 |閱讀模式
                        
Modbus RTU模式的協(xié)議字段
起始位
設備地址
功能碼
數據
CRC校驗
結束符
至少3.5個字符
8bit
8bit
N*8bit
16bit
至少3.5個字符
Modbus協(xié)議RTU模式要求每一幀的起始和結束都以至少3.5個字符為間隔。
每個字符間隔是字符位數/波特率,以1位起始位,8位數據,1位停止位,無奇偶校驗位的10位數據。
以波特率為9600b/s為例,字符間隔為1.04ms,也就是每一幀的開始和結束都伴隨著至少3.5*1.04=3.64ms的時間間隔。
在字節(jié)流中以1.5個字符時間作為幀間間隔,以上面的通信速率,則1.5*1.04=1.56ms,即字符流中出現(xiàn)1.56ms的間隔時可能意味著一幀數據結束。
但必須同時滿足其后的一段時間內(2個字符)不會再接收到字符,否則認為結束的該幀為錯誤幀。
由于收到的每個字節(jié)都有可能成為一幀數據的最后一個字節(jié),因此,每接收一個字節(jié),關閉上一個已經開啟的3.5個字符時間和1.5個字符時間的定時器,處理完接收到得數據后再次啟動3.5個字符時間和1.5個字符時間的定時器,以檢測該幀數據的結束。
這也就是上面所說的在幀間間隔后的一段時間內(2個字符)不能接收到數據,否則該幀為錯誤幀。1.5個字符時間和3.5個字符時間的定時起點是一致的,這是Modbus協(xié)議RTU模式的關鍵之處。
當然這也增加了系統(tǒng)的中斷負荷。在發(fā)生1.5個字符時間中斷后,處理其接收到得數據(這里未考慮設備地址、超時、奇偶校驗等錯誤),計算接收到的字符數-2個字節(jié)的CRC校驗和,將計算結果與接收到得最后兩個字節(jié)(當做發(fā)送的CRC校驗)進行比較,從而得知這是否是完整的一幀數據。CRC校驗正確,說明這是一幀完整的數據,CRC校驗錯誤,說明這是一幀錯誤的數據幀,數據幀不完整。


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表