供貨周期 | 現(xiàn)貨 |
---|
產品簡介
詳細介紹
2.2 Modbus協(xié)議棧設計
控制器能設置ASCII或RTU兩種傳輸模式中的任何一種在標準的Modbus網絡中通信。目前常用的是RTU模式。在消息中的每個8 bit字節(jié)包含2個4 bit的十六進制字符,在同樣的波特率下,可比ASCII方式傳送更多的數(shù)據(jù)[1]。本設計采用Modbus RTU傳輸模式,使用RTU模式的關鍵是幀字符時間的處理。要求至少為3.5個字符時間的空閑間隔將報文幀區(qū)分開,同時整個報文幀必須作為一個連續(xù)的數(shù)據(jù)流傳輸,2個字符之間的空閑間隔小于1.5個字符時間[2]。
協(xié)議棧采用分層設計,分為協(xié)議狀態(tài)機處理部分和硬件相關部分。協(xié)議狀態(tài)機部分,通過查詢協(xié)議事件狀態(tài)維護協(xié)議狀態(tài)機,根據(jù)不同狀態(tài)對接收幀進行校驗以及對功能碼的處理函數(shù)。硬件相關部分包括對定時器和串口的初始化配置以及相應的定時器中斷、串口接收發(fā)送中斷。協(xié)議棧程序的流程圖如圖5。應用程序將AD采樣后處理好的數(shù)據(jù)存儲在特定的緩沖區(qū)中,供上位機查詢。協(xié)議棧的接收和發(fā)送Modbus RTU數(shù)據(jù)幀是通過一個由硬件提取層的調用驅動狀態(tài)機來實現(xiàn)的。協(xié)議棧開T3.5字符計時中斷、接收中斷和發(fā)送中斷,在主函數(shù)循環(huán)中對事件標志進行查詢和處理。