CAN總線(xiàn)網(wǎng)絡(luò )的實(shí)時(shí)性研究和改進(jìn)
摘要:由于CAN總線(xiàn)的獨特優(yōu)勢,CAN已成為工業(yè)數據通信的主流技術(shù)之一,這就要求它具有良好的實(shí)時(shí)性和可靠性。但是隨著(zhù)CAN總線(xiàn)控制網(wǎng)絡(luò )復雜化,控制節點(diǎn)的增多,帶寬分配不均問(wèn)題也隨之凸顯,使得總線(xiàn)上低優(yōu)先級的站點(diǎn)數據傳輸延時(shí)增加。提出了動(dòng)態(tài)優(yōu)先級算法,它能夠動(dòng)態(tài)改變站點(diǎn)優(yōu)先級,解決帶寬分配不均問(wèn)題,實(shí)現數據實(shí)時(shí)傳輸;簡(jiǎn)要介紹時(shí)間觸發(fā)CAN(TTCAN)協(xié)議,并通過(guò)實(shí)驗與動(dòng)態(tài)優(yōu)先級算法和標準CAN協(xié)議進(jìn)行比較,得出網(wǎng)絡(luò )延時(shí)特征。
關(guān)鍵詞:實(shí)時(shí)性;動(dòng)態(tài)優(yōu)先級;TTCAN;網(wǎng)絡(luò )延時(shí)
0 引言
控制局域網(wǎng)(Controner Aera Net,CAN)是德國B(niǎo)oasch公司于1983年為汽車(chē)應用而開(kāi)發(fā)的一種有效支持分布式控制的串行控制網(wǎng)絡(luò )。盡管CAN最初是為汽車(chē)電子系統設計的,但由于它在開(kāi)放性和技術(shù)方面的獨特優(yōu)勢,在航天、電力、石化等領(lǐng)域都得到了廣泛應用。在火車(chē)、輪船、樓宇自動(dòng)化、過(guò)程自動(dòng)化儀表中,都有CAN技術(shù)的身影。CAN已成為工業(yè)數據通信的主流技術(shù)之一。
CAN總線(xiàn)具有多主發(fā)送、采用確定性的優(yōu)先級仲裁機制等特點(diǎn),保證了CAN總線(xiàn)數據通信的可靠性、實(shí)時(shí)性和靈活性。在數據通信過(guò)程中,如果出現碰撞,低優(yōu)先級的節點(diǎn)會(huì )主動(dòng)退出,而最高優(yōu)先級的節點(diǎn)可以不受影響繼續傳輸數據,從而大大節省了總線(xiàn)沖突仲裁時(shí)間,保證了傳輸數據的實(shí)時(shí)性。但是這種靜態(tài)優(yōu)先級機制的一個(gè)缺點(diǎn)就是不能均等地為高優(yōu)先級和低優(yōu)先級站點(diǎn)分配帶寬,在網(wǎng)絡(luò )負載很大時(shí),低優(yōu)先級站點(diǎn)會(huì )在多次競爭總線(xiàn)使用權時(shí)失敗,從而導致低優(yōu)先級站點(diǎn)消息傳輸產(chǎn)生不確定的延時(shí),甚至無(wú)法發(fā)送。本文針對CAN的這個(gè)問(wèn)題,在參考文獻的基礎上,結合消息型和事件型消息,提出了動(dòng)態(tài)優(yōu)先級算法和基于時(shí)間觸發(fā)的TTCAN靜態(tài)調度算法。通過(guò)仿真實(shí)驗,將動(dòng)態(tài)優(yōu)先級算法、靜態(tài)優(yōu)先級調度算法和標準CAN進(jìn)行比較,得到網(wǎng)絡(luò )延時(shí)特性。
1 CAN協(xié)議幀及仲裁機制
為了提高CAN總線(xiàn)傳輸數據的可靠性和傳輸距離,CAN采用差分方式輸出。雙絞線(xiàn)的一根為CANH,另外一根為CANL。CAN總線(xiàn)具有兩種邏輯電平:顯性電平和隱性電平。在傳輸一個(gè)顯性位時(shí),總線(xiàn)呈現顯性狀態(tài);在傳輸一個(gè)隱性位時(shí),總線(xiàn)呈現隱性狀態(tài)。隱性狀態(tài)時(shí),CANH和CANL兩條線(xiàn)之間的差分電壓Vdiff近似為0;顯性狀態(tài)時(shí),CANH和CANL兩條線(xiàn)之間的差分電壓Vdiff的幅值一般為2~3 V,明顯高于隱性狀態(tài)時(shí)的差分電壓值。CAN總線(xiàn)上的位電平如圖1所示。
在CAN總線(xiàn)上,顯性位可以改寫(xiě)隱性位。當總線(xiàn)上2個(gè)不同節點(diǎn)在同一位時(shí)間分別強加顯性和隱性時(shí),總線(xiàn)上呈現顯性位,即顯性位可以覆蓋修改隱性位。顯性位一般表示邏輯0,隱性位一般表示邏輯。
CAN采用載波監聽(tīng)多路訪(fǎng)問(wèn)、逐位仲裁的非破壞性總線(xiàn)仲裁技術(shù)。按CAN總線(xiàn)上節點(diǎn)對實(shí)時(shí)性要求的緊急程度,可預先將節點(diǎn)分成不同的優(yōu)先級。優(yōu)先級編號越大,其站點(diǎn)的優(yōu)先級越低。優(yōu)先級編號作為標識符的組成部分被置于報文仲裁場(chǎng)。在總線(xiàn)仲裁期間,優(yōu)先級較低的節點(diǎn)會(huì )主動(dòng)退出發(fā)送,而優(yōu)先級可不受影響繼續傳輸數據,簡(jiǎn)化了總線(xiàn)的沖突仲裁過(guò)程,在一定程度上提高了通信的確定性和實(shí)時(shí)性。其仲裁規則為:
(1)預發(fā)幀的字節,當總線(xiàn)在空閑時(shí)同時(shí)發(fā)送幀且同步于SOF的上升沿;
(2)各幀的標識符字段在總線(xiàn)同時(shí)相遇,借助總線(xiàn)使標識字段逐位“線(xiàn)與”,根據其結果進(jìn)行沖突仲裁;
(3)如果發(fā)送節點(diǎn)沒(méi)有檢測到?jīng)_突,則繼續發(fā)送下一位;
(4)如果發(fā)送節點(diǎn)檢測到?jīng)_突,則立即中斷,不再繼續后面位的發(fā)送;
(5)各標識字段逐位“線(xiàn)與”結束后,未監測到?jīng)_突的字節便獲得優(yōu)先發(fā)送權,可以發(fā)送數據幀后邊的字段;如檢測到?jīng)_突的節點(diǎn),則不能發(fā)送后邊的數據字段,而等待下一次發(fā)送。
CAN數據幀由7個(gè)不同的位場(chǎng)組成,即幀起始、仲裁場(chǎng)、控制場(chǎng)、數據場(chǎng)、CRC場(chǎng)、應答場(chǎng)和幀尾。數據幀中數據場(chǎng)的長(cháng)度可以為0。數據幀的位場(chǎng)排列如圖2所示。數據幀的結構有兩種格式,即標準格式和擴展格式。這兩種幀格式的主要區別在于標識符的長(cháng)度,標準格式數據幀具有11位標識符,擴展格式數據幀具有29位標識符。本文以擴展格式為例進(jìn)行論述。幀的開(kāi)始有起始標志位表示,它僅由一個(gè)顯位組成;接下來(lái)是仲裁場(chǎng),當發(fā)生沖突時(shí),兩個(gè)不同優(yōu)先級站點(diǎn)同時(shí)競爭總線(xiàn)的使用權,并且由高位開(kāi)始,逐位比較下去,當出現優(yōu)先級不同位時(shí),標識符位為0的勝出,獲得總線(xiàn)使用權,所以標識符數值越小,優(yōu)先級越高。
評論