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

接下來(lái),我們看(kàn)一下如(rú)何構建(jian)CAN-bus應用層(céng)協議
構建(jian)一個現(xiàn)場總線(xian)網絡,需(xu)要解決(jué)的關鍵(jiàn)技術問(wèn)題有:
-
總線(xian)傳輸信(xin)息的速(sù)度、容量(liang)、優先等(děng)級、節點(diǎn)容量等(děng);
-
高(gao)電磁幹(gan)擾環境(jing)下的可(kě)靠數據(jù)傳輸;
-
最大(da)傳輸距(ju)離時延(yan)時大小(xiao)的确定(ding);
-
網(wǎng)絡的容(róng)錯技術(shu);
-
網(wang)絡的監(jian)控和故(gu)障診斷(duan)功能。
要(yao)解決以(yi)上問題(tí),需要充(chong)分考慮(lü)現場總(zong)線網絡(luò)所采用(yong)的總線(xian)類型,因(yin)爲以上(shang)問題和(hé)總線的(de)性能特(te)點是密(mì)切相關(guan)的,那麽(me)我們就(jiù)看一下(xià)CAN-bus總線(xiàn)的上述(shu)特性:
-
CAN-bus網(wang)絡傳輸(shu)速度最(zui)高可達(da)1Mbps,并采(cai)用無損(sun)仲裁,通(tong)過報文(wén)标識符(fu)指示報(bao)文優先(xian)級。
-
CAN-bus采用(yong)差分信(xin)号傳輸(shu),并采用(yòng)可靠的(de)數據校(xiào)驗和錯(cuo)誤檢測(ce)機制。
-
CAN-bus采(cǎi)用幀傳(chuán)輸,每個(ge)報文允(yǔn)許傳輸(shu)最多8個字節(jiē),幀結構(gou)有嚴格(gé)規定,能(néng)夠确定(dìng)最大傳(chuán)輸延時(shí)。
-
CAN-bus具有可(ke)靠的錯(cuo)誤機制(zhi)和檢測(ce)機制,發(fā)送的信(xin)息遭到(dào)破壞後(hou)可以重(zhòng)新發送(sòng);節點在(zai)錯誤嚴(yan)重的情(qíng)況下,具(ju)有自動(dong)退出總(zǒng)線的功(gōng)能。
-
可(kě)以通過(guò)制定嚴(yán)禁的CAN-bus應用層(ceng)協議解(jie)決網絡(luò)監控和(he)診斷。
CAN報文的(de)分配
包含報(bào)文标識(shi)符的分(fèn)配和報(bao)文數據(ju)的分配(pèi),報文格(gé)式的定(dìng)義,實質(zhi)是将CAN報文的(de)分配規(gui)則進行(háng)詳細的(de)描述。
報文(wen)ID的定義(yi):
CAN2.0A幀:11位(wei)ID
CAN2.0B幀(zhēn):29位ID
報(bao)文數據(ju)的定義(yi):
每幀(zhen)報文最(zuì)多包含(han)8字節(jiē)數據
CAN網絡數(shu)據通信(xin)的實現(xian)
在CAN網(wǎng)絡中,通(tōng)過報文(wen)的标識(shi)符進行(háng)信息的(de)區分,因(yin)此通過(guo)報文的(de)各種标(biao)識符分(fen)配來達(da)到建立(lì)信息鏈(liàn)接的目(mu)的。

命令/響應模(mo)式通信(xìn)
CAN應(ying)用層協(xie)議:面向(xiang)節點和(he)面向報(bao)文的協(xie)議
數據通(tong)信協議(yì)基本上(shang)可以劃(hua)分爲“面(miàn)向節點(dian)的協議(yì)”和“面向(xiàng)報文的(de)協議”兩(liang)種類型(xing),如下圖(tu):

面向節(jie)點和面(miàn)向報文(wén)的數據(ju)通信
制定(dìng)一個CAN應(ying)用層協(xie)議
爲(wèi)了給讀(du)者演示(shì)CAN應用(yòng)層協議(yi)的開發(fā)和使用(yong)方法,下(xia)面定義(yi)一個簡(jian)單的CAN應用協(xie)議棧,該(gai)協議棧(zhan)中隻用(yòng)到CAN标(biao)準幀中(zhōng)的數據(jù)幀,幀ID中的11個位的(de)分配和(hé)使用方(fāng)法如下(xià)表所列(liè),協議中(zhong)另外還(hai)定義了(le)功能參(can)數長度(dù)變量FunDataLen的功能(néng)參數數(shù)組FunData,該(gāi)數組在(zài)需要時(shi)可以爲(wèi)某些特(tè)定功能(neng)函數提(ti)供足夠(gou)的控制(zhì)參數。

今天(tiān)的交流(liú)先到這(zhè)裏,如想(xiang)了解更(geng)多,可關(guan)注緻遠(yuan)電子官(guan)網微信(xìn),或參考(kǎo)緻遠電(diàn)子CANOpen國(guó)際現場(chang)總線教(jiāo)學科研(yan)平台,幫(bang)您了解(jie)更多CAN-bus應用層(céng)協議構(gou)建知識(shí)。

技(jì)術支持(chí)
- 總(zong)部:福州(zhōu)市八一(yī)七中路(lu)茶亭國(guó)際
- 電話(huà):0591-83275886
- E-mail:[email protected]
- http://qigi.cc

聯系我(wo)們 丨 站(zhàn)點地圖(tu) 丨 友情(qing)鏈接 丨(shù) 工作機(ji)會
聯系(xì)地址:福(fú)州市八(bā)一七中(zhong)路茶亭(tíng)國際 郵(you)編:350004 電話(huà):0591- 83275886
Copyright © 2011-2012 All Right Reserved 京ICP證000000号(hao)
