在介紹Modbus RTU數據幀格式之前,首先讓我們(men) 先了解一下Modbus的通訊模式。
Modbus通訊模式
Modbus協議是典型的主-從(cong) 通訊結構,鏈路中隻能有一台主設備,可以有多台從(cong) 設備。主設備向從(cong) 設備發送請求指令,從(cong) 設備對該指令進行響應。從(cong) 設備不能主動向主設備發送指令,並且從(cong) 設備之間也不能進行通信。
Modbus協議通過這些請求、響應指令,實現了主設備對從(cong) 設備中數字量或模擬量數據的訪問和控製。通常,主設備是人機界麵、監控或數據采集係統,從(cong) 設備是傳(chuan) 感器、可編程自動化控製器、智能儀(yi) 器儀(yi) 表等。
Modbus數據幀格式
知道了Modbus是典型的主-從(cong) 式通訊方式後,我們(men) 再來看Modbus RTU數據幀格式。Modbus RTU數據幀由四部分組成,設備地址,功能碼,數據和校驗。
設備地址占1個(ge) 字節,範圍是0~255之間。0是廣播地址,1~247是從(cong) 站設備地址,248~255保留不用。
功能碼占1個(ge) 字節,由協議明確規定,表中列出了一些常用的功能碼。譬如03功能碼是讀保持寄存器,16功能碼是寫(xie) 多個(ge) 寄存器。
數據部分0~252字節,其長度和內(nei) 容由功能碼決(jue) 定。功能碼不同,數據部分的定義(yi) 不盡相同。
校驗2個(ge) 字節,由發送設備計算,將校驗碼之前的數據按照CRC16算法進行計算,生成2個(ge) 字節的數據,放置於(yu) 發送信息的尾部。接受信息的設備再重新計算接收到的信息的CRC碼,比較計算得到的CRC碼是否與(yu) 接收到的相符,如果不相符,則表明數據在傳(chuan) 輸過程中出錯。通過數據校驗增加了係統的安全與(yu) 效率。
常用功能碼數據幀格式
1) 功能碼-0x04(讀輸入寄存器)
舉(ju) 例:讀取2號站,30008~30009 2個(ge) 輸入寄存器的數值。
Modbus RTU主站設備請求幀格式:
2號站設備響應幀格式:
2) 功能碼-0x10(寫(xie) 多個(ge) 寄存器)
舉(ju) 例:向2號站,40002~40003 2個(ge) 保持寄存器分別寫(xie) 入0x000A,0x0102數值
Modbus RTU主站設備請求幀格式:
2號站設備響應幀格式:
3) 功能碼-0x02(讀離散量輸入)
舉(ju) 例:讀取2號站,10197~10218 22個(ge) 離散量的狀態。
Modbus RTU主站設備請求幀格式:
2號站設備響應幀格式:
數據傳輸模式
通過前麵的介紹,可以看到Modbus RTU協議數據幀是沒有起始符和結束符,所以兩(liang) 個(ge) 數據幀之間需要靠時間間隔來區分。協議中規定信息幀發送至少要有3.5個(ge) 字符時間的停頓間隔。即在一個(ge) 數據幀的最後一個(ge) 字符傳(chuan) 輸完成之後,需要至少3.5個(ge) 字符時間的停頓標定數據幀的結束,一個(ge) 新的數據幀可在此停頓之後開始。如果一個(ge) 新消息在小於(yu) 3.5個(ge) 字符時間內(nei) 接著前個(ge) 消息開始,接受的設備將認為(wei) 它是前一數據幀的延續,這將導致CRC校驗出錯。同時整個(ge) 數據幀必須作為(wei) 一連續的流傳(chuan) 輸。如果在幀完成之前有超過1.5字符時間的停頓時間,接受設備將刷新不完整的數據幀從(cong) 而認為(wei) 存在丟(diu) 包現象。
那麽(me) 一個(ge) 字符是什麽(me) 呢,他由1個(ge) bit起始位,8bit數據位,1個(ge) bit奇偶校驗位,1個(ge) bit停止位組成,在發送時從(cong) 起始位開始。
謝謝您看到這裏
您距離成為(wei) 工業(ye) 通信大神更近了一步~