基于Modbus通訊協議的Rs-485總線在配電自動化控制系統中的應用(05-100)
本設計的異步通信數據以字節的方式傳送,在每一個字節傳送之前,先要通過一個低電平起始位實現握手。為防止干擾信號誤觸發RO(接收器輸出)產生負跳變,使接收端MCU進入接收狀態,在RO腳外接3kΩ上拉電阻;P3.4與DE腳之間通過74HC86實現反相控制,以防止MCU上電時對總線的干擾。
MODBUS通訊協議及編程
本設計采用Modbus通信協議的RTU通訊模式,消息發送至少要以3.5個字符時間的停頓間隔開始。網絡設備不斷偵測網絡總線,包括停頓間隔時間內。當第一個域(地址域)接收到,每個設備都進行解碼以判斷是否發往自己的。一個典型的消息幀如下所示:起始位 設備地址 功能代碼 數據 CRC校驗 結束符。監控計算機通過將要聯絡的智能控制器的地址放入消息中的地址域來選通智能控制器。當智能控制器發送回應消息時,它把自己的地址放入回應的地址域中,以便監控計算機知道是哪一個設備做出回應。地址0是用作廣播地址,以使所有的智能控制器都能認識。當消息從監控計算機發往智能控制器時,功能代碼域將告之智能控制器需要執行哪些行為。在這里主要使用到2種功能碼,03H:讀寄存器數據;06H:寫寄存器數據。讀寄存器的內容包括開關分/合閘狀態、當前電流值、電壓值、故障記錄值等。智能控制器回應時,它使用功能代碼域來指示是正常回應(無誤)還是有某種錯誤發生(稱作異議回應)。對正常回應,智能控制器僅回應相應的功能代碼。對異議回應,智能控制器返回一等同于正常代碼的代碼,并將功能代碼首位置為邏輯1。例如:一從監控計算機發往智能控制器的消息要求讀一組保持寄存器,將產生如下功能代碼:0 0 0 0 0 0 1 1 (十六進制03H) 對正?;貞?,智能控制器僅回應同樣的功能代碼。對異議回應,它返回: 1 0 0 0 0 0 1 1 (十六進制83H)除功能代碼因異議錯誤作了修改外,智能控制器將一獨特的代碼放到回應消息的數據域中,監控計算機應用程序得到異議的回應后重發信息,直到智能控制器能夠正確響應;通過寫寄存器可實現開關遙控分/合閘控制及更改智能控制器系統參數等功能。在最后一個傳輸字符之后,一個至少3.5個字符時間的停頓標定了消息的結束,一個新的消息可在此停頓后開始,如果停頓時間小于3.5個字符時就會引起CRC校驗錯誤。在程序中設置一個幀計時器,當線路上有數據時就刷新該計時器,線路空閑時則停止刷新,計時時間達到3.5幀時計時器被軟件清除,而下一幀則為地址幀,限于篇幅關系,下面簡單給出MODBUS通信中智能控制器查詢發送處理程序流程圖(圖3)和接收中斷處理程序流程圖(圖4)。
由于Modbus編程主要需處理好CRC校驗碼的生成及數據包開始標志的測試,下面給出CRC校驗碼的生成流程,見圖5。
結束語
Modbus協議是目前得到廣泛應用的通信協議,而其構筑的硬件平臺Rs-485總線具有硬件設計簡單、控制方便、成本低廉等優點,在工控自動化系統中將得到越來越多的應用。
參考文獻:《CAN總線在啤酒發酵過程控制系統中的應用》—何用輝 黃耀志
《Modbus通信協議及編程》—朱小襄
評論