1寫在前面
我之前學(xué)習(xí)CANOpen的時(shí)候,網(wǎng)上有用的資料極少,走了不少彎路。到目前為止,網(wǎng)上關(guān)于CANOpen的資料依然很少。所以,特地寫下該系列教程,幫助初學(xué)者跨過這道坎。
從我個(gè)人學(xué)習(xí)CANOpen的經(jīng)歷來看,學(xué)會(huì)使用CANOpen難度其實(shí)不大。難點(diǎn)在于需要掌握的基礎(chǔ)知識(shí)很多,而且許多都有關(guān)聯(lián)性,容易把人繞暈。
那么,我希望通過結(jié)合之前我的學(xué)習(xí)經(jīng)歷,以及工作經(jīng)驗(yàn),站在小白的角度寫下該系列教程。當(dāng)然,該教程由我個(gè)人編輯并整理,難免有些廢話,或者錯(cuò)誤,還請(qǐng)諒解。
2
初識(shí)CAN與CANOpen
2.1 什么是CAN?
CAN:是Controller Area Network的縮寫,即控制器局域網(wǎng)絡(luò),屬于工業(yè)現(xiàn)場(chǎng)總線,是ISO國際標(biāo)準(zhǔn)化的串行通信協(xié)議。
從OSI(Open System Interconnection開放系統(tǒng)互聯(lián))7層網(wǎng)絡(luò)模型的角度來看,CAN現(xiàn)場(chǎng)總線僅僅定義了第 1 層(物理層)和第 2 層(數(shù)據(jù)鏈路層)。
而在實(shí)際設(shè)計(jì)中,這兩層完全由硬件實(shí)現(xiàn),設(shè)計(jì)人員無需再為此開發(fā)相關(guān)軟件或固件(Firmware),只要了解如何調(diào)用相關(guān)的接口和寄存器,即可完成對(duì)CAN的控制。
上面介紹的內(nèi)容可能太官方,初學(xué)者可能看了之后還是不明白。簡單的說:CAN總線就是一層硬件協(xié)議。比如:差分信號(hào)電平的定義、數(shù)據(jù)幀的定義等等。
PS:初學(xué)者可以結(jié)合UART來理解,比如UART串口發(fā)送一個(gè)字符’A’,它就是一種串行通信的方式。
2.2 什么是CANOpen?
CANopen是一種架構(gòu)在CAN控制局域網(wǎng)上的高層軟件通信協(xié)議,包括通信子協(xié)議及設(shè)備子協(xié)議,常在嵌入式系統(tǒng)中使用,也是工業(yè)控制常用到的一種現(xiàn)場(chǎng)總線協(xié)議。
CANopen協(xié)議是在20世紀(jì)90年代末,由總部位于德國紐倫堡的 CiA 組織——CAN-in-Automation,在 CAL(CAN Application Layer)的基礎(chǔ)上發(fā)展而來。
所以,關(guān)于CANOpen協(xié)議內(nèi)容請(qǐng)參看:http://www.can-cia.org
由于CAN總線只定義了OSI中的物理層和數(shù)據(jù)鏈路層,因此對(duì)于不同的應(yīng)用出現(xiàn)了不同的【應(yīng)用層協(xié)議】,為了使不同廠商的產(chǎn)品能夠相互兼容,世界范圍內(nèi)需要通用的CAN應(yīng)用層通信協(xié)議。
在過去的二三十年中涌現(xiàn)出許多的協(xié)議,不過到現(xiàn)在為止能夠廣泛被承認(rèn)的協(xié)議卻不多,現(xiàn)在應(yīng)用較廣的CAN應(yīng)用層協(xié)議主要有以下三種:
CANopen協(xié)議:主要應(yīng)用在汽車、工業(yè)控制、自動(dòng)化儀表等領(lǐng)域,目前由 CIA 負(fù)責(zé)管理和維護(hù);
J1939協(xié)議:CAN總線在商用車領(lǐng)域占有絕大部分市場(chǎng)份額的應(yīng)用層協(xié)議,由美國機(jī)動(dòng)車工程師學(xué)會(huì)發(fā)起,現(xiàn)已在全球范圍內(nèi)得到廣泛的應(yīng)用;
DeviceNet協(xié)議:在美國等地占有相當(dāng)大的市場(chǎng)份額,主要用于工業(yè)通信及控制和儀器儀表等領(lǐng)域。
而本文說的CANOpen也是目前應(yīng)用較廣的一種協(xié)議。簡單的說,CANOpen就是CAN總線應(yīng)用層協(xié)議。
PS:學(xué)習(xí)CANOpen應(yīng)用層協(xié)議之前請(qǐng)務(wù)必先了解CAN總線協(xié)議。
3
CAN總線特點(diǎn)
CAN總線采用差分信號(hào)傳輸,通常情況下只需要兩根信號(hào)線(CAN-H和CAN-L)就可以進(jìn)行正常的通信。在干擾比較強(qiáng)的場(chǎng)合,還需要用到屏蔽地即CAN-G(主要功能是屏蔽干擾信號(hào)), CAN協(xié)議推薦用戶使用屏蔽雙絞線作為CAN總線的傳輸線。
CAN總線通信的優(yōu)勢(shì)和特點(diǎn):
A.CAN總線上任意節(jié)點(diǎn),均可在任意時(shí)刻主動(dòng)的向其它節(jié)點(diǎn)發(fā)起通信,但在同一時(shí)刻優(yōu)先級(jí)高的節(jié)點(diǎn)能獲得總線的使用權(quán)。
B.標(biāo)準(zhǔn)CAN總線傳輸波特率可達(dá)到1Mbps。在5Kbps的通信波特率下最遠(yuǎn)傳輸距離可以達(dá)到 10Km,即使在1Mbps的波特率下也能傳輸40m的距離。
C.CAN總線定義使用了硬件報(bào)文濾波,可實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)及點(diǎn)對(duì)多點(diǎn)的通信方式,不需要軟件來控制。
D.CAN 總線所掛接的節(jié)點(diǎn)數(shù)量主要取決于CAN總線收發(fā)器或驅(qū)動(dòng)器,目前的驅(qū)動(dòng)器一般都可以使同一網(wǎng)絡(luò)容量達(dá)到110個(gè)節(jié)點(diǎn)。
E.CAN總線通信介質(zhì)可采用雙絞線、同軸電纜或光纖,選擇極為靈活。可大大節(jié)約組網(wǎng)成本。
當(dāng)然,CAN總線的優(yōu)勢(shì)還有許多,當(dāng)你掌握之后就會(huì)明白為什么CAN總線應(yīng)用得如此廣泛了。
4
教程規(guī)劃
CAN總線及CANOpen協(xié)議相關(guān)的內(nèi)容相對(duì)比較多,如果每一個(gè)細(xì)節(jié)知識(shí)點(diǎn)都寫出來,可能花掉我業(yè)余時(shí)間寫一年也寫不完。
我寫該教程目的在于引導(dǎo)初學(xué)者入門,我會(huì)結(jié)合實(shí)例代碼讓大家邊學(xué)邊理解,至于實(shí)際項(xiàng)目編程應(yīng)用不一定講述的很多(這個(gè)看后面情況)。
首先從CAN底層講起,再到CANOpen協(xié)議相關(guān)基礎(chǔ)知識(shí),最后實(shí)際應(yīng)用。當(dāng)然,中間每一個(gè)環(huán)節(jié)內(nèi)容相對(duì)可能較多,也有可能會(huì)遺漏部分內(nèi)容。
-
控制器
+關(guān)注
關(guān)注
112文章
16361瀏覽量
178071 -
CAN
+關(guān)注
關(guān)注
57文章
2754瀏覽量
463717 -
CANopen
+關(guān)注
關(guān)注
8文章
253瀏覽量
43591
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論