基于CAN總線通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)
1 前言
控制器局域網(wǎng)(CAN-Controller Area Network)屬于現(xiàn)場總線(Fieldbus)的范疇,是眾多的屬于現(xiàn)場總線標(biāo)準(zhǔn)之一,它適用于工業(yè)控制系統(tǒng),具有通信速率高、可靠性強(qiáng)、連接方便、性能價(jià)格比高等諸多特點(diǎn)。它是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò),以其短報(bào)文幀及CSMA/CD-AMP(帶有信息優(yōu)先權(quán)及沖突檢測的載波監(jiān)聽多路訪問)的MAC(媒介訪問控制)方式而倍受工業(yè)自動(dòng)化領(lǐng)域中設(shè)備互連的厚愛。CAN的應(yīng)用范圍遍及從高速網(wǎng)絡(luò)到低成本的多線路網(wǎng)絡(luò),它可以應(yīng)用于汽車系統(tǒng)、機(jī)械、技術(shù)設(shè)備和工業(yè)自動(dòng)化里幾乎任何類型的數(shù)據(jù)通信。CAN具有如一下優(yōu)點(diǎn):
1)使用簡單方便。許多CAN控制器實(shí)現(xiàn)了CAN物理層及數(shù)據(jù)鏈路層的大部分功能,用戶只須對(duì)CAN控制器進(jìn)行初始化和對(duì)CAN總線上的數(shù)據(jù)進(jìn)行收發(fā)操作即可實(shí)現(xiàn)通信;
2)高可靠性。CAN上的最大通信速率可達(dá)1Mbps,CAN總線是多主節(jié)點(diǎn),各節(jié)點(diǎn)通過總線仲裁獲得總線控制權(quán)。完善的錯(cuò)誤處理機(jī)制保證了高噪聲干擾環(huán)境下數(shù)據(jù)傳送的安全可靠;
3)系統(tǒng)可擴(kuò)展性能好。CAN總線是基于發(fā)送報(bào)文的編碼,而不是對(duì)CAN控制節(jié)點(diǎn)進(jìn)行編碼,故增添或刪除CAN節(jié)點(diǎn)不會(huì)對(duì)系統(tǒng)造成太大的影響。
CAN總線以報(bào)文為單位進(jìn)行信息傳送,它支持4種不同類型的報(bào)文幀:數(shù)據(jù)幀、遠(yuǎn)程幀、超載幀和錯(cuò)誤幀。報(bào)文中包含信息標(biāo)識(shí)符ID,它標(biāo)志了報(bào)文的優(yōu)先權(quán)。CAN總線上各個(gè)節(jié)點(diǎn)都可主動(dòng)發(fā)送,總線上的報(bào)文采用標(biāo)識(shí)符ID進(jìn)行仲裁,ID值越小,優(yōu)先級(jí)越高。具有最高優(yōu)先權(quán)報(bào)文的節(jié)點(diǎn)贏得總線使用權(quán),而其它節(jié)點(diǎn)自動(dòng)停比發(fā)送。在總線再次空閑后,這些節(jié)點(diǎn)將自動(dòng)重發(fā)原報(bào)文。網(wǎng)絡(luò)中的所有節(jié)點(diǎn)都可由ID來自動(dòng)決定是否接收該報(bào)文。每個(gè)節(jié)點(diǎn)都有ID寄存器和屏蔽寄存器接收到的報(bào)文只有與該屏蔽的功能相同時(shí),該節(jié)點(diǎn)才開始正式接收?qǐng)?bào)文,否則它將不理睬ID后面的報(bào)文。這使CAN系統(tǒng)非常靈活,可任意擴(kuò)展或改變網(wǎng)絡(luò)組成。
C8051F系列單片機(jī)是集成的混合信號(hào)片上系統(tǒng)SOC(System on chip),具有與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ù)采集、自動(dòng)化控制等領(lǐng)域。因此本文采用C8051F120設(shè)計(jì)與實(shí)現(xiàn)CAN總線通信協(xié)議,充分發(fā)揮其體積小、可靠性高的特點(diǎn)。C8051F120是完全集成的混合信號(hào)片上系統(tǒng)MCU芯片,具有64個(gè)數(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é)的要求,此時(shí)應(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ù)長度代碼位(0~8);
ID.X:信息標(biāo)識(shí)符位:
ID.28~I(xiàn)D.26為信息功能標(biāo)識(shí)
ID.25~I(xiàn)D.21為接收任務(wù)標(biāo)識(shí)
ID.20~I(xiàn)D.18為接收節(jié)點(diǎn)地址標(biāo)識(shí)
X :保留位,默認(rèn)為0,不能對(duì)保留位進(jìn)行寫操作;
DATAO:數(shù)據(jù)場的第一個(gè)字節(jié),本協(xié)議中用來表明數(shù)據(jù)的屬性;
DATA0.7~DATAO.5為發(fā)送節(jié)點(diǎn)地址標(biāo)識(shí);
DATA0.4~DATAO.1為數(shù)據(jù)功能標(biāo)識(shí)
DATA0.0 0為擴(kuò)展位,‘0’ 表明數(shù)據(jù)長度小于8不用擴(kuò)展,‘1’ 表示數(shù)據(jù)長度大于8需要擴(kuò)展DATA1作傳遞次數(shù)索引。
DATA1: DATAO.0為0時(shí),傳遞數(shù)據(jù);DATAO.0為1時(shí),為數(shù)據(jù)傳遞次數(shù)的索引。
評(píng)論