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