随着(zhe)CAN-bus相關芯片(pian)價格的下(xià)降,内置CAN控(kòng)制器MCU的增(zeng)多,CAN-bus當前已(yǐ)經進入了(le)衆多早期(qī)由于成本(ben)問題無法(fǎ)使用的領(lǐng)域,成爲極(jí)具生命力(lì)的現場總(zǒng)線,今天我(wo)們就來探(tàn)讨如何構(gòu)建專屬自(zì)己的CAN-bus應用(yòng)層協議。
在CAN-bus網絡(luo)上,CAN報文以(yǐ)廣播的形(xing)式發送,CAN報(bao)文不包含(hán)地址信息(xi),是否處理(lǐ)接收到的(de)CAN報文由接(jiē)收點的軟(ruǎn)件确定。CAN-bus隻(zhī)提供可靠(kào)的報文傳(chuan)輸服務,CAN報(bào)文的使用(yong)由應用者(zhě)定義, 所以CAN網絡(luo)中的節點(diǎn)要相互通(tong)信就必須(xū)制定一個(ge)統一的規(gui)則。CAN應用層(ceng)協議就是(shi)這樣一個(gè)規則。
這個(gè)規則,定義(yì)了CAN報文中(zhōng)幀ID及幀數(shù)據的使用(yong)方式,如将(jiāng)幀ID定義爲(wei)需要處理(lǐ)該幀數據(ju)的CAN節點地(dì)址等。根據(ju)應用場合(hé)的不同,國(guó)際上出現(xiàn)了多種CAN應(yīng)用層協議(yi),常見的CAN-bus應(ying)用層協議(yì)如下:

接下來,我(wo)們看一下(xià)如何構建(jiàn)CAN-bus應用層協(xié)議
構(gòu)建一個現(xiàn)場總線網(wang)絡,需要解(jie)決的關鍵(jian)技術問題(tí)有:
-
總(zong)線傳輸信(xin)息的速度(dù)、容量、優先(xiān)等級、節點(diǎn)容量等;
-
高電磁(ci)幹擾環境(jìng)下的可靠(kao)數據傳輸(shu);
-
最大(da)傳輸距離(li)時延時大(dà)小的确定(dìng);
-
網絡(luò)的容錯技(ji)術;
-
網(wǎng)絡的監控(kong)和故障診(zhen)斷功能。
要解決(jue)以上問題(ti),需要充分(fèn)考慮現場(chang)總線網絡(luò)所采用的(de)總線類型(xíng),因爲以上(shang)問題和總(zong)線的性能(néng)特點是密(mi)切相關的(de),那麽我們(men)就看一下(xia)CAN-bus總線的上(shàng)述特性:
-
CAN-bus網(wang)絡傳輸速(sù)度最高可(kě)達1Mbps,并采用(yong)無損仲裁(cai),通過報文(wen)标識符指(zhǐ)示報文優(yōu)先級。
-
CAN-bus采用(yòng)差分信号(hao)傳輸,并采(cǎi)用可靠的(de)數據校驗(yan)和錯誤檢(jiǎn)測機制。
-
CAN-bus采用幀(zhēn)傳輸,每個(gè)報文允許(xu)傳輸最多(duo)8個字節,幀(zhen)結構有嚴(yán)格規定,能(neng)夠确定最(zui)大傳輸延(yán)時。
-
CAN-bus具有可(ke)靠的錯誤(wu)機制和檢(jiǎn)測機制,發(fā)送的信息(xī)遭到破壞(huai)後可以重(zhong)新發送;節(jie)點在錯誤(wu)嚴重的情(qíng)況下,具有(you)自動退出(chū)總線的功(gong)能。
-
可(ke)以通過制(zhì)定嚴禁的(de)CAN-bus應用層協(xié)議解決網(wǎng)絡監控和(he)診斷。
CAN報文(wen)的分配
包(bāo)含報文标(biao)識符的分(fèn)配和報文(wén)數據的分(fen)配,報文格(ge)式的定義(yì),實質是将(jiāng)CAN報文的分(fèn)配規則進(jin)行詳細的(de)描述。
報文ID的定(ding)義:
CAN2.0A幀(zhēn):11位ID
CAN2.0B幀:29位ID
報文數(shù)據的定義(yi):
每幀報文(wén)最多包含(han)8字節數據(ju)
CAN網絡數據(jù)通信的實(shí)現
在(zai)CAN網絡中,通(tong)過報文的(de)标識符進(jìn)行信息的(de)區分,因此(ci)通過報文(wén)的各種标(biāo)識符分配(pei)來達到建(jian)立信息鏈(lian)接的目的(de)。

命令/響應(yīng)模式通信(xin)
CAN應用(yòng)層協議:面(mian)向節點和(hé)面向報文(wén)的協議
數據通(tōng)信協議基(jī)本上可以(yǐ)劃分爲“面(miàn)向節點的(de)協議”和“面(miàn)向報文的(de)協議”兩種(zhong)類型,如下(xia)圖:

面(mian)向節點和(he)面向報文(wén)的數據通(tong)信
制(zhì)定一個CAN應(yīng)用層協議(yì)
爲了給讀(du)者演示CAN應(ying)用層協議(yi)的開發和(he)使用方法(fǎ),下面定義(yi)一個簡單(dan)的CAN應用協(xié)議棧,該協(xié)議棧中隻(zhī)用到CAN标準(zhǔn)幀中的數(shù)據幀,幀ID中(zhōng)的11個位的(de)分配和使(shǐ)用方法如(ru)下表所列(liè),協議中另(ling)外還定義(yi)了功能參(cān)數長度變(biàn)量FunDataLen的功能(néng)參數數組(zu)FunData,該數組在(zài)需要時可(kě)以爲某些(xie)特定功能(néng)函數提供(gòng)足夠的控(kong)制參數。

今(jin)天的交流(liu)先到這裏(li),如想了解(jie)更多,可關(guān)注緻遠電(dian)子官網微(wei)信,或參考(kao)緻遠電子(zi)CANOpen國際現場(chǎng)總線教學(xué)科研平台(tái),幫您了解(jie)更多CAN-bus應用(yong)層協議構(gòu)建知識。
