資源描述:
《基于can總線通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、基于CAN總線通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)1前言控制器局域網(wǎng)(CAN-ControllerAreaNetwork)屬于現(xiàn)場總線(Fieldbus)的范疇,是眾多的屬于現(xiàn)場總線標(biāo)準(zhǔn)之一,它適用于工業(yè)控制系統(tǒng),具有通信速率高、可靠性強(qiáng)、連接方便、性能價(jià)格比高等諸多特點(diǎn)。它是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡(luò),以其短報(bào)文幀及CSMA/CD-AMP(帶有信息優(yōu)先權(quán)及沖突檢測的載波監(jiān)聽多路訪問)的MAC(媒介訪問控制)方式而倍受工業(yè)自動化領(lǐng)域中設(shè)備互連的厚愛。CAN的應(yīng)用范圍遍及從高速網(wǎng)絡(luò)到低成本的多線路網(wǎng)絡(luò),它可以應(yīng)用于汽車系統(tǒng)、機(jī)
2、械、技術(shù)設(shè)備和工業(yè)自動化里幾乎任何類型的數(shù)據(jù)通信。CAN具有如一下優(yōu)點(diǎn):1)使用簡單方便。許多CAN控制器實(shí)現(xiàn)了CAN物理層及數(shù)據(jù)鏈路層的大部分功能,用戶只須對CAN控制器進(jìn)行初始化和對CAN總線上的數(shù)據(jù)進(jìn)行收發(fā)操作即可實(shí)現(xiàn)通信;2)高可靠性。CAN上的最大通信速率可達(dá)1Mbps,CAN總線是多主節(jié)點(diǎn),各節(jié)點(diǎn)通過總線仲裁獲得總線控制權(quán)。完善的錯誤處理機(jī)制保證了高噪聲干擾環(huán)境下數(shù)據(jù)傳送的安全可靠;3)系統(tǒng)可擴(kuò)展性能好。CAN總線是基于發(fā)送報(bào)文的編碼,而不是對CAN控制節(jié)點(diǎn)進(jìn)行編碼,故增添或刪除CAN節(jié)點(diǎn)不會對系統(tǒng)造成太大的影響。C
3、AN總線以報(bào)文為單位進(jìn)行信息傳送,它支持4種不同類型的報(bào)文幀:數(shù)據(jù)幀、遠(yuǎn)程幀、超載幀和錯誤幀。報(bào)文中包含信息標(biāo)識符ID,它標(biāo)志了報(bào)文的優(yōu)先權(quán)。CAN總線上各個節(jié)點(diǎn)都可主動發(fā)送,總線上的報(bào)文采用標(biāo)識符ID進(jìn)行仲裁,ID值越小,優(yōu)先級越高。具有最高優(yōu)先權(quán)報(bào)文的節(jié)點(diǎn)贏得總線使用權(quán),而其它節(jié)點(diǎn)自動停比發(fā)送。在總線再次空閑后,這些節(jié)點(diǎn)將自動重發(fā)原報(bào)文。網(wǎng)絡(luò)中的所有節(jié)點(diǎn)都可由ID來自動決定是否接收該報(bào)文。每個節(jié)點(diǎn)都有ID寄存器和屏蔽寄存器接收到的報(bào)文只有與該屏蔽的功能相同時,該節(jié)點(diǎn)才開始正式接收報(bào)文,否則它將不理睬ID后面的報(bào)文。這使CAN
4、系統(tǒng)非常靈活,可任意擴(kuò)展或改變網(wǎng)絡(luò)組成。C8051F系列單片機(jī)是集成的混合信號片上系統(tǒng)SOC(Systemonchip),具有與MCS-51內(nèi)核及指令集完全兼容的微控制器,除具有標(biāo)準(zhǔn)8051的數(shù)字外設(shè)部件之外,片內(nèi)還集成數(shù)據(jù)采集和控制系統(tǒng)中常用的模擬部件和其它數(shù)字外設(shè)及功能部件。正是由于其體積小、集成度高、功能多、配置容易、使用方便等特點(diǎn),已被廣泛應(yīng)用于智能儀表、數(shù)據(jù)采集、自動化控制等領(lǐng)域。因此本文采用C8051F120設(shè)計(jì)與實(shí)現(xiàn)CAN總線通信協(xié)議,充分發(fā)揮其體積小、可靠性高的特點(diǎn)。C8051F120是完全集成的混合信號片上系統(tǒng)
5、MCU芯片,具有64個數(shù)字I/O引腳(100腳TQFP封裝)。2數(shù)據(jù)傳輸格式的制定在CAN2.0規(guī)范中規(guī)定,每次收發(fā)最多只能傳送8字節(jié).這可以滿足大多數(shù)工業(yè)領(lǐng)域中控制命令、工控狀態(tài)和測試數(shù)據(jù)的一般要求;但實(shí)際應(yīng)用中,往往出現(xiàn)傳送多于8字節(jié)的要求,此時應(yīng)通過報(bào)文的拆卸和拼接技術(shù)予以實(shí)現(xiàn)。本文在CAN2.0A的基礎(chǔ)上,定義了簡單的傳輸格式,完成了單幀數(shù)據(jù)和多幀數(shù)據(jù)準(zhǔn)確快捷的傳輸。信息傳遞格式如表一所示:其中,各位的含義如下:FF:0表示為標(biāo)準(zhǔn)格式,1表示為擴(kuò)展格式;RTR:0表示為數(shù)據(jù)幀,1表示為遠(yuǎn)程幀;DLC.X:數(shù)據(jù)長度代碼位(
6、0~8);ID.X:信息標(biāo)識符位:ID.28~I(xiàn)D.26為信息功能標(biāo)識???ID.25~I(xiàn)D.21為接收任務(wù)標(biāo)識???ID.20~I(xiàn)D.18為接收節(jié)點(diǎn)地址標(biāo)識X:保留位,默認(rèn)為0,不能對保留位進(jìn)行寫操作;DATAO:數(shù)據(jù)場的第一個字節(jié),本協(xié)議中用來表明數(shù)據(jù)的屬性;DATA0.7~DATAO.5為發(fā)送節(jié)點(diǎn)地址標(biāo)識;DATA0.4~DATAO.1為數(shù)據(jù)功能標(biāo)識???DATA0.00為擴(kuò)展位,‘0’表明數(shù)據(jù)長度小于8不用擴(kuò)展,‘1’表示數(shù)據(jù)長度大于8需要擴(kuò)展DATA1作傳遞次數(shù)索引。?DATA1:DATAO.0為0時,傳遞數(shù)據(jù);DAT
7、AO.0為1時,為數(shù)據(jù)傳遞次數(shù)的索引。本文設(shè)計(jì)的信息優(yōu)先級從高到低依次為:信息功能標(biāo)識、任務(wù)功能標(biāo)識和目標(biāo)節(jié)點(diǎn)地址標(biāo)識。信息功能標(biāo)識設(shè)在ID的最高幾位,通過3位的功能代碼可以區(qū)分某些情況的8種基本功能:這些功能可以為節(jié)點(diǎn)狀態(tài)控制、節(jié)點(diǎn)保護(hù)、緊急情況通報(bào)以及有時間標(biāo)記的信息等;接收任務(wù)標(biāo)識表明本幀數(shù)據(jù)的任務(wù)屬性,容量為32;目標(biāo)節(jié)點(diǎn)地址指示本次數(shù)據(jù)的目的地址,容量為8。DATA0.0在本協(xié)議中作為標(biāo)志位,用來區(qū)別單幀傳輸和多幀傳輸,解決了大于8字節(jié)的字符串的傳輸問題。當(dāng)標(biāo)志位為1時,表示傳送的是多幀數(shù)據(jù);為0時表明是單幀數(shù)據(jù)。這樣
8、克服了CAN只能傳輸小于等于8字節(jié)數(shù)據(jù)的缺點(diǎn),實(shí)現(xiàn)了大于8字節(jié)的數(shù)據(jù)的傳輸。為了識別多幀傳輸中可能會出現(xiàn)的重幀和丟幀現(xiàn)象,本協(xié)議規(guī)定數(shù)據(jù)場第一字節(jié)作為多幀數(shù)據(jù)傳輸次序的索引。按照本協(xié)議制定的格式傳輸數(shù)據(jù)時,單幀最多傳輸7字節(jié)的實(shí)際數(shù)據(jù):當(dāng)數(shù)據(jù)流長度大于7字節(jié)時,