随着CAN-bus相關芯片(pian)價格的下降,内置(zhi)CAN控制器(qì)MCU的增多(duō),CAN-bus當前已(yǐ)經進入了衆多早(zǎo)期由于成本問題(ti)無法使用的領域(yù),成爲極具生命力(li)的現場總線,今天(tiān)我們就來探讨如(rú)何構建專屬自己(jǐ)的CAN-bus應用(yòng)層協議。
在CAN-bus網絡上,CAN報文以廣播的形(xing)式發送,CAN報文不包含地址(zhi)信息,是否處理接(jiē)收到的CAN報文由接收點的(de)軟件确定。CAN-bus隻提供可靠的(de)報文傳輸服務,CAN報文的使(shi)用由應用者定義(yi), 所以CAN網絡中的節點(dian)要相互通信就必(bi)須制定一個統一(yī)的規則。CAN應用層協議就是(shì)這樣一個規則。
這個規則(ze),定義了CAN報文中幀ID及幀數據的使(shǐ)用方式,如将幀ID定義爲需(xu)要處理該幀數據(ju)的CAN節點(dian)地址等。根據應用(yong)場合的不同,國際(ji)上出現了多種CAN應用層協(xie)議,常見的CAN-bus應用層協議如(rú)下:

接下來,我們看一(yī)下如何構建CAN-bus應用(yong)層協議
構建(jiàn)一個現場總線網(wang)絡,需要解決的關(guān)鍵技術問題有:
-
總線傳輸信息(xi)的速度、容量、優先(xiān)等級、節點容量等(děng);
-
高電磁幹擾(rao)環境下的可靠數(shù)據傳輸;
-
最大(da)傳輸距離時延時(shi)大小的确定;
-
網絡的容錯技術(shù);
-
網絡的監控(kong)和故障診斷功能(néng)。
要(yao)解決以上問題,需(xu)要充分考慮現場(chang)總線網絡所采用(yong)的總線類型,因爲(wei)以上問題和總線(xiàn)的性能特點是密(mì)切相關的,那麽我(wo)們就看一下CAN-bus總線的上述(shù)特性:
-
CAN-bus網絡傳輸速度最(zui)高可達1Mbps,并采用無損仲裁(cai),通過報文标識符(fu)指示報文優先級(ji)。
-
CAN-bus采用(yong)差分信号傳輸,并(bing)采用可靠的數據(jù)校驗和錯誤檢測(ce)機制。
-
CAN-bus采用幀傳輸,每(mei)個報文允許傳輸(shu)最多8個(gè)字節,幀結構有嚴(yán)格規定,能夠确定(ding)最大傳輸延時。
-
CAN-bus具有可(ke)靠的錯誤機制和(he)檢測機制,發送的(de)信息遭到破壞後(hou)可以重新發送;節(jiē)點在錯誤嚴重的(de)情況下,具有自動(dong)退出總線的功能(neng)。
-
可以通過(guò)制定嚴禁的CAN-bus應用層協議(yì)解決網絡監控和(hé)診斷。
CAN報(bào)文的分配
包含報文标識(shi)符的分配和報文(wén)數據的分配,報文(wén)格式的定義,實質(zhi)是将CAN報(bao)文的分配規則進(jin)行詳細的描述。
報文ID的定義:
CAN2.0A幀:11位ID
CAN2.0B幀:29位ID
報文數據(ju)的定義:
每幀報文最多包(bāo)含8字節(jiē)數據
CAN網(wang)絡數據通信的實(shí)現
在CAN網絡(luò)中,通過報文的标(biao)識符進行信息的(de)區分,因此通過報(bào)文的各種标識符(fu)分配來達到建立(li)信息鏈接的目的(de)。

命令/響應模式通信
CAN應用層協議:面(miàn)向節點和面向報(bao)文的協議
數(shù)據通信協議基本(běn)上可以劃分爲“面(miàn)向節點的協議”和(he)“面向報文的協議(yi)”兩種類型,如下圖(tú):

面(mian)向節點和面向報(bao)文的數據通信
制定一個CAN應用(yòng)層協議
爲了給讀者演示(shì)CAN應用層(céng)協議的開發和使(shǐ)用方法,下面定義(yì)一個簡單的CAN應用協議棧(zhàn),該協議棧中隻用(yòng)到CAN标準(zhǔn)幀中的數據幀,幀(zhen)ID中的11個位的分(fèn)配和使用方法如(ru)下表所列,協議中(zhōng)另外還定義了功(gōng)能參數長度變量(liàng)FunDataLen的功能(neng)參數數組FunData,該數組在需要(yào)時可以爲某些特(te)定功能函數提供(gong)足夠的控制參數(shu)。

今天的交流先(xiān)到這裏,如想了解(jiě)更多,可關注緻遠(yuan)電子官網微信,或(huo)參考緻遠電子CANOpen國際現場(chǎng)總線教學科研平(ping)台,幫您了解更多(duo)CAN-bus應用層(céng)協議構建知識。


