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

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

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

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

今天的交流(liú)先到這裏,如想(xiang)了解更多,可關(guan)注緻遠電子官(guan)網微信,或參考(kao)緻遠電子CANOpen國際現場(chang)總線教學科研(yán)平台,幫您了解(jiě)更多CAN-bus應用層協議構(gòu)建知識。
