技(ji)術交(jiao)流
随着(zhe)CAN-bus相關(guan)芯片(pian)價格(ge)的下(xia)降,内(nei)置CAN控(kong)制器(qi)MCU的增(zeng)多,CAN-bus當(dang)前已(yi)經進(jin)入了(le)衆多(duo)早期(qi)由于(yu)成本(ben)問題(ti)無法(fa)使用(yong)的領(ling)域,成(cheng)爲極(ji)具生(sheng)命力(li)的現(xian)場總(zong)線,今(jin)天我(wo)們就(jiu)來探(tan)讨如(ru)何構(gou)建專(zhuan)屬自(zi)己的(de)CAN-bus應用(yong)層協(xie)議。
在(zai)CAN-bus網絡(luo)上,CAN報(bao)文以(yi)廣播(bo)的形(xing)式發(fa)送,CAN報(bao)文不(bu)包含(han)地址(zhi)信息(xi),是否(fou)處理(li)接收(shou)到的(de)CAN報文(wen)由接(jie)收點(dian)的軟(ruan)件确(que)定。CAN-bus隻(zhi)提供(gong)可靠(kao)的報(bao)文傳(chuan)輸服(fu)務,CAN報(bao)文的(de)使用(yong)由應(ying)用者(zhe)定義(yi), 所以(yi)CAN網絡(luo)中的(de)節點(dian)要相(xiang)互通(tong)信就(jiu)必須(xu)制定(ding)一個(ge)統一(yi)的規(gui)則。CAN應(ying)用層(ceng)協議(yi)就是(shi)這樣(yang)一個(ge)規則(ze)。
這個(ge)規則(ze),定義(yi)了CAN報(bao)文中(zhong)幀ID及(ji)幀數(shu)據的(de)使用(yong)方式(shi),如将(jiang)幀ID定(ding)義爲(wei)需要(yao)處理(li)該幀(zhen)數據(ju)的CAN節(jie)點地(di)址等(deng)。根據(ju)應用(yong)場合(he)的不(bu)同,國(guo)際上(shang)出現(xian)了多(duo)種CAN應(ying)用層(ceng)協議(yi),常見(jian)的CAN-bus應(ying)用層(ceng)協議(yi)如下(xia):

接下(xia)來,我(wo)們看(kan)一下(xia)如何(he)構建(jian)CAN-bus應用(yong)層協(xie)議
構(gou)建一(yi)個現(xian)場總(zong)線網(wang)絡,需(xu)要解(jie)決的(de)關鍵(jian)技術(shu)問題(ti)有:
要(yao)解決(jue)以上(shang)問題(ti),需要(yao)充分(fen)考慮(lü)現場(chang)總線(xian)網絡(luo)所采(cai)用的(de)總線(xian)類型(xing),因爲(wei)以上(shang)問題(ti)和總(zong)線的(de)性能(neng)特點(dian)是密(mi)切相(xiang)關的(de),那麽(me)我們(men)就看(kan)一下(xia)CAN-bus總線(xian)的上(shang)述特(te)性:
-
CAN-bus1Mbps,并(bing)采用(yong)無損(sun)仲裁(cai),通過(guo)報文(wen)标識(shi)符指(zhi)示報(bao)文優(you)先級(ji)。
-
CAN-bus采用(yong)差分(fen)信号(hao)傳輸(shu),并采(cai)用可(ke)靠的(de)數據(ju)校驗(yan)和錯(cuo)誤檢(jian)測機(ji)制。
-
CAN-bus采(cai)用幀(zhen)傳輸(shu),每個(ge)報文(wen)允許(xu)傳輸(shu)最多(duo)8個字(zi)節,幀(zhen)結構(gou)有嚴(yan)格規(gui)定,能(neng)夠确(que)定最(zui)大傳(chuan)輸延(yan)時。
-
CAN-bus具(ju)有可(ke)靠的(de)錯誤(wu)機制(zhi)和檢(jian)測機(ji)制,發(fa)送的(de)信息(xi)遭到(dao)破壞(huai)後可(ke)以重(zhong)新發(fa)送;節(jie)點在(zai)錯誤(wu)嚴重(zhong)的情(qing)況下(xia),具有(you)自動(dong)退出(chu)總線(xian)的功(gong)能。
-
可(ke)以通(tong)過制(zhi)定嚴(yan)禁的(de)CAN-bus應用(yong)層協(xie)議解(jie)決網(wang)絡監(jian)控和(he)診斷(duan)。
CAN報文(wen)的分(fen)配
包(bao)含報(bao)文标(biao)識符(fu)的分(fen)配和(he)報文(wen)數據(ju)的分(fen)配,報(bao)文格(ge)式的(de)定義(yi),實質(zhi)是将(jiang)CAN報文(wen)的分(fen)配規(gui)則進(jin)行詳(xiang)細的(de)描述(shu)。
報文(wen)ID的定(ding)義:
CAN2.0A幀(zhen):11位ID
CAN2.0B幀(zhen):29位ID
報(bao)文數(shu)據的(de)定義(yi):
每幀(zhen)報文(wen)最多(duo)包含(han)8字節(jie)數據(ju)
CAN網絡(luo)數據(ju)通信(xin)的實(shi)現
在(zai)CAN網絡(luo)中,通(tong)過報(bao)文的(de)标識(shi)符進(jin)行信(xin)息的(de)區分(fen),因此(ci)通過(guo)報文(wen)的各(ge)種标(biao)識符(fu)分配(pei)來達(da)到建(jian)立信(xin)息鏈(lian)接的(de)目的(de)。

命令(ling)/響應(ying)模式(shi)通信(xin)
CAN應用(yong)層協(xie)議:面(mian)向節(jie)點和(he)面向(xiang)報文(wen)的協(xie)議
數(shu)據通(tong)信協(xie)議基(ji)本上(shang)可以(yi)劃分(fen)爲“面(mian)向節(jie)點的(de)協議(yi)”和“面(mian)向報(bao)文的(de)協議(yi)”兩種(zhong)類型(xing),如下(xia)圖:

面(mian)向節(jie)點和(he)面向(xiang)報文(wen)的數(shu)據通(tong)信
制(zhi)定一(yi)個CAN應(ying)用層(ceng)協議(yi)
爲了(le)給讀(du)者演(yan)示CAN應(ying)用層(ceng)協議(yi)的開(kai)發和(he)使用(yong)方法(fa),下面(mian)定義(yi)一個(ge)簡單(dan)的CAN應(ying)用協(xie)議棧(zhan),該協(xie)議棧(zhan)中隻(zhi)用到(dao)CAN标準(zhun)幀中(zhong)的數(shu)據幀(zhen),幀ID中(zhong)的11個(ge)位的(de)分配(pei)和使(shi)用方(fang)法如(ru)下表(biao)所列(lie),協議(yi)中另(ling)外還(hai)定義(yi)了功(gong)能參(can)數長(zhang)度變(bian)量FunDataLen的(de)功能(neng)參數(shu)數組(zu)FunData,該數(shu)組在(zai)需要(yao)時可(ke)以爲(wei)某些(xie)特定(ding)功能(neng)函數(shu)提供(gong)足夠(gou)的控(kong)制參(can)數。

今(jin)天的(de)交流(liu)先到(dao)這裏(li),如想(xiang)了解(jie)更多(duo),可關(guan)注緻(zhi)遠電(dian)子官(guan)網微(wei)信,或(huo)參考(kao)緻遠(yuan)電子(zi)CANOpen國際(ji)現場(chang)總線(xian)教學(xue)科研(yan)平台(tai),幫您(nin)了解(jie)更多(duo)CAN-bus應用(yong)層協(xie)議構(gou)建知(zhi)識。


