技術交流
随(suí)着CAN-bus相關芯片價格的下降,内置CAN控制器MCU的增多,CAN-bus當前已經進入了(le)衆多早期由于成本(běn)問(wèn)題無(wú)法使用的領域,成爲極具生(shēng)命力的現場(chǎng)總線,今天我們就來探(tàn)讨(tǎo)如何構建專屬自己的CAN-bus應用層協議(yì)。
在(zài)CAN-bus網絡上,CAN報文以(yǐ)廣播的形式發送,CAN報文不包含地址信息,是否處理接收到的(de)CAN報文由接收點的軟件确定。CAN-bus隻提供可靠的報文傳輸服務(wù),CAN報文的使用由應用者定義, 所以CAN網絡(luò)中的(de)節點要相互通(tōng)信就必(bì)須制定一個統一的規(guī)則。CAN應用層協議就是(shì)這樣一個規則。
這個規則,定義了CAN報文中幀ID及幀數據(jù)的使用方(fāng)式,如将(jiāng)幀ID定義爲(wèi)需要處理(lǐ)該幀數據的CAN節點地址等。根據應用場合(hé)的不同,國際上出現(xiàn)了多種CAN應用層協議(yì),常見(jiàn)的CAN-bus應用層協議如(rú)下:
接下來,我們看(kàn)一下如何構建CAN-bus應用層協議(yì)
構建一個現(xiàn)場總線網絡,需要解(jiě)決的關鍵技術問題有:
-
總線傳輸信(xìn)息的速度、容量、優先(xiān)等級(jí)、節(jiē)點容量等;
-
高電磁幹擾環(huán)境下的可靠數據傳(chuán)輸(shū);
-
最大傳輸距離時延時大小的确定;
-
網絡的(de)容錯技術;
-
網(wǎng)絡的監控和故障診(zhěn)斷功能。
要解決(jué)以上問題,需要(yào)充分(fèn)考慮現場總線網絡所(suǒ)采用的總線類型,因爲以上問題和總線的性能特點是密切相關的,那(nà)麽我們(men)就看一下CAN-bus總線的上述特性:
-
CAN-bus網絡傳(chuán)輸速度最高(gāo)可達1Mbps,并采用無損仲裁,通過報文标識符指示報(bào)文優(yōu)先級。
-
CAN-bus采用差分(fèn)信号傳輸,并采(cǎi)用可靠的數據校驗和錯誤檢測機制。
-
CAN-bus采用幀傳輸,每個(gè)報文(wén)允許(xǔ)傳輸最多8個字節,幀結(jié)構有嚴格規定,能夠确定最大(dà)傳輸延時。
-
CAN-bus具有可(kě)靠的(de)錯誤機制和檢測機(jī)制,發送的信息遭到(dào)破壞後可以重(zhòng)新發送;節點在錯誤嚴重的情況下,具有自動退出總(zǒng)線的功能。
-
可以通(tōng)過制定嚴禁的(de)CAN-bus應(yīng)用層協議解決網(wǎng)絡監控和診斷。
CAN報文(wén)的分(fèn)配
包含報文标識符的分配和報文(wén)數據的分配,報文格(gé)式的(de)定義,實質是将(jiāng)CAN報文的分配規則進行詳細的描述。
報文ID的定(dìng)義:
CAN2.0A幀(zhēn):11位ID
CAN2.0B幀:29位ID
報文數據的定義:
每幀報文最多包(bāo)含8字節數據
CAN網絡數據通信的實現
在CAN網絡中,通過(guò)報(bào)文的标識符進行信息的區分,因此通過報文的各(gè)種标識符分配來(lái)達到(dào)建(jiàn)立信息鏈接的目的。
命令/響應模(mó)式通信
CAN應用層協議:面向節點(diǎn)和面向報文的協議
數據通信協議基(jī)本上可以(yǐ)劃(huà)分爲“面向節點(diǎn)的協議”和“面向報(bào)文的協議”兩種類型,如下圖:
面向節點和面向(xiàng)報文的數據通信
制定一個CAN應用層協議
爲了給(gěi)讀者演(yǎn)示CAN應用層協議的開發和使(shǐ)用方法(fǎ),下面定義一個簡單(dān)的CAN應用協議棧,該協(xié)議棧中隻(zhī)用到CAN标準幀中的數據幀,幀ID中的11個位的分配和使(shǐ)用方法如(rú)下表所列(liè),協議(yì)中另外還(hái)定義了功能參數長度變(biàn)量FunDataLen的功能參數數組FunData,該數組在需要時可以爲某些特定功能(néng)函數提供足夠的控制參數(shù)。
今天的交流先到(dào)這裏,如想了解更多,可關注緻遠電(diàn)子官(guān)網微信,或參考(kǎo)緻遠電(diàn)子CANOpen國際現場總線教(jiāo)學科研平台,幫您(nín)了解更多(duō)CAN-bus應用層協議構(gòu)建知識。