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

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

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

面(miàn)向節點和(he)面向報文(wén)的數據通(tōng)信
制(zhì)定一個CAN應(yīng)用層協議(yi)
爲了給讀(dú)者演示CAN應(ying)用層協議(yì)的開發和(he)使用方法(fa),下面定義(yi)一個簡單(dan)的CAN應用協(xié)議棧,該協(xié)議棧中隻(zhī)用到CAN标準(zhǔn)幀中的數(shu)據幀,幀ID中(zhōng)的11個位的(de)分配和使(shi)用方法如(rú)下表所列(lie),協議中另(lìng)外還定義(yi)了功能參(can)數長度變(biàn)量FunDataLen的功能(néng)參數數組(zǔ)FunData,該數組在(zai)需要時可(ke)以爲某些(xie)特定功能(néng)函數提供(gong)足夠的控(kòng)制參數。

今(jīn)天的交流(liú)先到這裏(lǐ),如想了解(jie)更多,可關(guān)注緻遠電(diàn)子官網微(wei)信,或參考(kǎo)緻遠電子(zi)CANOpen國際現場(chǎng)總線教學(xué)科研平台(tai),幫您了解(jiě)更多CAN-bus應用(yòng)層協議構(gou)建知識。


