當(dāng)前位置:首頁(yè) > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]1 前言 控制器局域網(wǎng)(CAN-Controller Area Network)屬于現(xiàn)場(chǎng)總線(xiàn)(Fieldbus)的范疇,是眾多的屬于現(xiàn)場(chǎng)總線(xiàn)標(biāo)準(zhǔn)之一,它適用于工業(yè)控制系統(tǒng),具有通信速率高、可靠性強(qiáng)、連接方便、性能價(jià)格比高等諸多特點(diǎn)。它是

1 前言
控制器局域網(wǎng)(CAN-Controller Area Network)屬于現(xiàn)場(chǎng)總線(xiàn)(Fieldbus)的范疇,是眾多的屬于現(xiàn)場(chǎng)總線(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)及沖突檢測(cè)的載波監(jiān)聽(tīng)多路訪問(wèn))的MAC(媒介訪問(wèn)控制)方式而倍受工業(yè)自動(dòng)化領(lǐng)域中設(shè)備互連的厚愛(ài)。CAN的應(yīng)用范圍遍及從高速網(wǎng)絡(luò)到低成本的多線(xiàn)路網(wǎng)絡(luò),它可以應(yīng)用于汽車(chē)系統(tǒng)、機(jī)械、技術(shù)設(shè)備和工業(yè)自動(dòng)化里幾乎任何類(lèi)型的數(shù)據(jù)通信。CAN具有如一下優(yōu)點(diǎn):
1)使用簡(jiǎn)單方便。許多CAN控制器實(shí)現(xiàn)了CAN物理層及數(shù)據(jù)鏈路層的大部分功能,用戶(hù)只須對(duì)CAN控制器進(jìn)行初始化和對(duì)CAN總線(xiàn)上的數(shù)據(jù)進(jìn)行收發(fā)操作即可實(shí)現(xiàn)通信;
2)高可靠性。CAN上的最大通信速率可達(dá)1Mbps,CAN總線(xiàn)是多主節(jié)點(diǎn),各節(jié)點(diǎn)通過(guò)總線(xiàn)仲裁獲得總線(xiàn)控制權(quán)。完善的錯(cuò)誤處理機(jī)制保證了高噪聲干擾環(huán)境下數(shù)據(jù)傳送的安全可靠;
3)系統(tǒng)可擴(kuò)展性能好。CAN總線(xiàn)是基于發(fā)送報(bào)文的編碼,而不是對(duì)CAN控制節(jié)點(diǎn)進(jìn)行編碼,故增添或刪除CAN節(jié)點(diǎn)不會(huì)對(duì)系統(tǒng)造成太大的影響。
CAN總線(xiàn)以報(bào)文為單位進(jìn)行信息傳送,它支持4種不同類(lèi)型的報(bào)文幀:數(shù)據(jù)幀、遠(yuǎn)程幀、超載幀和錯(cuò)誤幀。報(bào)文中包含信息標(biāo)識(shí)符ID,它標(biāo)志了報(bào)文的優(yōu)先權(quán)。CAN總線(xiàn)上各個(gè)節(jié)點(diǎn)都可主動(dòng)發(fā)送,總線(xiàn)上的報(bào)文采用標(biāo)識(shí)符ID進(jìn)行仲裁,ID值越小,優(yōu)先級(jí)越高。具有最高優(yōu)先權(quán)報(bào)文的節(jié)點(diǎn)贏得總線(xiàn)使用權(quán),而其它節(jié)點(diǎn)自動(dòng)停比發(fā)送。在總線(xiàn)再次空閑后,這些節(jié)點(diǎn)將自動(dòng)重發(fā)原報(bào)文。網(wǎng)絡(luò)中的所有節(jié)點(diǎn)都可由ID來(lái)自動(dòng)決定是否接收該報(bào)文。每個(gè)節(jié)點(diǎn)都有ID寄存器和屏蔽寄存器接收到的報(bào)文只有與該屏蔽的功能相同時(shí),該節(jié)點(diǎn)才開(kāi)始正式接收?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àn)通信協(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é).這可以滿(mǎn)足大多數(shù)工業(yè)領(lǐng)域中控制命令、工控狀態(tài)和測(cè)試數(shù)據(jù)的一般要求;但實(shí)際應(yīng)用中,往往出現(xiàn)傳送多于8字節(jié)的要求,此時(shí)應(yīng)通過(guò)報(bào)文的拆卸和拼接技術(shù)予以實(shí)現(xiàn)。本文在CAN2.0A的基礎(chǔ)上,定義了簡(jiǎn)單的傳輸格式,完成了單幀數(shù)據(jù)和多幀數(shù)據(jù)準(zhǔn)確快捷的傳輸。
信息傳遞格式如表一所示:
500)this.style.width=500;" border="0" />

其中,各位的含義如下:
FF:0表示為標(biāo)準(zhǔn)格式,1表示為擴(kuò)展格式;
RTR:0表示為數(shù)據(jù)幀,1表示為遠(yuǎn)程幀;
DLC.X:數(shù)據(jù)長(zhǎng)度代碼位(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)行寫(xiě)操作;
DATAO:數(shù)據(jù)場(chǎng)的第一個(gè)字節(jié),本協(xié)議中用來(lái)表明數(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ù)長(zhǎng)度小于8不用擴(kuò)展,‘1’ 表示數(shù)據(jù)長(zhǎng)度大于8需要擴(kuò)展DATA1作傳遞次數(shù)索引。
 DATA1: DATAO.0為0時(shí),傳遞數(shù)據(jù);DATAO.0為1時(shí),為數(shù)據(jù)傳遞次數(shù)的索引。
本文設(shè)計(jì)的信息優(yōu)先級(jí)從高到低依次為:信息功能標(biāo)識(shí)、任務(wù)功能標(biāo)識(shí)和目標(biāo)節(jié)點(diǎn)地址標(biāo)識(shí)。信息功能標(biāo)識(shí)設(shè)在ID的最高幾位,通過(guò)3位的功能代碼可以區(qū)分某些情況的8種基本功能:這些功能可以為節(jié)點(diǎn)狀態(tài)控制、節(jié)點(diǎn)保護(hù)、緊急情況通報(bào)以及有時(shí)間標(biāo)記的信息等;接收任務(wù)標(biāo)識(shí)表明本幀數(shù)據(jù)的任務(wù)屬性,容量為32;目標(biāo)節(jié)點(diǎn)地址指示本次數(shù)據(jù)的目的地址,容量為8。
DATA0.0在本協(xié)議中作為標(biāo)志位,用來(lái)區(qū)別單幀傳輸和多幀傳輸,解決了大于8字節(jié)的字符串的傳輸問(wèn)題。當(dāng)標(biāo)志位為1時(shí),表示傳送的是多幀數(shù)據(jù);為0時(shí)表明是單幀數(shù)據(jù)。這樣克服了CAN 只能傳輸小于等于8字節(jié)數(shù)據(jù)的缺點(diǎn),實(shí)現(xiàn)了大于8字節(jié)的數(shù)據(jù)的傳輸。
為了識(shí)別多幀傳輸中可能會(huì)出現(xiàn)的重幀和丟幀現(xiàn)象,本協(xié)議規(guī)定數(shù)據(jù)場(chǎng)第一字節(jié)作為多幀數(shù)據(jù)傳輸次序的索引。按照本協(xié)議制定的格式傳輸數(shù)據(jù)時(shí),單幀最多傳輸7字節(jié)的實(shí)際數(shù)據(jù):當(dāng)數(shù)據(jù)流長(zhǎng)度大于7字節(jié)時(shí),就要分成多幀傳送。
3 應(yīng)用層協(xié)議設(shè)計(jì)
在CANV2.0規(guī)范標(biāo)準(zhǔn)中,只規(guī)定了ISO參考模型的物理層和數(shù)據(jù)鏈路層,沒(méi)有規(guī)定媒體的連接單元以及駐留媒體,也沒(méi)有規(guī)定應(yīng)用層。物理層負(fù)責(zé)譬如物理信號(hào)傳輸、譯碼、位時(shí)序和位同步等功能,而數(shù)據(jù)鏈路層負(fù)責(zé)總線(xiàn)仲裁、信息分段以及數(shù)據(jù)安全、數(shù)據(jù)確認(rèn)、錯(cuò)誤檢測(cè)、信號(hào)傳輸和錯(cuò)誤控制的功能。實(shí)際上,即使在執(zhí)行一些非常簡(jiǎn)單的基于CAN的分布式系統(tǒng)時(shí)。除了基本的兩層服務(wù)之外,還要求或希望有更多功能,如發(fā)送長(zhǎng)于8字節(jié)的字符串、響應(yīng)或確定數(shù)據(jù)傳送、標(biāo)識(shí)符分配、網(wǎng)絡(luò)啟動(dòng)或監(jiān)控節(jié)點(diǎn)。
由于這些附加的功能直接支持應(yīng)用過(guò)程,所以它可以被認(rèn)作“應(yīng)用層”。如果正確執(zhí)行,則應(yīng)用層以及相應(yīng)的應(yīng)用層接口(子協(xié)議)為通訊和應(yīng)用過(guò)程提供了一個(gè)清晰定義的分界以便把它們區(qū)分開(kāi)來(lái)。在一些利用簡(jiǎn)單的通信協(xié)議就可以滿(mǎn)足要求的情況下,采用復(fù)雜的協(xié)議會(huì)造成資源的浪費(fèi),而且,使用起來(lái)也很不方便,反而限制了CAN的靈活性。所以在一些情況下制定適合要求的通信協(xié)議,對(duì)CAN的開(kāi)發(fā)和使用至關(guān)重要。本文根據(jù)實(shí)際系統(tǒng)設(shè)計(jì)的需要,在2.0A技術(shù)規(guī)范的基礎(chǔ)上制定了CAN應(yīng)用層通信協(xié)議。
CAN應(yīng)用層協(xié)議主要負(fù)責(zé)建立CPU與底層之間的橋梁,它主要由四部分組成:節(jié)點(diǎn)的開(kāi)關(guān)機(jī)制、數(shù)據(jù)的收發(fā)機(jī)制、錯(cuò)誤處理機(jī)制和中斷管理機(jī)制五部分組成。四種機(jī)制互相聯(lián)系、互相制約,共同維護(hù)系統(tǒng)的運(yùn)轉(zhuǎn)。限于篇幅本文主要介紹關(guān)鍵的數(shù)據(jù)收發(fā)機(jī)制。
3.1 數(shù)據(jù)發(fā)送機(jī)制
發(fā)送機(jī)制主要實(shí)現(xiàn)將CPU要發(fā)送的數(shù)據(jù)接過(guò)來(lái),并整理為符合應(yīng)用層協(xié)議規(guī)定的幀格式,將拆卸好的小包(數(shù)據(jù)幀)順序放入循環(huán)隊(duì)列中等待發(fā)送,并負(fù)責(zé)管理和維護(hù)發(fā)送循環(huán)隊(duì)列的止常運(yùn)轉(zhuǎn)。在定時(shí)器定時(shí)中斷中定期對(duì)循環(huán)隊(duì)列進(jìn)行掃描,如果發(fā)現(xiàn)隊(duì)列中有數(shù)據(jù)等待發(fā)送,則調(diào)用發(fā)送函數(shù)將數(shù)據(jù)發(fā)送到CAN總線(xiàn)。
在底層開(kāi)辟了一個(gè)臨時(shí)緩沖區(qū)用于暫時(shí)存放等待發(fā)送的小包,臨時(shí)緩沖區(qū)采用循環(huán)隊(duì)列的存儲(chǔ)結(jié)構(gòu),對(duì)數(shù)據(jù)實(shí)行先入先出的管理模式。循環(huán)隊(duì)列是一個(gè)42*11的二維數(shù)組,用來(lái)暫時(shí)安置CPU即將發(fā)送的數(shù)據(jù),數(shù)據(jù)被順序安排在循環(huán)隊(duì)列中等待發(fā)送。每增加一幀數(shù)據(jù),循環(huán)隊(duì)列的尾指針加1;每成功發(fā)送完一幀數(shù)據(jù),循環(huán)隊(duì)列的頭指針減1。當(dāng)循環(huán)隊(duì)列中沒(méi)有數(shù)據(jù)時(shí),隊(duì)列的狀態(tài)為空,否則指示為不空;若循環(huán)隊(duì)列的頭指針和尾指針重合而隊(duì)列又處于不空的狀態(tài),此時(shí)隊(duì)列為滿(mǎn)的狀態(tài)。當(dāng)隊(duì)列處于滿(mǎn)的狀態(tài)時(shí),禁止向隊(duì)列再寫(xiě)入數(shù)據(jù),否則容易導(dǎo)致數(shù)據(jù)的覆蓋或丟失。隊(duì)列中數(shù)據(jù)遵循先入先出的原則,CPU將數(shù)據(jù)從隊(duì)列尾部裝入,向CAN總線(xiàn)發(fā)送數(shù)據(jù)時(shí)則從隊(duì)列頭部將數(shù)據(jù)讀走。發(fā)送循環(huán)隊(duì)列的曾理單位為幀,每次操作都是11個(gè)字節(jié)為單位。在發(fā)送機(jī)制運(yùn)轉(zhuǎn)前,首先對(duì)發(fā)送循環(huán)隊(duì)列初始化,將循環(huán)隊(duì)列的頭指針、尾指針賦值為零,將已占用的空間也賦值為零。
CAN發(fā)送機(jī)制主要由兩大模塊組成:打小包模塊和幀發(fā)送模塊。當(dāng)CPU有數(shù)據(jù)需要發(fā)送時(shí),調(diào)用打小包函數(shù),要求給出待發(fā)送數(shù)據(jù)的存放地址。打小包函數(shù)將會(huì)按照本協(xié)議規(guī)定的格式將發(fā)送節(jié)點(diǎn)地址、接收節(jié)點(diǎn)地址、信息類(lèi)型、任務(wù)標(biāo)識(shí)、數(shù)據(jù)標(biāo)識(shí)等參數(shù)整理為CAN數(shù)據(jù)鏈路層ID的格式,將數(shù)據(jù)組裝成符合應(yīng)用層協(xié)議所規(guī)定的數(shù)據(jù)幀(小包),實(shí)現(xiàn)對(duì)長(zhǎng)度大于7字節(jié)的數(shù)據(jù)的打小包處理,按照所填加索引號(hào)的順序放到發(fā)送循環(huán)隊(duì)列中等待發(fā)送。打小包函數(shù)的流程圖如圖1所示:
500)this.style.width=500;" border="0" />

3.2 數(shù)據(jù)接收機(jī)制
CAN接收機(jī)制負(fù)責(zé)將數(shù)據(jù)從CAN總線(xiàn)上接收下來(lái),按照數(shù)據(jù)源節(jié)點(diǎn)的地址將其還原為發(fā)送前的格式,準(zhǔn)確無(wú)誤的傳遞給上層,并負(fù)責(zé)為上層提供接口函數(shù)。在CPU將數(shù)據(jù)取走以后,清空相應(yīng)的數(shù)組。
在底層開(kāi)辟了一個(gè)臨時(shí)緩沖區(qū)用于暫時(shí)存放從CAN總線(xiàn)上接收下的數(shù)據(jù),臨時(shí)緩沖區(qū)采用二維數(shù)組的格式,容量為4*3*64。第一維的容量為4,分別指示發(fā)送節(jié)點(diǎn)的地址;第二維容量為3,作為數(shù)據(jù)的擴(kuò)展緩存,指示可連續(xù)存放來(lái)自于同一節(jié)點(diǎn)的包的數(shù)目;第三維的容量為64,用來(lái)存放經(jīng)過(guò)整理以后的數(shù)據(jù)。一般來(lái)說(shuō),開(kāi)辟一個(gè)二維的空間就可以使協(xié)議周轉(zhuǎn),但是,在實(shí)際系統(tǒng)中可能會(huì)出現(xiàn)CPU還未能將整理完畢的數(shù)據(jù)取走此時(shí)又接到來(lái)自于同一節(jié)點(diǎn)的新的數(shù)據(jù),這樣就可能導(dǎo)致新的數(shù)據(jù)覆蓋掉原來(lái)的數(shù)據(jù),造成數(shù)據(jù)的丟失。為避免這種潛在地危險(xiǎn),因此開(kāi)辟了三維空間,在最壞的情況下,每個(gè)節(jié)點(diǎn)都可同時(shí)容納來(lái)自于同一節(jié)點(diǎn)連續(xù)發(fā)送的3包數(shù)據(jù),大大降低了數(shù)據(jù)丟失的可能性。接收數(shù)據(jù)流程如圖二所示。
500)this.style.width=500;" border="0" />

圖 二: 數(shù)據(jù)發(fā)送流程
5  總結(jié)
本文創(chuàng)新點(diǎn):CAN總線(xiàn)以其卓越的特性、極高的可靠性和獨(dú)特的設(shè)計(jì),在工業(yè)過(guò)程監(jiān)控設(shè)備的互聯(lián)方面得到廣泛的應(yīng)用,受到工業(yè)界的廣泛重視,并被公認(rèn)為是最有前途的現(xiàn)場(chǎng)總線(xiàn)之一。作為通用、有效、可靠及經(jīng)濟(jì)的平臺(tái),CA N協(xié)議也已經(jīng)廣泛地受到了歡迎。由于CAN2.0規(guī)范固有的局限性,客觀上要求用戶(hù)建立高層協(xié)議對(duì)CAN進(jìn)行完善。本文所設(shè)計(jì)的CAN總線(xiàn)應(yīng)用層協(xié)議已經(jīng)投入使用,具有簡(jiǎn)單、靈活、移植方便等特點(diǎn)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉