基於AVR128的簡單Modbus協議實現

來源:互聯網
上載者:User

標籤:modbus avr atmega128

Modbus通訊協議是由Modicon公司在1979年開發的,應用於工業現場控制的匯流排協議。Modbus通訊系統包括帶有可程式化控制的晶片節點和公用傳輸線組成,其目的是用於多節點資料的採集和監控。Modbus協議採用主從模式,通訊系統中有一個主機對多個節點從機進行監控,從機節點最多支援247個。每個從機均有自己獨立的從機地址,而且改地址能夠被主機識別。

能夠支援Modbus協議的通訊系統有RS-232,RS-422,RS-485等。同時Modbus協議具有標準、開放、免費、幀格式簡單等特點而被廣大工程師所採用。

Modbus協議中資料轉送採用ASCII和RTU兩種模式。其中ASCII傳輸方式表示的資料通俗易懂,便於和PC機直接通訊識別,但其缺點是採用單位元組表示一個資料,傳輸相同的資料需要更多的幀數和時間。RTU模式採用壓縮的十六進位表示方式,一個位元組可以壓縮裝載兩個資料,這樣相同的幀數下RTU模式可以傳輸更多的資料。

Modbus資料幀校正分兩種方式:CRC迴圈冗餘校正和LRC縱向冗餘校正。下面使用Proteus模擬atmega128.兩片128之間進行串口通訊,串口通訊上跑的是簡單的Modbus協議。

模擬圖如下所示:


說明:U1使用1602進行接收資料的顯示。資料幀採用RTU模式,但是為了方便1602進行顯示,傳輸的資料幀訊息採用了0X3x(0,1,2,3...等數的ASCII表示形式,這樣可以直接送入1602進行顯示,從而方便類比)。圖片中間的三個按鍵是U2的三個中斷。



按下之後U2單片機會發送一幀資料,資料內容是0X30, 0X31,0X33,0X01,0X34,0X37。

按照Modbus協議0X30,0X31是表示的從機地址,0X33是表示命令字元,0X01表示資料域長度,0X34表示資料域,0X37是進行的LRC校正。我們採用這種方式進行簡化是為了方便1602進行顯示,其中0x01是ASCII碼中的空格’‘也能夠在1602中進行顯示。

單片機U1的PB口和PE口狀態分別顯示了LRC校正位元組和資料域首位元組。


當按下button1的時候U2發送資料幀,U1進行接收並且對接收資料繼續校正,如果校正無誤,那麼進行顯示。

按下button1結果如下


中間的01由於是空格的ASCII碼值所以1602顯示空格。由於資料域我是採用數組存放資料方式,LCD顯示代碼以C語言中的’\0’結束顯示,所以校正位元組沒有顯示出來,我將它投影到連接埠B上,連接埠B的狀態是0X37。這樣也就驗證了這個簡單的Modbus協議的正常傳輸。

 

按動U2的button2可以主動產生一個LRC校正錯誤。(我在代碼校正的時候也沒有採用標準的LRC校正,只是進行了累加校正)。U2在對資料幀填充完畢的時候刻意更改校正值,將更改後的資料幀發送給U1,U1接收後進行校正則產生校正錯誤提示。按下button2結果



從虛擬終端中我們可以看出,我們手動更改了校正值,由0x37更改成0XFF,那麼U1接收到的資料進行校正那麼就會產生校正錯誤提示。。。實際校正結果還是0X37,但是我們在發送前將校正改成了0XFF,導致接收方校正0x37 !=0xff,從而產生錯誤。。。

按下button3回產生資料幀錯誤。按下button3,U2刻意發送一個不完整的資料幀。如果資料幀不完整,U1不可能進行無限時間的等待。所以U1使用定時器0進行逾時判斷,如果超過10ms,資料幀依然不完整那麼判斷此資料幀為錯誤幀。。結果如下。


在事件3中我們可以讓U2不發送校正碼,導致該幀資料不完整。U1等待10ms後判定該資料幀是幀錯誤。。

 

該模擬的模擬程式和模擬工程存放到網盤地址http://yun.baidu.com/share/link?shareid=368414814&uk=840368654&third=0

裡邊包含了U1 和U2的工程代碼分別在各自的MAIN檔案夾中。模擬檔案在ISIS檔案夾中。希望對你有協助。88

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.