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